handmux 0.22.1 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/README.md +3 -3
  2. package/README.zh-CN.md +3 -3
  3. package/bin/handmux.js +3 -688
  4. package/dist/bin/handmux.js +850 -0
  5. package/{hooks → dist/hooks}/handmux-notify.sh +2 -4
  6. package/{hooks → dist/hooks}/handmux-statusline.cjs +28 -6
  7. package/{hooks → dist/hooks}/handmux-write.cjs +25 -26
  8. package/dist/package.json +126 -0
  9. package/dist/public/assets/index-CicdY9E9.css +32 -0
  10. package/dist/public/assets/index-D4VP5t8h.js +337 -0
  11. package/dist/public/assets/pcm-worklet-CxcDy7PB.js +1 -0
  12. package/{public → dist/public}/index.html +5 -4
  13. package/{src → dist/src}/agents/claude.js +106 -82
  14. package/dist/src/agents/codex.js +217 -0
  15. package/{src → dist/src}/agents/index.js +9 -10
  16. package/dist/src/agents/processIdentity.js +80 -0
  17. package/dist/src/agents/scanUtils.js +262 -0
  18. package/dist/src/apiErrors.js +77 -0
  19. package/{src → dist/src}/appName.js +12 -13
  20. package/dist/src/asr/iflyConfig.js +7 -0
  21. package/dist/src/asr/iflySign.js +14 -0
  22. package/dist/src/auth.js +27 -0
  23. package/dist/src/browser/bootstrap.js +72 -0
  24. package/dist/src/browser/cookieProfiles.js +413 -0
  25. package/dist/src/browser/coordinator.js +51 -0
  26. package/dist/src/browser/hammerheadCompat.js +104 -0
  27. package/dist/src/browser/hammerheadRedirectCompat.js +37 -0
  28. package/dist/src/browser/manager.js +560 -0
  29. package/dist/src/browser/originLabel.js +15 -0
  30. package/dist/src/browser/profilePersistence.js +235 -0
  31. package/dist/src/browser/publicProxy.js +176 -0
  32. package/dist/src/browser/routes.js +159 -0
  33. package/dist/src/browser/sessionStore.js +72 -0
  34. package/dist/src/browser/siteVersion.js +121 -0
  35. package/dist/src/browser/targetPolicy.js +163 -0
  36. package/{src → dist/src}/browser/worker.js +14 -18
  37. package/dist/src/browser/workerClient.js +286 -0
  38. package/dist/src/browser/workerServer.js +91 -0
  39. package/dist/src/captureBackground.js +95 -0
  40. package/dist/src/claudeEvents.js +499 -0
  41. package/{src → dist/src}/cli/claudeHooks.js +146 -108
  42. package/{src → dist/src}/cli/cloudflareUrl.js +2 -3
  43. package/dist/src/cli/cloudflared.js +106 -0
  44. package/dist/src/cli/codexManaged.js +77 -0
  45. package/{src → dist/src}/cli/cpolarUrl.js +8 -9
  46. package/dist/src/cli/drivers.js +98 -0
  47. package/dist/src/cli/hookScaffold.js +36 -0
  48. package/dist/src/cli/i18n/en.js +366 -0
  49. package/{src → dist/src}/cli/i18n/index.js +27 -25
  50. package/dist/src/cli/i18n/zh.js +365 -0
  51. package/dist/src/cli/legacyCodexHooks.js +52 -0
  52. package/{src → dist/src}/cli/natappUrl.js +2 -3
  53. package/dist/src/cli/options.js +245 -0
  54. package/dist/src/cli/probe.js +16 -0
  55. package/{src → dist/src}/cli/prompt.js +4 -6
  56. package/dist/src/cli/pushCmd.js +102 -0
  57. package/{src → dist/src}/cli/qr.js +19 -19
  58. package/dist/src/cli/service.js +144 -0
  59. package/dist/src/cli/setupModel.js +194 -0
  60. package/dist/src/cli/setupWizard.js +647 -0
  61. package/dist/src/cli/shortcutEditor.js +351 -0
  62. package/dist/src/cli/sshTunnel.js +18 -0
  63. package/dist/src/cli/state.js +114 -0
  64. package/{src → dist/src}/cli/statusLine.js +63 -46
  65. package/dist/src/cli/supervisor.js +278 -0
  66. package/dist/src/cli/supervisorHealth.js +21 -0
  67. package/dist/src/cli/supervisorLaunch.js +148 -0
  68. package/dist/src/cli/supervisorProcesses.js +62 -0
  69. package/dist/src/cli/supervisorState.js +62 -0
  70. package/dist/src/cli/tmuxVersion.js +53 -0
  71. package/{src → dist/src}/cli/tunlite.js +7 -10
  72. package/dist/src/cli/tunnelClients.js +72 -0
  73. package/{src → dist/src}/cli/updateCheck.js +98 -69
  74. package/{src → dist/src}/cli/urlHost.js +8 -4
  75. package/dist/src/cli/workspaceCmd.js +347 -0
  76. package/dist/src/codexAppServer.js +2299 -0
  77. package/dist/src/codexConversationProjection.js +199 -0
  78. package/dist/src/codexDiff.js +118 -0
  79. package/dist/src/codexMessageIdentity.js +18 -0
  80. package/dist/src/codexPlan.js +30 -0
  81. package/dist/src/codexQueueProtocol.js +96 -0
  82. package/dist/src/codexStreamProtocol.js +207 -0
  83. package/dist/src/codexToolProtocol.js +68 -0
  84. package/dist/src/codexTranscriptParse.js +724 -0
  85. package/dist/src/codexUsageSnapshot.js +205 -0
  86. package/dist/src/config.js +8 -0
  87. package/{src → dist/src}/docPath.js +22 -24
  88. package/dist/src/docs.js +337 -0
  89. package/dist/src/git.js +272 -0
  90. package/dist/src/healthProtocol.js +97 -0
  91. package/dist/src/httpApi.js +68 -0
  92. package/dist/src/jsonStore.js +15 -0
  93. package/{src → dist/src}/keyNames.js +3 -3
  94. package/dist/src/notifications.js +111 -0
  95. package/dist/src/orphans.js +157 -0
  96. package/dist/src/pendingPrompt.js +194 -0
  97. package/dist/src/previewServer.js +202 -0
  98. package/dist/src/previews.js +179 -0
  99. package/dist/src/privateStateStore.js +89 -0
  100. package/dist/src/push.js +224 -0
  101. package/dist/src/routes/codex.js +606 -0
  102. package/dist/src/routes/files.js +230 -0
  103. package/dist/src/routes/git.js +78 -0
  104. package/dist/src/routes/health.js +16 -0
  105. package/dist/src/routes/notifications.js +16 -0
  106. package/dist/src/routes/previews.js +43 -0
  107. package/dist/src/routes/push.js +145 -0
  108. package/dist/src/routes/sessions.js +232 -0
  109. package/dist/src/routes/system.js +156 -0
  110. package/dist/src/routes/terminal.js +238 -0
  111. package/dist/src/routes/transcript.js +197 -0
  112. package/dist/src/routes/workspace.js +267 -0
  113. package/{src → dist/src}/server.js +110 -76
  114. package/dist/src/shortcutConfig.js +83 -0
  115. package/{src → dist/src}/staticCache.js +5 -3
  116. package/{src → dist/src}/staticCompression.js +5 -6
  117. package/dist/src/terminalStream.js +441 -0
  118. package/{src → dist/src}/tmux/commands.js +160 -167
  119. package/dist/src/tmux/format.js +47 -0
  120. package/dist/src/transcriptParse.js +240 -0
  121. package/dist/src/transcriptReader.js +113 -0
  122. package/{src → dist/src}/trimCapture.js +11 -11
  123. package/dist/src/uploadTypes.js +29 -0
  124. package/dist/src/urlPolicy.js +18 -0
  125. package/dist/src/usage.js +260 -0
  126. package/dist/src/workspace/agentRunner.js +204 -0
  127. package/dist/src/workspace/atomicJson.js +31 -0
  128. package/dist/src/workspace/capture.js +139 -0
  129. package/dist/src/workspace/checkpointer.js +228 -0
  130. package/dist/src/workspace/environment.js +71 -0
  131. package/dist/src/workspace/lock.js +137 -0
  132. package/dist/src/workspace/mapping.js +128 -0
  133. package/dist/src/workspace/operations.js +271 -0
  134. package/dist/src/workspace/paths.js +15 -0
  135. package/dist/src/workspace/planner.js +292 -0
  136. package/dist/src/workspace/restore.js +314 -0
  137. package/dist/src/workspace/runtime.js +318 -0
  138. package/dist/src/workspace/schema.js +156 -0
  139. package/dist/src/workspace/store.js +464 -0
  140. package/dist/src/workspace/tmuxAdapter.js +694 -0
  141. package/dist/src/workspaceProtocol.js +158 -0
  142. package/package.json +28 -16
  143. package/hooks/handmux-codex-usage.cjs +0 -141
  144. package/public/assets/index-ClOByNCn.js +0 -335
  145. package/public/assets/index-rjrtUwoJ.css +0 -32
  146. package/src/.gitkeep +0 -0
  147. package/src/agents/codex.js +0 -121
  148. package/src/agents/processIdentity.js +0 -72
  149. package/src/agents/scanUtils.js +0 -225
  150. package/src/asr/iflyConfig.js +0 -10
  151. package/src/asr/iflySign.js +0 -16
  152. package/src/auth.js +0 -30
  153. package/src/browser/bootstrap.js +0 -68
  154. package/src/browser/cookieProfiles.js +0 -403
  155. package/src/browser/coordinator.js +0 -47
  156. package/src/browser/hammerheadCompat.js +0 -86
  157. package/src/browser/hammerheadRedirectCompat.js +0 -38
  158. package/src/browser/manager.js +0 -556
  159. package/src/browser/originLabel.js +0 -17
  160. package/src/browser/profilePersistence.js +0 -241
  161. package/src/browser/publicProxy.js +0 -175
  162. package/src/browser/routes.js +0 -154
  163. package/src/browser/sessionStore.js +0 -78
  164. package/src/browser/siteVersion.js +0 -124
  165. package/src/browser/targetPolicy.js +0 -137
  166. package/src/browser/workerClient.js +0 -253
  167. package/src/browser/workerServer.js +0 -98
  168. package/src/captureBackground.js +0 -93
  169. package/src/claudeEvents.js +0 -356
  170. package/src/cli/cloudflared.js +0 -99
  171. package/src/cli/codexHooks.js +0 -123
  172. package/src/cli/drivers.js +0 -97
  173. package/src/cli/hookScaffold.js +0 -35
  174. package/src/cli/i18n/en.js +0 -388
  175. package/src/cli/i18n/zh.js +0 -387
  176. package/src/cli/options.js +0 -211
  177. package/src/cli/probe.js +0 -16
  178. package/src/cli/pushCmd.js +0 -60
  179. package/src/cli/service.js +0 -126
  180. package/src/cli/setupModel.js +0 -154
  181. package/src/cli/setupWizard.js +0 -506
  182. package/src/cli/shortcutEditor.js +0 -288
  183. package/src/cli/sshTunnel.js +0 -12
  184. package/src/cli/state.js +0 -90
  185. package/src/cli/supervisor.js +0 -183
  186. package/src/cli/supervisorProcesses.js +0 -57
  187. package/src/cli/tmuxVersion.js +0 -49
  188. package/src/cli/tunnelClients.js +0 -62
  189. package/src/cli/workspaceCmd.js +0 -300
  190. package/src/config.js +0 -9
  191. package/src/docs.js +0 -228
  192. package/src/git.js +0 -208
  193. package/src/httpApi.js +0 -69
  194. package/src/jsonStore.js +0 -24
  195. package/src/notifications.js +0 -68
  196. package/src/orphans.js +0 -150
  197. package/src/pendingPrompt.js +0 -163
  198. package/src/previewServer.js +0 -168
  199. package/src/previews.js +0 -116
  200. package/src/push.js +0 -183
  201. package/src/routes/files.js +0 -172
  202. package/src/routes/git.js +0 -57
  203. package/src/routes/notifications.js +0 -19
  204. package/src/routes/previews.js +0 -35
  205. package/src/routes/push.js +0 -119
  206. package/src/routes/sessions.js +0 -163
  207. package/src/routes/system.js +0 -145
  208. package/src/routes/terminal.js +0 -210
  209. package/src/routes/transcript.js +0 -115
  210. package/src/routes/workspace.js +0 -267
  211. package/src/shortcutConfig.js +0 -75
  212. package/src/terminalStream.js +0 -391
  213. package/src/tmux/format.js +0 -45
  214. package/src/transcriptParse.js +0 -180
  215. package/src/transcriptReader.js +0 -101
  216. package/src/uploadTypes.js +0 -30
  217. package/src/urlPolicy.js +0 -14
  218. package/src/usage.js +0 -261
  219. package/src/workspace/agentRunner.js +0 -185
  220. package/src/workspace/atomicJson.js +0 -32
  221. package/src/workspace/capture.js +0 -87
  222. package/src/workspace/checkpointer.js +0 -183
  223. package/src/workspace/environment.js +0 -75
  224. package/src/workspace/lock.js +0 -128
  225. package/src/workspace/mapping.js +0 -124
  226. package/src/workspace/operations.js +0 -252
  227. package/src/workspace/paths.js +0 -16
  228. package/src/workspace/planner.js +0 -247
  229. package/src/workspace/restore.js +0 -279
  230. package/src/workspace/runtime.js +0 -314
  231. package/src/workspace/schema.js +0 -136
  232. package/src/workspace/store.js +0 -382
  233. package/src/workspace/tmuxAdapter.js +0 -554
  234. /package/{public → dist/public}/fonts/JetBrainsMonoNerdFontMono-Regular.woff2 +0 -0
  235. /package/{public → dist/public}/fonts/TWUnifont.woff2 +0 -0
  236. /package/{public → dist/public}/icons/apple-touch-icon.png +0 -0
  237. /package/{public → dist/public}/icons/badge-96.png +0 -0
  238. /package/{public → dist/public}/icons/icon-192-maskable.png +0 -0
  239. /package/{public → dist/public}/icons/icon-192.png +0 -0
  240. /package/{public → dist/public}/icons/icon-512-maskable.png +0 -0
  241. /package/{public → dist/public}/icons/icon-512.png +0 -0
  242. /package/{public → dist/public}/icons/logo.svg +0 -0
  243. /package/{public → dist/public}/manifest.webmanifest +0 -0
  244. /package/{public → dist/public}/offline.html +0 -0
  245. /package/{public → dist/public}/sw.js +0 -0
  246. /package/{src → dist/src}/browser/protocol.js +0 -0
  247. /package/{src → dist/src}/cli/cfNamed.js +0 -0
package/README.md CHANGED
@@ -68,15 +68,15 @@ handmux start --tunnel cloudflare # instant public URL (cloudflared auto-insta
68
68
  ## Features
69
69
 
70
70
  - **Claude Code / Codex, deeply** — an inbox status ledger, thumb-approve permissions & plans, and stable host-wide usage bars shared by every connected device.
71
- - **Chat view (experimental)** — turn a Claude session into a mobile conversation with Markdown bubbles, colored tool diffs, and tap-to-answer cards; enable it in Settings and switch back to the terminal at any time.
71
+ - **Chat view** — drive Codex CLI through App Server with streaming Markdown bubbles, tool cards, native Goal lifecycle cards, and session status; setting or restarting a Goal creates a fresh active native Goal, immediately shows its user-side card on the right, and starts Codex's built-in continuation. An active or paused Goal stays beneath the live read-only turn task list, Codex terminal feedback stays with its originating turn on the left, and every entry opens the same Bottom Sheet. The current Goal uses one equal-width iOS-style action row; clearing it removes the resident Goal and closes the sheet, while its historical chat card remains. The current terminal Goal can be edited before restarting. Long replies hold at their beginning for reading, with an explicit jump back to the latest output. Existing panes can switch in place, and messages sent during a turn form an editable server queue. The queue and delivery receipts survive Handmux restarts, and uncertain sends are reconciled before retrying. Claude Code chat is an independently enabled experimental option.
72
72
  - **Real-time terminal + desktop keyboard** — stream the same tmux pane on phone and desktop with scrollback, weak-network fallback, direct physical-keyboard input, and native copy/paste.
