Commit Graph

96 Commits

Author SHA1 Message Date
MacRimi 5e795a654d doc-navigation: skip sidebar anchor-only entries from Prev/Next walk
`#host` and `#lxc-net` are visual sidebar section headers for the
Storage Share Manager page — they group their submenu items in the
sidebar tree but point back at the parent Overview with an anchor,
so they aren't standalone docs the reader advances to. Including
them in the flat Previous/Next sequence produced two regressions:

* On `/docs/storage-share/#host` the Next button targeted `#host`
  again, so clicking it didn't move. The earlier hash-tracking fix
  intended to catch this, but a `useEffect` with an empty dep array
  only runs on mount — and Next.js Link navigations don't fire
  `hashchange` when the path changes too, so a cross-page navigation
  that lands on `#host` (sidebar click) rendered with hash="" and
  re-collapsed to the section header.
* On `/docs/storage-share/lxc-mount-points/` the Next button pointed
  at `#lxc-net` instead of advancing to `lxc-nfs-client`, since the
  section header sat between the two real pages in the flat list.

Filter out any sidebar entry whose href contains `#` at walk time so
the flat list only carries real pages. With them gone, an anchored
URL collapses to its parent Overview and Next walks straight into
the first subpage. The hash effect + state are no longer needed so
the component drops them, keeping only the pathname-based match.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-02 19:49:36 +02:00
MacRimi 2f24de2592 Bump Next.js to 15.1.9 + doc nav handles in-page anchors + help_info_menu
Three changes that fold into the v1.2.2 release PR:

1. AppImage: bump Next.js 15.1.6 -> 15.1.9 (CVE-2025-55182)
   GHSA-9qr9-h5gf-34mp / React2Shell is a pre-auth RCE in React Server
   Components when Server Functions deserialize attacker payloads. The
   ProxMenux Monitor ships Next.js in `output: "export"` mode behind
   Flask on :8008, so there is no runtime Next.js server and no
   "use server" directive in the source tree — the exploitable path is
   not reachable. Bumping to 15.1.9 anyway because OpenVAS and similar
   scanners flag the version string from the JS bundle regardless of
   architecture; raising the floor removes false-positive noise across
   every install. Reported by @rost43 in #219.

2. web/components/ui/doc-navigation.tsx: handle sidebar entries that
   point to in-page anchors. The Storage Share Manager sidebar has
   entries for `/docs/storage-share#host` and
   `/docs/storage-share#lxc-net` as section headers, but
   usePathname() does not include the hash so every visit collapsed
   to the parent page. As a result Next/Previous on /docs/storage-share
   stayed stuck at #host, and Next from .../lxc-mount-points/ pointed
   back at #host instead of #lxc-net. Read window.location.hash on
   mount (and on hashchange) and try the pathname+hash match before
   falling back to the pathname-only lookup. SSR hydrates with an
   empty hash and refreshes once mounted — brief render before
   hydration is the same as the previous behaviour, so no regression.

3. scripts/help_info_menu.sh: user-side improvement (mirrored from
   develop).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-01 22:31:12 +02:00
MacRimi e9e10e4ffa Fix doc nav + sidebar active-page detection after trailingSlash:true
PR #212 added `trailingSlash: true` to next.config.mjs so GitHub Pages
would serve the locale roots correctly. That changed what usePathname()
returns at runtime — `/docs/.../page/` with a trailing slash — but
the sidebar config (sidebarItems in DocSidebar.tsx) still declares
hrefs without the trailing slash. Every equality check
`pathname === item.href` therefore returned false on every page, and
two things broke:

1. components/ui/doc-navigation.tsx — the Previous/Next bar at the
   bottom of every doc page. With `findIndex` returning -1,
   `prevPage` was null and `nextPage = allPages[0]` (Introduction).
   So every doc page showed "Next: Introduction" regardless of
   where the user was.

2. components/DocSidebar.tsx — four comparisons that drove (a) the
   highlighted active item in the sidebar, (b) the active-section
   auto-open when navigating directly to a nested page, (c) the
   leaf-item highlight when the item has no submenu. All silently
   broken on every page.

Fix: a `stripTrailingSlash` helper plus a derived `currentPath` that
is compared instead of the raw `pathname`. `collectHrefs(...)` results
are also normalized at the point of comparison so the
`.includes(currentPath)` checks behave correctly.

Verified locally with `npm run build` — 232 pages indexed, no errors.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 14:44:52 +02:00
MacRimi 5ca3463bf6 complete i18n migration to /[locale]/ with EN+ES content
Full rewrite of the docs site under app/[locale]/ with next-intl
in localePrefix:"always" mode. Every page now exists at both
/en/<path> and /es/<path>; the root / shows a meta-refresh + JS
redirect to /<defaultLocale>/ so GitHub Pages serves something
on the apex URL.

Highlights:
- 107 doc pages migrated to file-per-page JSON namespaces under
  messages/en/ and messages/es/. Spanish content is fully
  translated (no copy-of-English placeholders).
- New documentation for the Active Suppressions section in the
  Settings tab and the per-event Dismiss dropdown in the Health
  Monitor modal.
- New screenshots: dismiss-duration-dropdown.png and an updated
  health-suppression-settings.png.
- Pagefind integrated for client-side search; index is built on
  every CI deploy (not committed).
- RSS feeds: per-locale at /<locale>/rss.xml plus root /rss.xml
  for backward compat.
- Removed the dead app/[locale]/guides/[slug]/ route — every
  guide now has its own static page and no markdown source
  remains.
- Fixed orphan link /guides/nvidia -> /guides/nvidia-manual in
  docs/hardware/nvidia-host.
- Removed obsolete components (footer2, calendar, drawer).

Verified locally with `npm ci && npm run build`: 2804 files in
out/, 231 pages indexed by pagefind, root redirect intact, both
locale roots and the new Active Suppressions docs render OK.
2026-05-31 12:41:10 +02:00
MacRimi 54af9073cb Update web 2025-12-14 01:57:36 +01:00
MacRimi 9e3334d75f Update web 2025-12-13 21:19:08 +01:00
MacRimi cca6e71911 Update web 2025-12-13 20:20:21 +01:00
MacRimi 571b5270a2 Update menus dialog 2025-05-28 23:26:58 +02:00
MacRimi 9240be6d53 update RSS 2025-05-27 18:10:04 +02:00
MacRimi 555af7d113 Update RSS 2025-05-27 17:55:27 +02:00
MacRimi 980597348b Update rss-link.tsx 2025-05-27 17:33:28 +02:00
MacRimi a8c287d021 create RSS page 2025-05-27 17:16:44 +02:00
MacRimi 179ef2eb16 Update documentation for VM creation 2025-05-18 18:12:23 +02:00
MacRimi 2f2e6ba311 update menu help and info 2025-05-04 21:37:33 +02:00
MacRimi ad6a3ed471 update footer 2025-04-19 21:32:52 +02:00
MacRimi 695ba59912 add doc navigation page 2025-04-17 17:45:23 +02:00
MacRimi 6c45535875 update footer 2025-04-16 21:49:03 +02:00
MacRimi 94acab3030 update menu storage and new script 2025-04-15 20:04:45 +02:00
MacRimi 5022905047 add new images disk 2025-04-15 19:52:30 +02:00
MacRimi e92c82e9ac Update DocSidebar.tsx 2025-03-23 19:12:02 +01:00
MacRimi 1caf1fe458 Update version 1.1.1 2025-03-23 19:07:02 +01:00
MacRimi c448859eef Update contributors page 2025-03-18 23:38:59 +01:00
MacRimi 4d7ab2443f Update 2025-03-07 19:03:08 +01:00
MacRimi 06221c1c44 Update Hero page 2025-03-07 18:55:51 +01:00
MacRimi fa9d588e22 Update main page 2025-03-07 18:44:01 +01:00
MacRimi ae5d2d589b Update hero page 2025-03-07 18:35:07 +01:00
MacRimi da4808336a Update 2025-03-07 18:25:05 +01:00
MacRimi 3370002058 Update main page 2025-03-07 18:12:27 +01:00
MacRimi 12bd78d2d6 Upate code-of-conduct page 2025-03-07 17:07:21 +01:00
MacRimi 8e42d86ce6 Update 2025-03-06 23:12:45 +01:00
MacRimi 8d472eb20a Update 2025-03-06 23:05:11 +01:00
MacRimi 2474c08864 update 2025-03-06 19:44:17 +01:00
MacRimi c293c42906 Update resources.tsx 2025-03-05 12:58:22 +01:00
MacRimi d32325981b Update resources.tsx 2025-03-05 12:31:38 +01:00
MacRimi cd3a678032 Update resources.tsx 2025-03-05 12:26:07 +01:00
MacRimi edcd0c0ddb Update resources.tsx 2025-03-05 12:22:13 +01:00
MacRimi df4fba6e72 Update resources.tsx 2025-03-05 12:09:16 +01:00
MacRimi f6fc840b43 Update 2025-03-04 21:57:41 +01:00
MacRimi 0fc9debbb7 Update 2025-03-02 12:32:36 +01:00
MacRimi eb98f7cedb Update docs Post-Install 2025-02-25 20:40:47 +01:00
MacRimi 4dd72ae488 Update hero.tsx 2025-02-18 23:45:38 +01:00
MacRimi 4f5f68d54c Update hero.tsx 2025-02-18 23:31:01 +01:00
MacRimi 737851c409 Update hero.tsx 2025-02-18 23:29:19 +01:00
MacRimi cbb6fca3c7 update 2025-02-18 13:04:41 +01:00
MacRimi 81bb5574e0 update 2025-02-18 12:16:57 +01:00
MacRimi c181a657bd update 2025-02-18 12:05:07 +01:00
MacRimi 04ccf4b999 update 2025-02-18 11:59:05 +01:00
MacRimi b7534ac94c update 2025-02-18 11:50:54 +01:00
MacRimi ead9c6a119 update 2025-02-18 11:16:10 +01:00
MacRimi f72fa7e5d1 update 2025-02-18 11:08:04 +01:00