Commit Graph
32 Commits
Author SHA1 Message Date
Neil 77f23b013f refactor(shared): drop the shared/types barrel and import from the real modules (#14447)
#14397 split `shared/types.ts` into 46 per-domain modules but kept the path as
a re-export barrel so the import sites did not have to change. This removes
the barrel: every consumer now imports from the module that actually declares
the type, and `src/shared/types.ts` is deleted.

Barrels hide where a type lives, make every consumer look like it depends on
the whole domain, and let an unrelated edit invalidate a module that ~2,000
files transitively import.

2,323 import declarations across 2,321 files. Rewritten mechanically: each
specifier was resolved to an absolute path via the TypeScript AST and
recomputed, rather than string-substituted, so alias forms (`@/../../shared/
types`) and per-specifier `type` modifiers survive.

Four cases the mechanical pass had to handle, each found by a gate rather than
by reading the diff:

- Modules inside `src/shared` import the barrel as `./types`, not
  `shared/types`. A pre-filter on the latter string skipped 176 of them and
  left imports dangling at a deleted file, which surfaced as confusing
  `Property 'x' is optional in type 'Repo' but required in Pick<Repo, ...>`
  errors rather than "module not found".
- The barrel RENAMED one type on the way through
  (`WorkspaceSource as WorkspaceCreateTelemetrySource`), so the original name
  in the owning module has to be re-aliased at each consumer.
- Three test files put `;(globalThis as ...)` on the line after the import.
  TypeScript parses that `;` as the import statement's terminator, so
  replacing through `statement.getEnd()` deletes it and breaks ASI. The
  rewrite now stops at the module specifier.
- A file that already imported directly from a module got a SECOND import
  from it, because the barrel re-exported those same names — which trips
  `import/no-duplicates` under `--deny-warnings`. A post-pass merges
  declarations sharing a specifier and type-only-ness; the `import type` plus
  `import` pair from one module is left alone, since that form is allowed.

Splitting one barrel import into several genuinely adds lines, which pushed
`terminal-layout-pty-ownership.ts` to 301 counted lines: its 107-character
import must wrap, and neither local type collapses onto one line (101 and 116
characters). Rather than contort a type declaration to fit a line budget,
`collectLeafIds` and `pruneLeaves` move to `terminal-pane-layout-tree.ts` —
they are pure structural operations on the layout tree and independent of PTY
ownership. `visible-worktrees.ts` similarly loses its own mini-barrel
re-export of `isDefaultBranchWorkspace`, with the four real consumers
repointed at the declaring module. No `max-lines` bypass added.

Verified: cold `tsc --noEmit` green on node, cli, and web (buildinfo deleted
first — these projects are `composite: true` and reuse stale caches); the full
`pnpm lint` green, not just bare oxlint — the narrower local check is what let
the duplicate imports reach CI; max-lines ratchet OK at 344.
2026-08-13 22:48:24 -07:00
Brennan Benson b2e29a2247 Fix Ctrl+Z in Windows and Linux terminals (#13398)
* fix(terminal): preserve Windows undo chords

* fix(terminal): keep undo menu hints unregistered
2026-08-09 18:14:39 -07:00
Brennan Benson 7aae88cd21 Fix terminal select-all and copy in Kitty-enabled TUIs (#13388)
* fix(terminal): handle select-all in Kitty TUIs

* fix(terminal): preserve popout native selection
2026-08-09 16:52:13 -07:00
pstanton237andJinwoo-H ca187c7307 fix(menu): restore paste in macOS native dialogs (#12645)
* fix(menu): restore paste in macOS native dialogs

* test(menu): pin platform for paste routing coverage

CI runs unit shards on ubuntu-latest only, so the unpinned paste-routing
test asserted "no native paste" vacuously: a double-route regression
passed green on Linux. Cover darwin/linux/win32 explicitly so the
exactly-once contract holds on every platform, and assert the item exists
in the negative-only cases so a rename cannot pass them silently.

Also document why the native first-responder fallback exists.

---------

Co-authored-by: Jinwoo-H <Jinwoo-H@users.noreply.github.com>
2026-08-05 23:17:34 -07:00
Neil f0221cd419 feat: show GPU acceleration in About panel (#11722) 2026-07-31 01:24:21 -07:00
Neil 10ca89ac8b feat(updater): switch to validated local mac builds (#10889)
* feat(updater): switch to validated local mac builds

* test(updater): cover local build recovery actions

* fix(types): keep local build contract in project sources
2026-07-27 16:36:39 -07:00
NeilandOrca e90dc38f01 fix(dev): stabilize macOS safeStorage Keychain key name across dev branches (#9400)
Co-authored-by: Orca <help@stably.ai>
2026-07-19 21:31:36 -07:00
Jinwoo HongandOrca 9981c3b827 Check for Updates: cmd/ctrl-click fetches latest perf-tagged prerelease (#7278)
Co-authored-by: Orca <help@stably.ai>
2026-07-05 02:53:17 -07:00
b916248294 Polish desktop native chat view (#6641)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: gsxdsm <gsxdsm@users.noreply.github.com>
2026-06-28 15:43:07 -07:00
Jinwoo Hong 972078f2c4 Fix paste ownership, input bounds, and IPC validation
Supersedes #5745, #5746, and #5747.
2026-06-19 17:14:55 -07:00
Brennan BensonandOrca 5429e659d4 Show PDF export only in Markdown controls (#5548)
Co-authored-by: Orca <help@stably.ai>
2026-06-17 10:51:41 -07:00
Jinwoo HongandOrca 9369708f6b Add English localization infrastructure (#4995)
Co-authored-by: Orca <help@stably.ai>
2026-06-09 10:43:04 -07:00
Brennan Benson 90378d4304 Add hide controls for sidebar shortcuts (#4648) 2026-06-04 14:14:28 -07:00
Brennan BensonandOrca 5b1f297078 Add contextual feature tours (#2734)
Co-authored-by: Orca <help@stably.ai>
2026-06-01 21:20:15 -07:00
Brennan BensonandOrca 669ade2313 Update onboarding feature wall experience (#2652)
Co-authored-by: Orca <help@stably.ai>
2026-05-23 12:21:13 -07:00
Neil 79b18f6fed Fix Orca Mobile layout and sidebar controls (#2663)
* Fix Orca Mobile layout and sidebar controls

* Use brand icons for mobile platform badges

* Add readable card for mobile pairing steps

* Align mobile flow primary actions

* Fix mobile sidebar toggle defaults
2026-05-22 23:32:17 -07:00
Neil 81fcfea965 Add terminal shortcut routing policy (#2610) 2026-05-21 23:57:53 -07:00
Neil 6408e49dbd Add customizable keyboard shortcuts (#2581)
* Add customizable keyboard shortcuts

- Add customizable keybindings
- Fix keybinding customization bypasses

* Keep shortcut UI labels dynamic

* Fix keybinding review gaps

* Improve shortcut recording UX

* Include settings section metadata in search

* Polish shortcut settings editor

* Tighten shortcut settings rows

* Clarify keybindings file card

* Clear settings search on section select

* Remove keybindings file helper copy
2026-05-21 19:10:16 -07:00
Jinwoo HongandOrca 8b6f666de5 Suppress false crash reports during expected renderer reloads (#2342)
Co-authored-by: Orca <help@stably.ai>
2026-05-19 13:41:48 -07:00
JinjingandOrca 77264240c8 Add crash report submission flow (#2012)
* feat: add crash report submission flow

* Capture crash-report breadcrumbs

- Add a memory-only crash breadcrumb ring buffer and persist snapshots only
  when a crash report is recorded
- Include sanitized recent activity in crash diagnostics and tests
- Prevent dismissing or closing the crash dialog while submission is in flight

Co-authored-by: Orca <help@stably.ai>

* fix: address auto-review findings

* chore: remove crash report preview artifact

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-15 23:59:03 -07:00
Brennan BensonandOrca fdf7d9e97a feat(onboarding): add feature wall tour (#1772)
Co-authored-by: Orca <help@stably.ai>
2026-05-14 15:20:49 -07:00
Neil 4789a3cd51 Update titlebar app name controls (#1644) 2026-05-09 18:48:53 -07:00
NeilandOrca a02987e604 feat(settings): replace task-icon toggle with Tasks-button toggle, expose in View menu (#1271)
Co-authored-by: Orca <help@stably.ai>
2026-04-29 21:13:13 -07:00
NeilandOrca 6d3d366d45 feat(menu): show File/Edit/View/Window menu bar on Windows & Linux (#1111)
Co-authored-by: Orca <help@stably.ai>
2026-04-25 21:53: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
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
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
Jinwoo Hong 331e7dedb8 Add usage status bar and Codex account switching (#483) 2026-04-11 11:23:44 -07:00
Jinjing 696590918c feat: Quick Jump to Worktree palette (Cmd+J) (#469)
* wip in the design doc

* fix: use Ctrl+Shift+J for worktree palette on non-darwin platforms

To avoid colliding with Ctrl+J (Line Feed) on Windows/Linux, we now
use Ctrl+Shift+J for the worktree jump palette on those platforms,
leaving Cmd+J for macOS.

* refactor: migrate QuickOpen to cmdk and unify overlay state

- Migrated `QuickOpen.tsx` to use `cmdk` (`CommandDialog`) for visual and
  behavioral consistency with the new worktree jump palette, while keeping
  the existing custom fuzzy match algorithm.
- Unified the overlay state systems (`activeModal`, `quickOpenVisible`,
  `worktreePaletteVisible`) into a single `activeModal` union type.
- This automatically handles mutual exclusion without boilerplate
  toggle logic spread across components.

* fix: forward QuickOpen and worktree shortcuts from browser guests

Added main-process interceptors for `Cmd/Ctrl+P` and `Cmd/Ctrl+1-9`
so that QuickOpen and numeric worktree jumping continue to work
even when an embedded browser guest (webview) has keyboard focus.

* fix: address review findings

- Set spawnEnv.SHELL before pty.spawn() in the fallback loop so the
  child process inherits the correct SHELL value instead of the stale
  original.
- Remove dead Cmd+P and Cmd+1-9 renderer keydown handlers from App.tsx;
  these are now handled via IPC from createMainWindow.ts before-input-event
  (the IPC handlers in useIpcEvents.ts have the same view-state guards).
2026-04-10 23:37:23 -07:00
Colin Chambachan 874ba49789 fix: preserve reverse search shortcut (#453)
* fix: preserve reverse search shortcut

* test: cover cmd+r reverse search regression
2026-04-10 16:34:25 -07:00
Matheus Nogueira e42ae3f0f0 Fix terminal zoom shortcuts on Linux layouts (#347) 2026-04-06 20:42:55 -03:00
JinjingandClaude Opus 4.6 bd78551935 refactor: modularize main process and Terminal component (#96)
Extract main process into focused modules (startup, window, menu, IPC
registration) and decompose the monolithic Terminal component into
TerminalShell, useTerminalTabs, useTerminalShortcuts, and
useTerminalSaveDialog hooks.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 20:17:34 -07:00