claude-mux 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +4 -2
  2. package/dist/cli.d.ts +1 -1
  3. package/dist/cli.js +1 -1
  4. package/dist/utils/version.d.ts +1 -1
  5. package/dist/utils/version.js +1 -1
  6. package/dist/web/client/_app/immutable/chunks/{DU91Ml7U.js → BGcEgn7w.js} +1 -1
  7. package/{web/.svelte-kit/output/client/_app/immutable/chunks/DmdO6ygw.js → dist/web/client/_app/immutable/chunks/By6CYjmE.js} +1 -1
  8. package/dist/web/client/_app/immutable/chunks/{HKNo9LID.js → CR5jMWGV.js} +1 -1
  9. package/{web/.svelte-kit/output/client/_app/immutable/entry/app.CGIBnoln.js → dist/web/client/_app/immutable/entry/app.DmtnygN7.js} +2 -2
  10. package/dist/web/client/_app/immutable/entry/start.fYmelGlC.js +1 -0
  11. package/dist/web/client/_app/immutable/nodes/{0.CqlJ9a31.js → 0.DGDAdwT5.js} +1 -1
  12. package/dist/web/client/_app/immutable/nodes/{1.BQUZh2-w.js → 1.Cg8dWgUN.js} +1 -1
  13. package/dist/web/client/_app/immutable/nodes/{2.CCV1YdgF.js → 2.DItUEo3e.js} +1 -1
  14. package/dist/web/client/_app/immutable/nodes/{3.D9tDCdq8.js → 3.dHui0twF.js} +1 -1
  15. package/dist/web/client/_app/immutable/nodes/{4.BqPyNkFA.js → 4.CiEHP0cr.js} +1 -1
  16. package/dist/web/client/_app/version.json +1 -1
  17. package/dist/web/server/chunks/{0-BHWsmCJv.js → 0-BmRg-l2z.js} +5 -5
  18. package/dist/web/server/chunks/{0-BHWsmCJv.js.map → 0-BmRg-l2z.js.map} +1 -1
  19. package/dist/web/server/chunks/{1-YRx6A8Tm.js → 1-CPgO8U7d.js} +3 -3
  20. package/dist/web/server/chunks/{1-YRx6A8Tm.js.map → 1-CPgO8U7d.js.map} +1 -1
  21. package/dist/web/server/chunks/{2-eC6JuGAo.js → 2--ZO5fZp_.js} +5 -5
  22. package/dist/web/server/chunks/{2-eC6JuGAo.js.map → 2--ZO5fZp_.js.map} +1 -1
  23. package/dist/web/server/chunks/{3-Bk-wV20p.js → 3-7HqSep9c.js} +3 -3
  24. package/dist/web/server/chunks/{3-Bk-wV20p.js.map → 3-7HqSep9c.js.map} +1 -1
  25. package/dist/web/server/chunks/{4-nteBgDrW.js → 4-C1PCdmY0.js} +4 -4
  26. package/dist/web/server/chunks/{4-nteBgDrW.js.map → 4-C1PCdmY0.js.map} +1 -1
  27. package/dist/web/server/index.js +1 -1
  28. package/dist/web/server/index.js.map +1 -1
  29. package/dist/web/server/manifest.js +10 -10
  30. package/dist/web/server/manifest.js.map +1 -1
  31. package/docs/release-checklist.md +8 -34
  32. package/docs/removing-hooks.md +14 -14
  33. package/package.json +1 -1
  34. package/src/cli.ts +1 -1
  35. package/src/utils/version.ts +1 -1
  36. package/web/.svelte-kit/adapter-bun/chunks/internal.js +1 -1
  37. package/web/.svelte-kit/adapter-bun/manifest-full.js +1 -1
  38. package/web/.svelte-kit/adapter-bun/manifest.js +1 -1
  39. package/web/.svelte-kit/adapter-bun/nodes/0.js +1 -1
  40. package/web/.svelte-kit/adapter-bun/nodes/1.js +1 -1
  41. package/web/.svelte-kit/adapter-bun/nodes/2.js +1 -1
  42. package/web/.svelte-kit/adapter-bun/nodes/3.js +1 -1
  43. package/web/.svelte-kit/adapter-bun/nodes/4.js +1 -1
  44. package/web/.svelte-kit/adapter-node/.vite/manifest.json +200 -15
  45. package/web/.svelte-kit/adapter-node/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +1 -0
  46. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_layout.WptSHSUl.css +1 -0
  47. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DldLgTc-.css +1 -0
  48. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DoNWy7tW.css +1 -0
  49. package/web/.svelte-kit/adapter-node/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +49 -0
  50. package/web/.svelte-kit/adapter-node/chunks/alert-dialog-description.js +2670 -0
  51. package/web/.svelte-kit/adapter-node/chunks/auth.js +59 -0
  52. package/web/.svelte-kit/adapter-node/chunks/button.js +82 -0
  53. package/web/.svelte-kit/adapter-node/chunks/client.js +29 -0
  54. package/web/.svelte-kit/adapter-node/chunks/context.js +28 -16
  55. package/web/.svelte-kit/adapter-node/chunks/events.js +121 -0
  56. package/web/.svelte-kit/adapter-node/chunks/index.js +1 -1
  57. package/web/.svelte-kit/adapter-node/chunks/index2.js +186 -68
  58. package/web/.svelte-kit/adapter-node/chunks/internal.js +5 -90
  59. package/web/.svelte-kit/adapter-node/chunks/pane.js +82 -0
  60. package/web/.svelte-kit/adapter-node/chunks/sessions-json.js +16 -1
  61. package/web/.svelte-kit/adapter-node/chunks/sessions.svelte.js +174 -12
  62. package/web/.svelte-kit/adapter-node/chunks/ws-handlers.js +782 -0
  63. package/web/.svelte-kit/adapter-node/entries/endpoints/api/auth/login/_server.ts.js +22 -0
  64. package/web/.svelte-kit/adapter-node/entries/endpoints/api/auth/logout/_server.ts.js +9 -0
  65. package/web/.svelte-kit/adapter-node/entries/endpoints/api/beads/_server.ts.js +22 -0
  66. package/web/.svelte-kit/adapter-node/entries/endpoints/api/chrome/_server.ts.js +30 -0
  67. package/web/.svelte-kit/adapter-node/entries/endpoints/api/files/image/_server.ts.js +53 -0
  68. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +12 -6
  69. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +40 -0
  70. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +28 -0
  71. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/send/_server.ts.js +11 -4
  72. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js +1 -78
  73. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_target_/output/_server.ts.js +2 -2
  74. package/web/.svelte-kit/adapter-node/entries/endpoints/api/tmux/panes/_server.ts.js +21 -0
  75. package/web/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +1 -18
  76. package/web/.svelte-kit/adapter-node/entries/hooks.server.js +105 -0
  77. package/web/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +493 -6
  78. package/web/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +3024 -54
  79. package/web/.svelte-kit/adapter-node/entries/pages/login/_page.server.ts.js +15 -0
  80. package/web/.svelte-kit/adapter-node/entries/pages/login/_page.svelte.js +37 -0
  81. package/web/.svelte-kit/adapter-node/entries/pages/session/_target_/_page.svelte.js +623 -46
  82. package/web/.svelte-kit/adapter-node/manifest-full.js +67 -3
  83. package/web/.svelte-kit/adapter-node/manifest.js +67 -3
  84. package/web/.svelte-kit/adapter-node/nodes/0.js +2 -2
  85. package/web/.svelte-kit/adapter-node/nodes/1.js +1 -1
  86. package/web/.svelte-kit/adapter-node/nodes/2.js +2 -2
  87. package/web/.svelte-kit/adapter-node/nodes/3.js +6 -4
  88. package/web/.svelte-kit/adapter-node/nodes/4.js +8 -0
  89. package/web/.svelte-kit/ambient.d.ts +28 -2
  90. package/web/.svelte-kit/generated/server/internal.js +1 -1
  91. package/web/.svelte-kit/output/client/.vite/manifest.json +44 -44
  92. package/web/.svelte-kit/output/client/_app/immutable/chunks/{DU91Ml7U.js → BGcEgn7w.js} +1 -1
  93. package/{dist/web/client/_app/immutable/chunks/DmdO6ygw.js → web/.svelte-kit/output/client/_app/immutable/chunks/By6CYjmE.js} +1 -1
  94. package/web/.svelte-kit/output/client/_app/immutable/chunks/{HKNo9LID.js → CR5jMWGV.js} +1 -1
  95. package/{dist/web/client/_app/immutable/entry/app.CGIBnoln.js → web/.svelte-kit/output/client/_app/immutable/entry/app.DmtnygN7.js} +2 -2
  96. package/web/.svelte-kit/output/client/_app/immutable/entry/start.fYmelGlC.js +1 -0
  97. package/web/.svelte-kit/output/client/_app/immutable/nodes/{0.CqlJ9a31.js → 0.DGDAdwT5.js} +1 -1
  98. package/web/.svelte-kit/output/client/_app/immutable/nodes/{1.BQUZh2-w.js → 1.Cg8dWgUN.js} +1 -1
  99. package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.CCV1YdgF.js → 2.DItUEo3e.js} +1 -1
  100. package/web/.svelte-kit/output/client/_app/immutable/nodes/{3.D9tDCdq8.js → 3.dHui0twF.js} +1 -1
  101. package/web/.svelte-kit/output/client/_app/immutable/nodes/{4.BqPyNkFA.js → 4.CiEHP0cr.js} +1 -1
  102. package/web/.svelte-kit/output/client/_app/version.json +1 -1
  103. package/web/.svelte-kit/output/server/chunks/internal.js +1 -1
  104. package/web/.svelte-kit/output/server/manifest-full.js +1 -1
  105. package/web/.svelte-kit/output/server/manifest.js +1 -1
  106. package/web/.svelte-kit/output/server/nodes/0.js +1 -1
  107. package/web/.svelte-kit/output/server/nodes/1.js +1 -1
  108. package/web/.svelte-kit/output/server/nodes/2.js +1 -1
  109. package/web/.svelte-kit/output/server/nodes/3.js +1 -1
  110. package/web/.svelte-kit/output/server/nodes/4.js +1 -1
  111. package/dist/web/client/_app/immutable/entry/start.CJk8zB1j.js +0 -1
  112. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_layout.4NiX29PU.css +0 -1
  113. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.BEMzYUGV.css +0 -1
  114. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOJn7TG7.css +0 -1
  115. package/web/.svelte-kit/output/client/_app/immutable/entry/start.CJk8zB1j.js +0 -1
