Ctrl K
ComunidadGuías…

CHANGELOG.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Changelog

## 1.5.1 — 2026-11-11

**Safer upgrades from older Stable databases and optional anonymous Remote reliability totals.**

### Added

- With product sharing enabled, desktop Synara reports separate daily totals for approved pairings, live Remote RPC connections, reconnects, environment-read timeouts and unexpected app/backend crashes. These records contain only a UTC day, channel, fixed event and random delivery receipt; no account, device or installation identity, private content or error text. Stable remains opt-in; crash reports are best-effort.
- The website can start monthly or yearly Alto checkout after verifying the Synara account by email. It receives the Polar redirect without account credentials. This account API improvement is also available to existing desktop installations.

### Changed

- The exact database history shipped by the affected older Stable releases now creates its migration backup and upgrades automatically. Unknown or modified histories retain the existing confirmation and recovery safeguards.
- Migration changes require an independent review of data preservation, replay safety and backup/recovery.

### Fixed

- An ordinary upgrade from the released migration gap no longer stops at the migration-136 import confirmation. Original recorded identities must match before any legacy-name normalization; near-matching histories still require review.
- Anonymous event retry expiry now matches the receiver's UTC-day window. Lost acknowledgements and duplicate receipt delivery count each event once.

### Verification

Focused migration, backup/replay, analytics privacy/delivery and Remote transport checks passed, including regressions that failed before their fixes. A real local workerd/D1 test covered consent, lost acknowledgements, concurrent retries and restart recovery. The exact-tag workflow must still pass full quality/server suites, all four native packages, macOS signing/notarization, provenance, Defender and packaged startup before publication. The subscriber's reported Remote timeout has no confirmed root cause; recording it does not establish a fix.

## 1.5.0 — 2026-11-10

**Remote connections, Synara Alto, public profiles, and private Inbox history in Stable.**

### Added

- Pair computers running Synara on macOS, Windows x64, or Linux x64. Open remote workspaces, steer chats, and handle approvals while the source is online. The managed connector on a Mac requires macOS 15 or newer. iPhone and iPad support is coming soon.
- Alto subscribers can publish a profile at `trysynara.com/@handle` and control its visibility. Private Inbox recaps are independent of the public profile.
- Signed-in computers automatically save daily activity recaps, including project names and activity totals. Inbox → Saved recaps opens this history when the source is offline. Recaps exclude prompt and chat text. Deleted recaps are not automatically re-created.
- A one-time Remote Connections announcement opens after other startup hints and points to the account button. Manage Alto in Settings → Usage & limits.

### Changed

- Redesigned account sign-in and moved Alto plans into Usage & limits. The desktop interface uses English.
- Product analytics distinguish Stable and Beta and report aggregate usage separately from technical diagnostics. Stable product analytics require opt-in. The Beta diagnostics policy remains separate.
- MCP Connectors are available in Stable. The separate Remote early-access app retains its own data and update channel.

### Fixed

- Browser automation preserves in-flight requests. Unstaging a Git rename handles both paths.
- Fixed Windows drive letters in terminal paths and local file URLs for Markdown images. Improved duration labels and the Restore defaults count for themes and fonts.
- Subscription management remains available when Polar catalog reads fail. Codex avoids duplicate warnings from user configuration.

### Verification

The release checkpoint records local checks and their candidate. The tag workflow runs the full quality and server suites, installer builds, signing, provenance, Windows Defender and packaged startup before publication.

## 1.1.0 — 2026-11-02

**More reliable recovery, opt-in continuation after usage limits, Spanish interface and safer attachments.**

This Stable release covers the complete range after `v1.0.9` through `d80787e3e4d8829a35a64b111e6fcbe5f51cf037`. Simplified Chinese remains Beta-only. Stable and Beta retain separate identities, data homes and update feeds.

### Added

- English, Spanish and System interface preferences, including native menus and app-authored permission explanations. Existing editor engine labels may require the offered guarded reload; user content and provider output are not translated.
- Default-off **Resume after usage limits** for supported Codex and Claude terminal refusals with verified account identity and future reset evidence. The execution host must be running. Stop, manual sends and account/model changes cancel pending waits; ambiguous limits stay manual.
- Explicit offline `synara-compact-database` maintenance for legacy SQLite files. A private copy must pass integrity, row-count and identity checks before replacement. All clients must be stopped and sufficient scratch space available; retained data and migration backups are preserved.

### Changed

- Ordinary chats interrupted by an unexpected server shutdown receive guarded continuations from saved context. Approvals, unanswered questions, starting chats, native subagents and managed work retain their separate recovery rules.
- Agent narration appears as prose with compact tool rows; subagent rows report model and effort. Right-dock width is remembered per thread, and editor folders can be dropped into the composer.
- Runtime ingestion and command delivery retain less redundant state; computer frame handling reduces repeated copies. No whole-app memory, CPU or battery improvement is claimed from these scoped changes.
- Pi updates its OpenAI login support while preserving legacy Azure profiles, Kimi endpoint compatibility and account isolation. Windows release qualification now requires active Defender cloud checks; an antivirus detection still blocks publication.

### Fixed

- Claude Stop and ambiguous sends retain runtime ownership fences, SDK error results fail correctly, and steers are admitted against the original turn. Recovery does not claim unverified process retirement.
- Crash recovery, queued-message resumption and subagent lifecycle/messaging preserve accepted work and avoid duplicate continuation. Completed background work and resumed clocks display correctly.
- Photo preparation errors preserve drafts; unsupported native-review attachments do not discard accepted work. Private inline image recovery respects ownership and replay safety, and desktop uploads use the server route.
- New-chat creation remains reachable without tabs. Composer highlighting avoids redundant updates. Cursor usage supports safe-storage access tokens, and credential-lock publication handles owner-release collisions.

### Verification

The complete candidate requires brand, formatting, lint, typecheck, release smoke, relevant migration/platform checks, focused tests and marketing checks. The single exact-tag publication workflow must pass the full quality/server suites, portable build, all four native packages, macOS signing/notarization, provenance, Defender and packaged startup. Pending gates are not passed gates; actual results remain in the release checkpoint and publication notes.

See [source audit](docs/releases/1.1.0-source-audit.md). Preparation changes versions and release text in existing surfaces only. Manual installation/upgrades, live provider authentication, macOS 13 runtime and Windows browser-download reputation remain separately unverified.

## 1.0.6-remote.40 — 2026-10-31

**Remote connection recovery and update diagnostics.**

### Fixed

- A transient failure preparing an additional renderer attachment preserves already connected renderer streams, while subsequent dials keep the retry cooldown.
- Local remote negotiation returns a typed terminal refusal instead of flattening sign-in, revocation, incompatibility and stopped states into generic unavailability. Verified recovery resumes the retained workspace; protocol incompatibility requires an explicit reconnect.
- Failed application commands are not replayed automatically. Fatal workspace bootstrap releases its owned callbacks and transports; late cleanup cannot dispose a replacement bootstrap.
- Desktop update diagnostics preserve a validated failure category. Remote still omits raw error messages and stack traces from these events.

### Compatibility and verification

- Accounts, local data, pairings, protocol revisions and payment behavior are unchanged. These desktop-controller fixes do not require an iOS/iPadOS build.
- Deploy the diagnostics Worker receiving allowlist separately. No new D1 migration or account API deployment is required.
- Combined source checks passed 19,372 tests (298 skipped), formatting, lint and 12 package typechecks. Exact-tag quality/server tests, packaged startup, signing/notarization, Windows Defender and provenance remain publication gates.
- Windows retains the exact-version unsigned exception and may show SmartScreen. Mac artifacts target Apple Silicon. The app declares macOS 13, but the bundled tunnel helper requires macOS 15; connector operation on macOS 13–14 remains unqualified.

## 1.0.6-remote.39 — 2026-10-28

**Send photos reliably between connected computers.**

### Fixed

- Photos and files sent from a remote desktop workspace now upload to the computer that owns the conversation. Uploads and cancellation keep their original destination when you switch computers.
- Remote image thumbnails, generated image previews, full-screen viewing and downloads use the same authenticated parent-window transfer path. Existing device approval and main-frame restrictions remain enforced.
- Offscreen image previews release temporary memory while preserving message geometry; opening the full-screen viewer keeps its own image lifetime.
- Previously loaded previews renew a rejected file grant once without layout flashes. Stale image errors cannot block a newly loading preview; persistent fullscreen failures retain Download and Retry.

##### Updating

Update Synara Remote on your controlling computer to **1.0.6-remote.39**. Existing accounts, local data and pairings are preserved. No hosted API migration or payment change.

Windows uses the existing version-scoped unsigned release exception and may show SmartScreen. The app declares macOS 13; the bundled vendor tunnel helper requires macOS 15, so connector use on macOS 13–14 remains unqualified.

### Verification

- All 24 final PR checks passed with no open review findings. Local checks passed 5,931 web tests (3 skipped), 34 focused image browser cases, 49 compiler checks and 624 affected server tests.
- Actual Electron preload/broker/helpers were exercised with a synthetic target; authenticated HTTP/SQLite/provider delivery was verified separately. Shipping Swift transport passed TLS, mint/DPoP and exact JPEG readback. Physical paired-device UI and vendor vision are not claimed by these isolated tests.
- Exact-tag quality/server suites, packaged startup, macOS signing/notarization, Windows Defender and provenance remain publication gates. No API deployment, migration, companion release or payment change is required.

## 1.0.6-remote.38 — 2026-10-28

**Manage remote chats directly from their rows.**

### Fixed

- Connected-computer chats show Pin, Archive and Done on hover or keyboard focus, matching local chats in Activity, Priority and the sidebar. The remote marker yields to the controls, and trailing icons use the same size.
- Done shows a visible Undo action in the controlling window, including when the row moves into Done. Undo restores the original computer's chat and reopens it only when that exact chat was active.
- Pin, Done, Return now and Archive retain the owning computer's original chat ID, optimistic updates and existing confirmation flow. Disconnected or replaced sessions cannot redirect an action to another computer.
- Remote row browser checks restore their viewport so later tests retain their original window dimensions.

### Verification

- Source checks cover owner isolation, colliding chat IDs, Done/Undo, disconnected sessions, hover/focus and icon geometry. Format, lint, typecheck and focused unit/browser suites passed; the original CI failures and retry outcomes remain recorded separately.
- Publication requires exact-tag quality/server suites, packaged platform checks, macOS signing/notarization, Windows Defender and source-bound artifact provenance. Windows uses the version-scoped unsigned exception and may show SmartScreen.
- No companion update, account migration, hosted API deployment or payment change is required. Remote identity, local data, approved pairings and update feeds are preserved.
- The app declares macOS 13. The bundled cloudflared executable declares macOS 15; Remote connector operation on macOS 13–14 remains unqualified.

## 1.0.6-remote.37 — 2026-10-27

**Keep photo uploads on the selected computer's backend.**

### Fixed

- Attachment uploads refuse a missing desktop backend instead of falling through to the static app page and reporting an upload failure with status 200. The static app protocol no longer serves backend routes or accepts mutation requests.
- Invalid successful upload responses show a reconnect error. Valid 200 and 201 attachment receipts remain supported; failed sends retain their text, attachments and queued retry.
- Fast upload failures are observed immediately while workspace preparation finishes, avoiding an unhandled rejection without losing the original recoverable error.
- Remote uploads and cancellation keep using the selected computer's typed resource route, with no fallback to the local backend.

### Verification

- The main fix passed 24 pull-request checks and independent review. The Remote candidate passed its complete web and desktop suites, static checks and focused server resource tests. Isolated Electron checks covered uploads, invalid responses and recovery; the selected-host bridge and HTTP upstream in that harness were fixtures, not a physical MacBook or production tunnel.
- Native iPhone and iPad do not use the affected static fallback. No companion update, account migration or hosted API deployment is required for this fix. Remote identity, local data, approved pairings and update feeds are preserved.
- Publication requires exact-tag quality/server suites, packaged platform checks, macOS signing/notarization, Windows Defender and source-bound artifact provenance. Windows uses the version-scoped unsigned exception and may show SmartScreen.
- The app declares macOS 13. The bundled cloudflared executable declares macOS 15; Remote connector operation on macOS 13–14 remains unqualified.

## 1.0.6-remote.36 — 2026-10-26

**See subagent models and effort directly in the dock.**

### Changed

- Active and completed subagent dock rows show their existing provider model and explicitly selected effort, previously available only in the tooltip.
- Missing model or effort values stay hidden. Existing task controls are unchanged.

### Verification

- Remote identity, local data, approved pairings and update feeds are preserved. This desktop update introduces no API, connector or provider runtime changes and does not update the iPhone or iPad app.
- Publication requires exact-tag quality/server suites, all three packaged platform checks, macOS signing/notarization, Windows Defender and source-bound artifact provenance. Windows uses the exact-version unsigned exception and may show SmartScreen.
- The app continues to declare macOS 13. The bundled cloudflared executable declares macOS 15; Remote connector operation on macOS 13–14 remains unqualified.

## 1.0.6-remote.35 — 2026-10-26

**Recover conversation images and update the Cloudflare connector.**

### Fixed

- Eligible local Markdown images are retained privately with completed replies, preserving their position in the message when the original file is later moved or removed. Images that were already missing when the reply completed cannot be reconstructed.
- Failed images have Retry, which requests fresh access without resending the conversation. Relative paths and registered worktrees resolve against the host's workspace, including paths containing literal percent characters.
- Retried and uncertain message deliveries reuse the committed attachment set; fork and handoff mappings retain the image's canonical source path.
- Browser pairing uses the correct fetch receiver instead of failing before the request reaches the host.

### Security

- Bundled cloudflared is updated to 2026.10.3 to remove trust in the affected eMudhra intermediates. All five vendor asset hashes are verified. Existing origin certificate verification and device authorization remain enforced.

### Companion iPhone and iPad

- TestFlight 0.1 (159) includes image recovery, refreshes an inline SVG preview after a successful retry, and removes an unsupported prewarm request that could repeatedly disconnect compatible hosts. Desktop and TestFlight update separately.

### Verification

- Source image recovery passed 17,881 tests, 19 focused browser cases and isolated desktop, iPhone and iPad image checks before Remote integration. The final Remote tag must also pass the full release gates and packaged platform checks; source tests alone do not qualify a signed installer.
- Remote identity, local data, pairings and update feeds are preserved. No account migration or hosted API deployment is required. Windows uses the exact-version unsigned exception and may show SmartScreen.
- The app continues to declare macOS 13. The bundled vendor cloudflared executable, including the previous pin, declares macOS 15; Remote connector operation on macOS 13–14 is not qualified by this release.

## 1.0.6-remote.34 — 2026-10-26

**Readable work narration and quieter, concise tool details.**

### Changed

- Item-scoped reasoning and tool summaries render as Markdown in the transcript. Inside settled Worked for disclosures, prose and earlier assistant narration use the existing muted tone; final answers remain outside at normal contrast.
- Failed tool calls keep a single status row with their full output behind the existing details control. Running background commands use the quieter tray icon, and interleaved assistant text keeps the normal reply tone.

### Fixed

- Compacted legacy reasoning retains its existing detail opener and all original updates instead of presenting its shortened preview as the full text.

### Verification

- The source UI change passed 230 focused unit tests, 15 browser component tests, formatting, lint and typecheck, plus all 24 pull-request checks and independent review.
- Remote identity, data home, approved pairings and update feeds are preserved. No account or transcript migration and no hosted API deployment is required.
- Publication remains gated by exact-tag quality/server suites, packaged platform checks, macOS signing/notarization, Windows Defender and source-bound artifact provenance. Windows retains the exact-version unsigned exception and may show SmartScreen.

## 1.0.6-remote.33 — 2026-10-26

**Completed background work stays inside Worked for, with a consistent response clock.**

### Fixed

- A finished background command returns to its original Worked for disclosure after the resumed response succeeds. Its completion details remain available in the resumed response's disclosure, and both genuine final answers stay visible.
- Running, failed, stopped and uncertain work stays visible. Completion matching retains the original task lifecycle instead of relying on a reused task ID or command text.
- When several background tasks finish before one reply, the live and settled headers share the first wake's start time. A stale turn end cannot shorten the response or make the timer jump when streaming finishes.

### Verification

- The source change passed 340 focused transcript/work-log tests, formatting, lint and typecheck, plus all 24 pull-request checks and an independent automated review.
- Remote identity, local data, approved pairings and update feeds are preserved. This change introduces no account or transcript migration and requires no hosted API deployment.
- Publication remains gated by the exact-tag suites, all three packaged platform checks, macOS signing/notarization, Windows Defender and source-bound artifact provenance. Windows uses the existing exact-version unsigned exception and may show SmartScreen.

## 1.0.6-remote.32 — 2026-10-25

**Recover blocked Claude conversations without replaying uncertain messages.**

### Fixed

- Claude follow-ups that finish preparing after their original turn has ended are rejected before delivery. A delayed preparation error cannot mark a replacement turn as failed.
- Claude results that report a provider error remain failed instead of appearing successfully completed.
- A quarantined conversation keeps a Stop control available even when its visible turn is idle. Explicit Stop and Unblock remain separate actions; sending a stop request is not reported as confirmed provider cleanup.
- A missing Claude interrupt acknowledgement no longer leaves an "interrupt failed" activity when the same Stop subsequently proves that its runtime was retired. Failed or unconfirmed cleanup still reports its error.
- Recovery refuses to abandon an uncertain Claude send while its locally owned runtime or background work remains active. A verified stop can release the original blocked delivery; retries retain their original target and cannot stop a later turn.
- Restart recovery distinguishes inherited blocked deliveries from runtimes adopted by the current server. Unknown ownership remains blocked instead of silently resending a potentially delivered message.

### Companion iPhone and iPad

- The matching Stop and Unblock guidance requires TestFlight build 156 or newer. Desktop and mobile apps update separately; this desktop update does not install a TestFlight build.

### Verification

- Keeps Remote identity, local data, approved pairings and update feeds. No account or transcript migration is introduced.
- Publication requires exact-tag quality and server suites, all three packaged platform checks, macOS signing/notarization, Windows Defender and source-bound artifact provenance. Windows uses the existing exact-version unsigned exception and may show SmartScreen.
- Recovery has been exercised with an isolated server and controlled provider process. The original reported Claude CLI stream stall and physical iPhone battery consumption are not claimed fixed by this desktop release.

## 1.0.9 — 2026-10-25

**Native editing and MCP Connectors in Stable, safer Stop retries and compressed recovery backups.**

This Stable release covers all 15 commits after `v1.0.8` through `8e21e29c2a3d47205a0a9e834c8c44745efd0cf1`. Native editor and connector promotion was merged before release preparation. Diagnostics remain Beta-only; app identities, credentials, data homes and update feeds stay separate.

### Added

- Stable gains the Code OSS engine for file editors, editable diffs and previews, TypeScript/JavaScript language intelligence, editor commands and JavaScript debugging. Existing buffer ownership, save/conflict rules and large-preview fallbacks remain.
- Stable gains Settings → Connectors and supported remote MCP connections. Provider coverage and normal tool approvals still apply; running sessions keep their starting connector set.
- A new `/goal` in an idle persisted chat outside Plan mode commits a visible message with its first turn. Native clients can discover this optional host capability without re-pairing.

### Changed

- New pre-migration SQLite backups use `.sqlite.gz`; inspection and recovery accept compressed and existing plain snapshots. Scratch-space checks account for both the snapshot and compressed output. Retention and recovery safety remain enforced.
- Local project favicons supply project glyphs across sidebar, search, pickers and previews; explicit custom glyphs take precedence and unsafe paths are rejected.
- The build toolchain requires Bun 1.4.4 security fixes. Mac bundles declare macOS 13.0, and updater manifests use Darwin 22.0.0 to enforce that minimum.

### Fixed

- Conditional Stop persists its original runtime/turn target before physical control. Retries cannot adopt a replacement runtime or later turn; failed observations remain retryable or uncertain. Interrupt-only controls preserve queued messages and transcript context.
- Command-progress activity uses durable identity across ingestion and replay. User-facing provider errors retain readable messages without inline stack details.
- OpenCode sign-in and model-list fallback use isolated servers when `--standalone` is supported; cold V2 discovery loads models before provider metadata. Authentication terminals retain usable capabilities despite inherited `TERM=dumb` or `NO_COLOR`.
- Hub workers omit Snooze and Hub actions. The landing ASCII field remains continuous beneath the composer's own surface.

### Verification

Local formatting, lint, typecheck, release smoke, brand, Windows runtime and migration checks, affected tests and marketing build are required for the finished candidate. The exact-tag publication workflow supplies full quality/server suites, portable inputs, all four native packages, macOS signing/notarization and Intel startup, provenance, Windows Defender and packaged startup. Pending gates are not passed gates; actual outcomes are recorded in the release checkpoint and public notes.

See [source audit](docs/releases/1.0.9-source-audit.md). Release preparation changes versions and visible release text on existing surfaces only. Manual installation/upgrades, runtime behavior on macOS 13, live providers and connector sign-in, and browser-download reputation remain separately unverified.

## 1.0.6-remote.31 — 2026-10-25

**Isolated OpenCode sign-in, clearer project identity and safer backup storage.**

### Fixed

- OpenCode native sign-in uses its isolated provider runtime, and model discovery works before a provider session has warmed up.
- Project logos appear as project glyphs when available. Manual emoji, icon and color choices keep priority, and the disclosure arrow stays beside the project name.
- Hub workers no longer offer Snooze or Hub actions, including workers in linked repositories. These actions wait for Hub membership to load, so an unresolved worker cannot be snoozed out of the sidebar.
- Mac packages declare macOS 13.0 as required by the bundled tools. Fresh and retained update ZIPs carry the matching Darwin 22.0.0 feed minimum.

### Maintenance

- Pre-migration SQLite snapshots are streamed into gzip files. Existing plain snapshots remain restorable and share the same five-backup retention limit.
- Backup creation uses a private, exclusive scratch directory and conservatively estimates room for the SQLite snapshot and compressed output together. Compression does not guarantee a lower peak disk requirement.

### Companion iPhone and iPad

- TestFlight build 155 remains the current companion build. This desktop release does not install or replace the mobile app.

### Verification

- Preserves Remote app identity, data home, pairing state and update feeds, including published Remote .30 history.
- Publication requires the exact-tag quality and server suites, all three packaged platform checks, macOS signing/notarization, Windows Defender and source/lockfile-bound artifact provenance. A declared macOS 13 minimum is not a claim of runtime testing on macOS 13.
- Remote ships macOS Apple Silicon, Windows x64 and Linux x64 installers. Windows uses the existing exact-version unsigned exception and may show SmartScreen.

## 1.0.6-remote.30 — 2026-10-25

**More dependable Stop, quieter command progress and visible goal requests.**

### Fixed

- Repeating Stop after a turn has settled leaves the provider session alone. A delayed interrupt result cannot stop or settle a replacement turn; uncertain provider cleanup remains visible instead of being reported as success.
- Long-running Codex commands and Claude Bash tools update one progress row across journal pages. Raw provider events remain intact, and replacement runtimes or later turns retain separate identities.
- User-facing provider failures keep the readable error reason without appending stack traces. Full causes remain available in diagnostic logs.
- A new `/goal` is visible in the transcript, preserves its full request during retries and starts atomically for compatible phone clients. Stop and pause continue to halt goal continuation.

### Maintenance

- Uses Bun 1.4.4, including the security fixes merged on main.

### Companion iPhone and iPad

- Universal build 155 is available separately through TestFlight for iPhone and iPad with the latest native fixes. Updating the desktop does not install the mobile build.

### Verification

- Preserves published Remote .29 history, app identities, data homes, pairing state and updater feeds. The hosted Live Activity service correction is a separate deployment and is not activated by installing this app.
- Publication requires exact-tag quality and server suites, all three packaged platform checks, macOS signing/notarization, Windows Defender and source/lockfile-bound artifact provenance. Pending gates are not passed gates.
- Remote ships macOS Apple Silicon, Windows x64 and Linux x64 installers. Windows uses an exact-version unsigned exception and may show SmartScreen.

## 1.0.6-remote.29 — 2026-10-23

**Clearer parallel work, captured live changes and more dependable workspace controls.**

### Added

- The + after the chat tabs creates a chat in the current workspace. Environment includes shared controls to create and edit project actions, with grouped header actions and separate visibility preferences.
- Running subagents appear above the composer. Devin background work preserves task identity, turn ownership and permission handling through replay and recovery; Claude child chats show the model reported by their runtime.

### Fixed

- Remote Software Update refuses Restart & Install while cleanup of a retained provider process is unconfirmed or the retained-state check fails.
- Hubs preserve original human requests and attachment references when delegating work. Coordinator and worker context keep distinct roles, stable task keys prevent duplicate workers, ordinary follow-ups queue, and settings remain saveable after pause or resume.
- Turn diffs show captured live snapshots and complete cumulative Codex patches against their exact baseline and revision. Ignore whitespace and reconnects retain that evidence; incomplete changes remain unavailable until captured rather than being reconstructed from later edits.
- Activity grouping survives remounts, reloads and connected workspace panes. Done and Archive choose the next chat within the active Space, and new-thread creation validates current sidebar hydration before choosing a project.
- Window activation, composer updates and terminal activation preserve the selected control. Idle terminals remain reusable with large process tables, and typed input survives commands starting.
- Cmd/Ctrl+W closes the focused chat tab, dock terminal or workspace surface before falling back to window close. Closing a chat tab leaves its running agent active; busy terminal closure still requires confirmation.
- Orphaned agent work settles instead of remaining active indefinitely. Stopped Pi and Antigravity sessions recover through the normal next-turn path, and unanswered foreground Computer Use prompts report cancellation.
- Hyprland uses compositor-backed blur when blur is confirmed enabled. Linux app artwork remains isolated by flavor, and connected workspace panes retain the controlling window's display capability without gaining native controls.

- The empty-chat ASCII pattern stays continuous beneath the composer, which keeps its own surface. Reduced-motion and pause-when-hidden behavior remain in place.

### Companion iPhone and iPad

- Universal build 153 is prepared separately with background-task replay corrections, stable terminal task states, preserved command/start-time metadata and matching Stop availability. Upload and tester availability are verified independently; this desktop update does not install the mobile build.

### Verification

- Integrates main through `29b11e105200c7bc6e2c71a06a375513d4c8a72d` while retaining all published Remote .28 source, release history, identities, data homes and update feeds.
- Local checks qualify the reviewed candidate. Publication still requires exact-tag quality and server suites, all three packaged platform checks, macOS signing/notarization, Windows Defender and source/lockfile-bound artifact provenance. Pending gates are not passed gates.
- Remote ships macOS Apple Silicon, Windows x64 and Linux x64 installers. Windows retains its exact-version unsigned exception and may show SmartScreen. Physical-device behavior, compositor integration and manual installed-app upgrades need separate verification.

## 1.0.8 — 2026-10-23

**Reliable handoffs and recovery, clearer parallel work, captured live diffs and workspace refinements.**

This Stable release covers all 32 commits after `v1.0.7` through `f9ba953a6a26769bf73c78c2bae673e5a09ba62f`. The native editor, connectors and diagnostics remain Beta-only. Stable and Beta keep separate identities, data homes and update feeds.

### Added

- A new-thread + follows the chat tabs and creates a chat in the current workspace. Environment offers shared project-action creation and editing; header actions are grouped with independent visibility preferences.
- Running subagents appear above the composer. Devin ACP background work and child agents retain task, permission and turn ownership across replay and recovery; Claude child chats report their resolved model.
- Turn diffs expose captured live snapshots and complete Codex cumulative patches against their exact baseline, including Ignore whitespace. Incomplete evidence remains unavailable until a complete update or final checkpoint.
- Hyprland supports compositor-backed translucency when blur is confirmed enabled; Linux artwork is isolated by app flavor.

### Changed

- Hub context distinguishes coordinator and worker roles and labels provenance. Original human requests and attachment references accompany delegated work; stable task keys make replay idempotent. Ordinary follow-ups queue; steering can interrupt.
- SQLite free pages are reclaimed incrementally. Existing databases convert only after clean shutdown with sufficient reclaimable pages and scratch space, under a bounded subprocess deadline. This is not guaranteed emergency disk recovery.
- Idle agent-booted simulators are released after owned work settles, preserving overlapping and renewed leases.

### Fixed

- Send, Continue task and Implement use Hand off consistently. Auto-mode saves preserve pending provider switches; queued work follows the current provider/model. Stored-selection recovery preserves protected history and refuses switches that would silently end background tasks.
- Codex fresh-resume fallback restores prior transcript context, handles threads without rollouts and discloses omitted or shortened messages. Runtime warnings surface in chat. Plugin discovery is isolated from live sessions, and retired gateway write authority is renewed without reviving old credentials.
- Hubs settle non-Git workers and preserve settings saves after pause/resume. Orphaned agent tasks settle. Stopped Pi and Antigravity sessions report inactivity for normal next-turn recovery.
- Done and Archive stay within the active Space; Activity grouping persists. New-thread creation validates current hydration, and window activation, composer updates and terminal activation preserve chosen keyboard focus.
- Cmd/Ctrl+W closes the focused chat tab or dock terminal. Idle terminal reuse works with large process tables and retains input while commands start.
- Safari setup detects an existing Full Disk Access grant. Unanswered foreground Computer Use prompts report cancellation. Nested untracked repositories no longer break ordinary working-tree diffs.

### Verification

The complete candidate receives brand, formatting, lint, typecheck, release smoke, focused tests and the relevant Windows runtime boundary check. One publication workflow on the exact tag SHA supplies the complete quality/server suites, portable build, native packages, signing/notarization, provenance, Windows Defender and packaged startup gates. Results are recorded in the publication notes after verification; pending gates are not passed gates.

See [source audit](docs/releases/1.0.8-source-audit.md) for every commit and the durable documentation audit. Release preparation changes visible release text only through the existing surfaces. Manual installed-app upgrades, live provider/microphone behavior and browser-download reputation remain separately unqualified.

## 1.0.6-remote.28 — 2026-10-23

**Code editing inside Synara, dependable provider switches and settled background work.**

### Added

- The embedded Code OSS editor adds language intelligence, problems, quick fixes, peek, inlay hints and configurable shortcuts to file and diff editing. JavaScript debugging runs through the execution computer's owner-authorized session; paired clients do not gain debugger access.

### Fixed

- Windows code intelligence resolves the bundled TypeScript libraries when a temporary folder uses a short-path alias. Workspace file-access boundaries remain in place.
- Provider changes consistently use Hand off when sending, continuing a task or implementing a plan. Queued messages follow the thread's current provider, while switches that would silently stop background work are refused.
- Codex recovers threads without a native rollout and carries conversation context when native resume falls back to a fresh session. Recovery limitations and actionable runtime warnings remain visible instead of silently losing context.
- Codex plugin discovery uses a separate bounded metadata process, keeping large catalogs away from live conversation streams.
- Finished Claude background tasks stay finished when late progress, status or background-list updates arrive. A genuine task restart can still reopen its task ID.
- Working-tree diffs load beside untracked nested repositories. Safari login setup recognizes an existing Full Disk Access grant instead of repeatedly asking for it.

### Companion iPhone and iPad

- Build 152 is prepared separately with follow-ups while background work continues, host-owned compaction state, the execution computer's custom models and thread-level Codex warnings outside the Worked disclosure. Its upload and tester availability are verified separately; this desktop update does not install the mobile build.

