Skip to content

console: 零应用空态的另一颗按钮 go-to-settings-btn 同样是死键——/apps/setup 渲染的正是这个空态本身 #3590

Description

@yinlianghui

越界发现,记录于 #3573(修同一空态里的 create-first-app-btn)期间。按纪律只报不改,单独立单,未认领,留给 PM 分诊。

实测基线:origin/main @ 632c07c5b

现象

零应用部署的第一屏(「No Apps Configured」空态)上有两颗按钮。#3573 处理的是
create-first-app-btn旁边那颗 go-to-settings-btn(「System Settings」)在同一条件下
也是死键
:它跳向 /apps/setup,而 /apps/setup 在零应用时渲染的正是这个空态本身
用户点完停在同一屏,同样没有任何报错。

⚠️ #3573 的正文写「旁边的 go-to-settings-btn/apps/setup 是好的,因为它落在
/apps/:appName/* 内」。实测下来落在子树内是必要条件而非充分条件 —— /apps/setup
这个裸路径恰好就是空态自己的 URL。该结论应视为已被证伪。

实测链路

packages/app-shell/src/console/AppContent.tsx(行号为 632c07c5b):

  1. 按钮:579 行 —— onClick={() => navigate('/apps/setup')},data-testid="go-to-settings-btn"
  2. 落到 /apps/setup 后,同一组件重新求值:
    • 184 行 isSystemRoute = location.pathname.includes('/system')false(裸 /apps/setup 里没有 system 段);
    • 186 行 isSetupRoute → true ⇒ isSpecialRoute true ⇒ 207 行 requestedAppMissing false;
    • 零应用时 launcherApps 为空 ⇒ activeAppundefined;
    • 568 行的 !activeApp && !isCreateAppRoute && !isSystemRoute && !isMetadataRoute 成立 → 再次渲染同一个空态
  3. 系统设置本身是可达的,但只在 /apps/setup/system:587 行的无-activeApp 分支挂了
    extraRoutesNoApp,console 在 apps/console/src/AppContent.tsx 里声明了
    Route path="system"SystemHubPage,而进入该分支的开关正是 isSystemRoute
    所以差的就是按钮少了一段 /system

复现

零应用(或全部 app 被 active: false / hidden: true)的部署,进入 /apps/setup
点「System Settings」→ 停在原地。

#3573 的 PR(#3588)新增的路由测试
packages/app-shell/src/console/__tests__/AppContent.noAppsCta.test.tsx 里,这一行为
被一条测试原样钉住了(leaves the sibling go-to-settings CTA on its absolute /apps/setup target):点击后 pathname/apps/setup,且 create-first-app-btn 仍在
那条测试的用途是证明 #3573 的改动没碰这颗按钮,不是背书它的目标正确 —— 修本单时应一并更新。

影响

零应用的新用户第一屏上,两颗按钮都不工作(#3573 修了其中一颗)。这一屏是全新环境的
唯一入口,修完 #3573 后仍有一半是死的。

可能的修法(留给分诊)

  • 目标改成 /apps/setup/system(即 SystemHubPage,无 activeApp 时已声明可达);
  • 侧边栏无 activeApp 时的系统导航有同一个目标:layout/AppSidebar.tsx:313
    layout/UnifiedSidebar.tsx:318sys-settings 项都是 url: '/apps/setup',
    在零应用部署下同样落回空态 —— 三处调用点应一起看。

关联

#3527 的席位纪律,dev 席位已就关键词(go-to-settings-btn / apps/setup /
noAppsConfigured / 空态 / System Settings)搜过开放 issue,除上述两单外无同源单。


Blocked-by: #3573


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions