claude-mux 0.7.0 → 0.8.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 (723) hide show
  1. package/.github/workflows/release.yml +59 -0
  2. package/CLAUDE.md +12 -13
  3. package/CONTEXT.md +23 -0
  4. package/README.md +61 -266
  5. package/dist/agents.d.ts +12 -0
  6. package/dist/agents.d.ts.map +1 -0
  7. package/dist/agents.js +28 -0
  8. package/dist/agents.js.map +1 -0
  9. package/dist/cli.d.ts +1 -1
  10. package/dist/cli.js +10 -3
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/capture.d.ts +3 -0
  13. package/dist/commands/capture.d.ts.map +1 -0
  14. package/dist/commands/capture.js +33 -0
  15. package/dist/commands/capture.js.map +1 -0
  16. package/dist/commands/index.d.ts +7 -0
  17. package/dist/commands/index.d.ts.map +1 -1
  18. package/dist/commands/index.js +7 -0
  19. package/dist/commands/index.js.map +1 -1
  20. package/dist/commands/new-session.d.ts +3 -0
  21. package/dist/commands/new-session.d.ts.map +1 -0
  22. package/dist/commands/new-session.js +98 -0
  23. package/dist/commands/new-session.js.map +1 -0
  24. package/dist/commands/resolve-session.d.ts +15 -0
  25. package/dist/commands/resolve-session.d.ts.map +1 -0
  26. package/dist/commands/resolve-session.js +37 -0
  27. package/dist/commands/resolve-session.js.map +1 -0
  28. package/dist/commands/send.d.ts +3 -0
  29. package/dist/commands/send.d.ts.map +1 -0
  30. package/dist/commands/send.js +67 -0
  31. package/dist/commands/send.js.map +1 -0
  32. package/dist/commands/serve.d.ts.map +1 -1
  33. package/dist/commands/serve.js +4 -3
  34. package/dist/commands/serve.js.map +1 -1
  35. package/dist/commands/setup.d.ts +0 -1
  36. package/dist/commands/setup.d.ts.map +1 -1
  37. package/dist/commands/setup.js +5 -5
  38. package/dist/commands/setup.js.map +1 -1
  39. package/dist/commands/status.d.ts +3 -0
  40. package/dist/commands/status.d.ts.map +1 -0
  41. package/dist/commands/status.js +21 -0
  42. package/dist/commands/status.js.map +1 -0
  43. package/dist/commands/tui.d.ts.map +1 -1
  44. package/dist/commands/tui.js +36 -22
  45. package/dist/commands/tui.js.map +1 -1
  46. package/dist/commands/update.d.ts +8 -0
  47. package/dist/commands/update.d.ts.map +1 -0
  48. package/dist/commands/update.js +122 -0
  49. package/dist/commands/update.js.map +1 -0
  50. package/dist/commands/wait-idle.d.ts +3 -0
  51. package/dist/commands/wait-idle.d.ts.map +1 -0
  52. package/dist/commands/wait-idle.js +66 -0
  53. package/dist/commands/wait-idle.js.map +1 -0
  54. package/dist/db/index.d.ts +1 -1
  55. package/dist/db/index.d.ts.map +1 -1
  56. package/dist/db/index.js +1 -1
  57. package/dist/db/index.js.map +1 -1
  58. package/dist/db/sessions-json.d.ts +21 -3
  59. package/dist/db/sessions-json.d.ts.map +1 -1
  60. package/dist/db/sessions-json.js +73 -19
  61. package/dist/db/sessions-json.js.map +1 -1
  62. package/dist/hooks/claude-mux-hook.js +148 -25
  63. package/dist/hooks/claude-mux-hook.js.map +1 -1
  64. package/dist/server/attachments.d.ts +26 -0
  65. package/dist/server/attachments.d.ts.map +1 -0
  66. package/dist/server/attachments.js +60 -0
  67. package/dist/server/attachments.js.map +1 -0
  68. package/dist/server/message-queue.d.ts +39 -0
  69. package/dist/server/message-queue.d.ts.map +1 -0
  70. package/dist/server/message-queue.js +143 -0
  71. package/dist/server/message-queue.js.map +1 -0
  72. package/dist/server/ws-handlers.d.ts +33 -81
  73. package/dist/server/ws-handlers.d.ts.map +1 -1
  74. package/dist/server/ws-handlers.js +320 -321
  75. package/dist/server/ws-handlers.js.map +1 -1
  76. package/dist/setup/hooks.d.ts +8 -2
  77. package/dist/setup/hooks.d.ts.map +1 -1
  78. package/dist/setup/hooks.js +48 -20
  79. package/dist/setup/hooks.js.map +1 -1
  80. package/dist/setup/wizard.d.ts +3 -1
  81. package/dist/setup/wizard.d.ts.map +1 -1
  82. package/dist/setup/wizard.js +9 -9
  83. package/dist/setup/wizard.js.map +1 -1
  84. package/dist/tmux/pane.d.ts +17 -12
  85. package/dist/tmux/pane.d.ts.map +1 -1
  86. package/dist/tmux/pane.js +60 -36
  87. package/dist/tmux/pane.js.map +1 -1
  88. package/dist/types/ws-messages.d.ts +216 -0
  89. package/dist/types/ws-messages.d.ts.map +1 -0
  90. package/dist/types/ws-messages.js +71 -0
  91. package/dist/types/ws-messages.js.map +1 -0
  92. package/dist/utils/paths.d.ts +3 -1
  93. package/dist/utils/paths.d.ts.map +1 -1
  94. package/dist/utils/paths.js +24 -3
  95. package/dist/utils/paths.js.map +1 -1
  96. package/dist/utils/slug.d.ts +3 -0
  97. package/dist/utils/slug.d.ts.map +1 -0
  98. package/dist/utils/slug.js +6 -0
  99. package/dist/utils/slug.js.map +1 -0
  100. package/dist/utils/version.d.ts +1 -1
  101. package/dist/utils/version.js +1 -1
  102. package/dist/web/client/_app/immutable/assets/0._7q2-APf.css +1 -0
  103. package/dist/web/client/_app/immutable/assets/3.luY-vLwW.css +1 -0
  104. package/dist/web/client/_app/immutable/assets/AllSessionsPanel.Chdj8GD8.css +1 -0
  105. package/dist/web/client/_app/immutable/chunks/BH3SFRWG.js +1 -0
  106. package/dist/web/client/_app/immutable/chunks/BIuG5Qqu.js +1 -0
  107. package/dist/web/client/_app/immutable/chunks/BkAy2L0f.js +69 -0
  108. package/dist/web/client/_app/immutable/chunks/CGb10hB5.js +1 -0
  109. package/dist/web/client/_app/immutable/chunks/D7LHlC1M.js +2 -0
  110. package/dist/web/client/_app/immutable/chunks/DtqyE18S.js +1 -0
  111. package/dist/web/client/_app/immutable/chunks/e3neaX0M.js +3 -0
  112. package/dist/web/client/_app/immutable/entry/app.r0-ETIJN.js +2 -0
  113. package/dist/web/client/_app/immutable/entry/start.C4mVhUwG.js +1 -0
  114. package/dist/web/client/_app/immutable/nodes/0.NP7v5jwY.js +1 -0
  115. package/dist/web/client/_app/immutable/nodes/1.CmX900J8.js +1 -0
  116. package/dist/web/client/_app/immutable/nodes/2.BQA6OZIp.js +1 -0
  117. package/dist/web/client/_app/immutable/nodes/3.bY9l1t_h.js +98 -0
  118. package/dist/web/client/_app/version.json +1 -1
  119. package/dist/web/client/favicon.svg +22 -0
  120. package/dist/web/server/chunks/0-1j1Fe_oa.js +40 -0
  121. package/dist/web/server/chunks/0-1j1Fe_oa.js.map +1 -0
  122. package/dist/web/server/chunks/{1-YRx6A8Tm.js → 1-D1dSc_vl.js} +7 -8
  123. package/dist/web/server/chunks/1-D1dSc_vl.js.map +1 -0
  124. package/dist/web/server/chunks/2-CCOk5pX2.js +19 -0
  125. package/dist/web/server/chunks/2-CCOk5pX2.js.map +1 -0
  126. package/dist/web/server/chunks/3-DFcJIcL4.js +24 -0
  127. package/dist/web/server/chunks/3-DFcJIcL4.js.map +1 -0
  128. package/dist/web/server/chunks/_layout.svelte-yoaT7ri1.js +3358 -0
  129. package/dist/web/server/chunks/_layout.svelte-yoaT7ri1.js.map +1 -0
  130. package/dist/web/server/chunks/_page.svelte-CREhk3v0.js +19 -0
  131. package/dist/web/server/chunks/_page.svelte-CREhk3v0.js.map +1 -0
  132. package/dist/web/server/chunks/_page.svelte-DtdzlL3m.js +1392 -0
  133. package/dist/web/server/chunks/_page.svelte-DtdzlL3m.js.map +1 -0
  134. package/dist/web/server/chunks/_server.ts-B-6emYlG.js +63 -0
  135. package/dist/web/server/chunks/_server.ts-B-6emYlG.js.map +1 -0
  136. package/dist/web/server/chunks/{_server.ts-Df2isGQc.js → _server.ts-B2vhCPsh.js} +6 -5
  137. package/dist/web/server/chunks/_server.ts-B2vhCPsh.js.map +1 -0
  138. package/dist/web/server/chunks/_server.ts-B4o51l3m.js +19 -0
  139. package/dist/web/server/chunks/_server.ts-B4o51l3m.js.map +1 -0
  140. package/dist/web/server/chunks/{_server.ts-BVHUS8fm.js → _server.ts-BEQA_put.js} +4 -5
  141. package/dist/web/server/chunks/{_server.ts-BVHUS8fm.js.map → _server.ts-BEQA_put.js.map} +1 -1
  142. package/dist/web/server/chunks/{_server.ts-CR0uWvpz.js → _server.ts-BUOOqQRk.js} +4 -5
  143. package/dist/web/server/chunks/{_server.ts-CR0uWvpz.js.map → _server.ts-BUOOqQRk.js.map} +1 -1
  144. package/dist/web/server/chunks/_server.ts-Bkk6XA1G.js +48 -0
  145. package/dist/web/server/chunks/_server.ts-Bkk6XA1G.js.map +1 -0
  146. package/dist/web/server/chunks/{_server.ts-BUKgRb6U.js → _server.ts-Bp8qgUhz.js} +5 -4
  147. package/dist/web/server/chunks/_server.ts-Bp8qgUhz.js.map +1 -0
  148. package/dist/web/server/chunks/_server.ts-CTIiLzg9.js +35 -0
  149. package/dist/web/server/chunks/_server.ts-CTIiLzg9.js.map +1 -0
  150. package/dist/web/server/chunks/{_server.ts-3WAmKvn2.js → _server.ts-ChuAmmhw.js} +8 -6
  151. package/dist/web/server/chunks/_server.ts-ChuAmmhw.js.map +1 -0
  152. package/dist/web/server/chunks/{_server.ts-WldRpSRi.js → _server.ts-CkC3JTyo.js} +4 -4
  153. package/dist/web/server/chunks/_server.ts-CkC3JTyo.js.map +1 -0
  154. package/dist/web/server/chunks/_server.ts-Cy0wvEJk.js +78 -0
  155. package/dist/web/server/chunks/_server.ts-Cy0wvEJk.js.map +1 -0
  156. package/dist/web/server/chunks/{_server.ts-CDAUUmG_.js → _server.ts-D0ylgRRV.js} +4 -5
  157. package/dist/web/server/chunks/{_server.ts-CDAUUmG_.js.map → _server.ts-D0ylgRRV.js.map} +1 -1
  158. package/dist/web/server/chunks/{_server.ts-DdbOAkOj.js → _server.ts-DIhiJl4f.js} +7 -7
  159. package/dist/web/server/chunks/_server.ts-DIhiJl4f.js.map +1 -0
  160. package/dist/web/server/chunks/_server.ts-DK7C_rXn.js +93 -0
  161. package/dist/web/server/chunks/_server.ts-DK7C_rXn.js.map +1 -0
  162. package/dist/web/server/chunks/{_server.ts-BAWJCSFb.js → _server.ts-DLI_Pwvd.js} +3 -4
  163. package/dist/web/server/chunks/{_server.ts-BAWJCSFb.js.map → _server.ts-DLI_Pwvd.js.map} +1 -1
  164. package/dist/web/server/chunks/_server.ts-Dj_iwP-Z.js +59 -0
  165. package/dist/web/server/chunks/_server.ts-Dj_iwP-Z.js.map +1 -0
  166. package/dist/web/server/chunks/{_server.ts-C4oPmOJR.js → _server.ts-DyeW0P3w.js} +3 -4
  167. package/dist/web/server/chunks/_server.ts-DyeW0P3w.js.map +1 -0
  168. package/dist/web/server/chunks/_server.ts-ZObkLZOS.js +25 -0
  169. package/dist/web/server/chunks/_server.ts-ZObkLZOS.js.map +1 -0
  170. package/dist/web/server/chunks/_server.ts-eFJEOOS1.js +45 -0
  171. package/dist/web/server/chunks/_server.ts-eFJEOOS1.js.map +1 -0
  172. package/dist/web/server/chunks/agents-rTKwF5qh.js +42 -0
  173. package/dist/web/server/chunks/agents-rTKwF5qh.js.map +1 -0
  174. package/dist/web/server/chunks/attachments-B8VMrOm4.js +42 -0
  175. package/dist/web/server/chunks/attachments-B8VMrOm4.js.map +1 -0
  176. package/dist/web/server/chunks/button-BKSlzQeg.js +8309 -0
  177. package/dist/web/server/chunks/button-BKSlzQeg.js.map +1 -0
  178. package/dist/web/server/chunks/{chunks-DmdqVYC7.js → chunks-DLJ18IUO.js} +3 -4
  179. package/dist/web/server/chunks/chunks-DLJ18IUO.js.map +1 -0
  180. package/dist/web/server/chunks/{client-CUrSQijh.js → client-Dnt8rmsr.js} +5 -4
  181. package/dist/web/server/chunks/client-Dnt8rmsr.js.map +1 -0
  182. package/dist/web/server/chunks/constants-CZFdiL46.js +10 -0
  183. package/dist/web/server/chunks/constants-CZFdiL46.js.map +1 -0
  184. package/dist/web/server/chunks/{error.svelte-D-c-9pTE.js → error.svelte-VCYDSS3H.js} +5 -7
  185. package/dist/web/server/chunks/error.svelte-VCYDSS3H.js.map +1 -0
  186. package/dist/web/server/chunks/{exports-CCurQ-Tl.js → exports-DLCVjVJM.js} +13 -34
  187. package/dist/web/server/chunks/exports-DLCVjVJM.js.map +1 -0
  188. package/dist/web/server/chunks/{hooks.server-BK1bopsh.js → hooks.server-CzdMWOsb.js} +11 -28
  189. package/dist/web/server/chunks/hooks.server-CzdMWOsb.js.map +1 -0
  190. package/dist/web/server/chunks/{internal-DLENj6YI.js → internal-CwN2I5C2.js} +8 -3
  191. package/dist/web/server/chunks/internal-CwN2I5C2.js.map +1 -0
  192. package/dist/web/server/chunks/message-queue-BhryIx7W.js +119 -0
  193. package/dist/web/server/chunks/message-queue-BhryIx7W.js.map +1 -0
  194. package/dist/web/server/chunks/popover-trigger-BQJRZ2Xv.js +5659 -0
  195. package/dist/web/server/chunks/popover-trigger-BQJRZ2Xv.js.map +1 -0
  196. package/dist/web/server/chunks/root-L_UzGTpb.js +4238 -0
  197. package/dist/web/server/chunks/root-L_UzGTpb.js.map +1 -0
  198. package/dist/web/server/chunks/{sessions-json-DgfkCLO7.js → sessions-json-w9KPwiDl.js} +79 -23
  199. package/dist/web/server/chunks/sessions-json-w9KPwiDl.js.map +1 -0
  200. package/dist/web/server/chunks/shared-server-CB2NTyFt.js +13 -0
  201. package/dist/web/server/chunks/shared-server-CB2NTyFt.js.map +1 -0
  202. package/dist/web/server/chunks/state.svelte-DM05ho1v.js +8 -0
  203. package/dist/web/server/chunks/state.svelte-DM05ho1v.js.map +1 -0
  204. package/dist/web/server/chunks/{ws-handlers-B4r5eSP2.js → ws-handlers-B_p_71BD.js} +346 -268
  205. package/dist/web/server/chunks/ws-handlers-B_p_71BD.js.map +1 -0
  206. package/dist/web/server/chunks/ws-managers-B0N9UU0g.js +12 -0
  207. package/dist/web/server/chunks/ws-managers-B0N9UU0g.js.map +1 -0
  208. package/dist/web/server/index.js +1226 -1718
  209. package/dist/web/server/index.js.map +1 -1
  210. package/dist/web/server/manifest.js +98 -62
  211. package/dist/web/server/manifest.js.map +1 -1
  212. package/docs/adr/0001-attachments-stored-in-home-dir.md +45 -0
  213. package/docs/adr/0002-attachment-files-deleted-only-on-session-kill.md +47 -0
  214. package/docs/images/desktop-dashboard.png +0 -0
  215. package/docs/images/desktop-session.png +0 -0
  216. package/docs/images/mobile-dashboard.png +0 -0
  217. package/docs/images/mobile-session.png +0 -0
  218. package/docs/release-checklist.md +8 -34
  219. package/docs/removing-hooks.md +14 -14
  220. package/package.json +6 -4
  221. package/scripts/install.sh +85 -0
  222. package/src/agents.ts +39 -0
  223. package/src/cli.ts +16 -2
  224. package/src/commands/capture.ts +38 -0
  225. package/src/commands/index.ts +7 -0
  226. package/src/commands/new-session.ts +114 -0
  227. package/src/commands/resolve-session.ts +42 -0
  228. package/src/commands/send.ts +81 -0
  229. package/src/commands/serve.ts +5 -3
  230. package/src/commands/setup.ts +5 -6
  231. package/src/commands/status.ts +24 -0
  232. package/src/commands/tui.ts +39 -22
  233. package/src/commands/update.ts +134 -0
  234. package/src/commands/wait-idle.ts +84 -0
  235. package/src/db/index.ts +5 -0
  236. package/src/db/sessions-json.ts +87 -21
  237. package/src/hooks/claude-mux-hook.ts +158 -30
  238. package/src/server/attachments.ts +64 -0
  239. package/src/server/message-queue.ts +176 -0
  240. package/src/server/ws-handlers.ts +352 -405
  241. package/src/setup/hooks.ts +58 -22
  242. package/src/setup/wizard.ts +9 -9
  243. package/src/tmux/pane.ts +71 -37
  244. package/src/types/ws-messages.ts +87 -0
  245. package/src/utils/paths.ts +24 -4
  246. package/src/utils/slug.ts +6 -0
  247. package/src/utils/version.ts +1 -1
  248. package/steamdeck/build/icon-1024.png +0 -0
  249. package/steamdeck/build/icon.png +0 -0
  250. package/steamdeck/main.js +35 -0
  251. package/steamdeck/package.json +46 -0
  252. package/steamdeck/scripts/release.ts +36 -0
  253. package/web/.env.example +4 -0
  254. package/web/.svelte-kit/adapter-bun/.vite/manifest.json +180 -161
  255. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/AllSessionsPanel.hZMOJZyZ.css +1 -0
  256. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_layout.OA9bot5w.css +1 -0
  257. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.luY-vLwW.css +1 -0
  258. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.s6Kx4oz1.css +1 -0
  259. package/web/.svelte-kit/adapter-bun/chunks/agents.js +32 -0
  260. package/web/.svelte-kit/adapter-bun/chunks/attachments.js +38 -0
  261. package/web/.svelte-kit/adapter-bun/chunks/button.js +422 -4
  262. package/web/.svelte-kit/adapter-bun/chunks/client.js +1 -0
  263. package/web/.svelte-kit/adapter-bun/chunks/constants.js +9 -0
  264. package/web/.svelte-kit/adapter-bun/chunks/environment.js +3 -3
  265. package/web/.svelte-kit/adapter-bun/chunks/exports.js +9 -9
  266. package/web/.svelte-kit/adapter-bun/chunks/index.js +1 -2
  267. package/web/.svelte-kit/adapter-bun/chunks/internal.js +7 -800
  268. package/web/.svelte-kit/adapter-bun/chunks/message-queue.js +114 -0
  269. package/web/.svelte-kit/adapter-bun/chunks/popover-trigger.js +6801 -0
  270. package/web/.svelte-kit/adapter-bun/chunks/render-context.js +602 -0
  271. package/web/.svelte-kit/{output/server/chunks/index2.js → adapter-bun/chunks/root.js} +2231 -727
  272. package/web/.svelte-kit/adapter-bun/chunks/sessions-json.js +87 -22
  273. package/web/.svelte-kit/adapter-bun/chunks/shared-server.js +14 -0
  274. package/web/.svelte-kit/adapter-bun/chunks/shared.js +993 -53
  275. package/web/.svelte-kit/adapter-bun/chunks/state.svelte.js +4 -2
  276. package/web/.svelte-kit/adapter-bun/chunks/utils.js +3 -5
  277. package/web/.svelte-kit/adapter-bun/chunks/ws-handlers.js +380 -299
  278. package/web/.svelte-kit/adapter-bun/chunks/ws-managers.js +12 -0
  279. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/health/_server.ts.js +2 -1
  280. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/projects/new-session/_server.ts.js +65 -25
  281. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/servers/discover/_server.ts.js +50 -0
  282. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/_server.ts.js +1 -1
  283. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/attach/_server.ts.js +74 -0
  284. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +4 -1
  285. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/queue/_server.ts.js +65 -0
  286. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/rename/_server.ts.js +32 -0
  287. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +2 -0
  288. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +1 -1
  289. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/send/_server.ts.js +31 -13
  290. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/voice/_server.ts.js +86 -0
  291. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_server.ts.js +4 -36
  292. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_target_/output/_server.ts.js +1 -1
  293. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/tmux/panes/_server.ts.js +3 -3
  294. package/web/.svelte-kit/adapter-bun/entries/endpoints/downloads/_file_/_server.ts.js +20 -0
  295. package/web/.svelte-kit/adapter-bun/entries/fallbacks/error.svelte.js +1 -1
  296. package/web/.svelte-kit/adapter-bun/entries/hooks.server.js +9 -29
  297. package/web/.svelte-kit/adapter-bun/entries/pages/_layout.server.ts.js +9 -0
  298. package/web/.svelte-kit/adapter-bun/entries/pages/_layout.svelte.js +3588 -369
  299. package/web/.svelte-kit/adapter-bun/entries/pages/_page.svelte.js +13 -3045
  300. package/web/.svelte-kit/adapter-bun/entries/pages/session/_target_/_page.svelte.js +1186 -455
  301. package/web/.svelte-kit/adapter-bun/entries/pages/session/_target_/_page.ts.js +4 -0
  302. package/web/.svelte-kit/adapter-bun/index.js +892 -472
  303. package/web/.svelte-kit/adapter-bun/internal.js +9 -7
  304. package/web/.svelte-kit/adapter-bun/manifest-full.js +45 -32
  305. package/web/.svelte-kit/adapter-bun/manifest.js +45 -32
  306. package/web/.svelte-kit/adapter-bun/nodes/0.js +5 -3
  307. package/web/.svelte-kit/adapter-bun/nodes/1.js +1 -1
  308. package/web/.svelte-kit/adapter-bun/nodes/2.js +2 -2
  309. package/web/.svelte-kit/adapter-bun/nodes/3.js +9 -6
  310. package/web/.svelte-kit/adapter-bun/remote-entry.js +530 -131
  311. package/web/.svelte-kit/ambient.d.ts +347 -62
  312. package/web/.svelte-kit/generated/client/app.js +3 -5
  313. package/web/.svelte-kit/generated/client/nodes/1.js +1 -1
  314. package/web/.svelte-kit/generated/client/nodes/3.js +3 -1
  315. package/web/.svelte-kit/generated/client-optimized/app.js +3 -5
  316. package/web/.svelte-kit/generated/client-optimized/nodes/1.js +1 -1
  317. package/web/.svelte-kit/generated/client-optimized/nodes/3.js +3 -1
  318. package/web/.svelte-kit/generated/server/internal.js +4 -3
  319. package/web/.svelte-kit/non-ambient.d.ts +19 -9
  320. package/web/.svelte-kit/output/client/.vite/manifest.json +73 -121
  321. package/web/.svelte-kit/output/client/_app/immutable/assets/0._7q2-APf.css +1 -0
  322. package/web/.svelte-kit/output/client/_app/immutable/assets/3.luY-vLwW.css +1 -0
  323. package/web/.svelte-kit/output/client/_app/immutable/assets/AllSessionsPanel.Chdj8GD8.css +1 -0
  324. package/web/.svelte-kit/output/client/_app/immutable/chunks/BH3SFRWG.js +1 -0
  325. package/web/.svelte-kit/output/client/_app/immutable/chunks/BIuG5Qqu.js +1 -0
  326. package/web/.svelte-kit/output/client/_app/immutable/chunks/BkAy2L0f.js +69 -0
  327. package/web/.svelte-kit/output/client/_app/immutable/chunks/CGb10hB5.js +1 -0
  328. package/web/.svelte-kit/output/client/_app/immutable/chunks/D7LHlC1M.js +2 -0
  329. package/web/.svelte-kit/output/client/_app/immutable/chunks/DtqyE18S.js +1 -0
  330. package/web/.svelte-kit/output/client/_app/immutable/chunks/e3neaX0M.js +3 -0
  331. package/web/.svelte-kit/output/client/_app/immutable/entry/app.r0-ETIJN.js +2 -0
  332. package/web/.svelte-kit/output/client/_app/immutable/entry/start.C4mVhUwG.js +1 -0
  333. package/web/.svelte-kit/output/client/_app/immutable/nodes/0.NP7v5jwY.js +1 -0
  334. package/web/.svelte-kit/output/client/_app/immutable/nodes/1.CmX900J8.js +1 -0
  335. package/web/.svelte-kit/output/client/_app/immutable/nodes/2.BQA6OZIp.js +1 -0
  336. package/web/.svelte-kit/output/client/_app/immutable/nodes/3.bY9l1t_h.js +98 -0
  337. package/web/.svelte-kit/output/client/_app/version.json +1 -1
  338. package/web/.svelte-kit/output/client/favicon.svg +22 -0
  339. package/web/.svelte-kit/output/server/.vite/manifest.json +180 -161
  340. package/web/.svelte-kit/output/server/_app/immutable/assets/AllSessionsPanel.hZMOJZyZ.css +1 -0
  341. package/web/.svelte-kit/output/server/_app/immutable/assets/_layout.OA9bot5w.css +1 -0
  342. package/web/.svelte-kit/output/server/_app/immutable/assets/_page.luY-vLwW.css +1 -0
  343. package/web/.svelte-kit/output/server/_app/immutable/assets/_page.s6Kx4oz1.css +1 -0
  344. package/web/.svelte-kit/output/server/chunks/agents.js +32 -0
  345. package/web/.svelte-kit/output/server/chunks/attachments.js +38 -0
  346. package/web/.svelte-kit/output/server/chunks/button.js +422 -4
  347. package/web/.svelte-kit/output/server/chunks/client.js +1 -0
  348. package/web/.svelte-kit/output/server/chunks/constants.js +9 -0
  349. package/web/.svelte-kit/output/server/chunks/environment.js +3 -3
  350. package/web/.svelte-kit/output/server/chunks/exports.js +9 -9
  351. package/web/.svelte-kit/output/server/chunks/index.js +1 -2
  352. package/web/.svelte-kit/output/server/chunks/internal.js +7 -800
  353. package/web/.svelte-kit/output/server/chunks/message-queue.js +114 -0
  354. package/web/.svelte-kit/output/server/chunks/popover-trigger.js +6801 -0
  355. package/web/.svelte-kit/output/server/chunks/render-context.js +602 -0
  356. package/web/.svelte-kit/{adapter-bun/chunks/index2.js → output/server/chunks/root.js} +2231 -727
  357. package/web/.svelte-kit/output/server/chunks/sessions-json.js +87 -22
  358. package/web/.svelte-kit/output/server/chunks/shared-server.js +14 -0
  359. package/web/.svelte-kit/output/server/chunks/shared.js +993 -53
  360. package/web/.svelte-kit/output/server/chunks/state.svelte.js +4 -2
  361. package/web/.svelte-kit/output/server/chunks/utils.js +3 -5
  362. package/web/.svelte-kit/output/server/chunks/ws-handlers.js +380 -299
  363. package/web/.svelte-kit/output/server/chunks/ws-managers.js +12 -0
  364. package/web/.svelte-kit/output/server/entries/endpoints/api/health/_server.ts.js +2 -1
  365. package/web/.svelte-kit/output/server/entries/endpoints/api/projects/new-session/_server.ts.js +65 -25
  366. package/web/.svelte-kit/output/server/entries/endpoints/api/servers/discover/_server.ts.js +50 -0
  367. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/_server.ts.js +1 -1
  368. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/attach/_server.ts.js +74 -0
  369. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +4 -1
  370. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/queue/_server.ts.js +65 -0
  371. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/rename/_server.ts.js +32 -0
  372. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +2 -0
  373. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +1 -1
  374. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/send/_server.ts.js +31 -13
  375. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/voice/_server.ts.js +86 -0
  376. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_server.ts.js +4 -36
  377. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_target_/output/_server.ts.js +1 -1
  378. package/web/.svelte-kit/output/server/entries/endpoints/api/tmux/panes/_server.ts.js +3 -3
  379. package/web/.svelte-kit/output/server/entries/endpoints/downloads/_file_/_server.ts.js +20 -0
  380. package/web/.svelte-kit/output/server/entries/fallbacks/error.svelte.js +1 -1
  381. package/web/.svelte-kit/output/server/entries/hooks.server.js +9 -29
  382. package/web/.svelte-kit/output/server/entries/pages/_layout.server.ts.js +9 -0
  383. package/web/.svelte-kit/output/server/entries/pages/_layout.svelte.js +3588 -369
  384. package/web/.svelte-kit/output/server/entries/pages/_page.svelte.js +13 -3045
  385. package/web/.svelte-kit/output/server/entries/pages/session/_target_/_page.svelte.js +1186 -455
  386. package/web/.svelte-kit/output/server/entries/pages/session/_target_/_page.ts.js +4 -0
  387. package/web/.svelte-kit/output/server/index.js +892 -472
  388. package/web/.svelte-kit/output/server/internal.js +9 -7
  389. package/web/.svelte-kit/output/server/manifest-full.js +45 -32
  390. package/web/.svelte-kit/output/server/manifest.js +45 -32
  391. package/web/.svelte-kit/output/server/nodes/0.js +5 -3
  392. package/web/.svelte-kit/output/server/nodes/1.js +1 -1
  393. package/web/.svelte-kit/output/server/nodes/2.js +2 -2
  394. package/web/.svelte-kit/output/server/nodes/3.js +9 -6
  395. package/web/.svelte-kit/output/server/remote-entry.js +530 -131
  396. package/web/.svelte-kit/tsconfig.json +7 -1
  397. package/web/.svelte-kit/types/route_meta_data.json +24 -12
  398. package/web/.svelte-kit/types/src/routes/$types.d.ts +9 -6
  399. package/web/.svelte-kit/types/src/routes/api/browse/$types.d.ts +1 -2
  400. package/web/.svelte-kit/types/src/routes/api/chrome/$types.d.ts +1 -2
  401. package/web/.svelte-kit/types/src/routes/api/files/image/$types.d.ts +1 -2
  402. package/web/.svelte-kit/types/src/routes/api/health/$types.d.ts +1 -2
  403. package/web/.svelte-kit/types/src/routes/api/projects/new-session/$types.d.ts +1 -2
  404. package/web/.svelte-kit/types/src/routes/api/{beads → servers/discover}/$types.d.ts +2 -3
  405. package/web/.svelte-kit/types/src/routes/api/sessions/$types.d.ts +1 -2
  406. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/$types.d.ts +1 -2
  407. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/attach/$types.d.ts +10 -0
  408. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/kill/$types.d.ts +1 -2
  409. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/queue/$types.d.ts +10 -0
  410. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/rename/$types.d.ts +10 -0
  411. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/restart/$types.d.ts +1 -2
  412. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/screenshots/$types.d.ts +1 -2
  413. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/send/$types.d.ts +1 -2
  414. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/voice/$types.d.ts +10 -0
  415. package/web/.svelte-kit/types/src/routes/api/sessions/[target]/output/$types.d.ts +1 -2
  416. package/web/.svelte-kit/types/src/routes/api/tmux/panes/$types.d.ts +1 -2
  417. package/web/.svelte-kit/types/src/routes/downloads/[file]/$types.d.ts +10 -0
  418. package/web/.svelte-kit/types/src/routes/proxy+layout.server.ts +10 -0
  419. package/web/.svelte-kit/types/src/routes/session/[target]/$types.d.ts +4 -3
  420. package/web/package.json +3 -1
  421. package/web/src/app.html +1 -0
  422. package/web/src/hooks.server.ts +12 -46
  423. package/web/src/lib/actions/clickOutside.ts +61 -0
  424. package/web/src/lib/actions/longPress.ts +90 -0
  425. package/web/src/lib/components/AllSessionsPanel.svelte +666 -343
  426. package/web/src/lib/components/MessageQueuePanel.svelte +225 -0
  427. package/web/src/lib/components/ScreenshotsPanel.svelte +38 -95
  428. package/web/src/lib/components/ServerPicker.svelte +209 -0
  429. package/web/src/lib/components/SidebarAccordion.svelte +123 -0
  430. package/web/src/lib/components/SystemStatsWidget.svelte +121 -0
  431. package/web/src/lib/components/TerminalRenderer.svelte +69 -157
  432. package/web/src/lib/components/VoiceButton.svelte +525 -0
  433. package/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +1 -1
  434. package/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
  435. package/web/src/lib/components/ui/dialog/dialog-content.svelte +1 -1
  436. package/web/src/lib/components/ui/dialog/dialog-overlay.svelte +1 -1
  437. package/web/src/lib/components/ui/popover/index.ts +19 -0
  438. package/web/src/lib/components/ui/popover/popover-close.svelte +7 -0
  439. package/web/src/lib/components/ui/popover/popover-content.svelte +31 -0
  440. package/web/src/lib/components/ui/popover/popover-portal.svelte +7 -0
  441. package/web/src/lib/components/ui/popover/popover-trigger.svelte +17 -0
  442. package/web/src/lib/components/ui/popover/popover.svelte +7 -0
  443. package/web/src/lib/constants.ts +6 -0
  444. package/web/src/lib/gamepad.svelte.ts +182 -0
  445. package/web/src/lib/server/voice/index.ts +1 -0
  446. package/web/src/lib/server/voice/whisper.ts +70 -0
  447. package/web/src/lib/server/ws-managers.ts +21 -0
  448. package/web/src/lib/stores/drafts.svelte.ts +47 -0
  449. package/web/src/lib/stores/persisted.ts +43 -0
  450. package/web/src/lib/stores/preferences.svelte.ts +20 -31
  451. package/web/src/lib/stores/servers.svelte.ts +49 -0
  452. package/web/src/lib/stores/sessions.svelte.ts +194 -14
  453. package/web/src/lib/stores/sidebarActions.svelte.ts +42 -0
  454. package/web/src/lib/stores/terminal.svelte.ts +62 -33
  455. package/web/src/lib/stores/tmuxPanes.svelte.ts +78 -0
  456. package/web/src/lib/stores/voice.svelte.ts +287 -0
  457. package/web/src/lib/types/servers.ts +10 -0
  458. package/web/src/lib/types/tmux.ts +6 -0
  459. package/web/src/lib/voice/recorder.ts +223 -0
  460. package/web/src/lib/wakeLock.svelte.ts +41 -0
  461. package/web/src/routes/+layout.server.ts +8 -0
  462. package/web/src/routes/+layout.svelte +91 -195
  463. package/web/src/routes/+page.svelte +47 -3
  464. package/web/src/routes/api/health/+server.ts +2 -1
  465. package/web/src/routes/api/projects/new-session/+server.ts +69 -27
  466. package/web/src/routes/api/servers/discover/+server.ts +72 -0
  467. package/web/src/routes/api/sessions/+server.ts +4 -50
  468. package/web/src/routes/api/sessions/[id]/attach/+server.ts +88 -0
  469. package/web/src/routes/api/sessions/[id]/kill/+server.ts +5 -2
  470. package/web/src/routes/api/sessions/[id]/queue/+server.ts +69 -0
  471. package/web/src/routes/api/sessions/[id]/rename/+server.ts +33 -0
  472. package/web/src/routes/api/sessions/[id]/restart/+server.ts +2 -0
  473. package/web/src/routes/api/sessions/[id]/send/+server.ts +45 -15
  474. package/web/src/routes/api/sessions/[id]/voice/+server.ts +46 -0
  475. package/web/src/routes/api/sessions/[target]/output/+server.ts +1 -1
  476. package/web/src/routes/api/tmux/panes/+server.ts +5 -8
  477. package/web/src/routes/downloads/[file]/+server.ts +25 -0
  478. package/web/src/routes/session/[target]/+page.svelte +1375 -124
  479. package/web/src/routes/session/[target]/+page.ts +1 -0
  480. package/web/static/favicon.svg +22 -0
  481. package/web/vite.config.ts +13 -29
  482. package/.beads/README.md +0 -81
  483. package/.beads/config.yaml +0 -62
  484. package/.beads/interactions.jsonl +0 -0
  485. package/.beads/issues.jsonl +0 -5
  486. package/.beads/metadata.json +0 -4
  487. package/PLAN-beads-integration.md +0 -250
  488. package/dist/db/schema.d.ts +0 -4
  489. package/dist/db/schema.d.ts.map +0 -1
  490. package/dist/db/schema.js +0 -23
  491. package/dist/db/schema.js.map +0 -1
  492. package/dist/db/sessions.d.ts +0 -38
  493. package/dist/db/sessions.d.ts.map +0 -1
  494. package/dist/db/sessions.js +0 -87
  495. package/dist/db/sessions.js.map +0 -1
  496. package/dist/hooks/claude-watch-hook.d.ts +0 -15
  497. package/dist/hooks/claude-watch-hook.d.ts.map +0 -1
  498. package/dist/hooks/claude-watch-hook.js +0 -396
  499. package/dist/hooks/claude-watch-hook.js.map +0 -1
  500. package/dist/server/custom-server.d.ts +0 -13
  501. package/dist/server/custom-server.d.ts.map +0 -1
  502. package/dist/server/custom-server.js +0 -63
  503. package/dist/server/custom-server.js.map +0 -1
  504. package/dist/server/index.d.ts +0 -9
  505. package/dist/server/index.d.ts.map +0 -1
  506. package/dist/server/index.js +0 -1143
  507. package/dist/server/index.js.map +0 -1
  508. package/dist/server/middleware/cors.d.ts +0 -2
  509. package/dist/server/middleware/cors.d.ts.map +0 -1
  510. package/dist/server/middleware/cors.js +0 -11
  511. package/dist/server/middleware/cors.js.map +0 -1
  512. package/dist/server/routes/sessions.d.ts +0 -3
  513. package/dist/server/routes/sessions.d.ts.map +0 -1
  514. package/dist/server/routes/sessions.js +0 -78
  515. package/dist/server/routes/sessions.js.map +0 -1
  516. package/dist/server/routes/stream.d.ts +0 -3
  517. package/dist/server/routes/stream.d.ts.map +0 -1
  518. package/dist/server/routes/stream.js +0 -45
  519. package/dist/server/routes/stream.js.map +0 -1
  520. package/dist/server/types.d.ts +0 -28
  521. package/dist/server/types.d.ts.map +0 -1
  522. package/dist/server/types.js +0 -2
  523. package/dist/server/types.js.map +0 -1
  524. package/dist/server/websocket.d.ts +0 -51
  525. package/dist/server/websocket.d.ts.map +0 -1
  526. package/dist/server/websocket.js +0 -156
  527. package/dist/server/websocket.js.map +0 -1
  528. package/dist/web/client/_app/immutable/assets/0.WptSHSUl.css +0 -1
  529. package/dist/web/client/_app/immutable/assets/4.DoNWy7tW.css +0 -1
  530. package/dist/web/client/_app/immutable/assets/AllSessionsPanel.CGHY3HLy.css +0 -1
  531. package/dist/web/client/_app/immutable/chunks/-3mUPuLP.js +0 -1
  532. package/dist/web/client/_app/immutable/chunks/B5U4_V3d.js +0 -1
  533. package/dist/web/client/_app/immutable/chunks/BHwiZXRv.js +0 -1
  534. package/dist/web/client/_app/immutable/chunks/C9P-coqM.js +0 -1
  535. package/dist/web/client/_app/immutable/chunks/Cegv0r8x.js +0 -1
  536. package/dist/web/client/_app/immutable/chunks/DU91Ml7U.js +0 -3
  537. package/dist/web/client/_app/immutable/chunks/DmdO6ygw.js +0 -1
  538. package/dist/web/client/_app/immutable/chunks/HKNo9LID.js +0 -5
  539. package/dist/web/client/_app/immutable/chunks/U4ip-C0d.js +0 -2
  540. package/dist/web/client/_app/immutable/chunks/cgUjKIhX.js +0 -2
  541. package/dist/web/client/_app/immutable/entry/app.CGIBnoln.js +0 -2
  542. package/dist/web/client/_app/immutable/entry/start.CJk8zB1j.js +0 -1
  543. package/dist/web/client/_app/immutable/nodes/0.CqlJ9a31.js +0 -1
  544. package/dist/web/client/_app/immutable/nodes/1.BQUZh2-w.js +0 -1
  545. package/dist/web/client/_app/immutable/nodes/2.CCV1YdgF.js +0 -1
  546. package/dist/web/client/_app/immutable/nodes/3.D9tDCdq8.js +0 -1
  547. package/dist/web/client/_app/immutable/nodes/4.BqPyNkFA.js +0 -6
  548. package/dist/web/server/chunks/0-BHWsmCJv.js +0 -23
  549. package/dist/web/server/chunks/0-BHWsmCJv.js.map +0 -1
  550. package/dist/web/server/chunks/1-YRx6A8Tm.js.map +0 -1
  551. package/dist/web/server/chunks/2-eC6JuGAo.js +0 -22
  552. package/dist/web/server/chunks/2-eC6JuGAo.js.map +0 -1
  553. package/dist/web/server/chunks/3-Bk-wV20p.js +0 -32
  554. package/dist/web/server/chunks/3-Bk-wV20p.js.map +0 -1
  555. package/dist/web/server/chunks/4-nteBgDrW.js +0 -21
  556. package/dist/web/server/chunks/4-nteBgDrW.js.map +0 -1
  557. package/dist/web/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang-Bt4B0-oi.js +0 -35
  558. package/dist/web/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang-Bt4B0-oi.js.map +0 -1
  559. package/dist/web/server/chunks/_layout.svelte-BIF9eZCY.js +0 -453
  560. package/dist/web/server/chunks/_layout.svelte-BIF9eZCY.js.map +0 -1
  561. package/dist/web/server/chunks/_page.svelte-Be6iabRn.js +0 -34
  562. package/dist/web/server/chunks/_page.svelte-Be6iabRn.js.map +0 -1
  563. package/dist/web/server/chunks/_page.svelte-C_fGJVSE.js +0 -576
  564. package/dist/web/server/chunks/_page.svelte-C_fGJVSE.js.map +0 -1
  565. package/dist/web/server/chunks/_page.svelte-CnfJk6cu.js +0 -2722
  566. package/dist/web/server/chunks/_page.svelte-CnfJk6cu.js.map +0 -1
  567. package/dist/web/server/chunks/_server.ts-3WAmKvn2.js.map +0 -1
  568. package/dist/web/server/chunks/_server.ts-BPpMOZCm.js +0 -24
  569. package/dist/web/server/chunks/_server.ts-BPpMOZCm.js.map +0 -1
  570. package/dist/web/server/chunks/_server.ts-BUKgRb6U.js.map +0 -1
  571. package/dist/web/server/chunks/_server.ts-BrF3od0O.js +0 -45
  572. package/dist/web/server/chunks/_server.ts-BrF3od0O.js.map +0 -1
  573. package/dist/web/server/chunks/_server.ts-C4oPmOJR.js.map +0 -1
  574. package/dist/web/server/chunks/_server.ts-CSqdCNGi.js +0 -21
  575. package/dist/web/server/chunks/_server.ts-CSqdCNGi.js.map +0 -1
  576. package/dist/web/server/chunks/_server.ts-DI9fzUo9.js +0 -52
  577. package/dist/web/server/chunks/_server.ts-DI9fzUo9.js.map +0 -1
  578. package/dist/web/server/chunks/_server.ts-DNjJTClI.js +0 -46
  579. package/dist/web/server/chunks/_server.ts-DNjJTClI.js.map +0 -1
  580. package/dist/web/server/chunks/_server.ts-DdbOAkOj.js.map +0 -1
  581. package/dist/web/server/chunks/_server.ts-Df2isGQc.js.map +0 -1
  582. package/dist/web/server/chunks/_server.ts-Vpw25_-3.js +0 -12
  583. package/dist/web/server/chunks/_server.ts-Vpw25_-3.js.map +0 -1
  584. package/dist/web/server/chunks/_server.ts-WldRpSRi.js.map +0 -1
  585. package/dist/web/server/chunks/alert-dialog-description-DDA6u-nS.js +0 -2890
  586. package/dist/web/server/chunks/alert-dialog-description-DDA6u-nS.js.map +0 -1
  587. package/dist/web/server/chunks/auth-DrUf-v4J.js +0 -51
  588. package/dist/web/server/chunks/auth-DrUf-v4J.js.map +0 -1
  589. package/dist/web/server/chunks/button-D6xS9rHt.js +0 -2335
  590. package/dist/web/server/chunks/button-D6xS9rHt.js.map +0 -1
  591. package/dist/web/server/chunks/chunk-EKzHsMy_.js +0 -42
  592. package/dist/web/server/chunks/chunks-DmdqVYC7.js.map +0 -1
  593. package/dist/web/server/chunks/client-CUrSQijh.js.map +0 -1
  594. package/dist/web/server/chunks/clsx-FzI4_gi0.js +0 -332
  595. package/dist/web/server/chunks/clsx-FzI4_gi0.js.map +0 -1
  596. package/dist/web/server/chunks/error.svelte-D-c-9pTE.js.map +0 -1
  597. package/dist/web/server/chunks/events-BDBlYddw.js +0 -89
  598. package/dist/web/server/chunks/events-BDBlYddw.js.map +0 -1
  599. package/dist/web/server/chunks/exports-CCurQ-Tl.js.map +0 -1
  600. package/dist/web/server/chunks/hooks.server-BK1bopsh.js.map +0 -1
  601. package/dist/web/server/chunks/index2-BQnysSj-.js +0 -2588
  602. package/dist/web/server/chunks/index2-BQnysSj-.js.map +0 -1
  603. package/dist/web/server/chunks/internal-DLENj6YI.js.map +0 -1
  604. package/dist/web/server/chunks/pane-Dg3pKvsm.js +0 -94
  605. package/dist/web/server/chunks/pane-Dg3pKvsm.js.map +0 -1
  606. package/dist/web/server/chunks/sessions-json-DgfkCLO7.js.map +0 -1
  607. package/dist/web/server/chunks/sessions.svelte-Ds82MvkB.js +0 -178
  608. package/dist/web/server/chunks/sessions.svelte-Ds82MvkB.js.map +0 -1
  609. package/dist/web/server/chunks/state.svelte-xeAZvWZ6.js +0 -7
  610. package/dist/web/server/chunks/state.svelte-xeAZvWZ6.js.map +0 -1
  611. package/dist/web/server/chunks/ws-handlers-B4r5eSP2.js.map +0 -1
  612. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +0 -1
  613. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_layout.WptSHSUl.css +0 -1
  614. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.DldLgTc-.css +0 -1
  615. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.DoNWy7tW.css +0 -1
  616. package/web/.svelte-kit/adapter-bun/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +0 -49
  617. package/web/.svelte-kit/adapter-bun/chunks/alert-dialog-description.js +0 -2670
  618. package/web/.svelte-kit/adapter-bun/chunks/auth.js +0 -59
  619. package/web/.svelte-kit/adapter-bun/chunks/context.js +0 -133
  620. package/web/.svelte-kit/adapter-bun/chunks/events.js +0 -121
  621. package/web/.svelte-kit/adapter-bun/chunks/false.js +0 -4
  622. package/web/.svelte-kit/adapter-bun/chunks/pane.js +0 -82
  623. package/web/.svelte-kit/adapter-bun/chunks/sessions.svelte.js +0 -229
  624. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/auth/login/_server.ts.js +0 -22
  625. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/auth/logout/_server.ts.js +0 -9
  626. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/beads/_server.ts.js +0 -22
  627. package/web/.svelte-kit/adapter-bun/entries/pages/login/_page.server.ts.js +0 -15
  628. package/web/.svelte-kit/adapter-bun/entries/pages/login/_page.svelte.js +0 -37
  629. package/web/.svelte-kit/adapter-bun/nodes/4.js +0 -8
  630. package/web/.svelte-kit/adapter-node/.vite/manifest.json +0 -223
  631. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_layout.4NiX29PU.css +0 -1
  632. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.BEMzYUGV.css +0 -1
  633. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOJn7TG7.css +0 -1
  634. package/web/.svelte-kit/adapter-node/chunks/context.js +0 -121
  635. package/web/.svelte-kit/adapter-node/chunks/environment.js +0 -34
  636. package/web/.svelte-kit/adapter-node/chunks/exports.js +0 -174
  637. package/web/.svelte-kit/adapter-node/chunks/false.js +0 -4
  638. package/web/.svelte-kit/adapter-node/chunks/index.js +0 -59
  639. package/web/.svelte-kit/adapter-node/chunks/index2.js +0 -2710
  640. package/web/.svelte-kit/adapter-node/chunks/internal.js +0 -1005
  641. package/web/.svelte-kit/adapter-node/chunks/sessions-json.js +0 -109
  642. package/web/.svelte-kit/adapter-node/chunks/sessions.svelte.js +0 -67
  643. package/web/.svelte-kit/adapter-node/chunks/shared.js +0 -542
  644. package/web/.svelte-kit/adapter-node/chunks/state.svelte.js +0 -16
  645. package/web/.svelte-kit/adapter-node/chunks/utils.js +0 -43
  646. package/web/.svelte-kit/adapter-node/entries/endpoints/api/browse/_server.ts.js +0 -50
  647. package/web/.svelte-kit/adapter-node/entries/endpoints/api/health/_server.ts.js +0 -7
  648. package/web/.svelte-kit/adapter-node/entries/endpoints/api/projects/new-session/_server.ts.js +0 -44
  649. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/_server.ts.js +0 -20
  650. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +0 -30
  651. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/send/_server.ts.js +0 -22
  652. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js +0 -126
  653. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_target_/output/_server.ts.js +0 -14
  654. package/web/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +0 -44
  655. package/web/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +0 -12
  656. package/web/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +0 -87
  657. package/web/.svelte-kit/adapter-node/entries/pages/session/_target_/_page.svelte.js +0 -76
  658. package/web/.svelte-kit/adapter-node/index.js +0 -3864
  659. package/web/.svelte-kit/adapter-node/internal.js +0 -13
  660. package/web/.svelte-kit/adapter-node/manifest-full.js +0 -103
  661. package/web/.svelte-kit/adapter-node/manifest.js +0 -107
  662. package/web/.svelte-kit/adapter-node/nodes/0.js +0 -8
  663. package/web/.svelte-kit/adapter-node/nodes/1.js +0 -8
  664. package/web/.svelte-kit/adapter-node/nodes/2.js +0 -8
  665. package/web/.svelte-kit/adapter-node/nodes/3.js +0 -8
  666. package/web/.svelte-kit/adapter-node/remote-entry.js +0 -541
  667. package/web/.svelte-kit/generated/client/nodes/4.js +0 -1
  668. package/web/.svelte-kit/generated/client-optimized/nodes/4.js +0 -1
  669. package/web/.svelte-kit/output/client/_app/immutable/assets/0.WptSHSUl.css +0 -1
  670. package/web/.svelte-kit/output/client/_app/immutable/assets/4.DoNWy7tW.css +0 -1
  671. package/web/.svelte-kit/output/client/_app/immutable/assets/AllSessionsPanel.CGHY3HLy.css +0 -1
  672. package/web/.svelte-kit/output/client/_app/immutable/chunks/-3mUPuLP.js +0 -1
  673. package/web/.svelte-kit/output/client/_app/immutable/chunks/B5U4_V3d.js +0 -1
  674. package/web/.svelte-kit/output/client/_app/immutable/chunks/BHwiZXRv.js +0 -1
  675. package/web/.svelte-kit/output/client/_app/immutable/chunks/C9P-coqM.js +0 -1
  676. package/web/.svelte-kit/output/client/_app/immutable/chunks/Cegv0r8x.js +0 -1
  677. package/web/.svelte-kit/output/client/_app/immutable/chunks/DU91Ml7U.js +0 -3
  678. package/web/.svelte-kit/output/client/_app/immutable/chunks/DmdO6ygw.js +0 -1
  679. package/web/.svelte-kit/output/client/_app/immutable/chunks/HKNo9LID.js +0 -5
  680. package/web/.svelte-kit/output/client/_app/immutable/chunks/U4ip-C0d.js +0 -2
  681. package/web/.svelte-kit/output/client/_app/immutable/chunks/cgUjKIhX.js +0 -2
  682. package/web/.svelte-kit/output/client/_app/immutable/entry/app.CGIBnoln.js +0 -2
  683. package/web/.svelte-kit/output/client/_app/immutable/entry/start.CJk8zB1j.js +0 -1
  684. package/web/.svelte-kit/output/client/_app/immutable/nodes/0.CqlJ9a31.js +0 -1
  685. package/web/.svelte-kit/output/client/_app/immutable/nodes/1.BQUZh2-w.js +0 -1
  686. package/web/.svelte-kit/output/client/_app/immutable/nodes/2.CCV1YdgF.js +0 -1
  687. package/web/.svelte-kit/output/client/_app/immutable/nodes/3.D9tDCdq8.js +0 -1
  688. package/web/.svelte-kit/output/client/_app/immutable/nodes/4.BqPyNkFA.js +0 -6
  689. package/web/.svelte-kit/output/server/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +0 -1
  690. package/web/.svelte-kit/output/server/_app/immutable/assets/_layout.WptSHSUl.css +0 -1
  691. package/web/.svelte-kit/output/server/_app/immutable/assets/_page.DldLgTc-.css +0 -1
  692. package/web/.svelte-kit/output/server/_app/immutable/assets/_page.DoNWy7tW.css +0 -1
  693. package/web/.svelte-kit/output/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +0 -49
  694. package/web/.svelte-kit/output/server/chunks/alert-dialog-description.js +0 -2670
  695. package/web/.svelte-kit/output/server/chunks/auth.js +0 -59
  696. package/web/.svelte-kit/output/server/chunks/context.js +0 -133
  697. package/web/.svelte-kit/output/server/chunks/events.js +0 -121
  698. package/web/.svelte-kit/output/server/chunks/false.js +0 -4
  699. package/web/.svelte-kit/output/server/chunks/pane.js +0 -82
  700. package/web/.svelte-kit/output/server/chunks/sessions.svelte.js +0 -229
  701. package/web/.svelte-kit/output/server/entries/endpoints/api/auth/login/_server.ts.js +0 -22
  702. package/web/.svelte-kit/output/server/entries/endpoints/api/auth/logout/_server.ts.js +0 -9
  703. package/web/.svelte-kit/output/server/entries/endpoints/api/beads/_server.ts.js +0 -22
  704. package/web/.svelte-kit/output/server/entries/pages/login/_page.server.ts.js +0 -15
  705. package/web/.svelte-kit/output/server/entries/pages/login/_page.svelte.js +0 -37
  706. package/web/.svelte-kit/output/server/nodes/4.js +0 -8
  707. package/web/.svelte-kit/types/src/routes/api/auth/login/$types.d.ts +0 -10
  708. package/web/.svelte-kit/types/src/routes/api/auth/logout/$types.d.ts +0 -10
  709. package/web/.svelte-kit/types/src/routes/login/$types.d.ts +0 -25
  710. package/web/.svelte-kit/types/src/routes/login/proxy+page.server.ts +0 -19
  711. package/web/src/lib/components/BeadsPanel.svelte +0 -146
  712. package/web/src/lib/components/IssueItem.svelte +0 -287
  713. package/web/src/lib/components/SessionsSidebar.svelte +0 -312
  714. package/web/src/lib/server/auth.ts +0 -90
  715. package/web/src/lib/stores/beads.svelte.ts +0 -163
  716. package/web/src/lib/stores/input-injection.svelte.ts +0 -39
  717. package/web/src/lib/types/terminal.ts +0 -31
  718. package/web/src/lib/utils/terminal-parser.ts +0 -239
  719. package/web/src/routes/api/auth/login/+server.ts +0 -34
  720. package/web/src/routes/api/auth/logout/+server.ts +0 -10
  721. package/web/src/routes/api/beads/+server.ts +0 -28
  722. package/web/src/routes/login/+page.server.ts +0 -18
  723. package/web/src/routes/login/+page.svelte +0 -69
