From 79a9b41518f2c6cfca1568b97ac9a59b8379b9a7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Aug 2026 21:33:26 +0000 Subject: [PATCH 1/4] chore(deps): update node.js to v24.19.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 71fc980e..651a0785 100644 --- a/package.json +++ b/package.json @@ -172,7 +172,7 @@ "node": ">= 18" }, "volta": { - "node": "24.18.0", + "node": "24.19.0", "pnpm": "10.34.5" }, "publishConfig": { From 0dab708c7df06bbc07cf2c6d517da371f1e21693 Mon Sep 17 00:00:00 2001 From: Krystan HuffMenne Date: Wed, 12 Aug 2026 16:55:04 -0700 Subject: [PATCH 2/4] fix(GroupNav): the Home link is the app root, not /Home MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The entry for the co-located pages links at `rootURL + 'Home'`, where no page is served: those pages live in the root URL space, under no group name. The branch meant to handle that tests for a group named 'root', and the build has named that group 'Home' since 158bf9d, so it never fires. Two consequences. The link is wrong — a redirect round-trip through `handlePotentialIndexVisit` where an app wires it on the top-level wildcard (docs-app), a hard 404 where it does not (test-apps/multiple-docs-routes). And `@homeName` does nothing, because it is read only inside that dead branch. The test app now passes `@homeName` and asserts the label, the root href, the active state, and that nothing points at /Home. Verified against main in kolay's own docs-app too. Found while working on #366, which touches this component; split out so it can land on its own. Co-Authored-By: Claude Opus 5 (1M context) --- src/browser/components/group-nav.gts | 14 +++++++------ src/browser/utils.ts | 8 +++++++ .../app/templates/application.gts | 2 +- .../tests/multiple-docs-routes-test.gts | 21 +++++++++++++++---- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/browser/components/group-nav.gts b/src/browser/components/group-nav.gts index ea521fe9..fe3a2c75 100644 --- a/src/browser/components/group-nav.gts +++ b/src/browser/components/group-nav.gts @@ -2,6 +2,7 @@ import Component from '@glimmer/component'; import { service } from '@ember/service'; import { docsManager } from '../services/docs.ts'; +import { HOME_GROUP } from '../utils.ts'; import type RouterService from '@ember/routing/router-service'; @@ -65,8 +66,11 @@ export class GroupNav extends Component<{ get groups() { return this.#docs.availableGroups.map((groupName) => { - if (groupName === 'root') { - return { text: this.homeName, value: '/', href: this.rootURL }; + // The co-located pages are a group, but they live in the root URL + // space rather than under their name, so the link is the app's root + // and `@homeName` names it. + if (groupName === HOME_GROUP) { + return { text: this.homeName, value: HOME_GROUP, href: this.rootURL }; } return { @@ -79,13 +83,11 @@ export class GroupNav extends Component<{ }); } - isActive = (subPath: string) => { - if (subPath === '/') return false; - + isActive = (groupName: string) => { // The group is derived from the URL by the docs service (rootURL-aware), // rather than comparing the group name against currentURL directly // (which always failed: 'Docs' never prefixes '/Docs/...'). - return this.#docs.selectedGroup === subPath; + return this.#docs.selectedGroup === groupName; }; get activeClass() { diff --git a/src/browser/utils.ts b/src/browser/utils.ts index a8690e94..bac6a733 100644 --- a/src/browser/utils.ts +++ b/src/browser/utils.ts @@ -4,6 +4,14 @@ import { getOwner } from '@ember/owner'; import type { Page, PageTree } from '../types.ts'; import type Owner from '@ember/owner'; +/** + * The co-located pages' group (app/templates, src/templates), as the build + * names it (`displayName` in build/plugins/setup.js's `homeSource`). Its + * pages live in the root URL space rather than under the group's name, so + * its nav link is the app's root. + */ +export const HOME_GROUP = 'Home'; + export function isPageTree(x: Page | PageTree): x is PageTree { return 'pages' in x; } diff --git a/test-apps/multiple-docs-routes/app/templates/application.gts b/test-apps/multiple-docs-routes/app/templates/application.gts index b8894424..c2052ded 100644 --- a/test-apps/multiple-docs-routes/app/templates/application.gts +++ b/test-apps/multiple-docs-routes/app/templates/application.gts @@ -38,7 +38,7 @@ const SideNav: TOC<{ Element: HTMLElement }> =