73
- - **Command & chat modes** — switch between direct terminal input and natural-language agent chat, with a customizable quick bar that stays in sync across devices.
73
+ - **Command & chat modes** — switch between direct terminal input and natural-language agent chat, with direct Alt and Space keys on the mobile command keyboard and a customizable quick bar that stays in sync across devices.
74
74
  - **Client reload after updates** — once the server update has finished, use Settings → Reload app to load the new client without quitting and reopening the home-screen app.
75
75
  - **Script push** — notify your phone from any script or CI step with `handmux push`; target all devices, a named session, or a specific device.
76
76
  - **Workspace recovery** — handmux keeps the metadata needed to restore your latest tmux workspace after a computer or tmux-server restart, without replacing existing sessions.
77
77
  - **Git viewer** — changes / commit history / any branch / full-screen colored diff, multi-repo tabs, read-only, never touches your tree.
78
78
  - **Web Preview for URLs and static folders** — preview URLs by phone or computer proxy, or open an isolated static folder, with narrow/wide page widths and zoom; computer proxy can also request a mobile or desktop site version. It embeds pages rather than replacing a full browser.
79
- - **Docs** — tap a path in the terminal to open it; Markdown rendered, font zoom, sentence-by-sentence read-aloud.
79
+ - **Docs** — tap recognized text-file paths in the terminal to open them, regardless of extension; ordinary slash-separated prose stays plain. Markdown rendered, font zoom, sentence-by-sentence read-aloud. Binary files stay download-only.
80
80
  - **Mobile select & copy** — long-press to select in the terminal, drag iOS-style handles to fine-tune, copy the selection / a whole line / a whole paragraph.
