claude-mux 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.beads/README.md +81 -0
- package/.beads/config.yaml +62 -0
- package/.beads/interactions.jsonl +0 -0
- package/.beads/issues.jsonl +5 -0
- package/.beads/metadata.json +4 -0
- package/.eslintrc.json +25 -0
- package/.gitattributes +3 -0
- package/.prettierrc +7 -0
- package/CLAUDE.md +123 -0
- package/LICENSE +21 -0
- package/PLAN-beads-integration.md +250 -0
- package/README.md +366 -0
- package/dist/app.d.ts +2 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +147 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +65 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +5 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/serve.d.ts +8 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +59 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/setup.d.ts +4 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +12 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/tui.d.ts +9 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +234 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/uninstall.d.ts +4 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +12 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/components/Header.d.ts +7 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +14 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/HelpDialog.d.ts +6 -0
- package/dist/components/HelpDialog.d.ts.map +1 -0
- package/dist/components/HelpDialog.js +14 -0
- package/dist/components/HelpDialog.js.map +1 -0
- package/dist/components/SessionEntry.d.ts +17 -0
- package/dist/components/SessionEntry.d.ts.map +1 -0
- package/dist/components/SessionEntry.js +102 -0
- package/dist/components/SessionEntry.js.map +1 -0
- package/dist/components/SessionList.d.ts +14 -0
- package/dist/components/SessionList.d.ts.map +1 -0
- package/dist/components/SessionList.js +57 -0
- package/dist/components/SessionList.js.map +1 -0
- package/dist/components/StatusBar.d.ts +6 -0
- package/dist/components/StatusBar.d.ts.map +1 -0
- package/dist/components/StatusBar.js +7 -0
- package/dist/components/StatusBar.js.map +1 -0
- package/dist/components/index.d.ts +6 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +6 -0
- package/dist/components/index.js.map +1 -0
- package/dist/db/index.d.ts +2 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +3 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +4 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +23 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/sessions-json.d.ts +85 -0
- package/dist/db/sessions-json.d.ts.map +1 -0
- package/dist/db/sessions-json.js +242 -0
- package/dist/db/sessions-json.js.map +1 -0
- package/dist/db/sessions.d.ts +38 -0
- package/dist/db/sessions.d.ts.map +1 -0
- package/dist/db/sessions.js +87 -0
- package/dist/db/sessions.js.map +1 -0
- package/dist/hooks/claude-mux-hook.d.ts +15 -0
- package/dist/hooks/claude-mux-hook.d.ts.map +1 -0
- package/dist/hooks/claude-mux-hook.js +396 -0
- package/dist/hooks/claude-mux-hook.js.map +1 -0
- package/dist/hooks/claude-watch-hook.d.ts +15 -0
- package/dist/hooks/claude-watch-hook.d.ts.map +1 -0
- package/dist/hooks/claude-watch-hook.js +396 -0
- package/dist/hooks/claude-watch-hook.js.map +1 -0
- package/dist/server/custom-server.d.ts +13 -0
- package/dist/server/custom-server.d.ts.map +1 -0
- package/dist/server/custom-server.js +63 -0
- package/dist/server/custom-server.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +1143 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/middleware/cors.d.ts +2 -0
- package/dist/server/middleware/cors.d.ts.map +1 -0
- package/dist/server/middleware/cors.js +11 -0
- package/dist/server/middleware/cors.js.map +1 -0
- package/dist/server/routes/sessions.d.ts +3 -0
- package/dist/server/routes/sessions.d.ts.map +1 -0
- package/dist/server/routes/sessions.js +78 -0
- package/dist/server/routes/sessions.js.map +1 -0
- package/dist/server/routes/stream.d.ts +3 -0
- package/dist/server/routes/stream.d.ts.map +1 -0
- package/dist/server/routes/stream.js +45 -0
- package/dist/server/routes/stream.js.map +1 -0
- package/dist/server/types.d.ts +28 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +2 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server/watcher.d.ts +22 -0
- package/dist/server/watcher.d.ts.map +1 -0
- package/dist/server/watcher.js +119 -0
- package/dist/server/watcher.js.map +1 -0
- package/dist/server/websocket.d.ts +51 -0
- package/dist/server/websocket.d.ts.map +1 -0
- package/dist/server/websocket.js +156 -0
- package/dist/server/websocket.js.map +1 -0
- package/dist/server/ws-handlers.d.ts +174 -0
- package/dist/server/ws-handlers.d.ts.map +1 -0
- package/dist/server/ws-handlers.js +695 -0
- package/dist/server/ws-handlers.js.map +1 -0
- package/dist/setup/hooks.d.ts +44 -0
- package/dist/setup/hooks.d.ts.map +1 -0
- package/dist/setup/hooks.js +267 -0
- package/dist/setup/hooks.js.map +1 -0
- package/dist/setup/index.d.ts +3 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +3 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/wizard.d.ts +4 -0
- package/dist/setup/wizard.d.ts.map +1 -0
- package/dist/setup/wizard.js +72 -0
- package/dist/setup/wizard.js.map +1 -0
- package/dist/tmux/detect.d.ts +25 -0
- package/dist/tmux/detect.d.ts.map +1 -0
- package/dist/tmux/detect.js +71 -0
- package/dist/tmux/detect.js.map +1 -0
- package/dist/tmux/navigate.d.ts +13 -0
- package/dist/tmux/navigate.d.ts.map +1 -0
- package/dist/tmux/navigate.js +41 -0
- package/dist/tmux/navigate.js.map +1 -0
- package/dist/tmux/pane.d.ts +57 -0
- package/dist/tmux/pane.d.ts.map +1 -0
- package/dist/tmux/pane.js +156 -0
- package/dist/tmux/pane.js.map +1 -0
- package/dist/tmux/resize.d.ts +10 -0
- package/dist/tmux/resize.d.ts.map +1 -0
- package/dist/tmux/resize.js +25 -0
- package/dist/tmux/resize.js.map +1 -0
- package/dist/utils/paths.d.ts +7 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +9 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/pid.d.ts +5 -0
- package/dist/utils/pid.d.ts.map +1 -0
- package/dist/utils/pid.js +14 -0
- package/dist/utils/pid.js.map +1 -0
- package/dist/utils/version.d.ts +6 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +6 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/web/client/_app/immutable/assets/0.WptSHSUl.css +1 -0
- package/dist/web/client/_app/immutable/assets/2.s6Kx4oz1.css +1 -0
- package/dist/web/client/_app/immutable/assets/4.DoNWy7tW.css +1 -0
- package/dist/web/client/_app/immutable/assets/AllSessionsPanel.CGHY3HLy.css +1 -0
- package/dist/web/client/_app/immutable/chunks/-3mUPuLP.js +1 -0
- package/dist/web/client/_app/immutable/chunks/B5U4_V3d.js +1 -0
- package/dist/web/client/_app/immutable/chunks/BHwiZXRv.js +1 -0
- package/dist/web/client/_app/immutable/chunks/C9P-coqM.js +1 -0
- package/dist/web/client/_app/immutable/chunks/Cegv0r8x.js +1 -0
- package/dist/web/client/_app/immutable/chunks/DU91Ml7U.js +3 -0
- package/dist/web/client/_app/immutable/chunks/DmdO6ygw.js +1 -0
- package/dist/web/client/_app/immutable/chunks/HKNo9LID.js +5 -0
- package/dist/web/client/_app/immutable/chunks/U4ip-C0d.js +2 -0
- package/dist/web/client/_app/immutable/chunks/cgUjKIhX.js +2 -0
- package/dist/web/client/_app/immutable/entry/app.CGIBnoln.js +2 -0
- package/dist/web/client/_app/immutable/entry/start.CJk8zB1j.js +1 -0
- package/dist/web/client/_app/immutable/nodes/0.CqlJ9a31.js +1 -0
- package/dist/web/client/_app/immutable/nodes/1.BQUZh2-w.js +1 -0
- package/dist/web/client/_app/immutable/nodes/2.CCV1YdgF.js +1 -0
- package/dist/web/client/_app/immutable/nodes/3.D9tDCdq8.js +1 -0
- package/dist/web/client/_app/immutable/nodes/4.BqPyNkFA.js +6 -0
- package/dist/web/client/_app/version.json +1 -0
- package/dist/web/client/robots.txt +3 -0
- package/dist/web/env.js +32 -0
- package/dist/web/handler.js +744 -0
- package/dist/web/index.js +49 -0
- package/dist/web/server/chunks/0-BHWsmCJv.js +23 -0
- package/dist/web/server/chunks/0-BHWsmCJv.js.map +1 -0
- package/dist/web/server/chunks/1-YRx6A8Tm.js +17 -0
- package/dist/web/server/chunks/1-YRx6A8Tm.js.map +1 -0
- package/dist/web/server/chunks/2-eC6JuGAo.js +22 -0
- package/dist/web/server/chunks/2-eC6JuGAo.js.map +1 -0
- package/dist/web/server/chunks/3-Bk-wV20p.js +32 -0
- package/dist/web/server/chunks/3-Bk-wV20p.js.map +1 -0
- package/dist/web/server/chunks/4-nteBgDrW.js +21 -0
- package/dist/web/server/chunks/4-nteBgDrW.js.map +1 -0
- package/dist/web/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang-Bt4B0-oi.js +35 -0
- package/dist/web/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang-Bt4B0-oi.js.map +1 -0
- package/dist/web/server/chunks/_layout.svelte-BIF9eZCY.js +453 -0
- package/dist/web/server/chunks/_layout.svelte-BIF9eZCY.js.map +1 -0
- package/dist/web/server/chunks/_page.svelte-Be6iabRn.js +34 -0
- package/dist/web/server/chunks/_page.svelte-Be6iabRn.js.map +1 -0
- package/dist/web/server/chunks/_page.svelte-C_fGJVSE.js +576 -0
- package/dist/web/server/chunks/_page.svelte-C_fGJVSE.js.map +1 -0
- package/dist/web/server/chunks/_page.svelte-CnfJk6cu.js +2722 -0
- package/dist/web/server/chunks/_page.svelte-CnfJk6cu.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-3WAmKvn2.js +34 -0
- package/dist/web/server/chunks/_server.ts-3WAmKvn2.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-BAWJCSFb.js +29 -0
- package/dist/web/server/chunks/_server.ts-BAWJCSFb.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-BPpMOZCm.js +24 -0
- package/dist/web/server/chunks/_server.ts-BPpMOZCm.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-BUKgRb6U.js +13 -0
- package/dist/web/server/chunks/_server.ts-BUKgRb6U.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-BVHUS8fm.js +41 -0
- package/dist/web/server/chunks/_server.ts-BVHUS8fm.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-BrF3od0O.js +45 -0
- package/dist/web/server/chunks/_server.ts-BrF3od0O.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-C4oPmOJR.js +38 -0
- package/dist/web/server/chunks/_server.ts-C4oPmOJR.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-CDAUUmG_.js +21 -0
- package/dist/web/server/chunks/_server.ts-CDAUUmG_.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-CR0uWvpz.js +24 -0
- package/dist/web/server/chunks/_server.ts-CR0uWvpz.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-CSqdCNGi.js +21 -0
- package/dist/web/server/chunks/_server.ts-CSqdCNGi.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-DI9fzUo9.js +52 -0
- package/dist/web/server/chunks/_server.ts-DI9fzUo9.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-DNjJTClI.js +46 -0
- package/dist/web/server/chunks/_server.ts-DNjJTClI.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-DdbOAkOj.js +22 -0
- package/dist/web/server/chunks/_server.ts-DdbOAkOj.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-Df2isGQc.js +41 -0
- package/dist/web/server/chunks/_server.ts-Df2isGQc.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-Vpw25_-3.js +12 -0
- package/dist/web/server/chunks/_server.ts-Vpw25_-3.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-WldRpSRi.js +26 -0
- package/dist/web/server/chunks/_server.ts-WldRpSRi.js.map +1 -0
- package/dist/web/server/chunks/alert-dialog-description-DDA6u-nS.js +2890 -0
- package/dist/web/server/chunks/alert-dialog-description-DDA6u-nS.js.map +1 -0
- package/dist/web/server/chunks/auth-DrUf-v4J.js +51 -0
- package/dist/web/server/chunks/auth-DrUf-v4J.js.map +1 -0
- package/dist/web/server/chunks/button-D6xS9rHt.js +2335 -0
- package/dist/web/server/chunks/button-D6xS9rHt.js.map +1 -0
- package/dist/web/server/chunks/chunk-EKzHsMy_.js +42 -0
- package/dist/web/server/chunks/chunks-DmdqVYC7.js +58 -0
- package/dist/web/server/chunks/chunks-DmdqVYC7.js.map +1 -0
- package/dist/web/server/chunks/client-CUrSQijh.js +18 -0
- package/dist/web/server/chunks/client-CUrSQijh.js.map +1 -0
- package/dist/web/server/chunks/clsx-FzI4_gi0.js +332 -0
- package/dist/web/server/chunks/clsx-FzI4_gi0.js.map +1 -0
- package/dist/web/server/chunks/error.svelte-D-c-9pTE.js +27 -0
- package/dist/web/server/chunks/error.svelte-D-c-9pTE.js.map +1 -0
- package/dist/web/server/chunks/events-BDBlYddw.js +89 -0
- package/dist/web/server/chunks/events-BDBlYddw.js.map +1 -0
- package/dist/web/server/chunks/exports-CCurQ-Tl.js +131 -0
- package/dist/web/server/chunks/exports-CCurQ-Tl.js.map +1 -0
- package/dist/web/server/chunks/hooks.server-BK1bopsh.js +86 -0
- package/dist/web/server/chunks/hooks.server-BK1bopsh.js.map +1 -0
- package/dist/web/server/chunks/index2-BQnysSj-.js +2588 -0
- package/dist/web/server/chunks/index2-BQnysSj-.js.map +1 -0
- package/dist/web/server/chunks/internal-DLENj6YI.js +61 -0
- package/dist/web/server/chunks/internal-DLENj6YI.js.map +1 -0
- package/dist/web/server/chunks/pane-Dg3pKvsm.js +94 -0
- package/dist/web/server/chunks/pane-Dg3pKvsm.js.map +1 -0
- package/dist/web/server/chunks/sessions-json-DgfkCLO7.js +107 -0
- package/dist/web/server/chunks/sessions-json-DgfkCLO7.js.map +1 -0
- package/dist/web/server/chunks/sessions.svelte-Ds82MvkB.js +178 -0
- package/dist/web/server/chunks/sessions.svelte-Ds82MvkB.js.map +1 -0
- package/dist/web/server/chunks/state.svelte-xeAZvWZ6.js +7 -0
- package/dist/web/server/chunks/state.svelte-xeAZvWZ6.js.map +1 -0
- package/dist/web/server/chunks/ws-handlers-B4r5eSP2.js +733 -0
- package/dist/web/server/chunks/ws-handlers-B4r5eSP2.js.map +1 -0
- package/dist/web/server/index.js +4907 -0
- package/dist/web/server/index.js.map +1 -0
- package/dist/web/server/manifest.js +233 -0
- package/dist/web/server/manifest.js.map +1 -0
- package/docs/images/desktop-dashboard.png +0 -0
- package/docs/images/desktop-session.png +0 -0
- package/docs/images/mobile-dashboard.png +0 -0
- package/docs/images/mobile-session.png +0 -0
- package/docs/release-checklist.md +228 -0
- package/docs/removing-hooks.md +135 -0
- package/docs/state-transitions.md +109 -0
- package/package.json +71 -0
- package/src/app.tsx +188 -0
- package/src/cli.ts +83 -0
- package/src/commands/index.ts +4 -0
- package/src/commands/serve.ts +75 -0
- package/src/commands/setup.ts +13 -0
- package/src/commands/tui.ts +255 -0
- package/src/commands/uninstall.ts +13 -0
- package/src/components/Header.tsx +32 -0
- package/src/components/HelpDialog.tsx +45 -0
- package/src/components/SessionEntry.tsx +202 -0
- package/src/components/SessionList.tsx +98 -0
- package/src/components/StatusBar.tsx +26 -0
- package/src/components/index.ts +5 -0
- package/src/db/index.ts +20 -0
- package/src/db/sessions-json.ts +314 -0
- package/src/hooks/claude-mux-hook.ts +498 -0
- package/src/server/watcher.ts +128 -0
- package/src/server/ws-handlers.ts +922 -0
- package/src/setup/hooks.ts +333 -0
- package/src/setup/index.ts +2 -0
- package/src/setup/wizard.ts +81 -0
- package/src/tmux/detect.ts +87 -0
- package/src/tmux/navigate.ts +42 -0
- package/src/tmux/pane.ts +167 -0
- package/src/tmux/resize.ts +28 -0
- package/src/utils/paths.ts +11 -0
- package/src/utils/pid.ts +12 -0
- package/src/utils/version.ts +5 -0
- package/tests/components/Header.test.tsx +42 -0
- package/tests/components/SessionEntry-extended.test.tsx +165 -0
- package/tests/components/SessionEntry.test.tsx +138 -0
- package/tests/components/SessionList.test.tsx +110 -0
- package/tests/components/StatusBar.test.tsx +31 -0
- package/tests/db/index.test.ts +78 -0
- package/tests/db/sessions.test.ts +230 -0
- package/tests/server/integration.test.ts +319 -0
- package/tests/server/sessions.test.ts +114 -0
- package/tests/setup/hooks-integration.test.ts +148 -0
- package/tests/setup/hooks.test.ts +123 -0
- package/tests/tmux/detect.test.ts +54 -0
- package/tests/tmux/navigate.test.ts +30 -0
- package/tests/utils/pid.test.ts +17 -0
- package/tsconfig.cli.json +9 -0
- package/tsconfig.json +22 -0
- package/vitest.config.ts +29 -0
- package/web/.svelte-kit/adapter-bun/.vite/manifest.json +408 -0
- package/web/.svelte-kit/adapter-bun/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +1 -0
- package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_layout.WptSHSUl.css +1 -0
- package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.DldLgTc-.css +1 -0
- package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.DoNWy7tW.css +1 -0
- package/web/.svelte-kit/adapter-bun/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +49 -0
- package/web/.svelte-kit/adapter-bun/chunks/alert-dialog-description.js +2670 -0
- package/web/.svelte-kit/adapter-bun/chunks/auth.js +59 -0
- package/web/.svelte-kit/adapter-bun/chunks/button.js +82 -0
- package/web/.svelte-kit/adapter-bun/chunks/client.js +29 -0
- package/web/.svelte-kit/adapter-bun/chunks/context.js +133 -0
- package/web/.svelte-kit/adapter-bun/chunks/environment.js +34 -0
- package/web/.svelte-kit/adapter-bun/chunks/events.js +121 -0
- package/web/.svelte-kit/adapter-bun/chunks/exports.js +174 -0
- package/web/.svelte-kit/adapter-bun/chunks/false.js +4 -0
- package/web/.svelte-kit/adapter-bun/chunks/index.js +59 -0
- package/web/.svelte-kit/adapter-bun/chunks/index2.js +2828 -0
- package/web/.svelte-kit/adapter-bun/chunks/internal.js +920 -0
- package/web/.svelte-kit/adapter-bun/chunks/pane.js +82 -0
- package/web/.svelte-kit/adapter-bun/chunks/sessions-json.js +124 -0
- package/web/.svelte-kit/adapter-bun/chunks/sessions.svelte.js +229 -0
- package/web/.svelte-kit/adapter-bun/chunks/shared.js +542 -0
- package/web/.svelte-kit/adapter-bun/chunks/state.svelte.js +16 -0
- package/web/.svelte-kit/adapter-bun/chunks/utils.js +43 -0
- package/web/.svelte-kit/adapter-bun/chunks/ws-handlers.js +782 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/auth/login/_server.ts.js +22 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/auth/logout/_server.ts.js +9 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/beads/_server.ts.js +22 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/browse/_server.ts.js +50 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/chrome/_server.ts.js +30 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/files/image/_server.ts.js +53 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/health/_server.ts.js +7 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/projects/new-session/_server.ts.js +44 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/_server.ts.js +20 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +36 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +40 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +28 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/send/_server.ts.js +29 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_server.ts.js +49 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_target_/output/_server.ts.js +14 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/tmux/panes/_server.ts.js +21 -0
- package/web/.svelte-kit/adapter-bun/entries/fallbacks/error.svelte.js +27 -0
- package/web/.svelte-kit/adapter-bun/entries/hooks.server.js +105 -0
- package/web/.svelte-kit/adapter-bun/entries/pages/_layout.svelte.js +499 -0
- package/web/.svelte-kit/adapter-bun/entries/pages/_page.svelte.js +3057 -0
- package/web/.svelte-kit/adapter-bun/entries/pages/login/_page.server.ts.js +15 -0
- package/web/.svelte-kit/adapter-bun/entries/pages/login/_page.svelte.js +37 -0
- package/web/.svelte-kit/adapter-bun/entries/pages/session/_target_/_page.svelte.js +653 -0
- package/web/.svelte-kit/adapter-bun/index.js +3864 -0
- package/web/.svelte-kit/adapter-bun/internal.js +13 -0
- package/web/.svelte-kit/adapter-bun/manifest-full.js +167 -0
- package/web/.svelte-kit/adapter-bun/manifest.js +171 -0
- package/web/.svelte-kit/adapter-bun/nodes/0.js +8 -0
- package/web/.svelte-kit/adapter-bun/nodes/1.js +8 -0
- package/web/.svelte-kit/adapter-bun/nodes/2.js +8 -0
- package/web/.svelte-kit/adapter-bun/nodes/3.js +10 -0
- package/web/.svelte-kit/adapter-bun/nodes/4.js +8 -0
- package/web/.svelte-kit/adapter-bun/remote-entry.js +541 -0
- package/web/.svelte-kit/adapter-node/.vite/manifest.json +223 -0
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_layout.4NiX29PU.css +1 -0
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.BEMzYUGV.css +1 -0
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOJn7TG7.css +1 -0
- package/web/.svelte-kit/adapter-node/chunks/context.js +121 -0
- package/web/.svelte-kit/adapter-node/chunks/environment.js +34 -0
- package/web/.svelte-kit/adapter-node/chunks/exports.js +174 -0
- package/web/.svelte-kit/adapter-node/chunks/false.js +4 -0
- package/web/.svelte-kit/adapter-node/chunks/index.js +59 -0
- package/web/.svelte-kit/adapter-node/chunks/index2.js +2710 -0
- package/web/.svelte-kit/adapter-node/chunks/internal.js +1005 -0
- package/web/.svelte-kit/adapter-node/chunks/sessions-json.js +109 -0
- package/web/.svelte-kit/adapter-node/chunks/sessions.svelte.js +67 -0
- package/web/.svelte-kit/adapter-node/chunks/shared.js +542 -0
- package/web/.svelte-kit/adapter-node/chunks/state.svelte.js +16 -0
- package/web/.svelte-kit/adapter-node/chunks/utils.js +43 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/browse/_server.ts.js +50 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/health/_server.ts.js +7 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/projects/new-session/_server.ts.js +44 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/_server.ts.js +20 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +30 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/send/_server.ts.js +22 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js +126 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_target_/output/_server.ts.js +14 -0
- package/web/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +44 -0
- package/web/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +12 -0
- package/web/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +87 -0
- package/web/.svelte-kit/adapter-node/entries/pages/session/_target_/_page.svelte.js +76 -0
- package/web/.svelte-kit/adapter-node/index.js +3864 -0
- package/web/.svelte-kit/adapter-node/internal.js +13 -0
- package/web/.svelte-kit/adapter-node/manifest-full.js +103 -0
- package/web/.svelte-kit/adapter-node/manifest.js +107 -0
- package/web/.svelte-kit/adapter-node/nodes/0.js +8 -0
- package/web/.svelte-kit/adapter-node/nodes/1.js +8 -0
- package/web/.svelte-kit/adapter-node/nodes/2.js +8 -0
- package/web/.svelte-kit/adapter-node/nodes/3.js +8 -0
- package/web/.svelte-kit/adapter-node/remote-entry.js +541 -0
- package/web/.svelte-kit/ambient.d.ts +187 -0
- package/web/.svelte-kit/generated/client/app.js +33 -0
- package/web/.svelte-kit/generated/client/matchers.js +1 -0
- package/web/.svelte-kit/generated/client/nodes/0.js +1 -0
- package/web/.svelte-kit/generated/client/nodes/1.js +1 -0
- package/web/.svelte-kit/generated/client/nodes/2.js +1 -0
- package/web/.svelte-kit/generated/client/nodes/3.js +1 -0
- package/web/.svelte-kit/generated/client/nodes/4.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/app.js +33 -0
- package/web/.svelte-kit/generated/client-optimized/matchers.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/nodes/0.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/nodes/1.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/nodes/2.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/nodes/3.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/nodes/4.js +1 -0
- package/web/.svelte-kit/generated/root.js +3 -0
- package/web/.svelte-kit/generated/root.svelte +68 -0
- package/web/.svelte-kit/generated/server/internal.js +53 -0
- package/web/.svelte-kit/non-ambient.d.ts +73 -0
- package/web/.svelte-kit/output/client/.vite/manifest.json +203 -0
- package/web/.svelte-kit/output/client/_app/immutable/assets/0.WptSHSUl.css +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/assets/2.s6Kx4oz1.css +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/assets/4.DoNWy7tW.css +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/assets/AllSessionsPanel.CGHY3HLy.css +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/-3mUPuLP.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/B5U4_V3d.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/BHwiZXRv.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/C9P-coqM.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/Cegv0r8x.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DU91Ml7U.js +3 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DmdO6ygw.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/HKNo9LID.js +5 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/U4ip-C0d.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/cgUjKIhX.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/entry/app.CGIBnoln.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.CJk8zB1j.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/0.CqlJ9a31.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/1.BQUZh2-w.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/2.CCV1YdgF.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/3.D9tDCdq8.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/4.BqPyNkFA.js +6 -0
- package/web/.svelte-kit/output/client/_app/version.json +1 -0
- package/web/.svelte-kit/output/client/robots.txt +3 -0
- package/web/.svelte-kit/output/server/.vite/manifest.json +408 -0
- package/web/.svelte-kit/output/server/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +1 -0
- package/web/.svelte-kit/output/server/_app/immutable/assets/_layout.WptSHSUl.css +1 -0
- package/web/.svelte-kit/output/server/_app/immutable/assets/_page.DldLgTc-.css +1 -0
- package/web/.svelte-kit/output/server/_app/immutable/assets/_page.DoNWy7tW.css +1 -0
- package/web/.svelte-kit/output/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +49 -0
- package/web/.svelte-kit/output/server/chunks/alert-dialog-description.js +2670 -0
- package/web/.svelte-kit/output/server/chunks/auth.js +59 -0
- package/web/.svelte-kit/output/server/chunks/button.js +82 -0
- package/web/.svelte-kit/output/server/chunks/client.js +29 -0
- package/web/.svelte-kit/output/server/chunks/context.js +133 -0
- package/web/.svelte-kit/output/server/chunks/environment.js +34 -0
- package/web/.svelte-kit/output/server/chunks/events.js +121 -0
- package/web/.svelte-kit/output/server/chunks/exports.js +174 -0
- package/web/.svelte-kit/output/server/chunks/false.js +4 -0
- package/web/.svelte-kit/output/server/chunks/index.js +59 -0
- package/web/.svelte-kit/output/server/chunks/index2.js +2828 -0
- package/web/.svelte-kit/output/server/chunks/internal.js +920 -0
- package/web/.svelte-kit/output/server/chunks/pane.js +82 -0
- package/web/.svelte-kit/output/server/chunks/sessions-json.js +124 -0
- package/web/.svelte-kit/output/server/chunks/sessions.svelte.js +229 -0
- package/web/.svelte-kit/output/server/chunks/shared.js +542 -0
- package/web/.svelte-kit/output/server/chunks/state.svelte.js +16 -0
- package/web/.svelte-kit/output/server/chunks/utils.js +43 -0
- package/web/.svelte-kit/output/server/chunks/ws-handlers.js +782 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/auth/login/_server.ts.js +22 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/auth/logout/_server.ts.js +9 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/beads/_server.ts.js +22 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/browse/_server.ts.js +50 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/chrome/_server.ts.js +30 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/files/image/_server.ts.js +53 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/health/_server.ts.js +7 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/projects/new-session/_server.ts.js +44 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/_server.ts.js +20 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +36 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +40 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +28 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/send/_server.ts.js +29 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_server.ts.js +49 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_target_/output/_server.ts.js +14 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/tmux/panes/_server.ts.js +21 -0
- package/web/.svelte-kit/output/server/entries/fallbacks/error.svelte.js +27 -0
- package/web/.svelte-kit/output/server/entries/hooks.server.js +105 -0
- package/web/.svelte-kit/output/server/entries/pages/_layout.svelte.js +499 -0
- package/web/.svelte-kit/output/server/entries/pages/_page.svelte.js +3057 -0
- package/web/.svelte-kit/output/server/entries/pages/login/_page.server.ts.js +15 -0
- package/web/.svelte-kit/output/server/entries/pages/login/_page.svelte.js +37 -0
- package/web/.svelte-kit/output/server/entries/pages/session/_target_/_page.svelte.js +653 -0
- package/web/.svelte-kit/output/server/index.js +3864 -0
- package/web/.svelte-kit/output/server/internal.js +13 -0
- package/web/.svelte-kit/output/server/manifest-full.js +167 -0
- package/web/.svelte-kit/output/server/manifest.js +167 -0
- package/web/.svelte-kit/output/server/nodes/0.js +8 -0
- package/web/.svelte-kit/output/server/nodes/1.js +8 -0
- package/web/.svelte-kit/output/server/nodes/2.js +8 -0
- package/web/.svelte-kit/output/server/nodes/3.js +10 -0
- package/web/.svelte-kit/output/server/nodes/4.js +8 -0
- package/web/.svelte-kit/output/server/remote-entry.js +541 -0
- package/web/.svelte-kit/tsconfig.json +58 -0
- package/web/.svelte-kit/types/route_meta_data.json +55 -0
- package/web/.svelte-kit/types/src/routes/$types.d.ts +24 -0
- package/web/.svelte-kit/types/src/routes/api/auth/login/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/auth/logout/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/beads/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/browse/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/chrome/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/files/image/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/health/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/projects/new-session/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/kill/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/restart/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/screenshots/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/send/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[target]/output/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/tmux/panes/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/login/$types.d.ts +25 -0
- package/web/.svelte-kit/types/src/routes/login/proxy+page.server.ts +19 -0
- package/web/.svelte-kit/types/src/routes/session/[target]/$types.d.ts +19 -0
- package/web/README.md +42 -0
- package/web/components.json +16 -0
- package/web/package.json +35 -0
- package/web/src/app.css +128 -0
- package/web/src/app.d.ts +13 -0
- package/web/src/app.html +11 -0
- package/web/src/hooks.server.ts +156 -0
- package/web/src/lib/assets/favicon.svg +1 -0
- package/web/src/lib/components/AllSessionsPanel.svelte +789 -0
- package/web/src/lib/components/BeadsPanel.svelte +146 -0
- package/web/src/lib/components/IssueItem.svelte +287 -0
- package/web/src/lib/components/ScreenshotsPanel.svelte +336 -0
- package/web/src/lib/components/SessionsSidebar.svelte +312 -0
- package/web/src/lib/components/TerminalRenderer.svelte +189 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +18 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +18 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +29 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +17 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +20 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +20 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +20 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte +7 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +17 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte +7 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog.svelte +7 -0
- package/web/src/lib/components/ui/alert-dialog/index.ts +37 -0
- package/web/src/lib/components/ui/badge/badge.svelte +50 -0
- package/web/src/lib/components/ui/badge/index.ts +2 -0
- package/web/src/lib/components/ui/button/button.svelte +86 -0
- package/web/src/lib/components/ui/button/index.ts +17 -0
- package/web/src/lib/components/ui/checkbox/checkbox.svelte +36 -0
- package/web/src/lib/components/ui/checkbox/index.ts +6 -0
- package/web/src/lib/components/ui/dialog/dialog-close.svelte +7 -0
- package/web/src/lib/components/ui/dialog/dialog-content.svelte +45 -0
- package/web/src/lib/components/ui/dialog/dialog-description.svelte +17 -0
- package/web/src/lib/components/ui/dialog/dialog-footer.svelte +20 -0
- package/web/src/lib/components/ui/dialog/dialog-header.svelte +20 -0
- package/web/src/lib/components/ui/dialog/dialog-overlay.svelte +20 -0
- package/web/src/lib/components/ui/dialog/dialog-portal.svelte +7 -0
- package/web/src/lib/components/ui/dialog/dialog-title.svelte +17 -0
- package/web/src/lib/components/ui/dialog/dialog-trigger.svelte +7 -0
- package/web/src/lib/components/ui/dialog/dialog.svelte +7 -0
- package/web/src/lib/components/ui/dialog/index.ts +34 -0
- package/web/src/lib/components/ui/scroll-area/index.ts +10 -0
- package/web/src/lib/components/ui/scroll-area/scroll-area-scrollbar.svelte +31 -0
- package/web/src/lib/components/ui/scroll-area/scroll-area.svelte +43 -0
- package/web/src/lib/components/ui/textarea/index.ts +7 -0
- package/web/src/lib/components/ui/textarea/textarea.svelte +23 -0
- package/web/src/lib/index.ts +1 -0
- package/web/src/lib/server/auth.ts +90 -0
- package/web/src/lib/stores/beads.svelte.ts +163 -0
- package/web/src/lib/stores/input-injection.svelte.ts +39 -0
- package/web/src/lib/stores/preferences.svelte.ts +55 -0
- package/web/src/lib/stores/sessions.svelte.ts +108 -0
- package/web/src/lib/stores/terminal.svelte.ts +96 -0
- package/web/src/lib/stores/websocket-base.svelte.ts +209 -0
- package/web/src/lib/types/terminal.ts +31 -0
- package/web/src/lib/utils/terminal-parser.ts +239 -0
- package/web/src/lib/utils.ts +13 -0
- package/web/src/routes/+layout.svelte +450 -0
- package/web/src/routes/+page.svelte +19 -0
- package/web/src/routes/api/auth/login/+server.ts +34 -0
- package/web/src/routes/api/auth/logout/+server.ts +10 -0
- package/web/src/routes/api/beads/+server.ts +28 -0
- package/web/src/routes/api/browse/+server.ts +59 -0
- package/web/src/routes/api/chrome/+server.ts +35 -0
- package/web/src/routes/api/files/image/+server.ts +64 -0
- package/web/src/routes/api/health/+server.ts +6 -0
- package/web/src/routes/api/projects/new-session/+server.ts +50 -0
- package/web/src/routes/api/sessions/+server.ts +62 -0
- package/web/src/routes/api/sessions/[id]/+server.ts +19 -0
- package/web/src/routes/api/sessions/[id]/kill/+server.ts +46 -0
- package/web/src/routes/api/sessions/[id]/restart/+server.ts +59 -0
- package/web/src/routes/api/sessions/[id]/screenshots/+server.ts +32 -0
- package/web/src/routes/api/sessions/[id]/send/+server.ts +31 -0
- package/web/src/routes/api/sessions/[target]/output/+server.ts +13 -0
- package/web/src/routes/api/tmux/panes/+server.ts +32 -0
- package/web/src/routes/login/+page.server.ts +18 -0
- package/web/src/routes/login/+page.svelte +69 -0
- package/web/src/routes/session/[target]/+page.svelte +450 -0
- package/web/static/robots.txt +3 -0
- package/web/svelte.config.js +20 -0
- package/web/tsconfig.json +20 -0
- package/web/vite.config.ts +154 -0
package/README.md
ADDED
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<h1 align="center">claude-mux</h1>
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>A real-time web dashboard for monitoring and controlling multiple Claude Code sessions</strong>
|
|
5
|
+
</p>
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<p align="center">
|
|
9
|
+
<a href="https://www.npmjs.com/package/claude-mux"><img src="https://img.shields.io/npm/v/claude-mux?style=flat-square&color=blue" alt="npm version"></a>
|
|
10
|
+
<a href="https://www.npmjs.com/package/claude-mux"><img src="https://img.shields.io/npm/dm/claude-mux?style=flat-square&color=green" alt="npm downloads"></a>
|
|
11
|
+
<a href="https://github.com/christinoleo/claude-mux/blob/main/LICENSE"><img src="https://img.shields.io/github/license/christinoleo/claude-mux?style=flat-square" alt="license"></a>
|
|
12
|
+
<img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen?style=flat-square" alt="node version">
|
|
13
|
+
<img src="https://img.shields.io/badge/platform-linux%20%7C%20macos-lightgrey?style=flat-square" alt="platform">
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<p align="center">
|
|
17
|
+
<a href="#features">Features</a> •
|
|
18
|
+
<a href="#installation">Installation</a> •
|
|
19
|
+
<a href="#quick-start">Quick Start</a> •
|
|
20
|
+
<a href="#web-interface">Web Interface</a> •
|
|
21
|
+
<a href="#how-it-works">How It Works</a>
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Screenshots
|
|
27
|
+
|
|
28
|
+
<p align="center">
|
|
29
|
+
<img src="docs/images/desktop-dashboard.png" alt="Desktop Dashboard" width="100%">
|
|
30
|
+
<br>
|
|
31
|
+
<em>Dashboard view — Monitor all your Claude Code sessions at a glance</em>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
<p align="center">
|
|
35
|
+
<img src="docs/images/desktop-session.png" alt="Session View with Syntax Highlighting" width="100%">
|
|
36
|
+
<br>
|
|
37
|
+
<em>Session view — Real-time terminal output with syntax highlighting</em>
|
|
38
|
+
</p>
|
|
39
|
+
|
|
40
|
+
<details>
|
|
41
|
+
<summary><strong>Mobile Screenshots</strong></summary>
|
|
42
|
+
<br>
|
|
43
|
+
<p align="center">
|
|
44
|
+
<img src="docs/images/mobile-dashboard.png" alt="Mobile Dashboard" width="300">
|
|
45
|
+
|
|
46
|
+
<img src="docs/images/mobile-session.png" alt="Mobile Session" width="300">
|
|
47
|
+
</p>
|
|
48
|
+
<p align="center"><em>Fully responsive — Control your Claude sessions from your phone</em></p>
|
|
49
|
+
</details>
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Features
|
|
54
|
+
|
|
55
|
+
### Web Dashboard
|
|
56
|
+
- **Real-time monitoring** of all Claude Code sessions via WebSocket
|
|
57
|
+
- **Project-based organization** — Sessions grouped by working directory
|
|
58
|
+
- **Live status indicators** — See which sessions are busy, idle, or waiting for input
|
|
59
|
+
- **One-click navigation** — Jump to any session instantly
|
|
60
|
+
|
|
61
|
+
### Syntax Highlighting
|
|
62
|
+
- **Color-coded terminal output** — User prompts, Claude responses, tool calls, and results
|
|
63
|
+
- **Tool-specific colors** — Different colors for Read, Write, Edit, Bash, Task, and more
|
|
64
|
+
- **Diff highlighting** — Green for additions, red for removals in file edits
|
|
65
|
+
- **Toggleable theming** — Switch between styled and raw output
|
|
66
|
+
|
|
67
|
+
### Mobile-First Design
|
|
68
|
+
- **Fully responsive** — Works on desktop, tablet, and phone
|
|
69
|
+
- **Touch-friendly controls** — Large buttons for common actions
|
|
70
|
+
- **Quick action toolbar** — Send keys (Up, Down, Tab, Esc, Ctrl-C) with one tap
|
|
71
|
+
|
|
72
|
+
### Session Control
|
|
73
|
+
- **Send text input** — Type messages directly to Claude
|
|
74
|
+
- **Keyboard shortcuts** — Send special keys and key combinations
|
|
75
|
+
- **Terminal resize** — Fit tmux pane to browser viewport
|
|
76
|
+
- **Kill sessions** — Terminate Claude processes when needed
|
|
77
|
+
|
|
78
|
+
### Optional Features
|
|
79
|
+
- **Authentication** — Password-protect your dashboard
|
|
80
|
+
- **LAN access** — Monitor sessions from any device on your network
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Installation
|
|
85
|
+
|
|
86
|
+
### From npm/bun (recommended)
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
bun install -g claude-mux
|
|
90
|
+
# or: npm install -g claude-mux
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### From source
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
git clone https://github.com/christinoleo/claude-mux.git
|
|
97
|
+
cd claude-mux
|
|
98
|
+
bun install
|
|
99
|
+
bun run build
|
|
100
|
+
bun link # Makes 'claude-mux' available globally
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Quick Start
|
|
106
|
+
|
|
107
|
+
### 1. Run setup
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
claude-mux setup
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
This will:
|
|
114
|
+
- Create the data directory at `~/.claude-watch/`
|
|
115
|
+
- Install Claude Code hooks in `~/.claude/settings.json`
|
|
116
|
+
|
|
117
|
+
### 2. Start the web server
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
claude-mux serve --port 3456 --host 0.0.0.0
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 3. Open the dashboard
|
|
124
|
+
|
|
125
|
+
Navigate to `http://localhost:3456` (or your machine's IP for LAN access).
|
|
126
|
+
|
|
127
|
+
### 4. Start using Claude Code
|
|
128
|
+
|
|
129
|
+
Any Claude Code session started after setup will appear in the dashboard automatically.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Web Interface
|
|
134
|
+
|
|
135
|
+
### Dashboard
|
|
136
|
+
|
|
137
|
+
The main dashboard shows all active Claude Code sessions organized by project:
|
|
138
|
+
|
|
139
|
+
| Element | Description |
|
|
140
|
+
|---------|-------------|
|
|
141
|
+
| **Project cards** | Sessions grouped by working directory |
|
|
142
|
+
| **Status indicators** | Busy, Idle, Waiting for input |
|
|
143
|
+
| **Current action** | Shows what Claude is currently doing |
|
|
144
|
+
| **Quick actions** | New session, kill session, refresh |
|
|
145
|
+
|
|
146
|
+
### Session View
|
|
147
|
+
|
|
148
|
+
Click any session to open the real-time terminal view:
|
|
149
|
+
|
|
150
|
+
| Feature | Description |
|
|
151
|
+
|---------|-------------|
|
|
152
|
+
| **Live output** | Streams terminal content via WebSocket |
|
|
153
|
+
| **Syntax highlighting** | Color-coded messages and tool calls |
|
|
154
|
+
| **Text input** | Send messages to Claude |
|
|
155
|
+
| **Action buttons** | Up, Down, Space, Tab, Esc, Ctrl-C, etc. |
|
|
156
|
+
| **Tmux command** | Copy `tmux attach` command for direct access |
|
|
157
|
+
|
|
158
|
+
### Keyboard Shortcuts (in session view)
|
|
159
|
+
|
|
160
|
+
| Key | Action |
|
|
161
|
+
|-----|--------|
|
|
162
|
+
| `Enter` | Send message |
|
|
163
|
+
| `Shift+Enter` | New line in message |
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## CLI Commands
|
|
168
|
+
|
|
169
|
+
| Command | Description |
|
|
170
|
+
|---------|-------------|
|
|
171
|
+
| `claude-mux serve` | Start the web server |
|
|
172
|
+
| `claude-mux setup` | Run interactive setup wizard |
|
|
173
|
+
| `claude-mux uninstall` | Remove hooks and configuration |
|
|
174
|
+
| `claude-mux` | Start TUI dashboard (legacy, requires tmux) |
|
|
175
|
+
|
|
176
|
+
### Server Options
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
claude-mux serve [options]
|
|
180
|
+
|
|
181
|
+
Options:
|
|
182
|
+
-p, --port <number> Port to listen on (default: 45677)
|
|
183
|
+
-h, --host <string> Host to bind to (default: "localhost")
|
|
184
|
+
-a, --auth <password> Enable authentication with password
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Examples
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Start on custom port
|
|
191
|
+
claude-mux serve --port 8080
|
|
192
|
+
|
|
193
|
+
# Allow LAN access
|
|
194
|
+
claude-mux serve --host 0.0.0.0
|
|
195
|
+
|
|
196
|
+
# With authentication
|
|
197
|
+
claude-mux serve --host 0.0.0.0 --auth mysecretpassword
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## How It Works
|
|
203
|
+
|
|
204
|
+
### Architecture
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
|
|
208
|
+
│ Claude Code │────▶│ Hook Scripts │────▶│ JSON Files │
|
|
209
|
+
│ (running) │ │ (on events) │ │ (~/.claude-watch/sessions/)
|
|
210
|
+
└─────────────────┘ └──────────────────┘ └────────┬────────┘
|
|
211
|
+
│
|
|
212
|
+
┌─────────────────┐ ┌──────────────────┐ │
|
|
213
|
+
│ tmux panes │────▶│ Pane Capture │──────────────┤
|
|
214
|
+
│ (terminal) │ │ (WebSocket) │ │
|
|
215
|
+
└─────────────────┘ └──────────────────┘ │
|
|
216
|
+
▼
|
|
217
|
+
┌──────────────────┐ ┌─────────────────┐
|
|
218
|
+
│ Web Browser │◀───▶│ SvelteKit │
|
|
219
|
+
│ (dashboard) │ │ (WebSocket) │
|
|
220
|
+
└──────────────────┘ └─────────────────┘
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Claude Code Hooks
|
|
224
|
+
|
|
225
|
+
claude-mux uses [Claude Code hooks](https://docs.anthropic.com/en/docs/claude-code/hooks) to track session state:
|
|
226
|
+
|
|
227
|
+
| Hook | Purpose |
|
|
228
|
+
|------|---------|
|
|
229
|
+
| `SessionStart` | Register new session with PID and working directory |
|
|
230
|
+
| `UserPromptSubmit` | Mark session as busy |
|
|
231
|
+
| `PreToolUse` | Update status with current tool name |
|
|
232
|
+
| `Stop` | Mark session as idle when turn ends |
|
|
233
|
+
| `Notification` | Handle permission requests and questions |
|
|
234
|
+
|
|
235
|
+
### Real-time Updates
|
|
236
|
+
|
|
237
|
+
- **WebSocket connections** for instant updates (no polling)
|
|
238
|
+
- **File watcher** monitors session state changes
|
|
239
|
+
- **Pane capture** streams terminal output every 200ms
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Terminal UI (Legacy)
|
|
244
|
+
|
|
245
|
+
claude-mux also includes a terminal-based dashboard for use inside tmux:
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
claude-mux # Requires tmux
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
| Key | Action |
|
|
252
|
+
|-----|--------|
|
|
253
|
+
| `j` / `↓` | Move selection down |
|
|
254
|
+
| `k` / `↑` | Move selection up |
|
|
255
|
+
| `Enter` | Jump to selected session |
|
|
256
|
+
| `q` | Quit dashboard |
|
|
257
|
+
|
|
258
|
+
Press `prefix + W` from any tmux session to jump to the dashboard.
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Development
|
|
263
|
+
|
|
264
|
+
### Prerequisites
|
|
265
|
+
|
|
266
|
+
- Node.js >= 18 (or Bun)
|
|
267
|
+
- tmux (for full functionality)
|
|
268
|
+
|
|
269
|
+
### Setup
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
git clone https://github.com/christinoleo/claude-mux.git
|
|
273
|
+
cd claude-mux
|
|
274
|
+
bun install
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Development Server
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
bun run dev:serve # Starts Vite dev server with HMR
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Build
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
bun run build # Build CLI + web app
|
|
287
|
+
bun run build:cli # Build CLI only
|
|
288
|
+
bun run build:web # Build web app only
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### Testing
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
bun test # Run tests
|
|
295
|
+
bun run lint # Lint code
|
|
296
|
+
bun run format # Format code
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Project Structure
|
|
300
|
+
|
|
301
|
+
```
|
|
302
|
+
claude-mux/
|
|
303
|
+
├── src/ # CLI and hooks
|
|
304
|
+
│ ├── cli.ts # Entry point
|
|
305
|
+
│ ├── commands/ # CLI commands (serve, setup, tui)
|
|
306
|
+
│ ├── hooks/ # Claude Code hook handler
|
|
307
|
+
│ └── server/ # File watcher, WebSocket handlers
|
|
308
|
+
├── web/ # SvelteKit web app
|
|
309
|
+
│ ├── src/
|
|
310
|
+
│ │ ├── lib/
|
|
311
|
+
│ │ │ ├── components/ # UI components
|
|
312
|
+
│ │ │ ├── stores/ # Svelte stores (sessions, terminal, preferences)
|
|
313
|
+
│ │ │ └── utils/ # Terminal parser, helpers
|
|
314
|
+
│ │ └── routes/ # Pages and API routes
|
|
315
|
+
│ └── svelte.config.js
|
|
316
|
+
└── docs/
|
|
317
|
+
└── images/ # Screenshots
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## Troubleshooting
|
|
323
|
+
|
|
324
|
+
### Sessions not appearing
|
|
325
|
+
|
|
326
|
+
1. Ensure you ran `claude-mux setup` to install hooks
|
|
327
|
+
2. Restart any running Claude Code sessions (hooks are loaded at startup)
|
|
328
|
+
3. Check that `~/.claude/settings.json` contains claude-mux hooks
|
|
329
|
+
|
|
330
|
+
### Cannot connect from another device
|
|
331
|
+
|
|
332
|
+
1. Use `--host 0.0.0.0` to allow external connections
|
|
333
|
+
2. Check your firewall allows the port
|
|
334
|
+
3. Use your machine's LAN IP, not `localhost`
|
|
335
|
+
|
|
336
|
+
### Status not updating
|
|
337
|
+
|
|
338
|
+
1. Check hooks are installed: `grep claude-mux ~/.claude/settings.json`
|
|
339
|
+
2. Restart Claude Code sessions to pick up new hooks
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Requirements
|
|
344
|
+
|
|
345
|
+
- **Node.js** >= 18 (or Bun)
|
|
346
|
+
- **tmux** (required for terminal capture)
|
|
347
|
+
- **Claude Code** with hooks support
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## License
|
|
352
|
+
|
|
353
|
+
MIT
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## Contributing
|
|
358
|
+
|
|
359
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
360
|
+
|
|
361
|
+
1. Fork the repository
|
|
362
|
+
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
363
|
+
3. Run tests (`bun test`)
|
|
364
|
+
4. Commit your changes
|
|
365
|
+
5. Push to the branch
|
|
366
|
+
6. Open a Pull Request
|
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,GAAG,4CAyKlB"}
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback } from "react";
|
|
3
|
+
import { Box, useApp, useInput, useStdout } from "ink";
|
|
4
|
+
import { Header, HelpDialog, SessionList, StatusBar } from "./components/index.js";
|
|
5
|
+
import { getTotalItemCount, getItemAtIndex } from "./components/SessionList.js";
|
|
6
|
+
import { getAllSessions, cleanupStaleSessions, updateSession, } from "./db/index.js";
|
|
7
|
+
import { isInTmux, getAllTmuxSessions, getTmuxSessionName } from "./tmux/detect.js";
|
|
8
|
+
import { switchToTarget } from "./tmux/navigate.js";
|
|
9
|
+
import { checkForInterruption } from "./tmux/pane.js";
|
|
10
|
+
const POLL_INTERVAL = 500; // ms
|
|
11
|
+
const CLEANUP_INTERVAL = 5000; // ms
|
|
12
|
+
const PANE_CHECK_INTERVAL = 500; // ms - check tmux panes for prompt
|
|
13
|
+
export function App() {
|
|
14
|
+
const { exit } = useApp();
|
|
15
|
+
const { stdout } = useStdout();
|
|
16
|
+
const [sessions, setSessions] = useState([]);
|
|
17
|
+
const [tmuxSessions, setTmuxSessions] = useState([]);
|
|
18
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
19
|
+
const [showHelp, setShowHelp] = useState(false);
|
|
20
|
+
const [inTmux] = useState(() => isInTmux());
|
|
21
|
+
const [currentTmuxSession] = useState(() => getTmuxSessionName());
|
|
22
|
+
// Get terminal dimensions
|
|
23
|
+
const terminalHeight = stdout?.rows || 24;
|
|
24
|
+
const terminalWidth = stdout?.columns || 80;
|
|
25
|
+
// Load sessions from JSON files and tmux
|
|
26
|
+
const loadSessions = useCallback(() => {
|
|
27
|
+
try {
|
|
28
|
+
const loadedSessions = getAllSessions();
|
|
29
|
+
// Only update if sessions have changed (compare by JSON to detect actual changes)
|
|
30
|
+
setSessions((prev) => {
|
|
31
|
+
const prevJson = JSON.stringify(prev);
|
|
32
|
+
const newJson = JSON.stringify(loadedSessions);
|
|
33
|
+
return prevJson === newJson ? prev : loadedSessions;
|
|
34
|
+
});
|
|
35
|
+
// Also load tmux sessions (excluding the current session where claude-mux runs)
|
|
36
|
+
const loadedTmuxSessions = getAllTmuxSessions().filter((ts) => ts.name !== currentTmuxSession);
|
|
37
|
+
// Only update if tmux sessions have changed
|
|
38
|
+
setTmuxSessions((prev) => {
|
|
39
|
+
const prevJson = JSON.stringify(prev);
|
|
40
|
+
const newJson = JSON.stringify(loadedTmuxSessions);
|
|
41
|
+
return prevJson === newJson ? prev : loadedTmuxSessions;
|
|
42
|
+
});
|
|
43
|
+
// Adjust selected index if out of bounds
|
|
44
|
+
const totalCount = getTotalItemCount(loadedSessions, loadedTmuxSessions);
|
|
45
|
+
if (selectedIndex >= totalCount) {
|
|
46
|
+
setSelectedIndex(Math.max(0, totalCount - 1));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Ignore errors, try again next poll
|
|
51
|
+
}
|
|
52
|
+
}, [selectedIndex, currentTmuxSession]);
|
|
53
|
+
// Poll for session updates
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
loadSessions();
|
|
56
|
+
const interval = setInterval(loadSessions, POLL_INTERVAL);
|
|
57
|
+
return () => clearInterval(interval);
|
|
58
|
+
}, [loadSessions]);
|
|
59
|
+
// Cleanup stale sessions periodically
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
const cleanup = () => {
|
|
62
|
+
try {
|
|
63
|
+
cleanupStaleSessions();
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Ignore errors during cleanup
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
cleanup(); // Run on startup
|
|
70
|
+
const interval = setInterval(cleanup, CLEANUP_INTERVAL);
|
|
71
|
+
return () => clearInterval(interval);
|
|
72
|
+
}, []);
|
|
73
|
+
// Check tmux panes to sync state with what's actually shown
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
if (!inTmux)
|
|
76
|
+
return;
|
|
77
|
+
const checkPanes = () => {
|
|
78
|
+
try {
|
|
79
|
+
const allSessions = getAllSessions().filter((s) => s.tmux_target);
|
|
80
|
+
for (const session of allSessions) {
|
|
81
|
+
if (!session.tmux_target)
|
|
82
|
+
continue;
|
|
83
|
+
const update = checkForInterruption(session.tmux_target);
|
|
84
|
+
if (update && session.state !== "idle") {
|
|
85
|
+
updateSession(session.id, update);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Ignore errors during pane check
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const interval = setInterval(checkPanes, PANE_CHECK_INTERVAL);
|
|
94
|
+
return () => clearInterval(interval);
|
|
95
|
+
}, [inTmux]);
|
|
96
|
+
// Get total item count for navigation
|
|
97
|
+
const totalCount = getTotalItemCount(sessions, tmuxSessions);
|
|
98
|
+
// Calculate non-Claude tmux session count for header
|
|
99
|
+
const claudeTmuxSessions = new Set();
|
|
100
|
+
for (const session of sessions) {
|
|
101
|
+
if (session.tmux_target) {
|
|
102
|
+
const sessionName = session.tmux_target.split(":")[0];
|
|
103
|
+
claudeTmuxSessions.add(sessionName);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const nonClaudeTmuxCount = tmuxSessions.filter((ts) => !claudeTmuxSessions.has(ts.name)).length;
|
|
107
|
+
// Handle keyboard input
|
|
108
|
+
useInput((input, key) => {
|
|
109
|
+
if (input === "q") {
|
|
110
|
+
exit();
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (input === "h") {
|
|
114
|
+
setShowHelp((prev) => !prev);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
// Dismiss help on any other key
|
|
118
|
+
if (showHelp) {
|
|
119
|
+
setShowHelp(false);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (totalCount === 0)
|
|
123
|
+
return;
|
|
124
|
+
// Navigation
|
|
125
|
+
if (key.upArrow || input === "k") {
|
|
126
|
+
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
127
|
+
}
|
|
128
|
+
else if (key.downArrow || input === "j") {
|
|
129
|
+
setSelectedIndex((prev) => Math.min(totalCount - 1, prev + 1));
|
|
130
|
+
}
|
|
131
|
+
// Jump to session
|
|
132
|
+
if (key.return && inTmux) {
|
|
133
|
+
const item = getItemAtIndex(sessions, tmuxSessions, selectedIndex);
|
|
134
|
+
if (item) {
|
|
135
|
+
if (item.type === "claude" && item.session.tmux_target) {
|
|
136
|
+
switchToTarget(item.session.tmux_target);
|
|
137
|
+
}
|
|
138
|
+
else if (item.type === "tmux") {
|
|
139
|
+
// For tmux sessions, switch to the session (first window)
|
|
140
|
+
switchToTarget(item.tmuxSession.name + ":");
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
return (_jsxs(Box, { flexDirection: "column", height: terminalHeight, children: [_jsx(Header, { claudeCount: sessions.length, tmuxCount: nonClaudeTmuxCount }), _jsx(Box, { borderStyle: "single", borderTop: false, borderBottom: false, flexGrow: 1, children: showHelp ? (_jsx(HelpDialog, { width: terminalWidth - 2 })) : (_jsx(SessionList, { sessions: sessions, tmuxSessions: tmuxSessions, selectedIndex: selectedIndex, width: terminalWidth - 2 })) }), _jsx(StatusBar, { inTmux: inTmux })] }));
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { program } from "commander";
|
|
3
|
+
import { createServeCommand, createSetupCommand, createUninstallCommand, runTui, runServe, } from "./commands/index.js";
|
|
4
|
+
import { runSetup, runCleanup } from "./setup/index.js";
|
|
5
|
+
import { DEFAULT_SERVER_PORT } from "./utils/paths.js";
|
|
6
|
+
import { VERSION } from "./utils/version.js";
|
|
7
|
+
// Deprecation warning helper
|
|
8
|
+
function deprecationWarning(oldFlag, newCommand) {
|
|
9
|
+
console.warn(`\x1b[33m⚠ Warning: --${oldFlag} is deprecated. Use "claude-mux ${newCommand}" instead.\x1b[0m`);
|
|
10
|
+
console.warn("");
|
|
11
|
+
}
|
|
12
|
+
program
|
|
13
|
+
.name("claude-mux")
|
|
14
|
+
.description("TUI dashboard for monitoring Claude Code sessions")
|
|
15
|
+
.version(VERSION);
|
|
16
|
+
// Register subcommands
|
|
17
|
+
program.addCommand(createServeCommand());
|
|
18
|
+
program.addCommand(createSetupCommand());
|
|
19
|
+
program.addCommand(createUninstallCommand());
|
|
20
|
+
// BACKWARD COMPATIBILITY: Support old flags on root command
|
|
21
|
+
program
|
|
22
|
+
.option("--setup", "Run interactive setup wizard (deprecated: use 'setup' command)")
|
|
23
|
+
.option("--uninstall", "Remove hooks (deprecated: use 'uninstall' command)")
|
|
24
|
+
.option("--cleanup", "Remove hooks (alias for --uninstall)")
|
|
25
|
+
.option("--serve", "Start HTTP server alongside TUI (use with --serve-port, --serve-host)")
|
|
26
|
+
.option("--serve-only", "Run HTTP server only (deprecated: use 'serve' command)")
|
|
27
|
+
.option("--serve-port <number>", "Server port for --serve/--serve-only", String(DEFAULT_SERVER_PORT))
|
|
28
|
+
.option("--serve-host <address>", "Server host for --serve/--serve-only", "127.0.0.1");
|
|
29
|
+
// Hide deprecated options from help
|
|
30
|
+
program.options.forEach((opt) => {
|
|
31
|
+
if (["--setup", "--uninstall", "--cleanup", "--serve-only", "--serve-port", "--serve-host"].includes(opt.long || "")) {
|
|
32
|
+
opt.hidden = true;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
// Default action: handle deprecated flags or run TUI
|
|
36
|
+
program.action(async (options) => {
|
|
37
|
+
// Handle deprecated --setup flag
|
|
38
|
+
if (options.setup) {
|
|
39
|
+
deprecationWarning("setup", "setup");
|
|
40
|
+
await runSetup();
|
|
41
|
+
process.exit(0);
|
|
42
|
+
}
|
|
43
|
+
// Handle deprecated --uninstall or --cleanup flag
|
|
44
|
+
if (options.uninstall || options.cleanup) {
|
|
45
|
+
if (options.uninstall) {
|
|
46
|
+
deprecationWarning("uninstall", "uninstall");
|
|
47
|
+
}
|
|
48
|
+
await runCleanup();
|
|
49
|
+
process.exit(0);
|
|
50
|
+
}
|
|
51
|
+
// Handle deprecated --serve-only flag
|
|
52
|
+
if (options.serveOnly) {
|
|
53
|
+
deprecationWarning("serve-only", "serve");
|
|
54
|
+
await runServe({ port: options.servePort, host: options.serveHost });
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// Default: run TUI (with optional --serve)
|
|
58
|
+
await runTui({
|
|
59
|
+
serve: options.serve,
|
|
60
|
+
port: options.servePort,
|
|
61
|
+
host: options.serveHost,
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
program.parse();
|
|
65
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
export interface ServeOptions {
|
|
3
|
+
port: string;
|
|
4
|
+
host: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function runServe(options: ServeOptions): Promise<void>;
|
|
7
|
+
export declare function createServeCommand(): Command;
|
|
8
|
+
//# sourceMappingURL=serve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDnE;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAM5C"}
|