purplemux 0.3.0 → 0.3.2

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 (204) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +49 -49
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/routes-manifest.json +7 -7
  6. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06an6au._.js +1 -1
  7. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__02f5zis._.js → [root-of-the-server]__08dxtof._.js} +1 -1
  8. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08z3drz._.js +1 -1
  9. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__11uqzxt._.js → [root-of-the-server]__0kumyrr._.js} +2 -2
  10. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s7k1je._.js +3 -0
  11. package/.next/standalone/.next/server/chunks/ssr/{_13qovxu._.js → _0.stp0n._.js} +2 -2
  12. package/.next/standalone/.next/server/chunks/ssr/{_11h746h._.js → _00cx0p2._.js} +2 -2
  13. package/.next/standalone/.next/server/chunks/ssr/_02rms4q._.js +1 -1
  14. package/.next/standalone/.next/server/chunks/ssr/_06_8vkn._.js +2 -2
  15. package/.next/standalone/.next/server/chunks/ssr/{_0uwytsj._.js → _078y4dk._.js} +2 -2
  16. package/.next/standalone/.next/server/chunks/ssr/{_0uph6rf._.js → _0kzht5v._.js} +2 -2
  17. package/.next/standalone/.next/server/chunks/ssr/_0m6flec._.js +1 -1
  18. package/.next/standalone/.next/server/chunks/ssr/_0pg-q18._.js +1 -1
  19. package/.next/standalone/.next/server/chunks/ssr/_0r90z3l._.js +8 -0
  20. package/.next/standalone/.next/server/chunks/ssr/_0w.1ts8._.js +1 -1
  21. package/.next/standalone/.next/server/chunks/ssr/_0w6jc9p._.js +1 -1
  22. package/.next/standalone/.next/server/chunks/ssr/{_0z6yp7a._.js → _0y_feze._.js} +1 -1
  23. package/.next/standalone/.next/server/chunks/ssr/{_0v2czf2._.js → _10dec5o._.js} +1 -1
  24. package/.next/standalone/.next/server/chunks/ssr/{messages_01~7za1._.js → messages_0f3u1ly._.js} +1 -1
  25. package/.next/standalone/.next/server/chunks/ssr/{messages_10_yt3k._.js → messages_0k204ao._.js} +1 -1
  26. package/.next/standalone/.next/server/chunks/ssr/messages_de_terminal_json_[json]_cjs_05jirtw._.js +1 -1
  27. package/.next/standalone/.next/server/chunks/ssr/messages_en_terminal_json_[json]_cjs_0~ls3g-._.js +1 -1
  28. package/.next/standalone/.next/server/chunks/ssr/messages_es_terminal_json_[json]_cjs_04g2b1_._.js +1 -1
  29. package/.next/standalone/.next/server/chunks/ssr/messages_fr_terminal_json_[json]_cjs_0uhakya._.js +1 -1
  30. package/.next/standalone/.next/server/chunks/ssr/messages_ja_terminal_json_[json]_cjs_0776z4f._.js +1 -1
  31. package/.next/standalone/.next/server/chunks/ssr/messages_ko_terminal_json_[json]_cjs_06611.3._.js +1 -1
  32. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_terminal_json_[json]_cjs_034yyg9._.js +1 -1
  33. package/.next/standalone/.next/server/chunks/ssr/messages_ru_terminal_json_[json]_cjs_0emk8~n._.js +1 -1
  34. package/.next/standalone/.next/server/chunks/ssr/messages_tr_terminal_json_[json]_cjs_0xpix8g._.js +1 -1
  35. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_terminal_json_[json]_cjs_12vwl8a._.js +1 -1
  36. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_terminal_json_[json]_cjs_0spg5z5._.js +1 -1
  37. package/.next/standalone/.next/server/chunks/ssr/node_modules_0t5csgq._.js +1 -1
  38. package/.next/standalone/.next/server/chunks/ssr/node_modules_use-intl_dist_esm_production_react_0bnxcps.js +1 -1
  39. package/.next/standalone/.next/server/chunks/ssr/{src_components_00nri37._.js → src_components_05-kki3._.js} +1 -1
  40. package/.next/standalone/.next/server/chunks/ssr/{src_components_0jrgsp7._.js → src_components_0fb83uz._.js} +1 -1
  41. package/.next/standalone/.next/server/chunks/ssr/{src_components_0mhu5-5._.js → src_components_0gkfyrc._.js} +1 -1
  42. package/.next/standalone/.next/server/chunks/ssr/{src_components_0~e6p9k._.js → src_components_0n3s0.7._.js} +1 -1
  43. package/.next/standalone/.next/server/chunks/ssr/src_components_features_mobile_mobile-terminal-page_tsx_02chzch._.js +1 -1
  44. package/.next/standalone/.next/server/chunks/ssr/src_components_features_workspace_terminal-page_tsx_0wuq-jl._.js +1 -1
  45. package/.next/standalone/.next/server/functions-config-manifest.json +1 -1
  46. package/.next/standalone/.next/server/middleware-build-manifest.js +49 -49
  47. package/.next/standalone/.next/server/pages/_app/build-manifest.json +6 -6
  48. package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
  49. package/.next/standalone/.next/server/pages/_app.js +2 -2
  50. package/.next/standalone/.next/server/pages/_app.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/pages/_document.js +3 -3
  52. package/.next/standalone/.next/server/pages/_document.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/pages/_error/build-manifest.json +3 -3
  54. package/.next/standalone/.next/server/pages/_error/client-build-manifest.json +1 -1
  55. package/.next/standalone/.next/server/pages/_error.js +4 -4
  56. package/.next/standalone/.next/server/pages/_error.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/pages/de/404.html +1 -1
  58. package/.next/standalone/.next/server/pages/de/500.html +1 -1
  59. package/.next/standalone/.next/server/pages/en/404.html +1 -1
  60. package/.next/standalone/.next/server/pages/en/500.html +1 -1
  61. package/.next/standalone/.next/server/pages/es/404.html +1 -1
  62. package/.next/standalone/.next/server/pages/es/500.html +1 -1
  63. package/.next/standalone/.next/server/pages/fr/404.html +1 -1
  64. package/.next/standalone/.next/server/pages/fr/500.html +1 -1
  65. package/.next/standalone/.next/server/pages/index/build-manifest.json +7 -7
  66. package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
  67. package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +4 -4
  68. package/.next/standalone/.next/server/pages/index.js +5 -5
  69. package/.next/standalone/.next/server/pages/index.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/pages/ja/404.html +1 -1
  71. package/.next/standalone/.next/server/pages/ja/500.html +1 -1
  72. package/.next/standalone/.next/server/pages/ko/404.html +1 -1
  73. package/.next/standalone/.next/server/pages/ko/500.html +1 -1
  74. package/.next/standalone/.next/server/pages/login/build-manifest.json +4 -4
  75. package/.next/standalone/.next/server/pages/login/client-build-manifest.json +1 -1
  76. package/.next/standalone/.next/server/pages/login.js +4 -4
  77. package/.next/standalone/.next/server/pages/login.js.nft.json +1 -1
  78. package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
  79. package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
  80. package/.next/standalone/.next/server/pages/reports/build-manifest.json +6 -6
  81. package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
  82. package/.next/standalone/.next/server/pages/reports.js +5 -5
  83. package/.next/standalone/.next/server/pages/reports.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/pages/reset/build-manifest.json +4 -4
  85. package/.next/standalone/.next/server/pages/reset/client-build-manifest.json +1 -1
  86. package/.next/standalone/.next/server/pages/reset.js +5 -5
  87. package/.next/standalone/.next/server/pages/reset.js.nft.json +1 -1
  88. package/.next/standalone/.next/server/pages/ru/404.html +1 -1
  89. package/.next/standalone/.next/server/pages/ru/500.html +1 -1
  90. package/.next/standalone/.next/server/pages/stats/build-manifest.json +6 -6
  91. package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
  92. package/.next/standalone/.next/server/pages/stats.js +5 -5
  93. package/.next/standalone/.next/server/pages/stats.js.nft.json +1 -1
  94. package/.next/standalone/.next/server/pages/tools-required/build-manifest.json +4 -4
  95. package/.next/standalone/.next/server/pages/tools-required/client-build-manifest.json +1 -1
  96. package/.next/standalone/.next/server/pages/tools-required.js +5 -5
  97. package/.next/standalone/.next/server/pages/tools-required.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/pages/tr/404.html +1 -1
  99. package/.next/standalone/.next/server/pages/tr/500.html +1 -1
  100. package/.next/standalone/.next/server/pages/webview/build-manifest.json +6 -6
  101. package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
  102. package/.next/standalone/.next/server/pages/webview.js +5 -5
  103. package/.next/standalone/.next/server/pages/webview.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
  105. package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
  106. package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
  107. package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
  108. package/.next/standalone/.next/static/chunks/01.oujz.z9cq..js +1 -0
  109. package/.next/standalone/.next/static/chunks/{0~23in~aqup16.js → 0176ysv-agwwx.js} +1 -1
  110. package/.next/standalone/.next/static/chunks/{0icark0o3b_6j.js → 03s5e91.zrsi_.js} +4 -4
  111. package/.next/standalone/.next/static/chunks/{0h57gqab.hlp8.js → 05zk.ks4roh-4.js} +6 -6
  112. package/.next/standalone/.next/static/chunks/05~6_0_288m3t.js +1 -0
  113. package/.next/standalone/.next/static/chunks/06uy95ammv.ud.js +1 -0
  114. package/.next/standalone/.next/static/chunks/08-el~h0ax929.js +1 -0
  115. package/.next/standalone/.next/static/chunks/{14_wa..vd6~2y.js → 0984g4~der6-4.js} +2 -2
  116. package/.next/standalone/.next/static/chunks/{016ho28abx9rt.js → 0_psc1~qmka.m.js} +4 -4
  117. package/.next/standalone/.next/static/chunks/{00s6ekn81~vi-.js → 0ap~c~__qw2_0.js} +6 -6
  118. package/.next/standalone/.next/static/chunks/0cir.n19rqu--.js +8 -0
  119. package/.next/standalone/.next/static/chunks/0dpud6_2~.2iv.js +1 -0
  120. package/.next/standalone/.next/static/chunks/0euxle0n3zjm3.js +1 -0
  121. package/.next/standalone/.next/static/chunks/0fax5v7rwhm7g.js +6 -0
  122. package/.next/standalone/.next/static/chunks/{0wf0tx~eo05t~.js → 0gfoib7v3q4k_.js} +1 -1
  123. package/.next/standalone/.next/static/chunks/{0538dx15fw8_n.js → 0kep81gqgj5f5.js} +7 -7
  124. package/.next/standalone/.next/static/chunks/0kriln8d9.mdo.js +1 -0
  125. package/.next/standalone/.next/static/chunks/{0eia27slkj8a0.js → 0l.88yoxq6tq8.js} +6 -6
  126. package/.next/standalone/.next/static/chunks/{0ea-k_kbq5gi1.js → 0n7jmg60eqx1a.js} +1 -1
  127. package/.next/standalone/.next/static/chunks/0nm1wy7i1z64_.js +1 -0
  128. package/.next/standalone/.next/static/chunks/0o1e0e_okaxww.js +1 -0
  129. package/.next/standalone/.next/static/chunks/{0l80eb3i.wx6k.js → 0p2m6i37_wprv.js} +1 -1
  130. package/.next/standalone/.next/static/chunks/0qz-agdkp9v1q.js +16 -0
  131. package/.next/standalone/.next/static/chunks/0w1v1a5wi.byq.js +1 -0
  132. package/.next/standalone/.next/static/chunks/0wha_~zny181w.js +1 -0
  133. package/.next/standalone/.next/static/chunks/0wu-q.gmu-64d.js +5 -0
  134. package/.next/standalone/.next/static/chunks/{00l132mp04ubq.js → 0xfp8sfehtui9.js} +1 -1
  135. package/.next/standalone/.next/static/chunks/0yzd69blq638o.js +1 -0
  136. package/.next/standalone/.next/static/chunks/{0erebazb6ppou.js → 12f3vk2rnkb8u.js} +6 -6
  137. package/.next/standalone/.next/static/chunks/135cvydv7redz.js +1 -0
  138. package/.next/standalone/.next/static/chunks/14rrqgjvv0_69.js +1 -0
  139. package/.next/standalone/.next/static/chunks/14vposxx99rq4.js +1 -0
  140. package/.next/standalone/.next/static/chunks/{09mlfwheuib_9.js → 168.xhj-0lt8a.js} +1 -1
  141. package/.next/standalone/.next/static/chunks/1792_-2m366un.js +1 -0
  142. package/.next/standalone/.next/static/chunks/{0nr5ul7mf1bo7.js → 179vwj~zm1gya.js} +1 -1
  143. package/.next/standalone/.next/static/chunks/{turbopack-10c4z.4l4dxnu.js → turbopack-0.6hkxuraykc4.js} +1 -1
  144. package/.next/standalone/.next/static/chunks/{turbopack-05.ehb143ourd.js → turbopack-0g2bivvnd2gyd.js} +1 -1
  145. package/.next/standalone/.next/static/chunks/{turbopack-0ji23rzquaykn.js → turbopack-0heaqdupr4xj6.js} +1 -1
  146. package/.next/standalone/.next/static/chunks/{turbopack-02wj1-z8.1081.js → turbopack-0jcfxeuy1ge85.js} +1 -1
  147. package/.next/standalone/.next/static/chunks/{turbopack-07.z46yb_52p5.js → turbopack-0rntg0~hh7h.0.js} +1 -1
  148. package/.next/standalone/.next/static/chunks/{turbopack-05j~l.6~_nm9l.js → turbopack-0sk1uk-fkcqdx.js} +1 -1
  149. package/.next/standalone/.next/static/chunks/{turbopack-11utvoktq4lmr.js → turbopack-0w89gj59tho~b.js} +1 -1
  150. package/.next/standalone/.next/static/chunks/{turbopack-04t3309-jsj3y.js → turbopack-0~gn911-6yqk2.js} +1 -1
  151. package/.next/standalone/.next/static/chunks/{turbopack-0-rpf9ad3km~v.js → turbopack-14fnzd5yh28gy.js} +1 -1
  152. package/.next/standalone/.next/static/{bybcCRIlOhSPtqdnJUPM- → pZhcwQ83aP87HDTIzzyJ6}/_buildManifest.js +8 -8
  153. package/.next/standalone/.next/static/{bybcCRIlOhSPtqdnJUPM- → pZhcwQ83aP87HDTIzzyJ6}/_clientMiddlewareManifest.js +1 -1
  154. package/.next/standalone/messages/de/terminal.json +1 -1
  155. package/.next/standalone/messages/en/terminal.json +1 -1
  156. package/.next/standalone/messages/es/terminal.json +1 -1
  157. package/.next/standalone/messages/fr/terminal.json +1 -1
  158. package/.next/standalone/messages/ja/terminal.json +1 -1
  159. package/.next/standalone/messages/ko/terminal.json +1 -1
  160. package/.next/standalone/messages/pt-BR/terminal.json +1 -1
  161. package/.next/standalone/messages/ru/terminal.json +1 -1
  162. package/.next/standalone/messages/tr/terminal.json +1 -1
  163. package/.next/standalone/messages/zh-CN/terminal.json +1 -1
  164. package/.next/standalone/messages/zh-TW/terminal.json +1 -1
  165. package/.next/standalone/package.json +6 -5
  166. package/.next/standalone/server.js +1 -1
  167. package/.next/standalone/src/config/tmux.conf +11 -3
  168. package/README.de.md +41 -14
  169. package/README.es.md +41 -14
  170. package/README.fr.md +41 -14
  171. package/README.ja.md +41 -14
  172. package/README.ko.md +41 -14
  173. package/README.md +41 -14
  174. package/README.pt-BR.md +41 -14
  175. package/README.ru.md +41 -14
  176. package/README.tr.md +41 -14
  177. package/README.zh-CN.md +41 -14
  178. package/README.zh-TW.md +41 -14
  179. package/dist/server.js +6 -5
  180. package/package.json +6 -5
  181. package/src/config/tmux.conf +11 -3
  182. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0y7-o~r._.js +0 -3
  183. package/.next/standalone/.next/server/chunks/ssr/_08ytq3p._.js +0 -8
  184. package/.next/standalone/.next/static/chunks/00snihvygw9l4.js +0 -1
  185. package/.next/standalone/.next/static/chunks/00yfl7agnve...js +0 -5
  186. package/.next/standalone/.next/static/chunks/02ocrfbfg24nx.js +0 -1
  187. package/.next/standalone/.next/static/chunks/04rkjr-2duj5b.js +0 -1
  188. package/.next/standalone/.next/static/chunks/0c8wt2p0xhe5i.js +0 -1
  189. package/.next/standalone/.next/static/chunks/0duqg-kf_y-i3.js +0 -1
  190. package/.next/standalone/.next/static/chunks/0ep22zye8flqz.js +0 -1
  191. package/.next/standalone/.next/static/chunks/0ff6a07hvp4pu.js +0 -6
  192. package/.next/standalone/.next/static/chunks/0fg9x61ohrtv3.js +0 -1
  193. package/.next/standalone/.next/static/chunks/0fgx5m8vdxaap.js +0 -1
  194. package/.next/standalone/.next/static/chunks/0m_sn0gry7q~c.js +0 -1
  195. package/.next/standalone/.next/static/chunks/0p5c0gp6gyhh6.js +0 -1
  196. package/.next/standalone/.next/static/chunks/0qsmo2marl-6d.js +0 -16
  197. package/.next/standalone/.next/static/chunks/0ul9.j_tmw365.js +0 -1
  198. package/.next/standalone/.next/static/chunks/107yj1xx63glr.js +0 -1
  199. package/.next/standalone/.next/static/chunks/12_04jv.ecbd-.js +0 -1
  200. package/.next/standalone/.next/static/chunks/14cccdp9z2qvf.js +0 -8
  201. package/.next/standalone/.next/static/chunks/14yj.l6qq359_.js +0 -1
  202. package/.next/standalone/.next/static/chunks/1786bmcy3s8sd.js +0 -1
  203. package/.next/standalone/.next/static/chunks/17mf_h-e8sebp.js +0 -1
  204. /package/.next/standalone/.next/static/{bybcCRIlOhSPtqdnJUPM- → pZhcwQ83aP87HDTIzzyJ6}/_ssgManifest.js +0 -0