81
81
  - **Files both ways** — multi-select upload from the chat box, download, share in, copy any absolute path.
82
82
  - **Ideas — catch every one** — a thought the moment it strikes: a per-window idea/to-do list, jot one by voice and drop it straight into the prompt.
package/README.zh-CN.md CHANGED
@@ -68,15 +68,15 @@ handmux start --tunnel cloudflare # 即时公网地址(自动装 cloudflared)
68
68
  ## 功能一览
69
69
 
70
70
  - **Claude Code / Codex 深度**——收件箱状态台账、拇指批授权批计划,以及所有设备共享的本机最新 agent 用量。
71
- - **对话视图(实验性)**——用 Markdown 气泡、彩色工具 diff 和点按回答卡片把 Claude 会话变成移动端对话,可在设置中开启并随时切回终端。
71
+ - **对话视图**——通过 App Server 用流式 Markdown 气泡、工具卡、原生 Goal 生命周期卡片和实时状态操作 Codex CLI;设置或重新开始会创建全新的 active 原生 Goal,立即在右侧显示用户侧卡片并启动 Codex 自带的自动续跑。进行中或暂停的 Goal 常驻在实时任务列表下方,Codex 终态反馈留在对应回合并靠左,所有入口统一打开同一个 Bottom Sheet;当前 Goal 使用 iOS 风格单行等分操作,清除后会移除常驻目标并关闭详情,已经发生的历史卡片仍保留;当前终态 Goal 可修改内容后重新开始。长回答会稳定在开头供阅读,用户可随时回到最新内容;支持现有 pane 原位接入和回复期间可编辑的服务端消息队列,队列和发送回执会跨 Handmux 重启恢复,并在不确定投递后先对账再重试。Claude Code 对话是独立开启的实验性功能。
72
72
  - **实时终端 + 电脑键盘**——在手机和电脑上实时操控同一个 tmux pane,支持历史滚动、弱网回退、物理键盘直输和原生复制粘贴。
