From df24d928ebd4238b4f2de921e12adc6e33ab150e Mon Sep 17 00:00:00 2001 From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com> Date: Tue, 1 Sep 2026 09:11:07 +0300 Subject: [PATCH 1/3] Fix docs content disappearing on trailing-slash URLs. Normalize /docs and /api paths on client hydration so Nuxt Content lookups match prerendered routes. --- site/app/middleware/api-normalize.ts | 11 ----------- site/app/middleware/route-normalize.global.ts | 19 +++++++++++++++++++ site/app/pages/api/[...slug].vue | 1 - site/app/pages/docs/[...slug].vue | 11 +++++++---- 4 files changed, 26 insertions(+), 16 deletions(-) delete mode 100644 site/app/middleware/api-normalize.ts create mode 100644 site/app/middleware/route-normalize.global.ts diff --git a/site/app/middleware/api-normalize.ts b/site/app/middleware/api-normalize.ts deleted file mode 100644 index 04e2f90..0000000 --- a/site/app/middleware/api-normalize.ts +++ /dev/null @@ -1,11 +0,0 @@ -export default defineNuxtRouteMiddleware((to) => { - if (!to.path.startsWith('/api/')) return - - const normalized = to.path.toLowerCase().replace(/\/$/, '') - if (to.path === normalized) return - - return navigateTo( - { path: normalized, hash: to.hash, query: to.query }, - { replace: true }, - ) -}) diff --git a/site/app/middleware/route-normalize.global.ts b/site/app/middleware/route-normalize.global.ts new file mode 100644 index 0000000..2cb5712 --- /dev/null +++ b/site/app/middleware/route-normalize.global.ts @@ -0,0 +1,19 @@ +/** Strip trailing slashes (GitHub Pages directory URLs) and normalize API casing. */ +export default defineNuxtRouteMiddleware((to) => { + let normalized = to.path + + if (normalized.startsWith('/api/')) { + normalized = normalized.toLowerCase() + } + + if (normalized.length > 1 && normalized.endsWith('/')) { + normalized = normalized.slice(0, -1) + } + + if (normalized === to.path) return + + return navigateTo( + { path: normalized, hash: to.hash, query: to.query }, + { replace: true }, + ) +}) diff --git a/site/app/pages/api/[...slug].vue b/site/app/pages/api/[...slug].vue index 343ad9f..c6c4dcd 100644 --- a/site/app/pages/api/[...slug].vue +++ b/site/app/pages/api/[...slug].vue @@ -1,7 +1,6 @@