seshmux 0.1.1 → 0.1.3

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.
@@ -1 +1 @@
1
- CH3svYyXwHI9KBJZ30EjM
1
+ kPJ9M1iZAJK4qUIbW1h9b
@@ -5,8 +5,8 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/CH3svYyXwHI9KBJZ30EjM/_buildManifest.js",
9
- "static/CH3svYyXwHI9KBJZ30EjM/_ssgManifest.js"
8
+ "static/kPJ9M1iZAJK4qUIbW1h9b/_buildManifest.js",
9
+ "static/kPJ9M1iZAJK4qUIbW1h9b/_ssgManifest.js"
10
10
  ],
11
11
  "rootMainFiles": [
12
12
  "static/chunks/webpack-f60e08036f4baea4.js",
@@ -4,8 +4,8 @@
4
4
  "dynamicRoutes": {},
5
5
  "notFoundRoutes": [],
6
6
  "preview": {
7
- "previewModeId": "396d8e84b94df24d80701261a6b12027",
8
- "previewModeSigningKey": "ae7512d0a590ea8c546a6297a7c6648cdc6a3b656179d99c6400670bf5564767",
9
- "previewModeEncryptionKey": "e396bed3d7e90dd0b618dd837b91a600ae5ca21de396542833395b2b8daf0a43"
7
+ "previewModeId": "8ccb89e0a3bf14af274ee54a95ce9b2e",
8
+ "previewModeSigningKey": "a0a39ef5ee3a271f65df5a5426c9cb798f5330e1b945568e116e78c61ec94223",
9
+ "previewModeEncryptionKey": "7d4c21f89edf512fc0871278947355648cc453591d46248e8114043911b8f51f"
10
10
  }
11
11
  }
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-f60e08036f4baea4.js" defer=""></script><script src="/_next/static/chunks/framework-2c534e0e662575a2.js" defer=""></script><script src="/_next/static/chunks/main-98e65ff50a82d8a2.js" defer=""></script><script src="/_next/static/chunks/pages/_app-7d307437aca18ad4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js" defer=""></script><script src="/_next/static/CH3svYyXwHI9KBJZ30EjM/_buildManifest.js" defer=""></script><script src="/_next/static/CH3svYyXwHI9KBJZ30EjM/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"CH3svYyXwHI9KBJZ30EjM","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-f60e08036f4baea4.js" defer=""></script><script src="/_next/static/chunks/framework-2c534e0e662575a2.js" defer=""></script><script src="/_next/static/chunks/main-98e65ff50a82d8a2.js" defer=""></script><script src="/_next/static/chunks/pages/_app-7d307437aca18ad4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js" defer=""></script><script src="/_next/static/kPJ9M1iZAJK4qUIbW1h9b/_buildManifest.js" defer=""></script><script src="/_next/static/kPJ9M1iZAJK4qUIbW1h9b/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"kPJ9M1iZAJK4qUIbW1h9b","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"D+PV4UV6VzTohu+mkIFFcfLuEDbHq4u74QugPcLEHVI="}
1
+ {"node":{},"edge":{},"encryptionKey":"Hk7Kg8BG2msQYe72Ekdf1zq18Gp1TVTJv1IqVe6Ktm8="}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seshmux",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Local-first mission control for AI coding agents (Claude Code + Codex)",
5
5
  "bin": {
6
6
  "seshmux": "bin/seshmux.js"
@@ -5747,8 +5747,10 @@ async function applyUpdate(deps) {
5747
5747
  }
5748
5748
  const exec = deps.exec ?? defaultExec;
5749
5749
  const previous = deps.current;
5750
+ const version2 = /^\d+\.\d+\.\d+[A-Za-z0-9.\-+]*$/.test(deps.target ?? "") ? deps.target : null;
5751
+ const spec = `seshmux@${version2 ?? "latest"}`;
5750
5752
  try {
5751
- const { stdout, stderr } = await exec("npm", ["i", "-g", "seshmux@latest"]);
5753
+ const { stdout, stderr } = await exec("npm", ["i", "-g", spec, "--prefer-online"]);
5752
5754
  return { ok: true, log: [stdout, stderr].filter(Boolean).join("\n"), previous };
5753
5755
  } catch (e) {
5754
5756
  const err = e;
@@ -5783,7 +5785,11 @@ async function updateRoutes(f, deps = {}) {
5783
5785
  const status = await check();
5784
5786
  let result;
5785
5787
  try {
5786
- result = await apply({ installMethod: status.installMethod, current: status.current });
5788
+ result = await apply({
5789
+ installMethod: status.installMethod,
5790
+ current: status.current,
5791
+ target: status.latest
5792
+ });
5787
5793
  } catch (e) {
5788
5794
  reply.code(409);
5789
5795
  return { error: e instanceof Error ? e.message : "update failed" };
package/bin/seshmux.js CHANGED
@@ -195,11 +195,25 @@ async function main() {
195
195
  ...process.env,
196
196
  PORT: String(port),
197
197
  SESHMUX_TOKEN: token,
198
- SESHMUX_VERSION: require('../package.json').version,
199
198
  };
200
199
  if (isProd) env.NODE_ENV = 'production';
201
200
 
201
+ // Read the version FRESH on every spawn, never once. `require` caches, and this supervisor
202
+ // deliberately survives a self-update (it is what relaunches the server child) — so a cached
203
+ // read meant the updated server was told it was still the OLD version. The user updated, the
204
+ // new code ran, and the "update available" banner stayed up forever because current never
205
+ // moved. Re-reading the file each spawn means the relaunch after an update sees the new
206
+ // version. readFileSync, not require, precisely to dodge the module cache.
207
+ function currentVersion() {
208
+ try {
209
+ return JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8')).version;
210
+ } catch {
211
+ return '0.0.0';
212
+ }
213
+ }
214
+
202
215
  function spawnServer() {
216
+ env.SESHMUX_VERSION = currentVersion();
203
217
  return isProd
204
218
  ? spawn(process.execPath, [standalone], { cwd: path.dirname(standalone), stdio: 'inherit', env })
205
219
  : spawn(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seshmux",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Local-first mission control for AI coding agents (Claude Code + Codex)",
5
5
  "bin": {
6
6
  "seshmux": "bin/seshmux.js"