### Verification

- Integrates main through `442c649c173758f4a7a27f0e94252f9ca2c85de8` and preserves all published Remote .26 history, including packaged Claude history import, device trust and updater isolation.
- Final candidate checks and exact-tag quality/server suites, platform startup, macOS signing/notarization, Windows Defender and artifact provenance must pass before publication. Results are recorded against the actual candidate SHA in the private release checkpoint; earlier builds do not qualify this release.
- Remote retains separate identities, data homes and update feeds on macOS Apple Silicon, Windows x64 and Linux x64. Windows uses an exact-version unsigned exception and may show SmartScreen. Physical-device behavior and manual installed-app upgrades require their own verification.

## 1.0.6-remote.27 — 2026-10-23 (not distributed)

### Verification

- The tag passed quality and server suites, Linux packaged checks, macOS signing/notarization and Windows Defender, but Windows packaged editor qualification failed because short-path aliases did not match the TypeScript library access fence. The declarations were present in the artifact; no .27 release or update feed was published. The tag remains unchanged.
- Remote .28 carries the intended feature range and the corrected library paths. It must pass its own exact-tag qualification before publication.

## 1.0.6-remote.26 — 2026-10-18

### Fixed

- Importing a Claude conversation in the packaged desktop app runs the metadata reader in Node mode instead of opening an extra Electron instance and failing with an empty JSON response. The selected account environment stays isolated from unrelated credentials.
- Codex sessions recover retired per-turn MCP write credentials before the next turn, including when the terminal rotation marker was lost. Retired credentials remain fenced from writes.
- Hub workers outside Git workspaces settle completed work without waiting for a Git checkpoint that cannot exist. Replay and workspace ownership checks remain in place.
- SQLite reclaims freed pages in bounded maintenance passes. Older databases are considered for a guarded rebuild only after closing, with free-space and time limits; deferred maintenance does not block startup.
- Simulators booted by an agent are released after their owning turns settle. User-booted devices and simulators still owned by active work stay running.

### Verification

