Commit Graph
623 Commits
Author SHA1 Message Date
Neil ed32ca2c21 fix(worktrees): fail loudly when no default base ref is resolvable (#922) 2026-04-21 17:40:27 -07:00
Jinjing 55d15f44b4 fix(composer): larger fonts, Enter-to-advance in new-workspace dialog (#920)
Bumps labels to text-xs and inputs to text-sm/h-9 so fields aren't
cramped in the Cmd+N composer. Enter on the Workspace Name field now
moves focus to the Agent combobox; Enter on the Agent trigger (closed)
submits via new optional onTriggerEnter prop, guarded by createDisabled.
2026-04-21 16:47:32 -07:00
Neil a086eae06b fix(settings): trigger RC channel and hidden-experimental via plain Shift (#919) 2026-04-21 16:41:46 -07:00
Brennan Benson b32996d50f fix: clarify Sleep tooltip to mention browser tabs (#915) 2026-04-21 16:27:06 -07:00
Jinwoo Hong 995b2affaf fix(editor): focus find input on Cmd+F when search is already open (#910) 2026-04-21 16:22:04 -07:00
Neil 4fd5d95a41 fix(tasks): drop redundant title-adjacent type icon on work-item rows (#918) 2026-04-21 16:20:29 -07:00
Neil ab2f831d1b fix(sidebar): make pinned-group divider visible in both themes (#917) 2026-04-21 16:16:20 -07:00
Neil b1e84b6e18 Derive quick-create agent from props instead of syncing via effect (#914) 2026-04-21 16:07:27 -07:00
Brennan Benson 5700f3dfee feat(terminal): Ctrl+Left/Right word-nav on Windows/Linux (#857) 2026-04-21 15:56:01 -07:00
Neil 369ddb6fe6 Simplify new workspace quick-create and wire Use button to direct launch (#913)
* Refine workspace composer controls

* Working repo autofocus

* after selects

* Simplify workspace quick create dialog

* Refine quick create form focus flow

* autofocus fix

* normal dialog

* base dialogs

* Wire Use button to launch workspace directly

Skips the composer modal for the common case: creates the workspace,
activates it, launches the default agent, and pastes the work-item URL
into the agent's input as a reviewable draft. Falls back to the modal
when setupRunPolicy is 'ask' or no compatible agent is detected.

* Stretch combobox dropdowns to trigger width

Repository and Agent rows in the quick-create dialog now span the full
dialog width like the Workspace Name input, and their dropdown popovers
inherit the trigger width so the entries align edge-to-edge with the
trigger instead of clipping to a fixed 288/320px.
2026-04-21 15:55:18 -07:00
Neil 35f5fe72e6 feat(editor): open HTML preview to the side (#908) 2026-04-21 15:52:28 -07:00
Jinjing c83d2ebbf8 feat(settings): add dedicated Agent Browser Use setup in Browser pane (#907)
* feat(settings): add dedicated Agent Browser Use setup in Browser pane

Adds a guided 3-step onboarding card (enable Orca CLI, install skill,
import cookies) to the Browser settings pane with a local enable toggle,
search-query integration, and a shortcut to the Session & Cookies block
for multi-profile users.

* fix(settings): scope browser-use completion to default profile and gate skill toggle

Track step-3 completion from the default profile only, since that is the
profile agents use. Disable the "I ran it" toggle when the CLI step is
incomplete so the visual gating matches behavior.
2026-04-21 15:38:36 -07:00
Jinwoo Hong 2b226ce234 fix(browser): place CLI-created tabs in the active browser tab's group (#904) 2026-04-21 15:10:27 -07:00
Brennan Benson 2da6159a25 fix(diff-notes): rename to "Note", highlight saved card, Enter submits (#902) 2026-04-21 12:52:57 -07:00
Brennan Benson c9e150b4c3 fix(sidebar): focus newly-added non-git folder in workspace (#894) 2026-04-21 12:19:24 -07:00
Jinwoo Hong 657f87d69e fix(sidebar): collapsed group overlap on restart (#898) 2026-04-21 11:35:24 -07:00
Jinjing 89954334a3 fix: route Cmd/Ctrl+N through main-process shortcut allowlist (#895)
Ensures the new-workspace composer opens even when focus is inside a
contentEditable surface (markdown rich editor) or a browser-guest
webContents, both of which bypass the renderer's window-level keydown.
2026-04-21 10:32:31 -07:00
Jinwoo Hong 4a90181ffb feat(browser): search suggestion in address bar dropdown (#893) 2026-04-21 10:04:56 -07:00
Jinwoo Hong 5f3055fb3f feat(browser): duplicate tab, search engine, address bar history fix (#892) 2026-04-21 09:52:40 -07:00
Neil d66d86645d feat(settings): Cmd+Shift affordances for RC channel and hidden experimental (#887)
Cmd+Shift-click "Check for Updates" (menu or Settings > General) opts
into the RC release channel by switching the feed to the github provider
with allowPrerelease=true for the rest of the process.

Cmd+Shift-click the Experimental sidebar entry reveals a "Hidden
experimental" group with an orange-tinted header and a disabled
placeholder toggle — the slot for future unfinished/staff-only options.

Also reword the Experimental description to something less alarmist:
"New features that are still taking shape. Give them a try."
2026-04-21 00:07:02 -07:00
DrakontiaandCopilot 53f911ddc3 Support GitHub Copilot CLI agent detection (#866)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-20 23:44:37 -07:00
Jinwoo Hong 633204babd fix(editor): apply dark scrollbar styling to rich markdown editor (#886) 2026-04-20 23:00:18 -07:00
Brennan Benson 933d59f165 diff-comments: copy-only flow in Source Control (#884) 2026-04-20 21:50:31 -07:00
Kelvin Amoaba bf21a028b9 feat: add terminal line height setting (#712)
Add a configurable line height multiplier (1-3) to terminal appearance
settings under Typography, persisted and applied to all terminal panes.
2026-04-20 21:23:43 -07:00
Jinwoo Hong 7a9bc4ef6d feat: computer use via agent-browser CDP bridge (#856) 2026-04-20 20:56:14 -07:00
Jinjing 3a58a829f9 feat(editor): export active markdown to PDF (#882)
Adds File > Export as PDF... menu item (Cmd+Shift+E) and an overflow
menu entry that renders the active markdown preview through a sandboxed
Electron BrowserWindow and writes it to disk via printToPDF.

- New main-side IPC handler (src/main/ipc/export.ts) and html-to-pdf
  helper that loads a CSP-locked HTML document in a sandboxed, context-
  isolated window with javascript enabled only for image-ready polling.
- Renderer helpers clone the rendered markdown subtree, inline all
  computed styles through a curated allowlist, and ship the resulting
  HTML fragment over IPC.
- Ref-counted listener registration so split-pane layouts install
  exactly one IPC subscription and survive panel churn.
2026-04-20 19:41:12 -07:00
Neil 3bbe9ed712 fix(editor): restore syntax highlighting for .tsx and .jsx files (#878) 2026-04-20 19:22:31 -07:00
Jinjing b3f99b5ae1 fix: preserve selection during external markdown edits and sidebar interactions (#880)
* fix: preserve selection during external markdown edits and prevent blocked worktree switching

* fix: correct TypeScript types for usePreserveSectionDuringExternalEdit and add missing dependency
2026-04-20 18:54:52 -07:00
Jinwoo Hong ff16ab1565 feat(stats): add share button to usage panes (#874) 2026-04-20 18:54:16 -07:00
Jinwoo Hong 25971cd32d fix(terminal): preserve scroll position during split pane drag resize (#865) 2026-04-20 18:53:20 -07:00
Jinjing 3a0fa521be feat(editor): support clicking anchor links to jump to headings (#879)
Anchor-only links (#heading) now scroll to the matching heading in both
the markdown preview and rich editor. Preview uses rehype-slug to stamp
heading ids; the rich editor walks headings with the same stateful
GithubSlugger for parity (including duplicate-heading suffixes).
2026-04-20 18:35:28 -07:00
Brennan Benson b3361569b4 fix(tabs): raise selected tab contrast so it stands out from hover (#877) 2026-04-20 17:30:07 -07:00
Jinjing 889dbb23cb fix: Cmd+F search in rich markdown editor now scrolls to active match (#876)
Merge decoration update and selection into a single ProseMirror
transaction so scrollIntoView is not lost. After dispatch, manually
scroll the outer flex container using coordsAtPos since
tr.scrollIntoView cannot reach the non-overflowing editor wrapper.

Also change active match highlight from orange to blue for better
contrast.
2026-04-20 17:25:04 -07:00
Brennan Benson 288322cac4 feat(sidebar): rename Shutdown to Sleep with explanatory tooltip (#875) 2026-04-20 17:21:06 -07:00
Brennan Benson 57b0617e37 perf(terminal): remove 3-minute periodic scrollback save (#869) 2026-04-20 14:56:06 -07:00
Jinjing 6b3617586a fix(editor): eliminate ~10s freeze when loading large markdown files (#870)
The rich-mode unsupported-content check ran canRoundTripRichMarkdown()
unconditionally — synchronously creating a throwaway TipTap Editor,
parsing the entire document, and serializing it back — all on the main
thread during React render. For a 120KB file this blocked for ~10s.

Redesign: run cheap regex checks first (reference links, footnotes,
HTML). If no unsupported syntax is detected, allow rich mode immediately
without any round-trip. The expensive round-trip is now only invoked
when HTML is detected and the file is under 50K chars.
2026-04-20 13:30:01 -07:00
Jinjing a4bfeef8a3 fix: support Cmd+N and Esc on the tasks page (#868)
Move the Cmd+N handler above the new-workspace early-return so the
shortcut opens the composer modal from the tasks page. Add an
activeModal guard to the page-level Esc handler so it yields to the
composer modal's own Esc dismissal.
2026-04-20 12:49:45 -07:00
Jinjing 781bc9fd62 fix(quick-open): exclude sibling worktree files from Cmd+P results (#867)
When the active worktree is the repo root, linked worktrees are nested
subdirectories. rg --files listed files from every worktree instead of
just the active one. Pass sibling worktree paths as --glob exclusions.

Also wrap scroll-to-top in rAF so it runs after cmdk's scroll-into-view.
2026-04-20 12:27:08 -07:00
Neil c6f6300bcf feat(terminal): add "Copy on Select" clipboard setting (default off) (#862)
Adds an opt-in terminal setting that automatically copies the current
selection to the system clipboard as the user selects, mirroring X11 /
gnome-terminal behavior. xterm.js has no native option for this, so the
renderer hooks `onSelectionChange` per pane and writes via the existing
clipboard IPC. Defaults to false so existing users keep the explicit
Cmd/Ctrl+Shift+C copy flow.

Closes #860
2026-04-20 00:28:29 -07:00
Jinjing db96479a5d fix(editor): prevent cursor jump to end when typing during autosave in markdown editor (#855)
Autosave writes to disk echo back as fs:changed events that were treated as
external edits, triggering a setContent reload mid-typing that reset the TipTap
selection to the document end (and could drop unsaved keystrokes). Stamp each
self-write in a registry so useEditorExternalWatch ignores its own echo, and
preserve selection when genuine external edits do arrive.
2026-04-19 22:05:52 -07:00
Jinwoo Hong 8e88fdae33 fix: preserve terminal scroll position when splitting panes (#817) 2026-04-19 20:35:37 -07:00
Brennan Benson 0ef3a65635 fix(terminal): Cmd+Left/Right jump to start/end of line (#851) 2026-04-19 20:24:17 -07:00
Jinwoo Hong ac39899e90 fix(terminal): clear screen before daemon restore to prevent duplicated output (#853) 2026-04-19 19:56:30 -07:00
Jinwoo Hong 8dcb234d22 feat(browser): multi-profile session management with per-tab switching (#823) 2026-04-19 19:48:26 -07:00
Brennan Bensonandheyramzi 6893923c73 feat: double-click tab to rename (inline edit) (#844)
Co-authored-by: heyramzi <ramzi@upsys-consulting.com>
2026-04-19 17:22:30 -07:00
Neil 9d56108e89 fix(agents): detect all user-installed CLIs by hydrating PATH from login shell (#843)
* fix(agents): detect opencode/pi CLIs installed under ~/.opencode/bin and ~/.vite-plus/bin

Packaged Electron inherits a minimal PATH without shell rc files, so
agent install-script fallback dirs stay invisible to `which` probes —
the Agents settings page then shows OpenCode/Pi as "Not installed"
even when the user can run them from Terminal.

Add ~/bin, ~/.opencode/bin, and ~/.vite-plus/bin to the packaged PATH
augmentation so preflight detection matches shell behavior.

Fixes #829

* feat(agents): hydrate PATH from user's login shell + Agents Refresh button

Packaged Electron inherits a minimal launchd PATH that misses whatever
the user's shell rc files append — ~/.opencode/bin, ~/.cargo/bin, nvm
shims, pyenv, custom tool dirs. The preceding commit hardcoded two known
install locations; this replaces that whack-a-mole pattern with a
generic approach.

On packaged startup (non-Windows), spawn `${SHELL} -ilc 'echo $PATH'`
with a 5s timeout, parse the delimited PATH, and prepend any new
segments to process.env.PATH. The result is cached for the app session
so we pay the shell-init cost at most once.

Surface a Refresh button in Settings > Agents that forces a re-probe
and re-detects installed agents — handy right after installing a new
CLI, no restart needed.

Live-verified that a `zsh -ilc` spawn with a minimal launchd-style env
still resolves the user's full PATH (32+ segments including the
rc-appended dirs).

* refactor(hydrate-shell-path): simplify dedup with Set + Set.difference

Set preserves insertion order, so PATH first-match-wins semantics are
preserved without manual tracking. Set.prototype.difference (Node 22+)
expresses the new-segments calculation in mergePathSegments as the
set-difference operation it always was.
2026-04-19 14:36:30 -07:00
Jinjing 818a355098 feat(tasks): add New GitHub issue dialog to tasks page (#841)
Adds a + button on the tasks page that opens a dialog to create a new
GitHub issue in the selected repository. Wires createIssue through the
main/preload IPC using gh api, and refreshes the tasks list after
creation so the new issue shows up immediately.

Also clears a stray Radix pointer-events lock on GitHubItemDrawer mount
so Close/open-in-GitHub buttons remain clickable after the New Issue
dialog closes.
2026-04-19 12:52:24 -07:00
Brennan Benson 222d70e063 feat: add idempotent E2E test suite with headless Electron support (#671) 2026-04-19 12:09:32 -07:00
Jinwoo Hong 037acf64db fix(terminal): refresh WebGL canvas after resume to prevent frozen terminal (#837) 2026-04-19 12:07:49 -07:00
Jinjing 7734cf9bef fix(browser): debounce find-in-page query to stop per-keystroke flash (#836)
* fix(browser): debounce find-in-page query to stop per-keystroke flash

Why: findInPage re-highlights the active match on every call, which flashed
as the user typed. Debounce (200ms) so the highlight only re-runs once typing
settles. Enter still uses the live query for immediate next/previous nav.

* fix(browser): auto-select top suggestion, preserve address-bar typing

- Top history suggestion is auto-selected so Enter navigates to the best
  match without an extra ArrowDown keypress.
- URL syncs from the store and webview navigation events no longer clobber
  the address bar while the user is actively typing in it. Previously,
  opening a fresh tab and starting to type could be overridden when the
  configured default URL (e.g. google.com) finished resolving.
2026-04-19 11:38:50 -07:00