Skip to content

v0.4.0

Choose a tag to compare

@RaditPasya RaditPasya released this 07 Oct 04:49
· 15 commits to main since this release

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, esbuild in dependencies, noUnusedLocals/noUnusedParameters green, typecheck fully clean (added missing dsh-tools dev types)