- Refactor replay safety logic to specifically prevent retries when a tool call is present in the assistant message.
- Enable retries for transient stream errors occurring during partial text or thinking sequences, ensuring consistency when no tool call has been completed.
- Add regression tests to verify that transient socket closures are successfully recovered while completed tool calls remain protected from redundant retries.
- Add an epoch counter to `AdvisorRuntime` to discard in-flight advisor batches when a reset or disposal occurs.
- Introduce `resetAdvisorSessionState` to clear advisor-specific queues, latches, and pending cards, ensuring pre-reset state does not interfere with new conversations.
- Extend `YieldQueue.clear` to support conditional clearing by entry kind.
- Replaced raw TypeScript documentation map with a lazily-inflated gzip blob.
- Reduced bundled binary/npm package size by approximately 0.9MB.
- Encapsulated index logic into `docs-index.ts` to separate header metadata from content.
- Added `postpack` and robust `try/finally` patterns in build scripts to ensure clean artifacts.
- Implemented disk-based fallback during development to maintain existing developer experience.
- Implemented a bridge to the `bun:jsc` remote inspector API.
- Added a debug interface action to start the inspector and expose the connection endpoint.
- Included logic to dynamically reserve available ports and reliably probe the socket state due to inherent platform-dependent limitations in the underlying API.
- Avoided value-imports of `puppeteer-core` in main startup files to prevent eager loading of the browser-data dependency graph.
- Used `import type` and literal string checks to defer `puppeteer-core` initialization until browser tools are actually invoked.
- Added a test to verify that `puppeteer-core` and `@puppeteer/browsers` remain off the eager startup import graph.
- Externalized additional heavy dependencies to reduce bundle size and improved minification settings in the build script.
- Added a command to the setup script to link the omp binary into the global bun bin directory.
- Updated the omp script documentation to reflect the new installation method.
- Switched to unique, timestamped backup file paths to avoid file lock collisions during binary replacement.
- Implemented a best-effort strategy for backup deletion, allowing successful updates even if the previous process image remains locked.
- Added a cleanup routine for sweeping stale backups, including legacy files, during each update attempt.
Treat empty strings on optional tool arguments as omitted before schema validation so MCP calls do not fail pattern or type checks for model-filled placeholders.
Fixes#2981
Limited the optional LM Studio /api/v0/models metadata lookup with an abort timeout and started the catalog request independently so OpenAI-compatible servers without the native endpoint still refresh. Added a regression for hung native metadata probes.\n\nFixes #2945
- Expired the per-credential usage report cache after recording observed OpenCode Go spend.\n- Threaded provider base URL into OpenCode Go cost recording so the invalidation targets the same cache key /usage uses.\n- Added regression coverage for refreshing cached OpenCode Go limits immediately after a completed turn.\n\nFixes #2942
Treat shell-style leading variables such as $HOME as normal chat text instead of Python eval input. Keep local Python shortcuts available through explicit $ <code> and $$ <code> prefixes.\n\nFixes #2944
- Added a UsageProvider flag for providers whose reports do not validate upstream credentials.\n- Kept OpenCode Go quota reporting local-only while leaving credential health unknown unless a strict completion probe runs.\n- Covered the OpenCode Go health-check regression.\n\nFixes #2942
Queried LM Studio native /api/v0/models metadata during catalog and runtime discovery so type=vlm models advertise image input. Added regressions for both provider-manager and runtime discovery paths.\n\nFixes #2945
- Added an OpenCode Go usage provider that synthesizes 5h, weekly, and monthly cap windows from OMP-observed request costs.\n- Recorded OpenCode Go assistant request costs against the active credential so /usage can report local cap utilization.\n- Added regression coverage for fresh keys and observed spend aggregation.\n\nFixes #2942
Hard-deleted disabled api_key rows once an active provider-level replacement exists, matching OAuth identity-key cleanup semantics.
Added regression coverage for rotating a provider API key to a different value.
Fixes#2941
Mapped direct AnthropicOptions effort values through MiniMax's adaptive-tag-only transport so callers cannot emit invalid output_config.effort on MiniMax Anthropic models. Added request-shaping coverage for the direct effort option.\n\nFixes #2928
- Routed the /model TUI slash command back to the full model setup picker.
- Kept /switch on the temporary session model selector and updated slash-command coverage.
Fixes#2933
Excluded MiniMax adaptive-tag models from the Claude adaptive off-effort pin so thinking-off requests do not emit Anthropic output_config.effort. Added request-shaping coverage for MiniMax M3 thinking-off serialization.\n\nFixes #2928
Closed Cursor stream text blocks before starting tool calls so post-tool deltas create a new assistant content block instead of appending to earlier text.
Added a regression test for text/tool/text block ordering in Cursor interaction updates.
Fixes#2924