v1.35.3
fix(ws): stop listing every repo's own session twice on the dashboard's first frames
Opening dg ws showed each repo's tmux session as a standalone session row
next to the repo row it belongs to, then silently dropped the duplicates a
second or two later. A regression in v1.35.2.
The dashboard starts its git enumeration and its tmux scan together, and the
scan wins — it is two calls to a running server, while the enumeration spawns a
git process per repo. v1.35.2 taught the session rows to ask whether a window's
worktree still exists, but the answer they asked was an empty worktree list
that simply had not loaded yet, and an empty list reads as "no worktree backs
anything."
- Tell "no worktrees exist" apart from "no worktree list yet". They were the
same empty map, which is what made a loading dashboard look like a dashboard
with nothing in it. Until the first list lands the session rows fall back to
the window-name prefix, which can hide an orphan for one tick but can never
double-list a repo's session. - Classify a session scan against the worktree list that exists when the scan
LANDS, not one copied when the scan was ordered. The copy was taken as the
dashboard launched, so it was empty no matter what loaded afterwards. This is
the rule the worktree rows already followed. - Re-run the classification the moment the first worktree list arrives, so a
session whose worktree window is orphaned shows up with it rather than up to
three seconds later.
Behavior changes: none beyond removing the duplicate rows. Sessions holding a
worktree window whose worktree is gone still appear as standalone sessions,
which is what v1.35.2 added.
Full Changelog: v1.35.2...v1.35.3