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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +49 -49
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/routes-manifest.json +7 -7
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06an6au._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__02f5zis._.js → [root-of-the-server]__08dxtof._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08z3drz._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__11uqzxt._.js → [root-of-the-server]__0kumyrr._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s7k1je._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_13qovxu._.js → _0.stp0n._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_11h746h._.js → _00cx0p2._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_02rms4q._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_06_8vkn._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0uwytsj._.js → _078y4dk._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0uph6rf._.js → _0kzht5v._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0m6flec._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0pg-q18._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0r90z3l._.js +8 -0
- package/.next/standalone/.next/server/chunks/ssr/_0w.1ts8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0w6jc9p._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0z6yp7a._.js → _0y_feze._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0v2czf2._.js → _10dec5o._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{messages_01~7za1._.js → messages_0f3u1ly._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{messages_10_yt3k._.js → messages_0k204ao._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_de_terminal_json_[json]_cjs_05jirtw._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_en_terminal_json_[json]_cjs_0~ls3g-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_es_terminal_json_[json]_cjs_04g2b1_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_fr_terminal_json_[json]_cjs_0uhakya._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ja_terminal_json_[json]_cjs_0776z4f._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ko_terminal_json_[json]_cjs_06611.3._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_terminal_json_[json]_cjs_034yyg9._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ru_terminal_json_[json]_cjs_0emk8~n._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_tr_terminal_json_[json]_cjs_0xpix8g._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_terminal_json_[json]_cjs_12vwl8a._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_terminal_json_[json]_cjs_0spg5z5._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_0t5csgq._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_use-intl_dist_esm_production_react_0bnxcps.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_00nri37._.js → src_components_05-kki3._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0jrgsp7._.js → src_components_0fb83uz._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0mhu5-5._.js → src_components_0gkfyrc._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0~e6p9k._.js → src_components_0n3s0.7._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_features_mobile_mobile-terminal-page_tsx_02chzch._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_features_workspace_terminal-page_tsx_0wuq-jl._.js +1 -1
- package/.next/standalone/.next/server/functions-config-manifest.json +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +49 -49
- package/.next/standalone/.next/server/pages/_app/build-manifest.json +6 -6
- package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/_app.js +2 -2
- package/.next/standalone/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/_document.js +3 -3
- package/.next/standalone/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/_error/build-manifest.json +3 -3
- package/.next/standalone/.next/server/pages/_error/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/_error.js +4 -4
- package/.next/standalone/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/de/404.html +1 -1
- package/.next/standalone/.next/server/pages/de/500.html +1 -1
- package/.next/standalone/.next/server/pages/en/404.html +1 -1
- package/.next/standalone/.next/server/pages/en/500.html +1 -1
- package/.next/standalone/.next/server/pages/es/404.html +1 -1
- package/.next/standalone/.next/server/pages/es/500.html +1 -1
- package/.next/standalone/.next/server/pages/fr/404.html +1 -1
- package/.next/standalone/.next/server/pages/fr/500.html +1 -1
- package/.next/standalone/.next/server/pages/index/build-manifest.json +7 -7
- package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +4 -4
- package/.next/standalone/.next/server/pages/index.js +5 -5
- package/.next/standalone/.next/server/pages/index.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/ja/404.html +1 -1
- package/.next/standalone/.next/server/pages/ja/500.html +1 -1
- package/.next/standalone/.next/server/pages/ko/404.html +1 -1
- package/.next/standalone/.next/server/pages/ko/500.html +1 -1
- package/.next/standalone/.next/server/pages/login/build-manifest.json +4 -4
- package/.next/standalone/.next/server/pages/login/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/login.js +4 -4
- package/.next/standalone/.next/server/pages/login.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
- package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
- package/.next/standalone/.next/server/pages/reports/build-manifest.json +6 -6
- package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/reports.js +5 -5
- package/.next/standalone/.next/server/pages/reports.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/reset/build-manifest.json +4 -4
- package/.next/standalone/.next/server/pages/reset/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/reset.js +5 -5
- package/.next/standalone/.next/server/pages/reset.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/ru/404.html +1 -1
- package/.next/standalone/.next/server/pages/ru/500.html +1 -1
- package/.next/standalone/.next/server/pages/stats/build-manifest.json +6 -6
- package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/stats.js +5 -5
- package/.next/standalone/.next/server/pages/stats.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/tools-required/build-manifest.json +4 -4
- package/.next/standalone/.next/server/pages/tools-required/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/tools-required.js +5 -5
- package/.next/standalone/.next/server/pages/tools-required.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/tr/404.html +1 -1
- package/.next/standalone/.next/server/pages/tr/500.html +1 -1
- package/.next/standalone/.next/server/pages/webview/build-manifest.json +6 -6
- package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/webview.js +5 -5
- package/.next/standalone/.next/server/pages/webview.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
- package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
- package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
- package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
- package/.next/standalone/.next/static/chunks/01.oujz.z9cq..js +1 -0
- package/.next/standalone/.next/static/chunks/{0~23in~aqup16.js → 0176ysv-agwwx.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0icark0o3b_6j.js → 03s5e91.zrsi_.js} +4 -4
- package/.next/standalone/.next/static/chunks/{0h57gqab.hlp8.js → 05zk.ks4roh-4.js} +6 -6
- package/.next/standalone/.next/static/chunks/05~6_0_288m3t.js +1 -0
- package/.next/standalone/.next/static/chunks/06uy95ammv.ud.js +1 -0
- package/.next/standalone/.next/static/chunks/08-el~h0ax929.js +1 -0
- package/.next/standalone/.next/static/chunks/{14_wa..vd6~2y.js → 0984g4~der6-4.js} +2 -2
- package/.next/standalone/.next/static/chunks/{016ho28abx9rt.js → 0_psc1~qmka.m.js} +4 -4
- package/.next/standalone/.next/static/chunks/{00s6ekn81~vi-.js → 0ap~c~__qw2_0.js} +6 -6
- package/.next/standalone/.next/static/chunks/0cir.n19rqu--.js +8 -0
- package/.next/standalone/.next/static/chunks/0dpud6_2~.2iv.js +1 -0
- package/.next/standalone/.next/static/chunks/0euxle0n3zjm3.js +1 -0
- package/.next/standalone/.next/static/chunks/0fax5v7rwhm7g.js +6 -0
- package/.next/standalone/.next/static/chunks/{0wf0tx~eo05t~.js → 0gfoib7v3q4k_.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0538dx15fw8_n.js → 0kep81gqgj5f5.js} +7 -7
- package/.next/standalone/.next/static/chunks/0kriln8d9.mdo.js +1 -0
- package/.next/standalone/.next/static/chunks/{0eia27slkj8a0.js → 0l.88yoxq6tq8.js} +6 -6
- package/.next/standalone/.next/static/chunks/{0ea-k_kbq5gi1.js → 0n7jmg60eqx1a.js} +1 -1
- package/.next/standalone/.next/static/chunks/0nm1wy7i1z64_.js +1 -0
- package/.next/standalone/.next/static/chunks/0o1e0e_okaxww.js +1 -0
- package/.next/standalone/.next/static/chunks/{0l80eb3i.wx6k.js → 0p2m6i37_wprv.js} +1 -1
- package/.next/standalone/.next/static/chunks/0qz-agdkp9v1q.js +16 -0
- package/.next/standalone/.next/static/chunks/0w1v1a5wi.byq.js +1 -0
- package/.next/standalone/.next/static/chunks/0wha_~zny181w.js +1 -0
- package/.next/standalone/.next/static/chunks/0wu-q.gmu-64d.js +5 -0
- package/.next/standalone/.next/static/chunks/{00l132mp04ubq.js → 0xfp8sfehtui9.js} +1 -1
- package/.next/standalone/.next/static/chunks/0yzd69blq638o.js +1 -0
- package/.next/standalone/.next/static/chunks/{0erebazb6ppou.js → 12f3vk2rnkb8u.js} +6 -6
- package/.next/standalone/.next/static/chunks/135cvydv7redz.js +1 -0
- package/.next/standalone/.next/static/chunks/14rrqgjvv0_69.js +1 -0
- package/.next/standalone/.next/static/chunks/14vposxx99rq4.js +1 -0
- package/.next/standalone/.next/static/chunks/{09mlfwheuib_9.js → 168.xhj-0lt8a.js} +1 -1
- package/.next/standalone/.next/static/chunks/1792_-2m366un.js +1 -0
- package/.next/standalone/.next/static/chunks/{0nr5ul7mf1bo7.js → 179vwj~zm1gya.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-10c4z.4l4dxnu.js → turbopack-0.6hkxuraykc4.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-05.ehb143ourd.js → turbopack-0g2bivvnd2gyd.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0ji23rzquaykn.js → turbopack-0heaqdupr4xj6.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-02wj1-z8.1081.js → turbopack-0jcfxeuy1ge85.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-07.z46yb_52p5.js → turbopack-0rntg0~hh7h.0.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-05j~l.6~_nm9l.js → turbopack-0sk1uk-fkcqdx.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-11utvoktq4lmr.js → turbopack-0w89gj59tho~b.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-04t3309-jsj3y.js → turbopack-0~gn911-6yqk2.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0-rpf9ad3km~v.js → turbopack-14fnzd5yh28gy.js} +1 -1
- package/.next/standalone/.next/static/{bybcCRIlOhSPtqdnJUPM- → pZhcwQ83aP87HDTIzzyJ6}/_buildManifest.js +8 -8
- package/.next/standalone/.next/static/{bybcCRIlOhSPtqdnJUPM- → pZhcwQ83aP87HDTIzzyJ6}/_clientMiddlewareManifest.js +1 -1
- package/.next/standalone/messages/de/terminal.json +1 -1
- package/.next/standalone/messages/en/terminal.json +1 -1
- package/.next/standalone/messages/es/terminal.json +1 -1
- package/.next/standalone/messages/fr/terminal.json +1 -1
- package/.next/standalone/messages/ja/terminal.json +1 -1
- package/.next/standalone/messages/ko/terminal.json +1 -1
- package/.next/standalone/messages/pt-BR/terminal.json +1 -1
- package/.next/standalone/messages/ru/terminal.json +1 -1
- package/.next/standalone/messages/tr/terminal.json +1 -1
- package/.next/standalone/messages/zh-CN/terminal.json +1 -1
- package/.next/standalone/messages/zh-TW/terminal.json +1 -1
- package/.next/standalone/package.json +6 -5
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/config/tmux.conf +11 -3
- package/README.de.md +41 -14
- package/README.es.md +41 -14
- package/README.fr.md +41 -14
- package/README.ja.md +41 -14
- package/README.ko.md +41 -14
- package/README.md +41 -14
- package/README.pt-BR.md +41 -14
- package/README.ru.md +41 -14
- package/README.tr.md +41 -14
- package/README.zh-CN.md +41 -14
- package/README.zh-TW.md +41 -14
- package/dist/server.js +6 -5
- package/package.json +6 -5
- package/src/config/tmux.conf +11 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0y7-o~r._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_08ytq3p._.js +0 -8
- package/.next/standalone/.next/static/chunks/00snihvygw9l4.js +0 -1
- package/.next/standalone/.next/static/chunks/00yfl7agnve...js +0 -5
- package/.next/standalone/.next/static/chunks/02ocrfbfg24nx.js +0 -1
- package/.next/standalone/.next/static/chunks/04rkjr-2duj5b.js +0 -1
- package/.next/standalone/.next/static/chunks/0c8wt2p0xhe5i.js +0 -1
- package/.next/standalone/.next/static/chunks/0duqg-kf_y-i3.js +0 -1
- package/.next/standalone/.next/static/chunks/0ep22zye8flqz.js +0 -1
- package/.next/standalone/.next/static/chunks/0ff6a07hvp4pu.js +0 -6
- package/.next/standalone/.next/static/chunks/0fg9x61ohrtv3.js +0 -1
- package/.next/standalone/.next/static/chunks/0fgx5m8vdxaap.js +0 -1
- package/.next/standalone/.next/static/chunks/0m_sn0gry7q~c.js +0 -1
- package/.next/standalone/.next/static/chunks/0p5c0gp6gyhh6.js +0 -1
- package/.next/standalone/.next/static/chunks/0qsmo2marl-6d.js +0 -16
- package/.next/standalone/.next/static/chunks/0ul9.j_tmw365.js +0 -1
- package/.next/standalone/.next/static/chunks/107yj1xx63glr.js +0 -1
- package/.next/standalone/.next/static/chunks/12_04jv.ecbd-.js +0 -1
- package/.next/standalone/.next/static/chunks/14cccdp9z2qvf.js +0 -8
- package/.next/standalone/.next/static/chunks/14yj.l6qq359_.js +0 -1
- package/.next/standalone/.next/static/chunks/1786bmcy3s8sd.js +0 -1
- package/.next/standalone/.next/static/chunks/17mf_h-e8sebp.js +0 -1
- /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
|
-
- **
|
|
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** —
|
|
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)
|
|
228
|
+
│ tmux (purple socket) Agent CLIs │
|
|
203
229
|
│ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
|
|
204
|
-
│ │Session1│ │Session2│ ... │
|
|
205
|
-
│ │ (shell)│ │ (shell)│ │
|
|
206
|
-
│ └────────┘ └────────┘ │
|
|
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** —
|
|
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
|
-
- **
|
|
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
|
|
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)
|
|
228
|
+
│ tmux (purple socket) Agent CLIs │
|
|
203
229
|
│ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
|
|
204
|
-
│ │Session1│ │Session2│ ... │
|
|
205
|
-
│ │ (shell)│ │ (shell)│ │
|
|
206
|
-
│ └────────┘ └────────┘ │
|
|
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
|
|
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
|
-
- **
|
|
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
|
|
65
|
-
- **Rate limits** — Solde 5 heures / 7 jours
|
|
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)
|
|
228
|
+
│ tmux (purple socket) Agent CLIs │
|
|
203
229
|
│ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
|
|
204
|
-
│ │Session1│ │Session2│ ... │
|
|
205
|
-
│ │ (shell)│ │ (shell)│ │
|
|
206
|
-
│ └────────┘ └────────┘ │
|
|
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
|
|
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
|
-
-
|
|
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
|
-
- **使用量分析** —
|
|
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)
|
|
228
|
+
│ tmux (purple socket) Agent CLIs │
|
|
203
229
|
│ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
|
|
204
|
-
│ │Session1│ │Session2│ ... │
|
|
205
|
-
│ │ (shell)│ │ (shell)│ │
|
|
206
|
-
│ └────────┘ └────────┘ │
|
|
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
|
|
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
|
-
-
|
|
60
|
+
- **Codex 탭** — Claude와 동일한 tmux 기반 지속성으로 Codex CLI 세션 실행
|
|
61
|
+
- **세션 목록** — 최근 Claude와 Codex 세션을 하나의 통합 뷰에서 탐색하고 재개
|
|
62
|
+
- **원클릭 Resume** — 중단된 Claude 또는 Codex 세션을 브라우저에서 바로 재개
|
|
60
63
|
- **자동 Resume** — 서버 시작 시 이전 Claude 세션 자동 복구
|
|
61
64
|
- **빠른 프롬프트** — 자주 쓰는 프롬프트 등록, 원클릭 전송
|
|
62
65
|
- **첨부** — 채팅 입력에 이미지 드롭, 파일 첨부 시 경로 자동 삽입. 모바일에서도 동작
|
|
63
66
|
- **메시지 히스토리** — 이전 메시지 재사용
|
|
64
|
-
- **사용량 통계** —
|
|
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)
|
|
228
|
+
│ tmux (purple socket) Agent CLIs │
|
|
203
229
|
│ ┌────────┐ ┌────────┐ ┌────────────────────────────┐ │
|
|
204
|
-
│ │Session1│ │Session2│ ... │
|
|
205
|
-
│ │ (shell)│ │ (shell)│ │
|
|
206
|
-
│ └────────┘ └────────┘ │
|
|
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
|
|
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
|
|