越界发现,记录于 #3590 实现期间。#3590 的文件面被 PM 明确框在「三个 sys-settings/CTA 调用点」上,以下几处同族同值但在框外,按 越界即停 只报不改,单独立单,未认领。
实测基线:origin/main @ 03f25f7a3。
AppContent 只在 isSystemRoute(pathname.includes('/system'))成立时挂载系统枢纽。裸 /apps/setup 因此在零应用部署下落回 !activeApp && … 守卫 —— 它就是「No Apps Configured」空态自己的 URL。#3590 已把空态 CTA 与两处 sys-settings 导航项改向 /apps/setup/system;下面几处未在其文件面内。
剩余调用点
行号均为 origin/main @ 03f25f7a3:
| 文件:行 |
入口 |
零应用下的落点 |
packages/app-shell/src/layout/AppSidebar.tsx:445 |
无应用侧栏头 system-sidebar-header(Settings 图标,data-testid 在 446 行) |
空态自身 |
packages/app-shell/src/layout/AppSidebar.tsx:675 |
用户菜单 user.settings(「Settings」,文案在 678 行) |
空态自身 |
packages/app-shell/src/console/ConsoleShell.tsx:378 |
SystemRedirect:旧链 /system(裸,无后缀)→ /apps/setup |
空态自身 |
packages/app-shell/src/console/home/QuickActions.tsx:49 |
id: 'system-settings',label「System Settings」 |
空态自身 |
前三处是具体缺陷:都在零应用部署下真实可达(system-sidebar-header 恰恰只在零应用时渲染 —— 它与 #3590 改的那条 sys-settings 是同一个 activeApp 为假的分支)。
第四处 QuickActions 是休眠代码:全仓 grep QuickActions 作为 JSX 元素零命中(只从 console/home/index.ts 导出,无人渲染),今天没有用户能碰到 —— 但只要有人把它挂回 HomePage,它就带着一条死链一起回来。
ConsoleShell.tsx:378 那条值得单独看一眼,它已经有一半是对的:
const target = suffix ? `/apps/setup/system${suffix}` : '/apps/setup';
带后缀的旧链(/system/users 等)被正确拼成 /apps/setup/system/users;只有裸 /system 这个书签落回了裸 /apps/setup。改成 /apps/setup/system 即可与自己的另一半自洽。
影响
零应用部署的第一屏与其周边仍有多条通往「设置」的入口原地打转。#3590 修掉了空态上那颗按钮和系统兜底导航的头项,但侧栏头、用户菜单、旧 /system 书签仍是死键。
可能的修法(留给分诊)
四处统一改为 /apps/setup/system(该 URL 在有/无 activeApp 两个分支下都可解析:分别经 extraRoutes 与 extraRoutesNoApp)。全部是常量替换,无行为分叉。
顺带值得一并定的问题(#3590 分诊里也提过):setup 的稳定入口到底是哪个 URL —— 裸 /apps/setup 在有应用的部署里是有意义的(若发布了 setup 应用就渲染它,否则回落到默认应用),在零应用部署里则退化成空态。若认定「System Settings」语义恒等于系统枢纽,那么这些调用点就都该拼 /system,本单即按此收口。
关联
已就关键词(system-sidebar-header / SystemRedirect / QuickActions / apps/setup / user.settings)搜过三仓开放 issue 与 PR,无同源单。
越界发现,记录于 #3590 实现期间。#3590 的文件面被 PM 明确框在「三个
sys-settings/CTA 调用点」上,以下几处同族同值但在框外,按 越界即停 只报不改,单独立单,未认领。实测基线:
origin/main@03f25f7a3。根因(与 #3590 同一条)
AppContent只在isSystemRoute(pathname.includes('/system'))成立时挂载系统枢纽。裸/apps/setup因此在零应用部署下落回!activeApp && …守卫 —— 它就是「No Apps Configured」空态自己的 URL。#3590 已把空态 CTA 与两处sys-settings导航项改向/apps/setup/system;下面几处未在其文件面内。剩余调用点
行号均为
origin/main@03f25f7a3:packages/app-shell/src/layout/AppSidebar.tsx:445system-sidebar-header(Settings图标,data-testid在 446 行)packages/app-shell/src/layout/AppSidebar.tsx:675user.settings(「Settings」,文案在 678 行)packages/app-shell/src/console/ConsoleShell.tsx:378SystemRedirect:旧链/system(裸,无后缀)→/apps/setuppackages/app-shell/src/console/home/QuickActions.tsx:49id: 'system-settings',label「System Settings」前三处是具体缺陷:都在零应用部署下真实可达(
system-sidebar-header恰恰只在零应用时渲染 —— 它与 #3590 改的那条sys-settings是同一个activeApp为假的分支)。第四处
QuickActions是休眠代码:全仓 grepQuickActions作为 JSX 元素零命中(只从console/home/index.ts导出,无人渲染),今天没有用户能碰到 —— 但只要有人把它挂回 HomePage,它就带着一条死链一起回来。ConsoleShell.tsx:378那条值得单独看一眼,它已经有一半是对的:带后缀的旧链(
/system/users等)被正确拼成/apps/setup/system/users;只有裸/system这个书签落回了裸/apps/setup。改成/apps/setup/system即可与自己的另一半自洽。影响
零应用部署的第一屏与其周边仍有多条通往「设置」的入口原地打转。#3590 修掉了空态上那颗按钮和系统兜底导航的头项,但侧栏头、用户菜单、旧
/system书签仍是死键。可能的修法(留给分诊)
四处统一改为
/apps/setup/system(该 URL 在有/无 activeApp 两个分支下都可解析:分别经extraRoutes与extraRoutesNoApp)。全部是常量替换,无行为分叉。顺带值得一并定的问题(#3590 分诊里也提过):setup 的稳定入口到底是哪个 URL —— 裸
/apps/setup在有应用的部署里是有意义的(若发布了setup应用就渲染它,否则回落到默认应用),在零应用部署里则退化成空态。若认定「System Settings」语义恒等于系统枢纽,那么这些调用点就都该拼/system,本单即按此收口。关联
/_console/setup深链,另一套机制,但同样在问「setup 的规范 URL 是什么」。已就关键词(
system-sidebar-header/SystemRedirect/QuickActions/apps/setup/ user.settings)搜过三仓开放 issue 与 PR,无同源单。