Commit Graph
349 Commits
Author SHA1 Message Date
Jinwoo-HandOrca 18b8596af7 Merge terminal speed stack onto main
Co-authored-by: Orca <help@stably.ai>
2026-06-18 12:48:02 -07:00
github-actions[bot] c40a025378 Update README downloads badge 2026-06-18 13:33:43 +00:00
1368ba84b8 feat(shortcuts): double-tap modifier keybindings (#5516)
* docs: design for double-tap modifier keybindings

* feat(keybindings): parse and normalize DoubleTap+<Mod> grammar

* test(keybindings): cover DoubleTap+Ctrl positive case

* feat(keybindings): match DoubleTap bindings against synthetic input

* test(keybindings): cover Ctrl-on-darwin double-tap miss; document input invariant

* feat(keybindings): format DoubleTap bindings as a doubled glyph

* test(keybindings): cover DoubleTap+Ctrl glyph on mac; note title label semantics

* feat(keybindings): add pure ModifierDoubleTapDetector state machine

* test(keybindings): cover missed-keyup double-tap edge; clarify keyUp guard

* feat(keybindings): capture double-tap gestures into DoubleTap+<Mod>

* test(keybindings): cover Ctrl/linux and Cmd/linux double-tap canonicalization

* feat(keybindings): resolve double-tap input in window shortcut policy

* feat(shortcuts): detect double-tap modifiers in main before-input-event

* docs(shortcuts): note dictation guards live in the renderer

* feat(shortcuts): dispatch double-tap modifiers in the renderer window handler

* fix(shortcuts): clear armed double-tap state on dangling modifier keyup

* feat(settings): record double-tap modifier shortcuts in the editor

* i18n(shortcuts): localize ShortcutKeyCombo double-tap tooltip

* Fix double-tap shortcut review gaps

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

---------

Co-authored-by: Devin345458 <devin@appleidimagination.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-17 18:25:27 -07:00
github-actions[bot] 6cea158e89 Update README downloads badge 2026-06-17 13:33:06 +00:00
Jinjing 62fbb51eb2 Refine terminal close confirmation (#5541)
* Refine terminal close confirmation

* Translate terminal close dialog strings
2026-06-16 17:42:48 -07:00
Jinjing 8da3f864b3 Update Android APK links to 0.0.14
Point Android APK links at the published mobile-android-v0.0.14 release.
2026-06-16 17:36:43 -07:00
Neil b7b7fb66f9 Merge branch 'nwparker/term-speed-2-skip-grammar-removal' into nwparker/term-speed-2-architecture-docs 2026-06-16 16:13:08 -07:00
Neil 062f1ffe6b Merge branch 'nwparker/term-speed-2-query-authority-alignment' into nwparker/term-speed-2-skip-grammar-removal
# Conflicts:
#	src/renderer/src/components/terminal-pane/hidden-renderer-skip-eligibility.test.ts
#	src/renderer/src/components/terminal-pane/hidden-renderer-skip-eligibility.ts
#	src/renderer/src/components/terminal-pane/pty-connection.test.ts
#	src/renderer/src/components/terminal-pane/pty-connection.ts
2026-06-16 16:12:30 -07:00
Neil a8116f52b3 Merge branch 'nwparker/term-speed-2-view-attribute-bridge' into nwparker/term-speed-2-query-authority-alignment 2026-06-16 16:03:39 -07:00
Neil 5eacd4093a Merge branch 'nwparker/term-speed-2-hidden-delivery-gate' into nwparker/term-speed-2-model-query-responder
# Conflicts:
#	src/main/daemon/headless-emulator.ts
#	src/renderer/src/components/terminal-pane/pty-connection.ts
2026-06-16 15:52:57 -07:00
Neil c496189643 Merge branch 'nwparker/term-speed-2-side-effect-cleanup' into nwparker/term-speed-2-hidden-delivery-gate
# Conflicts:
#	src/preload/api-types.ts
#	src/preload/index.ts
#	src/renderer/src/components/terminal-pane/pty-connection.ts
2026-06-16 15:44:21 -07:00
Neil 2224afd218 Merge branch 'nwparker/term-speed-2-side-effect-facts-complete' into nwparker/term-speed-2-side-effect-cleanup
# Conflicts:
#	src/main/runtime/orca-runtime.ts
2026-06-16 15:39:24 -07:00
Neil 5cb69a9b34 Merge branch 'nwparker/term-speed-2-main-title-tracker' into nwparker/term-speed-2-side-effect-channel
# Conflicts:
#	src/main/index.ts
#	src/main/ipc/settings.test.ts
#	src/main/runtime/orca-runtime.ts
2026-06-16 15:34:27 -07:00
Neil bc8d6692f2 Merge branch 'nwparker/term-speed-2-hidden-view-parking' into nwparker/term-speed-2-main-title-tracker
# Conflicts:
#	src/main/runtime/orca-runtime.ts
2026-06-16 15:29:04 -07:00
Neil 479a60fa55 Merge branch 'nwparker/term-speed-2-perf-report-comparison' into nwparker/term-speed-2-hidden-view-parking
# Conflicts:
#	src/preload/e2e-config.ts
#	src/renderer/src/components/Terminal.tsx
#	src/renderer/src/store/slices/terminals.ts
#	tests/e2e/helpers/orca-app.ts
2026-06-16 15:25:39 -07:00
Neil 403d0c7fbd Merge branch 'nwparker/term-speed-2-perf-html-report' into nwparker/term-speed-2-model-view-contract 2026-06-16 15:19:23 -07:00
OrcaWinandNeil 7e1c4ee929 Follow up Windows terminal onboarding polish (#5530)
Co-authored-by: Neil <neil@stably.ai>
2026-06-16 14:59:35 -07:00
OrcaWinandNeil 68abadba81 Add Windows terminal onboarding step (#5488)
Co-authored-by: Neil <neil@stably.ai>
2026-06-16 14:07:26 -07:00
Jinjing b516108bde Use generated README downloads badge 2026-06-16 11:09:40 -07:00
Jinjing 8b783274f2 Restore README downloads badge 2026-06-15 20:55:49 -07:00
Jinjing 87d905b8c3 Fix README downloads badge 2026-06-15 20:51:15 -07:00
Jinwoo Hong dc8fdf65a3 Update Android mobile release links to 0.0.13
Point Android download links at the published mobile-v0.0.13 release.
2026-06-12 12:02:58 -07:00
Jinwoo HongandOrca 0310b032bb Redesign README for clarity and conversion (#5244)
Co-authored-by: Orca <help@stably.ai>
2026-06-11 22:48:41 -07:00
NeilandOrca bdecd764c3 Finalize terminal model view architecture docs
Co-authored-by: Orca <help@stably.ai>
2026-06-11 00:59:52 -07:00
NeilandOrca 0ba2412788 Delete the hidden renderer skip grammar
Co-authored-by: Orca <help@stably.ai>
2026-06-11 00:08:27 -07:00
NeilandOrca 0bcda38d63 Align query authority contract and spawn-time ownership
Co-authored-by: Orca <help@stably.ai>
2026-06-10 23:32:14 -07:00
NeilandOrca c864530ca7 Answer hidden terminal queries from the model
Co-authored-by: Orca <help@stably.ai>
2026-06-10 20:41:23 -07:00
NeilandOrca 62b6d012ca Gate PTY delivery to hidden terminal views
Co-authored-by: Orca <help@stably.ai>
2026-06-10 17:10:09 -07:00
Brennan BensonandOrca 64acad300d Add Floating Workspace contextual tour (#5062)
* Add floating workspace contextual tour

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

* Clarify floating workspace tour intro copy

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

* Differentiate floating workspace tour steps instead of repeating examples

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

* Lead floating workspace tour with the user benefit

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

* Pitch floating workspace tour around cross-repo agents

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

* Refine floating workspace tour step 1 copy

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

* Anchor floating workspace tour step 2 on the minimize control

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

* Restore floating workspace tour step 2

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

* Anchor floating workspace tour steps on New Terminal and New Markdown Note

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

* Retitle floating workspace tour step 2 as scratchpad

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

* Add why-comments for tour selector fallback and placement flipping

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-10 14:12:07 -07:00
Brennan BensonandOrca 2fa2cc8cb1 Fix git repo telemetry for repo adds (#5121)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 13:24:49 -07:00
NeilandOrca 659f8736f9 Finish terminal side-effect authority migration
Co-authored-by: Orca <help@stably.ai>
2026-06-10 13:06:24 -07:00
NeilandOrca 9ee937b096 Move terminal side-effect authority to a main facts channel
Co-authored-by: Orca <help@stably.ai>
2026-06-10 02:20:44 -07:00
NeilandOrca 21f6605a4e Document terminal side-effect authority design
Co-authored-by: Orca <help@stably.ai>
2026-06-09 21:54:53 -07:00
NeilandOrca 72a03564ee Park hidden terminal views behind a byte watcher
Co-authored-by: Orca <help@stably.ai>
2026-06-09 21:21:54 -07:00
Neil dba74ae1ab Document terminal model view contract 2026-06-09 17:06:57 -07:00
4d6c291eff fix(windows): stop main-thread PowerShell ACL storm on env-store reads (#5011)
* fix(windows): stop main-thread PowerShell storm on env-store reads

Two changes fix the v1.4.52+ Windows performance regression (#4901 regression
against #4840) where 49 powershell.exe processes were spawned in 27 seconds
during load, saturating the Electron main thread and causing black terminals
and runtimeEnvironments:call timeouts.

Root cause: `readEnvironmentStore` calls `hardenExistingSecureFile` on every
read. The env-store parent directory's mtime churns constantly (every secure
write updates it), so the mtime-keyed idempotency cache never matched →
`bestEffortRestrictWindowsPath` (powershell, ~1-1.5s synchronous) fired on
every call. After #4901, the remote-runtime tab-sync loop reads the store
~2×/s, turning sporadic mtime misses into a continuous main-thread storm.

Fix 1 – path-cached directory hardening: add `hardenedDirectoryPathsThisProcess
(Set<string>)` that caches directory hardening by PATH for the process lifetime.
A directory's required ACL does not change when its mtime changes; only file
hardening retains the metadata-keyed cache so post-rename inode changes are
detected correctly.

Fix 2 – async ACL application: replace `execFileSync(powershell.exe, ...)` with
`execFile` (fire-and-forget). PowerShell cold-start is ~1-1.5s; the function is
already named `bestEffortRestrictWindowsPath` so async/optimistic caching is
correct. `applySecurePathRestriction` returns `true` optimistically on win32 so
the cache entry is written before the background process completes.

Tests: new regression tests verify the directory is hardened exactly once even
when its mtime changes between calls, that unchanged files are not re-hardened,
and that ACL application goes through async execFile (not execFileSync).

* fix(windows): apply credential-file ACL synchronously on write path

Follow-up rigor on the env-store PowerShell ACL storm fix (#5006). The
read-path storm fix (path-cached async directory hardening + async file
re-harden) is retained, but switching ALL ACL application to async opened a
narrow Windows-only security window: because writeFileSync({mode}) is a no-op
on Windows, writeSecureFile returned with the credential file still carrying
the parent directory's inherited (broader) ACL for the ~1-1.5s PowerShell
cold-start, affecting the e2ee keypair, device registry, and runtime env auth
store.

Fix: apply the credential FILE's ACL synchronously (execFileSync) on the
infrequent write path, before the atomic rename publishes it, and cache the
path as hardened only on confirmed success so a failed apply retries. Keep the
DIRECTORY hardening async + path-cached for the process lifetime (that is what
killed the #4901/#5006 main-thread storm). The read path's existing-file
re-harden stays async + metadata-cached (fires at most once per file, no storm).

Also:
- Document the dir-path cache process-lifetime known limitation (deleted+
  recreated dir not re-hardened until restart).
- Remove the redundant double dir-cache write in writeSecureFile.
- Add docs/windows-secure-file-acl-hardening.md describing the sync-file/
  async-dir model and a manual Windows e2e test plan (the cross-platform
  Playwright harness runs on Linux and cannot reach the PowerShell path).

Tests (src/shared/secure-file.test.ts, 13 passing): credential file hardened
synchronously while dir stays async (no async file-ACL window); failed sync
file-ACL apply is not cached and retries; dir hardened exactly once across many
writes despite mtime churn; no PowerShell spawned on non-win32.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: keep POSIX secure directory hardening metadata-aware

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-06-09 01:47:29 -07:00
Jinjing 2fd4f4e13e Update README feature showcase hero 2026-06-09 00:13:44 -07:00
Jinjing 03c2532ae7 Update README demo gif 2026-06-08 23:08:34 -07:00
Jinjing 3d1b6391d2 Update UI style guide
Push local docs/STYLEGUIDE.md content to main.
2026-06-08 20:25:32 -07:00
Jinwoo HongandOrca 04205acd76 Graduate compact worktree card setting (#4924)
Co-authored-by: Orca <help@stably.ai>
2026-06-08 17:37:11 -07:00
Jinjing 263c4f9bd2 fix: address review findings (#4865) 2026-06-07 22:17:52 -07:00
Jinwoo HongandOrca bed394ca11 Send OpenCode source-control prompts over stdin (#4859)
Co-authored-by: Orca <help@stably.ai>
2026-06-07 21:00:20 -07:00
Jinwoo HongandOrca 3ef63c972a Persist agent session metadata for workspace resume (#4706)
Co-authored-by: Orca <help@stably.ai>
2026-06-07 19:41:25 -07:00
Jinwoo Hong 87ca65d395 Update mobile download links to 0.0.12
Point Android download links and related fixtures at the published mobile-v0.0.12 release.
2026-06-04 16:11:51 -04:00
Jinwoo HongandOrca c4df8628b8 Add Droid orchestration routing (#4624)
Co-authored-by: Orca <help@stably.ai>
2026-06-04 10:00:11 -07:00
Brennan BensonandOrca 7b6e8e0ced Remove final code onboarding step (#4524)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 23:57:53 -07:00
Jinwoo HongandOrca 089fbd6951 Improve README mobile companion showcase (#4609)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 18:45:57 -07:00
Brennan BensonandOrca 5142a24536 Simplify project add handoff (#4530)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 16:50:35 -07:00
Brennan BensonandOrca 1e956a0b24 Show install status for AI capabilities (#4483)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 15:42:30 -07:00
Jinjing 990b4cf28d fix: improve floating surface visibility (#4466) 2026-06-02 01:37:35 -07:00