* fix: restore update toast flow and cover updater transitions
* fix: resolve oxlint errors in test file and FileExplorer
- Replace smart quote (U+2019) with ASCII apostrophe in update toast test
- Use .at(-1) instead of array[length - 1] per prefer-at rule
- Extract background context menu into FileExplorerBgMenu to fix max-lines
* fix: restore dismissed update version check in toast controller
The old UpdateReminder component checked dismissedUpdateVersion before
showing the update prompt. This logic was missing from the new
createUpdateToastController, causing the toast to reappear even after
the user dismissed it. Now the controller skips the available toast when
the version matches the dismissed one and persists the dismissal when
the user closes the toast without clicking Update.
- Add local image insertion support with file picker and toolbar button
- Harden image copy with COPYFILE_EXCL flag to prevent overwrites
- Add deconfliction loop limit (1000 iterations) to prevent hangs
- Force image re-render on filePath change for correct URL resolution
- Extract toolbar button into reusable RichMarkdownToolbarButton component
- Use setHeading (not toggleHeading) for idempotent slash commands
- Add path utilities (dirname, joinPath) with comprehensive tests
- Add image utility functions for safe copy destination handling
* fix: address review findings
- Default to 'editor' target when drop lands outside tagged zones,
preserving the prior open-in-editor behavior for sidebar/editor body drops
- Add trailing space after each terminal-dropped path so multi-file drops
are properly separated in terminal input
* feat: route native file drops to editor vs terminal by drop surface
Add data-native-file-drop-target markers and IPC target field so the
preload can classify OS drops before forwarding to the renderer.
* feat: add explicit worktree setup flow
- Centralize worktree activation setup flow
- fix: render orca.yaml file contents in settings repo pane instead of tags when using config file
- fix: command preview title for yaml configs
- fix: update UI copy and styling to better reflect yaml setup hooks
- fix: run setup hook in background if CLI worktree is created while GUI is closed
- fix: prevent duplicate terminal tab creation when creating worktrees from the UI
- fix: ensure CLI worktree create returns correct payload type and hooks up UI setup flow
- Squashed commits
- fix minor regression
- fix: close worktree context menu when deleting
- fix: keep delete dialog open while archive hook runs and support inline yaml scripts
- chore: fix lint, typecheck and react state mutations during render for setup script feature
* fix(lint): split worktrees.test.ts to stay under max-lines limit
Extract Windows path-handling tests into worktrees-windows.test.ts
to bring the original file under the 300-line oxlint max-lines rule.
* fix(test): set up path mocks for setup launch payload test
The computeWorktreePathMock and ensurePathWithinWorkspaceMock were
cleared by afterEach but not re-established in the test, causing
areWorktreePathsEqual to receive undefined and crash.
The default oxlint output buries filenames in multi-line blocks, making
CI errors like "File has too many lines" hard to diagnose. The github
format produces ::error annotations with file paths front and center.
This commit completely overhauls the README to prominently feature the new Orca CLI orchestration capabilities. It also revamps the page structure for better conversion by adding trust badges, explicit cross-platform support text, a 'Quick Start' guide, and a dedicated 'Why Orca?' section. Lastly, the CONTRIBUTING.md guide was updated to encourage contributors to provide their Twitter handle for shoutouts.
* feat: allow opening files outside the worktree in the editor
Fixes an issue where prompting Claude Code to open a file outside the worktree
would fall back to opening the default system viewer, and dragging external files
into Orca wouldn't work.
- Replaced `shell.openFilePath` fallback with internal `store.openFile` for
external files clicked in the terminal.
- Added a global drag-and-drop handler (`useGlobalFileDrop`) that resolves
external file paths and opens them natively in Orca.
- Used `window.api.fs.stat` to prevent opening directories directly in the editor,
falling back to the OS system viewer.
Closesstablyai/orca#271
* fix: authorize external editor file opens
* feat: add field to edit terminal font weight
* fix: allow scrolling in terminal font menu dropdown
* feat: scroll through fonts with arrow keys
* fix: keep terminal font picker keyboard-focused after button clicks
* fix: let keyboard users close terminal font picker from toggle button
* fix: responsive resize behavior
* chore: add tests
* fix: clamp hydrated sidebar widths
* feat: add update reminder component and background polling
* refactor: replace update reminder banner with subtle bottom-right toast
Swap the full-width top banner for a compact fixed-position toast in the
bottom-right corner, matching the existing Sonner toast styling. Also
extract pure functions (statusesEqual, isBenignCheckFailure) from
updater.ts into updater-fallback.ts to fix max-lines lint error.
* fix: mock checkForUpdates to return a promise so .catch() works in tests