@@ -0,0 +1,59 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+ inputs:
9
+ version:
10
+ description: "Version to publish (without leading v); defaults to package.json"
11
+ required: false
12
+
13
+ permissions:
14
+ contents: write
15
+ id-token: write # required for npm trusted publishing (OIDC)
16
+
17
+ jobs:
18
+ publish:
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ with:
23
+ fetch-depth: 0
24
+
25
+ - uses: oven-sh/setup-bun@v2
26
+ with:
27
+ bun-version: "1.3.0"
28
+
29
+ - uses: actions/setup-node@v4
30
+ with:
31
+ node-version: "22"
32
+ registry-url: "https://registry.npmjs.org"
33
+
34
+ - name: Sanity-check tag matches package.json
35
+ if: startsWith(github.ref, 'refs/tags/v')
36
+ run: |
37
+ TAG_VERSION="${GITHUB_REF_NAME#v}"
38
+ PKG_VERSION=$(node -p "require('./package.json').version")
39
+ if [ "$TAG_VERSION" != "$PKG_VERSION" ]; then
40
+ echo "Tag $TAG_VERSION does not match package.json $PKG_VERSION"
41
+ exit 1
42
+ fi
43
+
44
+ - name: Install dependencies
45
+ run: bun install --frozen-lockfile
46
+
47
+ - name: Build CLI + web
48
+ run: bun run build
49
+
50
+ - name: Publish to npm (trusted publishing, no token)
51
+ # npm 11.5.1+ required for OIDC trusted publishing without an auth token.
52
+ # `npx npm@latest` avoids overwriting the runner's bundled npm mid-process.
53
+ run: npx -y npm@latest publish --access public --provenance
54
+
55
+ - name: Create GitHub release
56
+ if: startsWith(github.ref, 'refs/tags/v')
57
+ uses: softprops/action-gh-release@v2
58
+ with:
59
+ generate_release_notes: true
package/CLAUDE.md CHANGED
@@ -4,10 +4,10 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
4
4
 
5
5
  ## Development Server
6
6
 
7
- Dev server runs via Vite with HMR at **http://localhost:5173** (or `--port` to change).
7
+ Dev server runs via Vite with HMR at **http://localhost:3434** (or `--port` to change). Prod server uses :3456.
8
8
 
9
9
  ```bash
10
- bun run dev:serve # Start dev server
10
+ bun run dev:serve # Start dev server on :3434
11
11
  bun run dev:serve --port 3456 # Custom port
12
12
  bun run dev:serve --host 0.0.0.0 # LAN access
13
13
  ```
@@ -19,19 +19,18 @@ After each change, check tmux pane `0:1.1` to verify HMR worked. If the server d
19
19
  ## Build & Development Commands
20
20
 
21
21
  ```bash
22
- bun run build # Build CLI + SvelteKit web app
23
- bun run build:cli # Build CLI only (TypeScript)
24
- bun run build:web # Build SvelteKit web app only
25
- bun run dev:serve # Vite dev server with HMR
26
- bun test # Run vitest tests
27
- bun run lint # ESLint check
28
- bun run format # Prettier formatting
22
+ bun src/cli.ts <command> # Run CLI directly from source (no build needed)
23
+ bun run build # Build CLI + SvelteKit web app
24
+ bun run build:cli # Build CLI only (TypeScript)
25
+ bun run build:web # Build SvelteKit web app only
26
+ bun run dev:serve # Vite dev server with HMR
27
+ bun run prod:restart # Kill, rebuild, and relaunch prod server on :3456 (detached)
28
+ bun test # Run vitest tests
29
+ bun run lint # ESLint check
30
+ bun run format # Prettier formatting
29
31
  ```
