Introduce sortEpoch to decouple sort recomputation from click-triggered
state changes (clearing isUnread, GitHub refresh). Use synchronous useMemo
instead of useEffect so the sort order is available before the first render.
Also fix timeout-killed ripgrep searches resolving with truncated: false,
which misled the UI into showing partial results as complete.
The previous bg-accent/80 was too subtle to distinguish the active
worktree at a glance. Use bg-black/[0.06] (light) and bg-white/[0.10]
(dark) for a more obvious selection highlight.
- Update flex and height classes in MarkdownPreview, EditorContent, DiffViewer, and CombinedDiffViewer to ensure min-h-0 and flex-1 bubble down properly.
- Apply `scrollbar-editor` class to MarkdownPreview to match Monaco's scrollbar style.
* Squashed commits
- refactor
- commit design doc
* docs: add why-comments to conflict resolution code and track conflicts on open
- Add explanatory comments throughout conflict resolution code covering
safety constraints, architectural boundaries, and compatibility choices
- Track unresolved conflicts in openConflictFile so Resolved locally
state works for conflict-safe entry point
- Add CLAUDE.md/AGENTS.md guideline for documenting the "why"
- Add test for conflict tracking through openConflictFile
* docs(readme): refine tone and trim shipping section
Replace "nerds" with "100x engineers" and rewrite the shipping
section to be concise and match the confident tone of the rest
of the README.
* docs(readme): fix "Shipped daily" to "Shipping daily"
Add file/folder deletion via right-click context menu using Electron's
shell.trashItem (moves to OS trash, not permanent delete). Includes a
confirmation dialog, reveal-in-explorer support, and refactors the file
explorer into smaller composable modules.
The generic "No changes on this branch" empty state was showing on both
tabs. Scope it to the All tab so only "No uncommitted changes" shows on
the Uncommitted tab.
Replace the colored badge with the same PR display style used in
WorktreeCard: state-colored PullRequestIcon, clickable PR number link,
and truncated title text.
- Switch scrollbar to VS Code-like always-visible style with proper
hover/active states using color-mix
- Use background-color instead of background shorthand in scrollbar
pseudo-states to preserve background-clip: padding-box
- Add wheel capture handler to prevent draggable items from eating
scroll events in file explorer
- Fix flex overflow with h-full min-h-0 on scroll container
- Only allow file items (not directories) to be draggable
Shrink file entry rows in Source Control and File Explorer for a more
compact sidebar: smaller icons, tighter gaps, reduced font sizes, and
less left padding.
* refactor: auto-review fixes and UI improvements
- Remove dead code and fix type assertion in getBranchDiff
- Tighten GitDiffBinaryResult type constraint
- Fix race condition in CombinedDiffViewer with generationRef
- Fix reference stability in setGitBranchCompareResult
- Extract LazySection component to fix max-lines lint
- Update filesystem IPC to match updated signatures
- Adjust file explorer item spacing and font size
* fix: correct test expectation for staged diff header label
During a rebase with detached HEAD, the branch name can be empty or
resolve to empty after stripping refs/heads/. This caused gh to return
arbitrary PRs and created invalid cache keys like "path::".
Guard all branch-to-cache-key paths: getPRForBranch bails before
acquiring the semaphore, renderer components skip cache lookups,
and syncPRChecksStatus validates the normalized branch.
Show a colored dot (success/failure/pending) on the Checks tab in the
right sidebar activity bar. Extracts check status derivation into a
dedicated github-checks module and syncs the computed status back into
the PR cache. Also reorders Search tab before Source Control.
Lift the side-by-side/inline toggle from DiffViewer's internal toolbar
into the EditorPanel header with a tooltip. Reduces header height
(52→36px) for a more compact diff view. The toggle only appears for
single-file diffs, not combined diffs.