I found a mismatch between Nimbus's duplicate-route preflight and Astro's actual static route handling
In packages/nimbus-docs/src/lint/site-model.ts, fileToRoute lowercases every static page segment before grouping routes. The comment says this matches Astro's joinSegments behavior, but Astro preserves segment casing
Reproduction
- Add src/pages/Guide.astro
- Run the site build and the Nimbus duplicate-route check
Astro 7.0.9 emits /Guide/index.html, while enumerateStaticPageRoutes reports /guide. With src/content/docs/guide.mdx present, Nimbus reports a collision even though Astro serves /Guide and /guide separately
A minimal check produced:
Astro build: /Guide/index.html
Nimbus route enumeration: /guide
Could the static route enumeration use Astro's case-preserving behavior, or document and test an intentional case-insensitive policy? A regression test around Guide.astro would help prevent this from drifting again
Relevant code:
I found a mismatch between Nimbus's duplicate-route preflight and Astro's actual static route handling
In packages/nimbus-docs/src/lint/site-model.ts, fileToRoute lowercases every static page segment before grouping routes. The comment says this matches Astro's joinSegments behavior, but Astro preserves segment casing
Reproduction
Astro 7.0.9 emits /Guide/index.html, while enumerateStaticPageRoutes reports /guide. With src/content/docs/guide.mdx present, Nimbus reports a collision even though Astro serves /Guide and /guide separately
A minimal check produced:
Astro build: /Guide/index.html
Nimbus route enumeration: /guide
Could the static route enumeration use Astro's case-preserving behavior, or document and test an intentional case-insensitive policy? A regression test around Guide.astro would help prevent this from drifting again
Relevant code: