Commit Graph
174 Commits
Author SHA1 Message Date
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
JinjingandClaude Opus 4.6 406f95b072 style: adjust worktree card comment styling and status indicator padding (#115)
Remove italic from comment text and tweak status indicator top padding from 3px to 2px.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 08:21:39 -07:00
JinjingandClaude Opus 4.6 149acf26bb fix: address review findings in updater flow (#114)
- Add console.error logging to startup update check catch block
- Add state guard to downloadUpdate() to prevent calls outside 'available' state
- Track and dismiss 'available' toast when download starts or completes
- Include version number in downloading status text

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 07:35:52 -07:00
JinjingandClaude Opus 4.6 d127b2cfb3 feat: polish UI with softer borders, smaller labels, and PR state colors (#113)
Soften border opacity across UI components, move label default to text-xs,
simplify worktree group tones, and color PR icons by state.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 00:20:58 -07:00
NeilandClaude Opus 4.6 f473e3f53e fix: exclude xterm helper textarea from editable target check (#111)
PR #103 added a blanket isEditableTarget() guard that inadvertently
matched xterm.js's internal <textarea class="xterm-helper-textarea">,
blocking Cmd+D (split pane), Shift+Enter (newline), and all other
terminal shortcuts whenever the terminal was focused.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 23:44:30 -07:00
JinjingandClaude Opus 4.6 8adecbecce feat: replace monospace body font with Geist Sans (#110)
Switch the app-wide font from SF Mono/monospace to Geist Sans for a
more polished, modern UI. Bundle the variable woff2 font in assets for
cross-platform support. Remove font-mono from sidebar and settings
components while keeping monospace in terminal/editor contexts.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 23:16:22 -07:00
JinjingandClaude Opus 4.6 902e2271b9 fix: handle orphaned worktree deletion with disk cleanup (#109)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 23:14:48 -07:00
JinjingandClaude Opus 4.6 69978c93f5 test: expand test coverage and extract worktree logic into testable module (#108)
Add comprehensive tests for worktree parsing, GitHub check status derivation,
hooks YAML parsing, persistence store, layout serialization, store cascades,
and terminal helpers. Extract pure functions from worktrees.ts into
worktree-logic.ts for better testability.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 22:34:20 -07:00
NeilandClaude Opus 4.6 3d4ed411c5 feat: editable diff views for unstaged changes (#107)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 22:25:36 -07:00
Neil 0bea9aa4ff Clickable Claude Code #PR (#106) 2026-03-25 22:24:19 -07:00