- Integrates the requested main updates through `299fd573b1d6520c323a87c78d30be74e87e53e1` (#1974, #1971, #1975 and #1966) while preserving Remote identities, data homes and update feeds.
- All 18,587 local repository tests pass, along with formatting, lint, typecheck, Windows runtime boundaries and migration lineage checks. The installed Electron runtime and its bundled Claude SDK read all 174 synthetic history rows through the corrected metadata helper without starting a provider query. This is not a completed live import, provider-resume or long-conversation viewport test.
- Publication still requires the exact-tag quality/server suites, three packaged platform checks, macOS signing/notarization, Windows Defender and public artifact provenance. Windows keeps the exact-version unsigned policy and may show SmartScreen. The separate iPhone/iPad update and physical-device behavior are verified independently.

## 1.0.6-remote.25 — 2026-10-18

### Fixed

- Inbox recaps automatically retry temporary read failures with bounded backoff instead of staying failed until the next five-minute refresh. Unsupported-host and non-retryable errors remain visible; transport capacity retries are not multiplied.

### Verification

- A real React Query observer reproduces the failed-read recovery gap and now recovers after a temporary error without a manual retry. Focused checks also preserve unsupported-host, permanent-error and capacity-retry behavior.
- Local formatting, lint, typecheck and focused tests qualify the candidate. Publication still requires the exact-tag quality/server suites, three packaged platform checks, macOS signing/notarization, Windows Defender and public artifact provenance. Installer upgrades and live-provider behavior are not established by those local checks.

## 1.0.6-remote.24 — 2026-10-18

### Fixed

- Temporary account-service unavailability, service restarts and expired session credentials request a fresh authenticated connection without falsely revoking an approved device. Actual revocations, invalid proofs and unapproved devices remain refused.
- Large remote conversation histories pass through both authenticated response bridges as ordered WebSocket continuation frames, with backpressure and bounded message, queue and write time limits. Valid 9.5 MiB Unicode transcripts no longer hit the former whole-message 8 MiB relay guard. Commands and encrypted outer messages keep their existing limits; assembled responses remain capped at 32 MiB.
- Claude's `code_change_published` system message triggers the existing repository-scoped Git and pull-request refresh instead of producing an unhandled runtime warning. Repository and forge data remain authoritative; publication URLs and branch hints in provider output are not trusted.

### Companion iPhone and iPad

- The separate companion build 144 contains native connection recovery, long-conversation performance, provider switching and image improvements. Its distribution is verified separately; this desktop release does not install mobile changes.

### Verification

- Includes the connection and transcript fixes prepared for .22 and .23, neither of which was distributed because Windows Defender updates failed before scanning. The disposable runner now waits for the service and engine after an interrupted RPC or a verified platform replacement; updates must subsequently succeed. Healthy update failures still stop immediately, attempts and waits are bounded, full error records survive independent final evidence capture, and incomplete evidence blocks publication. Current intelligence, enabled protection, exclusion checks and a clean scan of unchanged installer bytes remain mandatory.
- Local quality and focused transport checks cover both response bridges, large Unicode histories, later replies, ordering, cancellation, slow consumers and oversized requests. Exact-tag CI must qualify the final source, packaging, startup, macOS signing/notarization, Windows Defender and public artifact provenance before delivery is complete.
- Remote keeps separate identities, data homes and macOS Apple Silicon, Windows x64 and Linux x64 feeds. No backend deployment, migration, account reset, pairing reset or billing change is required. Existing invalid or revoked pairings still require explicit recovery.
- Windows retains the version-scoped unsigned policy and may show SmartScreen. Automated qualification does not establish Windows browser-download acceptance, physical-device push delivery or unrestricted transcript size.

## 1.0.6-remote.23 — 2026-10-18 (not distributed)

### Fixed

- Temporary account-service unavailability, service restarts and expired session credentials request a fresh authenticated connection without falsely revoking an approved device. Actual revocations, invalid proofs and unapproved devices remain refused.
- Large remote conversation histories pass through both authenticated response bridges as ordered WebSocket continuation frames, with backpressure and bounded message, queue and write time limits. Valid 9.5 MiB Unicode transcripts no longer hit the former whole-message 8 MiB relay guard. Commands and encrypted outer messages keep their existing limits; assembled responses remain capped at 32 MiB.
- Claude's `code_change_published` system message triggers the existing repository-scoped Git and pull-request refresh instead of producing an unhandled runtime warning. Repository and forge data remain authoritative; publication URLs and branch hints in provider output are not trusted.

### Companion iPhone and iPad

- The separate companion build 144 contains native connection recovery, long-conversation performance, provider switching and image improvements. Its distribution is verified separately; this desktop release does not install mobile changes.

### Verification

- Includes the stability fixes prepared for .22, which was not distributed because its Windows signature-update qualification failed before scanning. The runner now retries only the observed Defender RPC interruption after a bounded service-readiness wait; successful signature update, current intelligence, enabled protection, exclusion checks and a clean scan of unchanged installer bytes remain required.
- Local quality and focused transport checks cover both response bridges, large Unicode histories, later replies, ordering, cancellation, slow consumers and oversized requests. Exact-tag CI must qualify the final source, packaging, startup, macOS signing/notarization, Windows Defender and public artifact provenance before delivery is complete.
- Remote keeps separate identities, data homes and macOS Apple Silicon, Windows x64 and Linux x64 feeds. No backend deployment, migration, account reset, pairing reset or billing change is required. Existing invalid or revoked pairings still require explicit recovery.
- Windows retains the version-scoped unsigned policy and may show SmartScreen. Automated qualification does not establish Windows browser-download acceptance, physical-device push delivery or unrestricted transcript size.

## 1.0.6-remote.22 — 2026-10-18 (not distributed)

### Fixed

- Temporary account-service unavailability, service restarts and expired session credentials now request a fresh authenticated connection instead of telling an approved device that its pairing was revoked. Actual revocations, invalid proofs and unapproved devices remain refused.
- Remote desktop clients can load larger conversation snapshots without disconnecting at the command-size limit. Incoming responses remain bounded at 32 MiB; commands and outer transport chunks keep their existing limits.
- Claude's `code_change_published` system message triggers the existing repository-scoped Git and pull-request refresh instead of producing an unhandled runtime warning. Repository and forge data remain authoritative; publication URLs and branch hints in provider output are not trusted.

### Companion iPhone and iPad

- The separate companion build 144 is being prepared with native connection recovery, long-conversation performance, provider switching and image improvements. Its availability and verification are recorded separately; this desktop release does not install mobile changes.

### Verification

- Local desktop quality checks and the full server suite passed, with a final real-TLS regression proving a valid 120-message snapshot above 2 MiB arrives intact while oversized commands and responses remain rejected. Synthetic authorization checks preserve the revocation and local-approval boundaries.
- Remote keeps its separate identities, data homes and macOS Apple Silicon, Windows x64 and Linux x64 feeds. No backend deployment, migration, account reset, pairing reset or billing change is required. Existing invalid or revoked pairings still require explicit recovery.
- One exact-tag publication run must qualify packaging, startup, macOS signing/notarization, Windows Defender and public artifact provenance before delivery is complete. Windows uses the version-scoped unsigned policy and may show SmartScreen. These checks do not establish physical-device push delivery or unrestricted transcript size.

## 1.0.6-remote.21 — 2026-10-18

### Added

- iPhone and iPad can inspect, check and download an official update for their connected Remote Mac, then explicitly confirm Restart & Install from Computers. This requires companion build 143 and a packaged macOS Synara Remote host. Restart is refused while chats, background tasks, approvals, questions or automation runs still need the host.
- Companion build 143 registers ordinary completion alerts for an exact account-owned host turn, alongside Live Activities. The separate account API keeps device notification tokens distinct from ActivityKit tokens and reuses the existing host reporter. Alerts contain a generic completion message and thread routing identifiers, without uploading conversation text.

### Fixed

- A downloaded update no longer stops automatic update checks. The existing four-hour cadence continues, and a newer release replaces the pending download. Older or unchanged feeds and failed checks preserve an eligible downloaded update; stale download callbacks cannot make an older release ready to install.
- macOS installs wait for the current verified update archive. A failed native handoff reports that Synara must be relaunched before retrying, and a delayed completion cannot install after recovery.

### Companion iPhone and iPad

- The separate universal iOS/iPadOS 0.1 (143) build fixes answers to multiple agent questions, gives background commands compact status, output details and an owner-routed Stop action, and keeps the Git toolbar stable during refreshes.
- Recent and previously revealed conversation history stays visible during streaming, including complete large live turns. Accepted keyboard suggestions and rapid edits remain authoritative when sending.
- Sent-photo thumbnails load without opening the viewer, and an unzoomed image supports swiping down to close. Install the mobile build to receive these native changes; they are not part of the desktop binary.

### Verification

- Remote continues to target macOS Apple Silicon, Windows x64 and Linux x64 with separate identities, homes and updater feeds. Phone-triggered Restart & Install is available only for the packaged Remote Mac.
- Ordinary completion alerts use the separately deployed account API and additive migration 0023. The desktop updater itself needs no database migration or pairing reset. Physical-device ordinary APNs delivery, final swipe interaction and the mobile build's distribution are not established by the desktop checks.
- A real Mac mini update passed from the signed feature build 1.0.6-remote.19 to published .20 through the iPhone control: checking with .20 already downloaded retained its ready state, explicit idle Restart & Install replaced both app and server, and the existing account and conversation history recovered. Live companion checks also covered multiple-question answers, background output and Stop, Git refreshes, and sent-photo thumbnails on iPhone and iPad.
- Local checks and one publication workflow on the final tag SHA must qualify the candidate. Public notes record actual signing, notarization, startup, Windows Defender and provenance results after they complete. Windows retains the exact-version unsigned policy and may show SmartScreen; synthetic checks do not establish an installed-app upgrade or live-provider success.

## 1.0.6-remote.20 — 2026-10-17

### Fixed

- Remote accepts the actual thread identifiers used by iPhone/iPad, subagents and automations when uploading attachments, exporting a thread or sending voice audio. Colon-separated identifiers no longer fail resource validation; attachment identifiers, body limits and authorization remain restricted.

### Verification

- Companion universal iOS/iPadOS 0.1 (141) fixes attachment and voice requests from phone-created chats, keeps wide tables horizontally scrollable, opens the existing worktree when selecting a branch held there, and updates the native text renderer to 0.4.6. Both the phone and the execution computer must be updated for Remote transfers.
- No account-service deployment, migration, pairing reset or privacy change is needed. Existing homes and credentials remain separate from Stable and Beta.
- Local quality and resource regressions, followed by one exact-tag publication workflow, qualify the candidate. Public notes record packaging, startup, macOS signing/notarization, Windows Defender and provenance only after they pass. Windows retains the exact-version unsigned policy and may show SmartScreen. Synthetic voice checks do not establish live microphone or transcription-provider success.

## 1.0.6-remote.19 — 2026-10-17

### Changed

- Long agent turns avoid retaining duplicate Claude transcripts, repeated full-thread reads, redundant repository refreshes and unnecessary Markdown work. Browser diagnostics, cookie synchronization and screen-frame delivery keep bounded work while preserving streaming and recovery.

### Fixed

- Devin and Grok model changes survive session reloads. OpenCode recovers stopped sessions and reports installation status instead of appearing ready too early.
- Editing and replaying an earlier message retains a durable workspace recovery snapshot before restoring the checkpoint.
- Connector retries use a token already renewed by a concurrent request. Windows prepares process-teardown observers before the runtime exits; missing workspace folders are reported before provider launch.

### Verification

- Includes the seven merged main changes through `4cd66c35d897a98aa61ffd075607e08a6c46e4cf` (#1962, #1963, #1770, #1797, #1848, #1964 and #1965). Open PR #1966 is excluded.
- Universal iOS/iPadOS 0.1 (140) separately fixes returning from Terminal, accepted keyboard suggestions and reading position after rotation. The remote protocol and existing account, pairing, privacy and analytics configuration remain compatible; no new backend migration is required.
- Local quality and focused regression checks, followed by one exact-tag publication workflow, qualify this candidate. Public notes record actual packaging, startup, macOS signing/notarization, Windows Defender and provenance results after they complete. These checks are not a new live-provider, physical-push or installed-upgrade test. Windows retains its exact-version unsigned policy and may show SmartScreen.

## 1.0.6-remote.18 — 2026-10-17

### Added

- Remote usage reporting and private dashboard filters for macOS, Windows, Linux, iPhone and iPad, with daily/weekly/monthly active installations and pseudonymous account counts across devices.
- Host turn aggregates by provider, catalogued model, effort, interaction/permission mode, origin, outcome, duration and available tokens. Built-in shortcut/slash-command categories and fixed connection/pairing/request failure categories are included; custom names become fixed categories.

### Changed

- Remote shares limited usage and technical diagnostics by default. Settings → Privacy → Share usage and diagnostics turns both off on that installation. An existing explicit off preference is preserved; Stable/Beta product analytics remain opt-in and Stable never runs diagnostics.
- Account identifiers are hashed before analytics delivery. These hashes are pseudonymous and linked to the user, not anonymous. Privacy disclosures cover account/installation identifiers, product interactions and startup timing; no advertising tracking is introduced.

### Fixed

- Remote diagnostic errors keep built-in error types, contract-validated issue categories and numeric source locations only. Injected stack lines, custom error names, spoofed issue labels and Remote log tails are stripped by both the desktop and receiving Worker. Raw crash memory is not uploaded.
- Opt-out clears unsent events and stops new collection; resumed daily snapshots exclude activity from the opted-out window. Custom model and command names stay on the device.

### Verification

- Receiver migration 0006 and the updated analytics Worker must be live before these apps are distributed. A temporary SQLite upgrade preserves 100 preexisting product rows and 100 diagnostic rows with an integrity check; actual D1 backup, migration and ingestion are qualified separately.
- Companion universal iOS/iPadOS 0.1 (139) sends the Remote lane and account hash, preserves opt-out and declares linked Product Interaction, identifiers and startup Performance Data for Analytics, without tracking.
- Exact-source quality/server tests, three-platform packaged startup, macOS signing/notarization, Windows Defender and public artifact/feed checks are required before publication completion. Windows retains the exact-version unsigned policy and may show SmartScreen. New live provider turns, physical-device APNs delivery and manual installed upgrades are not established by these automated checks.

## 1.0.6-remote.17 — 2026-10-17

### Fixed

- Claude's effort picker keeps High selected when it is the model's default. CLI-reported effort levels now retain the catalog default instead of displaying the first level after the composer omits a redundant setting.
- The desktop composer recovers the default from older host catalogs without overriding an explicit host default or an explicit user choice.

### Verification

- Adapter and composer regressions cover the discovered model catalog, selecting High and preserving an explicit Medium choice. These checks use protocol fixtures, not a live Claude turn.
- Companion iOS/iPadOS 0.1 (138) uses the host's effort default, with a built-in fallback for older hosts. Its TestFlight delivery is qualified separately.
- Remote retains its separate identity, data home and three-platform update feeds. No account, pairing, migration or billing behavior changes. Exact-tag quality, native startup, macOS signing/notarization, Windows Defender and public artifact checks remain required before release completion. Windows uses the exact-version unsigned policy and may show SmartScreen.

## 1.0.6-remote.16 — 2026-10-17

### Fixed

- Temporary account-service failures and rejected host proofs no longer revoke every paired device. Remote retries with a fresh proof and pauses access when the authorization lease expires. Confirmed ownership denials pause access immediately; sustained denials retire trust only after repeated checks spanning five minutes.
- Host proof validity starts after key import, preventing a busy worker queue from consuming the proof's lifetime before it is sent. The desktop backend has additional worker capacity so stalled file access is less likely to delay remote authorization.
- Source-launched Remote and Beta use separate development bundle identities, protecting the installed apps' macOS privacy grants.

### Verification

- Remote remains a separate app, data home and update feed for macOS Apple Silicon, Windows x64 and Linux x64.
- Already-revoked pairings still require a fresh QR pairing; this update does not restore revoked trust automatically.
- The companion iOS/iPadOS 0.1 (137) adds connection failure reasons, a pairing recovery action and persistent refresh of discovered tunnel routes. Its TestFlight delivery is qualified separately.
- The real production GitHub consent/callback remains unverified. Windows uses the exact-version unsigned policy and may show SmartScreen. Exact-tag native signing, startup, Defender and public artifact checks remain required before release completion.

## 1.0.6-remote.15 — 2026-10-17

### Added

- GitHub sign-in through the configured WorkOS Production provider, using public profile and read-only email access without repository permissions.

### Changed

- Hosted Remote beta enrollment is available to every signed-in account. Same-account ownership, registered device proof, pairing consent and revocation checks remain required. No payment or manual account allowlist is required for this beta.

### Fixed

- A temporary enrollment refusal no longer permanently disables the execution host or revokes its approved devices. Access pauses immediately and resumes only after a fresh successful authorization snapshot. Genuine ownership, credential and host revocations remain blocking. Pairings already revoked by an older build still need normal pairing again.
- Opening the home of a connected computer with existing chats no longer crashes on an empty chat identifier.
- Codex runtime reconciliation preserves live turn ownership and pages stale work fairly. Provider handoff outcomes settle without replaying native work, and moderation metadata stays out of chat activity.
- Temporary degraded model discovery results no longer become durable cache entries. Git diff prefixes remain consistent with user configuration.

### Verification

- The source fixes passed all 18 built end-to-end scenarios with separate host/controller homes and disposable PostgreSQL, including QR retry, exact-device enrollment, remote chat and automation recovery. Authorization/connectivity regressions and the web suite also pass. WorkOS/provider processes and the Cloudflare boundary in that E2E suite are local fixtures; the real GitHub consent/callback remains unverified and is not a publication prerequisite for this release under the operator’s explicit instruction.
- Publication requires exact-tag quality/server gates, signed and notarized macOS ARM64 packaging, Windows/Linux packaged startup and Windows Defender checks. Windows uses the exact-version unsigned policy and may show SmartScreen.
- Remote retains its separate identity, data and update feeds. The updater downloads in the background and requires the normal install/restart action. Stable/Beta and installed local data are not replaced; no new iPhone/iPad binary is required for these host-side fixes.

## 1.0.6-remote.14 — 2026-10-16

### Added

- Dedicated Windows x64 installer and Linux x64 AppImage alongside the macOS Apple Silicon app. Remote has its own Windows installer registration and Linux executable, data home and update feeds, separate from Stable and Beta.

### Fixed

- Fresh Remote installations use the working hosted account service automatically. The previous default returned 404 for email and social sign-in; operator launch overrides on our Macs masked the problem. Self-hosted overrides and the issuer of existing saved sessions are preserved.

- Remote offers the configured Google, Apple and email sign-in methods, and profile/usage sync no longer requires operator shell setup. Generic provider support, Stable/Beta gates and explicit profile-sync opt-out are preserved.

### Verification

- Packaging/configuration tests cover isolated app identities, complete three-platform publication, feed isolation and exact-source artifact checkpoints. Startup qualification removes any inherited account URL override.
- Publication requires exact-tag quality/server gates, signed/notarized macOS packaging, native Windows/Linux startup and Windows Defender qualification. Windows uses the existing exact-version unsigned policy; an unsigned installer may show SmartScreen. These checks do not establish Windows publisher reputation or qualify every Linux distribution.
- Product analytics remain opt-in and collect no chat content. Desktop provider buckets are Codex, Claude and Other; native provider/token and completion coverage is still incomplete. TestFlight 0.1 (136) is unchanged and remains compatible. Remote account enrollment is still required separately from login.

## 1.0.6-remote.13 — 2026-10-16

### Fixed

- Vercel sign-in requests renewable access (`offline_access`) alongside the scopes requested by its MCP endpoint. Previous `openid`-only grants could expire without a refresh token, hiding Vercel from iPhone/iPad suggestions. Existing grants need one Reconnect after upgrading.
- Project access remains the user's choice on Vercel's consent page. Tokens stay on the execution computer; other connector scopes are unchanged.

### Verification

- Includes source fix `22c3591`. A regression using the real MCP OAuth SDK fails before the fix, then passes authorization, persisted reload, simulated expiry and refresh. Fixture HTTP responses do not prove a live Vercel consent or refresh.
- Publication requires exact-source quality/server gates, signed/notarized macOS ARM64 packaging and packaged startup qualification. TestFlight 0.1 (136) remains compatible; Remote identity, data and feed are unchanged.

## 1.0.6-remote.12 — 2026-10-16

### Fixed

- Paired iPhone, iPad and desktop clients can discover connected services in the composer’s @ menu on the computer running the chat. Previously only the local desktop owner could read the connector list.
- Paired clients receive connector names, status and URL origins only. OAuth setup, connecting and disconnecting remain restricted to the local owner; connector tokens stay on the execution computer.

### Verification

- Includes connector discovery fix `d322f6e`. Native TestFlight 0.1 (136) already supports these suggestions; no new mobile binary is required for this change.
- Publication requires exact-source quality/server gates, signed/notarized macOS ARM64 packaging and packaged startup qualification. Remote retains its separate identity, data and update feed.

## 1.0.6-remote.11 — 2026-10-16

### Fixed

- Hover cards open for remote chat identifiers containing quotes and brackets. Remote rows in Projects, Pinned and Chats reuse the same preview as local conversations and Activity.

### Verification

- Includes feature-branch fix `43d11d5`. Native contracts, account/pairing behavior and provider choices are unchanged; TestFlight 135 remains compatible.
- Publication requires exact-source quality/server gates, signed/notarized macOS ARM64 packaging and packaged startup qualification. Remote retains its separate identity, data and update feed.

## 1.0.6-remote.10 — 2026-10-16

### Fixed

- Local and remote Activity rows share hover cards, aligned status indicators and a steady remote globe while row actions appear.
- The empty-chat ASCII pattern continues beneath the composer's own surface. Existing reduced-motion, resize and hidden-owner behavior remain intact.

### Verification

- Includes both subsequent feature-branch commits, `8db6bbf` and `95aa0f5`. Native contracts, account/pairing behavior and provider choices are unchanged; TestFlight 135 remains compatible.
- The complete candidate requires exact-source release CI, signed/notarized macOS ARM64 packaging and packaged startup qualification before publication. Remote keeps its separate identity, data and update feed.

## 1.0.6-remote.9 — 2026-10-16

### Added

- Clear read chats from Priority with the eraser action in the sidebar and Activity view.

### Fixed

- Chat creation on another computer appends its recap to the original conversation. The card opens the chat in the owning connected workspace and never treats its identifier as local.
- Remote Activity rows keep project and branch metadata without repeating the computer name.

### Verification

- This follow-up includes all three additional commits from the Remote feature branch. Remote retains its separate identity, data directory and updater lane; release CI qualifies the exact signed macOS ARM64 candidate.

## 1.0.6-remote.8 — 2026-10-16

### Changed

- Claude effort, thinking and fast-mode controls follow the installed CLI's capabilities. Synthetic Default effort choices are removed from cached catalogs.

### Fixed

- Packaged remote workspaces can open their own application frame and reload it for recovery. The fix retains containment of inline visualizations and unrelated navigation.

### Verification

- Remote uses its separate app identity, data directory and updater lane. Publication requires exact-source quality checks, signed and notarized macOS ARM64 packaging, and packaged startup qualification.

## 1.0.7 — 2026-10-17

**Lighter long-running turns, model switches that take effect and safer workspace recovery.**

This Stable patch covers all eight commits from `v1.0.6` through feature head `4cd66c35d897a98aa61ffd075607e08a6c46e4cf`, including the previous release's download snapshot refresh. Connectors and diagnostics remain Beta-only; channel identities, data homes and update feeds stay separate.

### Added

- Message edits that restore an earlier Git workspace retain a hidden recovery checkpoint before provider rollback. The snapshot survives successful replay and later failures; capture failure refuses the edit before rollback. Ignored and external files are not promised recovery coverage.

### Changed

- Long turns bound repeated Git, event-history and checkpoint work. Claude retains turn identifiers rather than every SDK message body; usage reads cache unchanged files and parse appended records. Streaming Markdown reuses settled blocks and updates avoid repainting every transcript row.
- Live file-change captures share a three-second per-thread throttle with a trailing capture. Read-only tools avoid unnecessary Git refreshes; PR status refreshes at turn end, branch changes, focus and regular polls.
- Desktop frame capture runs only with a renderer subscriber. Cookie restoration uses a temporary view. Browser console/log domains quiesce after 60 seconds without automation and reactivate on acquisition; captured history, network tracking and request metadata remain available.
- Scoped measurements reported in #1963: 200 untracked-file numstats, 1.44 s → 9 ms; a repeated usage scan, 214 ms → 4 ms; parsing updates to a 29 KB answer, 18.6 ms → 0.7 ms. These are workload-specific operation timings, not independent whole-app CPU, RAM or battery benchmarks.

### Fixed

- Devin model/Fast switches and Grok model/effort switches reject incompatible resume cursors and start a fresh native session with conversation context. Droid avoids duplicate transcript bootstrapping after a successful native reload.
- Stopped-but-retained OpenCode sessions no longer trap later turns in a closed runtime. Normal recovery preserves native identity where available and retains unavailable-session failure handling.
- Windows prepares a bounded process observer before owned OpenCode startup and retains it through pool reuse, then requests fresh teardown evidence. Creation identity, deadlines, cancellation, observer disposal and process exit proof remain required.
- Missing or moved working directories are reported before executable resolution instead of being misreported as a missing Claude installation. WSL UNC behavior remains unchanged.
- Beta connector retries reuse an already rotated, unexpired access token; failed OpenCode MCP installation statuses are logged. One connector sign-in covers supported accounts/providers on that computer. Stable keeps Connectors disabled.

### Verification

The finished candidate requires local formatting, lint, typecheck, release smoke, Windows runtime boundary, marketing build and affected unit/browser tests. The single exact-tag workflow supplies the full quality/server test suite, portable build, four native packages, Intel startup, provenance, macOS signing/notarization and Windows Defender/startup. Results are pending until recorded in the local checkpoint and public release notes; no earlier SHA is treated as qualification for this candidate.

The documentation audit covers the complete range and updates recovery, provider troubleshooting, live-change cadence, desktop browser diagnostics and Beta connector scope. See [source audit](docs/releases/1.0.7-source-audit.md). This release changes curated release text on existing surfaces only. Manual installation, installed-app upgrades, real Windows 11 downloads and live-provider behavior remain unverified.

## 1.0.6 — 2026-10-16

**Faster long conversations, smoother parallel work and safer provider recovery.**

This Stable patch covers all 16 commits after `v1.0.5` through `612aff6d8fdcdb9e849d8c8750a8683e7e2dca81`, including the intervening Beta notes. Connectors and diagnostics remain Beta-only; application identities, data homes and update feeds remain separate.

### Added

- Claude model controls can use effort, adaptive-thinking and fast-mode metadata from the installed CLI, including models newer than the fallback catalog. Unset effort leaves Claude Code's default in charge; older CLIs retain fallbacks for omitted fields.

### Changed

- Long conversations avoid repeated activity-history scans and full-detail reads on streaming and checkpoint paths. Full history, outstanding requests and the latest task snapshots remain available.
- Parallel streams avoid redundant replay polls while live events arrive. Repository and workspace-file refreshes are throttled with a final trailing read. RPCs wait in bounded FIFO queues by request class before consuming server capacity; cancellation, deadlines and uncertain-delivery safeguards remain enforced.
- The misleading server-busy popup and client heartbeat are removed. Reconnect notices, local event-loop monitoring, health probes and operator status remain.

### Fixed

- Runtime reconciliation keeps the actual live turn owner, serializes reconciliation passes and pages through stale candidates rather than repeatedly inspecting only the first batch.
- Provider handoffs settle known durable outcomes beyond the native-call deadline without replaying stop/start side effects. Post-native persistence failures remain uncertain.
- Partial or fallback model catalogs no longer overwrite or persist over complete discovery. They retry on demand after a thirty-second cooldown. The cache format upgrade discards the old catalog snapshot once; accounts, selected models and sessions remain intact.
- Antigravity quota lookup uses the matching OAuth client and quota-summary endpoint, with legacy fallback.
- The ASCII pattern fades around the composer and stays out of the input during ripples; command menus remain opaque.
- Git diff and worktree-transfer commands pin `a/` and `b/` path prefixes despite user Git configuration.
- Codex internal moderation metadata no longer creates chat activity rows. Native logs retain it when enabled; real provider errors and historical rows remain.
- Release migration-lineage checks isolate unrelated Remote prerelease history.

### Verification

The complete candidate is qualified by the local release preparation checks and one publication workflow on the exact tag SHA. Public release notes record their actual results after publication; pending native signing, notarization, startup, Defender and provenance gates are not presented as passed.

The documentation audit updates provider controls, model-cache recovery, parallel request behavior and public troubleshooting. See [source audit](docs/releases/1.0.6-source-audit.md). Source tests and packaged startup do not establish manual installed-app upgrades, live-provider behavior, microphone behavior or browser-download reputation.

## 1.0.6-beta.1 — 2026-10-15

**Connectors, a compact composer, clearer Activity and the full reliability work since the previous Beta.**

This Beta covers all **59 feature commits** from `v1.0.2-beta.1` through `4b2441d1040080324f458602e30fbb7f946cb1f5`, including the 1.0.2–1.0.5 Stable changes. Its version commit stays off `main`. Connectors and diagnostics remain Beta-only; Stable and Beta retain separate application identities, data homes and update feeds. Hubs were already available in the previous Beta; their promotion to Stable is not presented as a new Beta feature. Inline visuals were added after that Beta and are included here.

### Added

- **Connect your tools to Synara Beta.** Sign in to remote MCP services from Settings → Connectors and use their tools in supported agent sessions. Claude, Codex and OpenCode support remote HTTP connectors; ACP providers require advertised HTTP MCP support. Pi, Devin and Antigravity do not. New sessions receive connected tools. Custom URLs require public HTTPS; sign-in requires loopback. Slack needs your own OAuth app and an updated redirect URL when the desktop port changes. Stable keeps Connectors disabled.
- **Interactive visuals inside your conversations.** Agents can now show charts, tables, comparisons, checklists and calculators directly in Beta chats. Native components follow your theme and font size. Desktop apps also support isolated, self-contained HTML views; browser-hosted clients show native components only. Visuals stay with their chat in the current app’s data home.
- **A compact composer with room for your work.** Short drafts fit into a single row that expands for longer messages. Goals, tasks and changes sit in floating capsules above it. Open a capsule for details or use the + menu for extras. Plans remain accessible, queued drafts survive layout changes, and narrow editor panes keep branch and model controls readable. Notices and task controls use the same compact layout.
- **Find the chats that need you next.** Activity’s Priority section puts approvals, questions and ready plans ahead of unseen results and running work. Rows hold their place while you work through them; Clear read refreshes the list. Use mod+alt+a to cycle through chats waiting on you and unseen work. Native subagent chats stay in their parent’s cards and roster instead of filling the sidebar.
- **More capable iOS simulator tools.** Agents can launch and inspect apps, wait for screens, read bounded logs and configure test conditions, with repaired input on Xcode 27. Actions return screen evidence and report when a screen has not settled. Tools support app restarts, launch arguments and environment, appearance, text size, location and privacy settings. Input and configuration retain approval checks; app builds still use your project’s build tools.

### Changed

- **Full conversation reloads and safer recovery.** Since the previous Beta, native chats restore their full saved conversation and apply rollbacks made while disconnected. The 1.0.2 recent-history pager and private detail cache were removed; imported provider history retains its own loader. Reconnects restore subscriptions without replaying uncertain requests. Missing owners cannot trigger abandoned child commands, and eligible ordinary chats can continue after an unexpected shutdown while approvals, goals, Hubs and scheduled work retain their own recovery rules.
- **Clearer Hub navigation and consistent permissions.** Hubs appears in the main rail, with coordinator rows, worker navigation and settings beside your projects. Hiding Hubs again is respected. Check-ins use the coordinator’s current access mode; new workers inherit a supported mode or fall back to Ask for approval. Verified Claude Auto capability remains tied to the model and account. Gateway and External MCP callers can select a configured provider account for new work and automations.
- **More control over chat headers and sidebar order.** Turn Thread tabs off for a simpler header, and disable Working and unread on top for chronological Recently active ordering. Rows stay anchored during pointer interaction; the Automations badge counts configured automations. Working for and Worked for use compact disclosures, and background completions keep an active response together. First-message naming survives replay without overwriting manual titles.
- **Clearer Claude token totals.** Resumed Claude sessions avoid counting restored usage again, and Inbox separates observed cache reads from other tokens. Accounting keeps native-session and process identity, preserves child usage until a real parent result covers it, and excludes output from cache-read estimates. Historical records without enough evidence remain partial; these figures are not an independent billing statement.
- **A new empty-chat background and smaller refinements.** Empty chats have an animated ASCII field, with an Appearance switch and a still version for reduced motion. The field stops when hidden or disabled and stays out of terminal views. Updated tool, app and connector icons, compact archive controls, clearer permission text, and corrected plan, voice-layout and transcript clearance make everyday controls easier to use.

### Fixed

- **Claude keeps the permissions and session you chose.** Ask for approval explicitly selects Claude’s default permission mode. Changing behavior settings such as Artifacts no longer discards a resumable session. Permission descriptions distinguish Claude’s modes from Codex’s sandbox policies. Finished or interrupted foreground Claude tasks settle with their turn, without stopping background work that still owns its lifecycle. Slash-command catalog updates no longer appear as unknown transcript events.
- **Less waiting on task-heavy conversations.** Opening a conversation with many task updates avoids repeated quadratic database scans. The query retains the same reconstructed task state and history. Stale transcript row measurements are also ignored. These fixes address specific slow-query and layout cases; they do not establish that every server or provider stall is resolved.
- **Keep typing while an agent uses the browser.** Agent clicks, typing and browser inspection no longer take native focus from the composer. Native browser hover also preserves the keyboard target. Input uses the tab’s protocol connection, and restored screenshot visibility keeps its focus behavior. This does not promise every website accepts automated input.
- **Resolve a blocked provider switch.** If background tasks prevent a handoff, the composer offers Stop tasks and switch. The source keeps running until you choose that action. A failed handoff retains the source selection and its actual error instead of reporting success.
- **Paste files and recover Computer Use actions.** On macOS, agents can paste workspace images and files, preserve supported clipboard formats and recover expired foreground requests. A newer human clipboard copy is retained. Native targeting excludes unrelated or parked document trees and cursor overlays. Input listeners recover with readiness checks, state and scroll progress avoid false repetition blocks, and uncertain text delivery is not replayed automatically. App outcomes still need verification.
- **Browser tabs keep their place through ordinary switches.** Inactive browser tabs stay warm longer, preserving forms, scroll and page state until runtime limits require suspension. Hidden tabs can suspend earlier under pressure. Suspended pages and tabs whose desktop window was replaced reload their saved URL when reopened; unsaved state is not guaranteed indefinitely. Desktop HTTP requests also avoid the macOS Electron socket failure.
- **Protect live sessions and resume Claude deliberately.** Active provider work is protected from stale cleanup decisions, delayed completion events and event-loop stalls. Claude’s long-idle resume review is off by default; enable it in Providers when you want the choice. Agent and automation sends are not held for that personal review. Nested Codex sessions preserve user configuration and source-account identity, startup reconciliation respects live ownership, and behavior-only Claude settings retain resume ownership.
- **Provider and workspace refinements since the last Beta.** Pi reports missing installations accurately, Grok 4.7 Build Fast offers Extra High, and access-mode changes keep idle work settled. Provider effort and availability still depend on installed runtimes and accounts. Windows executable resolution prefers spawn-safe candidates; process scans no longer block POSIX maintenance, named pipes cannot strand ordinary file workers, and the context ring, file-read icon, Hubs empty state and Skip setup keyboard focus are corrected. Shared TypeScript preparation is serialized.

### Verification

The shared application source passed the complete Stable preparation battery: **16,995 local tests passed, 39 skipped**, full build, formatting, lint (918 warnings, zero errors), seven workspace typechecks, release smoke, Windows runtime, migration lineage and brand checks. The original external-volume metadata/cache/output failures and successful qualified reruns remain recorded under 1.0.5. Beta changes only release versions, curated notes and documentation; final Beta-specific checks are recorded with its publication evidence.

Exact-tag CI must pass all quality/server shards, four native packages, provenance, macOS signing/notarization and Intel startup, and Windows Defender/startup under the exact `1.0.6-beta.1` unsigned exception before publication. The release remains a prerelease and must not replace GitHub Latest. Beta update manifests are separate from Stable; the historical compatibility feed stays unchanged.

The durable documentation audit covers both release ranges, including the removed recent-history cache, recovery, browser continuity, Computer Use, Hubs and permissions. New Connectors and inline-visual guides are linked from navigation and overview pages. See [release source audit](docs/releases/1.0.5-source-audit.md). Manual installed-app upgrades and live microphone behavior remain unverified; the inherited Claude Sonnet 4.6 smoke establishes one real isolated provider response only.

## 1.0.5 — 2026-10-15

**Interactive visuals, a compact composer, clearer Activity and stronger simulator and session behavior.**

This Stable release audits all **14 commits** from `v1.0.4` through feature head `4b2441d1040080324f458602e30fbb7f946cb1f5`. Inline visuals were promoted by #1932 before release preparation. Connectors and diagnostics remain Beta-only; no additional feature or provider is promoted here. Stable and Beta retain separate identities, data homes and update feeds.

### Added

- **Interactive visuals inside your conversations.** Agents can now show charts, tables, comparisons, checklists and calculators directly in Stable chats. Native components follow your theme and font size. Desktop apps also support isolated, self-contained HTML views; browser-hosted clients show native components only. Visuals stay with their chat in the current app’s data home.
- **A compact composer with room for your work.** Short drafts fit into a single row that expands for longer messages. Goals, tasks and changes sit in floating capsules above it. Open a capsule for details or use the + menu for extras. Plans remain accessible, queued drafts survive layout changes, and narrow editor panes keep branch and model controls readable. Notices and task controls use the same compact layout.
- **Find the chats that need you next.** Activity’s Priority section puts approvals, questions and ready plans ahead of unseen results and running work. Rows hold their place while you work through them; Clear read refreshes the list. Use mod+alt+a to cycle through chats waiting on you and unseen work. Native subagent chats stay in their parent’s cards and roster instead of filling the sidebar.
- **More capable iOS simulator tools.** Agents can launch and inspect apps, wait for screens, read bounded logs and configure test conditions, with repaired input on Xcode 27. Actions return screen evidence and report when a screen has not settled. Tools support app restarts, launch arguments and environment, appearance, text size, location and privacy settings. Input and configuration retain approval checks; app builds still use your project’s build tools.
- **A new empty-chat background and smaller refinements.** Empty chats have an animated ASCII field, with an Appearance switch and a still version for reduced motion. The field stops when hidden or disabled and stays out of terminal views. Updated tool, app and connector icons, compact archive controls, clearer permission text, and corrected plan, voice-layout and transcript clearance make everyday controls easier to use.

### Changed

- **Clearer Claude token totals.** Resumed Claude sessions avoid counting restored usage again, and Inbox separates observed cache reads from other tokens. Accounting keeps native-session and process identity, preserves child usage until a real parent result covers it, and excludes output from cache-read estimates. Historical records without enough evidence remain partial; these figures are not an independent billing statement.

### Fixed

- **Claude keeps the permissions and session you chose.** Ask for approval explicitly selects Claude’s default permission mode. Changing behavior settings such as Artifacts no longer discards a resumable session. Permission descriptions distinguish Claude’s modes from Codex’s sandbox policies. Finished or interrupted foreground Claude tasks settle with their turn, without stopping background work that still owns its lifecycle. Slash-command catalog updates no longer appear as unknown transcript events.
- **Less waiting on task-heavy conversations.** Opening a conversation with many task updates avoids repeated quadratic database scans. The query retains the same reconstructed task state and history. Stale transcript row measurements are also ignored. These fixes address specific slow-query and layout cases; they do not establish that every server or provider stall is resolved.
- **Keep typing while an agent uses the browser.** Agent clicks, typing and browser inspection no longer take native focus from the composer. Native browser hover also preserves the keyboard target. Input uses the tab’s protocol connection, and restored screenshot visibility keeps its focus behavior. This does not promise every website accepts automated input.
- **Resolve a blocked provider switch.** If background tasks prevent a handoff, the composer offers Stop tasks and switch. The source keeps running until you choose that action. A failed handoff retains the source selection and its actual error instead of reporting success.

### Verification

With Node 24.13.1 and Bun 1.4.2, the full local `bun run test` passed **16,995 tests, with 39 skipped**. Frozen install, seven workspace typechecks, release smoke, Windows runtime boundary, migration lineage and brand checks passed. Formatting and lint passed after verified AppleDouble metadata files were moved aside (918 lint warnings, zero errors). The initial format/lint attempts failed on binary metadata, not source diagnostics.

The first full build failed while loading an existing Turbopack persistence directory (`invalid digit found in string`). The next passed marketing but failed Vite output cleanup with `ENOTEMPTY` under `apps/web/dist/central-icons-fill`. Generated caches/output directories were preserved and fresh directories used; the final `bun run build` passed all five build tasks, with no runtime source changes. These initial failures remain recorded rather than being described as an uninterrupted pass. Marketing documentation checks passed (59 mirror tests, 60 production-site tests), along with website lint, production builds and external-link checks.

Exact-tag CI remains the publication gate for all quality/server tests, four native packages, provenance, macOS signing/notarization and Intel startup, and Windows Defender/startup under the exact `1.0.5` unsigned exception.

The first tag candidate failed the CI identity check because two late documentation additions named the website repository using a retired product identity. Those references were corrected without weakening the guard. The earlier local brand check preceded those additions; the corrected candidate rechecks the complete tracked documentation before publication.

PR #1934 previously received an actual `OK` reply from Claude Sonnet 4.6 in isolated state. That is one session smoke, not a guarantee for every provider. Voice visibility has browser coverage; live microphone/provider behavior and manual installed-app upgrades are not established. The task-state optimization preserves reconstructed SQL results; it does not resolve every server stall.

The repository website mirror now also includes its missing 1.0.2–1.0.4 entries; the production website retains its existing published history. The durable documentation audit updates composer, Activity, subagents, handoffs, browser focus, Claude accounting and channel availability; new inline-visual and Connectors guides are linked from navigation and overview pages. See [release source audit](docs/releases/1.0.5-source-audit.md).

## 1.0.4 — 2026-10-13

**Faster long chats, browser tabs that keep their place, and more dependable session recovery and Computer Use.**

This Stable release audits all **33 commits** from `v1.0.3` through feature head `d36a31a294e59ff882e0d8f319af9dd77f9320c8`. Hubs remains available in Stable. Inline visuals and diagnostics remain Beta-only; this release does not promote them or share data between the two apps.

### Added

- **Paste images and files with Computer Use on macOS.** Native paste and short batches accept a workspace image or file as well as text. Every batch file is validated before input begins. Clipboard preservation keeps native formats inside the driver and reports restoration; a newer human copy is retained. Unsupported preservation refuses before replacing the clipboard. Target consent still applies, and paste dispatch alone does not establish attachment upload or saving.
- **Choose whether working and unread chats float to the top.** The new **Working and unread on top** setting is enabled by default. Turn it off to keep **Recently active** sorting chronological; creation-time ordering remains chronological.

### Changed

- **Long conversations open and switch with less layout work.** Content-aware row heights, bounded text sampling and conservatively reused settled-message measurements reduce re-anchoring when reading history. Startup no longer subscribes to the same conversation twice. Full transcript loading is retained, and scrolling away releases end-follow.
- **Browser tabs stay loaded longer.** Ordinary inactive tabs retain their DOM, forms, scroll and history for up to ten minutes; leaving a chat keeps its browser warm for up to five minutes. Per-chat and app-wide runtime budgets can suspend hidden pages sooner, while visible pages, protected automation actions and OAuth openers remain protected. Suspended pages reload their URL rather than promising permanent preservation of unsaved page state.
- **Unexpected shutdowns can resume eligible ordinary chats.** Startup records actively running human chats before settling orphaned turns, then requests a continuation that checks existing operations before repeating them. Pending approvals/questions, starting or archived chats, native subagents, delegated tasks, goals, Hubs and scheduled work are excluded from this fallback. Explicit quit choices take precedence.
- **Server maintenance does less blocking work.** POSIX process-tree scans run asynchronously, and runtime reconciliation uses a new additive message-activity index with turn-scoped lookups instead of rescanning long conversations.

### Fixed

- **Active provider sessions survive stale idle decisions.** Cleanup acquires lifecycle ownership and rechecks live turns, queued sends, background tasks and recent activity before stopping a session. Pi snapshot reads no longer manufacture new activity timestamps.
- **Stalls and delayed notifications do not retire healthy work.** Codex authentication and session-presence deadlines discount event-loop stalls. Delayed completion, abort and terminal-error notifications retain their original turn and cannot settle a newer one or invalidate its gateway authority. Provider and Claude reconfiguration preparation have bounded waits without abandoning process retirement.
- **Hub permissions remain consistent.** Coordinator check-ins use the chat's current access mode; workers inherit it or fall back from unsupported inherited Auto to **Ask for approval**. Claude Auto evidence is reused only for the same model/account, and Devin recognizes **Ask Everytime** without confusing it with read-only Ask mode.
- **Computer Use can recover from unanswered approvals and stalled listeners.** A foreground card that expires after five minutes can be requested again; explicit decline/cancel remains effective for that turn. A readiness watchdog restarts a silent input listener, while input stays paused until readiness is established.
- **Computer Use reports evidence more accurately.** Native text delivery requires matching insertion evidence and does not infer retry offsets from rich-editor value lengths. Stable state verification and measured scroll travel count as progress; observation-only batches do not trigger mutation repetition guards. Uncertain input is not replayed automatically.
- **Native targeting stays with the intended window.** The macOS driver excludes unowned application document roots, parked web-document trees and its own cursor overlay from the relevant target paths, then rechecks retained semantic targets before input. Missing target evidence remains unknown.
- **Browser pages return after window replacement or suspension.** Reopening a suspended agent-owned tab restores its URL when no tool is acting on it. Replacing the desktop window marks destroyed page runtimes for restoration. Switching tabs reveals the incoming page before hiding the outgoing page to avoid an empty frame.
- **Sidebar rows stay put during interaction.** Working/unread order is held while the pointer is over the list or a press is active. Opening a subagent keeps the relevant rows anchored. The Automations badge counts configured automations, matching the **All** tab, rather than unresolved runs.
- **First-turn naming survives replay backlogs.** Chat titles and worktree names are owned by the first durable user message, including queued sends; later messages and manual title changes are respected.
- **Provider setup and effort choices are accurate.** Pi reports unavailable when neither its CLI nor an SDK credential setup exists, while credentialed SDK-only use remains supported. Grok 4.7 Build Fast exposes **Extra High** effort.
- **Workspace special files cannot strand file workers.** POSIX reads and version-checked saves reject named pipes without a blocking open, keeping unrelated file and runtime requests responsive. This fixes the reproduced FIFO starvation case, not every possible unresponsive-server cause.
- **Transcript and composer details are clearer.** Background task/Monitor completions arriving during active work stay inside that response. File-read tools use the book icon, the context meter's progress ring is restored, and composer outlines/corners are corrected. The empty Hubs page uses its route card, and **Skip setup** has usable spacing and keyboard focus.

### Verification

Release inputs passed frozen dependency installation with Node 24.13.1 and Bun 1.4.2, formatting, lint (910 warnings, zero errors), all seven workspace typechecks, release smoke, Windows runtime-boundary checks and migration lineage. Focused tests passed 1,575 server cases (two skipped), 395 web cases, 287 desktop cases and 18 Chromium cases. No failing local reruns are hidden in these totals. The complete feature-head CI passed on `d36a31a294e59ff882e0d8f319af9dd77f9320c8` (run `38451857388`).

The exact tag workflow remains the final publication gate for the full quality suite, all three server shards, four native packages, provenance, macOS signing/notarization and Intel startup, Windows Defender/startup, and public release assets. Windows uses the version-scoped unsigned policy; unsigned does not bypass qualification.

Prepublication macOS attempts on `775b3359e18bb9429fb59a3dd3e5ef6744e39a57` exposed repeated Apple ticket-delivery connection losses after accepted notarization. The packaging correction retries only `stapler` exit 68 with `NSURLErrorDomain Code=-1005`, at most four attempts with bounded backoff, including provenance validation. Other failures still stop publication. Three regression cases failed on the previous command runner; all 45 focused notarization, DMG, provenance and checkpoint tests passed after the repair. The corrected candidate requires fresh native qualification; earlier installers are not relabeled or reused across source commits.

The scoped correction run exposed two pre-existing test timing defects: AppSnap cleanup assumed six event-loop turns meant disk writes had finished, and a checkpoint liveness assertion imposed a 500 ms Git completion budget. The AppSnap test now observes completed durable-file deletion and restores real timers before teardown; the checkpoint test retains the blocked-workspace assertion with a bounded 10-second wait. All 53 AppSnap and 94 checkpoint tests passed locally. Browser CI also reported transient streaming-follow gaps after thread switching and the bottom arrow. The final growth assertion previously sampled before the delivered text finished its bounded smooth reveal; it now waits for the exact rendered paragraphs and stable layout before applying the unchanged 4 px bottom tolerance. All 32 chat-follow cases passed locally after this test-only correction. No production UI behavior changed. An audit of merged Computer Use PR #1915 found all nine affected test files green in candidate CI (842 tests); the failing AppSnap and chat-follow cases predated that PR and its safety/transport coverage was retained.

Existing Chrome performance measurements predate the final row-height cache repair and are not presented as v1.0.4 speedup percentages. The bounded-estimator microbenchmark measures the helper only. Manual installed-app upgrades, credentialed live-provider sessions and application-specific Computer Use outcomes are not established by source tests or packaged startup checks.

## 1.0.3 — 2026-10-11

**Easier Hub navigation, simpler conversation recovery and safer provider restarts.**

This Stable patch audits all **three commits** from `v1.0.2` through `fc6fd90c1f3854719ef83fcdb3ee7e57a8437986`: PR [#1685](https://github.com/Emanuele-web04/synara/pull/1685), the direct transcript/Hub navigation commit `52f06318f`, and PR [#1846](https://github.com/Emanuele-web04/synara/pull/1846). Hubs remains available in Stable; diagnostics remains Beta-only. Stable and Beta retain separate identities, data homes and update feeds.

### Added

- Hubs is visible in the main rail by default. Existing saved settings reveal it once; hiding it again from Customize remains respected. Coordinator rows use the project sidebar layout with worker disclosure, pinning and a settings action.

### Changed

- Native conversation detail loads the full server projection. The recent-history pager, first-message loader and private IndexedDB detail cache added in 1.0.2 have been removed. Imported provider history retains its separate **Load earlier messages** control. Stored conversations and exports are not truncated by this change.
- Active work shows **Working for** with a live duration; settled work uses a compact **Worked for** disclosure. Labels follow the chat font size, without model badges or completion icons. Finished tools and narration remain expandable, or visible when folding is disabled.
- Native release packaging can overlap quality and server tests, while both publishers still require every mandatory gate. Intel macOS packaging runs on Apple Silicon with architecture checks and an actual Intel-host startup check. Failed attempts can retain a verified same-run artifact checkpoint for qualification retries; source, signing and digest checks fail closed. These workflow changes do not establish a percentage speedup for this release.

### Fixed

- Recovery snapshots apply projected rollbacks/reverts, preventing removed messages from reappearing after a disconnect. Ordinary refreshes still preserve newer streamed text.
- Provider restart recovery does not create replacement sessions or resend persisted child commands whose owner is missing or deleted. Undispatched work is blocked; ambiguous delivery stays uncertain. Surviving children report the error and unrelated chats remain usable.
- Persisted Claude compaction reviews with unavailable owners stay held instead of resending the message or failing startup.
- Chat deletion cancels queued work and clears local caches before optional computer teardown, so a cleanup failure or timeout cannot leave queued promotions stuck.
- Desktop HTTP requests initialize the pinned Undici dispatcher before requests, avoiding Electron 43's macOS `setTypeOfService` socket crash while preserving fetch globals and error behavior.

### Verification

Local formatting, lint (883 warnings, zero errors), all seven typechecks, release smoke and Windows runtime boundary checks passed on the prepared release inputs. Focused server tests passed 499 cases; web unit tests passed 303. The desktop HTTP regression passed under both Node 24 and Electron 43. The full feature-head CI passed at `fc6fd90c1f3854719ef83fcdb3ee7e57a8437986`.

The initial local browser run passed 230 cases and failed three ChatView cases: send-anchor movement, close-button pointer travel, and transcript reveal timing. All three passed an unchanged isolated rerun; the initial run also logged ResizeObserver notifications. The cause is not established, and this is not reported as a full local browser pass. Hub navigation and imported-history files passed in that run.

The exact tag workflow's full quality suite, three server shards, four native installers and public-asset verification remain publication gates. Signed/notarized macOS, Windows Defender/startup and updater-feed evidence will be recorded after publication. Manual installed-app upgrades and live-provider sessions are not claimed.

## 1.0.2 — 2026-10-11

**Hubs comes to Stable, with visible subagents, chat-managed Tasks and faster reopening of long conversations.**

This Stable release audits **280 commits and 82 merged pull requests** from **v1.0.1** through feature head `6ef12ef86bd5c1f502ad798eeba4dd3b56698a88`, including the features first published in 1.0.2-beta.1 and the subsequent reliability fixes. Hubs is promoted through a separate feature PR before release preparation. Stable and Beta keep their own identities, data homes and update feeds; this release does not copy Beta data back to Stable. Diagnostics remain Beta-only.

### Added

#### Hubs comes to Stable

- Bring a coordinator, parallel worker chats, shared instructions and a versioned Library together in one Hub. Link several repositories, or use a Hub for research, writing and planning without a repository.
- New Hubs run three workers at once; choose one to eight in Hub settings. Excess work waits in a persistent queue. Repository workers default to isolated worktrees; general work and non-Git folders use local workspaces.
- Follow queued, running, waiting and finished work, inspect delivered files and restore Library versions. Pause, resume, archive or restart the coordinator with its conversation retained. Library remote pushes report their actual outcome.
- Resolve worker approvals from the coordinator chat, with links to the worker. Approve once, allow the session where supported, decline or cancel the worker turn. Only you can approve; the coordinator has no approval tool. Queued work inherits the coordinator's access mode unless explicitly overridden.

#### Follow subagents without losing the conversation

- Claude and Codex child agents have their own conversations, permanent compact launch cards, a roster in Environment and a right-dock pane.
- Inspect available briefs, current steps, elapsed time and results; open, message, background or stop supported runs. Repeated invocations and nested children retain their own history and launcher relationship. Codex multi-agent v2 children with encrypted briefs show their task name instead.
- Background results remain visible after the parent finishes. Stopped and failed work retain their actual outcome, and Stop stays available on live cards. The roster shows up to 20 native children per turn with an overflow notice.

#### Ask your agent to maintain Tasks

- Supported sessions can create, list and update Tasks to-dos from a chat: notes, priority, due date, project and completion state. Changes reach open windows without a reload.
- Retried creates use a request ID to avoid duplicates. These tools maintain the list; they do not dispatch a to-do to an agent. Synara permissions still apply.

#### Choose the account your integrations use

- Agent gateway and External MCP callers can discover configured provider instances and select an account for new tasks and automation targets.
- Model discovery and validation use that account. Unknown or disabled instances are rejected before creating work; omitting the instance keeps the default-account behavior.

#### Choose a simpler chat header

- Turn **Thread tabs** off in Settings to show only the current conversation title in the desktop chat header. Tabs remain on by default.
- Enabled tabs keep readable widths and an overflow menu; parent titles no longer appear twice.

### Changed

#### A clearer record of each turn

- Turn headers and compact work groups distinguish replies, interrupted turns, background commands and child agents. Tool groups use clearer action summaries and icons, and Claude Monitor wake-ups appear as compact disclosures.
- Assistant text, questions and work retain chronological order. Background rows are compact and unboxed, and worked-for headers omit redundant timestamps. New Codex automatic approval-review start rows no longer clutter the transcript; denied and aborted review warnings remain.
- Live follow survives thread switches and settled layout changes. Scrolling away releases follow, including when reading down from a transcript displaced far from the bottom.

#### Reopen long conversations faster

- Recent messages load first, with **Load earlier messages** for older history and a private local cache for quicker reopening.
- Search, pins, the message rail and links load the history they need. Cached approvals, questions and queued sends wait for authoritative synchronization. Paging does not truncate saved history or exports; unavailable browser storage falls back to normal loading.
- The message rail mounts only the visible range, discovery avoids duplicated retry budgets, and very large code blocks use the existing full-text fallback above 250,000 characters. Find, Copy code and wrapping remain available.
- Eligible streaming text deltas are batched before durable persistence. Control events and ownership changes flush first, and failure propagation and cancellation remain intact. This is not a claim of universal app or model-generation speedup.

#### Stop also pauses your queued follow-ups

- Queued messages stay put after Stop, errors and usage limits. **Resume** continues them when ready, and the pause survives reload.
- Manual plan sends and Steer preserve queued items until dispatch succeeds. An older rate-limit event does not pause an unrelated turn. Draft edits, attachments and accepted sends remain recoverable during new-thread navigation and synchronization.

#### Branch and review on your terms

- Provider session forks respect the selected message. Each chat remembers its own stacked or split diff layout, with a searchable **Diff layout** default in Settings.
- Checkpoint initialization survives restart. Undo refuses to overwrite files while another chat edits the same physical workspace; separate worktrees remain independent.
- Detached repositories display **Detached HEAD**. Automatic branch publication releases the local mutation lock before waiting for the remote, and internal checkpoint patches bypass text converters.

#### Claude resumes without an unexpected review

- Long-idle resume review is off by default, matching the embedded Claude Code behavior. Enable **Ask before resuming a long idle session** under Providers to choose a summary or full-session resume for large idle contexts.
- Agent and automation sends are not held for this personal review; compaction or a model switch alone does not trigger it. **Don't ask me again** sends as-is and disables the setting.
- The Claude Agent SDK is updated, with clearer account-verification and cloud-credential failures.

### Fixed

#### More dependable provider sessions

- OpenCode v2 reconnects retain stable text/reasoning identity instead of duplicating the reply; completed readable reasoning remains in the work log. Installation-only status explains that OpenCode manages authentication.
- Pi has a bounded 20-second first health probe, retains usable status across transient timeouts and normalizes custom tool titles. Stale provider-health snapshots cannot replace newer results.
- Claude reports whether requested Fast mode is serving, unavailable or cooling down. Oh My Pi preserves explicit real-model choices and hides synthetic roles. Droid custom answers use its expected protocol, and Cursor prompt usage reaches Profile totals.
- Antigravity reports quota and OAuth failures accurately, chooses effort from discovered capabilities, bounds retained diagnostics and awaits helper teardown. An exact benign post-response timeout settles only an already-complete response with no pending work.
- Nested Codex instances rebuild their own gateway endpoint while preserving user TOML and verified source-account identity. Windows command resolution prefers spawn-safe candidates, avoids implicit launch-directory lookup for bare commands and resolves explicitly relative commands from their launch directory. Nushell login environment capture uses native syntax.

#### Reliable reconnects, stops and recovery

- Socket recovery restores subscriptions without automatically replaying requests. Uncertain delivery stays uncertain; recovery budgets and the circuit breaker prevent endless retry loops.
- Provider reconciliation distinguishes abandoned starts from live connecting adapters and advancing assistant messages. Retired generations can settle only the bindings they still own.
- Snapshot/replay ordering retains settled messages, turn ownership, buffered text and late image results. Restarted or stopped turns finalize their remaining streaming messages, and stale requests no longer lock the composer.
- Reconciled quarantine banners clear without overwriting unrelated errors or live state. Completed External MCP tasks release capacity after idle-session updates and restart.
- Usage totals retain native-session attribution and Claude child usage not already covered by a valid parent result. Beta imports keep installation-local environment identity and device ownership.

#### Everyday workspace polish

- Composer panels share the input outline and keep the transcript readable on glass. Light terminals have stronger text contrast, linked right-to-left text keeps its direction and wide voice waveforms fill the track.
- The context meter is a steadier gauge; Create project works in the browser. Activity rows prioritize project folder names over branches and reveal the selected chat without taking composer focus or overriding subsequent reader scrolling.
- Open or working chats stay out of Drafts, and Home restore targets exclude Hub workers. Hidden browser panels release stale bounds so native pages do not reappear over the chat.
- Changing an idle chat's access mode saves the choice without starting its provider or expanding finished work. Saved access mode survives provider-capability loading; the permission menu closes after selection.
- Shared TypeScript preparation is serialized to avoid concurrent compiler patch writes. The keyboard shortcut reference matches current commands and platform/focus conditions.
- The configurable per-pairing External MCP task-capacity proposal was reverted; it is not included in this release.

### Verification

- Publication is gated on full workspace tests, all three server shards and qualified native packaging for the exact tagged release candidate. Local and PR checks below do not substitute for those gates.
- Hubs promotion: Node 24.13.1 / Bun 1.4.2; format, lint and all seven workspace typechecks passed. 214 server tests passed with Stable desktop identity, plus 89 web tests, 14 policy tests, 31 Chromium cases and 59 documentation tests. Marketing production build passed.
- The first promotion CI exposed two outdated Beta-only test expectations: the Stable tour final slide and the disabled-Hubs automation error. The correction retains persistence, recovery and permission assertions; all 133 automation tests and all 10 tour Chromium tests passed locally. The corrected PR passed the complete application CI and strict marketing suite on `9856eb77e93086859e346fbc5dba14fccb0e901e` (runs `38164469869` and `38164469919`).
- Release inputs: format, lint (887 existing warnings, zero errors), seven workspace typechecks, release smoke, Windows runtime boundary, migration lineage and six What's New tests passed locally.
- Local checks and component fixtures do not establish credentialed live-provider operation, signed/notarized installers, manual installation, installed-app upgrades or Windows browser-download behavior.

## 1.0.2-beta.1 — 2026-10-11

**A Beta focused on readable parallel work, safer queued messages and faster recovery of long conversations.**

These notes audit **259 commits**, including merges, from **v1.0.1** through feature head `fa8aa49e14855999c37315dd4c6dcab34efbdf58`. Beta upgraders also receive the features shipped in 1.0.1: OpenCode v2, multi-folder projects, Tasks, message search, independent dock terminals and macOS keep-awake controls; see the entry below. Hubs and diagnostics remain Beta-only. Stable and Beta retain separate identities, data homes and update feeds.

### Added

#### Follow subagents without losing the conversation

- Claude and Codex child agents now have their own conversations, with compact launch cards and a roster in Environment and the right dock.
- Inspect each brief, current step, elapsed time and result; open, message, background or stop supported runs. Nested and repeated invocations keep their own identity. Background results remain visible after the parent finishes; stopped work is shown as stopped rather than completed.

#### Ask your agent to maintain Tasks

- Supported agent sessions can create, list and update the to-dos in your Tasks list directly from a chat.
- Set notes, priority, due date and project, mark a to-do complete or reopen it. Retried creates use a request ID to avoid duplicates. These tools maintain the list; they do not dispatch the to-do to an agent. Synara permissions still apply.

#### Resolve Hub worker approvals in one place

- In Synara Beta, pending worker approvals appear above the coordinator composer, with links to the worker conversation.
- Approve once, allow the session when supported, decline or cancel the worker turn. Answering in either conversation clears the request in both. Only you can approve; the coordinator has no approval tool. Queued Hub tasks inherit the coordinator access mode unless explicitly overridden.

### Changed

#### A clearer record of each turn

- Turn headers and compact work groups make long conversations easier to scan, including interrupted turns and background tasks.
- Claude Monitor wake-ups appear as compact disclosures. Tool groups use clearer action summaries and icons, while assistant text and activity retain their chronological order. Live follow survives layout changes and thread switches; scrolling away keeps you in control.

#### Reopen long conversations faster

- Recent messages load first, with Load earlier messages for older history and a private local cache for quicker reopening.
- Search, pinned messages and message links load the pages they need. Cached approvals, questions and queued sends wait for authoritative synchronization. Paging does not truncate saved history or exports; unavailable browser storage falls back to normal loading.

#### Stop also pauses your queued follow-ups

- Queued messages stay put after you stop a turn, encounter an error or hit a usage limit.
- Use Resume when you are ready. The pause survives reload, and an older rate-limit event does not pause an unrelated turn. Draft edits, attachments and failed sends remain recoverable instead of disappearing during thread creation or synchronization.

#### Branch from the message you chose

- Provider session forks now respect the selected message, and each chat remembers its own stacked or split diff layout.
- Choose a default Diff layout in Settings without overwriting existing chat choices. Checkpoint initialization survives restart; Undo refuses to run while another chat is editing the same workspace. Detached Git status and automatic branch publication are handled more reliably.

### Fixed

#### More dependable provider sessions

- OpenCode v2 reconnects avoid duplicate text, Pi gets more time for its first startup, and Claude shows whether Fast mode is actually serving.
- Oh My Pi preserves explicit model choices and hides internal roles. Droid custom answers, Cursor prompt usage and completed OpenCode reasoning are retained. Antigravity preserves quota and OAuth failures, bounds helper cleanup and chooses effort only from discovered capabilities.

#### Small improvements throughout the workspace

- Readable chat tabs, higher-contrast light terminals, a steadier context gauge and a working Create project action improve everyday use.
- Composer panels no longer cover the transcript on glass. Linked right-to-left text keeps its direction, the voice waveform fills wide tracks, and hidden browser panels release stale bounds. Beta data import preserves this installation’s runtime identity.

- Usage totals retain native-session attribution and Claude child usage not covered by the parent.
- Assistant text persistence batches durable deltas and retains failure propagation. Snapshot and replay ordering preserve settled messages, turn ownership and late image results; stale requests no longer lock the composer.
- Windows relative executable paths resolve from the launch directory, login-shell capture supports Nushell, and Git checkpoint patches bypass text converters. These source changes still require packaged platform qualification.
- The proposed editable per-pairing External MCP task capacity was reverted and is not included in this release.

### Verification

- Passed locally on Node 24.21.0 / Bun 1.4.2: format, lint, typecheck, release smoke, full build, Windows runtime boundary and migration lineage.
- The full workspace test run completed with **16,431 passed / 38 skipped / 3 failed**. All failures were in `apps/server/src/orchestration/Layers/threadHistoryWindow.test.ts`: “retains the background ownership patch before a partial task update”, “retains the last unfinished prior-turn task list”, and “retains launch identity after completion so a settled workflow remains resumable”. The test imports used encoded URL pathnames on a checkout containing spaces. `fileURLToPath` corrects the imports; all three targeted reruns and all nine tests in the affected file passed. The full workspace run has not been repeated after this test-only fix.
- Chromium: **28 chat-follow tests passed**, including the thread-switch case that had failed in the preceding CI run. The first component run on the external-volume path failed five fixture cases and could not import the diff suite. An identical APFS copy passed **all 13 tests** across SubagentRunCard, SubagentsDockPane and DiffPanel without changing their source or fixtures.
- Documentation: 59 website tests and 58 marketing tests passed, including navigation and integrity checks; website lint and production build passed. Link scripts passed with Bun: **52/52** website and **53/53** marketing URLs. The npm/Node link command failed on this host’s CA trust; the initial marketing link run also had three transient timeouts. No TLS checks were disabled.
- The first local battery was obstructed by untracked AppleDouble metadata; quarantining those files allowed checks to run. Next’s generated cache required a fresh rebuild on the external disk.
- Update policy resolves to Beta: prerelease=true, make_latest=false, mirror_to_stable_channel=false.
- Windows publication must use the version-scoped unsigned exception for 1.0.2-beta.1 and still pass packaging, provenance, startup smoke and Defender scanning.
- Local tests do not establish live-provider operation, signed/notarized packaging, installed-app upgrades or Windows 11 browser-download qualification.

## 1.0.1 — 2026-10-08

### Added

#### OpenCode v2

- Connect the new OpenCode v2 runtime while retaining support for existing v1 servers.
- Synara detects the server API before sending work and uses the v2 client for models, agents, sessions, streaming, approvals, attachments, forks, rollback and compaction. Keep your OpenCode account and data when migrating. Standard questions appear in Synara; complex forms must be completed in OpenCode. Task-scoped MCP readiness is checked after registration.

#### Multiple folders in one project

- Bring a frontend, API and shared package together under one project and let the agent work across them.
- Choose Source folders when creating a project, mark one as Primary and remove folders you do not need. Multi-folder chats currently require Local mode and Codex or Claude. The folder set is fixed at creation; Git actions, checkpoints and file undo cover the primary folder only. Review and recover extra-folder edits separately.

#### Tasks comes to Stable

- Keep to-dos in one list, plan your day in Inbox and hand a task to an agent when you are ready.
- Edit notes, due dates, priority and project, then choose a provider, model, effort and a new or existing chat. Task cards show activity, questions, approvals and the reply to review. The List / Kanban switch keeps the board accessible, and a one-time navigation tip introduces Tasks. Older servers without Tasks fall back to Kanban. Hubs remain Beta-only.

#### Find more with workspace search

- Find conversations by their saved message text and use the palette to navigate or open settings.
- Search reaches persisted messages beyond recently opened chats. File results resolve safely in the active workspace, including registered dot-folder projects. Workspace search can be remapped; shortcuts update without restarting and respect focused terminals.

#### Faster chat actions

- Archive, snooze or mark the active chat unread with configurable shortcuts, and undo marking a chat done.
- Thread hovers preview unsent drafts and show current effort and Fast status. Mark all read includes chats returned from snooze. New threads created from older drafts receive their creation time instead of the draft’s old timestamp.

#### Keep answered questions in view

- Review the agent’s questions and your answers directly in the conversation after responding.
- Press Enter to submit async answers. Stale provider questions settle durably so they do not keep chats waiting. Queued follow-ups explain their available actions, and a Claude tip explains model changes and provider handoffs during active work.

#### Understand interrupted work

- Open and copy thread error details, with failed-turn feedback preserved after recovery.
- Reconnecting and busy waits use clearer shared status messages. Server stalls are monitored, buffering stays enabled during turns longer than an hour, and uncertain side effects are not silently replayed as successes.

#### Choose accounts for usage rings

- Pick the individual provider accounts shown in your sidebar usage rings.
- Saved account-ring choices survive temporarily disabling an account. Disabled providers disappear from selectable surfaces; existing conversations remain readable. Provider sign-in actions open the appropriate settings, and OMP’s internal roles stay out of the model picker.

#### Keep macOS awake during agent work

- Choose whether to keep your Mac awake during agent work, all the time, or let it sleep normally.
- Settings → System → Keep computer awake offers On, Agent and Off, defaulting to Off. Agent mode releases its assertion when work settles, its owner exits or the thread is deleted; On mode lasts while the server runs. This macOS feature does not promise uninterrupted work with the lid closed.

#### Keep your place in files and tabs

- File tabs remember scroll positions, the dock Explorer keeps its open file across chat switches, and horizontal tabs scroll with the mouse wheel.
- Markdown file previews render sanitized HTML, assistant line breaks display correctly, and Markdown follows the selected typography. Project actions open in right-side terminals; independent right-dock terminal tabs are restored.

### Changed

#### Clearer Git and Kanban actions

- Move Kanban cards from their context menu and use the full commit-and-push row to open Git actions.
- Git dialogs expose their submit shortcuts. Branch creation avoids namespace conflicts, and checkpoint scheduling reserves capacity for reads and checkpoint work so unrelated workspaces can advance.

#### Synara is the default theme

- New installations start with the complete Synara theme, including the matching controls and workspace styling.
- Sidebar text stays sharp after display changes, metadata glyphs align consistently, and the chat header remains draggable. Embedded browser pages retain an opaque backdrop and remain visible behind toolbar overlays.

#### Smoother streaming and recovery

- Reduce idle chat repaints, reopen flicker and repeated provider work while keeping cancellation and recovery predictable.
- Codex reuses its app-server between completed turns. Independent sessions and workspaces no longer share avoidable delivery bottlenecks; replaceable progress is coalesced. Transcript follow survives turn updates, detached readers keep their place, and Pi assistant messages split at message_end.

### Fixed

#### More reliable provider setup

- Provider discovery checks executable candidates and uses the selected account’s environment.
- Claude accounts remain isolated without breaking macOS Keychain, idle Claude sessions stop without waiting for the SDK stream, and Computer-off restarts wait for background work. Codex continuation imports retain verified generation, managed MCP names avoid collisions, and provider usage works with compatible fake-IP DNS responses. Health probes do not auto-update Antigravity.

#### More predictable startup and shutdown

- Startup announcements appear one at a time, application bundles reveal in Finder, and signal-driven shutdown skips the interactive quit confirmation.
- Keybindings load and watch at startup, with recovery after transient filesystem failures. Skills read YAML frontmatter correctly. Beta upload diagnostics and writable-failure handling are hardened with privacy redaction; Stable does not send Beta diagnostics.

- Preserve resumed transcripts atomically, avoid sidebar feedback clicks leaking into dialogs, and place automatic handoffs before their triggering message.
- Keep browser and dock controls usable across overlays, window dragging and provider changes.

### Verification

- Passed on Node 24 / Bun 1.4.2: format, lint, typecheck, release smoke, full build, Windows runtime boundary and migration lineage.
- Full workspace suite: **15,860 passed / 37 skipped**, across six successful workspace test tasks.
- Chromium: **16 passed** across multi-folder creation, Tasks navigation hints and Stable Inbox.
- Main CI passed after rerunning one intermittent sidebar-hover geometry failure; all four variants passed locally without source changes.
- The first two publication attempts stopped before the Windows scan on the local signature timestamp. The installed version already matched Microsoft's current release. Qualification now retries MMPC, then independently verifies the current Microsoft version when the local timestamp exceeds 24 hours. Missing, stale or unverified signatures still fail closed; protection, exclusions, detections and unchanged-artifact checks remain mandatory.
- [Publication passed](https://github.com/Emanuele-web04/synara/actions/runs/37850836681) on all four platforms from `f44ce959bdeedf5e2dfe117d362ef4e08386b3c3`: signed/notarized macOS, Linux and unsigned Windows packaging, provenance, packaged startup smoke and Defender. The Windows scan used definitions `1.459.629.0`, found no threats and preserved the installer bytes.
- [v1.0.1](https://github.com/Emanuele-web04/synara/releases/tag/v1.0.1) is public GitHub Latest with 18 assets. All four installer URLs return HTTP 200; the six updater manifests report 1.0.1 and the `synara` aliases match `latest` byte-for-byte. Public installer digests match their source provenance; historical v0.4.2 is unchanged. A manual installed-app upgrade and Windows 11 browser-download qualification have not been exercised locally.
- Multi-folder projects support Local mode with Codex and Claude; extra folders are outside primary-folder Git checkpoints and undo. Hubs and diagnostics remain Beta-only.
- Windows x64 is published unsigned under the version-scoped release policy; packaging, provenance, startup smoke and Defender checks remain required.

## Unreleased

## [1.0.0] — 2026-10-05

**Synara 1.0.0 Stable brings the new workspace rail, multi-account providers, same-chat handoffs, Inbox, Auto-fix CI and Oh My Pi to Stable, together with a redesigned review workflow and one terminal pane per chat.**

This release inventory covers **496 commits**, including merges, from **v0.9.2** through **84daea248**. It incorporates the Stable-compatible changes introduced in **v1.0.0-beta.1** and all subsequent fixes through the terminal workspace merge. **Hubs and the Tasks to-do list remain Beta-only.** Stable keeps Kanban and does not send Beta diagnostics. Stable and Beta retain separate apps, data homes and update feeds; Beta data is not copied back to Stable.

Computer Use, Kanban, remote connections, project import, split panes, dictation and separate-chat provider handoffs existed before this release; the notes below describe their improvements. Oh My Pi was previously available in Beta and is new to Stable.

### Added

#### Oh My Pi comes to Stable

- Use Oh My Pi alongside the other supported coding providers in the Stable app.
- Configure the OMP executable and account, sign in from provider settings, and choose models and thinking levels advertised by its runtime.

#### Inbox: today’s work in one place

- See running work, chats needing attention, review requests and a daily activity recap together in Stable.
- Recaps use recorded local activity and provider-attributed usage; missing token data is not invented. The separate Tasks to-do list and its Inbox task cards remain Beta-only.

#### Multiple accounts, clearly separated

- Name and configure several accounts for the same provider, then choose their models from separate account tabs.
- Provider account identity follows supported sessions, favorites, imports, forks and handoffs. Account-specific executable paths and environments keep the selected runtime and credentials together.

#### Sign in from provider settings

- Open the provider’s native sign-in flow in a managed terminal using the selected account’s environment.
- Check authentication before starting work. Pi and Oh My Pi offer their native login choices; external OpenCode servers must be authenticated on that server. Closing sign-in stops its terminal; credentials already saved by the provider remain.

#### Usage for each account

- Inspect usage for the active provider’s enabled accounts separately, and choose which provider rings appear in the rail.
- Expandable details keep the compact view readable. Codex credits are shown as a count, not a dollar amount; missing account telemetry is not replaced with another account’s figures.

#### Change providers in the same conversation

- Use the model picker to hand work to another supported provider while keeping the same chat and workspace context.
- A divider marks the handoff. Available targets respect account availability, and a failed transition is not reported as successful. Separate-thread handoff remains available.

#### A new workspace rail

- Reach chats, projects and tools from a compact rail with independently customizable destinations.
- Show, hide and reorder rail items; Customize also works on narrow screens. The update action shows download progress, and project icons make recent work easier to recognize.

#### Keep open chats within reach

- Move between open-chat tabs with provider icons, running indicators, context menus and keyboard navigation.
- Tabs remain scrollable while chats stream. Unsent new-chat drafts stay out of the strip. Use Cmd+Ctrl+Left/Right on macOS, or Ctrl+PageUp/PageDown on other platforms outside terminal focus. Small vertical trackpad movements no longer reorder tabs.

#### Make the workspace yours

- Choose full-window or sidebar-only translucency, adjust blur and opacity, and customize project names, icons and colors.
- Supported desktop materials extend through editors, panes, menus and dialogs. The new appearance default uses full-window glass, blur 64 and 90% opacity. Native glass availability depends on platform.

#### Auto-fix CI

- Enable Auto-fix CI on an open pull request to ask its chat to address failing checks.
- This opt-in feature waits for active work, approvals and questions, respects chat permissions, and limits retries. Uncertain dispatch or lack of progress pauses the watcher with an explanation. It does not automatically merge.

#### Snooze a chat until you need it

- Hide a chat from ordinary activity until a preset or custom reminder time, then bring it back automatically.
- Choose 30 minutes, one hour, two hours, tomorrow at 9am or a custom time. Reminders persist across restart; Return now cancels the snooze. Running work continues. Snoozed chats are excluded from inactivity cleanup and are marked seen when opened after returning.

#### Let the message trail follow sound

- On supported macOS desktops, animate the trail from system audio, a selected microphone, or both.
- The opt-in feature uses loudness levels rather than recording audio. System-audio levels require macOS 14.2+; microphone access requires permission. Choose a built-in microphone while using Bluetooth headphones; an unavailable selected device does not silently switch to another input.

#### A tour of what changed

- A feature tour introduces the new workspace, provider accounts and review workflow.
- Synara 1.0.0 is a Stable release. Hubs and the Tasks to-do list remain exclusive to Synara Beta, with separate data and update feeds. Stable does not send Beta diagnostics.

#### Choose how Git changes are written

- Use repository conventions, Conventional Commits or your own instructions for generated commit messages and pull requests.
- Set Source control writing style in Settings → Models & writing. The preference applies across projects and retains your custom instructions when switching styles.

### Changed

#### One terminal pane per chat

- Use a single terminal in the main workspace or right dock, with no nested terminal tabs, groups, splits or bottom drawer.
- Opening it again focuses the existing session. Project actions reuse an idle terminal; busy or unverifiable sessions are protected. Upgrading keeps the last active session and retires old nested sessions only after an idle check. Failed closes leave the terminal usable.

#### Code review, issues and agents together

- Browse pull requests and issues in a redesigned list, inspect details, and discuss the item in a side chat.
- Remember filters and sorting, include merged PRs, preview images fullscreen, and send an item to an agent in the correct project and environment. GitHub links have configurable destinations and their own context menu.

#### A more actionable Kanban board

- Choose an Attention board with Draft, In Progress, Awaiting you and Done columns, or retain Classic.
- See failed, stuck, approval, input and review attention; reorder drafts and send work as a persistent goal. Agents gain eight scoped board tools for durable chat cards. These tools do not expose unsent local drafts or manipulate Tasks to-do records.

#### Send work as a goal

- Start a Kanban task as a persistent goal or set a goal on an existing chat card.
- Long goals are delivered through managed file references instead of being silently truncated. Shared send ownership preserves account choice, attachments and edits when work is dispatched.

#### Smoother split-pane work

- Resize panes continuously, close each pane directly, and spot the focused composer at a glance.
- Chats stay mounted across single/split transitions and rearrangements, preserving the split tree, focus and conversation state. Closing a split keeps the surviving chat; closing the last open tab returns to the unsent draft.

#### Side chats that keep their context

- Side chats inherit the primary workspace, and GitHub discussions stay discoverable across checkouts.
- Choose an inactivity expiry of one hour, 24 hours or never. Idle expired side chats become read-only and release their provider session. Cmd+Option+S toggles Side chat on macOS.

#### Edit shortcuts individually

- Record and edit shortcuts in a searchable command list with conflict handling.
- Shift+Tab cycles the selected model’s supported reasoning effort. Thread menus group related handoff, fork and copy actions into compact submenus.

#### Dictation that fits the conversation

- Use Enter to stop/transcribe or stop/send, and dictate while an agent is working.
- Capture waits for real microphone audio before proceeding. ChatGPT login detection accepts Codex plain-text status; invalid transcription responses produce a useful error.

#### Clearer long-running conversations

- Keep background subagent replies visible and wait for all workers before showing completion.
- Choose whether finished turns fold and whether sending anchors the new message at the top. Wide code blocks scroll horizontally without widening the transcript. Full error, approval, progress and warning details remain available. Clearer thinking and startup icons distinguish activity states. Message navigation stays clear of the text, and batched updates no longer leave overlapping rows.

#### More useful Claude progress

- See provider-supplied reasoning, tool summaries and execution status in the transcript.
- Native compaction waits for initialization; prompt-cache warnings avoid false expiry reports. Account-specific CLI paths are retained when Artifacts is enabled. Cache-recovery answers remain pending through slow compaction, with visible delivery status and retry after failure.

#### Current models without disruptive refreshes

- Model catalogs refresh on demand for the account you are viewing while keeping usable choices visible.
- Interactive requests take priority, actionable failures offer retry, Claude catalog changes follow CLI updates, and OpenCode custom-provider models remain selectable.

#### Better import recovery and history browsing

- Import conversations from supported Codex and Claude accounts with clearer diagnostics, bounded history pages and recovery for interrupted work.
- Original provider context remains in independent session copies. Earlier text loads on demand; historical tools, reasoning and attachments are not reconstructed as live messages. New ordinary chats skip imported-history requests.

#### Less repeated rendering and fetching

- Streaming and typing avoid repeated shell, header and composer work; GitHub reads share a queue and rate-limit pause.
- These are targeted changes, not a universal speed or battery-life claim. PR preparation retains the intended environment and unrelated worktrees; Git failures identify the action that failed.

#### Large Git actions survive reconnects

- Keep long pushes and other Git actions running while Synara reconnects, then resume their progress without launching them twice.
- Git transfer progress remains visible. Recovery requires the same running server; if the result is unavailable after a restart, Synara asks you to check the repository before retrying.

### Fixed

#### Recover message delivery after disconnects

- Synara checks whether an interrupted send was accepted before deciding what happens next.
- Accepted commands are not blindly resent; rejected commands restore the draft. Delivery settlement requires a compatible server. HTTP fallback failures now settle and surface useful errors. Blocked provider delivery now includes the reason when a chat is quarantined, and its unblock action works reliably.

#### More dependable provider sessions

- Recover Codex gateway sessions after watchdog aborts, support current Codex rewind, and retain OpenCode background work.
- Cursor and Droid avoid repeated OAuth prompts, cached Grok login is recognized, and desktop ACP tool proxies start in the correct runtime mode.

#### Small fixes throughout the workspace

- Keep unread chats unread across reloads, preserve drafts while browsing history, and remember Markdown preview per file.
- Browser tabs support middle-click close, address suggestions stay visible and navigation preserves composer focus. Unicode image downloads, deleted-file search results, profile dates, notification clicks and app-icon persistence are corrected. Sidebar hover flicker, native sidebar-toggle hit testing and overflowing side-panel content are fixed.

#### Quieter Windows sessions

- Provider updates handle Windows PATH and stdin correctly, and process cleanup avoids flashing command windows.
- Capture fallback produces valid JSON. Release installers must pass the new Defender scan as well as packaging, provenance and startup checks; Windows installers remain unsigned under the version-scoped release policy.

#### Clearer close and quit confirmation

- Confirm closing the desktop window or quitting Synara, with running work shown before you leave.
- Startup also recovers stale database lock directories that contain only Finder metadata; a live database owner is still protected.

### Verification

- Passed locally with Node 24 and Bun 1.4.2: `bun run fmt:check`, `bun run lint` (842 warnings, zero errors), `bun run typecheck`, `bun run release:smoke`, `bun run build`, and the full `bun run test` suite.
- Full suite: 15,215 tests passed and 37 skipped across six workspace packages; no failing tests or targeted reruns were needed.
- Terminal browser verification: 5 tests passed in `ThreadTerminalPanel.browser.tsx` and `useChatProjectScripts.browser.tsx`.
- Passed `bun run windows-runtime:check` and `bun run migrations:check`.
- Public website: mirrored release notes; audited the full release range; updated Stable/Beta availability, terminal lifecycle and shortcuts, Git writing and reconnect recovery, Claude recovery, navigation and source evidence. Passed `npm run test:docs`, `npm run lint`, and `npm run build`.
- Native packaging, macOS signing/notarization, Windows Defender scanning, startup smoke and public updater assets are checked by the tag publication workflow. Those results were not yet available when this release commit was prepared. Windows publication uses the unsigned exception scoped only to 1.0.0. Local tests do not demonstrate live-provider success or installed-app upgrade behavior.

## [1.0.0-beta.1] — 2026-10-04

**Synara 1.0.0 starts in Beta: a new workspace rail, multi-account providers, Hubs, Tasks, Inbox, same-chat handoffs and a redesigned review workflow.** This is a Beta-only release. Stable remains **0.9.2**; its app, data directory and update feed are unchanged.

This inventory compares the actual **v0.9.2** source with **212dd3bc8**, covering **466 commits**, including merge commits. Follow-up work on features introduced in this range is incorporated into the feature description. Computer Use, Kanban, remote connections, project import, split panes, dictation, provider handoffs and Oh My Pi in Beta already existed in 0.9.2 and are not presented as newly invented features.

### Added

#### Hubs: give larger work a team

- Bring a coordinator and worker agents together around shared instructions, linked projects and a versioned Library in Synara Beta.
- Delegate independent work, preserve the original request and attachments, follow durable work cards and checklists, and receive a combined completion summary. The queue supports 1–8 parallel workers (3 by default), with visible waiting, failure and recovery states. New repository work defaults to isolated worktrees; explicit environment choices are respected.

#### Tasks: a backlog you can hand to an agent

- Create to-dos with notes, priority, project and due date, then start work in a new or existing chat from the task card.
- Choose the Tasks list or Kanban. Follow running, needs-you, review and failed work beside the list. Saved ownership and reconnect reconciliation keep pending edits and uncertain delegation visible.

#### Inbox: today’s work in one place

- See today’s tasks, work needing attention, review requests and an activity recap together.
- Create a task due today, open its card, or return to the full backlog. Recaps use recorded local activity and provider-attributed usage; they do not invent missing token data.

#### Multiple accounts, clearly separated

- Name and configure several accounts for the same provider, then choose their models from separate account tabs.
- Provider account identity follows supported sessions, favorites, imports, forks and handoffs. Account-specific executable paths and environments keep the selected runtime and credentials together.

#### Sign in from provider settings

- Open the provider’s native sign-in flow in a managed terminal using the selected account’s environment.
- Check authentication before starting work. Pi and Oh My Pi offer their native login choices; external OpenCode servers must be authenticated on that server. Closing sign-in stops its terminal; credentials already saved by the provider remain.

#### Usage for each account

- Inspect usage for the active provider’s enabled accounts separately, and choose which provider rings appear in the rail.
- Expandable details keep the compact view readable. Codex credits are shown as a count, not a dollar amount; missing account telemetry is not replaced with another account’s figures.

#### Change providers in the same conversation

- Use the model picker to hand work to another supported provider while keeping the same chat and workspace context.
- A divider marks the handoff. Available targets respect account availability, and a failed transition is not reported as successful. Separate-thread handoff remains available.

#### A new workspace rail

- Reach chats, projects and tools from a compact rail with independently customizable destinations.
- Show, hide and reorder rail items; Customize also works on narrow screens. The update action shows download progress, and project icons make recent work easier to recognize.

#### Keep open chats within reach

- Move between open-chat tabs with provider icons, running indicators, context menus and keyboard navigation.
- Tabs remain scrollable while chats stream. Unsent new-chat drafts stay out of the strip. Use Cmd+Ctrl+Left/Right on macOS, or Ctrl+PageUp/PageDown on other platforms outside terminal focus.

#### Make the workspace yours

- Choose full-window or sidebar-only translucency, adjust blur and opacity, and customize project names, icons and colors.
- Supported desktop materials extend through editors, panes, menus and dialogs. The new appearance default uses full-window glass, blur 64 and 90% opacity. Native glass availability depends on platform.

#### Auto-fix CI

- Enable Auto-fix CI on an open pull request to ask its chat to address failing checks.
- This opt-in Beta feature waits for active work, approvals and questions, respects chat permissions, and limits retries. Uncertain dispatch or lack of progress pauses the watcher with an explanation. It does not automatically merge.

#### Snooze a chat until you need it

- Hide a chat from ordinary activity until a preset or custom reminder time, then bring it back automatically.
- Choose 30 minutes, one hour, two hours, tomorrow at 9am or a custom time. Reminders persist across restart; Return now cancels the snooze. Running work continues.

#### Let the message trail follow sound

- On supported macOS desktops, animate the trail from system audio, a selected microphone, or both.
- The opt-in feature uses loudness levels rather than recording audio. System-audio levels require macOS 14.2+; microphone access requires permission. Choose a built-in microphone while using Bluetooth headphones; an unavailable selected device does not silently switch to another input.

#### A tour of what changed

- A feature tour introduces the new workspace, accounts, review workflow and Beta Hubs.
- This release is Synara Beta only. Stable remains at 0.9.2 with its existing features and separate data and update feed.

### Changed

#### Code review, issues and agents together

- Browse pull requests and issues in a redesigned list, inspect details, and discuss the item in a side chat.
- Remember filters and sorting, include merged PRs, preview images fullscreen, and send an item to an agent in the correct project and environment. GitHub links have configurable destinations and their own context menu.

#### A more actionable Kanban board

- Choose an Attention board with Draft, In Progress, Awaiting you and Done columns, or retain Classic.
- See failed, stuck, approval, input and review attention; reorder drafts and send work as a persistent goal. Agents gain eight scoped board tools for durable chat cards. These tools do not expose unsent local drafts or manipulate Tasks to-do records.

#### Send work as a goal

- Start a Kanban task as a persistent goal or set a goal on an existing chat card.
- Long goals are delivered through managed file references instead of being silently truncated. Shared send ownership preserves account choice, attachments and edits when work is dispatched.

#### Smoother split-pane work

- Resize panes continuously, close each pane directly, and spot the focused composer at a glance.
- Chats stay mounted across single/split transitions and rearrangements, preserving the split tree, focus and conversation state.

#### Side chats that keep their context

- Side chats inherit the primary workspace, and GitHub discussions stay discoverable across checkouts.
- Choose an inactivity expiry of one hour, 24 hours or never. Idle expired side chats become read-only and release their provider session. Cmd+Option+S toggles Side chat on macOS.

#### Edit shortcuts individually

- Record and edit shortcuts in a searchable command list with conflict handling.
- Shift+Tab cycles the selected model’s supported reasoning effort. Thread menus group related handoff, fork and copy actions into compact submenus.

#### Dictation that fits the conversation

- Use Enter to stop/transcribe or stop/send, and dictate while an agent is working.
- Capture waits for real microphone audio before proceeding.

#### Clearer long-running conversations

- Keep background subagent replies visible and wait for all workers before showing completion.
- Choose whether finished turns fold and whether sending anchors the new message at the top. Wide code blocks scroll horizontally without widening the transcript. Full error, approval, progress and warning details remain available.

#### More useful Claude progress

- See provider-supplied reasoning, tool summaries and execution status in the transcript.
- Native compaction waits for initialization; prompt-cache warnings avoid false expiry reports. Account-specific CLI paths are retained when Artifacts is enabled.

#### Current models without disruptive refreshes

- Model catalogs refresh on demand for the account you are viewing while keeping usable choices visible.
- Interactive requests take priority, actionable failures offer retry, Claude catalog changes follow CLI updates, and OpenCode custom-provider models remain selectable.

#### Better import recovery and history browsing

- Import conversations from supported Codex and Claude accounts with clearer diagnostics, bounded history pages and recovery for interrupted work.
- Original provider context remains in independent session copies. Earlier text loads on demand; historical tools, reasoning and attachments are not reconstructed as live messages. New ordinary chats skip imported-history requests.

#### Recover message delivery after disconnects

- Synara checks whether an interrupted send was accepted before deciding what happens next.
- Accepted commands are not blindly resent; rejected commands restore the draft. Delivery settlement requires a compatible server. HTTP fallback failures now settle and surface useful errors.

#### More dependable provider sessions

- Recover Codex gateway sessions after watchdog aborts, support current Codex rewind, and retain OpenCode background work.
- Cursor and Droid avoid repeated OAuth prompts, cached Grok login is recognized, and desktop ACP tool proxies start in the correct runtime mode.

#### Less repeated rendering and fetching

- Streaming and typing avoid repeated shell, header and composer work; GitHub reads share a queue and rate-limit pause.
- These are targeted changes, not a universal speed or battery-life claim. PR preparation retains the intended environment and unrelated worktrees; Git failures identify the action that failed.

### Fixed

#### Conversations and navigation

- Keep unread conversations unread across reloads.
- Preserve typed composer drafts when pressing Up to browse message history.
- Keep each background subagent's reply visible and show waiting status until all background work has settled; notify once the whole turn finishes.
- Keep wide code blocks horizontally scrollable without widening the vertical transcript.
- Preserve full task errors, failure summaries, approval details, tool progress and runtime warnings for the details shown in the UI.
- Keep the active older chat visible in Activity and preserve Activity scope through Settings and Home navigation.
- Mark conversations with unsent drafts in the sidebar.
- Open the latest remaining chat after archiving or finishing the current one.
- Keep chats mounted, preserve pane order and focus, and retain the split tree through single/split transitions and standalone Side chat navigation.
- Keep new tasks visible and new-chat shortcuts available while worktree setup runs; preserve the focused draft plan.
- Keep task worktrees out of the ordinary project picker.
- Keep Side chats in the primary chat's actual branch/workspace context and open their PR links where they are visible.

#### Providers, imports and delivery

- Wait for Claude initialization before starting native compaction.
- Avoid false Claude prompt-cache expiry warnings; cache observations still do not guarantee provider billing or a future hit.
- Retain account-specific Claude binary paths when Artifacts is enabled.
- Recover retired Codex gateway sessions after watchdog interruption and resume the saved conversation on the next turn.
- Support current Codex rewind through `thread/revert`, with compatibility for the earlier runtime operation.
- Preserve OpenCode background task restarts and late failures after the parent has settled.
- Keep OpenCode custom-provider models selectable.
- Stop Cursor and Droid from reopening OAuth login on every new session; recognize cached Grok login.
- Launch desktop ACP MCP proxies in Node mode rather than Electron GUI mode.
- Preserve provider attribution when counting token deltas; index turn lookups instead of repeatedly scanning them.
- Scope imported history to imported conversations and back off on capacity failures; ordinary new chats do not make unnecessary history requests.
- Reconcile interrupted imports and uncertain message delivery instead of duplicating accepted work.
- Bound HTTP fallback requests and surface asynchronous UI action failures.

#### GitHub, browser, editor and desktop

- Preserve the intended project environment when preparing PR chats, reuse the appropriate branch checkout and leave unrelated fork worktrees intact.
- Retain associated PRs on chats using a shared checkout.
- Report step-specific Git/authentication errors with the correct action and workspace ownership, including recovery failures.
- Use supplied PR text without unnecessary generation where supported.
- Coordinate GitHub read requests and shared rate-limit pauses.
- Remember Markdown preview mode independently for each file.
- Download local images with non-ASCII filenames correctly and leave deleted tracked files out of workspace search.
- Show the correct day in profile heatmap tooltips.
- Close browser tabs with middle-click, keep address suggestions above native content, preserve composer focus during navigation and expose the full resize handle.
- Retain notification objects so native notification clicks reach their handler.
- Preserve macOS app-icon selection across quitting; support the Beta icon throughout settings and packaging.
- Keep the installed Beta app when moving a replacement into place fails.
- Correct floating menu/dialog backing, light-theme contrast and diff tints on translucent surfaces; respect reduced motion in panel transitions.
- Keep collapsed top-center notifications behind the foremost toast and style disabled dismiss controls correctly.
- Refresh folder, browser, diff and steering icons and compact toolbar action groups.
- Index previously missing settings in search and keep provider usage details compact.
- Handle Windows PATH casing and stdin during provider updates; emit valid JSON from the Windows capture fallback and hide command windows during process teardown.
- Defer pinned DNS lookup completion until TLS/error listeners are ready, preserving address validation.

### Release and platform notes

- **Beta only:** Hubs, Tasks, Inbox and Auto-fix CI remain gated out of Stable. This publication does not promote them or ship a Stable build. Source-main availability is not the same as availability in the published Stable 0.9.2 app.
- **Computer Use is not new in this release:** it remains a macOS beta capability; this inventory does not claim new Linux/Windows Computer Use support.
- **Audio trail:** opt-in on supported macOS desktops, with relevant audio permissions and level-only visual feedback.
- **Provider support:** model catalogs, authentication, usage and handoff destinations depend on the installed provider runtime and account. Source checks and mocks do not certify all live provider combinations.
- **Windows:** unsigned installers use the exact version-scoped exception. Packaging, provenance, isolated startup smoke and the new Microsoft Defender installer scan remain mandatory. A hosted scan is not a guarantee about every user's antivirus result.
- **Beta diagnostics:** existing diagnostics gain better crash/error classification. Reports have no expiry policy; crash dumps can contain process memory. Stable does not send Beta diagnostics.
- **Performance:** reduced repeated rendering and fetching are targeted improvements. No universal speedup, total-memory reduction or battery-life percentage is claimed.

### Verification

- Local checks passed with Node 24.13.1 and Bun 1.4.2: `bun run fmt:check`, `bun run lint`, `bun run typecheck`, `bun run release:smoke`, `bun run build`, `bun run test`, `bun run windows-runtime:check`, and `bun run migrations:check`.
- Full local suite: **1,241 test files passed; 15,081 tests passed and 37 skipped**. No failing tests or targeted-rerun substitutions. Lint reports 839 existing warnings and zero errors.
- Source commit `212dd3bc8` also passed GitHub CI, including browser suites and Windows process regression. This is distinct from packaged release qualification.
- Website: 58 documentation tests, documentation integrity, lint, production build, and all 52 checked external URLs passed locally.
- Installer packaging, macOS signing/notarization, Windows Defender/provenance/startup smoke and public publication are verified by the release workflow, separately from these local checks. Live provider/account authentication, physical audio permissions and every remote/device combination were not exercised by this release audit.

[Complete commit comparison](https://github.com/Emanuele-web04/synara/compare/v0.9.2...v1.0.0-beta.1).

## [0.9.2] — 2026-09-25

**Synara Beta arrives as a separate app, with Oh My Pi available in Beta.** The stable 0.9.2 release includes the path to try Beta and a set of reliability fixes; OMP remains gated off in Stable.

### Added

- Synara Beta installs alongside Stable with its own data directory and update feed. On macOS, Settings → General can install Beta, copy Stable data into it after confirmation, or open an existing Beta installation. Beta sends crash reports and anonymous usage statistics; Stable does not.
- Oh My Pi (OMP) is an ACP provider in Synara Beta only. It discovers models with `omp models --json` and presents the thinking levels reported for each model. Install and authenticate OMP separately; runtime and account configuration determine availability.
- Computer asks for approval before bringing a Mac app into the foreground.

### Changed

- Provider model catalogs persist across server restarts. Completed managed worktrees receive more complete cleanup.
- Release packaging can prepare verified native artifacts in parallel with release gates; this does not change the runtime performance claim.

### Fixed

- OMP sessions retain their provider identity instead of appearing as Codex.
- Project import handles unavailable Windows paths and blank provider path settings.
- Restarted tasks settle orphaned turns before background work resumes; Windows editor detection no longer blocks the event loop.
- Fresh installs recognize already installed agents, transcript following resets when switching tasks, and the desktop update button stays latched during quit and install.
- Approval cards redact credential parameters, Claude session grants stay scoped to command and file prompts, and stdio/frame transports handle failures more reliably.

### Verification

- Local `bun run fmt:check`, `bun run lint`, `bun run typecheck`, `bun run release:smoke`, `bun run build`, `bun run test`, `bun run windows-runtime:check`, and `bun run migrations:check` passed with Node 24.21.0 and Bun 1.4.2. The full suite passed 12,972 tests with 36 skipped; lint reported warnings but no errors.
- The public website's documentation tests, external-link check, lint, and build passed locally. Packaged Windows startup, provenance, macOS signing/notarization, and public publication remain release-workflow gates.

[Complete commit comparison](https://github.com/Emanuele-web04/synara/compare/v0.9.1...v0.9.2).

## [0.9.1] — 2026-09-22

**Claude Opus 5.5 and GPT-6 Sol & Luna lead this update.** Synara also improves environment task navigation, OpenCode startup, Computer control feedback, and several high-frequency paths.

### Added

- Claude Opus 5.5 model name, aliases, and capability mapping. The `opus` alias now resolves to 5.5; existing explicit choices remain intact.
- GPT-6 Sol and Luna in the Codex model catalog with their supported reasoning ranges. Astra remains the chat default; Luna now defaults for Git writing, including saved settings that used the previous Luna default. Runtime and account access govern availability.
- Direct rows for tasks created from an environment, with navigation and status in the Environment panel.

### Changed

- Computer control preview, targeting, settings, and model picker feedback are clearer.
- Streaming, projection, provider, Git, simulator, sidebar, and review paths avoid redundant work. Desktop release builds reuse verified portable output and Cua driver caches where possible. These targeted changes do not establish a universal speed or battery-life percentage.
- Long-running durations include day units, and model favorites and active-task deletion behave more consistently.

### Fixed

- OpenCode managed sessions retain the legacy engine required for thread-scoped tools. Binary discovery covers common installation locations and startup reports unsupported 2.x-only CLIs clearly.
- Windows credential-reader cold compilation has more time before its bounded timeout, addressing a CI regression seen on the release base.
- Computer settings no longer offer macOS permission setup on an unsupported local platform.
- Bounded thread mention reads retain the omitted-older-messages count. Marketing installer counts use a daily computed cache without repeated browser polling.

### Verification

- Local formatting, lint, typecheck, release smoke, app and marketing builds, Windows source-boundary check, and the full Bun test suite passed using pinned Node 24.13.1 and Bun 1.4.2. The full-suite run at the preceding CI-qualified head passed 14,797 tests after the test timing fixes. An initial run under Node 26 failed 33 web tests because that Node build did not provide usable `localStorage`; the pinned-runtime rerun passed.
- The two browser cases that failed on the pre-release main CI run were rerun directly: the chat anchor case passed and the Computer settings case reproduced, was fixed, then passed. The Windows CI credential-reader test hit its previous 10-second timeout; the first 0.9.1 CI run passed it after the timeout increase.
- The first 0.9.1 CI run also passed those browser cases but exposed a model-cycle ordering regression. Astra was restored to the first catalog position, and the exact failed browser case passed locally.
- The next 0.9.1 CI run exposed an ACP replay test with a quiet window shorter than loaded-runner timer drift. Its focused case passed after widening that test policy. A separate desktop test now uses its existing event barrier to wait for the mock driver's observation; its focused case and the final full suite passed locally.
- Exact-head CI then passed. The first tag release failed before Windows packaging because GNU tar treated the absolute `D:` archive path as a remote host. The importer now runs tar from the artifact directory with a relative archive name; its focused import test passed. Focused model, settings, Git contract, and web settings tests passed after changing the Git-writing default to GPT-6 Luna. Formatting, lint, typecheck, and release smoke passed again. Full release workflow validation remains pending on the corrected tag.
- Public website documentation checks, lint and build passed locally. Windows packaging, startup smoke, provenance, and public publication remain unverified until the release workflow succeeds.

[Complete commit comparison](https://github.com/Emanuele-web04/synara/compare/v0.9.0...v0.9.1).

## [0.9.0] — 2026-09-21

**Computer Use arrives in beta, available on macOS only at the moment. Linux is coming soon.** Ask Synara to operate Mac apps and browsers with `/computer-use`, follow the targeted window in a preview, and stop the task from chat. The rest of this release brings project import, richer provider controls, clearer review workflows and many reliability fixes.

### Added

#### Computer Use beta

- Native Mac app inspection and actions, including window targeting, text entry, clicks, scrolling, keyboard shortcuts, menus and text selection, through the bundled Cua driver. App compatibility varies during beta. (#1090, #1227, #1286)
- `/computer-use <task>` activates Computer for one request. Settings → Computer control is a separate opt-in for ordinary turns; an AppSnap attachment does not enable control.
- Shared setup guide for Accessibility, Input Monitoring and Screen Recording, with fresh permission checks, exact-app identity checks and stale-grant recovery guidance. Permission setup leaves the task unsent until the user sends it.
- Background-first native work and isolated headless browser profiles. Bringing an app visibly forward requires explicit user intent; using the same browser executable does not import personal cookies or profile data.
- Task-owned, draggable preview of the addressed window or browser tab, compact/expanded sizing, bounded still fallback and last-frame retention through short gaps. Closing the preview hides it; chat Stop ends the task. Preview frames are local UI feedback, separate from model screenshots.
- Human-readable Computer action chips/cards, scoped task approvals, protected security surfaces, bounded action audit records, fresh-observation checks and physical Escape interruption when Input Monitoring is granted. Escape interrupts current input without disabling future tasks.
- Batches of up to 25 known native steps and on-demand help keep routine workflows compact. Native task targeting permits independent app/window work where the backend can prove isolation; input transactions remain serialized.
- External MCP integrations can request Computer-enabled tasks with the explicit `computer:control` scope; task approval still applies.
- Computer integration across the provider adapters, with explicit readiness checks and task-scoped connections. This is not a claim of live certification of every provider/model/app combination. Linux groundwork and experiments are not advertised as released Linux Computer support.

#### Projects, models and provider features

- Discover and import local Codex and Claude Code projects and conversations: source picker, search, automatic initial selection, archived-session option, per-project destination, progress, stop and retry. Landing-page and first-run entry points make imports discoverable. (#1259, #1271)
- Import frozen provider-session copies while preserving original histories, completed legacy turns and source identity. Relocate missing/moved project folders without losing task context or rewriting the source session. (#1266; 948b3d136)
- Tabbed model picker with starred model-and-effort presets; refreshed Codex model discovery and normalized provider-supported options. (#1252, #1256)
- Claude prompt-cache observations in the UI and local transcript diagnostics: reads, creation, uncached input and persisted evidence, without inventing missing usage or guaranteeing future cache hits. (#1240, #1241)
- Durable review before expensive Claude cache resumptions: continue with full context, compact then send, or cancel. Native compaction completes before releasing the held message; progress and failures remain visible. (#1242, #1243, #1244)
- Optional Claude Artifacts, `/design` and `/slides`, with account/version readiness explanations. Enable in Claude provider settings and start a new session. (#1271)
- Non-blocking Codex question cards, plus cancellation for blocking multiple-choice questions. (#1213, #1285)
- Banked Codex reset display and confirm-gated redemption, with fresh account/usage checks and idempotent retries for uncertain outcomes. (#1246)
- Chat drag-and-drop for composer mentions and pane splits. (#1255)
- Passive completion delivery for eligible Agent Gateway delegated runs, tied to the originating request and durable settled output. (#1276)
- GitHub-style Markdown alerts in chat. (#1273)

### Changed

- Claude context-budget changes safely respect the active session and report the actual runtime budget. (#1260)
- Activity lists follow the latest human message, rather than being reordered by background assistant work. (#1261)
- PR controls expose status-specific actions and pending toasts; PR links appear in chat hover cards. Cached GitHub lookups and reduced badge polling cut repeated requests. (#1257, #1262; 35fe7e31d, b99c9e4c4)
- Tool activity collapses into one live accordion line, keeping the latest human-readable status visible and removing redundant settled PR status rows. (#1274; b58f27381, d715a9164)
- Markdown files default to Preview in the editor. Command palette and recent-view switcher match the file-picker presentation. (#1218, #1248)
- Shared UI font tokens extend user-selected typography across more surfaces; effort controls stay stable during adjustments, import glyph transparency is retained, and browser sizing/composer spacing are refined. (948875954, 3f11b1124, d684f2de4, 33333439c)
- Liquid Glass Mac app icons, updated alternate icons, persistent icon selection and a redesigned Dmgly installer. Default removes custom-icon metadata; pristine release signature verification remains distinct from a customized installed app. (#1247; 6db82819b, e7cd15281)
- Provider settings show setup health and clarify theme activation. Shortcut labels are human-readable, and the keyboard-reference defaults are corrected. (#1249, #1253, #1254)
- Production packaging prunes unused icons/assets and excludes unnecessary source material while retaining required resources and vendored licenses. No universal download-size percentage is claimed. (#1234)
- Hidden presentations avoid unnecessary ticks; streaming reveal avoids stalls; editor updates do less repeated work. Development skips React Compiler in the normal reload path. (#1258, #1208, #1225)
- CI setup/test lanes are streamlined and an Electron energy-proxy benchmark is available. The earlier #1197 optimization was reverted; benchmark infrastructure is not a battery-life claim. (#1202, #1263)
- Native-driver source/provenance and Rust toolchain are pinned in release builds; Canary bootstraps an isolated Rust toolchain and preserves the rustup installer filename. (0567d829c, 92ac55986, 8e873b0d7)
- Repository licensing is explicitly MIT. (9a0d71fe7)

### Fixed

- Editor rows redraw after repeated line insertion, subsequent typing, undo and redo. (#1208)
- Codex resumes without returning duplicate history; mixed MCP transports are configured correctly. (#1066, #1203)
- Stuck provider startup can be stopped and recovered; side chats retain runtime permission choices when created and sent. (#1230, #1205)
- OpenCode uses current server/model metadata; managed Computer sessions require their scoped tool connection to be ready. (#1228; fbb3a5881)
- BetterWright 2.7.3 browser lease migration and lifecycle behavior are completed. (#1233)
- Invalid process signals and captured process identities are guarded during cleanup. Source checks do not by themselves prove packaged Windows teardown. (#1270)
- Profiles include providers with real turns but no token telemetry, preserving unknown usage rather than inventing zero. (#1215)
- Unlinked commit authors remain visible in PR details; PR dedup separators are represented safely. (#1214, #1188)
- Linux desktop zoom shortcuts are handled in the main process. (#1229)
- AppSnap/toast development warnings and temporary-chat hover accent precedence are corrected. (#1226, #1190)
- Computer text is inserted atomically, falls back to the focused field when appropriate, and targets same-process windows more reliably. Background Enter can use the observed field reference. (#1286; 503b97108)
- Computer preview expansion actually enlarges the card; stale native observations, ambiguous focus, driver failures and interrupted input receive bounded recovery instead of silent action replay. (f26bed6ea, 71b29aeae, fbb3a5881)
- Computer permission refresh, driver provisioning, cancellation, ownership and task isolation are hardened. Session startup and teardown preserve failure visibility; no broad live-provider certification is inferred from unit tests. (#1090 and follow-up commits)

### Verification

- Node 24.13.1 and Bun 1.4.2: formatting, lint, typecheck, release smoke, production build, brand identity, Windows runtime-boundary and migration-lineage checks passed. Lint retains existing warnings; it reported no errors.
- Final uncached full suite after frozen-lockfile installation: **1,125 files and 14,686 tests passed; 12 files / 30 tests skipped**. Skipped live-provider and benchmark tests are not claimed as validated.
- The first full run failed `apps/desktop/src/computerShield.test.ts` → `ComputerShield > engages on first use and confirms before resolving`. Its isolated rerun passed. The fixture imposed 400 ms on real child startup; successful/refusal cases now use the existing 5-second production limit, while the deliberate wedged-helper case keeps its short timeout. All 10 shield tests and the final full suite passed; production behavior was not relaxed.
- A subsequent full run exposed eight `apps/server/src/platform/effectProcessSignals.test.ts` cases named `never turns invalid child PID %s into a group signal` (undefined, 0, 1, -1, 1.5, NaN, Infinity and 4294967297). The local dependency installation lacked the already-committed Effect patch. `bun install --frozen-lockfile` refreshed that one package; all 10 process-signal tests and the final full suite passed. No runtime source patch was added for this installation issue.
- Initial release smoke was blocked by sandbox temp-directory access (`EPERM`); it passed with the required access. The initial build was stopped to use pinned Node. These preliminary attempts are not counted as passing checks.
- Both documentation trees passed their 57-test documentation contract/integrity suites. The paired website passed lint and production build. Release copy is identical across the in-app entry and both marketing changelogs; no external documentation links were added or changed.
- The first native release attempt failed macOS icon staging: the macOS 14 runner's older `actool` returned success without creating `Assets.car`. A second attempt exposed an Apple AssetRuntime framework crash when Xcode 26.3 compiled icons on macOS 15. Release CI now compiles the shared icon catalog on macOS 26 with Xcode 26.3 and keeps native code on macOS 15 with Xcode 16.4. The catalog remains required; no icon fallback or signing gate was weakened.
- The first Linux artifact attempt failed because `x11.pc` was unavailable while compiling the bundled driver. Release setup now installs the same native development-library prerequisites as the dedicated Linux Cua check. Linux Computer Use remains outside the 0.9.0 support announcement.
- Packaging follow-ups passed formatting, lint, typecheck, release smoke and all 231 release-script tests. A real local Icon Composer compile with Xcode 27 produced `Assets.car`; the separate Xcode 26.3/macOS 26 CI job remains the artifact qualification gate.
- Native packaging, macOS signing/notarization, unsigned Windows startup/provenance checks and public asset publication are enforced by the tag workflow. Local source checks do not certify current packaged Computer behavior across every provider, application, display or Space. Computer remains a macOS beta; Linux Computer support is coming soon.

### Merge and direct-commit audit

Audited all 450 commits in the complete `v0.8.4..f3cffcb66` ancestry, including merged branch commits and direct pushes. **51 merged pull requests** have merge commits in this range. #1197 is included in that historical count but was reverted. Intermediate Computer recording/replay and durable always-allow grants were removed before this release and are not shipped features.

- [#1066](https://github.com/Emanuele-web04/synara/pull/1066) — fix(codex): avoid returning history on resume
- [#1090](https://github.com/Emanuele-web04/synara/pull/1090) — Add scoped Computer Use with background browser control and native macOS support
- [#1188](https://github.com/Emanuele-web04/synara/pull/1188) — fix(web): spell pull-request dedup separators as \^@ escapes
- [#1190](https://github.com/Emanuele-web04/synara/pull/1190) — Keep temporary chat accent visible while hovered
- [#1197](https://github.com/Emanuele-web04/synara/pull/1197) — Optimize cross-platform CI setup and cut the measured critical path (reverted)
- [#1202](https://github.com/Emanuele-web04/synara/pull/1202) — Reduce CI setup work and shorten test lanes
- [#1203](https://github.com/Emanuele-web04/synara/pull/1203) — Repair mixed Codex MCP transport configuration
- [#1205](https://github.com/Emanuele-web04/synara/pull/1205) — Preserve runtime permissions for sidechats
- [#1208](https://github.com/Emanuele-web04/synara/pull/1208) — Fix Pierre editor row rendering after line insertion
- [#1213](https://github.com/Emanuele-web04/synara/pull/1213) — feat(codex): support non-blocking user question cards
- [#1214](https://github.com/Emanuele-web04/synara/pull/1214) — fix(github): preserve unlinked commit authors in PR details (repair for #1067)
- [#1215](https://github.com/Emanuele-web04/synara/pull/1215) — fix(profile): surface providers with turns but no token telemetry (repair for #1075)
- [#1218](https://github.com/Emanuele-web04/synara/pull/1218) — feat(web): default editor markdown to Preview
- [#1225](https://github.com/Emanuele-web04/synara/pull/1225) — fix(web): remove React Compiler delay from development loading and reloads
- [#1226](https://github.com/Emanuele-web04/synara/pull/1226) — fix(web): clean up AppSnap and toast development warnings
- [#1227](https://github.com/Emanuele-web04/synara/pull/1227) — Ambient in-chat computer preview plus foreground focus restore
- [#1228](https://github.com/Emanuele-web04/synara/pull/1228) — fix(opencode): support current server and model metadata
- [#1229](https://github.com/Emanuele-web04/synara/pull/1229) — fix(desktop): handle Linux zoom shortcuts in the main process
- [#1230](https://github.com/Emanuele-web04/synara/pull/1230) — fix(session): recover stop for stuck provider starts
- [#1233](https://github.com/Emanuele-web04/synara/pull/1233) — fix(browser): complete BetterWright 2.7.3 lease migration and regression coverage
- [#1234](https://github.com/Emanuele-web04/synara/pull/1234) — perf: reduce shipped desktop size without runtime or visual changes
- [#1239](https://github.com/Emanuele-web04/synara/pull/1239) — test(web): allow cold imports to finish
- [#1240](https://github.com/Emanuele-web04/synara/pull/1240) — feat(diagnostics): report Claude cache usage from local transcripts
- [#1241](https://github.com/Emanuele-web04/synara/pull/1241) — Preserve and display native Claude prompt-cache observations
- [#1242](https://github.com/Emanuele-web04/synara/pull/1242) — Persist pending Claude cache-resume reviews
- [#1243](https://github.com/Emanuele-web04/synara/pull/1243) — Confirm expensive Claude cache resumptions before dispatch
- [#1244](https://github.com/Emanuele-web04/synara/pull/1244) — Compact Claude context natively before releasing held messages
- [#1246](https://github.com/Emanuele-web04/synara/pull/1246) — feat: show and consume Codex banked resets
- [#1247](https://github.com/Emanuele-web04/synara/pull/1247) — [codex] Apply Dmgly design to macOS installer
- [#1248](https://github.com/Emanuele-web04/synara/pull/1248) — Restyle the command palette and recent-view switcher to match ⌘P
- [#1249](https://github.com/Emanuele-web04/synara/pull/1249) — fix(settings): show provider setup health and clarify theme activation
- [#1252](https://github.com/Emanuele-web04/synara/pull/1252) — feat(composer): tabbed model picker with starred model + effort presets
- [#1253](https://github.com/Emanuele-web04/synara/pull/1253) — docs(shortcuts): list missing defaults and correct workspace tab combo
- [#1254](https://github.com/Emanuele-web04/synara/pull/1254) — fix(web): show friendly labels for terminal and usage keybindings
- [#1255](https://github.com/Emanuele-web04/synara/pull/1255) — Support chat drag-and-drop mentions and pane splits
- [#1256](https://github.com/Emanuele-web04/synara/pull/1256) — Refresh Codex model discovery and preserve starred preset behavior
- [#1257](https://github.com/Emanuele-web04/synara/pull/1257) — Enrich pull request controls with status actions
- [#1258](https://github.com/Emanuele-web04/synara/pull/1258) — perf(web): eliminate stalled reveal frames and hidden presentation ticks
- [#1259](https://github.com/Emanuele-web04/synara/pull/1259) — Add Codex and Claude project import flow
- [#1260](https://github.com/Emanuele-web04/synara/pull/1260) — fix(claude): safely apply context budget changes and show runtime budget
- [#1261](https://github.com/Emanuele-web04/synara/pull/1261) — Order activity by the latest human message
- [#1262](https://github.com/Emanuele-web04/synara/pull/1262) — Show pull request links in chat hover cards
- [#1263](https://github.com/Emanuele-web04/synara/pull/1263) — bench: cloud Electron energy proxy
- [#1266](https://github.com/Emanuele-web04/synara/pull/1266) — fix: relocate imported projects without losing thread context
- [#1270](https://github.com/Emanuele-web04/synara/pull/1270) — fix(process): guard invalid signals and captured process identities
- [#1271](https://github.com/Emanuele-web04/synara/pull/1271) — Add Claude Artifacts support and project import onboarding
- [#1273](https://github.com/Emanuele-web04/synara/pull/1273) — Render GitHub-style alerts in chat markdown
- [#1274](https://github.com/Emanuele-web04/synara/pull/1274) — Fold the live tool run into one accordion line
- [#1276](https://github.com/Emanuele-web04/synara/pull/1276) — feat: passively return delegated gateway task results
- [#1285](https://github.com/Emanuele-web04/synara/pull/1285) — fix: allow cancelling blocking questions with choices
- [#1286](https://github.com/Emanuele-web04/synara/pull/1286) — Improve computer typing and same-process window targeting

[Complete commit comparison](https://github.com/Emanuele-web04/synara/compare/v0.8.4...v0.9.0) includes direct pushes, follow-up repairs, native-driver iterations and test/documentation changes.

## 0.8.4 - 2026-09-14

108 development commits since v0.8.3, plus release preparation and validation fixes, bring a new browser automation foundation, saved browser sessions, guided setup, workspace editing and autosave, richer Git review, selected-context conversations, provider recovery, and measured reductions in CPU work, temporary memory and streaming write amplification. This inventory describes the final shipped behavior, consolidating intermediate visual revisions.

### Added

#### Workspace editing, diffs and documents

- Edit workspace text files directly from Explorer and the full editor; edit the working side directly from supported Git diff views. The editors use the same Pierre/Shiki stack as Synara's diff rendering, including app fonts, theme and syntax highlighting. Explorer uses a numbered plain-text fallback for larger files; the full file and diff editors continue to use Pierre. ([#561](https://github.com/Emanuele-web04/synara/pull/561), [#1123](https://github.com/Emanuele-web04/synara/pull/1123))
- Undo, redo and undoable revert-all header controls, an immediate Save action and configurable Cmd/Ctrl+S binding. ([#561](https://github.com/Emanuele-web04/synara/pull/561))
- Shared file drafts and writer across Explorer, file editor and diff editor. Autosave follows a 400 ms typing pause; switching files/pages and sending prompts wait for pending writes. Successful edits refresh Unstaged changes without staging files. ([#1186](https://github.com/Emanuele-web04/synara/pull/1186))
- Conflict-aware saves preserve original encoding and line endings; failed/conflicting saves retain the draft, expose errors, stop automatic retries and offer explicit recovery. In-flight saves finish before leaving; new typing during a disk reload is protected. Reload/discard and explicit full-editor Overwrite are distinct recovery choices. ([#561](https://github.com/Emanuele-web04/synara/pull/561), [#1186](https://github.com/Emanuele-web04/synara/pull/1186))
- Compare the working tree against another branch or commit, with compare scopes remembered per repository and correct branch merge-base or index comparison where appropriate. ([#561](https://github.com/Emanuele-web04/synara/pull/561))
- Click supported diff lines to view Git blame; new/untracked files and empty repositories receive uncommitted attribution. Deleted lines are attributed against the displayed base, including old rename paths. Blame is intentionally scoped away from staged/unstaged and turn diff line numbering. ([#561](https://github.com/Emanuele-web04/synara/pull/561))
- Navigate changed files with next/previous actions, scrollbar change markers and Alt+Up/Down shortcuts; file-tree and jump-menu selection follow the visible file as you scroll. ([#561](https://github.com/Emanuele-web04/synara/pull/561))
- Word-level highlighting within modified lines and change gutters in file previews. ([#561](https://github.com/Emanuele-web04/synara/pull/561))
- File and document preview panes can maximize across the chat area and restore their split layout; closing the last maximized pane returns to chat. ([#1023](https://github.com/Emanuele-web04/synara/pull/1023))
- Basic workspace Wiki links in Markdown: `[[notes/design]]`, `[[notes/design|Design notes]]`, and explicitly extended file links such as `[[guide.pdf]]`. Wiki paths start at the workspace root; normal Markdown links remain relative to their document. ([#1023](https://github.com/Emanuele-web04/synara/pull/1023))

#### Browser sessions and application capture

- Replace the former desktop browser automation implementation with BetterWright; agents retain navigation, snapshots, screenshots, scripting and related browser actions through Synara's browser tools. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Import existing site login cookies into the current embedded browser site and restore eligible imported sessions across restarts using protected local storage. Current-site import is scoped to the visible destination and guarded against navigation during the operation. All sites in this profile is also available with an explicit consent checkbox. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Browser cookies and sign-ins are shared across tasks. Saved Logins interface with save/update prompts, optional autosaving of accepted logins, account list, deletion, lock/unlock and password reveal protected by a master password. Agent access is optional account metadata discovery only. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Popups open as tabs inside Synara, supporting in-app sign-in flows without losing the browser context. Popup navigation and downloads retain their existing guards. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Floating browser previews expand into the interactive browser panel. Collapsed previews are deliberately noninteractive; automation still operates against its own target and hidden browser execution remains responsive. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Refreshed Safari import setup with app icon, Finder flow and macOS Full Disk Access explanation, preserving previous onboarding choices and providing a way to reopen setup. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114), commit 3b16d6d00)
- AppSnap window picker: attach a chosen open application window, with app icons/titles, capture readiness, bounded retries and target validation. ([#1141](https://github.com/Emanuele-web04/synara/pull/1141))
- Composer + menu can capture the frontmost application document window in one click; a trailing arrow/ArrowRight opens the full window list. It prefers a titled document over an untitled auxiliary window from the same app. ([#1177](https://github.com/Emanuele-web04/synara/pull/1177))

#### Onboarding, composer and selected context

- Interactive first-run setup covering provider discovery/enablement and sign-in terminal, appearance/theme selection, feature tour and project creation. Project setup accepts dropped folders. ([#1031](https://github.com/Emanuele-web04/synara/pull/1031))
- Replay setup from Settings; completion is installation-specific, persisted locally first and reconciled to the server. Existing installs do not unexpectedly reopen onboarding after removing their final project or restoring defaults. ([#1031](https://github.com/Emanuele-web04/synara/pull/1031))
- Assistant selection toolbar provides Add to Chat, Add to Side and Add to new Chat. A shared mini composer creates a new task with selected context, with queued-send failures retained for recovery and retry bounds. ([#1130](https://github.com/Emanuele-web04/synara/pull/1130))
- Side chats can select provider/model before their first real turn even when they contain imported fork history; `/side <provider>` works with the provider argument still present in the composer. ([#1055](https://github.com/Emanuele-web04/synara/pull/1055))
- Model effort uses a stepped slider by default, with supported effort levels, Fast toggle and reset. A composer setting controls the new layout. Magnetic snapping, drag cursor feedback, corrected minimum fill and a flush thumb make the interaction clearer. ([#1120](https://github.com/Emanuele-web04/synara/pull/1120), 3b16d6d00, abb797240, a311a844a)
- Model selection closes the nested model menu but leaves the effort slider open for the next adjustment. (31ed6b9ae)
- Composer + menu becomes a shared flat command panel above the composer, with file attachments, AppSnap, Goal insertion and toggleable Plan, Debug and supported Fast modes. Literal goal text is preserved. ([#1146](https://github.com/Emanuele-web04/synara/pull/1146), [#1177](https://github.com/Emanuele-web04/synara/pull/1177))
- Agent-authored standalone and dedicated automations can specify exact provider/model/options, validated against executable provider availability and the target workspace. They may be created disabled for staged review. Lists and create responses expose the chosen model; updates preserve omitted selections. ([#1167](https://github.com/Emanuele-web04/synara/pull/1167))

### Changed

#### Pull requests and project organization

- Pull request context cards can be added to a draft from PR Repair/Add to Chat actions and expanded in sent user messages. Context survives drafts, queues, sends and retries. ([#1071](https://github.com/Emanuele-web04/synara/pull/1071))
- Thread pull request chips open the right-hand dock; modifier-click retains navigation to GitHub. (2e98e50b5)
- Merge actions remain disabled until capabilities/details load and are rechecked at confirmation. PR popup submenu placement and trailing-value alignment are corrected. ([#1071](https://github.com/Emanuele-web04/synara/pull/1071))
- Environment PR status updates immediately after a successful action; late/in-flight fetches cannot roll back the confirmed result. ([#1126](https://github.com/Emanuele-web04/synara/pull/1126))
- Merged and closed PR status remains visible for the branch in Environment. ([#1103](https://github.com/Emanuele-web04/synara/pull/1103))
- Each project remembers its Local or Worktree choice for subsequent new chats. ([#1105](https://github.com/Emanuele-web04/synara/pull/1105))
- Configured project display names remain visible in narrow sidebar rows; the redundant muted folder suffix was removed. ([#1086](https://github.com/Emanuele-web04/synara/pull/1086), fixes [#1000](https://github.com/Emanuele-web04/synara/issues/1000))
- Project/environment/branch pickers share compact menu styling, width behavior and typography. Environment menu is labeled Work in; landing composer tray spans the composer without background tint. ([#1108](https://github.com/Emanuele-web04/synara/pull/1108) plus 03368a072, 7aa0ecb1a)
- Sidebar PR badges become consistent square icon controls, retaining PR numbers in accessible labels. (348a1dfb9)

#### Visual polish

- Refined sidebar glass/translucency, background blur, selected-row colors and neutral surface washes in light and dark themes. Final selected rows reuse the secondary/user-message surface. ([#1089](https://github.com/Emanuele-web04/synara/pull/1089) plus 690a9ac4e, a08a0c854, d8bbe9086, 77a09d6f7, c6328f62f, f4d1ee81f, 4a62652ee, 71862f9b2)
- Refined user message bubble corner smoothing, seam contrast, compact final spacing and notification surfaces. (4362f6ea4, 49d24f4c0, 3b18b8fa3, e307d251d, b335765c4)
- Raised-surface borders are softer. (79bd48963)
- Picker controls, autocomplete labels and branch-create actions follow configured UI font size/family. (cfa32ece5)
- Toast actions use consistent font-matched ghost buttons. ([#1176](https://github.com/Emanuele-web04/synara/pull/1176))
- Native context menus render properly sized rasterized icons on macOS; icon metadata survives IPC and web fallback rendering. ([#1183](https://github.com/Emanuele-web04/synara/pull/1183))
- Compact text-selection controls and mini composer, with action labels no longer clipped at supported font sizes. (abb797240, ac68cd0f5)
- Shared PanelLeft sidebar trigger icon. (6ae3a6937)

#### Providers, accounting and process lifetime

- GPT-6 Astra is added and becomes the default Codex model, with Low, Medium(default), High, Extra High, Max and Ultra effort options; `astra`, `6`, `gpt-6` aliases resolve to it. (5a25d5c81)
- Model display names normalize consistently across providers without changing executable model IDs: canonical brand casing/version punctuation and provider-discovered labels are retained. Devin alias discovery keeps SWE-1.6 Fast distinct. ([#1016](https://github.com/Emanuele-web04/synara/pull/1016), [#1139](https://github.com/Emanuele-web04/synara/pull/1139))
- Codex Fast mode can be reset correctly and selected skill input is no longer duplicated. ([#1125](https://github.com/Emanuele-web04/synara/pull/1125))
- Codex startup can be retried after a confirmed failed process teardown; uncertain native liveness is not falsely certified as clean. ([#1074](https://github.com/Emanuele-web04/synara/pull/1074))
- Codex uses a single actual SQLite home rather than symlinking databases/WAL sidecars through the overlay, preventing divergent WAL paths and resume database corruption, particularly on Windows. Old overlay symlinks are cleaned while regular files and explicit CODEX_SQLITE_HOME overrides are preserved. ([#1062](https://github.com/Emanuele-web04/synara/pull/1062))
- Claude pending questions recover after server restarts and expired sessions, including duplicate submission handling. ([#1113](https://github.com/Emanuele-web04/synara/pull/1113))
- Claude request tokens count once per response rather than once per repeated SDK content block; per-result model totals distinguish cumulative usage, caches and subagents. Context usage, processed totals and Profile Stats have distinct, corrected scopes. ([#1127](https://github.com/Emanuele-web04/synara/pull/1127))
- Verified Claude usage is versioned; Profile Stats excludes unverifiable historical totals and explains that old history can be incomplete. Retained legacy main-loop evidence is preserved by migration, but purged totals are not invented or retroactively halved. ([#1127](https://github.com/Emanuele-web04/synara/pull/1127))
- Claude overage telemetry is mapped to the Fable weekly sublimit. ([#1104](https://github.com/Emanuele-web04/synara/pull/1104))
- Per-turn provider usage/cache baselines survive session changes correctly; successful native fork resumes avoid redundantly prepending transcript recaps. Antigravity usage projection remains deferred where unverifiable. ([#1024](https://github.com/Emanuele-web04/synara/pull/1024))
- Cursor ACP Task calls appear as active subagent work with description/prompt, and quiet subagents remain Working rather than falsely Idle. ([#1119](https://github.com/Emanuele-web04/synara/pull/1119))
- Pi mid-turn sends queue as follow-ups instead of raw Agent is already processing errors. Dispatch is serialized per task; cancellation during prompt preflight is retained and dispatched/stopping/aborted races settle correctly. ([#1135](https://github.com/Emanuele-web04/synara/pull/1135))
- Pi transient auto-retry errors display inline warnings, retaining the active turn and autonomous goal; End task cancels retry backoff instead of freezing. ([#1061](https://github.com/Emanuele-web04/synara/pull/1061))
- Pi extension terminal status is excluded from the tool timeline while meaningful notifications and plain text remain. ([#1093](https://github.com/Emanuele-web04/synara/pull/1093))
- Antigravity final print output/completion and terminal outcomes are preserved and duplicate tool events reconciled, including recovered first turns. ([#1021](https://github.com/Emanuele-web04/synara/pull/1021))
- Antigravity transcript-discovered background commands stay alive after the model's Stop hook; completion/kill, delayed hooks, anonymous and qualified IDs, concurrent commands and turn changes are reconciled without resurrecting settled work. ([#1170](https://github.com/Emanuele-web04/synara/pull/1170))
- OpenCode pools normalize executable/workspace identity without destroying parent-directory traversal semantics. ([#1169](https://github.com/Emanuele-web04/synara/pull/1169))
- Desktop backend lifetime follows the owning Electron parent through stdin EOF, invokes normal cleanup on parent loss and terminates only the backend if cleanup hangs; CLI stdin behavior is preserved. ([#1154](https://github.com/Emanuele-web04/synara/pull/1154))
- Provider teardown and callback ownership are tightened: failed idle teardown can retry; Claude keeps ownership during failed installation; ACP callback buffers are bounded; copied snapshots avoid mutation leaks; OpenCode/Pi drop redundant retained state; dock/terminal runtimes dispose with their hosts. ([#1097](https://github.com/Emanuele-web04/synara/pull/1097))
- Orchestration command dispatch stays responsive when subscribers are slow. ([#1115](https://github.com/Emanuele-web04/synara/pull/1115))

### Fixed

#### Transcript, turn ordering and recovery

- Preserve embedded NUL characters and the following Unicode text through completion, segments, restart and resume on Node 24 SQLite. The full release suite exposed this truncation; the existing JSON fallback now covers NULs as well as unmatched surrogate code units.
- Invisible Codex provider events no longer split adjacent Markdown text into broken chunks; saved adjacent segments coalesce while real work/turn boundaries remain intact. ([#1155](https://github.com/Emanuele-web04/synara/pull/1155))
- Tool calls remain visible and correctly attached after steering. Effective native versus emulated-steer boundaries persist across reloads; providers without native steering create their separate queued turn correctly. ([#1124](https://github.com/Emanuele-web04/synara/pull/1124))
- Tool/work activity ordering remains stable between live events and snapshots, including late background updates retaining their original chronological position instead of moving underneath later user prompts. ([#1019](https://github.com/Emanuele-web04/synara/pull/1019) and [#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Real message changes and geometry changes are separated in tail anchoring so tool-only work does not prolong live-output follow/quiet holds. Streaming preserves partially visible rows and deferred layout settles correctly. ([#1077](https://github.com/Emanuele-web04/synara/pull/1077), [#1064](https://github.com/Emanuele-web04/synara/pull/1064), [#1155](https://github.com/Emanuele-web04/synara/pull/1155))
- Context compaction appears as a transcript progress row with an icon. ([#1129](https://github.com/Emanuele-web04/synara/pull/1129))
- Session restart/context-loss rail markers use plain language and explain when interruption escalation caused a restart; recovery acceptance preserves the relevant cause until the provider accepts it. ([#1058](https://github.com/Emanuele-web04/synara/pull/1058))
- First task startup no longer flickers while the initial turn/session is being established. ([#1084](https://github.com/Emanuele-web04/synara/pull/1084))
- Bracketed display math, numeric inline formulas and literal dollar signs before Markdown links render correctly. ([#1020](https://github.com/Emanuele-web04/synara/pull/1020))
- Inspected input images are no longer mislabeled as newly generated outputs. ([#1100](https://github.com/Emanuele-web04/synara/pull/1100))
- Existing simulator screenshot previews outside standard allowed roots can recover via authenticated per-file grants; expansion/download renews grants and transient transports can retry without background polling. ([#1153](https://github.com/Emanuele-web04/synara/pull/1153))
- Simulator attachment keeps the canvas mounted for the first frame, preventing an idle screen from leaving the pane stuck Connecting; UDID device identity and decoder error reporting are preserved. ([#1164](https://github.com/Emanuele-web04/synara/pull/1164))
- Windows directory links, including workspace paths in Markdown, navigate through Explorer correctly. ([#1085](https://github.com/Emanuele-web04/synara/pull/1085))
- Malformed percent encoding in pasted theme share strings reports the normal readable validation error instead of a raw URIError. ([#1168](https://github.com/Emanuele-web04/synara/pull/1168))
- Duplicate/racing approval responses reconcile without stale undo callbacks or orphaned interaction handlers. ([#1102](https://github.com/Emanuele-web04/synara/pull/1102))
- Runtime journal acknowledgement retries do not duplicate buffered assistant output; cached completion text survives missing projected detail. ([#1097](https://github.com/Emanuele-web04/synara/pull/1097)/[#1098](https://github.com/Emanuele-web04/synara/pull/1098) and 95b3101c2, 12706a9aa)

#### Browser automation integration

- Empty browser vaults and session stores defer OS key creation until first use, avoiding unnecessary Keychain access during first launch. Existing encrypted data keeps its established decryption path; password-save consent and encryption remain required.
- Browser target input stays out of the chat composer, restoring prior focus without overriding subsequent human focus changes; concurrent targets and cancellation are isolated. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Hidden browser captures and Retina/zoom screenshot dimensions/input are corrected. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Clipboard copy preserves user operations, native keyboard safety policies cover additional aliases/accelerators, and workspace upload staging cleans up failed uploads. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Navigation waits follow client redirects; empty results and sign-in failures produce clearer feedback. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Browser runtimes survive panel mounting, recover stale CDP sessions only after confirmed teardown, and release canceled/failed target setup. Webview remount crashes and ASAR executable-resolution races are fixed. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))
- Agents receive screenshot-proof and on-demand browser E2E review guidance. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114))

#### Live diffs and large repositories

- Mounted Git views and blame/gutters refresh after editor saves, external watched file changes, Git operations and branch movement. ([#561](https://github.com/Emanuele-web04/synara/pull/561), [#1175](https://github.com/Emanuele-web04/synara/pull/1175))
- Oversized aggregate/untracked Git patches return bounded partial output and explicit truncation metadata rather than failing the entire Review panel at the size cap; partial-patch consumers handle incomplete content safely. ([#1138](https://github.com/Emanuele-web04/synara/pull/1138))
- Rename, binary, symlink, submodule, SHA-256 repository, empty repository and compare-ref added/untracked edge cases are corrected. Unsafe editor actions are hidden and unsupported file formats remain read-only. ([#561](https://github.com/Emanuele-web04/synara/pull/561))
- Compare refs use a temporary index to correctly represent recreated files and force-added ignored files against the chosen reference; unresolved revisions fail visibly rather than opening a false empty base. ([#561](https://github.com/Emanuele-web04/synara/pull/561))

### Removed and data migrations

- Saved transcript highlights and underlines are removed, including marker UI and obsolete docs. Migration 101 removes stored marker payloads and the projection marker column while preserving event IDs, sequence/replay continuity and timestamps. Stored highlight and underline data is deleted; message history, pins and notes remain. ([#1131](https://github.com/Emanuele-web04/synara/pull/1131))
- Migration 100 adds append-only streamed-text chunks while preserving existing history/cursors, without a completed-history backfill. ([#1097](https://github.com/Emanuele-web04/synara/pull/1097))
- Migration 102 stores effective user-message turn boundaries for stable steering replay. ([#1124](https://github.com/Emanuele-web04/synara/pull/1124))
- Migration 103 adds versioned Claude deleted-token snapshots and retained legacy main-loop evidence, leaving immutable history unchanged and acknowledging unrecoverable gaps. ([#1127](https://github.com/Emanuele-web04/synara/pull/1127))
- The old browser-automation implementation is replaced by BetterWright; the final workspace editor uses Pierre and the Explorer plain-text fallback. ([#1114](https://github.com/Emanuele-web04/synara/pull/1114), [#561](https://github.com/Emanuele-web04/synara/pull/561))

### Development and verification infrastructure

- CI test parallelism/partitioning, browser hydration pre-transform and Windows dependency restoration improve reliability/critical path. ([#1140](https://github.com/Emanuele-web04/synara/pull/1140))
- React ChatView structure and storage schema machinery are consolidated; structural refactoring is a maintainability improvement. ([#1144](https://github.com/Emanuele-web04/synara/pull/1144))
- Performance runner closes Electron when firstWindow fails. ([#1078](https://github.com/Emanuele-web04/synara/pull/1078))
- Typecheck benchmark docs now qualify contracts/shared full-check methodology. ([#1008](https://github.com/Emanuele-web04/synara/pull/1008))
- Docs-only CI classification excludes all .github images. ([#1014](https://github.com/Emanuele-web04/synara/pull/1014))
- Shared AGENTS/CLAUDE instructions refreshed; real-provider E2E guidance, isolated port/auth preflight clarified. ([#1171](https://github.com/Emanuele-web04/synara/pull/1171), f668f5be2)
- Stray Devin wedge investigation report removed; personal asset context document added. These are repository maintenance changes. ([#1149](https://github.com/Emanuele-web04/synara/pull/1149), 5e65a8871)

### Measured performance

These are recorded local before/after experiments for changes included in this release, **not a newly run v0.8.3-versus-v0.8.4 whole-app benchmark**. CPU, query-worker RSS, retained heap, SQLite WAL volume and browser route timings measure different things and must not be combined into one app-wide saving. No hardware GPU utilization or battery-energy reduction is established.

#### Status animations: CPU and GPU-process CPU

Three alternating paired samples on an Apple M5 Pro with 48 GiB RAM, macOS 26.5.1 and Electron 43.4.1. Each sample warms for two seconds, then measures eight seconds in an isolated Electron fixture using the production stylesheet, two status animations, macOS vibrancy and a blurred composer. It excludes React, the backend and real providers.

| Metric                                     |  Before |   After |              Reduction |
| ------------------------------------------ | ------: | ------: | ---------------------: |
| All Electron process CPU time              | 1.489 s | 0.956 s |                  35.8% |
| GPU-process CPU time                       | 0.894 s | 0.487 s |                  45.5% |
| Renderer CPU time                          | 0.577 s | 0.448 s |                  22.2% |
| All-process CPU utilization, 100% per core |  18.60% |  11.95% | 6.66 percentage points |

The spinner and shimmer share a 50 ms cadence and timeline origin, without adding a per-frame JavaScript timer. Their cycle lengths remain 1.3 and 2 seconds; shimmer steps decrease from 60 to 40, a modest smoothness tradeoff. Reduced Motion remains readable. GPU-process CPU is CPU used by Chromium's graphics helper, not GPU hardware utilization. No RAM saving was established by this experiment. [Report and raw samples](docs/performance/2026-09-07-status-animations/report.md).

#### History-query RAM and latency

Synthetic history with 6,000 messages and 6,000 tool activities, each with a 16 KiB body. Fresh Node/SQLite workers on the same M5 Pro/48 GiB host use a 128 MiB SQLite cache and 512 MiB mmap; three samples per query and version, one warmup and one measured read. Queries select retained identities before loading large bodies. Returned counts and digests match.

| Query                    | Worker peak RSS before → after | RSS reduction | Median query time before → after |
| ------------------------ | -----------------------------: | ------------: | -------------------------------: |
| Bulk messages            |            565.61 → 377.48 MiB |         33.3% |                 43.66 → 20.44 ms |
| Single-thread messages   |            565.83 → 377.22 MiB |         33.3% |                 46.25 → 21.17 ms |
| Bulk activities          |            255.92 → 115.16 MiB |         55.0% |                  19.15 → 7.21 ms |
| Single-thread activities |            379.66 → 275.58 MiB |         27.4% |                177.51 → 19.22 ms |

RSS includes the query worker and warmup; it is not the whole Synara footprint. Returned JavaScript heap is essentially unchanged. These short samples do not measure peak application RAM, crash frequency or leak freedom. [Historical report](https://github.com/Emanuele-web04/synara/blob/325779db29cad03a8da9e81f409fd211dc848357/docs/performance/2026-09-09-memory-crash/report.md), [baseline samples](https://github.com/Emanuele-web04/synara/blob/325779db29cad03a8da9e81f409fd211dc848357/docs/performance/2026-09-09-memory-crash/baseline.json), [optimized samples](https://github.com/Emanuele-web04/synara/blob/325779db29cad03a8da9e81f409fd211dc848357/docs/performance/2026-09-09-memory-crash/optimized.json).

#### Provider retained memory

- OpenCode comparison keys for 200 distinct 256 KiB outputs: **50.13 → 0.14 MiB**, removing **49.99 MiB** of duplicate heap; retained parts plus keys fall **100.19 → 50.20 MiB**. Three fresh-process forced-GC samples use the production hash helper. Creating keys takes **8.18 → 24.65 ms**, an explicit CPU-for-memory tradeoff.
- A separate 256-update cumulative-output fixture: **32.50 → 0.59 MiB** extra heap, retaining the latest part while dropping obsolete snapshots. This is a different mechanism and sample; do not add its saving to the preceding result.
- ACP callback buffers are bounded, Pi keeps current tool snapshots, failed startup retains process ownership, idle teardown retries, and host/dock terminals dispose their xterm runtimes. These fixes have correctness coverage but no universal MiB saving.

These experiments exclude complete SDK sessions, providers and Electron. A proposed history-eviction policy was rejected and is not part of this release. [Retention evidence](https://github.com/Emanuele-web04/synara/blob/325779db29cad03a8da9e81f409fd211dc848357/docs/performance/2026-09-09-memory-crash/implementation-2026-09-10.md).

#### Streaming persistence and write amplification

Production engine, Effect SQL and real migrations in fresh file databases and fresh processes; 40-byte ASCII deltas, WAL truncated after setup, auto-checkpoint disabled. Node 26.8.1 / SQLite 3.53.4 on the M5 Pro/48 GiB host. These are historical benchmark runtimes; release validation uses the repository-pinned Node version.

| Workload                                   | WAL before append-only chunks | WAL after chunks | Reduction |
| ------------------------------------------ | ----------------------------: | ---------------: | --------: |
| 8 KB answer, one sample                    |                     15.27 MiB |        14.90 MiB |     2.44% |
| 50 KB answer, one sample                   |                    155.01 MiB |        99.42 MiB |    35.86% |
| 200 KB answer, three samples               |                  1,346.27 MiB |       402.48 MiB |    70.10% |
| Four interleaved 50 KB answers, one sample |                    633.79 MiB |       420.95 MiB |    33.58% |

- In the paired 200 KB fixture, median streaming time improves **2,651.2 → 1,738.1 ms (34.44%)**. Completion changes **3.26 → 11.97 ms**, because durable text is assembled once at the end.
- A separate stacked follow-up reduces 200 KB engine WAL from **about 402 → 316.36 MiB**, and the 8 KB workload from **14.75 → 11.61 MiB**. Engine commits per delta fall from two to one; journal page acknowledgement amortizes another fixed cost when events queue.
- A 1,000-event journal fixture falls **26.3 → 21.9 KB/event** with 128-row pages; with no backlog it remains 26.3 KB/event. A notification-drain regression checks at most four cursor transactions for 32 queued notifications, previously 32.
- Engine WAL excludes the runtime journal and provider processes and does not equal physical SSD writes. The two stages are separate experiments, so their arithmetic is not presented as one paired 76% end-to-end gain. Small single-sample cases are directional. Engine sampled RSS/heap did not establish a RAM reduction.

[Append-only measurements](https://github.com/Emanuele-web04/synara/blob/325779db29cad03a8da9e81f409fd211dc848357/docs/performance/2026-09-09-memory-crash/implementation-2026-09-10.md), [raw summary](https://github.com/Emanuele-web04/synara/blob/325779db29cad03a8da9e81f409fd211dc848357/docs/performance/2026-09-09-memory-crash/implementation-summary.json), [write-floor follow-up](https://github.com/Emanuele-web04/synara/blob/93fb8975b0ec47f09f6f23ea8bc0b6c1af895e39/docs/performance/2026-09-09-memory-crash/write-floor-2026-09-10.md). The investigation documents were intentionally removed before merge; these links point to their immutable historical versions.

#### Warm chat opening and latest-turn lookup

| Warm route fixture            | Before median | After median | Reduction |
| ----------------------------- | ------------: | -----------: | --------: |
| 10 messages, 20 activities    |      570.5 ms |     374.5 ms |     34.4% |
| 81 messages, 1,609 activities |      595.3 ms |     326.3 ms |     45.2% |

Six samples per variant and fixture, alternating batches, warm modules and fresh router, real CSS, mocked RPC, Chromium development build on one unthrottled Mac. This measures storage-schema reuse inside the refactored route, including frame waits; it is not original-monolith-to-final, cold startup, model latency or a mounted-shell chat switch. Workflow timer ticks additionally cause zero parent transcript renders instead of ten over ten seconds. [Benchmark and tradeoffs](https://github.com/Emanuele-web04/synara/pull/1144).

A retained synthetic Node SQLite result for **600 chats / 300,000 historical turns** records latest-turn query medians **253.79 → 21.03 ms (91.7%)**, returning **300,000 → 600 rows**. The release archives the [original result](docs/performance/2026-09-14-release/latest-turn-query.json) with its [limited provenance](docs/performance/2026-09-14-release/README.md): hardware, repetition counts and dispersion were not retained, and this has not been rerun for the release. It is operation-level evidence, not whole startup.

#### CI and maintainability

- Local ChatView test critical path: **214.01 → 161.30 seconds (24.6%)** after separating the streaming matrix from the remaining cases; the complementary partition takes 96.22 seconds. Server files also split into two serial shards, and a redundant frontend build prerequisite is removed.
- Total workflow jobs fall **17 → 16** by grouping small suites while retaining aggregate gates, independent desktop build, all test coverage and serial execution within each shard. Windows uses the Bun cache and a fresh frozen installation rather than reusing a broken installed tree.
- A **26–35% hosted-CI reduction remains a projection**, not a measured release claim. [CI methodology](docs/ci-performance.md).
- ChatView shrinks **12,932 → 5,868 lines**, with responsibilities extracted into focused modules. This is maintainability work; extraction alone does not prove better performance, and bundle-size warnings remain.
- Native TypeScript speedups already shipped before v0.8.3. This release only clarifies that contracts/shared perform full checks in the earlier cold/incremental comparison; those compiler gains are not counted again.

### Compatibility and scope

- AppSnap window picking is macOS-specific. Imported browser-session restoration depends on secure local storage. Optional browser account discovery exposes metadata only, without agent password filling or generation.
- Basic Wiki links do not add embeds, heading or block navigation. Large/unsupported file formats retain safe read-only or lightweight editor fallbacks. In-session failed editor drafts are not crash backups.
- Saved transcript highlight/underline payloads are removed by migration 101. Unverifiable historical Claude token totals remain incomplete rather than being reconstructed speculatively.

### Verification

- Final release validation used the repository-pinned **Node 24.13.1 and Bun 1.4.2**. All four package versions and lockfile workspace versions match 0.8.4; the 29 release highlights match exactly across app, marketing and public website.
- `bun run fmt:check`, `bun run lint`, `bun run typecheck`, `bun run release:smoke`, `bun run brand:check`, `bun run windows-runtime:check` and `bun run migrations:check` passed. Lint reports 560 existing warnings and zero errors; typecheck passes all seven workspaces. The platform-boundary check covers 238 application source files; released migration names/IDs remain unchanged across 87 existing tags.
- `bun run build` passed all five tasks on the final reviewed copy. Existing large-chunk, Browserslist data and marketing output-cache warnings remain. An earlier sandboxed build stalled in Next.js and was stopped; the permitted rerun completed.
- **Final `bun run test`: 949 files and 11,406 tests passed; 12 files and 30 tests skipped. All seven Turbo tasks succeeded.** The cached task is the contracts build prerequisite; test tasks ran. Browser-only checks run separately in CI; native/device/provider opt-in cases retain their configured exclusions.
- The first permitted full run failed `apps/server/src/orchestration/Layers/messageTextChunks.test.ts` → `preserves split Unicode across segments, restart and completion in every reader`: Node 24 SQLite TEXT reads truncated after an embedded NUL. The existing JSON fallback now preserves NULs as well as unmatched surrogate code units. The original failure was reproduced, four related suites passed 87 tests after the fix, and the entire suite then passed as reported above. This was a real release-validation fix, not a targeted-only pass or a flaky-test dismissal.
- An initial attempt used the shell's Node 26 and a restricted sandbox, producing local-socket/process failures and an aborted suite. It is not counted as passing. Validation was restarted with the pinned runtime and required local socket permissions; no duplicate test process was left running.
- Both documentation copies passed **56 documentation tests**, integrity checks and lint; both production builds passed. The public website first needed its ignored Fumadocs index regenerated and its already-declared dependencies restored with `npm ci`; no dependency manifest/lockfile change was required. Two focused guides, navigation, source evidence and regression contracts cover the release. No documentation external links were added or changed, so `test:links` was not required.
- The public website content is prepared and verified locally; its separate commit/push is optional and has not been performed by this release preparation. The pre-existing local installer-count commit is preserved.
- The first hosted release preflight stopped on `apps/desktop/src/browserAutomation/browserVault.test.ts` → `preserves saved passwords when provenance persistence fails (update=false)` exceeding 5 seconds. The provenance cases perform five production scrypt derivations and durable writes; neighboring hosted cases took 4.49 and 4.36 seconds. The real-crypto suite now has a scoped 15-second timeout, with cryptographic parameters and assertions preserved. Both related suites passed all 14 tests locally; a fresh full run after this test-only change again passed all 11,400 tests in 949 files, with the same configured skips.
- Marketing CI passed functional, accessibility and production-performance checks but rejected the docs screenshot because the new guide section changed the page from 1,908 to 2,054 pixels high. The Linux actual image was identical across all three attempts and was visually reviewed before updating the expected snapshot. The refreshed macOS snapshot passed a fresh focused comparison in marketing and an independent zero-difference comparison in the public website. This is an intentional content-baseline update, with screenshot tolerances unchanged.
- Native packaging, provenance, platform startup smoke and uploaded artifacts are checked by the tag's release workflow. Windows publication uses `SYNARA_ALLOW_UNSIGNED_WINDOWS_RELEASE=0.8.4`; macOS signing/notarization remains required. Local source tests and historical performance fixtures do not certify live provider sessions, macOS permission flows, hardware GPU savings or every installed-platform interaction.
- The next hosted attempt passed preflight, Linux and Windows packaging/startup, but both signed/notarized macOS artifacts timed out waiting for startup proof after 60 seconds. Code inspection found eager OS-key creation in the new empty vault/session stores before backend startup. Initialization is now deferred until needed, with focused first-use, concurrency, disposal and corrupt-store coverage. The startup verifier also prints bounded process/log tails before cleanup on failure; its timeout and proof requirements remain unchanged. The full post-fix suite passed all 11,406 tests in 949 files; formatting, lint, all seven workspace typechecks, release smoke and all five build tasks passed. Native confirmation is supplied by the subsequent release run.
- Main CI passed after rerunning the unchanged-head Studio browser job: its first attempt timed out in `coalesces repeated Studio new-chat clicks and stays in Studio after navigation settles`. No assertion or production code was changed for that rerun. Marketing CI passed with the reviewed documentation snapshots.

### Complete change index

[All development and release-preparation commits and the complete diff](https://github.com/Emanuele-web04/synara/compare/v0.8.3...v0.8.4). The following first-parent index includes merged pull requests and direct changes, newest first; intermediate commits inside merged branches are available in the comparison.

<details>
<summary>Expand the complete mainline change list</summary>

- [0eaf3831e](https://github.com/Emanuele-web04/synara/commit/0eaf3831e) Improve workspace editor autosave and dirty-state handling (#1186)
- [91ad50f9c](https://github.com/Emanuele-web04/synara/commit/91ad50f9c) Update verify skill with real-provider E2E guidance (#1171)
- [eb34fc538](https://github.com/Emanuele-web04/synara/commit/eb34fc538) docs(perf): qualify cold/incremental methodology for contracts and shared (#1008)
- [3b021c681](https://github.com/Emanuele-web04/synara/commit/3b021c681) fix(web): separate message and geometry signals in tail anchor scroll (#1077)
- [2f93cd4c1](https://github.com/Emanuele-web04/synara/commit/2f93cd4c1) fix(perf): close Electron app when firstWindow fails in status runner (#1078)
- [c0f999df1](https://github.com/Emanuele-web04/synara/commit/c0f999df1) Add correctly sized icons to native context menus (#1183)
- [2e9819ea2](https://github.com/Emanuele-web04/synara/commit/2e9819ea2) Refine composer extras menu (#1177)
- [4db0e34bd](https://github.com/Emanuele-web04/synara/commit/4db0e34bd) Standardize toast actions as font-matched ghost buttons (#1176)
- [12ee8f937](https://github.com/Emanuele-web04/synara/commit/12ee8f937) Refresh Git diff views after editor saves and file changes (#1175)
- [c9c09b0a8](https://github.com/Emanuele-web04/synara/commit/c9c09b0a8) fix(antigravity): register background tasks from transcript before the stop hook (#1170)
- [3a0d491df](https://github.com/Emanuele-web04/synara/commit/3a0d491df) Allow exact provider targets for agent-authored automations (#1167)
- [478b38660](https://github.com/Emanuele-web04/synara/commit/478b38660) fix: normalize OpenCode server pool identity (#1169)
- [99d7dd117](https://github.com/Emanuele-web04/synara/commit/99d7dd117) fix(web): reject malformed percent-encoding in theme share strings (#1168)
- [6ae3a6937](https://github.com/Emanuele-web04/synara/commit/6ae3a6937) Use shared PanelLeft icon for sidebar trigger
- [c21645a25](https://github.com/Emanuele-web04/synara/commit/c21645a25) Redesign composer extras as a shared command panel (#1146)
- [939d93c35](https://github.com/Emanuele-web04/synara/commit/939d93c35) Fix simulator pane stuck connecting after its first frame (#1164)
- [889eb4212](https://github.com/Emanuele-web04/synara/commit/889eb4212) Fix simulator screenshot previews and downloads in chat (#1153)
- [5d068e088](https://github.com/Emanuele-web04/synara/commit/5d068e088) Fix desktop backend lifetime after parent exit (#1154)
- [2d05ebf0a](https://github.com/Emanuele-web04/synara/commit/2d05ebf0a) Keep Codex Markdown together across text segments (#1155)
- [f668f5be2](https://github.com/Emanuele-web04/synara/commit/f668f5be2) docs: refresh shared agent guidance and remove conflicting policies
- [5a25d5c81](https://github.com/Emanuele-web04/synara/commit/5a25d5c81) Add GPT-6 Astra as the default Codex model
- [7126c9803](https://github.com/Emanuele-web04/synara/commit/7126c9803) Merge pull request #1149 from kartikkabadi/chore/remove-devin-cli-wedge-report
- [5e65a8871](https://github.com/Emanuele-web04/synara/commit/5e65a8871) Add personal asset context document
- [a355cf200](https://github.com/Emanuele-web04/synara/commit/a355cf200) Refactor ChatView and reuse storage schema machinery (#1144)
- [31ed6b9ae](https://github.com/Emanuele-web04/synara/commit/31ed6b9ae) Keep effort slider open after model selection
- [ac68cd0f5](https://github.com/Emanuele-web04/synara/commit/ac68cd0f5) Prevent transcript action labels from clipping
- [abb797240](https://github.com/Emanuele-web04/synara/commit/abb797240) Compact selection controls and fix empty slider fill
- [79bd48963](https://github.com/Emanuele-web04/synara/commit/79bd48963) Soften raised surface borders
- [a311a844a](https://github.com/Emanuele-web04/synara/commit/a311a844a) Keep effort slider thumb flush and soften its shadow
- [48699c1e7](https://github.com/Emanuele-web04/synara/commit/48699c1e7) fix(pi): queue mid-turn sends as follow-ups instead of erroring (#1135)
- [c72b2cf4e](https://github.com/Emanuele-web04/synara/commit/c72b2cf4e) Optimize CI test parallelism and reduce critical-path runtime (#1140)
- [c317f5949](https://github.com/Emanuele-web04/synara/commit/c317f5949) [codex] Fix Claude token accounting and verified usage stats (#1127)
- [65309b9e2](https://github.com/Emanuele-web04/synara/commit/65309b9e2) [codex] Fix immediate PR status updates in Environment (#1126)
- [98783f7f8](https://github.com/Emanuele-web04/synara/commit/98783f7f8) feat(desktop): add safe AppSnap window picker (#1141)
- [bf5efc58f](https://github.com/Emanuele-web04/synara/commit/bf5efc58f) truncate oversized working-tree patches instead of hard-failing (#1138)
- [0e44fd59d](https://github.com/Emanuele-web04/synara/commit/0e44fd59d) Canonicalize model display names through one shared humanizer (#1139)
- [53668e185](https://github.com/Emanuele-web04/synara/commit/53668e185) [codex] Fix missing tool calls after steering (#1124)
- [f65f34260](https://github.com/Emanuele-web04/synara/commit/f65f34260) Remove saved transcript highlights and underlines (#1131)
- [df9c90577](https://github.com/Emanuele-web04/synara/commit/df9c90577) Add selection actions and a shared mini chat composer (#1130)
- [870c9d2e9](https://github.com/Emanuele-web04/synara/commit/870c9d2e9) [codex] Show context compaction progress with an icon (#1129)
- [4457f5f40](https://github.com/Emanuele-web04/synara/commit/4457f5f40) [codex] Fix Fast mode reset and duplicate skill input (#1125)
- [ad8db6fdb](https://github.com/Emanuele-web04/synara/commit/ad8db6fdb) Remove effort level description from composer slider
- [b335765c4](https://github.com/Emanuele-web04/synara/commit/b335765c4) Tighten user message bubble spacing
- [3b16d6d00](https://github.com/Emanuele-web04/synara/commit/3b16d6d00) Refresh Safari onboarding and add magnetic effort slider
- [021090808](https://github.com/Emanuele-web04/synara/commit/021090808) feat(browser): BetterWright browser automation with saved logins and embedded popups (#1114)
- [0b82e2196](https://github.com/Emanuele-web04/synara/commit/0b82e2196) feat(web): combine highlighted Explorer editing with a fast numbered fallback (#1123)
- [3b531ad0d](https://github.com/Emanuele-web04/synara/commit/3b531ad0d) Add slider-based composer effort control (#1120)
- [1de0ab31a](https://github.com/Emanuele-web04/synara/commit/1de0ab31a) Render Cursor ACP Task calls as active subagent runs (#1119)
- [e307d251d](https://github.com/Emanuele-web04/synara/commit/e307d251d) Increase user message bubble horizontal padding
- [3b18b8fa3](https://github.com/Emanuele-web04/synara/commit/3b18b8fa3) Reduce user message bubble horizontal padding
- [49d24f4c0](https://github.com/Emanuele-web04/synara/commit/49d24f4c0) Refine chat bubbles and notification surfaces
- [4362f6ea4](https://github.com/Emanuele-web04/synara/commit/4362f6ea4) Refine chat bubble corners and seam contrast
- [cfa32ece5](https://github.com/Emanuele-web04/synara/commit/cfa32ece5) Align picker controls with app typography settings
- [df82e80a7](https://github.com/Emanuele-web04/synara/commit/df82e80a7) Merge pull request #1108 from Emanuele-web04/synara/refine-project-picker-menus
- [2e98e50b5](https://github.com/Emanuele-web04/synara/commit/2e98e50b5) Open thread pull requests in the right dock
- [7aa0ecb1a](https://github.com/Emanuele-web04/synara/commit/7aa0ecb1a) Unfill composer landing tray in both themes
- [738a3ce71](https://github.com/Emanuele-web04/synara/commit/738a3ce71) Keep orchestration dispatch responsive under slow subscribers (#1115)
- [c680c24b2](https://github.com/Emanuele-web04/synara/commit/c680c24b2) Recover pending Claude questions across restarts and expired sessions (#1113)
- [3d71dcee8](https://github.com/Emanuele-web04/synara/commit/3d71dcee8) fix(approvals): reconcile duplicate response races (#1102)
- [16f63051c](https://github.com/Emanuele-web04/synara/commit/16f63051c) fix(pi): keep extension status out of tool timeline (#1093)
- [a30dc14ff](https://github.com/Emanuele-web04/synara/commit/a30dc14ff) Merge pull request #1098 from Emanuele-web04/perf/streaming-write-floor
- [d724d3ccc](https://github.com/Emanuele-web04/synara/commit/d724d3ccc) Merge pull request #1097 from Emanuele-web04/perf/streaming-chunks-memory-cleanup
- [dd028735a](https://github.com/Emanuele-web04/synara/commit/dd028735a) fix(images): keep inspected images out of generated outputs (#1100)
- [d9e0b0ba3](https://github.com/Emanuele-web04/synara/commit/d9e0b0ba3) Keep branch PR status visible after merge or close (#1103)
- [becd74977](https://github.com/Emanuele-web04/synara/commit/becd74977) Remember each project's Local or Worktree chat preference (#1105)
- [0036f6afc](https://github.com/Emanuele-web04/synara/commit/0036f6afc) Map Claude overage telemetry to the Fable weekly sublimit (#1104)
- [348a1dfb9](https://github.com/Emanuele-web04/synara/commit/348a1dfb9) Render pull request badges as icon-only sidebar controls
- [71862f9b2](https://github.com/Emanuele-web04/synara/commit/71862f9b2) Lighten translucent sidebar surfaces
- [4a62652ee](https://github.com/Emanuele-web04/synara/commit/4a62652ee) Increase translucent sidebar blur to 4px
- [f4d1ee81f](https://github.com/Emanuele-web04/synara/commit/f4d1ee81f) Deepen dark translucent sidebar surface
- [c6328f62f](https://github.com/Emanuele-web04/synara/commit/c6328f62f) Make dark translucent sidebar surfaces sheerer
- [77a09d6f7](https://github.com/Emanuele-web04/synara/commit/77a09d6f7) Neutralize theme washes and lighten dark sidebar glass
- [d8bbe9086](https://github.com/Emanuele-web04/synara/commit/d8bbe9086) Match selected sidebar rows to the secondary surface
- [a08a0c854](https://github.com/Emanuele-web04/synara/commit/a08a0c854) Align sidebar selection with themed ink washes
- [690a9ac4e](https://github.com/Emanuele-web04/synara/commit/690a9ac4e) Reduce sidebar translucency and backdrop blur
- [1e94e7a65](https://github.com/Emanuele-web04/synara/commit/1e94e7a65) Fix Windows workspace directory links (#1085)
- [699de4f5d](https://github.com/Emanuele-web04/synara/commit/699de4f5d) Refine sidebar translucency and accent-tinted selection (#1089)
- [3b21b4c97](https://github.com/Emanuele-web04/synara/commit/3b21b4c97) fix(web): show configured project name in sidebar (#1000) (#1086)
- [59db80a17](https://github.com/Emanuele-web04/synara/commit/59db80a17) feat: maximize document previews and resolve workspace wiki links (#1023)
- [65eb5b90c](https://github.com/Emanuele-web04/synara/commit/65eb5b90c) feat: polish session restart / context-loss rail markers (#1058)
- [3aff699f8](https://github.com/Emanuele-web04/synara/commit/3aff699f8) fix: preserve bracketed math and numeric inline formulas (#1020)
- [428f07e5e](https://github.com/Emanuele-web04/synara/commit/428f07e5e) Diff view upgrades: live updates, blame, compare-with-ref, change navigation, and in-app editing (#561)
- [5651de17d](https://github.com/Emanuele-web04/synara/commit/5651de17d) [codex] Fix first-thread startup flicker (#1084)
- [4bb3dccfa](https://github.com/Emanuele-web04/synara/commit/4bb3dccfa) Allow retries after confirmed Codex startup failures (#1074)
- [bdfa181c8](https://github.com/Emanuele-web04/synara/commit/bdfa181c8) Add interactive first-run onboarding flow (#1031)
- [7fe2a9032](https://github.com/Emanuele-web04/synara/commit/7fe2a9032) Add pull request context cards to composer and transcript (#1071)
- [91e454b62](https://github.com/Emanuele-web04/synara/commit/91e454b62) fix(server): preserve Antigravity print output and terminal states (#1021)
- [bbfcd9387](https://github.com/Emanuele-web04/synara/commit/bbfcd9387) fix(server): correct provider usage and native fork resumes (#1024)
- [ede5961c5](https://github.com/Emanuele-web04/synara/commit/ede5961c5) fix: preserve activity ordering across live updates and snapshots (#1019)
- [fd309cb8d](https://github.com/Emanuele-web04/synara/commit/fd309cb8d) fix(server): handle Pi auto-retry as inline warnings, keep End task responsive (#1061)
- [d3f6b1b67](https://github.com/Emanuele-web04/synara/commit/d3f6b1b67) Optimize status animations and timeline resource usage (#1064)
- [bbae09b75](https://github.com/Emanuele-web04/synara/commit/bbae09b75) fix(models): normalize provider model display names (#1016)
- [c3685a487](https://github.com/Emanuele-web04/synara/commit/c3685a487) feat(web): let Side chats pick provider/model before first turn (#1055)
- [28ae187d1](https://github.com/Emanuele-web04/synara/commit/28ae187d1) ci: exclude all .github images from the docs-only filter (#1014)
- [e6b1aef22](https://github.com/Emanuele-web04/synara/commit/e6b1aef22) fix(server): stop mirroring Codex SQLite state into the home overlay (#1062)

</details>

## 0.8.3 - 2026-09-06

Hotfix for the missing packaged dependency reported immediately after 0.8.2.

### Added

- Added a packaged runtime dependency smoke check before release startup verification and artifact upload.

### Changed

- Remember the selected Split or Stacked diff layout across panel remounts and app restarts.
- Build the server as ESM only; remove the unused CommonJS output that could not load import-only dependencies.

### Fixed

- Ship zod as a production dependency, fixing the packaged app's Cannot find package 'zod' error when loading the ACP SDK.

### Verification

- Validated with Node 24.13.1 and Bun 1.4.2; frozen-lockfile installation passed.
- `bun run fmt:check`, `bun run lint`, `bun run typecheck`, and `bun run release:smoke` passed. Lint reported 520 warnings and no errors; all seven workspaces passed typechecking.
- `bun run build` passed all five tasks. Existing large-chunk and marketing build-output cache warnings remain.
- `bun run test` passed all eight tasks: 903 test files and 10,530 tests passed, with 11 files and 30 tests skipped. No failing tests or targeted reruns were needed.
- Focused packaged-runtime regression checks verified missing zod fails and the repaired archive passes using the installed macOS Electron runtime; the diff-layout browser regression also passed.
- Both documentation copies passed 53 documentation tests and lint; the public website build passed. Documented packaged dependency recovery and persistent diff layout.

## 0.8.2 - 2026-09-06

This release includes 43 commits since v0.8.1, covering measured performance improvements, model discovery, provider recovery, file previews, and everyday task controls.

### Added

- Added app-owned `/rename <title>` for a direct title change and bare `/rename` for conversation-based title generation. Empty drafts need a message before generation; newer title changes win over stale generated results.
- Added **Add to chat** for selections in rendered Markdown previews.
- Added **Automatically open simulator** so users can keep working in Simulator.app without automatically reopening Synara's mirrored pane. Manual opening remains available.
- Added startup phase-duration diagnostics and benchmark fixtures with raw measurements for streaming, file sorting, tool output, browser diagnostics, and native typechecking.

### Changed

- Stabilized Markdown render components so unchanged code blocks keep their DOM, soft-wrap state, and highlighting lifecycle during streaming. The automation dialog subscribes to other transcripts only while open, and the branch toolbar uses the focused usage selector.
- Coalesced streaming deltas while preserving message, completion, structural-event, and project boundaries. Running-thread synchronization and animation timing avoid redundant work without changing animation appearance.
- Replaced repeated locale-option setup with a lazy shared natural-order collator for diff lists and trees.
- Consolidated tool-output suffix parsing to avoid pathological whitespace backtracking, and count read-summary lines without allocating split arrays.
- Bounded browser diagnostics with one-pass exact JSON byte accounting instead of repeatedly serializing and discarding old entries.
- Selected prior transcript messages without normalizing each body, preserving original text and object identity.
- Wake queued turn work when a blocking claim settles instead of waiting only for the polling interval.
- Cache provider model discovery per project/runtime, deduplicate concurrent requests, bound discovery time and retry cooldowns, prioritize the selected provider, and surface degraded or failed discovery.
- Updated Pi model discovery for native OpenRouter authentication and OpenCode Zen protocols/capabilities, and upgraded its SDK for GLM 5.3 Flash and GPT-6 Astra.
- Made Claude compaction **Auto (Claude Code)** by default, separate from explicit 200k and 1M overrides. Auto leaves window resolution to Claude Code; explicit overrides remain pinned. SDK summary context usage avoids per-turn token-count requests, and gateway metadata exposes Claude context windows.
- Reduced shared harness and browser-tool schema overhead while retaining tool-specific guidance and accepted inputs.
- Restore the last-used model and options in new chats, and persist sidebar project expansion state, including legacy project aliases.
- Filter routine Codex startup noise while preserving actual errors, use a dedicated compaction icon, and soften chat card seams.
- Import the public website into `apps/marketing` with Cloudflare Workers preparation, and stop its redundant theme-class MutationObserver feedback loop.
- Upgrade the pinned Bun toolchain to 1.4.2 and make TypeScript 7 the default seven-workspace checker. Keep `typecheck:legacy` for the documented Effect diagnostic gap and compiler comparisons.
- Split CI into static, unit, browser, and build lanes; shard unit/browser tests, cache installs, and add a documentation-only fast path. Correct PR-size label synchronization ordering.
- Remove confirmed unused code and consolidate shared logic while retaining independent regression coverage.
- Bump server, desktop, web, contracts, and lockfile workspace versions to 0.8.2.

### Measured performance

These are recorded before/after experiments for the merged changes, not a new v0.8.1-versus-v0.8.2 end-to-end benchmark. The reports include workloads, controls, raw samples, and limits.

**Concurrent streaming component benchmark** — Apple M5, 32 GiB RAM, production Vite/Chromium build, one visible fenced-code message, 200 settled messages per task, 36 alternating samples across variants/workloads. Each sample used six seconds of synthetic input plus settling; providers, transport, sidebar, and Electron integration were excluded.

| Metric                     | Five streams: before → after        | Ten streams: before → after         |
| -------------------------- | ----------------------------------- | ----------------------------------- |
| Total Chromium CPU time    | 3.597 → 2.858 s (20.5% lower)       | 3.440 → 3.136 s (8.8% lower)        |
| Renderer CPU time          | 3.196 → 2.187 s (31.6% lower)       | 3.048 → 2.417 s (20.7% lower)       |
| Frame-interval p95         | 25.0 → 9.6 ms                       | 25.0 → 9.7 ms                       |
| Renderer RSS at sample end | 428.516 → 352.828 MiB (17.7% lower) | 435.562 → 350.891 MiB (19.4% lower) |

- Unchanged code-block remounts fell from 60 to zero; the closed automation hook fell from 120 renders to zero during 60 hidden-thread flushes.
- End-of-sample RSS is not peak RAM or evidence of a fixed leak. Hidden-stream RSS changed by under 0.5%, and browser-process CPU increased in the visible case even while total Chromium CPU decreased. These results do not establish whole-app, real-provider, hardware GPU, or energy savings.
- Evidence: [concurrent-thread report](docs/performance/2026-09-05-concurrent-threads/report.md).

**Isolated production-function benchmarks** — three fresh processes per variant, warmups, alternating order, matching output hashes, Apple M5, Node 24.13.0 and Bun 1.3.12:

| Operation                                         |       Before |     After | Reduction |
| ------------------------------------------------- | -----------: | --------: | --------: |
| Sort 2,048 diff paths                             |    36.452 ms |  2.593 ms |     92.9% |
| Build a 2,048-path tree                           |    18.889 ms |  1.912 ms |     89.9% |
| Derive a normal 24 KB multiline work log          |     0.742 ms |  0.460 ms |     38.0% |
| Derive an adversarial whitespace-heavy work log   | 2,287.290 ms | 0.0527 ms |   >99.99% |
| Count a 2,000-line read summary                   |    0.0355 ms | 0.0149 ms |     57.9% |
| Read 200 browser logs with large URLs             |    80.060 ms |  0.964 ms |     98.8% |
| Select prior messages from 2,000 × 2 KiB messages |     1.833 ms | 0.0195 ms |     98.9% |

- Large diagnostic reads returned the same 40 entries and 326,893-byte payload. Ordinary small diagnostic reads and the unchanged transcript control were within noise and are not counted as wins.
- The isolated website theme probe reduced 427–430 observer callbacks per 1.1 seconds to zero across light/dark/system behavior; this is not a full-site CPU or first-paint measurement.
- Evidence: [operation report](docs/performance/2026-09-06/report.md).

**Developer checks** — seven workspaces, Bun 1.4.2, three alternating samples per command/cache state, Turbo result caching disabled:

- Cold compiler-cache median: 56.339 → 12.528 seconds, 77.8% lower (4.50×).
- Unchanged incremental median: 12.451 → 3.170 seconds, 74.5% lower (3.93×).
- These compare legacy and native typechecking, not app runtime. The native checker has a verified Effect `importFromBarrel` diagnostic gap, so the timings do not imply equivalent diagnostic coverage.
- Evidence: [native-typecheck qualification](docs/performance/2026-09-06/native-typecheck.md).

### Fixed

- Preserve user scroll ownership during streaming; tool-only activity, buffering, and reconnects do not count as live assistant text.
- Avoid the empty-home flash while the first message is being dispatched; keep provider status and turn durations truthful and stable.
- Keep read tasks from reappearing as unread after restart, and restore orchestrator approval cards.
- Revalidate open text, image, PDF, and diff views after file changes without overwriting dirty text edits.
- Prevent background simulator events from stealing focus, preserve task ownership and deferred requests, and respect manual pane closure.
- Recover stale Devin sessions before prompt dispatch and restart wedged child runtimes instead of waiting for the full idle budget.
- Correct Pi/OpenCode agent-gateway tool schemas and provider-event whitespace sanitization.
- Preserve Unicode character boundaries in handoff bootstrap text, and deduplicate stale-recovery refinements.
- Read Factory Droid usage from available Factory credentials, including supported secure storage.
- Fix native Windows Cursor/Devin detection, hide Effect child-process windows, and accept PID zero in process snapshots.
- Back off repeated failing Git remote refreshes and reset the failure count after success.
- Avoid false checkpoint-baseline failure when a task starts in a plain directory and initializes Git during the turn; an absent historical baseline remains absent.
- Fix the KeybindingsToast cold-shard test race and Antigravity adapter teardown race.

### Verification

- Verified with Node 24.13.1 and Bun 1.4.2; frozen-lockfile installation passed. The release lockfile changes only the four workspace versions.
- `bun run fmt:check` passed; `bun run lint` passed with 520 warnings and no errors.
- `bun run typecheck` and the additional `bun run typecheck:legacy` both passed all seven workspaces.
- `bun run release:smoke` passed.
- The first `bun run build` failed during Next prerendering with `Expected workStore to be initialized`; after dependency installation settled, the full rerun passed all five tasks in 1m54.184s. No application code change was needed. Existing large-chunk and Browserslist advisories remain.
- Full `bun run test` passed all eight Turbo tasks in 6m7.704s: 903 test files and 10,528 tests passed; 11 files and 30 tests were skipped. No targeted test rerun was needed.
- Public documentation was audited against all 43 source commits and updated in both website copies. Both copies passed documentation checks (52 tests plus integrity validation), lint, and build. The first external-site build exposed a release-copy syntax error, which was corrected before the successful rerun. Stale local Astro/OpenNext generated artifacts were moved out of the monorepo website before its lint pass.
- The compiled website changelog was checked in the browser, and release versions plus the in-app/monorepo website highlights were verified to match.

## 0.8.1 - 2026-09-02

### Added

- Added Claude Fable 5.1 as the leading Claude Agent model, with the exact `claude-fable-5-1` slug, a one-million-token context window, always-on thinking, Low through Max effort, no fast-mode lane, and no legacy ultrathink prompt mode.
- Added Fable 5.1 to Pi's repaired Anthropic catalog so authenticated Pi installations whose upstream model list predates the release can still select it alongside Fable 5 and Opus 4.8.
- Added Fable 5.1 aliases for `fable`, `fable-5.1`, `claude-fable-5.1`, `claude-fable-5-1`, and bracketed context-window descriptors while preserving explicit Fable 5 selections.
- Added Fable 5.1 to Cursor's compatible one-million-token Claude variant fallback.
- Added Claude's model-scoped Fable weekly allowance to usage surfaces, parsed from Anthropic's current `weekly_scoped` limits array and ordered directly after the general Weekly window.
- Added shared platform process, environment, filesystem, WSL, lifecycle, and process-tree teardown boundaries for provider, Git, updater, voice, terminal, and server execution.
- Added typed provider startup phases and failure reasons so executable lookup, spawn, handshake, authentication, protocol, timeout, cancellation, and unproven-exit failures remain distinguishable.
- Added a Windows runtime boundary check to CI and internal architecture documentation for executable resolution, process launch, WSL routing, teardown proof, filesystem durability, and provider integration.

### Changed

- Reduced large-database startup work by accepting the live shell-stream snapshot as authoritative and issuing a deferred query only when that subscription generation still lacks a snapshot, including reconnect recovery.
- Pruned open-turn journal rows for purged, deleted, or archived threads without a live projected turn, and stopped replaying a turn after its first failure instead of repeating hundreds of warnings on every boot.
- Scaled SQLite page-cache and mmap budgets to physical memory: 64 MB / 256 MB below 12 GB, 128 MB / 512 MB below 24 GB, and the existing larger defaults on higher-memory systems.
- Preloaded the Google Fonts stylesheet so a slow or unavailable network cannot hold back the application module during startup.
- Gave active Devin tool calls a separate one-hour inactivity budget while retaining the ordinary 30-minute idle budget for turns without an active tool; both remain environment-configurable.
- Centralized native Windows, POSIX, and WSL launch planning, including PATH/PATHEXT lookup, qualified relative commands, `.cmd` and `.bat` shims, PowerShell scripts, argument serialization, working directories, and command-not-found mapping.
- Centralized supervised process-tree teardown and made success require proof that the owned root and captured descendants exited; Windows escalation revalidates creation identity before signalling.
- Changed the Git text-generation picker to include only dedicated one-shot backends: Codex, Cursor, OpenCode, and Factory Droid.
- Tightened composer vertical spacing and aligned picker capsules, project reset highlighting, and folder/reset icon treatment.
- Bumped Synara release package versions to `0.8.1` across server, desktop, web, and contracts packages and refreshed `bun.lock` workspace metadata.

### Fixed

- Fixed the plain Claude `fable` alias continuing to select Fable 5 instead of Fable 5.1, while keeping `fable-5` and `claude-fable-5` backward compatible.
- Fixed older Pi Anthropic catalogs omitting Fable 5.1 and fixed Cursor fallback matching not recognizing its one-million-token context variant.
- Fixed Claude's per-model weekly limits disappearing after Anthropic moved them from nullable legacy top-level fields into scoped rows under `limits[]`.
- Fixed startup fetching and transferring the large shell snapshot up to three times even when the live stream had already supplied it.
- Fixed deleted or unrecoverable turns being replayed on every boot and producing repeated stack-trace warnings before the server began listening.
- Fixed low-memory machines using SQLite cache and mmap defaults large enough to increase swap pressure.
- Fixed Devin's watchdog terminating healthy turns whose current tool produced no events for longer than the ordinary idle window.
- Fixed stale Devin events from older turns refreshing the active watchdog clock.
- Fixed Devin's boolean `get_output.block` field being rejected by strict ACP decoding before the tool could complete; the normalization is restricted to that provider, method, and field.
- Fixed project and project-task creation reporting success before a real task ID existed, and fixed superseded navigation replacing a newer route.
- Fixed Git-writing settings exposing chat-only providers without a dedicated one-shot text-generation backend and omitting Cursor despite its supported backend.
- Fixed qualified relative executables resolving against the server directory instead of the requested child working directory.
- Fixed Windows and WSL process launches duplicating provider-specific command lookup, shell, quoting, and working-directory rules.
- Fixed provider startup deadline expiry being reported as cancellation instead of a handshake timeout.
- Fixed process teardown reporting success without proving root and descendant exit, targeting a reused Windows PID, or losing proof state across bounded snapshot retries.
- Fixed new task creation being allowed before project hydration completed.

### Verification

- `bun run fmt:check` passed across 18,823 files.
- `bun run lint` passed with 489 warnings and 0 errors.
- `bun run typecheck` passed across all 7 packages; two existing Effect Schema suggestions and Astro/Vite deprecation notices remained informational.
- `bun run release:smoke` passed across the 1,448-package dependency graph.
- `bun run build` passed with all 5 Turbo tasks successful; existing deprecation, plugin-timing, stale Browserslist, and large-chunk advisories remained non-blocking.
- Full `bun run test` passed with all 8 Turbo tasks successful in 3m47.485s: 890 test files and 10,247 tests passed, with 4 files and 22 tests skipped by platform or integration gates. No targeted rerun was needed.

## 0.8.0 - 2026-09-01

### Added

- Added Devin CLI as a first-class ACP provider, including fresh-session startup, native resume, model and command discovery, Plan mode, conversation compaction, file and image attachments, MCP server configuration, account usage, authentication guidance, and capability-aware UI behavior.
- Added provider-neutral WebMCP browser tools so every compatible runtime can discover and operate the task-owned browser through the same bounded tool surface, timeout policy, result shaping, tab ownership, and cleanup lifecycle.
- Added in-thread transcript search through a floating Cmd/Ctrl+F panel with live result counts, previous and next navigation, keyboard controls, match highlighting, and focused scrolling across real conversation messages.
- Added server-backed provider enablement so disabling a provider stops its lifecycle execution rather than only hiding it in the client.
- Added provider-originated context-change events to the conversation so compaction and other runtime context transitions remain visible and attributable.
- Added usage coverage for every enabled provider whose account state Synara can verify, with shared refresh, caching, and presentation behavior.
- Added customizable ordering for the primary sidebar navigation, including drag-and-drop controls, durable local persistence, cross-window synchronization, forward-compatible defaults, and invalid-state recovery.
- Added durable parent-linked side-chat panes with persisted leases, restoration after refresh, safe expiry, and lease preservation across archive and unarchive operations.
- Added macOS Reveal in Finder for changed files and split the edited-file actions into explicit Open, Reveal, and Copy Path operations.
- Added absolute workspace-path badges while refusing to turn missing relative references into misleading file chips.
- Added Factory Droid support to the shared Git text-generation flow for commit messages and pull-request descriptions.
- Added explicit acceptance of dot-prefixed attachment, preview, plugin, favicon, and generated-image filenames.
- Added numeric PDF destination resolution so document links can open the intended page instead of treating the destination as an unresolved label.
- Added migration recovery consent and repair surfaces for failed database upgrades, including runtime identity checks, recoverable backups, deliberate restore or retry choices, and durable recovery state.

### Changed

- Removed the retired Kilo Code provider and migrated existing Kilo provider sessions, tasks, favorite-provider preferences, and saved editor-tab state to OpenCode.
- Isolated source desktop launches from installed Stable and Canary data by default while preserving explicit home-directory behavior and existing installed-app identities.
- Improved live-conversation performance by loading model options sooner, reducing repeated sidebar projections, limiting visibility-driven updates, and keeping the common transcript path free of unnecessary virtualization churn.
- Restricted auto-scroll re-arming to real transcript messages and active assistant text; buffering, reconnecting, approvals, tool-only activity, and generic working state no longer masquerade as new streamed content.
- Strengthened queued follow-up dispatch so a follow-up waits until the previous turn actually starts, backgrounded tasks promote queued work, constrained-capacity previews retain their contents, and idle-stop recovery resumes from the durable cursor.
- Consolidated WebMCP discovery and invocation behind provider-neutral server and web contracts instead of runtime-specific browser plumbing.
- Moved provider visibility policy into shared server state so Settings, runtime startup, provider discovery, usage, and client presentation agree on the enabled set.
- Hid routine provider lifecycle hooks from the transcript while retaining user-relevant context transitions, errors, tools, and recovery evidence.
- Refined the What’s New popout, chat picker pills, composer rail, folded segmented assistant messages, environment usage display, and release-history layout.
- Preserved one self-contained final assistant response after segmented text, tools, folded output, and terminal settlement instead of leaving the visible conclusion dependent on earlier fragments.
- Improved edited-file actions, path copying, preview retention, and platform-native file management without combining unrelated operations behind one ambiguous control.
- Upgraded Electron from 40.10.6 to 43.4.1 to include the fix for CVE-2026-70608 and the corresponding Chromium security updates.
- Changed POSIX desktop update shutdown to ask the backend to exit gracefully before replacement, while retaining a bounded fallback for unresponsive processes.
- Abbreviated Windows home-directory paths consistently in the interface and preserved valid Windows drive roots during path normalization.
- Tightened provider runtime identity handling: source validation consults the cwd only when no launcher digest exists, prerelease versions preserve every identifier segment, and native resume is gated by the provider's actual capability.
- Made Claude Auto context variants match their exact advertised context limits and fail closed when a model descriptor is ambiguous.
- Made long-thread pagination lossless across message boundaries, bound continuations to the original message version and offset, and count Unicode-safe character offsets instead of byte slicing.
- Refreshed provider usage from the post-compaction boundary so stale pre-compaction accounting is not presented as current state.
- Bumped Synara release package versions to `0.8.0` across server, desktop, web, and contracts packages and refreshed `bun.lock` workspace metadata.

### Fixed

- Fixed queued follow-ups racing the turn ahead of them, dispatching only in the foreground, losing preview content under capacity pressure, or failing to resume after an idle provider stop.
- Fixed streamed assistant replies being duplicated when reconnect, replay, settlement, and live projection overlapped.
- Fixed sidebar and transcript streaming paths doing repeated scans and measurement work that could cause visible toggle lag or scroll-follow feedback loops.
- Fixed transcript search and auto-follow treating tool rows or non-message runtime activity as newly arrived conversation text.
- Fixed provider disablement being cosmetic: hidden providers can no longer continue to start sessions or execute lifecycle work on the server.
- Fixed provider context changes and meaningful update notices disappearing when lifecycle events were filtered or availability checks overlapped.
- Fixed source builds silently sharing installed-app state, and fixed migration recovery proceeding without verifying the launcher, database identity, backup, and user-selected recovery path.
- Fixed Kilo removal leaving legacy provider kinds, favorite selections, or editor-tab state that could no longer be opened.
- Fixed ACP session-load replay being projected as fresh user-visible activity before the restored session was ready.
- Fixed native provider resume being attempted when the selected runtime could not safely support it.
- Fixed Claude Auto selection accepting near matches for the wrong context window and fixed provider usage remaining stale after a compaction boundary.
- Fixed long-message continuation losing or repeating text, accepting a stale message revision, or splitting Unicode content at an unsafe offset.
- Fixed side-chat panes losing their durable parent relationship or active lease after refresh, expiry reconciliation, archive, or unarchive.
- Fixed pull-request attribution using neighboring workspace state instead of the owning task's thread-specific Git context.
- Fixed task created-at ordering drifting after updates and reconciliations.
- Fixed numbered terminal shortcuts selecting the wrong terminal when multiple sessions were open.
- Fixed missing relative workspace references rendering as actionable chips and valid absolute paths losing their file-badge affordance.
- Fixed Copy Path operating through the wrong desktop action and added a platform-native Reveal in Finder path on macOS.
- Fixed dot-prefixed images, attachments, previews, plugins, favicons, and generated files being rejected as extensionless or unsafe despite having an intentional name.
- Fixed numeric PDF destinations being ignored or misclassified instead of resolving to a page.
- Fixed untrusted `__proto__`, `prototype`, and `constructor` keys being able to cross object-decoding boundaries and influence inherited state.
- Fixed Windows drive-relative paths being treated like safe absolute paths while preserving legitimate drive roots and UNC behavior.
- Fixed payload and stream limits counting JavaScript characters instead of UTF-8 bytes, including split multibyte characters at a boundary.
- Fixed IPv4-mapped IPv6 addresses bypassing local-network and destination policy checks.
- Fixed empty agent-mention payloads and empty terminal chunks at a size limit producing ambiguous lifecycle behavior.
- Fixed Bun close-listener handling conflating distinct listener registrations during process settlement.
- Fixed delivery-block boundaries accepting one event beyond the configured limit or dropping the event that established the boundary.
- Fixed malformed, negative, fractional, or unbounded `Retry-After` values controlling provider retry scheduling.
- Fixed provider credential temporary files sharing predictable locations instead of using isolated, lifecycle-owned temporary paths.
- Fixed legacy workspace fallback state and malformed shared local-storage preferences surviving after their owning state was cleared.
- Fixed Windows home paths displaying in expanded or inconsistent forms across provider and workspace surfaces.
- Fixed provider prerelease versions losing hyphenated identifier segments during comparison and update checks.
- Fixed POSIX updater shutdown terminating the backend too abruptly for ordinary cleanup and state settlement.
- Fixed Electron builds remaining on a release line affected by CVE-2026-70608.

### Contributors

- Thanks to Emanuele Di Pietro, Chara (`cmdr-chara`), NachoooLK, Leonardo Bassanello (`xFurti`), Kartik (`kartikkabadi`), Tasi Balázs (`balazstasi`), Keyur (`keyurbodar`), and `sanirudh17` for the commits and merged pull requests included in this release.

### Verification

- `bun run fmt:check` passed across 16,081 files.
- `bun run lint` passed with 489 warnings and 0 errors.
- `bun run typecheck` passed across all 7 packages; two existing Effect Schema suggestions remained informational.
- `bun run release:smoke` passed across the 1,448-package dependency graph.
- `bun run build` passed with all 5 Turbo tasks successful; existing deprecation, plugin-timing, stale Browserslist, and large-chunk advisories remained non-blocking.
- Full `bun run test` passed with all 8 Turbo tasks successful in 3m19.63s. Web passed 336 files / 4,216 tests. Server/CLI passed 378 files / 4,387 tests with 3 skipped files / 16 skipped tests. No targeted rerun or flaky product failure was needed.

## 0.7.3 - 2026-08-21

### Added

- Added a desktop quit confirmation that lists every running or connecting chat before Synara closes, with Cancel and Quit actions and a persisted "Resume chats automatically" choice.
- Added durable quit-resume records: confirmed quits snapshot exact in-flight turn identities before interruption, consume the record once at next startup, and dispatch one ordinary continuation only when the task and project are still eligible and unchanged.
- Added a draggable, eight-way resizable browser panel that floats over the owning conversation, shares its existing browser tabs and cookies, stays clamped to the visible chat surface, and can move back into the right sidebar without creating a second live guest.
- Added provider-usage adapters and UI coverage for Antigravity, Cursor, Grok, OpenCode, and locally authenticated providers, extending the existing Codex and Claude usage views to every signed-in provider Synara can verify.
- Added provider-specific usage explanations for runtimes that expose local authentication but no machine-readable personal quota, plus shared caching, cooldown, stale-snapshot, pacing, and learn-more behavior.
- Added first-class Windows WSL workspace launching: `\\\\wsl.localhost` and `\\\\wsl$` paths resolve to `wsl.exe --distribution <distro> --cd <linux-path> --exec ...`, and ACP session payloads receive the corresponding Linux cwd.
- Added a custom title-bar preference for Windows and Linux under Settings → Appearance, including native window controls, persisted boot-time frame selection, explicit restart-required state, and a one-click relaunch action.
- Added `synara-server-<version>.tar.gz` to GitHub releases, built from the staged server package and bundled web client alongside the desktop artifacts.
- Added `synara server status`, with persisted-runtime discovery, explicit `--url`, optional `--json`, runtime identity verification, `/health` projection readiness, a three-second bounded probe, and a non-zero exit when the server is not ready.
- Added cross-provider side chats through `/side <provider> <prompt>`, accepting provider kinds or display names, validating installed targets, and retaining the guarded source-thread relationship.
- Added shell-visible Windows ICO generation and refresh support so runtime app-icon changes propagate to the taskbar and revert cleanly to the default icon.

### Changed

- Reduced renderer and GPU work during live output by removing repeated array scans, narrowing runtime-event projections, avoiding redundant visual effects, and pausing sidebar spinner animation while hidden.
- Reduced Git-stat overhead by aggregating repository statistics in one pass and avoiding repeated work across unchanged inputs.
- Trimmed idle Codex discovery processes sooner while restarting their grace period after real catalogue requests, reducing process-tree memory without interrupting active discovery.
- Reworked workspace search presentation and ranking with fuzzy match emphasis, head-clipped parent paths, direct directory opening, stable memoized rows, a 30-result mount bound, 100 ms server-query debounce, and short-lived query reuse.
- Extended Antigravity activity handling so tool cards stream as the provider emits them, completed turns settle without a reload, subagent activity routes to child tasks, and background tasks keep the CLI alive until the real terminal outcome.
- Aligned Grok reasoning choices with each live CLI model ladder and kept Cursor's fast-mode/Grok-HIGH controls from remaining active after their toggles are turned off.
- Sorted Claude models by live catalogue order, widened provider picker menus, and made provider metadata exhaustive at compile time.
- Refined the empty landing surface, composer borders, muted task labels, disclosure contrast, translucent sidebar seams, and light/dark overlays around one consistent shell treatment.
- Restyled the running-chat quit dialog to match the command palette and refined its keyboard, disabled, overflow, and progress states.
- Extracted the browser tab strip into a focused component and made new-tab selection preserve the current tab context and ownership more predictably.
- Refreshed the README and internal architecture, provider, CI, packaging, quick-start, and workspace-layout documentation to match the shipped runtime.
- Bumped Synara release package versions to `0.7.3` across server, desktop, web, and contracts packages and refreshed `bun.lock` workspace metadata.

### Fixed

- Fixed desktop shutdown silently interrupting active work without naming the affected chats or offering a guarded continuation on next launch.
- Fixed quit-resume races by writing before the renderer allows shutdown, bounding the acknowledgement wait, expiring records when a quit is abandoned, atomically claiming records at startup, and rechecking each continuation precondition inside serialized dispatch.
- Fixed assistant replies that completed in the background remaining hidden until reload; terminal fences now remain attached until the final post-settle assistant reply is projected.
- Fixed floating browser resize, drag, tab, and dock transitions that could move the native guest outside its host, leave two surfaces competing for the live guest, or forget the requested task across route changes.
- Fixed Antigravity background tasks being interpreted as an immediate terminal CLI outcome and killed before their real completion event.
- Fixed OpenCode raw assistant deltas being dropped from streamed replies.
- Fixed Cursor fallback model options disappearing and fast/Grok-HIGH state staying active after the corresponding control was disabled.
- Fixed Grok drafts restoring an unsupported `Extra High` effort and custom models accepting efforts outside their advertised ladder.
- Fixed provider usage refreshes losing useful evidence during transient errors or rate limiting, and isolated provider-specific authentication and quota parsing from the rest of the catalogue.
- Fixed `cmd.exe`-style launches being used for WSL UNC workspaces; commands now execute inside the owning distribution and ACP receives a Linux path instead of a Windows UNC cwd.
- Fixed local-folder mentions rejecting UNC paths, the project browser misreading Windows home paths, and Windows workspace comparisons treating case-only differences as different roots.
- Fixed runtime Windows taskbar-icon changes updating Electron state without producing a shell-visible ICO or refreshing Explorer's cached icon.
- Fixed custom title-bar preferences drifting between renderer settings and the frame state read before `BrowserWindow` creation.
- Fixed permanent task deletion reclaiming unowned worktrees; cleanup now preserves paths Synara does not own while still removing eligible managed worktrees.
- Fixed duplicate approval responses being accepted after reconnect or retry by persisting idempotency at the orchestration decider.
- Fixed malformed feature-flag storage leaving stale values cached instead of returning to canonical defaults.
- Fixed diagnostic resume cursors being accepted beyond the current high-water mark.
- Fixed WebSocket authentication tokens being appended to off-origin URLs and duplicate HTTP Origin headers being accepted.
- Fixed quoted, wrapped, truncated, serialized, reordered, compact, URL-embedded, shell-composed, and unterminated secret values leaking through process or provider diagnostics.
- Fixed restricted provider children inheriting OpenAI credentials and private scratch workspaces being recovered or reused without revalidating ownership, location, and restrictive permissions.
- Fixed diagnostic sanitizers performing unbounded traversal, losing safe JSON number tokens, or ambiguously interpreting command substitutions and partial assignments.
- Fixed process output and bounded stream truncation breaking UTF-8 characters split across buffer boundaries.
- Fixed multi-dot attachment names losing their final extension during content-type normalization.
- Fixed normalized provider command-not-found errors being misclassified and malformed Claude authentication JSON being treated as usable state.
- Fixed Codex prerelease versions losing hyphenated suffix segments during compatibility checks.
- Fixed route restoration applying a stale snapshot after a newer refresh had already won, and fixed large-state projection repair repeatedly resnapshotting while an existing repair was in flight.
- Fixed workspace search opening stale or poorly ranked results, clipping the most useful part of long paths, and mounting more result rows than the palette can display.
- Fixed project script shortcuts disappearing from the empty landing tray before a first chat was created.
- Fixed the iOS Simulator helper failing to locate SimulatorKit after its Xcode 27 beta framework move.
- Fixed browser policy copy that incorrectly implied localhost and `file:` navigation were universally blocked.
- Fixed merged CI fixtures for Antigravity retention, scratch-workspace cleanup, platform-specific geometry, and release-smoke coverage after the server tarball job was added.
- Reverted the experimental DeepSeek Harness provider before release; v0.7.3 does not advertise or ship that provider.

### Contributors

- Thanks to `xFurti`, `cmdr-chara`, `diliprt`, `sebbonit`, `D3nnis72`, `rogalio`, `sanirudh17`, `kartikkabadi`, `aristotl-dylan`, and `HumanInTheLoopReal` for the provider, platform, browser, runtime, documentation, performance, and reliability work merged into this release.

### Verification

- `bun run fmt:check` passed across 15,979 files.
- `bun run lint` passed with 451 warnings and 0 errors.
- `bun run typecheck` passed across all 7 packages; only existing Effect informational messages were reported.
- `bun run release:smoke` passed across the 1,448-package dependency graph after rerunning with normal temporary-directory access.
- `bun run build` passed with all 5 Turbo tasks successful; existing Astro/Vite deprecation, plugin-timing, and large-chunk advisories remained non-blocking.
- Full `bun run test` passed with all 8 Turbo tasks successful in 3m9.669s. Web passed 320 files / 4,029 tests. Server/CLI passed 355 files / 4,060 tests with 3 skipped files / 16 skipped tests. No targeted rerun or flaky product failure was needed.

## 0.7.2 - 2026-08-15

### Added

- Added a live iOS Simulator pane to the right dock on macOS, with device selection, first-run setup guidance, live H.264 video, direct mouse and keyboard input, hardware controls, screenshot and recording actions, and automatic pane opening when an agent launches an app.
- Added provider-agnostic device tools for listing, booting, installing, launching, opening URLs, tapping, swiping, typing, pressing buttons, taking screenshots, reading the accessibility tree, and scrolling to named elements, with explicit approval boundaries for input and URL actions.
- Added persistent thread goals with a stacked composer panel, elapsed-time tracking, pause and resume controls, achievement history, message-footer badges, provider prompt injection, and MCP read/write support.
- Added autonomous goal continuation after clean turn completion, including startup recovery, user-queue priority, plan and interaction gates, pause-on-interrupt or failure behavior, terminal-session retries, and an explicit blocked state to prevent endless retries.
- Added an evidence-first Debug interaction mode built around observe, reproduce, investigate, fix, and verify, with `/debug` and `/default` commands, draft and fork persistence, provider-wide prompt budgeting, and structured reproduction questions where supported.
- Added workspace-wide file search with `Cmd/Ctrl+P` and grep-style content search with `Cmd/Ctrl+Shift+F`; results include paths, line numbers, matching snippets, keyboard navigation, and direct opening in the right-dock file pane.
- Added stacked pull-request support with stack position badges, ordered stack navigation, stack-aware readiness and merge confirmations, GitHub async-merge polling, fallback compatibility, and repository-wide cache refresh after stack mutations.
- Added message-level thread forking, visible fork-source dividers, source-aware fork titles, and native session forks across Claude, Cursor, Droid, Grok, and OpenCode in addition to Codex.
- Added configurable chat-width presets for focused, standard, and wide transcript layouts.
- Added file-link context actions for copying paths, opening files in Synara, and revealing supported references in the workspace.
- Added reproducible production-path streaming benchmarks covering reducer, store, selector, derivation, layout, frame, and flush behavior.
- Added a dark-mode macOS dock icon that follows system appearance automatically.

### Changed

- Reworked the iOS Simulator integration around a source-shipped Swift/Objective-C helper compiled with the user's selected Xcode, source-digest cache invalidation, a deny-by-default Seatbelt profile, bounded binary WebSocket framing, slow-client frame dropping, and persisted ownership recovery after crashes.
- Changed thread goals from passive labels into durable objectives that remain intact across turns, provider retries, subagent steering, restarts, and user edits while giving queued user work precedence over automatic continuation.
- Replaced automation's single stop-on-error switch with a durable consecutive-failure threshold that defaults to three, can be disabled, records failure counts and disable reasons, resets after success, and requires deliberate re-enabling after failure shutdown.
- Reworked automation creation and editing with inline schedule and policy fields, risk confirmation, clearer disabled-state explanations, optimistic concurrency retries, and preservation of user edits when scheduler updates race the form.
- Improved large-database startup by preserving the SQLite primary-key range scan during projector replay and tuning bounded cache and memory-map settings; measured replay on the documented 2.9 GB fixture dropped from minutes to about 24 seconds.
- Reduced visible streaming work by batching text commits, stabilizing transcript tail keys, coalescing highlight scroll work, skipping irrelevant overlap measurements, caching message-trail projections, narrowing Zustand selectors, and backing off idle reconciliation polls.
- Reordered assistant message presentation so text segments and tool rows follow provider event order, compacted reasoning anchors to its first update, task-list progress collapses into one evolving row, and the turn changes card appears before assistant footer actions.
- Centralized native fork behavior and provider-input composition, added capability and in-flight-turn checks, preserved resumability metadata and turn counts, and retained transcript reconstruction as the safe fallback when a provider cannot fork natively.
- Consolidated commit, push, and pull-request dialogs around shared Git action chrome, made primary actions more direct, preserved disabled reasons, and aligned action glyphs and message controls.
- Changed provider selection to show installed providers, warm each available provider's model catalogue for new threads, and resolve prefetch paths from explicit worktree intent and real availability.
- Improved model and usage discovery by isolating malformed descriptors, exposing Pi's maximum thinking level, bounding Codex archive reads to 64 KiB tail chunks, and humanizing unknown rate-limit windows.
- Improved cross-platform presentation with runtime Windows taskbar-icon refresh, simpler sidebar control icons, refined fork and message-action glyphs, and day-aware message timestamps.
- Hardened release automation with least-privilege token permissions, explicit clean-lane policy checks, deterministic Windows dependency installation, and version-scoped unsigned-Windows publication support.
- Bumped Synara release package versions to `0.7.2` across server, desktop, web, and contracts packages and refreshed `bun.lock` workspace metadata.

### Fixed

- Fixed stale-generation terminal events being dropped instead of settling the owning turn, including terminal-session retry behavior for paused goal continuations.
- Fixed oversized Pi and other provider runtime payloads being quarantined wholesale; payloads are now bounded and truncated while preserving the event and its diagnostic meaning.
- Fixed previously unmapped provider events disappearing from the transcript by surfacing a bounded fallback row with captured diagnostic context.
- Fixed OpenCode running-tool titles persisting leading or trailing whitespace and lifecycle-detail parsing rejecting otherwise valid untrimmed tool output.
- Fixed assistant text being grouped apart from intervening tool activity, compacted reasoning attaching to its final update, and repeated task-list progress producing a noisy stack of rows.
- Fixed streamed text repeatedly re-arming bottom-stick behavior, trail highlights scheduling redundant scroll work, and overlap checks reading layout when only the live tail grew.
- Fixed projection cursors entering a permanent resnapshot loop when a page made no progress, and preserved retry backoff when a newer snapshot superseded an older projection.
- Fixed large projector replays falling into an event-type index scan and temporary sort for every page instead of using the integer primary-key range.
- Fixed queued-turn promotion losing durability across replay and restart, and fixed goal continuation races that could resurrect paused work, outrank queued user input, or loop after failures and timeouts.
- Fixed automation failures being double-counted during duplicate reconciliation, concurrent scheduler writes overwriting edits, manual reruns clearing failure evidence, and legacy run threads or max-iteration stops lacking durable source and reason metadata.
- Fixed new-chat drafts being lost across thread switches, saved-draft races during automation setup, and new-thread model prefetch using the wrong cwd or warming unavailable providers.
- Fixed branch context being lost when switching or resuming threads, sends continuing against a transient branch mismatch, and the chat header hiding Pull when the current branch is behind upstream.
- Fixed the Git diff preview retaining the previous file after selection changed, commit/push controls losing their disabled explanation, and worktree cancellation losing its durable UI state.
- Fixed Windows Bun PTY startup, taskbar icons not refreshing after runtime icon changes, macOS quit intent being lost when updater shutdown failed, and valid empty desktop snapshots triggering a repair loop.
- Fixed malformed provider model descriptors invalidating otherwise healthy catalogues, warm model discovery covering only one provider, and Pi's highest supported thinking level being omitted.
- Fixed Codex usage polling loading entire archives and risking backend heap growth; archive scans now read backward in bounded chunks, split CRLF records correctly, and skip oversized trailing records without retaining them.
- Fixed file and snippet search escaping the active workspace scope, stale queries opening the wrong result set, and search palette presentation retaining unnecessary surrounding UI.
- Fixed iOS Simulator helper first-run deadlocks, stale attachments acknowledging input against dead boots, silent undelivered HID events, out-of-bounds taps being clamped, helper cache staleness, and Synara-owned simulators being orphaned after crashes.
- Fixed source-control and transcript polish issues including footer ordering, misleading rate-limit labels, day-ambiguous timestamps, and inconsistent action-icon alignment.
- Fixed a release-blocking TypeScript mismatch in the Codex usage tail-read test by explicitly typing the positional `FileHandle.read` spy calls without weakening runtime assertions.

### Verification

- `bun run fmt:check` passed across 15,903 files.
- `bun run lint` passed with 426 warnings and 0 errors.
- The first `bun run typecheck` identified one release-blocking tuple-overload error in `apps/server/src/providerUsageSnapshot.test.ts`; the test typing was corrected, its focused suite passed 3/3, and the full rerun passed all 7 packages.
- `bun run release:smoke` passed across the 1,448-package dependency graph.
- `bun run build` passed with all 5 Turbo tasks successful; existing Astro/Vite deprecation, plugin-timing, and large-chunk advisories remained non-blocking.
- Full `bun run test` passed with all 8 Turbo tasks successful in 2m56.443s. Web passed 311 files / 3,944 tests. Server passed 334 files / 3,826 tests with 3 skipped files / 16 skipped tests. No targeted rerun or flaky product failure was needed.

## 0.7.1 - 2026-08-09

### Added

- Added editable Explorer previews with dirty-state tracking, guarded saves, path validation, and clearer file breadcrumbs for focused code and text edits inside Synara.
- Added a complete commit-push-create-PR workflow with draft or ready-for-review actions, progress-aware controls, safer upstream handling, and post-action refresh that cannot hold the successful Git action open.
- Added live thread Git metadata propagation so branch, worktree, push, and pull-request changes made during a turn update task state without waiting for a later manual refresh.
- Added worktree setup progress, cancellation before dispatch, and a local-checkout action, while restoring automatic branch creation and attachment for worktree tasks.
- Added Codex thread forks for imported history while preserving source-thread provenance.
- Added server-side provider usage caching and one shared batch query for sidebar and Settings usage surfaces, including refresh joining, identity fencing, throttling, and retention of the latest healthy snapshot.
- Added customizable desktop app icons with persisted renderer-startup selection and native-style macOS artwork, plus a compact visual theme picker in Settings.
- Added in-app release history to the sidebar Help menu and a shortcut for copying the active task ID.
- Added reproducible performance harnesses for provider-runtime journal appends, orchestration replay, and the web transcript hot path.

### Changed

- Changed desktop backend readiness from a fixed deadline to a cancellable uncapped wait, so large histories and slow migration or replay work do not become false startup failures.
- Reworked WebSocket reconnects with cancellable bounded backoff and strengthened late-event reconciliation after the backend becomes available.
- Prefiltered orchestration replay in SQL before payload decoding and scoped runtime event persistence to avoid duplicate or irrelevant replay work.
- Reduced steady-state runtime and transcript work with adaptive polling, selective thread-detail subscriptions, reference-counted keyed locks, and more focused event ingestion.
- Serialized and coalesced Git refreshes per checkout, detached terminal Git action success from metadata refresh, and added bounded retry handling when expensive WebSocket read capacity is saturated.
- Improved branch, worktree, and pull-request recognition, including configured-model branch naming, mid-turn VCS propagation, merged-PR badge repair, and more reliable comment metadata parsing.
- Consolidated provider usage around server-owned credential and snapshot lifecycle handling for Claude, Codex, and Cursor, with safer keychain fallback and refresh-token behavior.
- Improved provider session startup, cancellation, resume, and settlement across Codex, Claude, OpenCode, Grok, Kilo, Antigravity, and ACP adapters.
- Refined live transcript status so Loading covers only unacknowledged sends, Working remains visible through the first-send gap, and takeover or lost acknowledgements cannot leave the composer spinner stuck.
- Guarded streaming timeline rows against painted overlap while preserving the simpler non-virtualized p