Repository navigation
fix(desktop): keep the attached server through a stall - #1721
Conversation
A server that misses one 2s discovery probe no longer drops the attachment, re-pairs, and remounts every window: silent verifies get a 30s grace, while a different environment or a moved port still drops. Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
🩺 Aftercare
|
| Head | Result | Time | Check |
|---|---|---|---|
b3bc960 |
✅ clear · 1 fixed | 9 min | run |
493c82b |
🟡 1 open · 2 fixed · 1 new | 7 min | run |
03df527 |
🔴 2 open · 3 fixed · 2 new | 9 min | run |
fb4c0d6 |
🔴 3 open · 3 new | 11 min | run |
…t failures Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…port moves first Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…rio harness Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
## Problem A local server stalled for 3-5 s misses the 2 s discovery probe. The desktop then drops the attachment, re-pairs, and remounts every window. The remount's re-subscribe stalls the server again. ## Change All in `DesktopAttachedPrimary.ts`. ### Grace - **No answer:** keep the attachment for 30 s - **Grace start:** the first failed verify - **Grace reset:** any verify that answers - **Late older verify:** cannot reset the grace - **Held URL answers as itself:** counts as verified ### Bearer reads - **In grace:** keep the held bearer - **Failed session check:** keep the held bearer - **`authenticated: false`:** re-mint, as before ### Drops at once - **Another environment:** on the held URL - **Undiscoverable server:** probe the held URL - **Moved port:** before any descriptor fetch - **Also:** a renderer reject ## Scope and approval Refs #1720. The maintainer asked for the desktop fix and the server fix. The server stall cause stays open on the issue. ## Verification ### Tests - **Unit tests:** 28 of 28 pass - **New tests:** stall, session, late, recovery - **Harness:** six inline fakes now share one - **Test file:** 881 lines, down from 896 - **Mutation check:** each fails without its fix - **Updated test:** a gone server drops after 30 s ### Checks - **Typecheck:** `apps/desktop`, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a live stall in the desktop app Claude Code, claude-opus-5-5. ## Fork trailers Squashes: - f8e0113 fix(desktop): keep the attached server through a stall (#1721) (#1721) - 7b623a2 fixup! fix(desktop): keep the attached server through a stall (#1721) (#1721) Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
…ses (#1724) ## Problem No fork release has published since 2026-10-11 22:26 UTC. Upstream re-pointed its moving `android-nightly` tag, and plain `git fetch --tags` refuses to overwrite a tag: ```text ! [rejected] android-nightly -> android-nightly (would clobber existing tag) ``` That fetch fails in release preflight and in the upstream sync mirror, so neither has run since. #1721, #1722, and #1723 have no build. ## Change - **Release preflight:** `git fetch --tags --force` - **Sync mirror fetch:** `git fetch --tags --force` - **Sync mirror push:** `push --tags --force` - **Local `fork:sync`:** same fetch flag - **Doc:** `fork-sync.md` fetch row Fork tags never share a name with an upstream tag, so forcing only moves upstream-owned tags. The `main` push stays unforced. ## Scope and approval The maintainer asked to land #1723 and stage its nightly; this unblocks that release. ## Verification - **Repro:** plain fetch rejected, exit 1 - **Fix:** forced fetch updates the tag, exit 0 - **Fork CI:** `vp run fork:ci`, exit 0 - **Not checked:** a release run on this head Claude Code, claude-opus-5-5. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
Problem
A local server stalled for 3-5 s misses the 2 s discovery probe.
The desktop then drops the attachment, re-pairs, and remounts every window.
The remount's re-subscribe stalls the server again.
Change
All in
DesktopAttachedPrimary.ts.Grace
Bearer reads
authenticated: false: re-mint, as beforeDrops at once
Scope and approval
Refs #1720.
The maintainer asked for the desktop fix and the server fix.
The server stall cause stays open on the issue.
Verification
Tests
Checks
apps/desktop, exit 0vp run fork:ci, exit 0Claude Code, claude-opus-5-5.
Fork trailers
Fork-Domain: backend-attach
Fork-Tier: bugfix
Fork-Upstreamable: no