Skip to content

fix(conversations): a failed in-place resume is reported on its pane (#1241) - #1262

Merged
Juliusolsson05 merged 7 commits into
mainfrom
fix/conversations-resume-in-place-failure
Sep 25, 2026
Merged

Juliusolsson05 merged 7 commits into
mainfrom
fix/conversations-resume-in-place-failure

Conversation

@Juliusolsson05

Copy link
Copy Markdown
Owner

Closes #1241.

Verified failure

The picker closed, then awaited workspace.replaceSession(...) from a void caller:

  • a spawn failure (tested with the recorded posix_spawnp failed) was an unhandled rejection, visible to nobody;
  • an undefined result (no target, missing meta, a refused commit) was silent.

The pane simply didn't change. Plan: docs/plans/2026-09-25-conversations-resume-in-place-failure.md (plan-only commit first).

Fix

  • The target pane is read before the picker closes. A failure toasts its reason on that pane (the thrown message, or "Couldn't resume in this pane."), matching builtInMcpReload.
  • With no pane selected (reachable in "everywhere" scope), the picker stays open with an inline reason.

Evidence

  • Renderer tests: recorded spawn failure, the undefined outcome, and no target. Red on main, including the unhandled rejection; all three branches are mutation-checked.
  • tsc -b is clean.

Not verified

Visual toast placement in the running app (not launched).

🤖 Generated with Claude Code

Juliusolsson05 and others added 6 commits September 25, 2026 05:11
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ad of nothing

The picker closed and then awaited replaceSession from a `void` caller:
a spawn failure (for example the recorded posix_spawnp error) became an
unhandled rejection, and an undefined result was silent, so the pane just
stayed as it was. The target pane is now read before closing, and every
failure toasts its reason there, like builtInMcpReload does. With no
pane to resume into, the picker stays open and says so.

Closes #1241

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…handled paths

- Steering q22 / review B: the toast showed the raw spawn IPC rejection,
  which can carry environment values, proxy URLs or scoped MCP tokens.
  It now says `Couldn't resume <label>: Session failed to start. Check
  provider setup and retry.` (the shared SESSION_START_FAILED_MESSAGE), and
  the test asserts no raw text.
- Review A: the new-tab branch no longer ends in an unhandled rejection
  (newTab already toasts). usePaneToast ignores panes that are gone, so a
  toast for a pane closed mid-spawn can no longer recreate a dead runtime
  row forever; this also fixes builtInMcpReload's shape.
- Review B: moving the highlight clears an inline error that named the
  previous row; the full texts and "no toast on success" are pinned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… pane (#1262 round 2)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Juliusolsson05

Copy link
Copy Markdown
Owner Author

Review disposition (2 rounds, then merge on green)

  • Round 1: the raw spawn error in the toast (steering q22) → fixed (safe SESSION_START_FAILED_MESSAGE). newTab path unhandled → fixed (.catch). No-target silent → fixed (inline error). Stale error after a selection change → fixed.
  • Round 2: both reviewers said MERGE. B's N1 (the dismiss timer on a gone pane) → fixed (usePaneToast ignores gone panes, including in the dismiss timer).

CI quality-gate is green on a head that contains origin/main. Closes #1241.

🤖 Generated with Claude Code

@Juliusolsson05
Juliusolsson05 merged commit 0198af0 into main Sep 25, 2026
2 checks passed
@Juliusolsson05
Juliusolsson05 deleted the fix/conversations-resume-in-place-failure branch September 25, 2026 13:40
Juliusolsson05 added a commit that referenced this pull request Sep 25, 2026
/#1297/#1298 opened

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug(conversations): resuming in place from the picker fails with no message

1 participant