@@ -1,27 +1,184 @@
1
- import { c as ssr_context } from "./context.js";
1
+ import { f as ssr_context, g as getContext } from "./context.js";
2
+ import { ae as lifecycle_function_unavailable } from "./index2.js";
2
3
  import "clsx";
4
+ import "@sveltejs/kit/internal";
5
+ import "./exports.js";
6
+ import "./utils.js";
7
+ import "@sveltejs/kit/internal/server";
8
+ import "./state.svelte.js";
3
9
  function onDestroy(fn) {
4
10
  /** @type {SSRContext} */
5
11
  ssr_context.r.on_destroy(fn);
6
12
  }
7
- class SessionStore {
8
- sessions = [];
9
- paused = false;
13
+ function mount() {
14
+ lifecycle_function_unavailable("mount");
15
+ }
16
+ function unmount() {
17
+ lifecycle_function_unavailable("unmount");
18
+ }
19
+ async function tick() {
20
+ }
21
+ const getStores = () => {
22
+ const stores$1 = getContext("__svelte__");
23
+ return {
24
+ /** @type {typeof page} */
25
+ page: {
26
+ subscribe: stores$1.page.subscribe
27
+ },
28
+ /** @type {typeof navigating} */
29
+ navigating: {
30
+ subscribe: stores$1.navigating.subscribe
31
+ },
32
+ /** @type {typeof updated} */
33
+ updated: stores$1.updated
34
+ };
35
+ };
36
+ const page = {
37
+ subscribe(fn) {
38
+ const store = getStores().page;
39
+ return store.subscribe(fn);
40
+ }
41
+ };
42
+ const DEFAULT_CONFIG = {
43
+ pingInterval: 3e4,
44
+ pongTimeout: 1e4,
45
+ baseReconnectDelay: 1e3,
46
+ maxReconnectDelay: 3e4
47
+ };
48
+ class ReliableWebSocket {
10
49
  connected = false;
11
50
  ws = null;
51
+ pingTimer = null;
12
52
  reconnectTimer = null;
13
- // Saved projects from localStorage
14
- savedProjects = [];
15
- connect() {
53
+ lastPong = 0;
54
+ reconnectAttempts = 0;
55
+ visibilityHandler = null;
56
+ config;
57
+ constructor(config) {
58
+ this.config = { ...DEFAULT_CONFIG, ...config };
59
+ }
60
+ /** Subclass can override to control reconnection (e.g., only reconnect if target is set) */
61
+ shouldReconnect() {
62
+ return true;
63
+ }
64
+ /** Subclass can override to run code on successful connection */
65
+ onConnected() {
66
+ }
67
+ /** Subclass can override to run code on disconnection */
68
+ onDisconnected() {
69
+ }
70
+ doConnect() {
16
71
  return;
17
72
  }
18
- disconnect() {
19
- this.ws?.close();
20
- this.ws = null;
73
+ doDisconnect() {
21
74
  if (this.reconnectTimer) {
22
75
  clearTimeout(this.reconnectTimer);
23
76
  this.reconnectTimer = null;
24
77
  }
78
+ this.stopPingTimer();
79
+ this.removeVisibilityHandler();
80
+ this.connected = false;
81
+ this.reconnectAttempts = 0;
82
+ if (this.ws) {
83
+ this.ws.onopen = null;
84
+ this.ws.onclose = null;
85
+ this.ws.onerror = null;
86
+ this.ws.onmessage = null;
87
+ if (this.ws.readyState !== WebSocket.CLOSED) {
88
+ this.ws.close();
89
+ }
90
+ this.ws = null;
91
+ }
92
+ }
93
+ /** Force reconnection (resets backoff) */
94
+ forceReconnect() {
95
+ this.reconnectAttempts = 0;
96
+ if (this.ws) {
97
+ this.ws.onclose = null;
98
+ this.ws.close();
99
+ this.ws = null;
100
+ }
101
+ this.stopPingTimer();
102
+ this.connected = false;
103
+ this.doConnect();
104
+ }
105
+ startPingTimer() {
106
+ this.stopPingTimer();
107
+ this.pingTimer = setInterval(
108
+ () => {
109
+ if (this.ws?.readyState === WebSocket.OPEN) {
110
+ if (Date.now() - this.lastPong > this.config.pingInterval + this.config.pongTimeout) {
111
+ this.ws?.close();
112
+ return;
113
+ }
114
+ this.ws.send("ping");
115
+ }
116
+ },
117
+ this.config.pingInterval
118
+ );
119
+ }
120
+ stopPingTimer() {
121
+ if (this.pingTimer) {
122
+ clearInterval(this.pingTimer);
123
+ this.pingTimer = null;
124
+ }
125
+ }
126
+ scheduleReconnect() {
127
+ if (this.reconnectTimer) return;
128
+ const delay = Math.min(this.config.baseReconnectDelay * Math.pow(2, this.reconnectAttempts) + Math.random() * 1e3, this.config.maxReconnectDelay);
129
+ this.reconnectAttempts++;
130
+ this.reconnectTimer = setTimeout(
131
+ () => {
132
+ this.reconnectTimer = null;
133
+ this.doConnect();
134
+ },
135
+ delay
136
+ );
137
+ }
138
+ setupVisibilityHandler() {
139
+ if (this.visibilityHandler) return;
140
+ this.visibilityHandler = () => {
141
+ if (document.visibilityState === "visible" && this.shouldReconnect()) {
142
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
143
+ this.forceReconnect();
144
+ } else {
145
+ this.ws.send("ping");
146
+ }
147
+ }
148
+ };
149
+ document.addEventListener("visibilitychange", this.visibilityHandler);
150
+ }
151
+ removeVisibilityHandler() {
152
+ if (this.visibilityHandler) {
153
+ document.removeEventListener("visibilitychange", this.visibilityHandler);
154
+ this.visibilityHandler = null;
155
+ }
156
+ }
157
+ }
158
+ class SessionStore extends ReliableWebSocket {
159
+ sessions = [];
160
+ paused = false;
161
+ // Saved projects from localStorage
162
+ savedProjects = [];
163
+ getWsUrl() {
164
+ const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
165
+ return `${protocol}//${window.location.host}/api/sessions/stream`;
166
+ }
167
+ getLogPrefix() {
168
+ return "[sessions]";
169
+ }
170
+ handleMessage(event) {
171
+ if (this.paused) return;
172
+ const data = JSON.parse(event.data);
173
+ if (data.sessions) {
174
+ this.sessions = data.sessions;
175
+ }
176
+ }
177
+ connect() {
178
+ this.doConnect();
179
+ }
180
+ disconnect() {
181
+ this.doDisconnect();
25
182
  }
26
183
  togglePause() {
27
184
  this.paused = !this.paused;
@@ -34,7 +191,7 @@ class SessionStore {
34
191
  }
35
192
  removeProject(cwd) {
36
193
  this.savedProjects = this.savedProjects.filter((p) => p !== cwd);
37
- localStorage.setItem("claude-watch-projects", JSON.stringify(this.savedProjects));
194
+ localStorage.setItem("claude-mux-projects", JSON.stringify(this.savedProjects));
38
195
  }
39
196
  }
40
197
  const sessionStore = new SessionStore();
@@ -60,8 +217,13 @@ function getProjectColor(cwd) {
60
217
  return `hsl(${hue}, 60%, 40%)`;
61
218
  }
62
219
  export {
220
+ ReliableWebSocket as R,
63
221
  stateColor as a,
64
222
  getProjectColor as g,
223
+ mount as m,
65
224
  onDestroy as o,
66
- sessionStore as s
225
+ page as p,
226
+ sessionStore as s,
227
+ tick as t,
228
+ unmount as u
67
229
  };