diff --git a/docs/superpowers/plans/2026-09-15-split-pane-sessions.md b/docs/superpowers/plans/2026-09-15-split-pane-sessions.md index 98acacd5..9c95a26b 100644 --- a/docs/superpowers/plans/2026-09-15-split-pane-sessions.md +++ b/docs/superpowers/plans/2026-09-15-split-pane-sessions.md @@ -453,7 +453,14 @@ describe('SplitTerminalPane in a real browser', () => { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ workingDir: '/tmp', mode: 'shell' }), }); - return (await res.json()).data.id; + // POST /api/sessions nests the session under data.session, and mode:'shell' + // does not spawn a PTY on creation alone (pid: null, no pane) — an explicit + // POST .../shell is what actually starts it (both were bugs in this plan's + // original text, found and fixed by Task 4's implementer against the real + // server; corrected here to match what was actually committed). + const id = (await res.json()).data.session.id; + await fetch(`/api/sessions/${id}/shell`, { method: 'POST' }); + return id; }); const result = await page.evaluate(async (id) => { @@ -624,10 +631,10 @@ Expected: This file is not yet listed in `config/test-suites.ts`'s `BROWSER_TEST })(window); ``` -In `src/web/public/index.html`, find the ` + ``` In `CLAUDE.md`, find the Frontend load-order line (`... → terminal-ui.js(7) → respawn-ui.js(8) → ...`) and insert `terminal-split.js(7.5)` between them, matching the existing `X.Y of 16` `@loadorder` numbering convention already used for other `.5`-numbered modules (e.g. `tab-rail-resize.js(6.5)`). @@ -704,7 +711,14 @@ describe('split-pane orchestration in a real browser', () => { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ workingDir: '/tmp', mode: 'shell' }), }); - return (await res.json()).data.id; + // POST /api/sessions nests the session under data.session, and mode:'shell' + // does not spawn a PTY on creation alone (pid: null, no pane) — an explicit + // POST .../shell is what actually starts it (both found and fixed by Task 4's + // implementer against this exact pattern; carried forward here so this task + // does not rediscover the same two bugs). + const id = (await res.json()).data.session.id; + await fetch(`/api/sessions/${id}/shell`, { method: 'POST' }); + return id; }); } @@ -971,7 +985,14 @@ describe('split-pane auto-collapse in a real browser', () => { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ workingDir: '/tmp', mode: 'shell' }), }); - return (await res.json()).data.id; + // POST /api/sessions nests the session under data.session, and mode:'shell' + // does not spawn a PTY on creation alone (pid: null, no pane) — an explicit + // POST .../shell is what actually starts it (both found and fixed by Task 4's + // implementer against this exact pattern; carried forward here so this task + // does not rediscover the same two bugs). + const id = (await res.json()).data.session.id; + await fetch(`/api/sessions/${id}/shell`, { method: 'POST' }); + return id; }); }