Repository navigation
fix(fork): keep the client usable while the attached server restarts - #1712
donjor-agent[bot] wants to merge 2 commits into
Conversation
🩺 Aftercare
|
| Head | Result | Time | Check |
|---|---|---|---|
0b005de |
✅ review passed: fixed: none; held: A4; new: none; withdrawn: none; no item resolved; files (3): apps/web/src/connection/platform.ts, …and 2 more | 3 min | run |
ca8272e |
✅ review passed: fixed: A5, A6; held: A4; new: none; withdrawn: none; files (5): apps/desktop/src/app/DesktopAttachedPrimary.fork.test.ts, …and 4 more | 5 min | run |
ebfebe3 |
11 min | run | |
25aab54 |
10 min | run |
## Problem `hyprws CI` ran on pull requests only when the base was `hyprws` or `release/**`. A native stack layer targets the layer below it, so it got no checks at all. #1713 showed this: stacked on #1712, it had no CI run. ## Change Drop the `branches` filter on the `pull_request` trigger. The ledger already scopes a stacked head from its trunk merge base, so lower layers are judged too. ## Scope and approval Very small, focused CI fix the maintainer chose (option B) while landing the #1705 stack. ## Verification | Check | Result | | --- | --- | | `vp run fork:ci` | exit 0 | | CI on this PR | runs, since base is `hyprws` | | Stacked layer CI | proven once #1713 is pushed after merge | Claude Opus 5.5 in Claude Code, hosted by T3 Code. ## Fork trailers Fork-Domain: fork-meta Fork-Tier: bugfix Fork-Upstreamable: no Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
25aab54 to
ebfebe3
Compare
A4: preview builds carry no update feed, so the UI update flow needs two nightlies; the proof follows merge under #1705 (Refs, not Closes). |
Desktop: a restarted server reporting the same environment id re-verifies in place with its fresh pid/start time instead of dropping the attachment; identity stays the env-id find plus descriptor check, and late verifies or mints never drop or roll back a newer bearer or instance. Renderer: a primary absent from the topology stays registered (offline) for a five-minute grace before removal, so an update restart no longer wipes caches, drafts and open routes; on return it re-runs descriptor discovery, keeping the old registration through transient failures within the grace, so a different environment at the same URL replaces it. Covers #1706. Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
ebfebe3 to
ca8272e
Compare
An NTP step during the restart ended the wall-clock grace early and the poll wiped the client anyway. Covers #1706. Fork-Domain: backend-attach Fork-Tier: bugfix Fork-Upstreamable: no
Problem
A server update restarts the attached backend, and the desktop client drops the environment.
Projects, threads, composer drafts, and the open route vanish until the server returns.
Change
performance.now()), immune to NTP stepsThe renderer logic lives in
primaryAbsenceGrace.fork.tsbehind two marked hooks inplatform.ts.Why the monotonic clock
The first build still wiped in the VM.
CDP logpoints on the poll showed the cause:
Scope and approval
Refs #1706, settled in the #1705 profile.
Its nightly proof on a large DB follows merge, so the Task closes after.
Verification
Claim
Type a draft, click Update, wait out the restart: the thread, sidebar, and draft stay.
Build
20261011.10116150d67, stamped 1011Stress trials
Each trial reverts the VM snapshot; its stale guest clock forces an NTP step during the restart.
Cut table
Before
before-clip.mp4
After
after-clip.mp4
Checks
tsc --noEmitonapps/webvp run fork:ciClaude Opus 5.5 in Claude Code, hosted by T3 Code.
Fork trailers
Fork-Domain: backend-attach
Fork-Tier: bugfix
Fork-Upstreamable: no