Commit Graph
8614 Commits
Author SHA1 Message Date
Neil f15341db97 docs: update x (twitter) icon in readme (#779) 2026-04-17 16:58:44 -07:00
Neil 451b6e652f fix(terminal): stop re-running composer prompt on user-initiated splits (#778) 2026-04-17 16:48:54 -07:00
DrakontiaandCopilot 2931f66e78 feat: add GitHub Copilot CLI as a supported agent (#770)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 16:47:59 -07:00
Neil 5d776ccb2a 1.3.1-rc.1 v1.3.1-rc.1 2026-04-17 16:02:55 -07:00
Neil fbbebe98eb perf: make worktree creation click snappy (#776) 2026-04-17 16:02:30 -07:00
Neil 1111b72b15 fix(settings): track scroll indicator at viewport midpoint (#775) 2026-04-17 16:01:25 -07:00
Neil aa75adedf7 feat(settings): gate persistent terminal daemon behind experimental toggle (#774) 2026-04-17 16:00:16 -07:00
Neil 1daf9d1b94 fix(composer): tighten worktree composer card typography and sizing (#773) 2026-04-17 15:32:04 -07:00
Neil 93ede4807a Skip delayed RC schedules outside target PT hours 2026-04-17 15:29:31 -07:00
Jinjing 023d65ebfa feat(worktree): add skip delete confirmation preference (#771)
- feat(worktree): add skip delete confirmation preference
2026-04-17 15:29:19 -07:00
Neil 71fd14f369 feat: default setup script to new tab (#772)
Change the default setupScriptLaunchMode from 'split-vertical' to
'new-tab' so setup output runs in a background Setup tab by default
instead of crowding the primary terminal pane. Users can still opt
back into split-vertical or split-horizontal in Terminal settings.
2026-04-17 15:27:27 -07:00
github-actions[bot] 3283729a7f release: 1.3.1-rc.0 [rc-slot:2026-04-17-15] v1.3.1-rc.0 2026-04-17 22:09:53 +00:00
Jinwoo Hong 1ea2a6d768 fix: strip ELECTRON_RUN_AS_NODE from dev script environment (#769) 2026-04-17 13:14:40 -07:00
Neil 203c3a1617 1.3.0 v1.3.0 2026-04-17 12:07:36 -07:00
Jinwoo-H 20d1524914 1.2.3-rc.10 v1.2.3-rc.10 2026-04-17 13:38:26 -04:00
Jinwoo Hong 7c6d408f16 fix: resolve posix_spawnp failure in daemon's node-pty spawn (#762) 2026-04-17 10:37:56 -07:00
Jinjing c655c13629 feat(settings): give browser its own settings pane (#764)
- Move browser-related settings out of the in-browser gear dialog and
  out of General into a dedicated Browser pane in Settings, and route
  the browser gear button to open it.
2026-04-17 10:35:52 -07:00
Jinjing 949f3e396a fix: remove smooth scroll animation on settings section navigation (#765) 2026-04-17 10:27:52 -07:00
Jinjing 6767157fe0 feat: add double-click-to-rename for editor tabs and file explorer (#760)
- fix: prevent Escape-cancelled rename from committing via trailing blur

Users can now double-click a filename in editor tabs or the file explorer to rename it inline. Both flows share a common renameFileOnDisk() function that handles:
- Quiescing in-flight autosaves before rename to prevent recreating old paths
- Remapping all open editor tabs to the renamed file/directory
- Undo/redo support via the file explorer undo stack

The shared Escape-cancel logic prevents a race condition where blur could fire and commit the rename after user cancelled with Escape.
2026-04-17 10:16:38 -07:00
Jinwoo-H 21fc9383c0 1.2.3-rc.9 v1.2.3-rc.9 2026-04-17 12:39:18 -04:00
Jinwoo-H f7fa1e56d5 1.2.3-rc.8 2026-04-17 12:38:22 -04:00
Jinwoo Hong 25b3093c48 fix: bundle xterm deps into daemon-entry to fix packaged build crash (#759) 2026-04-17 09:29:29 -07:00
Neil 50e2376df8 fix: autofocus composer prompt and make "Use" open composer directly (#758) 2026-04-17 00:56:59 -07:00
Jinjing 6bf6a4bda1 fix: remove max-width cap on right sidebar drag resize (#727) (#757)
The right sidebar drag was hard-capped at 500px, so long file names
(e.g. construction drawing sheets, multi-part document names) always
truncated with no way to reveal them.

The cap is now window-relative — users can drag the sidebar up to
(window width − 320px reserve) so the left sidebar and editor can
still breathe. Persistence clamp split so the right sidebar keeps a
loose 4000px safety net for corrupted values, while the left sidebar
stays at 500px.
2026-04-17 00:38:47 -07:00
Jinjing eced42167f fix: show pointer cursor when hovering titlebar agent badge (#754)
The badge's inner dot and count spans inherited the titlebar's
-webkit-app-region: drag, which overrode the button's cursor: pointer.
Disable pointer events on the children so hover/click hit-test the
button itself (which opts out of the drag region).
2026-04-17 00:09:03 -07:00
Neil 6226d5936b 1.2.3-rc.7 v1.2.3-rc.7 2026-04-16 23:55:53 -07:00
Neil ee69e110fc Compser template (#753) 2026-04-16 23:55:37 -07:00
Jinjing fcbdd95b43 fix: auto-focus rich markdown editor on mount (#750)
* fix: auto-focus rich markdown editor on mount

Match MonacoEditor's behavior so opening a new markdown file (Cmd+Shift+N)
or switching to a rich-markdown tab lands the cursor in the editor. Guards
against focus theft from modals/dialogs and passes `scrollIntoView: false`
so the focus call doesn't race with useEditorScrollRestore's RAF retry loop.

* fix: use 'start' position to avoid AllSelection on empty editor

Passing null to commands.focus() keeps the editor's current selection,
which for a fresh empty document is an AllSelection — rendered as a
visible 0-width highlight inside the placeholder instead of a normal
caret. 'start' resolves to a proper TextSelection at doc start.

Also update review-and-submit skill to push before gh pr create.
2026-04-16 23:30:14 -07:00
Jinjing d1a3324e7e fix: make Cmd+J worktree jump scroll instant (#751)
Remove `scroll-smooth` from the virtualized sidebar viewport so palette
reveals land immediately instead of animating the full cross-list
distance at the browser's default smooth-scroll speed.

Single-card stepping (Cmd+Shift+↑/↓) no longer glides either — the
brevity of the movement makes instant feel snappier, and it avoids
the state-machine risk of toggling `scroll-behavior` inline when
tanstack virtual can also issue follow-up scroll corrections after
dynamic item measurement.
2026-04-16 23:25:17 -07:00
Neil 6e1cb1c6cf fix: boot to landing before shutting down active worktree (#749) 2026-04-16 22:56:01 -07:00
Jinwoo Hong fd4f986c59 feat: terminal persistence via out-of-process daemon (#729) 2026-04-17 01:42:41 -04:00
Jinwoo Hong 39832c7801 feat: Ghostty-style macOS Option key mode setting (#748)
* feat: add Ghostty-style macOS Option key mode setting

Disable xterm's macOptionIsMeta by default so non-US keyboard layouts
can compose characters (e.g. @ on German, € on French). Add a
user-facing "Option as Alt" setting with four modes — Both, Left,
Right, Off — mirroring Ghostty's macos-option-as-alt. Core readline
shortcuts (Option+B/F/D) are automatically compensated when Option is
in compose mode. The setting applies live to existing terminal panes.

* fix: track Option key location from modifier keydown, not character key

KeyboardEvent.location on a character key (e.g. Period) reports that
key's own position (always 0), not which modifier is held. Left/right
Option mode was broken because we read location from the character
event. Fix by recording the Option key's location from its own
keydown/keyup events and passing it as a separate parameter.
2026-04-17 01:37:22 -04:00
Neil 42e01f240c perf: speed up NewWorkspacePage first paint (#746)
* perf: speed up NewWorkspacePage first paint

- SWR cache + inflight dedup for gh work-items in store
- Prefetch on openNewWorkspacePage, sidebar Plus hover, Landing hover
- Seed list synchronously from cache to kill the double-fetch on mount
- Module-scoped detectAgents promise cache (one IPC per session)
- Consolidate useComposerState store subs via useShallow
- Hoist Intl.RelativeTimeFormat to module scope (was per row)
- LightRays: count 6->3, blur 44->20, drop mix-blend-screen,
  willChange compositor hint, prefers-reduced-motion bailout

* perf: drop redundant runIssueAutomation state + effect

Derived-state-via-effect anti-pattern: runIssueAutomation was just a
mirror of canOfferIssueAutomation toggled through a useEffect, so
shouldRunIssueAutomation was effectively canOfferIssueAutomation one
render late. Compute during render instead.

* fix: prefetch under the exact cache key the page will read

Sidebar and Landing were calling prefetchWorkItems with no query, warming
the cache at '::'' which NewWorkspacePage never reads. Pass the user's
default-preset query so hover-prefetch actually hits the key the page
looks up on mount.
2026-04-16 22:03:24 -07:00
Neil 2871294290 feat: nicer composer prompt scrollbar and inline '>' prefix (#747)
* feat: nicer composer prompt scrollbar and inline '>' prefix

Style the workspace composer prompt with a sleek scrollbar, and render the
'>' prefix as an inline-feeling overlay that scrolls with the text. Scrolling
is hoisted onto an outer wrapper so the '>' and typed text share a single
native scroll container — no cross-layer paint delay, no wobble.

* docs: fix stale comment describing abandoned translateY approach
2026-04-16 21:58:54 -07:00
Neil eec2f9137e feat: configurable setup script launch location (#745)
Adds a Terminal settings control for where the repo setup script runs
on workspace create: vertical split (default, preserves prior behavior),
horizontal split, or a separate "Setup" tab that does not steal focus
from the primary terminal.
2026-04-16 21:20:38 -07:00
Brennan Benson ad472f89d4 Fix split-pane console regressions and terminal context menu dismiss (#743) 2026-04-16 21:16:02 -07:00
Neil 7df0d9686c feat: GitHub PR/issue drawer on new-workspace page (#744) 2026-04-16 21:14:24 -07:00
Neil 480c19f5f0 fix: pinned 'Add folder/repo' footer in repo combobox (#741)
- Changed 'repositories' → 'repos/folders' in search placeholder and empty state
- Added always-visible 'Add folder/repo' button with FolderPlus icon in popover footer
- Button calls existing addRepo store action (same folder picker flow)
- Auto-selects newly added repo on success
- Made Command controlled to clear selection highlight when hovering footer
2026-04-16 20:55:10 -07:00
Jinwoo Hong 961f507ed3 feat: improve cookie import robustness and cross-platform support (#736) 2026-04-16 20:44:10 -07:00
Neil e8e5258138 fix: slugify prompt fallback in composer workspace name (#740) 2026-04-16 20:39:32 -07:00
Brennan Benson 31d402baa5 Prevent replaying split pane startup commands (#737) 2026-04-16 20:36:37 -07:00
Neil a3dd4e8fb3 feat: open composer modal from Cmd+J with GH URL support (#739) 2026-04-16 20:33:54 -07:00
Jinwoo Hong 63b2353cfd feat: browser URL history and address bar autocomplete (#738) 2026-04-16 20:07:46 -07:00
Jingyue WuandJinwoo-H eb8901ce36 feat: file explorer shortcuts + fix worktree switch shortcut hinting (#719)
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-04-16 18:40:34 -07:00
Brennan Benson 5c664fc0b9 feat: support dragging tabs into new split panes (#732) 2026-04-16 16:47:11 -07:00
dependabot[bot] 0f0a237e69 build(deps-dev): bump electron from 41.0.3 to 41.1.0 (#721)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-16 16:39:34 -07:00
Neil eaff42ec9a 1.2.3-rc.6 v1.2.3-rc.6 2026-04-16 16:35:49 -07:00
Neil 07902e749a 1.2.3-rc.5 v1.2.3-rc.5 2026-04-16 16:02:56 -07:00
Neil c598dfe102 1.2.3-rc.4 v1.2.3-rc.4 2026-04-16 15:45:09 -07:00
Neil d2a53c8fcc New workspace create page (#710)
* New workspace page with agent catalog, composer modal, and terminal integration

* fix lint

* better blank state

* fix: resolve typecheck errors in new-workspace flow

- widen activateAndRevealWorktree's issueCommand to accept direct
  command shape used by NewWorkspacePage, not just the main-process
  runner-script variant
- use a ref object in pty-connection tests to dodge TS narrowing the
  captured callback to never across the mock closure boundary

* fix: bound worktree name auto-suffix loop to prevent OOM in tests

The auto-suffix loop in createLocalWorktree had no termination cap.
When tests (or a misconfigured env) mocked getBranchConflictKind /
getPRForBranch to always return a collision, the loop ran forever and
the vitest worker crashed with "Ineffective mark-compacts near heap
limit".

Cap the search at 100 suffixes, and if all fail, fall back to the
original specific error messages (branch already exists / PR already
owns the name) instead of a generic failure.

Update the two tests that asserted the old throw-on-first-conflict
behavior to verify the new auto-suffix path end-to-end.
2026-04-16 15:41:40 -07:00