Skip to content

fix(app): select the manager conversation view from the operations tile - #5406

Merged
huangruiteng merged 1 commit into
mainfrom
codex/fix-manager-operations-view-all-1001
Oct 1, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/fix-manager-operations-view-all-1001

Conversation

@huangruiteng

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

  • Outcome basis / optional anchor: reproduced defect in main after fix(app): keep chosen work views across reload and browser history #5399 (no issue).
  • Goal/source and gap: fix(app): keep chosen work views across reload and browser history #5399 replaced the manager chat open/close state with the typed workspace view, but left ManagerHomeBoard's "view all operations" handler calling the removed setManagerChatOpen(true). Current main therefore does not type-check (npx tsc --noEmit in apps/presentation/dashboard: personal-workspace-page.tsx(1989,44): error TS2552: Cannot find name 'setManagerChatOpen'), and the button would raise a ReferenceError when clicked.
  • Observable before → after: before, tsc --noEmit and the packaged npm run build (tsc + vite + build:chat) fail on main; after, both pass and the operations tile's "view all" opens the manager conversation through the same typed view owner the rest of the surface uses.
  • Issue/task and intended base: none; main (3a35ec195).

Scope And Continuation

  • Completed scope and remaining work: complete within this scope. One call site now uses setSelectedGoalTab("chat"), the setter fix(app): keep chosen work views across reload and browser history #5399 introduced for selectedGoalTab (controlledView ?? localView, published through callbacks.onSelectView). No other fix(app): keep chosen work views across reload and browser history #5399 leftover exists — tsc reports this as the only unresolved identifier.
  • Slice boundary / successor: none required. Coverage note rather than a fabricated follow-up: the button renders only when the operations tile has more than briefRowLimit (3) rows, and no browser scenario currently seeds that many, so the durable guard for this regression class is the dashboard type check that the packaged lane runs; pinning the click path would need new operation fixtures and can be its own change if wanted.

Validation

  • Tested revision: 4fda0e3e2
  • Run state: finished
  • Input classes: synthetic
Check kind Result Public-safe evidence / limitation
regression_parity passed Clean worktree at main@3a35ec195: npx tsc --noEmit fails with TS2552 at personal-workspace-page.tsx(1989,44); the same command on this head is clean.
static passed npx tsc --noEmit and npm run build (tsc, vite build, scripts/chat_bundle_launcher.mjs build) in apps/presentation/dashboard.
integration passed Browser scenarios confirmed-operations (manager board, operations tile), steward-journey and navigation-sorting pass in the development smoke.
  • Coverage and gaps: the fixed handler is one line in the manager home board; the click itself is not exercised by the current browser catalog (see the coverage note above). No behavior change beyond restoring the intended view switch.

Frontend / Visual Evidence

  • UI impact: changed (behavior only)
  • Before/after: the operations tile's "view all" affordance is unchanged visually; before it referenced a removed setter, after it opens the manager conversation view.
  • States and viewports shown: not required for a non-presentational handler repair; confirmed-operations renders the manager board at 1512px and 390px in both locales and passes.
  • Source data: synthetic
  • Attention review: first viewport, opening navigation and primary CTA presentation are unchanged; the fix removes a dead reference rather than adding navigation or confirmation.

Type of Change

  • Bug fix

LoopX Area

  • Public docs or presentation surface (dashboard)

Technical Direction

  • Direction / acceptance reference, when applicable: Operator surface and IM integration.

Shared-authority RFC fixture impact

N/A

Boundary Checklist

  • Neither the diff nor this PR body/comments/attachments disclose private state, credentials, raw traces or verifier output, internal links, or local machine paths.
  • I did not duplicate maintainer-owned benchmark work unless a maintainer split out a public issue for it.
  • I kept the change scoped to the linked issue/task.
  • I completed the visual evidence section for UI changes, or marked UI impact none.
  • Every commit includes a DCO Signed-off-by trailer (git commit -s).

Future-facing refactor pass: not needed. The related cleanup the merge should keep is the one this PR restores — a single typed view owner for the whole workspace surface; adding a manager-only setter back would re-create the duplicate #5399 removed.