30
32
 
31
- Production server (after build):
32
- ```bash
33
- bun dist/cli.js serve --port 3456 --host 0.0.0.0
34
- ```
33
+ **Use `bun src/cli.ts` for development** — bun runs TypeScript directly, no build step needed. Only build for production (`bun dist/cli.js`).
35
34
 
36
35
  Run a single test file:
37
36
  ```bash
package/CONTEXT.md ADDED
@@ -0,0 +1,23 @@
1
+ # Glossary
2
+
3
+ ## Attachment
4
+
5
+ A file or image the user is staging to send into Claude Code on the **next** prompt.
6
+
7
+ An attachment has two layers:
8
+
9
+ - **Staging (prompt-scoped)** — the chip in the input row. Cleared from the UI
10
+ when the prompt fires. Each prompt starts with an empty staging area.
11
+ - **Backing file (session-scoped)** — bytes persisted on disk under the session's
12
+ attachment directory. Kept for the lifetime of the session and removed only
13
+ when the session is killed. This avoids racing Claude Code's read of `@/path`.
14
+
15
+ Once a prompt is sent, the attached bytes also live inside Claude Code's own
16
+ conversation context (as multimodal message content). Re-referencing the same
17
+ image in later prompts ("look at the image again") works because Claude Code
18
+ already has the bytes in context; it does not need to re-open the backing file.
19
+
20
+ Not to be confused with **Screenshot**: screenshots are session artifacts emitted
21
+ by Claude Code hooks and displayed in the sidebar. Screenshots are read-only
22
+ context surfaced to the user; attachments are user-supplied payloads sent into
23
+ Claude Code.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <p align="center">
2
2
  <h1 align="center">claude-mux</h1>
3
3
  <p align="center">
4
- <strong>A real-time web dashboard for monitoring and controlling multiple Claude Code sessions</strong>
4
+ <strong>Real-time web dashboard for monitoring and controlling multiple Claude Code sessions</strong>
5
5
  </p>
6
6
  </p>
7
7
 
@@ -9,158 +9,93 @@
9
9
  <a href="https://www.npmjs.com/package/claude-mux"><img src="https://img.shields.io/npm/v/claude-mux?style=flat-square&color=blue" alt="npm version"></a>
10
10
  <a href="https://www.npmjs.com/package/claude-mux"><img src="https://img.shields.io/npm/dm/claude-mux?style=flat-square&color=green" alt="npm downloads"></a>
11
11
  <a href="https://github.com/christinoleo/claude-mux/blob/main/LICENSE"><img src="https://img.shields.io/github/license/christinoleo/claude-mux?style=flat-square" alt="license"></a>
12
- <img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen?style=flat-square" alt="node version">
12
+ <img src="https://img.shields.io/badge/bun-%3E%3D1.0-f472b6?style=flat-square" alt="bun version">
13
13
  <img src="https://img.shields.io/badge/platform-linux%20%7C%20macos-lightgrey?style=flat-square" alt="platform">
14
14
  </p>
15
15
 
16
16
  <p align="center">
17
- <a href="#features">Features</a>
18
- <a href="#installation">Installation</a>
19
- <a href="#quick-start">Quick Start</a>
20
- <a href="#web-interface">Web Interface</a>
21
- <a href="#how-it-works">How It Works</a>
17
+ <a href="#features">Features</a> &bull;
18
+ <a href="#installation">Installation</a> &bull;
19
+ <a href="#quick-start">Quick Start</a> &bull;
20
+ <a href="#cli-commands">CLI</a> &bull;
21
+ <a href="#how-it-works">Architecture</a>
22
22
  </p>
23
23
 
24
24
  ---
25
25
 
26
- ## Screenshots
27
-
28
26
  <p align="center">
29
- <img src="docs/images/desktop-dashboard.png" alt="Desktop Dashboard" width="100%">
30
- <br>
31
- <em>Dashboard view — Monitor all your Claude Code sessions at a glance</em>
27
+ <img src="docs/images/desktop-dashboard.png" alt="Dashboard" width="100%">
28
+ <br><em>Dashboard &mdash; sessions grouped by project with live state indicators</em>
32
29
  </p>
33
30
 
34
31
  <p align="center">
35
- <img src="docs/images/desktop-session.png" alt="Session View with Syntax Highlighting" width="100%">
36
- <br>
37
- <em>Session view — Real-time terminal output with syntax highlighting</em>
32
+ <img src="docs/images/desktop-session.png" alt="Session View" width="100%">
33
+ <br><em>Session view &mdash; real-time ANSI terminal output with action toolbar</em>
38
34
  </p>
39
35
 
40
36
  <details>
41
- <summary><strong>Mobile Screenshots</strong></summary>
37
+ <summary><strong>Mobile</strong></summary>
42
38
  <br>
43
39
  <p align="center">
44
40
  <img src="docs/images/mobile-dashboard.png" alt="Mobile Dashboard" width="300">
45
41
  &nbsp;&nbsp;&nbsp;
46
42
  <img src="docs/images/mobile-session.png" alt="Mobile Session" width="300">
47
43
  </p>
48
- <p align="center"><em>Fully responsive Control your Claude sessions from your phone</em></p>
44
+ <p align="center"><em>Fully responsive &mdash; control sessions from your phone</em></p>
49
45
  </details>
50
46
 
51
47
  ---
52
48
 
53
49
  ## Features
54
50
 
55
- ### Web Dashboard
56
- - **Real-time monitoring** of all Claude Code sessions via WebSocket
57
- - **Project-based organization** Sessions grouped by working directory
58
- - **Live status indicators** See which sessions are busy, idle, or waiting for input
59
- - **One-click navigation** Jump to any session instantly
60
-
61
- ### Syntax Highlighting
62
- - **Color-coded terminal output** User prompts, Claude responses, tool calls, and results
63
- - **Tool-specific colors** Different colors for Read, Write, Edit, Bash, Task, and more
64
- - **Diff highlighting** Green for additions, red for removals in file edits
65
- - **Toggleable theming** Switch between styled and raw output
66
-
67
- ### Mobile-First Design
68
- - **Fully responsive** — Works on desktop, tablet, and phone
69
- - **Touch-friendly controls** — Large buttons for common actions
70
- - **Quick action toolbar** — Send keys (Up, Down, Tab, Esc, Ctrl-C) with one tap
71
-
72
- ### Session Control
73
- - **Send text input** — Type messages directly to Claude
74
- - **Keyboard shortcuts** — Send special keys and key combinations
75
- - **Terminal resize** — Fit tmux pane to browser viewport
76
- - **Kill sessions** — Terminate Claude processes when needed
77
-
78
- ### Optional Features
79
- - **Authentication** — Password-protect your dashboard
80
- - **LAN access** — Monitor sessions from any device on your network
51
+ - **Live session monitoring** &mdash; WebSocket-powered, no polling. See state (busy/idle/waiting/permission) at a glance
52
+ - **Project grouping** &mdash; sessions organized by working directory with color-coded borders
53
+ - **ANSI terminal rendering** &mdash; real tmux colors via [ansi_up](https://github.com/drudru/ansi_up), toggleable
54
+ - **Session control** &mdash; send text, keys (Up/Down/Tab/Esc/Ctrl-C), Yes/No/Always quick buttons
55
+ - **Voice input** &mdash; local Whisper transcription (CPU or CUDA, auto-detected). Trigger with `F2`, `Pause`, or `Ctrl+\`` while the input is focused; press `Enter` to stop and submit, `Esc` or the `×` overlay to discard. Long-press the mic button for language, microphone, and auto-submit settings
56
+ - **Orchestrator pairing** &mdash; main + orchestrator sessions grouped together with role labels
57
+ - **Remote Control** &mdash; auto-detects Claude's `/rc` and opens it in a new window
58
+ - **Mobile-first** &mdash; touch toolbar, hamburger sidebar, swipe gestures
59
+ - **Screenshots panel** &mdash; view and dismiss captured screenshots
60
+ - **Dead pane detection** &mdash; visual indication when a tmux pane closes
61
+ - **Other tmux panes** &mdash; browse and view non-Claude panes too
62
+ - **Auth support** &mdash; optional password protection for LAN access
63
+ - **CLI scripting** &mdash; `send`, `wait`, `status`, `capture` commands for automation
81
64
 
