All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Built-in web search design handbook. Technical guide for the in-app search pipeline: decision stages, engines, language parity, conversation page reuse, security, and UI. See docs/built-in-web-search.md. User-facing egress copy: docs/search-privacy.md (renamed from
search-disclosure.md). - Built-in web search. Keyless search on the bundled engine: Auto search (Settings → Behavior, default on) may open the web when a plain turn needs live facts;
/searchforces a look-up. Pipeline includes intent verticals, scraped engines, citation audit, progressive search status in chat, and SSRF-safe outbound HTTP. See docs/built-in-web-search.md, docs/configurations.md, and docs/search-eval.md. (#312) - Unified trace recorder. Records every chat conversation (including built-in web-search turns) as JSON-Lines under
app_data_dir/traces/chat/<conversation_id>.jsonl. Off by default; toggle from Settings or set[debug] trace_enabled = trueinconfig.toml.
- BREAKING: Renamed
[debug] search_trace_enabledtotrace_enabled(now covers chat and web-search events in the same chat-domain traces). Rename the field in yourconfig.tomlafter upgrading. Trace file layout istraces/chat/<conversation_id>.jsonl. - Inference providers. Thuki now reaches models through a typed provider list instead of a single hardcoded Ollama endpoint. The
[inference]section gainsactive_providerand a[[inference.providers]]array; each provider keeps its own selected model. Fresh installs default to the bundled Built-in (Thuki) engine, with Ollama available as an optional provider. Existing Ollama users are migrated automatically: a legacy flatollama_urlbecomes the Ollama provider'sbase_url, and the previously selected model is carried over, so nothing changes for them. Settings gains a Providers section (editable Ollama URL with a non-local-server warning, per-provider model picker). - The internal inference command/hook/error model were renamed to be engine-agnostic:
ask_ollama→ask_model, theuseOllamahook →useModel, andOllamaError/OllamaErrorKind→EngineError/EngineErrorKind(theNotRunningvariant is nowEngineUnreachable). External callers that invokedask_ollamadirectly must update toask_model. - The
ask_modelandcapture_full_screen_commandTauri commands now require aconversationId: Stringargument (andask_modeladditionally requiresisFirstTurn: boolandslashCommand: Option<String>). The frontend'suseModelhook generates a stable trace id per session and threads it transparently. External callers that invoked these commands directly must update theirinvoke()calls. A new fire-and-forgetrecord_conversation_endcommand lets the frontend signal end-of-conversation (used byuseModel.reset()anduseModel.loadMessages()) so the chat-domain trace file gets a clean closing line. - BREAKING: Renamed the
[model]section inconfig.tomlto[inference]and reshaped it from a singleollama_urlstring into the providers schema described above. There is no backward-compatibility shim for the section name: if you had a custom[model]section, rename it to[inference]after upgrading; a flatollama_urlinside[inference]is migrated automatically. - Active model selection is now strictly Option-typed end to end: when nothing is installed and nothing is persisted, Thuki refuses to dispatch requests and surfaces a "Pick a model" prompt instead of falling back to a hardcoded slug. The previous
DEFAULT_MODEL_NAMEconstant has been removed.
0.16.2 (2026-07-21)
0.16.1 (2026-07-18)
0.16.0 (2026-07-18)
- built-in web search with auto-search, citation audit, and progressive trace (#312) (7972b31)
- ci: ship Thuki Nightly as side-by-side signed install (#336) (3810dd1)
- conversation-wide search evidence reuse (#330) (1fe32a4)
- cut ForceWeb search latency and harden answer quality (#324) (51d2c1f)
- history: auto-save chats with retention and free chats (#331) (057b089)
- move Diagnostics to Behavior tab with trace retention and folder actions (#325) (70d68ac)
- search language parity across retrieval and answers (#326) (9005d44)
- search resilience and citation a11y (#327) (e8e2fd7)
- search trust and lawfulness package (#323) (151adf6)
- settings: Changelog tab with full release history (#328) (fd909fe)
- ci: make engine-gate throughput report-only instead of a blocking floor (#321) (07f1ca8)
- disclose when a requested web search can't reach the web or finds nothing (#314) (2a4d749)
- models: gate browse installs to chat brains only (07e0b35)
- models: gate Browse installs to chat brains only (#337) (07e0b35)
- search: disclose when a requested web search is unreachable or finds nothing (2a4d749)
- surface the 80% memory headroom rule in the model-fit warning (#322) (a9d5bb4)
- wire Auto search learn URL to disclosure blog post (#335) (01a99e2)
0.15.9 (2026-07-10)
0.15.8 (2026-07-04)
- define missing background theme token for Streamdown table menus (#292) (6100c5d)
- redesign history panel search field and active row indicator (#294) (4252217)
0.15.7 (2026-07-02)
- cancel in-flight generation when starting a new session (#289) (da432fa)
- skip false starting-up copy when engine is already loaded (#291) (047824c)
0.15.6 (2026-07-01)
0.15.5 (2026-07-01)
0.15.4 (2026-06-30)
0.15.3 (2026-06-30)
- ui: hide Dock icon on Settings close and refocus without recentering (#280) (ff6e44c)
- window: hide Dock icon on Settings close and refocus without recentering (ff6e44c)
0.15.2 (2026-06-30)
- release 0.15.2 (0ddbf68)
0.15.1 (2026-06-30)
- ci: cap engine build parallelism by RAM to avoid OOM stalls (#270) (6904cb2)
- ci: cap engine build parallelism by RAM to avoid OOM stalls on CI runners (6904cb2)
- ci: fetch llama-server sidecar before lint in release job (0824f2c)
- ci: fetch llama-server sidecar before lint in release publish job (#261) (0824f2c)
- downloads: RAM-fit starter swap, non-blocking sends, cross-window pause/discard sync (#269) (faf681c)
- engine: support macOS 13.4+ for the built-in engine (#266) (8226773)
- models: update UI for multi-part (split) GGUF models (#267) (3c0c1de)
0.15.0 (2026-06-29)
- built-in engine onboarding, model downloads, Settings providers, and default flip (#219) (171a6a3)
- bundled engine runner and model library (#217) (faa82ca)
- models: in-app model library with Discover browser and Staff Picks (#237) (23b32ef)
- models: sync live download progress across windows (#250) (4e14d66)
- onboarding: built-in engine upgrade announcement and onboarding/picker polish (#251) (cfc0c62)
- onboarding: optional email capture to help shape Thuki (#254) (b5c6f5c)
- onboarding: surface-aware download strip and model-library intro fact (#252) (f6240bd)
- OpenAI-compatible /v1 client and provider routing (#218) (25fe634)
- restore the Providers setting reverted by #208 (#215) (5a5310f)
- settings: subtle model-name links with hover reveal (#255) (bcfaa78)
- settings: subtle model-name links with hover reveal; italic founder name (bcfaa78)
- ad-hoc sign local macOS builds so TCC grants apply (#229) (5c3a2df)
- fetch llama-server sidecar before lint in nightly release (#235) (d039999)
- gate overlay activation during onboarding to prevent window collapse (#233) (b111b1c)
- onboarding permission loop on local macOS builds (#230) (5c3a2df)
- persist onboarding progress so relaunch can't bounce permissions (#229) (a0ecbbb)
- prompt: stop model from emitting slash commands as replies (#243) (fa08c8c)
- regain overlay focus after defocus via hover-activate tracking area (#234) (dec7535)
- trim the system prompt and refresh non-customized prompts on load (#239) (395c77b)
0.14.3 (2026-06-09)
0.14.2 (2026-06-08)
0.14.1 (2026-06-07)
0.14.0 (2026-06-07)
- allow drafting messages while response is streaming in AskBarView (#200) (108e1eb)
- migrate AskBar input to Lexical to fix WKWebView caret drift (#202) (adafe47)
- pre-load conversation list before opening ask-bar history drawer (#199) (5ac73e0)
- redesign /rewrite for a natural, casual voice (#201) (c66519a)
- write /rewrite and /refine results back into the source app (#197) (03a8fce)
0.13.1 (2026-05-26)
0.13.0 (2026-05-25)
0.12.0 (2026-05-22)
0.11.3 (2026-05-18)
0.11.2 (2026-05-18)
0.11.1 (2026-05-16)
0.11.0 (2026-05-16)
- updater: What's New update window with explicit actions; open Settings on current Space (#174) (0243c4b)
0.10.0 (2026-05-15)
0.9.1 (2026-05-13)
0.9.0 (2026-05-12)
- commands: add /explain slash command with /screen and image support (#159) (b78e9b3)
- commands: add /extract slash command with Vision OCR text extraction (#160) (aafe2fc)
- commands: unified slash command dispatch + OCR utility commands (#164) (22fc98f)
- markdown: add KaTeX math rendering via Streamdown plugin API (#156) (579a93b)
0.8.5 (2026-05-08)
0.8.4 (2026-05-07)
- updater: relaunch after TCC reset so System Settings can re-register Thuki (#151) (27dc003)
- updater: relaunch after TCC reset to refresh tccd PID tracking (27dc003)
0.8.3 (2026-05-07)
0.8.2 (2026-05-07)
0.8.1 (2026-05-07)
0.8.0 (2026-05-07)
- trace: unified per-conversation forensic recorder for chat + search (#139) (76f9180)
- updater: in-app auto-update via signed GitHub releases (#144) (7e5b833)
0.7.1 (2026-05-04)
0.7.0 (2026-05-04)
- add utility slash commands (#93) (98a3a19)
- ci: add floating nightly release workflow (#109) (c213235)
- config: make max_images user-tunable with a cap of 20 (#121) (4e1b3af)
- config: migrate runtime configuration from env vars to TOML (#102) (20abeb0)
- config: user-tunable context window with log-scale slider (#120) (1c18ddf)
- continuity: cross-model history sanitization and capability-aware filtering (#107) (c976d63)
- in-app model picker with hardened selection pipeline (#103) (d6cf4fb)
- introduce agentic search pipeline with live trace streaming (#100) (445534f)
- model-picker: add larger-models nudge hint (#118) (6c0df18)
- search: add forensic trace recorder (#126) (e1d5997)
- sync slash command docs and prompt metadata (#101) (7501d60)
- tray: left-click opens Thuki, right-click shows menu (#123) (81f133e)
- ui: add tip bar with contextual usage tips (#119) (ed9b250)
- chat: prevent source-row clicks from opening URL twice (#104) (e1d2cdf)
- ci: set VITE_GIT_COMMIT_SHA on tauri build step not frontend step (#111) (ed80d15)
- search: correct Setup Guide anchor in sandbox-offline card (#112) (29f2c1f)
- search: harden judge fallback and config allowlist (#125) (cf82a95)
- settings: allow text selection in settings panel (#122) (5c552cb)
- settings: eliminate Dock icon by converting settings window to NSPanel (#117) (217fa00)
0.6.1 (2026-04-14)
0.6.0 (2026-04-14)
0.5.2 (2026-04-12)
0.5.1 (2026-04-10)
- cancel active streaming on overlay hide and app quit (#73) (077893a)
- preserve scroll position when streaming finishes (#70) (4254ea2)
- replace anchor system with simple screen-bottom growth detection (#74) (d59119d)
0.5.0 (2026-04-08)
- friendly error UI for Ollama not running / model not found (#61) (6426ea2)
- improve context awareness and image handling for better multimodal understanding (7f64352)
- onboarding flow with permission-gated stage machine (#65) (35497cb)
- overhaul system prompt and move to dedicated file (#64) (c831c66)
- upgrade to Gemma4 and add runtime model configuration (#63) (5138eac)
- remove Input Monitoring and suppress native permission popups (#68) (89f06b8)
- restore cross-app hotkey via HID tap + active tap options (#66) (8c7f2cd)
0.4.0 (2026-04-07)
0.3.0 (2026-04-06)
- add Signed-off-by to release-please and Cargo.lock sync commits (#45) (2943f20)
- move signoff to top-level in release-please config (#47) (5a7d076)
- sync Cargo.lock on release PRs via release workflow (#43) (18f49a4)
- use GitHub API for Cargo.lock commit to get Verified badge (#50) (cf09593)
0.2.1 (2026-04-05)
- resolve production screenshot bugs (CSP blob URLs, black screen) (#41) (39da9e8)
- sync Cargo.lock to reflect 0.2.0 version bump (ca17e83)
0.2.0 (2026-04-05)
0.1.0 - 2026-04-05
- Floating overlay activated by double-tapping the Control key from any app
- Streaming chat powered by locally running Ollama models
- Multi-turn conversation with full context retention
- Conversation history with SQLite persistence; revisit and continue past sessions
- Image and screenshot input: paste or drag images directly into the chat
- Docker sandbox with capability dropping, read-only model volume, and localhost-only networking
- macOS NSPanel integration for fullscreen-app overlay
- Tray icon with show/hide and quit controls
- Automatic window resizing driven by content height
- Markdown rendering via Streamdown with XSS protection
- Cancel in-flight generation with a stop button
- History panel with search, save/unsave, and conversation switching