synabun 2026.5.14-beta2 → 2026.5.14-beta4

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
- {"version":3,"file":"neural-interface.d.ts","sourceRoot":"","sources":["../../src/services/neural-interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neural-interface.d.ts","sourceRoot":"","sources":["../../src/services/neural-interface.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,64 @@ let _recoveredSessionId = null;
51
51
  // Prevents a second Claude Code instance (e.g. sidepanel) from grabbing the CLI's session
52
52
  // when both are running without explicit sessionId or SYNABUN_BROWSER_SESSION pinning.
53
53
  let _affinitySessionId = null;
54
+ // Ancestor-PID fallback (Layer B). Walks the process tree once and caches the
55
+ // resolved loop pins. Used when codex/opencode strip SYNABUN_BROWSER_* env on
56
+ // MCP child spawn — we map our PID chain up to a known PTY and pull the loop's
57
+ // session/tab IDs from that loop's state file.
58
+ let _ancestorLookupTried = false;
59
+ let _ancestorPinnedSession = null;
60
+ let _ancestorPinnedTab = null;
61
+ async function getAncestorPids() {
62
+ const ppid = typeof process.ppid === 'number' ? process.ppid : 0;
63
+ if (!ppid)
64
+ return [];
65
+ const pids = [ppid];
66
+ const isWin = process.platform === 'win32';
67
+ const { exec } = await import('node:child_process');
68
+ const runCmd = (cmd) => new Promise((resolve) => {
69
+ exec(cmd, { timeout: 1500, windowsHide: true }, (_err, stdout) => resolve(stdout || ''));
70
+ });
71
+ let current = ppid;
72
+ for (let i = 0; i < 6; i++) {
73
+ let parent = 0;
74
+ try {
75
+ if (isWin) {
76
+ const out = await runCmd(`wmic process where ProcessId=${current} get ParentProcessId /value`);
77
+ const m = /ParentProcessId=(\d+)/i.exec(out);
78
+ parent = m ? Number(m[1]) : 0;
79
+ }
80
+ else {
81
+ const out = await runCmd(`ps -o ppid= -p ${current}`);
82
+ parent = Number(out.trim().split(/\s+/)[0]) || 0;
83
+ }
84
+ }
85
+ catch {
86
+ parent = 0;
87
+ }
88
+ if (!parent || parent === 1 || parent === current)
89
+ break;
90
+ pids.push(parent);
91
+ current = parent;
92
+ }
93
+ return pids;
94
+ }
95
+ async function resolveFromAncestors() {
96
+ if (_ancestorLookupTried)
97
+ return;
98
+ _ancestorLookupTried = true;
99
+ try {
100
+ const pids = await getAncestorPids();
101
+ if (pids.length === 0)
102
+ return;
103
+ const resp = await request('POST', '/api/loop/resolve-from-ancestors', { pids }, 2000);
104
+ if (resp.matched) {
105
+ _ancestorPinnedSession = resp.browserSessionId || null;
106
+ _ancestorPinnedTab = resp.browserTabId || null;
107
+ console.error(`[MCP] ancestor lookup matched: session=${_ancestorPinnedSession} tab=${_ancestorPinnedTab}`);
108
+ }
109
+ }
110
+ catch { /* best-effort */ }
111
+ }
54
112
  /**
55
113
  * Resolve which session ID to use.
56
114
  * - If sessionId provided, return it immediately (server returns 404 if invalid).
@@ -62,7 +120,12 @@ export async function resolveSession(sessionId, autoCreate, tabId) {
62
120
  // Resolve tab ID from explicit param or environment variable.
63
121
  // When SYNABUN_BROWSER_TAB is pinned (loop/agent context), the env value wins
64
122
  // even if caller passes a different tabId — prevents tab-leak across loops.
65
- const pinnedTab = process.env.SYNABUN_BROWSER_TAB || undefined;
123
+ // If env pins are missing (codex/opencode env-strip case), try ancestor-PID
124
+ // lookup once and use whatever the Neural Interface reports for our PTY.
125
+ if (!process.env.SYNABUN_BROWSER_SESSION && !process.env.SYNABUN_BROWSER_TAB && !sessionId) {
126
+ await resolveFromAncestors();
127
+ }
128
+ const pinnedTab = process.env.SYNABUN_BROWSER_TAB || _ancestorPinnedTab || undefined;
66
129
  const resolvedTabId = pinnedTab || tabId || undefined;
67
130
  if (pinnedTab && tabId && tabId !== pinnedTab) {
68
131
  console.error(`[MCP] tabId override ignored: pinned=${pinnedTab} requested=${tabId}`);
@@ -70,7 +133,7 @@ export async function resolveSession(sessionId, autoCreate, tabId) {
70
133
  // Agent/loop-scoped browser session — set by the orchestrator to pin
71
134
  // this MCP instance to a specific browser session (multi-session isolation).
72
135
  // If pinned session died, check recovery cache first, then auto-create.
73
- const pinnedSession = process.env.SYNABUN_BROWSER_SESSION;
136
+ const pinnedSession = process.env.SYNABUN_BROWSER_SESSION || _ancestorPinnedSession || undefined;
74
137
  if (pinnedSession && !sessionId) {
75
138
  // Check recovery cache first — avoids re-creating on every call after recovery
76
139
  if (_recoveredSessionId) {
@@ -1 +1 @@
1
- {"version":3,"file":"neural-interface.js","sourceRoot":"","sources":["../../src/services/neural-interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neural-interface.js","sourceRoot":"","sources":["../../src/services/neural-interface.ts"],"names":[],"mappings":"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"}
@@ -78,6 +78,58 @@ let _recoveredSessionId: string | null = null;
78
78
  // when both are running without explicit sessionId or SYNABUN_BROWSER_SESSION pinning.
79
79
  let _affinitySessionId: string | null = null;
80
80
 
81
+ // Ancestor-PID fallback (Layer B). Walks the process tree once and caches the
82
+ // resolved loop pins. Used when codex/opencode strip SYNABUN_BROWSER_* env on
83
+ // MCP child spawn — we map our PID chain up to a known PTY and pull the loop's
84
+ // session/tab IDs from that loop's state file.
85
+ let _ancestorLookupTried = false;
86
+ let _ancestorPinnedSession: string | null = null;
87
+ let _ancestorPinnedTab: string | null = null;
88
+
89
+ async function getAncestorPids(): Promise<number[]> {
90
+ const ppid = typeof process.ppid === 'number' ? process.ppid : 0;
91
+ if (!ppid) return [];
92
+ const pids: number[] = [ppid];
93
+ const isWin = process.platform === 'win32';
94
+ const { exec } = await import('node:child_process');
95
+ const runCmd = (cmd: string): Promise<string> => new Promise((resolve) => {
96
+ exec(cmd, { timeout: 1500, windowsHide: true }, (_err: unknown, stdout: string) => resolve(stdout || ''));
97
+ });
98
+ let current = ppid;
99
+ for (let i = 0; i < 6; i++) {
100
+ let parent = 0;
101
+ try {
102
+ if (isWin) {
103
+ const out = await runCmd(`wmic process where ProcessId=${current} get ParentProcessId /value`);
104
+ const m = /ParentProcessId=(\d+)/i.exec(out);
105
+ parent = m ? Number(m[1]) : 0;
106
+ } else {
107
+ const out = await runCmd(`ps -o ppid= -p ${current}`);
108
+ parent = Number(out.trim().split(/\s+/)[0]) || 0;
109
+ }
110
+ } catch { parent = 0; }
111
+ if (!parent || parent === 1 || parent === current) break;
112
+ pids.push(parent);
113
+ current = parent;
114
+ }
115
+ return pids;
116
+ }
117
+
118
+ async function resolveFromAncestors(): Promise<void> {
119
+ if (_ancestorLookupTried) return;
120
+ _ancestorLookupTried = true;
121
+ try {
122
+ const pids = await getAncestorPids();
123
+ if (pids.length === 0) return;
124
+ const resp = await request('POST', '/api/loop/resolve-from-ancestors', { pids }, 2000);
125
+ if (resp.matched) {
126
+ _ancestorPinnedSession = (resp.browserSessionId as string) || null;
127
+ _ancestorPinnedTab = (resp.browserTabId as string) || null;
128
+ console.error(`[MCP] ancestor lookup matched: session=${_ancestorPinnedSession} tab=${_ancestorPinnedTab}`);
129
+ }
130
+ } catch { /* best-effort */ }
131
+ }
132
+
81
133
  /**
82
134
  * Resolve which session ID to use.
83
135
  * - If sessionId provided, return it immediately (server returns 404 if invalid).
@@ -93,7 +145,12 @@ export async function resolveSession(
93
145
  // Resolve tab ID from explicit param or environment variable.
94
146
  // When SYNABUN_BROWSER_TAB is pinned (loop/agent context), the env value wins
95
147
  // even if caller passes a different tabId — prevents tab-leak across loops.
96
- const pinnedTab = process.env.SYNABUN_BROWSER_TAB || undefined;
148
+ // If env pins are missing (codex/opencode env-strip case), try ancestor-PID
149
+ // lookup once and use whatever the Neural Interface reports for our PTY.
150
+ if (!process.env.SYNABUN_BROWSER_SESSION && !process.env.SYNABUN_BROWSER_TAB && !sessionId) {
151
+ await resolveFromAncestors();
152
+ }
153
+ const pinnedTab = process.env.SYNABUN_BROWSER_TAB || _ancestorPinnedTab || undefined;
97
154
  const resolvedTabId = pinnedTab || tabId || undefined;
98
155
  if (pinnedTab && tabId && tabId !== pinnedTab) {
99
156
  console.error(`[MCP] tabId override ignored: pinned=${pinnedTab} requested=${tabId}`);
@@ -102,7 +159,7 @@ export async function resolveSession(
102
159
  // Agent/loop-scoped browser session — set by the orchestrator to pin
103
160
  // this MCP instance to a specific browser session (multi-session isolation).
104
161
  // If pinned session died, check recovery cache first, then auto-create.
105
- const pinnedSession = process.env.SYNABUN_BROWSER_SESSION;
162
+ const pinnedSession = process.env.SYNABUN_BROWSER_SESSION || _ancestorPinnedSession || undefined;
106
163
  if (pinnedSession && !sessionId) {
107
164
  // Check recovery cache first — avoids re-creating on every call after recovery
108
165
  if (_recoveredSessionId) {
@@ -5182,6 +5182,51 @@
5182
5182
  transition: opacity 0.15s ease;
5183
5183
  }
5184
5184
 
5185
+ /* Liquid step transition for the update wizard. The shell stays mounted;
5186
+ only the inner .update-step swaps with a measured height tween +
5187
+ keyframe-driven crossfade. Keyframe animations are used (not CSS
5188
+ transitions) because freshly-appended elements have unreliable initial-
5189
+ state observation under Chromium — animations run their declared
5190
+ keyframes deterministically. `isolation: isolate` on the wrapper keeps
5191
+ repaints from propagating to the modal's `backdrop-filter` ancestor. */
5192
+ .update-step-content {
5193
+ position: relative;
5194
+ overflow: hidden;
5195
+ isolation: isolate;
5196
+ transition: height 340ms cubic-bezier(.4, 0, .2, 1);
5197
+ will-change: height;
5198
+ }
5199
+ .update-step {
5200
+ width: 100%;
5201
+ transform: translate3d(0, 0, 0);
5202
+ }
5203
+ @keyframes synabunStepIn {
5204
+ from { opacity: 0; transform: translate3d(0, 10px, 0); }
5205
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
5206
+ }
5207
+ @keyframes synabunStepOut {
5208
+ from { opacity: 1; transform: translate3d(0, 0, 0); }
5209
+ to { opacity: 0; transform: translate3d(0, -8px, 0); }
5210
+ }
5211
+ .update-step.is-entering {
5212
+ animation: synabunStepIn 360ms cubic-bezier(.22, 1, .36, 1) forwards;
5213
+ will-change: opacity, transform;
5214
+ }
5215
+ .update-step.is-leaving {
5216
+ pointer-events: none;
5217
+ animation: synabunStepOut 260ms cubic-bezier(.4, 0, .2, 1) forwards;
5218
+ will-change: opacity, transform;
5219
+ }
5220
+ @media (prefers-reduced-motion: reduce) {
5221
+ .update-step-content,
5222
+ .update-step.is-entering,
5223
+ .update-step.is-leaving {
5224
+ animation: none !important;
5225
+ transition: none !important;
5226
+ transform: none !important;
5227
+ }
5228
+ }
5229
+
5185
5230
  /* ── Dropdown panels (shared) ── */
5186
5231
  .dropdown-panel {
5187
5232
  position: absolute;
@@ -35,14 +35,15 @@ function applyTopRightButton(data) {
35
35
  }
36
36
  if (has) {
37
37
  const srcLabel = sourceLabel(data);
38
- btn.dataset.tooltip = `SynaBun update available: v${data.current} → v${data.latest} (${srcLabel}) · click green badge`;
38
+ btn.dataset.tooltip = `SynaBun update available: v${data.current} → v${data.latest} (${srcLabel})`;
39
39
  }
40
40
  if (!_btnWired) {
41
41
  _btnWired = true;
42
+ // Whole button opens the update flow — it's a dedicated SynaBun-update
43
+ // button (display:none when no update available), so any click on it
44
+ // should prompt the wizard, not just the green badge.
42
45
  btn.addEventListener('click', (e) => {
43
- const currentBadge = $('update-badge');
44
- if (!currentBadge?.textContent) return;
45
- if (e.target !== currentBadge && !currentBadge.contains(e.target)) return;
46
+ if (!_versionData?.updateAvailable) return;
46
47
  e.stopPropagation();
47
48
  e.preventDefault();
48
49
  openUpdateModal();
@@ -118,25 +119,131 @@ function openUpdateModal() {
118
119
 
119
120
  let step = 1;
120
121
  let backupDone = false;
122
+ let isAnimating = false;
121
123
 
122
124
  const overlay = document.createElement('div');
123
125
  overlay.className = 'tag-delete-overlay';
124
126
  overlay.style.zIndex = '300100';
125
127
 
126
- function render() {
127
- overlay.innerHTML = `
128
- <div class="tag-delete-modal update-modal" style="max-width:460px;text-align:left">
129
- ${renderStepDots(step)}
130
- ${step === 1 ? renderStep1() : step === 2 ? renderStep2() : renderStep3()}
131
- </div>`;
132
- document.body.appendChild(overlay);
133
- bindEvents();
128
+ const modal = document.createElement('div');
129
+ modal.className = 'tag-delete-modal update-modal';
130
+ modal.style.maxWidth = '460px';
131
+ modal.style.textAlign = 'left';
132
+
133
+ const dotsRow = document.createElement('div');
134
+ dotsRow.className = 'update-steps';
135
+ dotsRow.innerHTML = [1, 2, 3].map(() => `<span class="update-step-dot"></span>`).join('');
136
+
137
+ const stepWrap = document.createElement('div');
138
+ stepWrap.className = 'update-step-content';
139
+
140
+ modal.appendChild(dotsRow);
141
+ modal.appendChild(stepWrap);
142
+ overlay.appendChild(modal);
143
+
144
+ function buildStepNode(n) {
145
+ const node = document.createElement('div');
146
+ node.className = 'update-step';
147
+ node.dataset.step = String(n);
148
+ node.innerHTML = n === 1 ? renderStep1() : n === 2 ? renderStep2() : renderStep3();
149
+ return node;
134
150
  }
135
151
 
136
- function renderStepDots(current) {
137
- return `<div class="update-steps">
138
- ${[1, 2, 3].map(i => `<span class="update-step-dot${i === current ? ' active' : i < current ? ' done' : ''}"></span>`).join('')}
139
- </div>`;
152
+ function syncStepDots() {
153
+ const dots = dotsRow.querySelectorAll('.update-step-dot');
154
+ dots.forEach((dot, i) => {
155
+ const idx = i + 1;
156
+ dot.classList.toggle('active', idx === step);
157
+ dot.classList.toggle('done', idx < step);
158
+ });
159
+ }
160
+
161
+ function prefersReducedMotion() {
162
+ try { return window.matchMedia?.('(prefers-reduced-motion: reduce)').matches === true; }
163
+ catch { return false; }
164
+ }
165
+
166
+ function setStep(n) {
167
+ if (isAnimating) return;
168
+ step = n;
169
+ syncStepDots();
170
+
171
+ const outgoing = stepWrap.firstElementChild;
172
+ const incoming = buildStepNode(n);
173
+
174
+ if (!outgoing) {
175
+ stepWrap.appendChild(incoming);
176
+ bindStepEvents(incoming);
177
+ return;
178
+ }
179
+
180
+ if (prefersReducedMotion()) {
181
+ stepWrap.replaceChild(incoming, outgoing);
182
+ bindStepEvents(incoming);
183
+ return;
184
+ }
185
+
186
+ isAnimating = true;
187
+
188
+ // 1. Pin BOTH wrapper height AND modal width before any positioning
189
+ // changes. The modal is a flex item whose width derives from its
190
+ // in-flow content; when both step nodes go absolute, the only
191
+ // remaining in-flow child is the tiny .update-steps dots row,
192
+ // causing the modal to shrink horizontally to its min-width during
193
+ // the transition (visible as a horizontal snap).
194
+ const oldH = outgoing.offsetHeight;
195
+ const pinW = modal.offsetWidth;
196
+ stepWrap.style.height = oldH + 'px';
197
+ modal.style.width = pinW + 'px';
198
+
199
+ // 2. Stage incoming absolutely positioned, hidden, to measure its
200
+ // natural height at the pinned modal width.
201
+ incoming.style.position = 'absolute';
202
+ incoming.style.left = '0';
203
+ incoming.style.right = '0';
204
+ incoming.style.top = '0';
205
+ incoming.style.visibility = 'hidden';
206
+ stepWrap.appendChild(incoming);
207
+ bindStepEvents(incoming);
208
+ const newH = incoming.offsetHeight;
209
+
210
+ // 3. Position outgoing absolutely so the height tween isn't fought.
211
+ outgoing.style.position = 'absolute';
212
+ outgoing.style.left = '0';
213
+ outgoing.style.right = '0';
214
+ outgoing.style.top = '0';
215
+ outgoing.classList.add('is-leaving');
216
+
217
+ // 4. Reveal incoming and trigger its enter animation.
218
+ incoming.style.visibility = '';
219
+ incoming.classList.add('is-entering');
220
+
221
+ // 5. Tween wrapper height. Next frame so the pinned values commit first.
222
+ requestAnimationFrame(() => {
223
+ stepWrap.style.height = newH + 'px';
224
+ });
225
+
226
+ let settled = false;
227
+ const finalize = () => {
228
+ if (settled) return;
229
+ settled = true;
230
+ incoming.removeEventListener('animationend', onIncomingEnd);
231
+ if (outgoing.parentNode === stepWrap) stepWrap.removeChild(outgoing);
232
+ incoming.classList.remove('is-entering');
233
+ incoming.style.position = '';
234
+ incoming.style.left = '';
235
+ incoming.style.right = '';
236
+ incoming.style.top = '';
237
+ incoming.style.visibility = '';
238
+ stepWrap.style.height = '';
239
+ modal.style.width = '';
240
+ isAnimating = false;
241
+ };
242
+ const onIncomingEnd = (ev) => {
243
+ if (ev.target === incoming && ev.animationName === 'synabunStepIn') finalize();
244
+ };
245
+ incoming.addEventListener('animationend', onIncomingEnd);
246
+ setTimeout(finalize, 480);
140
247
  }
141
248
 
142
249
  function renderStep1() {
@@ -261,30 +368,23 @@ function openUpdateModal() {
261
368
  </p>`;
262
369
  }
263
370
 
264
- function bindEvents() {
265
- // Close on overlay click
266
- overlay.addEventListener('click', (e) => {
267
- if (e.target === overlay) close();
268
- });
269
-
371
+ function bindStepEvents(scope) {
270
372
  // Cancel / Done
271
- overlay.querySelector('#update-cancel')?.addEventListener('click', close);
272
- overlay.querySelector('#update-done')?.addEventListener('click', close);
373
+ scope.querySelector('#update-cancel')?.addEventListener('click', close);
374
+ scope.querySelector('#update-done')?.addEventListener('click', close);
273
375
 
274
376
  // Next
275
- overlay.querySelector('#update-next')?.addEventListener('click', () => {
276
- step++;
277
- render();
377
+ scope.querySelector('#update-next')?.addEventListener('click', () => {
378
+ setStep(step + 1);
278
379
  });
279
380
 
280
381
  // Back
281
- overlay.querySelector('#update-back')?.addEventListener('click', () => {
282
- step--;
283
- render();
382
+ scope.querySelector('#update-back')?.addEventListener('click', () => {
383
+ setStep(step - 1);
284
384
  });
285
385
 
286
386
  // Copy buttons
287
- overlay.querySelectorAll('.update-copy-btn').forEach(btn => {
387
+ scope.querySelectorAll('.update-copy-btn').forEach(btn => {
288
388
  btn.addEventListener('click', () => {
289
389
  const text = btn.dataset.copy;
290
390
  navigator.clipboard.writeText(text).then(() => {
@@ -297,24 +397,24 @@ function openUpdateModal() {
297
397
  });
298
398
 
299
399
  // Backup download
300
- overlay.querySelector('#update-backup-download')?.addEventListener('click', handleBackupDownload);
400
+ scope.querySelector('#update-backup-download')?.addEventListener('click', handleBackupDownload);
301
401
 
302
402
  // Update Now — kick off click-to-update flow
303
- overlay.querySelector('#update-run-now')?.addEventListener('click', handleRunUpdate);
403
+ scope.querySelector('#update-run-now')?.addEventListener('click', handleRunUpdate);
304
404
 
305
405
  // Manual — surface the command + relaunch hint, hide auto-update controls
306
- overlay.querySelector('#update-manual')?.addEventListener('click', () => {
307
- overlay.querySelector('#update-manual-note').style.display = '';
308
- const runNow = overlay.querySelector('#update-run-now');
406
+ scope.querySelector('#update-manual')?.addEventListener('click', () => {
407
+ scope.querySelector('#update-manual-note').style.display = '';
408
+ const runNow = scope.querySelector('#update-run-now');
309
409
  if (runNow) runNow.style.display = 'none';
310
410
  });
311
411
 
312
412
  // Skip checkbox
313
- const skipCb = overlay.querySelector('#update-skip-backup');
413
+ const skipCb = scope.querySelector('#update-skip-backup');
314
414
  if (skipCb) {
315
415
  skipCb.addEventListener('change', () => {
316
416
  backupDone = skipCb.checked;
317
- const nextBtn = overlay.querySelector('#update-next');
417
+ const nextBtn = scope.querySelector('#update-next');
318
418
  if (nextBtn) nextBtn.disabled = !backupDone;
319
419
  });
320
420
  }
@@ -328,12 +428,13 @@ function openUpdateModal() {
328
428
  // Auto-restart is always on; server forces it true regardless of payload.
329
429
  const autoRestart = true;
330
430
 
331
- const runBtn = overlay.querySelector('#update-run-now');
332
- const backBtn = overlay.querySelector('#update-back');
333
- const manualBtn = overlay.querySelector('#update-manual');
334
- const status = overlay.querySelector('#update-run-status');
335
- const icon = overlay.querySelector('#update-run-icon');
336
- const text = overlay.querySelector('#update-run-text');
431
+ const liveStep = stepWrap.querySelector('.update-step:not(.is-leaving)') || stepWrap;
432
+ const runBtn = liveStep.querySelector('#update-run-now');
433
+ const backBtn = liveStep.querySelector('#update-back');
434
+ const manualBtn = liveStep.querySelector('#update-manual');
435
+ const status = liveStep.querySelector('#update-run-status');
436
+ const icon = liveStep.querySelector('#update-run-icon');
437
+ const text = liveStep.querySelector('#update-run-text');
337
438
 
338
439
  if (!runBtn || !backBtn || !status || !icon || !text) return;
339
440
 
@@ -393,10 +494,11 @@ function openUpdateModal() {
393
494
  }
394
495
 
395
496
  async function handleBackupDownload() {
396
- const btn = overlay.querySelector('#update-backup-download');
397
- const status = overlay.querySelector('#update-backup-status');
398
- const icon = overlay.querySelector('#update-backup-icon');
399
- const text = overlay.querySelector('#update-backup-text');
497
+ const liveStep = stepWrap.querySelector('.update-step:not(.is-leaving)') || stepWrap;
498
+ const btn = liveStep.querySelector('#update-backup-download');
499
+ const status = liveStep.querySelector('#update-backup-status');
500
+ const icon = liveStep.querySelector('#update-backup-icon');
501
+ const text = liveStep.querySelector('#update-backup-text');
400
502
  if (!btn) return;
401
503
 
402
504
  btn.disabled = true;
@@ -431,9 +533,9 @@ function openUpdateModal() {
431
533
  text.textContent = `${filename} (${(blob.size / 1024 / 1024).toFixed(1)} MB)`;
432
534
 
433
535
  backupDone = true;
434
- const nextBtn = overlay.querySelector('#update-next');
536
+ const nextBtn = liveStep.querySelector('#update-next');
435
537
  if (nextBtn) nextBtn.disabled = false;
436
- const skipCb = overlay.querySelector('#update-skip-backup');
538
+ const skipCb = liveStep.querySelector('#update-skip-backup');
437
539
  if (skipCb) skipCb.checked = true;
438
540
  } catch (err) {
439
541
  icon.className = 'update-backup-icon';
@@ -451,7 +553,13 @@ function openUpdateModal() {
451
553
  setTimeout(() => overlay.remove(), 150);
452
554
  }
453
555
 
454
- render();
556
+ // Boot: attach shell once, wire overlay-click-to-close, render initial step.
557
+ overlay.addEventListener('click', (e) => {
558
+ if (e.target === overlay) close();
559
+ });
560
+ document.body.appendChild(overlay);
561
+ syncStepDots();
562
+ setStep(1);
455
563
  }
456
564
 
457
565
  function esc(str) {
@@ -10051,6 +10051,22 @@ app.post('/api/loop/launch', async (req, res) => {
10051
10051
  // Claude Code uses ToolSearch for deferred loading — always give it the full profile
10052
10052
  if (cliProfile === 'claude-code') loopExtraEnv.SYNABUN_PROFILE = 'full';
10053
10053
 
10054
+ // Per-loop opencode config dir: opencode reads ~/.config/opencode/config.json (or
10055
+ // $XDG_CONFIG_HOME/opencode/config.json) at startup and uses the MCP env block
10056
+ // verbatim. Spawn each opencode loop with its own XDG_CONFIG_HOME so the MCP
10057
+ // child inherits this loop's browser pins.
10058
+ if (cliProfile === 'opencode' && (browserSessionId || browserTabId)) {
10059
+ try {
10060
+ const xdgRoot = setupOpencodeLoopConfig(terminalSessionId, browserSessionId, browserTabId);
10061
+ if (xdgRoot) {
10062
+ loopExtraEnv.XDG_CONFIG_HOME = xdgRoot;
10063
+ loopLog(terminalSessionId, 'launch:opencode-config', 'per-loop XDG_CONFIG_HOME wired', { xdgRoot });
10064
+ }
10065
+ } catch (err) {
10066
+ loopLog(terminalSessionId, 'launch:opencode-config', 'setup FAILED (falling back to global config)', { err: err.message });
10067
+ }
10068
+ }
10069
+
10054
10070
  loopLog(terminalSessionId, 'launch:env', 'extraEnv prepared for spawned PTY', {
10055
10071
  keys: Object.keys(loopExtraEnv),
10056
10072
  SYNABUN_TERMINAL_SESSION: loopExtraEnv.SYNABUN_TERMINAL_SESSION,
@@ -10125,6 +10141,10 @@ app.post('/api/loop/stop', async (req, res) => {
10125
10141
  }
10126
10142
  }
10127
10143
  }
10144
+ // Per-CLI per-loop config dir cleanup (opencode XDG_CONFIG_HOME, etc.)
10145
+ if (data.profile === 'opencode' && data.terminalSessionId) {
10146
+ cleanupOpencodeLoopConfig(data.terminalSessionId);
10147
+ }
10128
10148
  // Delete the loop file — no history keeping
10129
10149
  try { unlinkSync(filePath); } catch { /* ok */ }
10130
10150
  stopped++;
@@ -10137,6 +10157,40 @@ app.post('/api/loop/stop', async (req, res) => {
10137
10157
  }
10138
10158
  });
10139
10159
 
10160
+ // POST /api/loop/resolve-from-ancestors — process-tree fallback for MCP env loss.
10161
+ // The MCP server walks its ancestor PID chain (codex/opencode/gemini → shell PTY)
10162
+ // and POSTs the chain here. We match any PID against terminalSessions[*].pty.pid
10163
+ // and return that loop's browserSessionId/browserTabId. Layer B of the
10164
+ // defense-in-depth browser tab isolation fix.
10165
+ app.post('/api/loop/resolve-from-ancestors', (req, res) => {
10166
+ try {
10167
+ const pids = Array.isArray(req.body?.pids) ? req.body.pids.map(Number).filter(Number.isFinite) : [];
10168
+ if (pids.length === 0) return res.json({ matched: false });
10169
+ const pidSet = new Set(pids);
10170
+ let matchedTerminal = null;
10171
+ for (const [tsid, session] of terminalSessions.entries()) {
10172
+ const pid = session?.pty?.pid;
10173
+ if (pid && pidSet.has(pid)) { matchedTerminal = tsid; break; }
10174
+ }
10175
+ if (!matchedTerminal) return res.json({ matched: false });
10176
+ const loopFile = findLoopFileForTerminal(matchedTerminal);
10177
+ if (!loopFile) return res.json({ matched: false, terminalSessionId: matchedTerminal });
10178
+ try {
10179
+ const data = JSON.parse(readFileSync(resolve(LOOP_DIR, loopFile), 'utf-8'));
10180
+ return res.json({
10181
+ matched: true,
10182
+ terminalSessionId: matchedTerminal,
10183
+ browserSessionId: data.browserSessionId || null,
10184
+ browserTabId: data.browserTabId || null,
10185
+ });
10186
+ } catch {
10187
+ return res.json({ matched: false, terminalSessionId: matchedTerminal });
10188
+ }
10189
+ } catch (err) {
10190
+ res.status(500).json({ error: err.message });
10191
+ }
10192
+ });
10193
+
10140
10194
  // GET /api/loop/history — no history keeping, always empty
10141
10195
  app.get('/api/loop/history', (_req, res) => { res.json([]); });
10142
10196
 
@@ -10458,6 +10512,15 @@ async function launchScheduledLoop(schedule) {
10458
10512
  if (scheduledBrowserTabId) schedExtraEnv.SYNABUN_BROWSER_TAB = scheduledBrowserTabId;
10459
10513
  }
10460
10514
 
10515
+ if (cliProfile === 'opencode' && (scheduledBrowserSessionId || scheduledBrowserTabId)) {
10516
+ try {
10517
+ const xdgRoot = setupOpencodeLoopConfig(terminalSessionId, scheduledBrowserSessionId, scheduledBrowserTabId);
10518
+ if (xdgRoot) schedExtraEnv.XDG_CONFIG_HOME = xdgRoot;
10519
+ } catch (err) {
10520
+ console.warn(`[schedule] opencode per-loop config setup failed: ${err.message}`);
10521
+ }
10522
+ }
10523
+
10461
10524
  const pendingId = 'pending-' + randomBytes(8).toString('hex');
10462
10525
  const loopState = {
10463
10526
  active: true,
@@ -19900,6 +19963,68 @@ function prepareExecTaskFile(terminalSessionId, loopState) {
19900
19963
  return taskFile;
19901
19964
  }
19902
19965
 
19966
+ /**
19967
+ * Build a per-loop XDG_CONFIG_HOME with an opencode config.json whose MCP env
19968
+ * block is augmented with this loop's SYNABUN_BROWSER_SESSION/TAB pins.
19969
+ * OpenCode's `opencode run` reads MCP server env verbatim from config.json; the
19970
+ * pins set on the PTY don't propagate to the MCP child, so we have to bake them
19971
+ * into the config file. Returns the XDG_CONFIG_HOME root (parent of opencode/).
19972
+ */
19973
+ function setupOpencodeLoopConfig(terminalSessionId, browserSessionId, browserTabId) {
19974
+ const xdgRoot = resolve(DATA_HOME, 'data', 'loop-configs', `opencode-${terminalSessionId}`);
19975
+ const targetDir = resolve(xdgRoot, 'opencode');
19976
+ if (!existsSync(targetDir)) mkdirSync(targetDir, { recursive: true });
19977
+
19978
+ let baseCfg = {};
19979
+ try {
19980
+ const userPath = getOpencodeConfigPath();
19981
+ if (existsSync(userPath)) baseCfg = JSON.parse(readFileSync(userPath, 'utf8'));
19982
+ } catch { /* start from blank if user's config is missing/broken */ }
19983
+ if (!baseCfg.mcp) baseCfg.mcp = {};
19984
+ const existingEntry = baseCfg.mcp.SynaBun;
19985
+ if (existingEntry && typeof existingEntry === 'object') {
19986
+ const env = { ...(existingEntry.environment || existingEntry.env || {}) };
19987
+ if (browserSessionId) env.SYNABUN_BROWSER_SESSION = browserSessionId;
19988
+ if (browserTabId) env.SYNABUN_BROWSER_TAB = browserTabId;
19989
+ env.SYNABUN_TERMINAL_SESSION = terminalSessionId;
19990
+ // config.json uses "environment" (per persistMcpToOpencodeConfig). Preserve both
19991
+ // keys defensively in case different opencode versions read one or the other.
19992
+ baseCfg.mcp.SynaBun = { ...existingEntry, environment: env, env };
19993
+ } else {
19994
+ // No SynaBun entry — fall back to canonical MCP install pointing at our preload
19995
+ const { mcpIndexPath, envPath } = getMcpPaths();
19996
+ const env = {
19997
+ DOTENV_PATH: envPath,
19998
+ SYNABUN_DATA_HOME: DATA_HOME,
19999
+ MEMORY_DATA_DIR: resolve(DATA_HOME, 'mcp-data'),
20000
+ SYNABUN_TERMINAL_SESSION: terminalSessionId,
20001
+ };
20002
+ if (browserSessionId) env.SYNABUN_BROWSER_SESSION = browserSessionId;
20003
+ if (browserTabId) env.SYNABUN_BROWSER_TAB = browserTabId;
20004
+ baseCfg.mcp.SynaBun = {
20005
+ type: 'local',
20006
+ command: ['node', mcpIndexPath],
20007
+ environment: env,
20008
+ env,
20009
+ };
20010
+ }
20011
+ const target = resolve(targetDir, 'config.json');
20012
+ writeFileSync(target, JSON.stringify(baseCfg, null, 2) + '\n', 'utf8');
20013
+ return xdgRoot;
20014
+ }
20015
+
20016
+ /**
20017
+ * Best-effort cleanup of a per-loop opencode XDG_CONFIG_HOME dir on loop stop.
20018
+ */
20019
+ function cleanupOpencodeLoopConfig(terminalSessionId) {
20020
+ const xdgRoot = resolve(DATA_HOME, 'data', 'loop-configs', `opencode-${terminalSessionId}`);
20021
+ try {
20022
+ if (existsSync(xdgRoot)) rmSync(xdgRoot, { recursive: true, force: true });
20023
+ } catch (err) {
20024
+ console.warn(`[loop/stop] Failed to remove opencode loop config dir: ${err.message}`);
20025
+ }
20026
+ }
20027
+
19903
20028
  /**
19904
20029
  * Build a CLI exec command for non-Claude loop iterations.
19905
20030
  * Task is read from a temp file via stdin (`cat <file> | <cli> exec -`)
@@ -19915,11 +20040,28 @@ function buildExecCommand(profile, loopState, taskFile) {
19915
20040
  // Shell-escape a string for safe embedding in single quotes
19916
20041
  const esc = (s) => "'" + s.replace(/'/g, "'\\''") + "'";
19917
20042
 
20043
+ // Per-loop MCP env overrides. Codex's shell_environment_policy filters parent env,
20044
+ // so PTY-level SYNABUN_BROWSER_TAB/SESSION pins are stripped before reaching the
20045
+ // SynaBun MCP child. Inject them directly into the MCP env via `-c` overrides.
20046
+ const mcpEnvOverrides = [];
20047
+ if (loopState.browserSessionId) {
20048
+ mcpEnvOverrides.push(['SYNABUN_BROWSER_SESSION', loopState.browserSessionId]);
20049
+ }
20050
+ if (loopState.browserTabId) {
20051
+ mcpEnvOverrides.push(['SYNABUN_BROWSER_TAB', loopState.browserTabId]);
20052
+ }
20053
+ if (loopState.terminalSessionId) {
20054
+ mcpEnvOverrides.push(['SYNABUN_TERMINAL_SESSION', loopState.terminalSessionId]);
20055
+ }
20056
+
19918
20057
  switch (profile) {
19919
20058
  case 'codex': {
19920
20059
  // --dangerously-bypass-approvals-and-sandbox: SynaBun Automation Studio
19921
20060
  // provides its own sandboxed, user-supervised environment.
19922
20061
  const parts = ['cat', esc(taskFile), '|', bin, 'exec', '--dangerously-bypass-approvals-and-sandbox'];
20062
+ for (const [k, v] of mcpEnvOverrides) {
20063
+ parts.push('-c', esc(`mcp_servers.SynaBun.env.${k}="${v}"`));
20064
+ }
19923
20065
  if (model) parts.push('--model', model);
19924
20066
  parts.push('-C', esc(cwd), '-');
19925
20067
  return parts.join(' ');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synabun",
3
- "version": "2026.5.14-beta2",
3
+ "version": "2026.5.14-beta4",
4
4
  "description": "Persistent vector memory for AI assistants",
5
5
  "license": "Apache-2.0",
6
6
  "author": "The SynaBun Authors",