Downloads
macOS
Windows
A change-aware release. The app now keeps track of what changed in your
project and keeps the local model's knowledge fresh — without re-indexing the
whole repository. A dated change history (git-based, cheap), an incremental
re-index of only the files whose content changed, and an Ask that can answer
"what changed today / since yesterday" from that journal. The bundled llama.cpp
engine is also faster and more reliable, and the read-only Investigator agent
uses schema-constrained output where the engine supports it. Everything stays
local, and no new model downloads are required.
Added
- Faster, more reliable bundled llama.cpp engine. The answer server now starts with Flash Attention (quicker generation, smaller KV cache) and a KV-slot save path so a warm prompt prefix can persist to disk. Both are best-effort: if a particular build rejects a flag, the server automatically retries on the known-good baseline, so startup can never break. New env knobs:
AI_WORKSPACE_LLAMA_FLASH_ATTN(default on) andAI_WORKSPACE_LLAMA_PARALLEL(default1; raise for concurrent request slots, at the cost of per-request context). GPU offload was deliberately left out to stay safe on the CPU-only Windows/Linux builds. - Structured (JSON-Schema) output for the llama.cpp provider. Generation can be constrained to a JSON Schema so the model cannot emit invalid JSON (
core.domain.structured_output) — the foundation for more reliable agents and structured features. (Ollama accepts the option but ignores it for now.) - Exact token budgeting. When the engine exposes a tokenizer (llama.cpp
/tokenize), the Ask context-window budget now uses real token counts instead of the ~4-chars-per-token estimate, and falls back to the estimate otherwise. - More reliable Investigator steps. When the engine supports structured output (llama.cpp), the read-only Investigator agent now asks for each ReAct step as a schema-constrained JSON object, so the chosen tool-call can't be malformed. Engines without it (Ollama) keep the lenient text protocol, and a non-JSON reply degrades gracefully back to text parsing — no behaviour change for them.
- Incremental re-index (changed files only). When the project changes, you can update the AI's knowledge without re-indexing the whole repo: a new "Update index (changed files)" action (Settings) re-embeds only the files whose content hash changed and drops chunks for changed/removed files, leaving the rest untouched. Tracked by a per-file content-hash manifest (no reliance on mtime). New
POST /workspaces/{id}/index/changed; the vector stores gained delete-by-source-path. The Settings section shows a stale-index hint ("N files changed since the AI last indexed them", from a cheap embed-free…/index/changed/preview) and an optional auto-update (off by default) that runs the incremental update once a day when you open the workspace. Then just ask in Ask — questions like "what changed today?" or "what changed since yesterday?" now pull the dated git change journal into the answer's context automatically. - Change history timeline. A new History tab under Project Intelligence keeps a durable, date-grouped journal of what changed in the project — summary, risk/structural counts, changed areas (hover a chip for the files) and commit subjects — so the "what changed since last time" digest no longer vanishes when you leave the view. It fills automatically: opening the app on a new day records a dated entry from git alone (a cheap path — no file rescan, no graph rebuild, no re-indexing). "Check now" additionally re-scans to capture structural changes. A generated one-tap summary is saved onto its entry too.
Changed
- New app icon. Redesigned the macOS/Windows app icon as a proper rounded-tile icon: a deep-forest gradient background with the pigeon-and-shield mark filling the tile and the home outline glowing as a frame — far more legible at dock/taskbar sizes than the previous white-background version. Regenerated the full set (
.png,.ico,.icns). The brand mark also gets brighter, livelier eyes. - Bundled llama.cpp updated to
b9789(fromb9777) forscripts/fetch_llama_server.shand the release / Windows build workflows.
All commits in this release
- release: 0.2.3
- ruff format
- feat(index): stale-index hint + optional auto-update (changed files)
- refactor(settings): extract UpdateIndexSection (CodeFactor complexity)
- ruff fix
- feat(ask): answer 'what changed today' from the dated change journal
- feat(index): incremental re-index endpoint + Settings button + DI/inventory
- feat(index): incremental re-index by content hash (backend)
- refactor(watch): single home for history — remove inline timeline from Home card
- feat(watch): cheap git-only history journal + date-grouped timeline
- refactor(watch): split history timeline into HistoryEntryItem + HighlightList
- ruff fix
- feat(watch): hover an area chip to see which files changed
- feat(watch): surface change history on the Project Watch card + richer entries
- refactor: use contextlib.suppress for best-effort history writes (B110)
- ruff fix
- ruff format fix
- docs(api): inventory the watch/history endpoint
- feat(intelligence): durable change-history timeline + History tab
- feat(investigator): JSON-schema structured steps with text fallback
- feat(llamacpp): flash-attn, KV-slot cache, parallel slots, JSON-schema output, exact tokenizer
- chore: new app icon + bump bundled llama.cpp to b9789
Full changelog: v0.2.2...v0.2.3