Repository navigation
v0.4.0
0.4.0 — Fetch-first sync + full audit pass
Footer dock: fetch-first sync button
- The pull button is now a fetch ⟳ button by default — it only morphs into the green pull ↓ when the remote is actually ahead
- Fetch runs per-branch (
origin/<branch>, quiet, no tags) — one ref over the wire, no objects until you pull - Result toast after every sync: "No changes upstream", "Local is N commits behind", "Pulled N commits", or the git error in red (auto-dismisses)
- Pull icon color language: green = updates waiting, orange = conflict/diverged, red = failed, grey = in sync or no upstream
Footer dock header rework
- Branches moved into the header: click for a picker popover (current ✓, local-only, ↑↓ counts, gone-upstream marked), Esc to close
- "Open full panel" is an icon now; header collapses with animation, resizable with remembered height
- Narrow sidebars (< 248px dock): branch label swaps to a status light automatically via container queries — no JS measuring, no stuck states
- Themed surfaces (no more off-scheme grays), hover glow on the header, dirty/conflict state in screen-reader labels
Full audit: redundancies, inefficiencies, bad practices
- Host: merged duplicate snapshot paths (fewer git spawns per status/panel), shared in-flight dedup for worktrees, SSE gated up front + subscriber cap,
--terminators on all user-controlled argv (verified against real git), leading-dash rejection, worktree rollback on partial failure - Client: snapshot cache actually caches (mounts within TTL cost zero network), transport errors no longer masquerade as "not a repo", stale-fetch race closed, locale changes stop tearing down SSE, busy held through trailing refresh, 25s request timeouts
- Build: clean
lib/, no dangling sourcemap,esbuildin dependencies,noUnusedLocals/noUnusedParametersgreen, typecheck fully clean (added missingdsh-toolsdev types)