73
- - **命令 / 聊天双模式**——在终端直输与自然语言对话间切换,并用跨设备同步的快捷栏快速操作。
73
+ - **命令 / 聊天双模式**——在终端直输与自然语言对话间切换;手机命令键盘提供直接可用的 Alt 与空格键,并可用跨设备同步的快捷栏快速操作。
74
74
  - **更新后重新加载客户端**——服务端更新完成后,在设置里点「重新加载应用」即可载入新版客户端,无需退出主屏应用再重新打开。
75
75
  - **脚本推送**——用 `handmux push` 从脚本或 CI 步骤推消息到手机,可指定全部设备、某个会话或某台设备。
76
76
  - **工作区恢复**——handmux 静默保存必要元数据,在电脑或 tmux server 重启后恢复最新工作区,绝不替换现有会话。
77
77
  - **Git 查看器**——改动 / 提交历史 / 任意分支 / 全屏彩色 diff,多仓库分页,只读不动工作区。
78
78
  - **网页预览器**——用手机直连或电脑代理预览网址,也可隔离打开静态目录,支持窄屏 / 宽屏和缩放;电脑代理还可向网站请求手机版或电脑版。它只嵌入网页,不替代完整浏览器。
79
- - **文档**——终端里点路径即开;Markdown 排版、字号缩放、逐句高亮朗读。
79
+ - **文档**——终端里明确识别出的文本文件路径不分扩展名均可点开,普通斜杠文字保持纯文本;支持 Markdown 排版、字号缩放、逐句高亮朗读,二进制文件仍只下载。
80
80
  - **选中 · 拷贝**——终端里长按选中,拖 iOS 式手柄精调,一键拷贝选区 / 整行 / 整段。
81
81
  - **文件双向传**——聊天框多选上传、下载、系统分享进来、复制绝对路径。
82
82
  - **想法 · 随想随记**——不错过任何点子:每窗口一份想法清单,灵感一冒就记(能语音速记),一点填进输入框。