Core
- Restore double left border in TUI and remap tab to shell autocomplete (@lacymorrow)
- Don't show variants for Kimi models that don't support them
- Don't check for version upgrades if it's disabled by the user (@rahuliyer95)
- Sync release versions for v1.14.20
- Make Config.Info canonical Effect Schema (@kitlangton)
- Revert parts of commit a824064 that caused system theme regression
- Bridge GET /config through experimental HttpApi (@kitlangton)
- Consolidate session prompt tests into Effect style (@kitlangton)
- Use file:// URLs for local dynamic import() on Windows and Node (@Hona)
- Add debug workspace server (@jlongster)
- Sync release versions for v1.14.19
- Defer MessageV2.Assistant.shape access to break circular dependency in compiled binary (@Hona)
- Rename tail_tokens to preserve_recent_tokens
- Patch arborist to work around Bun bug
- Parallel edits sometimes would override each other
- Fix Windows managed install and bump ripgrep to 15.1.0 for ARM64 support (@Hona)
- Add NVIDIA to popular providers, documentation, and attribution headers (@anniesurla)
- Fix session compaction test to properly enable prune config option
- Flip toolcall prune defaults
- Stabilize TUI theme persistence and KV writes
- Sync release versions for v1.14.18
- Restore native ripgrep backend (@nexxeln)
- Sync release versions for v1.14.17
- Ensure executable permissions are set before Docker builds
- Fix plugins reinstalling too often
- Ensure display: summarized is sent by default for Bedrock
- Detect attachment MIME type from file contents instead of file extension (@kitlangton)
- Support OTEL_RESOURCE_ATTRIBUTES environment variable for custom telemetry attributes
- Fix early return when node_modules is missing during package install
- Fix sync loading indicator to properly show loading state on startup
- Track retry attempts with detailed error context on assistant entries
- Extract session entry stepping logic into dedicated module
- Make skills logic more token efficient
- Track Effect schema migration progress with concrete file checklists (@kitlangton)
- Migrate config.ts root Info to Effect Schema (@kitlangton)
- Migrate agent configuration Info type to Effect Schema (@kitlangton)
- Migrate permission configuration to Effect Schema (@kitlangton)
- Use InstanceState context in worktree cleanup paths (@kitlangton)
- Stop rewriting dev branch during release publish (@kitlangton)
- Migrate keybinds configuration to Effect Schema (@kitlangton)
- Use instance state in small services (@kitlangton)
- Use InstanceState context in File service (@kitlangton)
- Add ZodPreprocess annotation for pre-parse transforms (@kitlangton)
- Fixed GitHub Copilot compatibility issue with Haiku model by handling unsupported eager input streaming
- Remove ambient instance reads from LSP (@kitlangton)
- Pass formatter instance context explicitly (@kitlangton)
- Migrate Server and Layout configuration to Effect Schema (@kitlangton)
- Standardize session telemetry attributes (@kitlangton)
- Removed ZodOverride from PositiveInt in provider configuration (@kitlangton)
- Translate Schema.withDecodingDefault into Zod .default() (@kitlangton)
- Translate well-known filters into native Zod methods in effect-zod (@kitlangton)
- Tag session unions and exhaustively match events (@kitlangton)
- Refresh Effect migration status specifications in documentation (@kitlangton)
- Add transform support, walk memoization, and flattened checks to effect-zod (@kitlangton)
- Migrate provider model and info configuration to Effect Schema (@kitlangton)
- Align route span attributes with OpenTelemetry semantic conventions (@kitlangton)
- Add catchall (StructWithRest) support to the walker (@kitlangton)
- Auto-tag route spans with route parameters (session.id, message.id, etc.) (@kitlangton)
- Use object-based package specification for install API
- Ensure Copilot model list filters out disabled models
- Add tuple support to effect-zod and migrate config/plugin to Effect Schema (@kitlangton)
- Migrate model-id and command to Effect Schema (@kitlangton)
- Wrap remaining route handlers in request spans (@kitlangton)
- Migrate skills, formatter, and console-state configuration to Effect Schema (@kitlangton)
- Translate Schema.check filters into Zod superRefine and promote LSP refinement to Effect layer (@kitlangton)
- More explicit routing to fix workspace instance issue (@jlongster)
- Migrate permission Action/Object/Rule leaves to Effect Schema (@kitlangton)
- Migrate LSP schemas to Effect Schema (@kitlangton)
- Migrate MCP configuration schemas to Effect Schema.Class (@kitlangton)
- Refresh bridge inventory and clarify Schema.Class vs Struct in HTTP API documentation (@kitlangton)
- Skip share sync for unshared sessions (@kitlangton)
- Annotate plugin loader flow in documentation
- Remove tracing from streaming event hot paths to improve performance (@kitlangton)
- Pass OpenTelemetry configuration to workspace environment (@jlongster)
- Normalize provider metadata and tag OpenTelemetry runs (@kitlangton)
- Move instance middleware after control plane routes to fix initialization order (@jlongster)
- Consolidate npm exports and trace flock acquisition
- Do not acquire file lock until after reify completes
- Trace npm package installation and execution fully
- Add historical sync on workspace connect (@jlongster)
- Pass EXA_API_KEY to websearch tool to avoid rate limits (@rasdani)
- Add LLM Gateway provider (@smakosh)
- Restrict GitHub Copilot Opus 4.7 variants to "medium" tier (@OpeOginni)
- Roll back OpenTUI integration
- Revert to opentui version 0.1.99
- Implement exponential backoff for workspace reconnection attempts (@jlongster)
- Upgrade OpenTUI to version 0.1.100
- Migrate config loading to Effect framework
- Move server routes to clarify workspacing (@jlongster)
- Fix crash when using experimental features
- Move project read routes onto HttpApi (@kitlangton)
- TUI resiliency when workspace is dead, disable directory filter in session list (@jlongster)
- Add animated GO logo with radial pulse effect to free-limit upsell dialog (@kitlangton)
- Move provider and config provider routes onto HttpApi (@kitlangton)
- Preserve plugin tool metadata in execute result (@jquense)
- Make formatter config opt-in
- Prefer real undo filenames over /dev/null
- Unwrap FileWatcher namespace and add self-reexport (@kitlangton)
- Split configuration parsing into distinct steps
- Convert Flag namespace to const object with getters for better type safety and tree-shaking (@kitlangton)
- Eliminate account/ barrel export and route consumers to sibling files (@kitlangton)
TUI
- Use row layout for execution mode border to match outer border height (@lacymorrow)
- Remove implicit corner characters from execution mode border in TUI (@lacymorrow)
- Fix permissions routing when using remote workspace (@jlongster)
- Allow full-session forks from the session dialog in TUI
- Make OpenAPI output deterministic by formatting in-place (@kitlangton)
- Show session ID in sidebar on non-production channels (@kitlangton)
- Minor UX improvements for workspaces (@jlongster)
- Fix agent cycling and polish prompt metadata in TUI (@kitlangton)
- Improve light mode and dark mode copy
- Fix session resumption with --session-id flag to navigate after app initialization
- Fixed incorrect light mode appearance in Ghostty terminal
- Remove debug logging statement
- Fade in prompt metadata transitions
- Preserve prompt input across unmount/remount cycles
- Inline final Go shimmer settings in TUI (@kitlangton)
Desktop
- Prevent prompt input animations from rerunning on every render in the app (@Brendonovich)
- Allow disabling progress bar in settings (@Brendonovich)
- Adjust layout properties in DialogSelectServer component (@OpeOginni)
- Properly wrap produce calls in setProjects (@Brendonovich)
- Fall back to icon.url in sidebar avatar when other sources are unavailable (@ysm-dev)
- Better loading state handling in app (@Brendonovich)
- Move QueryProvider to AppInterface (@Brendonovich)
- Add terminal font settings and built-in Nerd Font support (@Hona)
- Conditionally show file tree in beta channel (@Brendonovich)
- Fix workspace loading and persist ready state in app (@Brendonovich)
- Use fetchQuery instead of ensureQueryData in global sync to prevent stale data issues (@Brendonovich)
- Hide desktop titlebar tools behind settings
- Use TanStack Query to load session VCS state (@Brendonovich)
SDK
- Add env parameter to WorkspaceAdaptor.create type (@jamesmurdza)
Thank you to 20 community contributors:
- @kitlangton:
- refactor: eliminate account/ barrel, route consumers to sibling files (anomalyco#22995)
- refactor: convert Flag namespace to const object with getters (anomalyco#22984)
- refactor: unwrap FileWatcher namespace + self-reexport (redo) (anomalyco#23000)
- refactor: move provider and config provider routes onto HttpApi (anomalyco#23004)
- feat(tui): animated GO logo + radial pulse in free-limit upsell dialog (anomalyco#22976)
- refactor(tui): inline final Go shimmer settings (anomalyco#23017)
- refactor: move project read routes onto HttpApi (anomalyco#23003)
- tui: fix agent cycling and prompt metadata polish (anomalyco#23115)
- fix(opencode): normalize provider metadata and tag otel runs (anomalyco#23140)
- fix(opencode): untrace streaming event hot paths (anomalyco#23156)
- fix(opencode): skip share sync for unshared sessions (anomalyco#23159)
- docs(http-api): refresh bridge inventory and clarify Schema.Class vs Struct (anomalyco#23164)
- refactor(config): migrate mcp schemas to Effect Schema.Class (anomalyco#23163)
- refactor(config): migrate lsp schemas to Effect Schema (anomalyco#23167)
- refactor(config): migrate permission Action/Object/Rule leaves to Effect Schema (anomalyco#23168)
- feat(effect-zod): translate Schema.check filters into zod .superRefine + promote LSP refinement to Effect layer (anomalyco#23173)
- refactor(config): migrate skills, formatter, console-state to Effect Schema (anomalyco#23162)
- feat(server): wrap remaining route handlers in request spans (anomalyco#23169)
- refactor(config): migrate model-id and command to Effect Schema (anomalyco#23175)
- feat(effect-zod): add tuple support; migrate config/plugin to Effect Schema (anomalyco#23178)
- feat(server): auto-tag route spans with route params (session.id, message.id, …) (anomalyco#23189)
- feat(tui): show session ID in sidebar on non-prod channels (anomalyco#23185)
- feat(effect-zod): add catchall (StructWithRest) support to the walker (anomalyco#23186)
- refactor(server): align route-span attrs with OTel semantic conventions (anomalyco#23198)
- refactor(config): migrate provider (Model + Info) to Effect Schema (anomalyco#23197)
- feat(effect-zod): transform support + walk memoization + flattened checks (anomalyco#23203)
- docs(effect): refresh migration status specs (anomalyco#23206)
- refactor(v2): tag session unions and exhaustively match events (anomalyco#23201)
- feat(effect-zod): translate well-known filters into native Zod methods (anomalyco#23209)
- feat(effect-zod): translate Schema.withDecodingDefault into zod .default() (anomalyco#23207)
- refactor(config): drop ZodOverride from PositiveInt in provider.ts (anomalyco#23215)
- fix(observability): standardize session telemetry attrs (anomalyco#23213)
- refactor(config): migrate Server + Layout to Effect Schema (anomalyco#23216)
- refactor: pass formatter instance context explicitly (anomalyco#23020)
- refactor: remove ambient instance reads from lsp (anomalyco#23023)
- feat(effect-zod): add ZodPreprocess annotation for pre-parse transforms (anomalyco#23222)
- refactor: use InstanceState context in File service (anomalyco#23015)
- refactor: use instance state in small services (anomalyco#23022)
- refactor(config): migrate keybinds.ts to Effect Schema (anomalyco#23227)
- fix(generate): make openapi output deterministic by formatting in-place (anomalyco#23228)
- fix: stop rewriting dev during release publish (anomalyco#22982)
- refactor: use InstanceState context in worktree cleanup paths (anomalyco#23019)
- refactor(config): migrate permission.ts Info to Effect Schema (anomalyco#23231)
- refactor(config): migrate agent.ts Info to Effect Schema (anomalyco#23237)
- refactor(config): migrate config.ts root Info to Effect Schema (anomalyco#23241)
- docs(effect): track schema migration progress with concrete file checklists (anomalyco#23242)
- fix: detect attachment mime from file contents (anomalyco#23291)
- test(opencode): consolidate session prompt tests into Effect style (anomalyco#23710)
- feat(core): bridge GET /config through experimental HttpApi (anomalyco#23712)
- refactor(core): make Config.Info canonical Effect Schema (anomalyco#23716)
- @Brendonovich:
- app: use tanstack query to load session vcs state (anomalyco#22277)
- Merge branch 'dev' into nxl/improve-compaction-strategy
- fix(app): use fetchQuery instead of ensureQueryData in global sync (anomalyco#23025)
- fix(app): workspace loading and persist ready state (anomalyco#23046)
- fix: conditionally show file tree in beta channel (anomalyco#23099)
- fix(desktop-electron): run JSON migration before spawning sidecar (anomalyco#23396)
- fix(version): remove --target flag from beta release creation (anomalyco#23403)
- refactor(app): move QueryProvider to AppInterface (anomalyco#23484)
- app: better loading (anomalyco#23489)
- electron: use custom oc:// protocol for renderer windows (anomalyco#23516)
- refactor(desktop-electron): enable contextIsolation and sandbox (anomalyco#23523)
- fix(desktop-electron): add CORS headers to main window webRequest (anomalyco#23633)
- fix(app): properly wrap produce calls in setProjects (anomalyco#23638)
- fix(ui): correct diff render condition logic (anomalyco#23670)
- feat(app): allow disabling progress bar in settings (anomalyco#23674)
- fix(app): prevent prompt input animations from rerunning on every render (anomalyco#23676)
- @jquense:
- fix: preserve plugin tool metadata in execute result (anomalyco#22827)
- @jlongster:
- fix(tui): tui resiliency when workspace is dead, disable directory filter in session list (anomalyco#23013)
- remove accidental commit of daytona plugin (anomalyco#23030)
- refactor(core): move server routes around to clarify workspacing (anomalyco#23031)
- feat(core): exponential backoff of workspace reconnect (anomalyco#23083)
- when generating sdk only format sdk, much faster (anomalyco#23122)
- fix(core): add historical sync on workspace connect (anomalyco#23121)
- fix: revert sdk generation script change (anomalyco#23133)
- feat(tui): minor UX improvements for workspaces (anomalyco#23146)
- fix(core): move instance middleware after control plane routes (anomalyco#23150)
- fix(core): pass OTEL config to workspace env (anomalyco#23154)
- fix(core): more explicit routing to fix workspace instance issue (anomalyco#23171)
- feat(core): add debug workspace server (anomalyco#23590)
- fix(core): fix permissions routing when using remote workspace (anomalyco#23593)
- @OpeOginni:
- fix(opencode): rescrict github copilot opus 4.7 variants to "medium" (anomalyco#23097)
- fix(desktop): adjust ui tool diff sticky header offset (anomalyco#23149)
- fix(desktop): adjust layout properties in DialogSelectServer component (anomalyco#23589)
- @jenperson:
- docs: adding Mistral to docs as a provider (it is already a provider, just docs update) anomalyco#23070 (anomalyco#23072)
- @smakosh:
- feat: add LLM Gateway provider (anomalyco#7847)
- @rasdani:
- fix(opencode): pass
EXA_API_KEYtowebsearchtool to avoid rate limits (anomalyco#16362)
- fix(opencode): pass
- @R44VC0RP:
- Stefan/enterprise forms waitlist (anomalyco#23158)
- @Hona:
- fix incorrect config directory by lazily loading electron-store (anomalyco#23373)
- feat: add terminal font settings and built-in Nerd Font (anomalyco#23391)
- fix(core): fix Windows managed install and bump ripgrep to 15.1.0 for ARM64 support (anomalyco#23477)
- fix: defer MessageV2.Assistant.shape access to break circular dep in compiled binary (anomalyco#23495)
- fix(core): use file:// URLs for local dynamic import() on Windows+Node (anomalyco#23639)
- @ariane-emory:
- docs: document --dangerously-skip-permissions CLI flag (anomalyco#23371)
- @nexxeln:
- fix(ripgrep): restore native rg backend (anomalyco#22773)
- @anniesurla:
- feat(provider): add NVIDIA to popular providers, docs, and attribution headers (anomalyco#22927)
- @heimoshuiyu:
- fix(ui): use parentID matching instead of positional scan for assistant messages (anomalyco#23093)
- @ysm-dev:
- fix(app): fall back to icon.url in sidebar avatar (anomalyco#18747)
- @MrMushrooooom:
- docs(go): add Kimi K2.6 to Go and Zen content (anomalyco#23558)
- go: promote kimi k2.6 usage limits (anomalyco#23634)
- @jamesmurdza:
- fix(plugin): add env parameter to WorkspaceAdaptor.create type (anomalyco#23235)
- @rahuliyer95:
- fix(tui): don't check for version upgrades if it's disabled by the user (anomalyco#20089)
- @github-actions[bot]:
- Update VOUCHED list
- @lacymorrow:
- merge: bring upstream dev into lash + fix type errors
- fix(tui): restore double left border and remap tab to shell autocomplete
- fix(tui): remove implicit corner chars from execution mode border
- fix(tui): use row layout for execution mode border to match outer border height
- docs(sync): add post-merge QA checklist and document LAC-163 regressions