Commit Graph
11850 Commits
Author SHA1 Message Date
Neil f7abecde01 fix: release file watches when their renderer document ends (#23055) 2026-09-26 14:29:30 -07:00
Jinjing b42de170b1 Implement responsive browser toolbar overflow with tool folding (#23265)
Toolbar buttons fold into a dropdown menu when space is constrained,
preserving minimum address bar width. ArtifactPublishButton gains
controlled popover state with optional virtual anchoring. Tour-pinned
tools stay visible while others fold in priority order.
2026-09-26 14:23:20 -07:00
fe50f3ed04 fix: release dictation session listeners when speech workers exit (#23077)
* fix: release dictation session listeners when speech workers exit

* fix(i18n): restore diff note draft catalog entries

* fix(i18n): make AI the recipient of diff notes

* test(persistence): start the fault timer after the real worker is ready

---------

Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
Co-authored-by: OrcaWin <alpha-eng@stably.ai>
2026-09-26 14:23:03 -07:00
811b1cef26 perf: skip unused Linux accessibility child enumeration (#23085)
* perf: skip unused Linux accessibility child enumeration

* fix(i18n): restore diff note draft catalog entries

* test: assert suppressed failing children are never queried

* fix(i18n): make AI the recipient of diff notes

---------

Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
Co-authored-by: OrcaWin <alpha-eng@stably.ai>
2026-09-26 14:22:26 -07:00
Neil 698e45800d perf(native-chat): release obsolete transcript viewers after reloads (#22982)
* docs: clarify native chat document ownership

* fix: restore catalog entries required by the current CI baseline

* fix(i18n): make AI the recipient of diff notes
2026-09-26 14:20:52 -07:00
Neil f17c6fc58a perf(emulator): stop obsolete video streams after renderer reloads (#22967)
* fix: fence callbacks from retired emulator streams

* fix: restore catalog entries required by the current CI baseline

* fix(i18n): make AI the recipient of diff notes
2026-09-26 14:19:00 -07:00
Neil 71344de12f Scope relay capacity checks to the requested cell (#23036)
* perf: scope relay capacity checks to the requested cell

* fix: restore catalog entries required by the current CI baseline

* fix(i18n): make AI the recipient of diff notes
2026-09-26 14:17:47 -07:00
Neil dbe34c29b6 fix: observe linked-issue failures during review generation (#23166)
* fix: observe abandoned linked-issue lookups on desktop and runtime

* fix: restore catalog entries required by the current CI baseline

* fix(i18n): make AI the recipient of diff notes
2026-09-26 14:16:10 -07:00
7474da4536 fix(i18n): clarify the recipient of diff notes (#23256)
* fix(i18n): restore diff note draft catalog entries

* fix(i18n): make AI the recipient of diff notes

---------

Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
Co-authored-by: Neil <neil@stably.ai>
2026-09-26 14:15:18 -07:00
Neilandm4air abc4cb0f32 perf: preserve terminal previews across unrelated settings updates (#23099)
* perf: preserve terminal previews across unrelated settings updates

* test: record hidden Electron preview rendering evidence

* fix(i18n): restore diff note draft catalog entries

---------

Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 13:58:57 -07:00
OrcaWinandm4air 0daa175be1 fix(claude): release permission prompt abort listeners (#23195)
* fix(claude): release permission prompt abort listeners

* fix(i18n): register existing diff note fallback strings

---------

Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 13:55:27 -07:00
OrcaWinandm4air f6631ddeee fix(daemon): release terminal attach cancellation listeners (#23191)
* fix(daemon): release terminal attach cancellation listeners

* fix(daemon): preserve attach wait settlement ordering

* fix(i18n): register existing diff note fallback strings

---------

Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 13:55:22 -07:00
OrcaWinandm4air 0d7659d5f8 fix(relay): release capacity wait abort listeners (#23188)
* fix(relay): release capacity wait abort listeners

* fix(relay): preserve capacity wait cancellation semantics

* fix(i18n): register existing diff note fallback strings

---------

Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 13:53:09 -07:00
github-actions[bot] 7468e9cccb release: v1.4.214 v1.4.214 2026-09-26 20:50:46 +00:00
681f3ca1ba perf: stream the packaged browser installer checksum in CI (#23082)
* perf: stream the packaged browser installer checksum in CI

* fix(i18n): restore diff note draft catalog entries

---------

Co-authored-by: OrcaWin <alpha-eng@stably.ai>
Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 13:44:12 -07:00
15aa886b56 fix: stop abandoned local attachment checks after composer unmount (#23075)
* fix: stop abandoned local attachment checks after composer unmount

* fix(i18n): restore diff note draft catalog entries

---------

Co-authored-by: OrcaWin <alpha-eng@stably.ai>
Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 13:39:56 -07:00
ded0c39725 perf: reuse fresh selected folder checks on unrelated expiry (#23087)
* perf: reuse fresh selected folder checks on unrelated expiry

* fix(i18n): restore diff note draft catalog entries

---------

Co-authored-by: OrcaWin <alpha-eng@stably.ai>
Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 13:29:02 -07:00
Neil 668fa71906 Release SQLite transaction queues when startup fails (#22993) 2026-09-26 13:01:16 -07:00
Neil b9f7678927 perf(persistence): serialize selective SQLite saves once (#23171)
* perf(persistence): serialize selective SQLite domains once

* fix(persistence): preserve selective serialization semantics
2026-09-26 13:01:03 -07:00
Neil 818237b9e3 fix: stop retired relay load connections from rescheduling refreshes (#23071) 2026-09-26 12:59:47 -07:00
Neil 8b1ac1dbe0 Release cursor positions with editor tab ownership (#22988)
* Release cursor positions with editor tab ownership

* fix(editor): update retained cursor ownership after commit
2026-09-26 12:59:05 -07:00
Neil 2819faa1b6 fix: reject expired updater feed selections (#23160) 2026-09-26 12:58:32 -07:00
Neil 1a982c2739 perf: retire removed worktree head failure markers (#23135) 2026-09-26 12:58:29 -07:00
Neil 37d87a2973 fix: close file watcher probes after failed writes (#23124) 2026-09-26 12:58:16 -07:00
Neil f7354fb28f fix: release chunked download resources with their renderer (#23108) 2026-09-26 12:58:03 -07:00
Neil 38e3f0d290 fix: preserve conflicting folders when local import creation fails (#23101) 2026-09-26 12:57:53 -07:00
Neil 8abd25e97e perf: reuse target membership within folder lineage filtering (#23185) 2026-09-26 12:57:38 -07:00
Neil ecf4c95bdf perf: reuse Muse usage filters within each snapshot (#23179) 2026-09-26 12:57:35 -07:00
Neil 10b3d84b7c perf: build browser settings search catalog once per render (#23155) 2026-09-26 12:57:26 -07:00
Neil b65dbe267c fix: stop retired folder watchers from starting Git upgrades (#23144) 2026-09-26 12:57:14 -07:00
Neil efb5d247e2 perf: avoid copying unchanged artifact share records (#23141) 2026-09-26 12:57:06 -07:00
Neil 60557baeb1 perf: avoid duplicate base64 decode on SSH uploads (#23093) 2026-09-26 12:56:57 -07:00
Neil 753d959d39 perf(renderer): release unrelated state during cache saves (#23021) 2026-09-26 12:56:48 -07:00
Neil 69aa9e7e7e Release failed filesystem watcher setup records (#22995) 2026-09-26 12:56:35 -07:00
OrcaWinandm4air 8416e8de10 refactor(persistence): retire ordinary JSON profile writes (#23202)
* refactor(persistence): retire ordinary JSON profile writes

Require SQLite for writable profiles and keep import, compatibility export, and recovery in a documented legacy-json boundary.

* fix(cli): preserve dynamic profile imports in release output

* test(persistence): exercise SQL races and verify packaged CLI imports

* test(persistence): consolidate shared fixture imports

* test(persistence): close SQLite fixtures before cleanup and await launcher output

* test(automations): use SQLite fixtures for dispatch fencing and skip coalescing

---------

Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 12:56:32 -07:00
Neil 96c68896c8 fix: route hook files through their stored repository owner (#23184) 2026-09-26 12:54:33 -07:00
Neil 3edab016c2 perf(editor): skip unchanged cursor-line store writes (#22983) 2026-09-26 12:54:23 -07:00
Neil 148296e010 perf(relay): skip abandoned queued control activation (#23029)
* perf(relay): skip abandoned queued control activation

* style: format reliability gate metadata
2026-09-26 12:54:19 -07:00
Neil 89d4dd8952 perf(terminal): scan synchronized markers in linear work (#23015) 2026-09-26 12:53:14 -07:00
Neil 1fc0bfe46d perf(relay): share concurrent readiness probes (#23012) 2026-09-26 12:53:09 -07:00
Neil dd46f51278 perf(terminal): avoid intermediate history frame buffers (#23005) 2026-09-26 12:50:24 -07:00
Neil ba3217fdfd Cancel abandoned renderer-owned reads (#22986) 2026-09-26 12:50:20 -07:00
OrcaWinandm4air f4557bfef1 fix(renderer): release retired store snapshots from selector caches (#23187)
Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 12:46:48 -07:00
Jinjing a85057ef48 Simplify filter-flatMap patterns to single flatMap operations (#23242)
- Replace .filter().flatMap() chains with .flatMap() using conditionals
- Use constructor parameter shorthand in PreflightHandler
- More concise conditional filtering across agent detection and tab rebasing
2026-09-26 11:45:03 -07:00
github-actions[bot] 3990076fa3 Update README downloads badge 2026-09-26 18:30:10 +00:00
Jinjing 0647e6d6d2 fix(i18n): correct duration and turn-status copy across locales (#23243)
* fix(i18n): correct duration and turn-status copy across locales

The Cmd+J session-age badge and the native-chat turn row carried
machine-translated strings that read wrong in several locales:

- zh read the "m" in the age badge as the metre character (米), so a
  session showed as "17米" instead of "17分".
- zh/ja/ko/fr rendered "Working for N" as a location/preposition phrase
  ("为 N 工作", "N で働いています", "N에서 근무", "Travailler pour N"),
  i.e. "works for/at N" rather than "has been working N".
- The turn-details aria-label read the conversation "turn" as a road turn
  (转弯 / 회전 / virage) in zh/ko/fr.
- ja/ko left the age-badge and cleanup duration units as bare Latin
  "m/h/d"; ko's cleanup "N days ago" mixed "d" with 전.

The English source values are ambiguous ("{{value0}}m", "Working for N"),
so a value-only re-translation cannot disambiguate them. Pin the reviewed
strings per locale and guard them with a focused test.

* fix(i18n): use a type guard instead of an assertion in the guard test

CI's type-aware lint rejects `as Record<string, unknown>`; narrow with an
`isStringRecord` predicate instead.
2026-09-26 11:29:11 -07:00
Jinjing 0bad8b7490 Better add ai notes ui (#21719)
* feat(diff-comments): draft inline notes as editor view zones

Move comment drafting from floating popover to inline view zone. The draft card now appears in the editor flow, preventing overlap with code and integrating naturally with the diff layout. Includes styled margin indicator, auto-resizing textarea, and keyboard/submission handling.

* Preserve inline draft comments when switching diff views

- Reanchor draft zones to new models when file/line mapping changes
- Disable draft mode on large diffs to maintain performance
- Enhance draft card UX: shadow depth, outside-click handling, toast errors
- Carry draft body and position when reopening comments

* Ensure draft comment textarea auto-focuses and preserve drafts through e

- Focus textarea on mount via requestAnimationFrame for reliable focusing
- Add onDomNodeTop callback to focus textarea when zone reaches viewport
- Preserve pending draft when editor model refreshes and re-anchor on reload
- Add editor.getModel() checks before opening and re-anchoring drafts
- Test that textarea is focused on creation and errors are surfaced

* fix(diff-comments): prevent draft loss and duplicate submission on swap

- Track submission state to prevent carrying in-flight text to new cards
- Restore failed submissions for retry after model swap with unmount safety
- Use effects for proper ref management per React patterns
- Add isDraftOpen() guard to prevent re-opening the keyboard chord while composing
- Separate concerns between user clicks and draft-open state in decorator

* fix(diff-comments): show save error and restore focus intelligently

- Toast error when draft submission fails, so users see why it didn't save
- Return focus to editor only if the card still holds it when save completes, preventing focus theft on slow saves

* minor fix

* fix(diff-comments): park focus before submit button disables

Chromium moves focus to <body> when a focused button becomes
disabled, causing the draft zone to lose focus context. By
explicitly moving focus to the textarea before the button disables,
the zone can properly return focus to the editor after save.

* add all translation
2026-09-26 11:09:36 -07:00
OrcaWinandm4air da6d483ab9 fix(vault): read OpenCode SQLite inside WSL and SSH hosts (#23128)
* fix(vault): read OpenCode SQLite on WSL and SSH execution hosts

* fix(vault): bound host setup and preserve cancellation across readers

* fix(vault): keep WSL discovery visible and isolate probe tests

* fix: retry local Vault runtime downloads without reserving remote stages

Preserve verified remote cache reuse and latch only unresolved host work.
Update WSL source-guard and remote dedup test integration.

* fix(queue): discard aborted requests before respawn

* fix(vault): preserve host paths and recover setup after reconnect

* fix(ssh): fence every runtime platform probe across reconnects

* fix(vault): reject setup results from superseded SSH connections

---------

Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 03:59:38 -07:00
OrcaWinandm4air d20cb69c48 Optimize CI follow-up workflows (#23190)
Co-authored-by: m4air <m4air@m4airs-Air.localdomain>
2026-09-26 02:53:37 -07:00
Neil 711bacd408 perf(editor): skip unchanged draft publications (#23173) 2026-09-26 02:36:10 -07:00