Commit Graph
3283 Commits
Author SHA1 Message Date
Jinjing 165e2dda90 style: reduce file & icon display size in sidebar views (#183)
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.
2026-03-28 17:09:41 -07:00
Jinjing 3644aa8f29 Show committed files in the "source control" tab (#181)
* 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
2026-03-28 17:00:40 -07:00
Jinjing dbab855611 fix: guard against empty branch names in PR check status lookups (#182)
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.
2026-03-28 16:10:56 -07:00
NeilandClaude Opus 4.6 5e4e4ea1db feat: detect agent idle via terminal title for unread notifications (#178)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 15:40:20 -07:00
Jinjing a43568247c feat: add quick open file navigation (#177) 2026-03-28 14:42:19 -07:00
Jinjing b8d6331220 feat: preview image files in editor diffs (#176) 2026-03-28 14:38:08 -07:00
Jinjing d78fcaa9b7 feat: show diff indicator in editor header and file tabs (#175)
Extract shared getEditorDisplayLabel() so both the tab bar and editor
header display "(diff)" / "(diff staged)" suffixes consistently.
2026-03-28 14:18:10 -07:00
Jinjing bbbe378467 feat: display hot key mappings in settings (#173) 2026-03-28 13:55:06 -07:00
Jinjing d4fc4bef19 Support dragging source control files into terminals (#172) 2026-03-28 13:37:52 -07:00
Jinjing 4669fa814e feat: show git status across file navigation (#170) 2026-03-28 12:30:04 -07:00
Jinjing 081410d113 feat: add release notes links to update UI (#169) 2026-03-28 12:01:23 -07:00
Jinjing e699bec46e WIP: uncommitted changes before rebase (#168) 2026-03-28 11:59:55 -07:00
Jinjing cf0565ab97 Harden external navigation and cross-platform path handling (#167) 2026-03-28 11:42:13 -07:00
Jinjing 1fae5bc000 Add checks status indicator dot to activity bar (#166)
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.
2026-03-28 11:17:00 -07:00
Jinjing a042d679de feat: move diff view toggle to editor header for condensed layout (#164)
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.
2026-03-28 10:55:21 -07:00
Neil 7cf92c6e49 Restore modifier-click behavior for terminal URLs (#159)
* Restore modifier-click behavior for terminal URLs

* Fix terminal URL hover preview

* Add shortcut hint to terminal URL preview

* Tweak terminal URL shortcut hint styling

* Simplify terminal URL hover copy

* Fix terminal link handler test environment
2026-03-28 00:49:47 -07:00
NeilandClaude Opus 4.6 0feedc998e fix: send Kitty keyboard protocol sequence for Shift+Enter (#158)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 00:47:43 -07:00
Jinjing e8f2dcb57d fix: use gh pr list --head for reliable PR discovery (#162)
gh pr view only matches the current checkout, which fails for worktrees
on different branches. Switch to gh pr list --repo --head to query by
branch name directly, with a fallback to gh pr view for non-GitHub
remotes. Also fix the ChecksPanel refresh button to use the proper
handleRefresh flow and force-refresh the PR cache.
2026-03-28 00:30:47 -07:00
Jinjing 81b01fdb9a feat: auto-expand right sidebar for new users (#160)
Change rightSidebarOpenByDefault to true so new users discover the
explorer panel immediately. When a worktree is created with the setting
enabled, also switch to the explorer tab before opening the sidebar.
2026-03-28 00:27:00 -07:00
NeilandClaude Opus 4.6 9cbc739e29 fix: stamp lastActivityAt on new worktrees to prevent scroll misfire (#161)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 00:26:47 -07:00
Jinjing 8fe3c9dd3f Standardize sidebar action buttons and fix path handling (#154)
* Standardize sidebar action buttons and fix cross-platform path handling

- Standardize sidebar action buttons and fix cross-platform path handling

* Fix renderer path helpers for cross-platform sidebar paths
2026-03-28 00:15:01 -07:00
Jinjing d9b2ead844 feat: add rightSidebarOpenByDefault setting (#156) 2026-03-28 00:13:12 -07:00
Jinjing 665ffd89e3 fix: improve repo badge and branch label visibility in dark mode (#157)
Use bg-accent with dark mode variants instead of bg-background/50 so badges remain readable on dark backgrounds.
2026-03-28 00:11:39 -07:00
Jinjing 51b3b76633 fix: harden editor path copy behavior (#155) 2026-03-28 00:06:07 -07:00
Jinjing 6f366a1974 fix: use neutral styling for delete worktree button on merged PRs (#153)
The delete worktree button was styled as destructive (red) even though
deleting a worktree for a merged PR is routine cleanup, not a dangerous action.
2026-03-27 23:52:12 -07:00
JinjingandClaude Opus 4.6 4678845422 feat: make issue/PR/comment hover cards clickable to edit (#151)
Clicking on the issue, PR, or comment rows in a worktree card now opens
the edit-meta dialog focused on the relevant field. Also renames
"Issue/PR" labels to just "Issue" and adds cursor-pointer to buttons.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 23:18:05 -07:00
Jinjing f7840adbc5 Fix recent worktree sorting migration (#148) 2026-03-27 16:12:31 -07:00
JinjingandClaude Opus 4.6 bbc4a98f63 fix(updater): handle benign network errors and deduplicate error statuses (#146)
* fix(updater): handle benign network errors and deduplicate error statuses

Treats net::ERR_FAILED during update checks as benign (transitions to idle
instead of showing error), deduplicates identical error statuses, and adds
a manual download link to user-facing error toasts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use T[] array syntax instead of Array<T> to pass oxlint

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 15:06:49 -07:00
JinjingandClaude Opus 4.6 a1e2ba2003 fix: change Squash & merge button from purple to green (#145)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 15:01:46 -07:00
Jinjing e3d86dc193 fix: align shortcut labels and remove shift-enter terminal intercept (#144) 2026-03-27 14:59:36 -07:00
Jinjing 18bc9013d9 fix: remove --delete-branch from mergePR to prevent worktree error (#143) 2026-03-27 12:57:22 -07:00
Jinjing a728982a1d fix: Add --yes flag to gh pr merge command (#142)
* fix: squash and merge issue

- fix: squash and merge issue

* fix: use GH_PROMPT_DISABLED instead of invalid --yes flag
2026-03-27 12:49:17 -07:00
JinjingandClaude Opus 4.6 59c5f29e25 fix: force-refresh PR status and checks when manually refreshing (#141)
The refresh button was serving cached data instead of fetching fresh
PR status and checks. Added force option to bypass cache TTL on
manual refresh, and ensured checks are fetched for the correct
(refreshed) PR number.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 12:35:24 -07:00
JinjingandClaude Opus 4.6 cff5b034e4 feat: add revert/discard support for untracked files in source control (#140)
- Enhance discardChanges to handle untracked files by deleting them instead of git checkout
- Add path traversal protection to prevent discarding files outside the worktree
- Extract source control action logic into getSourceControlActions helper
- Show revert button for untracked files with confirmation dialog
- Add tests for both backend and frontend logic

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 12:35:19 -07:00
Jinwoo HongandClaude Opus 4.6 3e65d7e5aa fix: Windows terminal blank/unresponsive (#139)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 15:11:35 -04:00
JinjingandClaude Opus 4.6 30c8bf89c6 feat: auto-fetch PR on worktree change and refresh in empty state (#138)
* feat: auto-fetch PR data on worktree change and add refresh to empty state

Add useEffect to fetch PR data when the active worktree/branch changes,
and add a refresh button with loading spinner to the "no PR found" empty
state. Extract check helpers to separate file to stay within line limit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: replace custom PullRequestIcon SVG with lucide GitPullRequest

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 10:43:58 -07:00
Jinjing dd4eb42f5d Improve smart worktree sorting (#137) 2026-03-27 09:47:17 -07:00
Jinjing 97ef6d5e20 feat: add merge PR functionality across stack (#135)
- feat: add merge PR functionality across stack
2026-03-26 23:45:36 -07:00
Jinjing 4a11ab2dc9 fix: refactor code and address review findings (#134)
- chore: remove auto-review context file
- WIP: Changes before auto-review fixes
2026-03-26 23:31:53 -07:00
JinjingandClaude Opus 4.6 9e2d838b74 fix(updater): show download progress toast and enable toast feedback for settings check (#133)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 17:22:03 -07:00
JinjingandClaude Opus 4.6 b891b07189 feat: reduce GitHub API usage with gh api --cache for conditional requests (#132)
- Use gh api --cache for issues, issue lists, and PR checks endpoints so 304 Not Modified responses don't count against the rate limit
- Pass branch to getPRChecks to enable the check-runs REST endpoint with caching
- Extract mapping functions into separate mappers.ts to keep client.ts within 300-line limit
- Extract mapIssueInfo() helper to deduplicate issue mapping logic
- Remove dead re-exports from client.ts
- Fix reference instability in ChecksPanel poll dependency array

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 17:15:49 -07:00
Jinjing a5167c5a03 Revert "fix(ui): unify split download button" (#131) 2026-03-26 16:42:41 -07:00
JinjingandClaude Opus 4.6 e70706c1b0 fix(ui): unify split download button into single cohesive element (#130)
Merge the separate download action button and dismiss button into one
unified button element. The dismiss icon now appears on hover only,
eliminating the visual split.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 16:31:53 -07:00
Matheus Nogueira 390c3f5ceb fix(terminal): support Ctrl/Cmd+Shift+C copy shortcut (#129) 2026-03-26 20:20:42 -03:00
Jinjing 0d58a0bc45 feat: reduce GitHub API usage for checks and improve cache invalidation (#127)
- Fix ChecksPanel memory leak: add cancelled flag to prevent schedulePoll after unmount
- Include status in check signature for proper backoff reset on state transitions
- ChecksPanel lint: use ternary instead of if/else
- Don't cache empty string on gh CLI failure so login detection retries
- Clear checksCache on refreshAllGitHub to ensure fresh data
- Remove dead fetchIssueList code and supporting infrastructure
2026-03-26 16:14:05 -07:00
JinjingandClaude Opus 4.6 d7895d575d style: remove redundant PR state label from worktree card header (#128)
The PR state (merged/open/closed/draft) is already accessible via tooltip,
so the inline text label in the header is unnecessary visual noise.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 16:06:59 -07:00
Jinwoo HongandClaude Opus 4.6 796296ee25 feat: VS Code-style preview tabs for editor (#126)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 14:53:46 -07:00
NeilandClaude Opus 4.6 f5f125e7db fix: prevent macOS auto-update from appearing to fail silently
Two issues caused "Restart to Update" to not apply the update on macOS:

1. Premature window destruction: quitAndInstall() destroyed all windows
   before calling autoUpdater.quitAndInstall(). On macOS, MacUpdater
   delegates to Squirrel.Mac which may not be ready yet — it registers
   a listener and returns. With zero windows, the dock "activate" handler
   would re-open the old version, making it appear the update failed.
   Fix: remove close listeners (so windows don't block quit) but don't
   destroy them. Let Squirrel.Mac handle the actual quit.

2. Premature "ready to install" status: electron-updater fires its
   'update-downloaded' event after downloading the ZIP from GitHub, but
   BEFORE Squirrel.Mac finishes downloading from the localhost proxy.
   The UI showed "ready to install" when the update wasn't actually
   installable yet. Fix: on macOS, defer the 'downloaded' status until
   Electron's native autoUpdater confirms Squirrel has the update.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 14:47:47 -07:00
Jinwoo HongandClaude Opus 4.6 4d4d1ad2a6 fix: preserve 'show active only' filter when creating a worktree (#117)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 13:04:41 -07:00
NeilandClaude Opus 4.6 38c5b6b970 fix: stabilize active worktree order in 'recent' sort (#116)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 12:51:05 -07:00