Uh oh!
There was an error while loading. Please reload this page.
docs(apps/docs): fix stale docblock in page.tsx breadcrumb walk - #14537
Merged
Conversation
The census paragraph on origin/main still claimed "8 short trails remain" and that content/docs/releases/meta.json "still lists index" — both went false when PR #13946 removed "index" from that meta.json (0 hits repo-wide now under content/docs/**/meta.json). Rewrite it to the mechanism only (how a URL-less ancestor arises, that #12352/#13946 fixed every known instance, and that the condition is structural and can recur) rather than a count that rotted within a day. Also fixes an independent misattribution in the same paragraph: getBreadcrumbItems() does not drop the URL-less ancestor itself — it emits it with url: undefined. The drop is local, in docsTrail()'s own loop guard (`if (... || !item.url) continue;`). No behavior change: docsTrail(), the breadcrumb loop, and the "missing URL is deliberately not reconstructed" rule paragraph are untouched.
This was referenced Sep 2, 2026
baozhoutao
marked this pull request as ready for review
September 2, 2026 11:00
baozhoutao
enabled auto-merge
September 2, 2026 11:00
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#13949
What
apps/docs/app/[lang]/docs/[[...slug]]/page.tsx'sdocsTrail()docblock carried twoerrors, both fixed in this one edit, one file, prose only:
meta.jsonstill lists
"index". The condition is therefore live, just rare." That went falsewhen PR docs(nav): stop listing "index" in content/docs/releases/meta.json #13946 removed
"index"fromcontent/docs/releases/meta.json— today,zero
meta.jsonundercontent/docslists"index"inpages(
git grep -c '"index"' HEAD -- 'content/docs/**/meta.json'→ no hits). Per thetriage's measured lesson (a count that rotted within a day), the paragraph is
rewritten to the mechanism only: how a URL-less ancestor arises, that docs site: 172 of 403 doc pages get a breadcrumb that skips its section —
meta.jsonlisting"index"detaches the folder index #12352and docs(nav): stop listing "index" in content/docs/releases/meta.json #13946 fixed every known instance, and that the condition is structural and
can recur — no new count written in its place.
origin/maintoday:the docblock said the walk "drops" the un-linkable ancestor.
getBreadcrumbItems()does not drop it — it emits the ancestor with
url: undefined. The drop is local:docsTrail()'s own loop guard,if (typeof item.name !== 'string' || !item.url) continue;, is what skips it.No behavior change:
docsTrail()'s logic, the breadcrumb loop, and the "the missingURL is deliberately not reconstructed here" rule paragraph (unaffected per the triage)
are untouched.
git diff --staton this branch touches exactly one file.Why this needed its own PR
Per the issue:
content/docs/releases/**is fenced unconditionally in PR #13946'sdispatch, whose legality rested on "one file, nothing else" —
apps/docs/**wouldhave been a second file. The fence that made #13946 possible is what prevented it
from carrying this correction; this PR is the follow-on the triage said was needed.
Tests
pnpm --filter @objectstack/docs typecheck(fumadocs-mdx && next typegen && tsc --noEmit) — PASS, both before opening (on the pre-merge tree) and again aftermerging
origin/maininto this branch.node scripts/check-docs-nav-label.mjs— PASS (9-clause battery, the gate thisdocblock's neighboring
includePageflip is pinned by).node scripts/check-docs-nav-label.mjs --self-test— PASS (25 assertions).pnpm exec eslint --no-inline-config --format jsonnarrowed to the one edited file— PASS, 0 errors/warnings (repo ESLint has no type-aware linting anywhere, so this
narrowing moves no untouched file's judgment).
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commandsderived for this diff — all PASS (check:docs-locale-catch-all,check:logger-receiver-detach,check:page-declaration-shape,check:published-files,check:test-source-alias,check:type-source-resolution, plus the twocheck-docs-nav-label.mjsinvocations above andcheck-undeclared-dep-imports.mjs).All of the above were re-derived and re-run against the merged tree
(
origin/mainfetched and merged, no conflicts) at head75749de5c.Changeset
apps/docsis"private": true— this PR publishes nothing from any package. Thechangeset gate's own counting logic (
git diff --name-only --diff-filter=A $(git merge-base origin/main HEAD) HEAD -- '.changeset/*.md') was simulated locallyand returns 0 added changesets, so this PR needs the
skip-changesetlabel — appliedvia the additive labels endpoint right after opening, with a read-back to confirm.
Generated by Claude Code