Repository navigation
把关 #13/#15/batch W·X:终端重启确认框被抢焦点,补回 #15 放宽的 3 条回归保护 - #17
Merged
RoxyAsahi merged 3 commits intoOct 7, 2026
Merged
Conversation
21a0a48 moved restart onto the app confirm dialog, which is async and focuses its own button, but the click handler still called term.focus() right after restart(). Focus went back to the xterm behind the dialog, so typing reached the shared shell while the dialog was open. The handler now leaves focus alone when a confirm will be shown; the dialog returns focus to the restart button when it closes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KnTGLLVUgUjQG3f4cWBHJw
After #14 side chats use dormancy 'keep', so the type note that said unsent input should use isBusy() instead of keep, and the isBusy examples that named a sending side chat, no longer matched the code. The side chat handle's setVisible, removed as dead code in 21a0a48, came back with #14's revert and is removed again. The architecture doc's terminal example used a deps.notify that does not exist, and the side chat owner is about 770 lines, not 560. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KnTGLLVUgUjQG3f4cWBHJw
…s to keep Mutation runs against #15's tests (5ff688f) found three regressions they no longer catch: - regenerate's removeMessageById(id, true): the mock stopped recording the save flag, so a renderer removal that saves again (and can write to the renderer's current topic) passed. Both delete and regenerate assert [id, false] again. - terminal toolbar listeners bypassing the view scope: `listener > 0` goes back to the exact count of 3. - the pane's active / collapsed classes after a reversed animation: they drive the layout (side-pane-shell.css) and the visibility check, so the four class asserts come back. Nothing tested that side chats stay mounted (#14 dropped the sleep tests only); setting the chat type back to 'none' passed every test. A draft-restore case now hides a side chat past hiddenMs and checks the same handle, draft and references are still there. Also drops the duplicate busy mark the #15 merge left in side-pane-dormancy. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KnTGLLVUgUjQG3f4cWBHJw
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 free
to 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.
Requested by Roxy · project thread
Before:对 #14 之后进入 #2 的提交(#13、#15、batch W/X、IPC 调用窗口策略、#3 的停止修复)和 #16 逐个做了审核。这些改动都不需要撤掉,但发现以下问题:
term.focus()会把焦点从确认框抢回终端。结果是确认框开着时,敲的字会进到背后共享的 shell。=== 3被放宽成> 0);active/collapsed两个 class 不对,而这两个 class 决定实际布局。'none',全部测试照样通过。setVisible死代码带了回来。另外有几处类型注释和架构文档还在说「未发送的输入要用 isBusy,不要用 keep」,以及「辅助对话在发送时算忙」,和现在的代码相反。After:
How:每处测试都做过变异验证,确认能抓到问题。改坏对应源码时新测试失败,恢复源码后通过。焦点测试在改动前会失败。
Testing:
test:side-pane546/546,test:workbench218/218,test:chat-kernel273/273。check:ui-system、check:chat-contracts、check:chat-evidence、guard:next-delta都通过。审核里不需要动的部分:#13 的标签节点复用、#16 的 owner 剪枝、74c44a4e 和 e22543e 的调用窗口策略都保留。我枚举了每个通道的所有调用方,没有误拦合法窗口,内嵌 V工程在 Electron 里实测也会放行。详细结论在项目文件
sidebar/audit/2026-10-07-fix-audit.md的第二轮一节。🤖 Generated with Claude Code
https://claude.ai/code/session_01KnTGLLVUgUjQG3f4cWBHJw
Generated by Claude Code