- 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
- 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
- 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
- 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
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
- Integrated comprehensive loop guard support for DeepSeek and assistant prose patterns, including configurable stream checks.
- Implemented Moonshot Flavored JSON Schema (MFJS) normalization for improved tool compatibility and enum type inference.
- Added support for Ollama reasoning effort backfilling and Grok-specific service tier cost tracking across providers.
- Expanded model catalog with new entries and unified compatibility logic for improved OpenRouter API integration.
- Forced the on-demand fastembed runtime manifest to override fastembed's archived onnxruntime-node 1.21.0 transitive dependency with the package's pinned 1.26.0 runtime.\n- Treated native dlopen failures from the direct fastembed import as recoverable so macOS ARM64 can fall back to the controlled runtime cache.\n- Added coverage for the runtime install plan and cache key policy.\n\nFixes #2920
Restored StringEnum's plain string enum wire schema and returned legacy coding tool placeholders that let createAgentSession keep the real built-in tools active.
Fixes#2858
- Added `chunkSize` configuration to coding-agent test buckets to prevent OOM errors in CI.
- Updated `codingAgentTestCommands` to generate multiple test processes when a bucket exceeds its chunk limit.
- Refactored `commandsForMode` to support flattened arrays of chunked test commands.
Added compatibility exports for legacy plugin validation, including defineTool, StringEnum, TypeBox bare imports, frontmatter helpers, SettingsManager, and createCodingTools.
Updated SDK settingsManager alias handling and regression coverage for the affected shim surfaces.
Fixes#2858
- Sanitized newlines from agent hub display text to ensure single-line output.
- Enforced line clamping during render to prevent terminal wrapping.
- Added test coverage to verify output truncation and newline removal.