package/README.de.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # purplemux
2
2
 
3
- **Claude Code, viele Aufgaben gleichzeitig. Schneller.**
3
+ **Claude Code und Codex, viele Aufgaben gleichzeitig. Schneller.**
4
4
 
5
5
  Alle Sessions auf einem Bildschirm. Unterbrechungsfrei, auch auf dem Handy.
6
6
 
@@ -24,7 +24,7 @@ Lieber eine native App? Hol dir den macOS-Electron-Build aus dem [neuesten Relea
24
24
 
25
25
  ## Warum purplemux
26
26
 
27
- - **Multi-Session-Dashboard** — Behalte „arbeitet / wartet auf Eingabe"-Status aller Claude-Code-Sessions auf einen Blick im Überblick
27
+ - **Multi-Session-Dashboard** — Behalte „arbeitet / wartet auf Eingabe"-Status aller Claude-Code- und Codex-Sessions auf einen Blick im Überblick
28
28
  - **Rate-Limit-Überwachung** — Restkontingent für 5 Stunden / 7 Tage samt Reset-Countdown
29
29
  - **Push-Benachrichtigungen** — Desktop- und Mobile-Hinweise, wenn eine Aufgabe fertig ist oder Eingaben nötig sind
30
30
  - **Mobil & geräteübergreifend** — Dieselbe Session vom Handy, Tablet oder einem anderen Desktop aus erreichen
@@ -49,20 +49,23 @@ Außerdem
49
49
  - **Tastenkürzel** — Splits, Tab-Wechsel, Fokusbewegung
50
50
  - **Terminal-Themes** — Dark-/Light-Modus, mehrere Farbschemata
51
51
  - **Workspaces & Gruppen** — Panel-Layouts, Tabs und Arbeitsverzeichnisse pro Workspace speichern und wiederherstellen. Workspaces per Drag-and-Drop in Gruppen organisieren
52
- - **Git-Workflow** — Side-by-side / Line-by-line mit Syntax-Highlighting, Inline-Hunk-Erweiterung und ein paginierter Verlaufs-Tab. Fetch / Pull / Push direkt aus dem Panel (mit Ahead/Behind-Anzeige) — schlägt der Sync fehl (dirty worktree, Konflikte), per Klick Claude fragen
52
+ - **Git-Workflow** — Side-by-side / Line-by-line mit Syntax-Highlighting, Inline-Hunk-Erweiterung und ein paginierter Verlaufs-Tab. Fetch / Pull / Push direkt aus dem Panel (mit Ahead/Behind-Anzeige) — schlägt der Sync fehl (dirty worktree, Konflikte), per Klick Claude oder Codex fragen
53
53
  - **Webbrowser-Panel** — Eingebetteter Browser neben dem Terminal zum Prüfen der Entwicklungsausgabe (Electron). Über die `purplemux`-CLI steuerbar, mit eingebautem Geräte-Emulator zum Umschalten der Viewports
54
+ - **Agent-Tabs** — Starte Claude, Codex oder eine kombinierte Session-Liste über das Neuer-Tab-Menü
54
55
 
55
- ### Claude-Code-Integration
56
+ ### Claude-Code- und Codex-Integration
56
57
 
57
58
  - **Echtzeit-Status** — „Arbeitet / wartet auf Eingabe"-Anzeigen, Wechsel zwischen Sessions
58
59
  - **Live-Session-Ansicht** — Nachrichten, Tool-Aufrufe, Tasks, Berechtigungsanfragen, Thinking-Blöcke
59
- - **Ein-Klick-Resume** — Unterbrochene Sessions direkt im Browser wieder aufnehmen
60
+ - **Codex-Tabs** — Starte Codex-CLI-Sessions mit derselben tmux-basierten Persistenz wie Claude
61
+ - **Session-Liste** — Durchsuche und setze aktuelle Claude- und Codex-Sessions in einer kombinierten Ansicht fort
62
+ - **Ein-Klick-Resume** — Unterbrochene Claude- oder Codex-Sessions direkt im Browser wieder aufnehmen
60
63
  - **Auto-Resume** — Stellt beim Serverstart vorherige Claude-Sessions automatisch wieder her
61
64
  - **Schnell-Prompts** — Häufig genutzte Prompts hinterlegen und mit einem Klick senden
62
65
  - **Anhänge** — Bilder direkt in die Chat-Eingabe ziehen oder Dateien anhängen, deren Pfad automatisch eingefügt wird. Funktioniert auch mobil
63
66
  - **Nachrichtenverlauf** — Frühere Nachrichten wiederverwenden
64
- - **Nutzungsstatistik** — Tokens (input / output / cache read / cache write), Kosten, Auswertung pro Projekt, tägliche KI-Berichte
65
- - **Rate-Limits** — Restkontingent 5 Stunden / 7 Tage mit Reset-Countdown
67
+ - **Nutzungsstatistik** — Claude + Codex Tokens, Kosten, Auswertung pro Projekt, tägliche KI-Berichte
68
+ - **Rate-Limits** — Restkontingent 5 Stunden / 7 Tage mit Reset-Countdown für unterstützte Provider
66
69
 
67
70
  ### Mobil & Zugänglichkeit
68
71
 
@@ -90,6 +93,22 @@ Außerdem
90
93
  - [Node.js](https://nodejs.org/) 20+
91
94
  - [tmux](https://github.com/tmux/tmux)
92
95
 
96
+ Erforderlich für Claude-Tabs. Installiere Claude Code und melde dich an, bevor du einen Claude-Tab startest:
97
+
98
+ ```bash
99
+ curl -fsSL https://claude.ai/install.sh | bash
100
+ # oder mit dem Homebrew-Latest-Channel
101
+ brew install --cask claude-code@latest
102
+ ```
103
+
104
+ Optional für Codex-Tabs. Installiere Codex CLI und melde dich an, bevor du einen Codex-Tab startest:
105
+
106
+ ```bash
107
+ npm i -g @openai/codex
108
+ # oder
109
+ brew install --cask codex
110
+ ```
111
+
93
112
  ### npx (am schnellsten)
94
113
 
95
114
  ```bash
@@ -103,6 +122,13 @@ npm install -g purplemux
103
122
  purplemux
104
123
  ```
105
124
 
125
+ ### CLI-Beispiele
126
+
127
+ ```bash
128
+ purplemux tab create -w WS -t codex-cli -n "fix auth"
129
+ purplemux tab create -w WS -t agent-sessions
130
+ ```
131
+
106
132
  ### Aus dem Quellcode
107
133
 
108
134
  ```bash
@@ -199,24 +225,25 @@ Standard ist HTTP. Bei externer Erreichbarkeit unbedingt HTTPS verwenden:
199
225
  ▼ ▼ ▼
200
226
  ┌─────────────────────────────────────────────────────────────┐
201
227
  │ System │
202
- │ tmux (purple socket) Claude Code
228
+ │ tmux (purple socket) Agent CLIs
203
229
  │ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
204
- │ │Session1│ │Session2│ ... │ ~/.claude/sessions/ │ │
205
- │ │ (shell)│ │ (shell)│ │ ~/.claude/projects/ │ │
206
- │ └────────┘ └────────┘ │ └─ {project}/{sid}.jsonl │ │
230
+ │ │Session1│ │Session2│ ... │ Claude Code │ │
231
+ │ │ (shell)│ │ (shell)│ │ ~/.claude/projects/*.jsonl │ │
232
+ │ └────────┘ └────────┘ │ Codex │ │
233
+ │ │ ~/.codex/sessions/*.jsonl │ │
207
234
  │ └────────────────────────────┘ │
208
235
  └─────────────────────────────────────────────────────────────┘
209
236
  ```
210
237
 
211
238
  **Terminal-I/O** — xterm.js verbindet sich über WebSocket mit node-pty; node-pty hängt an tmux-Sessions. Ein Binärprotokoll übernimmt stdin/stdout/resize mit Backpressure-Kontrolle.
212
239
 
213
- **Statuserkennung** — Claude-Code-Event-Hooks (`SessionStart`, `Stop`, `Notification`) liefern sofortige Updates per HTTP POST. Alle 5–15 s werden Prozessbäume geprüft und die letzten 8 KB der JSONL-Dateien analysiert.
240
+ **Statuserkennung** — Agent-Event-Hooks liefern sofortige Updates per HTTP POST. Claude Code nutzt `SessionStart`, `Stop` und `Notification`; Codex nutzt `SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `Stop` und `PermissionRequest`. Alle 5–15 s werden Prozessbäume geprüft und die letzten 8 KB der JSONL-Dateien analysiert.
214
241
 
215
- **Timeline** — Überwacht JSONL-Session-Logs unter `~/.claude/projects/`, parst bei Änderungen neue Zeilen und streamt strukturierte Einträge an den Browser.
242
+ **Timeline** — Überwacht JSONL-Session-Logs unter `~/.claude/projects/` und `~/.codex/sessions/`, parst bei Änderungen neue Zeilen und streamt strukturierte Einträge an den Browser.
216
243
 
217
244
  **tmux-Isolation** — Nutzt einen eigenen `purple`-Socket, vollständig getrennt von deinem bestehenden tmux. Kein Prefix-Key, keine Statusleiste.
218
245
 
219
- **Auto-Recovery** — Beim Serverstart werden vorherige Claude-Sessions via `claude --resume {sessionId}` wiederhergestellt.
246
+ **Auto-Recovery** — Beim Serverstart werden vorherige Claude-Sessions via `claude --resume {sessionId}` wiederhergestellt. Codex-Sessions lassen sich über die Session-Liste oder mit `codex resume {sessionId}` fortsetzen.
220
247
 
221
248
  ## License
222
249
 
package/README.es.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # purplemux
2
2
 
3
- **Claude Code, muchas tareas a la vez. Más rápido.**
3
+ **Claude Code y Codex, muchas tareas a la vez. Más rápido.**
4
4
 
5
5
  Todas tus sesiones en una sola pantalla. Sin interrupciones, incluso desde el móvil.
6
6
 
@@ -24,7 +24,7 @@ Abre [http://localhost:8022](http://localhost:8022) en tu navegador. Listo.
24
24
 
25
25
  ## Por qué purplemux
26
26
 
27
- - **Panel multisesión** — Consulta de un vistazo el estado «trabajando / requiere entrada» de todas tus sesiones de Claude Code
27
+ - **Panel multisesión** — Consulta de un vistazo el estado «trabajando / requiere entrada» de todas tus sesiones de Claude Code y Codex
28
28
  - **Monitor de límites** — Saldo de 5 horas / 7 días y cuenta atrás para el reinicio
29
29
  - **Notificaciones push** — Avisos de escritorio y móvil cuando una tarea termina o requiere entrada
30
30
  - **Móvil y multi-dispositivo** — Accede a la misma sesión desde el teléfono, la tablet u otro escritorio
@@ -49,20 +49,23 @@ Además
49
49
  - **Atajos de teclado** — División, cambio de pestaña, movimiento de foco
50
50
  - **Temas de terminal** — Modo oscuro / claro y varios esquemas de color
51
51
  - **Workspaces y grupos** — Guarda y restaura diseños de paneles, pestañas y directorios de trabajo por workspace. Organiza los workspaces en grupos con arrastrar y soltar
52
- - **Flujo de trabajo Git** — Side-by-side / Line-by-line con resaltado de sintaxis, expansión de hunks en línea y una pestaña de historial paginada. Fetch / pull / push desde el panel con indicadores ahead/behind — si la sincronización falla (dirty worktree, conflictos), Ask Claude con un clic
52
+ - **Flujo de trabajo Git** — Side-by-side / Line-by-line con resaltado de sintaxis, expansión de hunks en línea y una pestaña de historial paginada. Fetch / pull / push desde el panel con indicadores ahead/behind — si la sincronización falla (dirty worktree, conflictos), Ask Claude o Codex con un clic
53
53
  - **Panel de navegador web** — Navegador integrado junto al terminal para comprobar la salida de desarrollo (Electron). Contrólalo desde la CLI `purplemux` y cambia el viewport con un emulador de dispositivo integrado
54
+ - **Pestañas de agentes** — Inicia Claude, Codex o una lista de sesiones combinada desde el menú de nueva pestaña
54
55
 
55
- ### Integración con Claude Code
56
+ ### Integración con Claude Code y Codex
56
57
 
57
58
  - **Estado en tiempo real** — Indicadores de trabajando / requiere entrada y cambio entre sesiones
58
59
  - **Vista en vivo de la sesión** — Mensajes, llamadas a herramientas, tareas, solicitudes de permisos y bloques de thinking
59
- - **Reanudación en un clic** — Retoma una sesión pausada directamente desde el navegador
60
+ - **Pestañas Codex** — Inicia sesiones de Codex CLI con la misma persistencia basada en tmux que Claude
61
+ - **Lista de sesiones** — Explora y reanuda sesiones recientes de Claude y Codex desde una vista combinada
62
+ - **Reanudación en un clic** — Retoma una sesión pausada de Claude o Codex directamente desde el navegador
60
63
  - **Reanudación automática** — Recupera sesiones previas de Claude al arrancar el servidor
61
64
  - **Prompts rápidos** — Registra prompts frecuentes y envíalos con un clic
62
65
  - **Adjuntos** — Suelta imágenes en el cuadro de chat o adjunta archivos para insertar su ruta. También funciona en móvil
63
66
  - **Historial de mensajes** — Reutiliza mensajes anteriores
64
- - **Estadísticas de uso** — Tokens (input / output / cache read / cache write), coste, desglose por proyecto e informes diarios de IA
65
- - **Rate limits** — Saldo de 5 horas / 7 días y cuenta atrás para el reinicio
67
+ - **Estadísticas de uso** — Tokens de Claude + Codex, coste, desglose por proyecto e informes diarios de IA
68
+ - **Rate limits** — Saldo de 5 horas / 7 días y cuenta atrás para el reinicio en proveedores compatibles
66
69
 
67
70
  ### Móvil y accesibilidad
68
71
 
@@ -90,6 +93,22 @@ Además
90
93
  - [Node.js](https://nodejs.org/) 20+
91
94
  - [tmux](https://github.com/tmux/tmux)
92
95
 
96
+ Requerido para pestañas de Claude. Instala Claude Code e inicia sesión antes de abrir una pestaña de Claude:
97
+
98
+ ```bash
99
+ curl -fsSL https://claude.ai/install.sh | bash
100
+ # o con el canal latest de Homebrew
101
+ brew install --cask claude-code@latest
102
+ ```
103
+
104
+ Opcional para pestañas de Codex. Instala Codex CLI e inicia sesión antes de abrir una pestaña de Codex:
105
+
106
+ ```bash
107
+ npm i -g @openai/codex
108
+ # o
109
+ brew install --cask codex
110
+ ```
111
+
93
112
  ### npx (el más rápido)
94
113
 
95
114
  ```bash
@@ -103,6 +122,13 @@ npm install -g purplemux
103
122
  purplemux
104
123
  ```
105
124
 
125
+ ### Ejemplos de CLI
126
+
127
+ ```bash
128
+ purplemux tab create -w WS -t codex-cli -n "fix auth"
129
+ purplemux tab create -w WS -t agent-sessions
130
+ ```
131
+
106
132
  ### Desde el código fuente
107
133
 
108
134
  ```bash
@@ -199,24 +225,25 @@ Por defecto usa HTTP. Aplica siempre HTTPS al exponer la aplicación al exterior
199
225
  ▼ ▼ ▼
200
226
  ┌─────────────────────────────────────────────────────────────┐
201
227
  │ System │
202
- │ tmux (purple socket) Claude Code
228
+ │ tmux (purple socket) Agent CLIs
203
229
  │ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
204
- │ │Session1│ │Session2│ ... │ ~/.claude/sessions/ │ │
205
- │ │ (shell)│ │ (shell)│ │ ~/.claude/projects/ │ │
206
- │ └────────┘ └────────┘ │ └─ {project}/{sid}.jsonl │ │
230
+ │ │Session1│ │Session2│ ... │ Claude Code │ │
231
+ │ │ (shell)│ │ (shell)│ │ ~/.claude/projects/*.jsonl │ │
232
+ │ └────────┘ └────────┘ │ Codex │ │
233
+ │ │ ~/.codex/sessions/*.jsonl │ │
207
234
  │ └────────────────────────────┘ │
208
235
  └─────────────────────────────────────────────────────────────┘
209
236
  ```
210
237
 
211
238
  **E/S del terminal** — xterm.js se conecta a node-pty mediante WebSocket y node-pty se acopla a las sesiones de tmux. Un protocolo binario gestiona stdin/stdout/resize con control de backpressure.
212
239
 
213
- **Detección de estado** — Los hooks de eventos de Claude Code (`SessionStart`, `Stop`, `Notification`) envían actualizaciones inmediatas por HTTP POST. Cada 5–15 s se inspeccionan los árboles de procesos y se analizan los últimos 8 KB de los archivos JSONL.
240
+ **Detección de estado** — Los hooks de eventos de los agentes envían actualizaciones inmediatas por HTTP POST. Claude Code usa `SessionStart`, `Stop` y `Notification`; Codex usa `SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `Stop` y `PermissionRequest`. Cada 5–15 s se inspeccionan los árboles de procesos y se analizan los últimos 8 KB de los archivos JSONL.
214
241
 
215
- **Timeline** — Observa los logs JSONL de sesiones bajo `~/.claude/projects/`, parsea las nuevas líneas al cambiar el archivo y envía entradas estructuradas al navegador.
242
+ **Timeline** — Observa los logs JSONL de sesiones bajo `~/.claude/projects/` y `~/.codex/sessions/`, parsea las nuevas líneas al cambiar el archivo y envía entradas estructuradas al navegador.
216
243
 
217
244
  **Aislamiento tmux** — Usa un socket `purple` dedicado, totalmente separado de tu tmux actual. Sin tecla prefix ni barra de estado.
218
245
 
219
- **Recuperación automática** — Al iniciar el servidor, restaura las sesiones previas de Claude con `claude --resume {sessionId}`.
246
+ **Recuperación automática** — Al iniciar el servidor, restaura las sesiones previas de Claude con `claude --resume {sessionId}`. Las sesiones de Codex pueden reanudarse desde la lista de sesiones o con `codex resume {sessionId}`.
220
247
 
221
248
  ## License
222
249
 
package/README.fr.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # purplemux
2
2
 
3
- **Claude Code, plusieurs tâches en même temps. En plus rapide.**
3
+ **Claude Code et Codex, plusieurs tâches en même temps. En plus rapide.**
4
4
 
5
5
  Toutes vos sessions sur un seul écran. Sans coupure, même depuis le téléphone.
6
6
 
@@ -24,7 +24,7 @@ Vous préférez une app native ? Récupérez la build Electron macOS depuis la [
24
24
 
25
25
  ## Pourquoi purplemux
26
26
 
27
- - **Tableau de bord multi-session** — Visualisez d'un coup d'œil l'état « en cours / en attente d'entrée » de toutes vos sessions Claude Code
27
+ - **Tableau de bord multi-session** — Visualisez d'un coup d'œil l'état « en cours / en attente d'entrée » de toutes vos sessions Claude Code et Codex
28
28
  - **Suivi des limites** — Solde 5 heures / 7 jours avec compte à rebours de réinitialisation
29
29
  - **Notifications push** — Alertes desktop et mobiles lorsqu'une tâche se termine ou attend une entrée
30
30
  - **Mobile et multi-appareil** — Accédez à la même session depuis un téléphone, une tablette ou un autre poste
@@ -49,20 +49,23 @@ Et aussi
49
49
  - **Raccourcis clavier** — Découpe, changement d'onglet, déplacement du focus
50
50
  - **Thèmes du terminal** — Mode sombre / clair, plusieurs palettes de couleurs
51
51
  - **Workspaces et groupes** — Sauvegardez et restaurez la disposition des panneaux, onglets et répertoires par workspace. Organisez les workspaces en groupes par glisser-déposer
52
- - **Flux de travail Git** — Side-by-side / Line-by-line avec coloration syntaxique, expansion des hunks en ligne et un onglet d'historique paginé. Fetch / pull / push depuis le panneau, avec indicateurs ahead/behind — si la synchronisation échoue (dirty worktree, conflits), Ask Claude en un clic
52
+ - **Flux de travail Git** — Side-by-side / Line-by-line avec coloration syntaxique, expansion des hunks en ligne et un onglet d'historique paginé. Fetch / pull / push depuis le panneau, avec indicateurs ahead/behind — si la synchronisation échoue (dirty worktree, conflits), Ask Claude ou Codex en un clic
53
53
  - **Panneau navigateur web** — Navigateur intégré à côté du terminal pour vérifier le rendu du développement (Electron). Pilotable depuis la CLI `purplemux` et changement de viewport via un émulateur d'appareil intégré
54
+ - **Onglets d'agents** — Lancez Claude, Codex ou une liste de sessions combinée depuis le menu nouvel onglet
54
55
 
55
- ### Intégration Claude Code
56
+ ### Intégration Claude Code et Codex
56
57
 
57
58
  - **État en temps réel** — Indicateurs en cours / en attente d'entrée, bascule entre sessions
58
59
  - **Vue de session en direct** — Messages, appels d'outils, tâches, demandes de permission, blocs thinking
59
- - **Reprise en un clic** — Reprenez une session suspendue directement depuis le navigateur
60
+ - **Onglets Codex** — Lancez des sessions Codex CLI avec la même persistance basée sur tmux que Claude
61
+ - **Liste de sessions** — Parcourez et reprenez les sessions Claude et Codex récentes depuis une vue combinée
62
+ - **Reprise en un clic** — Reprenez une session Claude ou Codex suspendue directement depuis le navigateur
60
63
  - **Reprise automatique** — Restauration automatique des sessions Claude au démarrage du serveur
61
64
  - **Prompts rapides** — Enregistrez vos prompts récurrents et envoyez-les en un clic
62
65
  - **Pièces jointes** — Déposez des images dans le champ de chat, ou attachez des fichiers pour insérer leur chemin. Fonctionne aussi sur mobile
63
66
  - **Historique des messages** — Réutilisez vos anciens messages
64
- - **Statistiques d'usage** — Tokens (input / output / cache read / cache write), coût, ventilation par projet, rapports IA quotidiens
65
- - **Rate limits** — Solde 5 heures / 7 jours, compte à rebours de réinitialisation
67
+ - **Statistiques d'usage** — Tokens Claude + Codex, coût, ventilation par projet, rapports IA quotidiens
68
+ - **Rate limits** — Solde 5 heures / 7 jours avec compte à rebours de réinitialisation pour les fournisseurs pris en charge
66
69
 
67
70
  ### Mobile et accessibilité
68
71
 
@@ -90,6 +93,22 @@ Et aussi
90
93
  - [Node.js](https://nodejs.org/) 20+
91
94
  - [tmux](https://github.com/tmux/tmux)
92
95
 
96
+ Requis pour les onglets Claude. Installez Claude Code et connectez-vous avant de démarrer un onglet Claude :
97
+
98
+ ```bash
99
+ curl -fsSL https://claude.ai/install.sh | bash
100
+ # ou avec le canal latest de Homebrew
101
+ brew install --cask claude-code@latest
102
+ ```
103
+
104
+ Optionnel pour les onglets Codex. Installez Codex CLI et connectez-vous avant de démarrer un onglet Codex :
105
+
106
+ ```bash
107
+ npm i -g @openai/codex
108
+ # ou
109
+ brew install --cask codex
110
+ ```
111
+
93
112
  ### npx (le plus rapide)
94
113
 
95
114
  ```bash
@@ -103,6 +122,13 @@ npm install -g purplemux
103
122
  purplemux
104
123
  ```
105
124
 
125
+ ### Exemples CLI
126
+
127
+ ```bash
128
+ purplemux tab create -w WS -t codex-cli -n "fix auth"
129
+ purplemux tab create -w WS -t agent-sessions
130
+ ```
131
+
106
132
  ### Depuis les sources
107
133
 
108
134
  ```bash
@@ -199,24 +225,25 @@ Par défaut, le protocole est HTTP. Utilisez impérativement HTTPS en exposition
199
225
  ▼ ▼ ▼
200
226
  ┌─────────────────────────────────────────────────────────────┐
201
227
  │ System │
202
- │ tmux (purple socket) Claude Code
228
+ │ tmux (purple socket) Agent CLIs
203
229
  │ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
204
- │ │Session1│ │Session2│ ... │ ~/.claude/sessions/ │ │
205
- │ │ (shell)│ │ (shell)│ │ ~/.claude/projects/ │ │
206
- │ └────────┘ └────────┘ │ └─ {project}/{sid}.jsonl │ │
230
+ │ │Session1│ │Session2│ ... │ Claude Code │ │
231
+ │ │ (shell)│ │ (shell)│ │ ~/.claude/projects/*.jsonl │ │
232
+ │ └────────┘ └────────┘ │ Codex │ │
233
+ │ │ ~/.codex/sessions/*.jsonl │ │
207
234
  │ └────────────────────────────┘ │
208
235
  └─────────────────────────────────────────────────────────────┘
209
236
  ```
210
237
 
211
238
  **E/S du terminal** — xterm.js se connecte à node-pty via WebSocket, puis node-pty s'attache aux sessions tmux. Un protocole binaire gère stdin/stdout/resize avec contrôle de backpressure.
212
239
 
213
- **Détection d'état** — Les hooks d'événements Claude Code (`SessionStart`, `Stop`, `Notification`) envoient des mises à jour immédiates en HTTP POST. Toutes les 5–15 s, l'arbre de processus est inspecté et les 8 derniers Ko des fichiers JSONL sont analysés.
240
+ **Détection d'état** — Les hooks d'événements des agents envoient des mises à jour immédiates en HTTP POST. Claude Code utilise `SessionStart`, `Stop` et `Notification`; Codex utilise `SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `Stop` et `PermissionRequest`. Toutes les 5–15 s, l'arbre de processus est inspecté et les 8 derniers Ko des fichiers JSONL sont analysés.
214
241
 
215
- **Chronologie** — Surveille les logs de session JSONL sous `~/.claude/projects/`, parse les nouvelles lignes à chaque changement et diffuse des entrées structurées vers le navigateur.
242
+ **Chronologie** — Surveille les logs de session JSONL sous `~/.claude/projects/` et `~/.codex/sessions/`, parse les nouvelles lignes à chaque changement et diffuse des entrées structurées vers le navigateur.
216
243
 
217
244
  **Isolation tmux** — Utilise un socket `purple` dédié, totalement séparé de votre tmux existant. Pas de touche préfixe ni de barre d'état.
218
245
 
219
- **Reprise automatique** — Au démarrage du serveur, les sessions Claude précédentes sont restaurées via `claude --resume {sessionId}`.
246
+ **Reprise automatique** — Au démarrage du serveur, les sessions Claude précédentes sont restaurées via `claude --resume {sessionId}`. Les sessions Codex peuvent être reprises depuis la liste des sessions ou avec `codex resume {sessionId}`.
220
247
 
221
248
  ## License
222
249
 
package/README.ja.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # purplemux
2
2
 
3
- **Claude Code、複数のタスクを同時に。もっと速く。**
3
+ **Claude Code と Codex、複数のタスクを同時に。もっと速く。**
4
4
 
5
5
  1 つの画面ですべてのセッションを、スマホでも途切れることなく。
6
6
 
@@ -24,7 +24,7 @@ npx purplemux@latest
24
24
 
25
25
  ## purplemux を選ぶ理由
26
26
 
27
- - **マルチセッションダッシュボード** — すべての Claude Code セッションの「作業中 / 入力待ち」ステータスを一目で把握
27
+ - **マルチセッションダッシュボード** — すべての Claude Code と Codex セッションの「作業中 / 入力待ち」ステータスを一目で把握
28
28
  - **レート制限モニタリング** — 5 時間 / 7 日の残量とリセットまでのカウントダウンを表示
29
29
  - **プッシュ通知** — タスク完了や入力要求をデスクトップ / モバイルへ通知
30
30
  - **モバイル & マルチデバイス** — スマホ、タブレット、別のデスクトップからも同じセッションへ
@@ -49,20 +49,23 @@ npx purplemux@latest
49
49
  - **キーボードショートカット** — 分割、タブ切り替え、フォーカス移動
50
50
  - **ターミナルテーマ** — ダーク / ライトモード、多彩なカラーテーマ
51
51
  - **ワークスペース & グループ** — ペインレイアウト、タブ、作業ディレクトリをワークスペース単位で保存 / 復元。ドラッグ & ドロップでワークスペースをグループ化して管理
52
- - **Git ワークフロー** — Side-by-side / Line-by-line 切り替えとシンタックスハイライトに加え、インライン hunk 展開、ページネーション付き履歴タブ。パネルから直接 fetch / pull / push (ahead/behind 表示) — 同期失敗 (dirty worktree、コンフリクト) はワンクリックで Claude に質問
52
+ - **Git ワークフロー** — Side-by-side / Line-by-line 切り替えとシンタックスハイライトに加え、インライン hunk 展開、ページネーション付き履歴タブ。パネルから直接 fetch / pull / push (ahead/behind 表示) — 同期失敗 (dirty worktree、コンフリクト) はワンクリックで Claude または Codex に質問
53
53
  - **Web ブラウザペイン** — ターミナル隣の組み込みブラウザで開発結果を確認 (Electron)。`purplemux` CLI から操作でき、内蔵のデバイスエミュレータでビューポートを切り替え
54
+ - **エージェントタブ** — 新規タブメニューから Claude、Codex、または統合セッション一覧を開始
54
55
 
55
- ### Claude Code 連携
56
+ ### Claude Code と Codex 連携
56
57
 
57
58
  - **リアルタイムステータス** — 作業中 / 入力待ちインジケーター、セッション間の切り替え
58
59
  - **ライブセッションビュー** — メッセージ、ツール呼び出し、タスク、権限リクエスト、thinking ブロック
59
- - **ワンクリック Resume** — 中断したセッションをブラウザからそのまま再開
60
+ - **Codex タブ** Claude と同じ tmux ベースの永続性で Codex CLI セッションを起動
61
+ - **セッション一覧** — 最近の Claude と Codex セッションを 1 つの統合ビューで参照・再開
62
+ - **ワンクリック Resume** — 中断した Claude または Codex セッションをブラウザからそのまま再開
60
63
  - **自動 Resume** — サーバー起動時に以前の Claude セッションを自動復元
61
64
  - **クイックプロンプト** — よく使うプロンプトを登録してワンクリック送信
62
65
  - **添付** — チャット入力に画像をドロップ、またはファイル添付でパスを自動挿入。モバイルでも動作
63
66
  - **メッセージ履歴** — 過去のメッセージを再利用
64
- - **使用量分析** — トークン (input / output / cache read / cache write)、コスト、プロジェクト別分析、日次 AI レポート
65
- - **レート制限** — 5 時間 / 7 日の残量、リセットまでのカウントダウン
67
+ - **使用量分析** — Claude + Codex のトークン、コスト、プロジェクト別分析、日次 AI レポート
68
+ - **レート制限** — 対応プロバイダーの 5 時間 / 7 日の残量、リセットまでのカウントダウン
66
69
 
67
70
  ### モバイル & アクセシビリティ
68
71
 
@@ -90,6 +93,22 @@ npx purplemux@latest
90
93
  - [Node.js](https://nodejs.org/) 20+
91
94
  - [tmux](https://github.com/tmux/tmux)
92
95
 
96
+ Claude タブに必要です。Claude Code をインストールし、Claude タブを開始する前にログインしてください:
97
+
98
+ ```bash
99
+ curl -fsSL https://claude.ai/install.sh | bash
100
+ # または Homebrew latest チャンネル
101
+ brew install --cask claude-code@latest
102
+ ```
103
+
104
+ Codex タブは任意です。Codex CLI をインストールし、Codex タブを開始する前にログインしてください:
105
+
106
+ ```bash
107
+ npm i -g @openai/codex
108
+ # または
109
+ brew install --cask codex
110
+ ```
111
+
93
112
  ### npx (最速)
94
113
 
95
114
  ```bash
@@ -103,6 +122,13 @@ npm install -g purplemux
103
122
  purplemux
104
123
  ```
105
124
 
125
+ ### CLI 例
126
+
127
+ ```bash
128
+ purplemux tab create -w WS -t codex-cli -n "fix auth"
129
+ purplemux tab create -w WS -t agent-sessions
130
+ ```
131
+
106
132
  ### ソースから実行
107
133
 
108
134
  ```bash
@@ -199,24 +225,25 @@ tailscale serve --bg off 8022
199
225
  ▼ ▼ ▼
200
226
  ┌─────────────────────────────────────────────────────────────┐
201
227
  │ System │
202
- │ tmux (purple socket) Claude Code
228
+ │ tmux (purple socket) Agent CLIs
203
229
  │ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
204
- │ │Session1│ │Session2│ ... │ ~/.claude/sessions/ │ │
205
- │ │ (shell)│ │ (shell)│ │ ~/.claude/projects/ │ │
206
- │ └────────┘ └────────┘ │ └─ {project}/{sid}.jsonl │ │
230
+ │ │Session1│ │Session2│ ... │ Claude Code │ │
231
+ │ │ (shell)│ │ (shell)│ │ ~/.claude/projects/*.jsonl │ │
232
+ │ └────────┘ └────────┘ │ Codex │ │
233
+ │ │ ~/.codex/sessions/*.jsonl │ │
207
234
  │ └────────────────────────────┘ │
208
235
  └─────────────────────────────────────────────────────────────┘
209
236
  ```
210
237
 
211
238
  **ターミナル I/O** — xterm.js は WebSocket 経由で node-pty に接続し、node-pty は tmux セッションにアタッチされます。バイナリプロトコルで stdin / stdout / resize を処理し、バックプレッシャーを制御します。
212
239
 
213
- **ステータス検出** — Claude Code イベントフック (`SessionStart`, `Stop`, `Notification`) HTTP POST で即時更新を配信します。5〜15 秒ごとにプロセスツリーを確認し、JSONL ファイル末尾 8KB を解析します。
240
+ **ステータス検出** — エージェントイベントフックが HTTP POST で即時更新を配信します。Claude Code `SessionStart`、`Stop`、`Notification` を使用し、Codex `SessionStart`、`UserPromptSubmit`、`PreToolUse`、`PostToolUse`、`Stop`、`PermissionRequest` を使用します。5〜15 秒ごとにプロセスツリーを確認し、JSONL ファイル末尾 8KB を解析します。
214
241
 
215
- **タイムライン** — `~/.claude/projects/` 配下の JSONL セッションログを監視し、変更時に新しい行をパースして構造化エントリをブラウザへストリーミングします。
242
+ **タイムライン** — `~/.claude/projects/` と `~/.codex/sessions/` 配下の JSONL セッションログを監視し、変更時に新しい行をパースして構造化エントリをブラウザへストリーミングします。
216
243
 
217
244
  **tmux 分離** — 専用の `purple` ソケットを使用し、既存の tmux と完全に分離されています。prefix キーなし、ステータスバーなし。
218
245
 
219
- **自動復旧** — サーバー起動時に `claude --resume {sessionId}` で以前の Claude セッションを復元します。
246
+ **自動復旧** — サーバー起動時に `claude --resume {sessionId}` で以前の Claude セッションを復元します。Codex セッションはセッション一覧または `codex resume {sessionId}` で再開できます。
220
247
 
221
248
  ## License
222
249
 
package/README.ko.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # purplemux
2
2
 
3
- **Claude Code, 여러 작업을 동시에. 더 빠르게.**
3
+ **Claude Code와 Codex, 여러 작업을 동시에. 더 빠르게.**
4
4
 
5
5
  한 화면에서 모든 세션을, 폰에서도 끊김 없이.
6
6
 
@@ -24,7 +24,7 @@ npx purplemux@latest
24
24
 
25
25
  ## 왜 purplemux인가
26
26
 
27
- - **멀티 세션 대시보드** — 모든 Claude Code 세션의 작업중/사용자 요청 상태를 한눈에 확인
27
+ - **멀티 세션 대시보드** — 모든 Claude Code Codex 세션의 작업중/사용자 요청 상태를 한눈에 확인
28
28
  - **Rate Limit 모니터링** — 5시간/7일 잔여량과 리셋 카운트다운 표시
29
29
  - **푸시 알림** — 작업 완료나 입력이 필요하면 데스크탑/모바일 알림
30
30
  - **모바일 & 멀티 디바이스** — 폰, 태블릿, 다른 데스크탑 어디서든 같은 세션에 접속
@@ -49,20 +49,23 @@ npx purplemux@latest
49
49
  - **키보드 단축키** — 분할, 탭 전환, 포커스 이동
50
50
  - **터미널 테마** — 다크/라이트 모드, 다양한 컬러 테마
51
51
  - **워크스페이스 & 그룹** — 패널 레이아웃, 탭, 작업 디렉토리를 워크스페이스 단위로 저장/복원. 드래그 앤 드롭으로 워크스페이스를 그룹으로 묶어 관리
52
- - **Git 워크플로** — Side-by-side / Line-by-line 뷰 전환과 Syntax highlighting, 인라인 hunk 펼치기, 페이지네이션 히스토리 탭. 패널에서 바로 fetch / pull / push (ahead/behind 표시) — 동기화 실패(dirty worktree, 충돌)는 원클릭으로 Claude에게 질문
52
+ - **Git 워크플로** — Side-by-side / Line-by-line 뷰 전환과 Syntax highlighting, 인라인 hunk 펼치기, 페이지네이션 히스토리 탭. 패널에서 바로 fetch / pull / push (ahead/behind 표시) — 동기화 실패(dirty worktree, 충돌)는 원클릭으로 Claude 또는 Codex에게 질문
53
53
  - **웹 브라우저 패널** — 터미널 옆 내장 브라우저로 개발 결과 확인 (Electron). `purplemux` CLI로 제어하고, 내장 디바이스 에뮬레이터로 뷰포트 전환
54
+ - **에이전트 탭** — 새 탭 메뉴에서 Claude, Codex 또는 통합 세션 목록 시작
54
55
 
55
- ### Claude Code 연동
56
+ ### Claude Code Codex 연동
56
57
 
57
58
  - **실시간 상태** — 작업중/사용자 요청 상태 표시, 세션 간 전환
58
59
  - **라이브 세션 뷰** — 메시지, 도구 호출, 태스크, 권한 요청, thinking 블록
59
- - **원클릭 Resume** — 중단된 세션을 브라우저에서 바로 재개
60
+ - **Codex 탭** Claude와 동일한 tmux 기반 지속성으로 Codex CLI 세션 실행
61
+ - **세션 목록** — 최근 Claude와 Codex 세션을 하나의 통합 뷰에서 탐색하고 재개
62
+ - **원클릭 Resume** — 중단된 Claude 또는 Codex 세션을 브라우저에서 바로 재개
60
63
  - **자동 Resume** — 서버 시작 시 이전 Claude 세션 자동 복구
61
64
  - **빠른 프롬프트** — 자주 쓰는 프롬프트 등록, 원클릭 전송
62
65
  - **첨부** — 채팅 입력에 이미지 드롭, 파일 첨부 시 경로 자동 삽입. 모바일에서도 동작
63
66
  - **메시지 히스토리** — 이전 메시지 재사용
64
- - **사용량 통계** — 토큰(input/output/cache read/cache write), 비용, 프로젝트별 분석, 일별 AI 리포트
65
- - **Rate Limit** — 5시간/7일 잔여량, 리셋 카운트다운
67
+ - **사용량 통계** — Claude + Codex 토큰, 비용, 프로젝트별 분석, 일별 AI 리포트
68
+ - **Rate Limit** — 지원되는 에이전트의 5시간/7일 잔여량, 리셋 카운트다운
66
69
 
67
70
  ### 모바일 & 접근성
68
71
 
@@ -90,6 +93,22 @@ npx purplemux@latest
90
93
  - [Node.js](https://nodejs.org/) 20+
91
94
  - [tmux](https://github.com/tmux/tmux)
92
95
 
96
+ Claude 탭에 필요합니다. Claude Code를 설치하고 Claude 탭을 시작하기 전에 로그인하세요:
97
+
98
+ ```bash
99
+ curl -fsSL https://claude.ai/install.sh | bash
100
+ # 또는 Homebrew 최신 채널
101
+ brew install --cask claude-code@latest
102
+ ```
103
+
104
+ Codex 탭은 선택 사항입니다. Codex CLI를 설치하고 Codex 탭을 시작하기 전에 로그인하세요:
105
+
106
+ ```bash
107
+ npm i -g @openai/codex
108
+ # 또는
109
+ brew install --cask codex
110
+ ```
111
+
93
112
  ### npx (가장 빠름)
94
113
 
95
114
  ```bash
@@ -103,6 +122,13 @@ npm install -g purplemux
103
122
  purplemux
104
123
  ```
105
124
 
125
+ ### CLI 예시
126
+
127
+ ```bash
128
+ purplemux tab create -w WS -t codex-cli -n "fix auth"
129
+ purplemux tab create -w WS -t agent-sessions
130
+ ```
131
+
106
132
  ### 소스에서 실행
107
133
 
108
134
  ```bash
@@ -199,24 +225,25 @@ tailscale serve --bg off 8022
199
225
  ▼ ▼ ▼
200
226
  ┌─────────────────────────────────────────────────────────────┐
201
227
  │ System │
202
- │ tmux (purple socket) Claude Code
228
+ │ tmux (purple socket) Agent CLIs
203
229
  │ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
204
- │ │Session1│ │Session2│ ... │ ~/.claude/sessions/ │ │
205
- │ │ (shell)│ │ (shell)│ │ ~/.claude/projects/ │ │
206
- │ └────────┘ └────────┘ │ └─ {project}/{sid}.jsonl │ │
230
+ │ │Session1│ │Session2│ ... │ Claude Code │ │
231
+ │ │ (shell)│ │ (shell)│ │ ~/.claude/projects/*.jsonl │ │
232
+ │ └────────┘ └────────┘ │ Codex │ │
233
+ │ │ ~/.codex/sessions/*.jsonl │ │
207
234
  │ └────────────────────────────┘ │
208
235
  └─────────────────────────────────────────────────────────────┘
209
236
  ```
210
237
 
211
238
  **터미널 I/O** — xterm.js가 WebSocket으로 node-pty에 연결되고, node-pty는 tmux 세션에 연결됩니다. 이진 프로토콜로 stdin/stdout/resize를 처리하며 백프레셔를 제어합니다.
212
239
 
213
- **상태 감지** — Claude Code 이벤트 훅(`SessionStart`, `Stop`, `Notification`)이 HTTP POST로 즉시 업데이트를 전달합니다. 5–15초마다 프로세스 트리를 확인하고 JSONL 파일의 마지막 8KB를 분석합니다.
240
+ **상태 감지** — 에이전트 이벤트 훅이 HTTP POST로 즉시 업데이트를 전달합니다. Claude Code `SessionStart`, `Stop`, `Notification`을 사용하고, Codex는 `SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `Stop`, `PermissionRequest`를 사용합니다. 5–15초마다 프로세스 트리를 확인하고 JSONL 파일의 마지막 8KB를 분석합니다.
214
241
 
215
- **타임라인** — `~/.claude/projects/` 아래 JSONL 세션 로그를 감시하여 변경 시 새 줄을 파싱하고 구조화된 항목을 브라우저에 스트리밍합니다.
242
+ **타임라인** — `~/.claude/projects/`와 `~/.codex/sessions/` 아래 JSONL 세션 로그를 감시하여 변경 시 새 줄을 파싱하고 구조화된 항목을 브라우저에 스트리밍합니다.
216
243
 
217
244
  **tmux 격리** — 전용 `purple` 소켓을 사용하여 기존 tmux와 완전히 분리됩니다. prefix 키 없음, status bar 없음.
218
245
 
219
- **자동 복구** — 서버 시작 시 `claude --resume {sessionId}`로 이전 Claude 세션을 복원합니다.
246
+ **자동 복구** — 서버 시작 시 `claude --resume {sessionId}`로 이전 Claude 세션을 복원합니다. Codex 세션은 세션 목록 또는 `codex resume {sessionId}`로 재개할 수 있습니다.
220
247
 
221
248
  ## License
222
249