fix(optimizer): stop inheriting live project default in existing chats - per-chat flag is frozen at chat creation; fix(webui): optimizer status date rendered from epoch seconds
What changed in every stable version
fix(optimizer): stop inheriting live project default in existing chats - per-chat flag is frozen at chat creation; fix(webui): optimizer status date rendered from epoch seconds
feat: AI Prompt Optimizer - per-chat LLM compression of project context; feat: curated project skills mode - new skills hidden by default; feat: vision Pro mode, quality selection and provider error surfacing; feat: per-chat reasoning effort selector; feat: compact proximity gauge; feat: service LLM routing for titles and compaction; fix: Dream Phase 2 timeout 900s, non-streaming timeout warning, busy-lock and honest status; fix: consolidation estimate mirrors wire replay window; fix: Recent History isolated per project; fix: compact config retry; fix: curated new-skills counter
feat: stream_state progress retention per chat; feat: compaction progress when entering busy chat; feat: server-authoritative unread counts; feat: WebUI unread badges; feat: clickable status badges with jump-to-chat modal; fix: session body cache keyed by include_system flag
feat: unread badges (sidebar auto-refresh, red tint, persisted counts, answer_count); feat: background_state WS command; feat: sys_cmd tool; feat: allowed_dirs for vision/annotate; feat: MCP per-tool description overrides; fix: badge counts agent answers; fix: badge rebuild after WS reconnect; fix: force WS reconnect on missed pongs; fix: assistant mcp_servers allowlist; fix: CLI survives console handle loss; fix: project chip removed from chat header; perf: grep offloaded to worker thread; perf: session history cache
fix: /api/projects exceeded websockets open_timeout and died with empty response; fix: change-project modal shows load failure with retry instead of silent Unassigned; fix: skills analytics no longer silently picks the first project; fix: annotator keeps vector shapes editable across reopens; feat: project chip in chat header opens change-project modal; feat: styled red confirmations for project delete and resets
No notes for this release.
fix: WebUI message send crashed with TypeError crypto.randomUUID is not a function when opened over plain http on a LAN/Tailscale IP (insecure origin); outgoing messages were lost and the chat got stuck in WORKING state. Adds uuid() fallback for insecure contexts (8 call sites in useMessageQueue, useMinibotStream, store).
feat: persistent background run history ledger + agent API; background activity modal with run history, transcripts, live view with stop control, cron/origin context chips, session deletion with optional cron job cleanup, and run search; skills analytics v2 with full skill state and tabbed skill browsing; background activity indicator with stop control in sidebar; stop_session WS command; inline audio player for audio attachments; amber pulse for running chat in sidebar; fix: instant stop_session and accurate live run stats; turn lifecycle broadcast for foreign-channel turns; resilient project list loading; audio Content-Type serving; analytics groups collapsed by default; reasoning streaming after media messages; pymupdf warmup off the event loop; no false warnings for skipped tools; clipped tab bar and unavailable skills in analytics tabs
feat: background skills analytics with live status icon; feat: curation run history with rollback and commit diffs; feat: tools tab with categories, per-project gating, per-tool specs; feat: global disable switch for built-in tools; feat: stopped attempts in session totals; feat: skill last-modified dates; feat: project editor tab scroll arrows, scrollable modal content, pinned footer with exit; fix: non-utf8 project files no longer break project list; fix: sidebar message count inflation; fix: tickets reports plans flags in list_projects; fix: project items form layout
feat: project tickets/reports/plans modules with per-project toggles and agent tools; feat: per-project skills analytics (LLM suggest-only) with live batch progress; feat: extended voice and text input for ask_user answers; feat: persistent chat notification cards for turn ends and ask_user; feat: providers - limit images per request, newest kept; fix: event-loop stalls (image-aware token estimation, dream git ops, memory consolidation offloads, skills cache); fix: ask_user tolerates {label,value} option shape; fix: desktop/CLI startup (pythonw-safe, tray restart, restart progress); fix: webui login bootstrap retry with online/offline status; fix: module toggles render in project editor
New:
Fixes:
perf: cache ssl context across provider clients removing the per-turn cert store stall; chore: demote session history stats line to debug; fix(webui): background sync shimmer bar no longer shifts chat content
feat: web login for the web UI with pbkdf2 credentials, cookie sessions, login screen and security settings; feat: narrate mini-player modal with stop and replay; feat: project skills bulk enable/disable with editor pills; feat: spawn_chat get_result_back auto-delivery and session_query live status; perf: eliminate event loop stalls in projects, sessions and skills scanning; fix: updater helper waits for process and port release before pip, repaired restart args; fix: remote document attachments over WS with origin-aware agent API base
feat: ask-user-question tool - agent pauses the turn to ask up to 4 questions with options and free text, per-chat card, F5 rehydration, custom question sound; feat: dictation overhaul - server STT config and /agent/stt endpoint, model-based dictation with waveform, silence trimming, persistent engine, edit-mode dictation; feat: background activity badges - per-chat and project activity dots; feat: per-chat todo persisted to session metadata; feat: attachments preserved on message edit; fix: timed-out oneshot call_assistant child turns are cancelled; fix: live reasoning and token streaming in spawned child chats; fix: agent turn footer hidden while turn is running; fix: transcription tab error surface with retry; fix: model info refresh after assistant or preset change; fix: compaction status cleared once finished; fix: raw markdown shown while a tool executes; fix: audio settings tab bar overflow
Auto-update now also installs newly introduced runtime dependencies (the Windows tray libraries), so machines updating from older versions get the tray icon and desktop shortcut too, not just fresh installs.
Desktop experience on Windows: MiniBot now lives in the system tray with Open Web UI, Restart and Exit actions, and a desktop shortcut is created automatically on first start. The gateway can be launched without a console window (minibotw / pythonw) - restart from the tray is graceful and keeps your sessions intact.
Auto-update apply step now reliably restarts the gateway after installing a new version, with a per-step log (apply_update.log) for troubleshooting.
Auto-update reliability on Windows: updates are now applied by a detached helper that waits for the gateway to exit before running pip. Previously the running process locked its own launcher and the update could leave the installation broken.
First-run configuration now enables the license guard and the auto-update heartbeat out of the box; previously a fresh install never checked for updates and ran permanently unlicensed.
Packaging fixes for clean installs.
The Web UI frontend is now bundled in the wheel - previously a fresh install served no interface at all (404 on the UI URL).
aiohttp and aiohttp-cors are now declared as runtime dependencies; the HTTP API previously failed to start with ModuleNotFoundError on clean machines.
Auto-update now saves downloaded wheels under the pip-canonical filename and no longer fails silently on every update.
Fresh-install fixes.
Auto-update: downloaded wheels are now saved under the pip-canonical filename; previously every automatic update silently failed with an invalid wheel name.
Gateway no longer exits when no provider API key is configured - it starts with the Web UI and waits for you to add a key in Settings (picked up without restart).
First run now creates config.json with the WebSocket UI enabled on localhost port 8765; previously the printed URL was wrong and no UI was served.
Search overhaul: inline match highlighting (Ctrl+F), jump to any message including the compacted zone, full-text search across all sessions (Ctrl+K), first-message previews for untitled chats in the sidebar.
Global control: /status now shows cross-session activity; new /stopall command aborts every running session at once.
Other improvements: installed version shown in Memory tab and update banner range; compact summary marker now shows real message/tool counts.
Fixes: keyboard shortcuts now work under non-latin (RU/UA) keyboard layouts; duplicate user message after F5 during streaming; update banner no longer shown when auto-update is off; background chat completion now plays the notification sound when the bell is enabled.
First official release: sessions and turn mechanics, streaming, four context-compaction systems, memory (global + project), skills, cron, MCP integration, voice input/output, screenshot annotator, usage statistics, license client and auto-update.