#5399 replaced the manager chat open/close state with the typed workspace
view (`selectedGoalTab`) but left the ManagerHomeBoard's "view all
operations" handler calling the removed `setManagerChatOpen`. The dashboard
therefore no longer type-checks (`tsc --noEmit`, TS2552) and the button
throws when clicked.

Route the handler through the same typed view owner as the rest of the
surface, so the operations tile opens the manager conversation instead of
referencing a removed setter. No other #5399 leftover is present.

Signed-off-by: huangruiteng <huangrt01@163.com>
@huangruiteng
huangruiteng requested a review from maxliux5 as a code owner October 1, 2026 10:00

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

Reviewed exact head 4fda0e3e267c21d8da11d252290c40df4451b170.

动机

#5399 把管家 Chat 的开关状态换成了类型化工作区视图(selectedGoalTab,由
controlledView ?? localView 派生并通过 callbacks.onSelectView 发布),但漏改了
ManagerHomeBoard 的"查看全部操作"回调,它仍在调用已被删除的 setManagerChatOpen。
后果有两条,都可以直接观测:当前 main 的 dashboard 不能通过类型检查
(personal-workspace-page.tsx(1989,44): error TS2552),因此 npm run build
(tsc + vite + build:chat)这条打包 lane 是红的;点击该按钮会抛 ReferenceError。
这既挡住本仓库其他 PR 的必需检查,也让一个真实入口失效,所以值得立刻修,而且只需一行。

改动思路

不重建被 #5399 删掉的管家专用 setter(那正是它去除的重复 owner),而是让该回调走同一个
类型化视图 owner:onViewAllOperations={() => setSelectedGoalTab("chat")}。这与页面里
其他"打开会话"入口完全一致(1551/1564/1878/2032 行都这么调用)。

具体改动

  • apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx(+1/−1):
    操作卡的"查看全部"回调由 setManagerChatOpen(true) 改为 setSelectedGoalTab("chat")。
    改动后 npx tsc --noEmit 不再报告任何未解析标识符,说明这是 #5399 唯一遗留的引用;
    npm run build(tsc + vite + chat bundle)也恢复通过,管家板渲染结果不变,只是那个按钮
    重新指向同一个类型化视图 owner。

对主干的风险

  • 只把失效引用接回既有 owner,没有新增状态、协议或权限;风险面是"是否真的恢复了原意"。
    证据:setSelectedGoalTab 是页面内既有的会话入口调用方式,且它会把选择发布给路由 owner,
    所以点击行为与其它入口一致。
  • 已验证:干净 worktree 上 main@3a35ec195 的 npx tsc --noEmit 复现 TS2552,本 head 干净;
    npm run build 通过;开发态浏览器场景 confirmed-operations(管家板与操作卡)、
    steward-journey、navigation-sorting 全部通过。
  • 未验证:点击本身没有被现有场景覆盖——该按钮只在操作卡超过 3 行时才渲染,当前 fixture 不构造
    这种数据;因此这类回归的持久守卫是打包 lane 里的类型检查(本次正是它抓到的问题)。
    要在浏览器里钉住点击路径,需要新增操作 fixture,可以作为独立的小改动,我不把它塞进这个修复。
    PR 正文已把这一点写成覆盖说明,而不是声称已验证。
  • 非阻塞建议:无。已确认没有其他 #5399 遗留引用。

我的整体评价

这是最小且正确的修复:把一行失效引用接回同一个类型化视图 owner,既恢复打包构建,也让
操作卡入口重新可用,没有为"过绿"而回退 #5399 的收敛。没有阻塞性发现,APPROVE。

English verdict: APPROVE. Exact head 4fda0e3e267c21d8da11d252290c40df4451b170 restores the
manager operations tile's "view all" handler on the typed workspace view owner that #5399
introduced. main@3a35ec195 fails npx tsc --noEmit with TS2552 on the removed setter and the
head is clean; npm run build and the confirmed-operations, steward-journey and
navigation-sorting development scenarios pass. No blocking findings; the click path itself is
not covered by the current fixtures, so the durable guard is the packaged type check.

@huangruiteng
huangruiteng merged commit 2bd9b32 into main Oct 1, 2026
6 of 8 checks passed
@huangruiteng
huangruiteng deleted the codex/fix-manager-operations-view-all-1001 branch October 1, 2026 10:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant