Commit Graph

10 Commits

Author SHA1 Message Date
Hamish Willee
1ac1bf3895 fix(docs): add ssr.noExternal and upgrade vp-dynamic-nav to 0.0.3 (#27503)
VitePress externalizes node_modules during SSR, causing Node.js to
try loading .vue source files directly and throw
ERR_UNKNOWN_FILE_EXTENSION. Setting ssr.noExternal ensures Vite
processes vp-dynamic-nav through its transform pipeline instead.

vp-dynamic-nav 0.0.3 exports a vpDynamicNavPlugin() helper from the
./plugin subpath for consumers who prefer the programmatic approach.

Signed-off-by: Hamish Willee <hamishwillee@gmail.com>
2026-05-29 11:07:28 +10:00
Hamish Willee
3b8019f37a fix(docs): Use vitepress plugin from NPM for dynamic nav bar (#27498)
* fix(docs): bypass VitePress router interception in DynamicNav links

VitePress installs a global click interceptor that catches same-origin
<a> clicks and routes them through Vue Router. Cross-version links
(e.g. /v1.17/en/ from /main/en/) share the origin but are separate
deployments, so Vue Router fails to resolve them and navigation is
silently swallowed. Fix by calling window.location.href directly with
@click.prevent on all nav links.

Signed-off-by: Hamish Willee <hamishwillee@gmail.com>

* refactor(docs): use VitePress internal nav components in DynamicNav

Replace the hand-rolled dropdown/link rendering with VitePress's own
VPNavBarMenuLink, VPNavBarMenuGroup, VPNavScreenMenuLink, and
VPNavScreenMenuGroup. This removes ~140 lines of custom CSS and all
manual click/flyout handling; VitePress styles and VPFlyout behaviour
are inherited for free.

The navigation bug (same-origin links swallowed by Vue Router) is also
fixed by this approach: VPLink classifies any https:// href as external
and renders a plain <a> tag, bypassing the router interceptor entirely.

Remote URL and localStorage key are now read from themeConfig
(dynamicNavUrl, dynamicNavCacheKey) so the component can be dropped
into any VitePress repo with just a config change.

Signed-off-by: Hamish Willee <hamishwillee@gmail.com>

* refactor(docs): derive DynamicNav cache key from URL by default

Use the remote URL as the localStorage key when dynamicNavCacheKey is
not set. This avoids the need to declare a key in config, keeps the
key unique per data source automatically, and means all deployed
versions of a site (same origin, different base paths) naturally share
one cache entry — which is the desired behaviour.

Signed-off-by: Hamish Willee <hamishwillee@gmail.com>

* chore(docs): remove redundant nav:[] from themeConfig

VitePress renders no menu items when nav is omitted, so the explicit
empty array adds no value now that all items come from DynamicNav.

Signed-off-by: Hamish Willee <hamishwillee@gmail.com>

* fix(docs): restore display:flex on DynamicNav bar wrapper

Removing the scoped styles during the VitePress-internal-components
refactor also removed the flex layout on the wrapper div, causing nav
items to stack vertically instead of in a row.

Signed-off-by: Hamish Willee <hamishwillee@gmail.com>

* refactor(docs): replace local DynamicNav with vp-dynamic-nav npm package

Removes the in-tree DynamicNav.vue and wires up the published
vp-dynamic-nav package instead. navbar.json is imported in config.mjs
and passed as dynamicNavInitial so it remains the single source of
truth for both the initial render and the remote fetch target.

Signed-off-by: Hamish Willee <hamishwillee@gmail.com>

---------

Signed-off-by: Hamish Willee <hamishwillee@gmail.com>
2026-05-29 09:05:11 +10:00
Hamish Willee
0814316774 docs(infrastructure): Update dependencies (#27183)
* docs(infrastructure): Update dependencies

* docs(docs): yarn.lockfile needed by toolchain
2026-04-30 17:50:10 +10:00
Hamish Willee
b3fbf37fae ci(docsorchestrator): Update to latest markdown link checker and link fixes (#27098) 2026-04-16 13:39:28 +10:00
Ramon Roche
3ed2f23d9c fix(build): resolve Dependabot security alerts (#26729)
Fix 4 Dependabot alerts:
- CVE-2021-34141: remove duplicate vulnerable numpy==1.21.5 pin
- markdown-it ReDoS (>= 13.0.0, < 14.1.1): add yarn resolution to 14.1.1
- preact JSON VNode injection: resolved by yarn upgrade to 10.29.0
- esbuild dev server request leak (<= 0.24.2): add yarn resolution to 0.25.0

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-03-12 12:40:35 -07:00
Hamish Willee
ddb83e8d4d docs: Ease building metadata for docs locally (#26635) 2026-03-05 10:15:06 +11:00
Ramon Roche
85aa863c56 ci: add docs workflow with PR metadata generation
Add conditional metadata generation for PRs that modify both docs and
source files. This fixes broken link checker reports when a PR adds a
new module and documents it simultaneously - previously the link checker
would fail because metadata files are only generated on push to main.

Changes:
- Add docs-orchestrator.yml workflow with:
  - detect-changes job to check if PR touches source paths
  - pr-metadata-regen job that generates metadata and uploads as artifact
  - link-check job that downloads metadata artifact when available
  - build-site job for VitePress site generation
  - deploy-aws and crowdin-upload jobs for push events
  - Prettier formatting step before auto-commit on push

- Add Prettier for markdown formatting:
  - Add prettier ^3.2.0 as devDependency in docs/package.json
  - Add docs/.prettierrc with prose-preserving config

- Remove normalize_whitespace from metadata_sync.sh (Prettier handles
  whitespace normalization now)

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-02-10 22:09:19 -08:00
Hamish Willee
5d5e23bcfa [Docs] Fix links and tidy config (#25184)
* Fix links and tidy config

* Add updated lock files
2025-07-10 16:11:58 +10:00
Hamish Willee
27ff547e07 Updates linkchecker and fixes up the doc contribution sections (#24660)
* Update yarn linkchecker

* Fix edit page links. Fix contribution pages
2025-04-03 12:41:56 +11:00
Hamish Willee
88d623bedb Move PX4 Guide source into /docs (#24490)
* Add vitepress tree

* Update existing workflows so they dont trigger on changes in the docs path

* Add nojekyll, package.json, LICENCE etc

* Add crowdin docs upload/download scripts

* Add docs flaw checker workflows

* Used docs prefix for docs workflows

* Crowdin obvious fixes

* ci: docs move to self hosted runner

runs on a beefy server for faster builds

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* ci: don't run build action for docs or ci changes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* ci: update runners

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* Add docs/en

* Add docs assets and scripts

* Fix up editlinks to point to PX4 sources

* Download just the translations that are supported

* Add translation sources for zh, uk, ko

* Update latest tranlsation and uorb graphs

* update vitepress to latest

---------

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
Co-authored-by: Ramon Roche <mrpollo@gmail.com>
2025-03-13 16:08:27 +11:00