feat(docs): link the OpenAPI reference from the docs nav - #4330
Conversation
The /docs/api reference route is hidden from the main app sidenav (meta.display:false), so it was unreachable from within the /docs surface — the docs nav and home only linked the home + guide articles. Add a persistent, config-driven 'API reference' entry: - docs.nav.component: a v-list-item -> /docs/api near the top (after the home link, before the category tree), shown even when the guide tree is empty (the module always ships the reference view). - docs.home.view: a quiet text-button next to the quickstart CTA — the natural next step after the first call. Title/icon come from config.docs.reference (neutral generic defaults in docs.config.js). Tests assert both links resolve to /docs/api.
There was a problem hiding this comment.
Pull request overview
Updates the docs module navigation so the in-theme OpenAPI reference at /docs/api is discoverable from within the /docs surface (nav + home), aligning the docs UX with the existing reference route.
Changes:
- Add a persistent “API reference” entry to the docs module sidebar nav (title/icon driven by
config.docs.reference). - Add a secondary CTA on the docs home quickstart hero linking to
/docs/api. - Extend docs unit tests to cover the new reference link behavior in both nav and home.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| src/modules/docs/views/docs.home.view.vue | Adds an “API reference” CTA next to the quickstart primary CTA; reads title/icon from config with defaults. |
| src/modules/docs/components/docs.nav.component.vue | Adds a persistent sidebar nav item linking to /docs/api with config-driven title/icon. |
| src/modules/docs/tests/docs.nav.component.unit.tests.js | Updates config mock + router and adds assertions for the new reference nav link (including empty-category case). |
| src/modules/docs/tests/docs.home.view.unit.tests.js | Updates router and adds assertions for the new reference CTA in the quickstart hero. |
| <!-- In-theme OpenAPI reference (/docs/api) — the natural next step | ||
| after the first call. Config-driven title/icon; always shown. --> |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #4330 +/- ##
=======================================
Coverage 99.56% 99.56%
=======================================
Files 34 34
Lines 1388 1388
Branches 433 433
=======================================
Hits 1382 1382
Misses 6 6 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (4)
WalkthroughAdds a persistent "API reference" link to the docs sidebar nav and the docs home quickstart hero, both routing to ChangesAPI Reference Link in Docs Nav and Home
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
# [2.2.0](v2.1.0...v2.2.0) (2026-07-01) ### Bug Fixes * **auth:** failed login no longer shows a 'success: Signed out' toast ([#4309](#4309)) ([464e022](464e022)), closes [#4305](#4305) [#4305](#4305) * **billing:** nav compute gauge — admin ∞ display + login refresh ([#4260](#4260), [#4261](#4261)) ([#4268](#4268)) ([2e614db](2e614db)) * **billing:** update VProgressLinear snapshots for Vuetify 4.1.0 ([#4257](#4257)) ([549bb39](549bb39)) * **configGuard:** warn-only by default, throw only on opt-in strict flag ([#4263](#4263)) ([f37050f](f37050f)), closes [#4258](#4258) * **core:** center footer version badge + show backend API version ([#4275](#4275)) ([a17795b](a17795b)) * **docs:** left-align /docs home search hero + uncap block trigger width ([#4323](#4323)) ([b701c3d](b701c3d)) * **e2e:** resolve flaky Playwright webServer boot-race ([#4378](#4378)) ([0fc1886](0fc1886)), closes [#4372](#4372) * **invitations:** inert referrals state when public signup is open ([#4306](#4306)) ([b1cb7d5](b1cb7d5)), closes [pierreb-devkit/Node#3833](pierreb-devkit/Node#3833) * **invitations:** pre-P9 UI hardening — revoked status, admin error banner, canonical verifyInvite ([#4293](#4293)) ([d977558](d977558)), closes [#4291](#4291) * **legal:** patch happy-dom Node.prototype.nodeName for DOMPurify 3.4.8 ([#4240](#4240)) ([#4256](#4256)) ([f0b0e41](f0b0e41)) * **skills/update-stack:** switch drift gate scan to git diff (catches missing-locally case) ([#4244](#4244)) ([32bd2d3](32bd2d3)), closes [#4233](#4233) * **theme:** re-apply OS theme post-hydration when dark='auto' (prerender light-lock) ([#4262](#4262)) ([9aa74cf](9aa74cf)), closes [#4230](#4230) * **ui:** invitations/org surfaces polish — app-level nudge, toolbar slot, card rhythm ([#4301](#4301)) ([d203d84](d203d84)), closes [#toolbar](https://github.com/pierreb-devkit/Vue/issues/toolbar) [#toolbar](https://github.com/pierreb-devkit/Vue/issues/toolbar) * Vue low-severity security hardening bundle (tabnabbing, href scheme, console creds, headers, npm ci, stale key) ([#4316](#4316)) ([9b21450](9b21450)) ### Features * **admin:** activation-aware tabs, readiness badge, activity search, invite copy-link ([#4308](#4308)) ([da419ac](da419ac)), closes [#4295](#4295) [#4297](#4297) [pierreb-devkit/Node#3836](pierreb-devkit/Node#3836) [#4296](#4296) [pierreb-devkit/Node#3834](pierreb-devkit/Node#3834) * **app/router:** add registerDownstreamRoutes extension hook for downstream route injection ([#4242](#4242)) ([54358f0](54358f0)) * **auth:** add beta seat getters to auth store ([#4229](#4229)) ([0560aab](0560aab)) * **auth:** reframe post-signup org-setup step as friendly workspace setup ([#4373](#4373)) ([27ec893](27ec893)) * **billing:** grouped feature sections + plan inheritance on pricing cards ([#4382](#4382)) ([ded622b](ded622b)) * **billing:** surface capacity equivalences on the nav compute gauge ([#4350](#4350)) ([dfeef01](dfeef01)), closes [#4349](#4349) * **configGuard:** block dev-host/port leak into production config ([#4235](#4235)) ([10c3f17](10c3f17)), closes [#949](#949) [pierreb-projects/infra#38](https://github.com/pierreb-projects/infra/issues/38) [#949](#949) [trawl_vue#949](https://github.com/trawl_vue/issues/949) * **core+home+tasks:** promote 4 generic improvements from trawl downstream ([#4239](#4239)) ([a00caa5](a00caa5)) * **docs:** cross-guide #anchor link rewrite in the article renderer ([#4343](#4343)) ([a89331c](a89331c)), closes [#anchor](https://github.com/pierreb-devkit/Vue/issues/anchor) [#4334](#4334) * **docs:** in-app docs module (/docs) + docs-aware SEO (flag-gated, default off) ([#4319](#4319)) ([32e3948](32e3948)), closes [#1](#1) [#2](#2) [#3](#3) [#4](#4) [#5](#5) [#6](#6) [#7](#7) [#8](#8) [#9](#9) [#11](#11) [#4310](#4310) * **docs:** link the OpenAPI reference from the docs nav ([#4330](#4330)) ([1b5c8dd](1b5c8dd)) * **footer:** display app version from DEVKIT_VUE_app_version build-arg ([#4259](#4259)) ([#4267](#4267)) ([14fe314](14fe314)) * **home+auth:** promote external-link safety + org-setup error UX from trawl ([#4237](#4237)) ([8e0be0f](8e0be0f)), closes [pierreb-projects/infra#38](https://github.com/pierreb-projects/infra/issues/38) * **invitations:** referrals summary + rewards placeholder on account view (P8b) ([#4292](#4292)) ([1c0db9d](1c0db9d)), closes [#5](#5) [#4282](#4282) * **invitations:** standalone Vue module + account Referrals tab + router gap-fixes (P6) ([#4289](#4289)) ([4366fa2](4366fa2)) * **organizations:** add-member UI + pending-invitations list + accept (P5b) ([#4288](#4288)) ([96b5b14](96b5b14)), closes [#4281](#4281) * **organizations:** owner_add lifecycle surfaces + signup error detail ([#4307](#4307)) ([e70dbf7](e70dbf7)), closes [pierreb-devkit/Node#3831](pierreb-devkit/Node#3831) [pierreb-devkit/Node#3832](pierreb-devkit/Node#3832) * **seo:** config-driven llms.txt generator in seo-static plugin ([#4274](#4274)) ([e9cedad](e9cedad)), closes [#4269](#4269) * **seo:** per-route self-referential canonical + og:url ([#4338](#4338)) ([94234ff](94234ff)) * **skills/update-stack:** drop ledger condition + auto-derive scan list ([#4232](#4232)) ([7be1220](7be1220)), closes [#4231](#4231) [infra#37](https://github.com/infra/issues/37)
The docs module's own nav + home linked only the home + guides, never
/docs/api(the in-theme OpenAPI reference, hidden from the main sidenav). Now the reference is reachable from WITHIN/docs: a persistent 'API reference' nav entry (→/docs/api, config-driven title/icon) + a quiet home CTA next to the quickstart. Internal router-links, generic. 128 docs tests + 2376 full + build green.Summary by CodeRabbit