Skip to content

fix(web): retarget hidden terminal splits when shown - #1763

Merged
donjor merged 1 commit into
hyprwsfrom
fix/1756-hidden-split-move
Oct 16, 2026
Merged

donjor merged 1 commit into
hyprwsfrom
fix/1756-hidden-split-move

Conversation

@donjor-agent

@donjor-agent donjor-agent Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

🤖 claude/anthropic claude-opus-5-5 (high) · host
with peer-worker pi/openai gpt-6.1-sol (medium)

Problem

A terminal split hidden during a checkout move reconnects to its old session when shown.
The viewport assumed its requested launch identity was already applied, so it skipped terminal.open on remount.

Change

Initialize the viewport's applied launch identity as unset.
Its existing demand-gated retarget effect now runs once on mount/show, using the current checkout, attachment ID, runtime environment, and shell mode.
No eager reconciliation or second retarget implementation; ordinary rerenders still do not reopen terminals.

Scope and approval

Closes #1756.
Host approved lazy-on-show reconciliation and owns browser grounding; no servers were started.
One production line changed; the existing fork test fixture covers both shell modes, move, Undo, demand, and read-only access.
Web and Electron share this viewport; mobile, providers, wire contracts, and connection routing are unchanged.

Close conditions

  • Hidden split: follows a checkout move
  • Undo: hidden split returns to the source

Verification

  • Focused tests: 28 passed, 0 failed.
  • Web typecheck: exit 0.
  • Web production build: exit 0.
  • Targeted lint: 0 errors, 8 warnings.
  • vp run fork:ci: exit 0.
  • Fork CI scripts: 762 passed, 0 failed.
  • Host browser grounding and uploaded evidence.

Before the fix, all three added lifecycle cases fail because neither split terminal receives a retarget call.
After the fix, both panes retarget on show after move and Undo; demand and permission guards remain intact.

Grounding

  • Build: local ground/wave1 e81b07cb04
  • Contents: heads of three wave-1 PRs
  • Client: web dev, isolated copied state

Move

Claim: hide a zmux split behind a plain shell, move the checkout, show the split; both panes follow.

  1. Split on uat/move: uat/move·a, uat/move·b
  2. Plain shell hides the split group
  3. Move checkout uat/move to main
  4. Show split: main·a, main·b in test-project
Span Real Clip
idle, waits 29s cut
split, shell, move land 16s 2x
move pick, reveal 9s 1x
clip-1763.mp4

Undo

Claim: hide the split after a move, Undo, show the split; both panes return to the source.

  1. Split on uat/move after the queued move
  2. Hide split; Undo returns test-project to main
  3. Show split: main·a, main·b
Span Real Clip
idle, waits 68.5s cut
three steps 19s 1x
clip-1763-undo.mp4

Model: gpt-6.1-sol; harness: Pi through T3 Code.

Fork trailers

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no

Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
@donjor
donjor merged commit d20a951 into hyprws Oct 16, 2026
@donjor
donjor deleted the fix/1756-hidden-split-move branch October 16, 2026 20:37
donjor added a commit that referenced this pull request Oct 18, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no

Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 18, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no

Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 18, 2026
Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor added a commit that referenced this pull request Oct 18, 2026
Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 18, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 19, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 19, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 19, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 20, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 20, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 20, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 20, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 20, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 21, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 21, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 9c6e31c fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 0d3a663 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 21, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 21, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 21, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 22, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 22, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 23, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Oct 24, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Oct 30, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Oct 30, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Oct 30, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Oct 31, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor pushed a commit that referenced this pull request Nov 6, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 7, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 7, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 7, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 8, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 8, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
Reuse the viewport retarget effect on its first demanded mount, so sessions hidden during a checkout move or Undo open in the current checkout.

Squashes:

- 98d473f fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 6ec8b51 fixup! fix(web): retarget hidden terminal splits when shown (#1763) (#1763)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
donjor added a commit that referenced this pull request Nov 9, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
## Problem

Two checkouts with the same folder name cannot both open managed zmux shells; failed panes also send input to missing terminals.

## Change

Reuse registered bindings and keep free basenames unchanged.
On `repository_conflict`, retry exactly once with twelve SHA-256 hex characters from the root's realpath appended to its basename; surface any retry failure.
Failed panes discard writes and become read-only, without new retry UI.

## Scope and approval

Closes #1727.
Host approved this bounded fix.

## Verification

- [x] **Tests:** 30 passed, 0 failed.
- [x] **Types:** server and web exit 0.
- [x] **Builds:** server and web exit 0.
- [x] **Lint:** no errors, 8 warnings.
- [x] **Fork CI:** exit 0.
- [ ] **UI:** host grounding and evidence.

Tests cover free names, realpath-based suffixes, existing bindings, bounded retry, non-conflict failures, and ignored failed-pane writes.
No server or browser was started; UI evidence awaits host grounding.

Model: gpt-6.1-sol; harness: Pi.

## Fork trailers

Squashes:

- 5911207e873 fix(zmux): handle workspace basename collisions (#1741) (#1741)
- 2d5eb8b231b fix(web): retarget hidden terminal splits when shown (#1763) (#1763)
- 55896883ab2 fix(web): terminal OSC 52 copies reach the client clipboard (#1790) (#1790)

Fork-Domain: zmux-estate
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Checkout move leaves a hidden zmux split on the source checkout [📡#1755]

1 participant