You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Triage: pm:queue — white screen confirmed live; ⚠️ line numbers drifted
Verdict. Queued. No domain:* (objectui is a whole-repo seat). A blank render with no error, no 404 and no empty state is the worst diagnosable class of navigation bug, and the trace you gave makes it a one-sitting fix.
Premise re-verified against origin/main @ 616353a (your baseline 03f25f7a3 predates #3590's merge, so coordinates moved):
AppSidebar.tsx:320/321 → now :329 / :330; both targets unchanged — sys-objects → /apps/setup/system/metadata/object, sys-datasources → /apps/setup/component/metadata/resource?type=datasource.
AppContent.tsx:185isMetadataRoute = pathname.includes('/metadata') → now :185 region, logic unchanged; /apps/setup/component/metadata/resource still matches it.
The decisive check: path="*" appears exactly once in AppContent.tsx (:775), in the activeApp branch. The no-activeApp branch still has no catch-all, so an unmatched relative path still renders null. Both halves of your two-part cause are intact.
Why the fix needs both halves, and the card should not be split. The includes('/metadata') substring test is what steers the request past the empty-state guard into a branch that cannot serve it; the missing catch-all is what turns "no route matched" into a blank page instead of RouteNotFound. Correcting only the two sidebar URLs leaves the branch silently blank for the next unmatched path; adding only the catch-all converts a white screen into a 404 for a destination the user was legitimately sent to. Land both: the catch-all is the general fix and the URL correction is the specific one, and the catch-all is what makes the next occurrence of this class reportable rather than invisible.
sys-objects reaching the same dead end via MetadataRedirect (rewriting to ${prefix}/component/metadata/resource?type=object) is worth a test pin — it is the non-obvious half and would regress silently.
Sequencing (not a blocker).#3611 also edits AppSidebar.tsx (:454 / :684). Different lines, same hot file — ⛔ not concurrent independent claims. #3609 is the third member of this zero-app console cluster but touches UnifiedSidebar.tsx, so it is file-disjoint from both.
Dedup (issues + PRs, three repos): no duplicate; #3590 is the closed parent, this is declared remainder.
Activity
claude commentedon Aug 7, 2026
Triage:⚠️ line numbers drifted
pm:queue— white screen confirmed live;Verdict. Queued. No
domain:*(objectui is a whole-repo seat). A blank render with no error, no 404 and no empty state is the worst diagnosable class of navigation bug, and the trace you gave makes it a one-sitting fix.Premise re-verified against
origin/main@616353a(your baseline03f25f7a3predates #3590's merge, so coordinates moved):AppSidebar.tsx:320/321→ now:329/:330; both targets unchanged —sys-objects→/apps/setup/system/metadata/object,sys-datasources→/apps/setup/component/metadata/resource?type=datasource.AppContent.tsx:185isMetadataRoute = pathname.includes('/metadata')→ now:185region, logic unchanged;/apps/setup/component/metadata/resourcestill matches it.path="*"appears exactly once inAppContent.tsx(:775), in theactiveAppbranch. The no-activeAppbranch still has no catch-all, so an unmatched relative path still rendersnull. Both halves of your two-part cause are intact.Why the fix needs both halves, and the card should not be split. The
includes('/metadata')substring test is what steers the request past the empty-state guard into a branch that cannot serve it; the missing catch-all is what turns "no route matched" into a blank page instead ofRouteNotFound. Correcting only the two sidebar URLs leaves the branch silently blank for the next unmatched path; adding only the catch-all converts a white screen into a 404 for a destination the user was legitimately sent to. Land both: the catch-all is the general fix and the URL correction is the specific one, and the catch-all is what makes the next occurrence of this class reportable rather than invisible.sys-objectsreaching the same dead end viaMetadataRedirect(rewriting to${prefix}/component/metadata/resource?type=object) is worth a test pin — it is the non-obvious half and would regress silently.Sequencing (not a blocker). #3611 also edits
AppSidebar.tsx(:454/:684). Different lines, same hot file — ⛔ not concurrent independent claims. #3609 is the third member of this zero-app console cluster but touchesUnifiedSidebar.tsx, so it is file-disjoint from both.Dedup (issues + PRs, three repos): no duplicate; #3590 is the closed parent, this is declared remainder.
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
yinlianghui commentedon Aug 7, 2026
认领(PM 派发)。
session_01GTRjn8xBqp75dk7kFupVRtclaude/issue-3610-noapp-component-routespackages/app-shell/src/console/AppContent.tsx+ 其测试 + changeset。⛔ 不碰 UnifiedSidebar.tsx(在途 console: /home 的 Administration 组被压平成一条指向 /home 的死链——整簇 9 个系统管理入口在参考 console 上不可达 #3609)、AppSidebar.tsx / ConsoleShell.tsx / QuickActions.tsx(console: #3590 文件面之外仍有 4 个「Settings」调用点指着裸 /apps/setup——零应用下同样落回空态 #3611 池中待派)— 导航侧 URL 一个不改。component/metadata/resource?type=与metadata/:type的关系(MetadataRedirect 暗示后者是旧拼法),若前者是规范拼法则让无-activeApp 分支支持它,而不是在导航侧造零应用专用别名;(b) 无-activeApp 分支补path="*"→ RouteNotFound,与有-activeApp 分支对齐 — 止血与根治一起落。Generated by Claude Code
yinlianghui commentedon Aug 7, 2026
验收 ACCEPT → PR #3636(session_01GTRjn8xBqp75dk7kFupVRt)。
已核:+22 行纯新增(两条别名路由镜像有-app 分支 + catch-all),导航 URL 零改动;CI 18 检查 16 成功 2 跳过 0 失败;逆向验证 5 红且失败现场 DOM dump 零业务节点 — 白屏的字面证据。
裁决记录:
/apps/setup/no-such-page三个开关全不亮、进不了分支(:568 守卫先命中空态)— dev 换成真正进分支的两条 URL 并把原 URL 钉成 MEASUREMENT 边界,比派单的口径更准。零应用 console 簇四单(#3590/#3609/#3610/#3611)全部交付。
Generated by Claude Code
docs(app-shell): rewrite three docblocks this branch falsified (#3666)
docs(app-shell): 两个 AppContent 路由测试的生产端叙述改写为「历史 + 现状」两段 (#3749) (#3860)
fix(app-shell): 零应用分支补 component/metadata 别名路由与 catch-all (objectstac…
fix(app-shell): match system/metadata pseudo-routes on path segments,…
fix(console): host redirects emit the canonical metadata routes, not …
fix(nav): 导航侧最后 4 处生产端直发规范 metadata 路由,不再绕已废弃的 component/metadata 别名 (o…