82
65
  ---
83
66
 
84
67
  ## Installation
85
68
 
86
- ### From npm/bun (recommended)
87
-
88
69
  ```bash
89
70
  bun install -g claude-mux
90
71
  # or: npm install -g claude-mux
91
72
  ```
92
73
 
93
- ### From source
74
+ <details>
75
+ <summary><strong>From source</strong></summary>
94
76
 
95
77
  ```bash
96
78
  git clone https://github.com/christinoleo/claude-mux.git
97
79
  cd claude-mux
98
- bun install
99
- bun run build
100
- bun link # Makes 'claude-mux' available globally
80
+ bun install && bun run build
81
+ bun link # makes 'claude-mux' available globally
101
82
  ```
83
+ </details>
102
84
 
103
85
  ---
104
86
 
105
87
  ## Quick Start
106
88
 
107
- ### 1. Run setup
108
-
109
89
  ```bash
90
+ # 1. Install hooks into Claude Code
110
91
  claude-mux setup
111
- ```
112
92
 
113
- This will:
114
- - Create the data directory at `~/.claude-watch/`
115
- - Install Claude Code hooks in `~/.claude/settings.json`
116
-
117
- ### 2. Start the web server
118
-
119
- ```bash
93
+ # 2. Start the web server
120
94
  claude-mux serve --port 3456 --host 0.0.0.0
121
- ```
122
-
123
- ### 3. Open the dashboard
124
-
125
- Navigate to `http://localhost:3456` (or your machine's IP for LAN access).
126
-
127
- ### 4. Start using Claude Code
128
-
129
- Any Claude Code session started after setup will appear in the dashboard automatically.
130
-
131
- ---
132
-
133
- ## Web Interface
134
-
135
- ### Dashboard
136
-
137
- The main dashboard shows all active Claude Code sessions organized by project:
138
-
139
- | Element | Description |
140
- |---------|-------------|
141
- | **Project cards** | Sessions grouped by working directory |
142
- | **Status indicators** | Busy, Idle, Waiting for input |
143
- | **Current action** | Shows what Claude is currently doing |
144
- | **Quick actions** | New session, kill session, refresh |
145
95
 
146
- ### Session View
147
-
148
- Click any session to open the real-time terminal view:
149
-
150
- | Feature | Description |
151
- |---------|-------------|
152
- | **Live output** | Streams terminal content via WebSocket |
153
- | **Syntax highlighting** | Color-coded messages and tool calls |
154
- | **Text input** | Send messages to Claude |
155
- | **Action buttons** | Up, Down, Space, Tab, Esc, Ctrl-C, etc. |
156
- | **Tmux command** | Copy `tmux attach` command for direct access |
157
-
158
- ### Keyboard Shortcuts (in session view)
159
-
160
- | Key | Action |
161
- |-----|--------|
162
- | `Enter` | Send message |
163
- | `Shift+Enter` | New line in message |
96
+ # 3. Open http://localhost:3456 (or your LAN IP)
97
+ # 4. Start any Claude Code session — it appears automatically
98
+ ```
164
99
 
165
100
  ---
166
101
 
@@ -168,183 +103,52 @@ Click any session to open the real-time terminal view:
168
103
 
169
104
  | Command | Description |
170
105
  |---------|-------------|
171
- | `claude-mux serve` | Start the web server |
172
- | `claude-mux setup` | Run interactive setup wizard |
106
+ | `claude-mux serve` | Start web server (`--port`, `--host`, `--auth <password>`) |
107
+ | `claude-mux setup` | Install Claude Code hooks |
173
108
  | `claude-mux uninstall` | Remove hooks and configuration |
174
- | `claude-mux` | Start TUI dashboard (legacy, requires tmux) |
175
-
176
- ### Server Options
177
-
178
- ```bash
179
- claude-mux serve [options]
180
-
181
- Options:
182
- -p, --port <number> Port to listen on (default: 45677)
183
- -h, --host <string> Host to bind to (default: "localhost")
184
- -a, --auth <password> Enable authentication with password
185
- ```
186
-
187
- ### Examples
188
-
189
- ```bash
190
- # Start on custom port
191
- claude-mux serve --port 8080
192
-
193
- # Allow LAN access
194
- claude-mux serve --host 0.0.0.0
195
-
196
- # With authentication
197
- claude-mux serve --host 0.0.0.0 --auth mysecretpassword
198
- ```
109
+ | `claude-mux send <target> [text]` | Send text or `--keys` to a session |
110
+ | `claude-mux status <target>` | Get session state as JSON |
111
+ | `claude-mux wait <target>` | Block until session reaches `--state` (default: idle,waiting,permission) |
112
+ | `claude-mux new-session --cwd <path>` | Spawn a new detached Claude Code session |
113
+ | `claude-mux capture <target>` | Capture tmux pane output (`--lines N`) |
114
+ | `claude-mux` | TUI dashboard (legacy, requires tmux) |
199
115
 
200
116
  ---
201
117
 
202
118
  ## How It Works
203
119
 
204
- ### Architecture
205
-
206
- ```
207
- ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
208
- │ Claude Code │────▶│ Hook Scripts │────▶│ JSON Files │
209
- │ (running) │ │ (on events) │ │ (~/.claude-watch/sessions/)
210
- └─────────────────┘ └──────────────────┘ └────────┬────────┘
211
-
212
- ┌─────────────────┐ ┌──────────────────┐ │
213
- │ tmux panes │────▶│ Pane Capture │──────────────┤
214
- │ (terminal) │ │ (WebSocket) │ │
215
- └─────────────────┘ └──────────────────┘ │
216
-
217
- ┌──────────────────┐ ┌─────────────────┐
218
- │ Web Browser │◀───▶│ SvelteKit │
219
- │ (dashboard) │ │ (WebSocket) │
220
- └──────────────────┘ └─────────────────┘
221
- ```
222
-
223
- ### Claude Code Hooks
224
-
225
- claude-mux uses [Claude Code hooks](https://docs.anthropic.com/en/docs/claude-code/hooks) to track session state:
226
-
227
- | Hook | Purpose |
228
- |------|---------|
229
- | `SessionStart` | Register new session with PID and working directory |
230
- | `UserPromptSubmit` | Mark session as busy |
231
- | `PreToolUse` | Update status with current tool name |
232
- | `Stop` | Mark session as idle when turn ends |
233
- | `Notification` | Handle permission requests and questions |
234
-
235
- ### Real-time Updates
236
-
237
- - **WebSocket connections** for instant updates (no polling)
238
- - **File watcher** monitors session state changes
239
- - **Pane capture** streams terminal output every 200ms
240
-
241
- ---
242
-
243
- ## Terminal UI (Legacy)
244
-
245
- claude-mux also includes a terminal-based dashboard for use inside tmux:
246
-
247
- ```bash
248
- claude-mux # Requires tmux
249
- ```
250
-
251
- | Key | Action |
252
- |-----|--------|
253
- | `j` / `↓` | Move selection down |
254
- | `k` / `↑` | Move selection up |
255
- | `Enter` | Jump to selected session |
256
- | `q` | Quit dashboard |
257
-
258
- Press `prefix + W` from any tmux session to jump to the dashboard.
259
-
260
- ---
261
-
262
- ## Development
263
-
264
- ### Prerequisites
265
-
266
- - Node.js >= 18 (or Bun)
267
- - tmux (for full functionality)
268
-
269
- ### Setup
270
-
271
- ```bash
272
- git clone https://github.com/christinoleo/claude-mux.git
273
- cd claude-mux
274
- bun install
275
120
  ```
276
-
277
- ### Development Server
278
-
279
- ```bash
280
- bun run dev:serve # Starts Vite dev server with HMR
121
+ Claude Code events ──> Hook script ──> JSON files (~/.claude-mux/sessions/)
122
+ |
123
+ File watcher (500ms)
124
+ |
125
+ WebSocket broadcast
126
+ |
127
+ Browser <──> SvelteKit server
281
128
  ```
282
129
 
283
- ### Build
284
-
285
- ```bash
286
- bun run build # Build CLI + web app
287
- bun run build:cli # Build CLI only
288
- bun run build:web # Build web app only
289
- ```
290
-
291
- ### Testing
292
-
293
- ```bash
294
- bun test # Run tests
295
- bun run lint # Lint code
296
- bun run format # Format code
297
- ```
298
-
299
- ### Project Structure
300
-
301
- ```
302
- claude-mux/
303
- ├── src/ # CLI and hooks
304
- │ ├── cli.ts # Entry point
305
- │ ├── commands/ # CLI commands (serve, setup, tui)
306
- │ ├── hooks/ # Claude Code hook handler
307
- │ └── server/ # File watcher, WebSocket handlers
308
- ├── web/ # SvelteKit web app
309
- │ ├── src/
310
- │ │ ├── lib/
311
- │ │ │ ├── components/ # UI components
312
- │ │ │ ├── stores/ # Svelte stores (sessions, terminal, preferences)
313
- │ │ │ └── utils/ # Terminal parser, helpers
314
- │ │ └── routes/ # Pages and API routes
315
- │ └── svelte.config.js
316
- └── docs/
317
- └── images/ # Screenshots
318
- ```
130
+ **Hooks** run inside Claude Code's process and write session state to JSON on every event (start, prompt, tool use, stop, notification). The **SvelteKit server** watches those files and pushes updates to connected browsers via WebSocket. Terminal output is captured directly from tmux panes.
319
131
 
320
132
  ---
321
133
 
322
134
  ## Troubleshooting
323
135
 
324
- ### Sessions not appearing
136
+ **Sessions not appearing** &mdash; Run `claude-mux setup`, then restart Claude Code sessions (hooks load at startup).
325
137
 
326
- 1. Ensure you ran `claude-mux setup` to install hooks
327
- 2. Restart any running Claude Code sessions (hooks are loaded at startup)
328
- 3. Check that `~/.claude/settings.json` contains claude-mux hooks
138
+ **Can't connect from another device** &mdash; Use `--host 0.0.0.0` and check your firewall.
329
139
 
330
- ### Cannot connect from another device
140
+ **Status not updating** &mdash; Verify hooks: `grep claude-mux ~/.claude/settings.json`
331
141
 
332
- 1. Use `--host 0.0.0.0` to allow external connections
333
- 2. Check your firewall allows the port
334
- 3. Use your machine's LAN IP, not `localhost`
335
-
336
- ### Status not updating
337
-
338
- 1. Check hooks are installed: `grep claude-mux ~/.claude/settings.json`
339
- 2. Restart Claude Code sessions to pick up new hooks
142
+ **Voice transcription slow on first use** &mdash; The first invocation builds whisper.cpp and downloads a Whisper model into `~/.claude-mux/voice/`. Subsequent runs reuse the cache. CUDA is used automatically if `nvidia-smi` and `nvcc` are present.
340
143
 
341
144
  ---
342
145
 
343
146
  ## Requirements
344
147
 
345
- - **Node.js** >= 18 (or Bun)
346
- - **tmux** (required for terminal capture)
347
- - **Claude Code** with hooks support
148
+ - [Bun](https://bun.sh) >= 1.0
149
+ - tmux
150
+ - Claude Code with hooks support
151
+ - Optional, for voice input: a working C/C++ toolchain (whisper.cpp builds on first use); NVIDIA CUDA toolkit for GPU transcription
348
152
 
349
153
  ---
350
154
 
@@ -352,15 +156,6 @@ claude-mux/
352
156
 
353
157
  MIT
354
158
 
355
- ---
356
-
357
159
  ## Contributing
358
160
 
359
- Contributions are welcome! Please feel free to submit a Pull Request.
360
-
361
- 1. Fork the repository
362
- 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
363
- 3. Run tests (`bun test`)
364
- 4. Commit your changes
365
- 5. Push to the branch
366
- 6. Open a Pull Request
161
+ PRs welcome. Fork, branch, test (`bun test`), and open a PR.
@@ -0,0 +1,12 @@
1
+ import type { SessionAgent } from "./db/index.js";
2
+ export declare const AGENT_IDS: readonly ["claude", "gemini", "copilot"];
3
+ export interface AgentMeta {
4
+ icon: string;
5
+ color: string;
6
+ label: string;
7
+ command: string;
8
+ argv: string[];
9
+ }
10
+ export declare const AGENTS: Record<SessionAgent, AgentMeta>;
11
+ export declare function parseAgent(value: unknown): SessionAgent;
12
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,eAAO,MAAM,SAAS,0CAA2C,CAAC;AAElE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,CAsBlD,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAEvD"}
package/dist/agents.js ADDED
@@ -0,0 +1,28 @@
1
+ export const AGENT_IDS = ["claude", "gemini", "copilot"];
2
+ export const AGENTS = {
3
+ claude: {
4
+ icon: "mdi:creation",
5
+ color: "#d97757",
6
+ label: "Claude Code",
7
+ command: "claude --dangerously-skip-permissions",
8
+ argv: ["env", "-u", "CLAUDECODE", "claude", "--dangerously-skip-permissions"],
9
+ },
10
+ gemini: {
11
+ icon: "mdi:google",
12
+ color: "#4285f4",
13
+ label: "Gemini CLI",
14
+ command: "gemini --yolo",
15
+ argv: ["gemini", "--yolo"],
16
+ },
17
+ copilot: {
18
+ icon: "mdi:github",
19
+ color: "#ddd",
20
+ label: "GitHub Copilot CLI",
21
+ command: "copilot --allow-all-tools",
22
+ argv: ["copilot", "--allow-all-tools"],
23
+ },
24
+ };
25
+ export function parseAgent(value) {
26
+ return AGENT_IDS.includes(value) ? value : "claude";
27
+ }
28
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAUlE,MAAM,CAAC,MAAM,MAAM,GAAoC;IACrD,MAAM,EAAE;QACN,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,uCAAuC;QAChD,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,gCAAgC,CAAC;KAC9E;IACD,MAAM,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAC3B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,2BAA2B;QACpC,IAAI,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACvC;CACF,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAqB,CAAC,CAAC,CAAC,CAAE,KAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxF,CAAC"}
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env bun
2
2
  export {};
3
3
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.js CHANGED
@@ -1,9 +1,10 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env bun
2
2
  import { program } from "commander";
3
- import { createServeCommand, createSetupCommand, createUninstallCommand, runTui, runServe, } from "./commands/index.js";
3
+ import { createServeCommand, createSetupCommand, createUninstallCommand, createSendCommand, createWaitIdleCommand, createStatusCommand, createCaptureCommand, createNewSessionCommand, createUpdateCommand, runTui, runServe, } from "./commands/index.js";
4
4
  import { runSetup, runCleanup } from "./setup/index.js";
5
- import { DEFAULT_SERVER_PORT } from "./utils/paths.js";
5
+ import { DEFAULT_SERVER_PORT, migrateLegacyDataDir } from "./utils/paths.js";
6
6
  import { VERSION } from "./utils/version.js";
7
+ migrateLegacyDataDir();
7
8
  // Deprecation warning helper
8
9
  function deprecationWarning(oldFlag, newCommand) {
9
10
  console.warn(`\x1b[33m⚠ Warning: --${oldFlag} is deprecated. Use "claude-mux ${newCommand}" instead.\x1b[0m`);
@@ -17,6 +18,12 @@ program
17
18
  program.addCommand(createServeCommand());
18
19
  program.addCommand(createSetupCommand());
19
20
  program.addCommand(createUninstallCommand());
21
+ program.addCommand(createSendCommand());
22
+ program.addCommand(createWaitIdleCommand());
23
+ program.addCommand(createStatusCommand());
24
+ program.addCommand(createCaptureCommand());
25
+ program.addCommand(createNewSessionCommand());
26
+ program.addCommand(createUpdateCommand());
20
27
  // BACKWARD COMPATIBILITY: Support old flags on root command
21
28
  program
22
29
  .option("--setup", "Run interactive setup wizard (deprecated: use 'setup' command)")
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createCaptureCommand(): Command;
3
+ //# sourceMappingURL=capture.d.ts.map