Skip to content

v0.4.15

Choose a tag to compare

@kinqsradio kinqsradio released this 22 Jun 10:02
0b4d6af

BrainRouter 0.4.15 (2026-06-22).

Highlights

  • Requirement-first workflow — requirement → plan → durable task → review/annotation → verification → memory, all provenance-tracked through the existing memory pipeline.
  • Unified workspace — Chat · Track · Code modes from a left-sidebar switcher; Track is a code-aware, Jira-class board per workspace (Board/List/Backlog/Sprint/Roadmap/Reports/Automation/Members/Sync · JQL · automation rules · per-project roles · GitHub Issues sync).
  • Desktop UI pass — Graphite Mono theme, colour-toned tool rows with clickable paths, end-of-turn changeset card, live Context panel (token + cache/compaction/memory savings).
  • Closing UX & reliability program — idle child auto-resume, destructive-command guard, MCP auto-reconnect + brain/tools split, provider gallery with live /models, cross-session usage heatmap, stop-workflow, rewind, cross-workspace session menu.
  • Steadier core — bounded reranker/embedding timeouts + circuit breaker, non-blocking capture, strict tool-call pairing fix (the 2013 error), injection-surface + tenancy hardening.

Full notes: brainrouter-changelog/0.4.15.md

What's Changed

  • docs: 0.4.15 plan — The Agent Behind the Glass by @kinqsradio in #348
  • docs: 0.4.15 plan v2 — full twelve-subsystem blueprint by @kinqsradio in #349
  • feat(benchmark): CC-P8.1 agent-behavior metrics + cli:behavior suite by @kinqsradio in #350
  • feat(tui): CC-P1.1 line-level virtual scrolling by @kinqsradio in #351
  • feat(agent): CC-P6.2 deliverable guardrail — turns end on the result, not a deferral by @kinqsradio in #352
  • feat(agent): CC-P6.4 read-before-edit + unique-match edit contract by @kinqsradio in #354
  • feat(agent): CC-P6.8 denied-tool semantics — adjust, don't retry by @kinqsradio in #353
  • feat(agent): CC-P9.2 task-tracking harness nudge by @kinqsradio in #355
  • feat(cli): CC-P1.6 /export-chat — export session transcript (md/json) by @kinqsradio in #356
  • feat(agent): CC-P7.3 read_file truncation contract by @kinqsradio in #357
  • feat(agent): CC-P6.5 verification-before-done gate by @kinqsradio in #358
  • feat(cli): CC-P1.4 /find — transcript search by @kinqsradio in #359
  • feat(cli): CC-P4.1 markdown slash commands (.brainrouter/commands) by @kinqsradio in #360
  • feat(agent): CC-P3.2 declarative cli.permissions allow/deny rules by @kinqsradio in #361
  • feat(cli): CC-P2.4 /recap — instant session summary by @kinqsradio in #362
  • feat(cli): CC-P2.1 --continue / --resume launch flags by @kinqsradio in #363
  • feat(agent): CC-P11.2 wait_until — block on a workspace file condition by @kinqsradio in #364
  • feat(tui): CC-P1.7 Ctrl+R reverse history search by @kinqsradio in #365
  • feat(tui): CC-P1.3 Ctrl+O verbose-transcript toggle by @kinqsradio in #366
  • feat(cli): CC-P4.4 '#' quick memory-capture prefix by @kinqsradio in #367
  • feat(agent): CC-P11.1 background run_command + task_output by @kinqsradio in #368
  • feat(cli): CC-P5.2 /usage — per-actor token breakdown by @kinqsradio in #369
  • feat(agent): CC-P12.3 session chapters — mark_chapter + /chapters by @kinqsradio in #370
  • feat(benchmark): CC-P8.2 decision-trace diff by @kinqsradio in #371
  • feat(cli): CC-P13.2 headless flags — --max-tool-loops, --disallowed-tools by @kinqsradio in #372
  • feat(agent): CC-P4.2 hook decision contracts + new events by @kinqsradio in #373
  • docs: 0.4.15 thread M — BrainRouter Desktop plan by @kinqsradio in #374
  • feat(protocol): DESK-0 — typed agent event/command protocol package by @kinqsradio in #375
  • feat(desktop): DESK-1 — Electron shell over the unchanged CLI runtime by @kinqsradio in #376
  • feat(agent): DESK-2a — cooperative turn interrupt (Stop / CC-P1.5) by @kinqsradio in #377
  • feat(desktop): DESK-2b — rich chat surface (markdown, tool cards, plan) by @kinqsradio in #378
  • feat(desktop): DESK-3a — InteractionPort + session/model runtime core by @kinqsradio in #379
  • feat(desktop): DESK-3b/4a — approvals UI, new chat, resume, settings, workspaces by @kinqsradio in #380
  • feat(desktop): DESK-4b — diff review, terminal pane, live tokens by @kinqsradio in #381
  • feat(desktop): DESK-4c — workbench redesign: resizable panel columns, full command surface, CC-style settings by @kinqsradio in #382
  • feat(desktop): DESK-4d — Claude-desktop visual parity: two themes, home view, sidebar pills + account row by @kinqsradio in #383
  • feat(desktop): DESK-4e — live-app behaviors from the deep walkthrough by @kinqsradio in #384
  • feat(desktop): DESK-5 — command bridge + provider editor by @kinqsradio in #385
  • feat(desktop): DESK-4f — UX wave: streaming scroll, real code view, motion, alignment by @kinqsradio in #386
  • fix(desktop): commit root lockfile for react-syntax-highlighter by @kinqsradio in #387
  • feat(desktop): DESK-5b — /briefing bridge + terminal history by @kinqsradio in #388
  • feat(desktop): DESK-4g — resume renders full history + responsive at every window size by @kinqsradio in #389
  • feat(desktop): DESK-4h — inspect-diff with per-hunk cards + responsive repair by @kinqsradio in #390
  • feat(desktop): DESK-4i — side-by-side pass: sidebar card + slim composer by @kinqsradio in #391
  • feat(desktop): DESK-4j — patterns from the Codex + Antigravity study by @kinqsradio in #392
  • feat(desktop): DESK-5c — file tree, real terminal, /models endpoint, accent theming by @kinqsradio in #393
  • feat(desktop): DESK-4k — modern skin: SVG icon set, neutral palette, account-row polish by @kinqsradio in #394
  • feat(cli): 0.4.15 engine — cooperative interrupt, questions/planning, session meta + reconcile by @kinqsradio in #396
  • feat(desktop): 0.4.15 host — interrupt cascade, lazy history + cache, workflow/session queries by @kinqsradio in #397
  • feat(desktop): 0.4.15 renderer — Codex-parity shell, message actions, fork lineage, responsiveness by @kinqsradio in #398
  • feat(desktop): 0.4.15 chat cleanup — message actions, fork-from-message, sub-agent view by @kinqsradio in #399
  • feat(cli+desktop): T4 — shared workspace/git-root resolution helper by @kinqsradio in #400
  • fix(desktop): T9 — directory-aware file reads (no raw EISDIR) + diff guard by @kinqsradio in #401
  • feat(cli+desktop): T1 — workspace trust in shared store + instant project add by @kinqsradio in #402
  • feat(desktop): T8 — route all slash commands through the registry (never to the LLM) by @kinqsradio in #403
  • feat(desktop): T3 — atomic workspace identity + stale-workspace event drop by @kinqsradio in #404
  • feat(cli): T5 — per-session provider/model/MCP runtime store + layered resolution by @kinqsradio in #405
  • feat(desktop): build-on-start + safe clean-reset (npm start always builds; reset:desktop) by @kinqsradio in #406
  • fix(desktop): OOM — bounded transcript TAIL reads for UI (no full-file allocation) by @kinqsradio in #407
  • fix(desktop): branch/git state no longer disappears on workspace switch by @kinqsradio in #408
  • fix(desktop): drop stale query results across workspace generations (no A-under-B) by @kinqsradio in #409
  • fix(desktop): OOM — lazy resume + context ring no longer full-read the transcript by @kinqsradio in #410
  • feat(desktop): env panel shows owning git repo when workspace is a subdir (T4) by @kinqsradio in #411
  • feat(desktop): sidebar clarity — disambiguate duplicate-prompt rows + drop native tooltips by @kinqsradio in #412
  • fix(desktop): multi-workspace host pool — switching projects no longer kills running work by @kinqsradio in #413
  • feat(desktop): sidebar 'running elsewhere' dot — see background work the host pool kept alive (item 4) by @kinqsradio in #414
  • feat(desktop): model-aware reasoning parsing — collapse inline chain-of-thought (T10) by @kinqsradio in #415
  • feat(desktop): per-session model — each chat keeps its own model (item 10) by @kinqsradio in #416
  • fix(desktop): harden BrowserWindow — deny window.open + block off-origin navigation by @kinqsradio in #417
  • test(cli+desktop): golden catalog/agent parity (T16) by @kinqsradio in #418
  • feat(desktop): Schedules panel — cron/once jobs over the CLI scheduleStore (T14) by @kinqsradio in #419
  • feat(desktop): Worktrees panel — list/create/open/diff/remove (T13) by @kinqsradio in #420
  • feat(desktop): sidebar session pagination + tested tool-group label (item 9 + item 12) by @kinqsradio in #421
  • feat(desktop): working Settings editors — permission rules + MCP add/remove (T6 + T7) by @kinqsradio in #422
  • feat(desktop): local AI review panel — review the working diff before a commit/PR (T12) by @kinqsradio in #423
  • refactor(desktop): tokenize white-overlay interaction scale (T15, visually neutral) by @kinqsradio in #424
  • fix(desktop): activity-based project ordering — opening a project no longer reorders it (Wave 1 / D) by @kinqsradio in #425
  • fix(desktop): stable session order + durable optimistic new-chat row (Wave 2 / E) by @kinqsradio in #426
  • feat(cli): Local PR Review v2 model + store + reviewer-session isolation (Wave 3a / A) by @kinqsradio in #427
  • feat(desktop): review v2 host actions + commit/push GATE (Wave 3b+4 / A+C) by @kinqsradio in #428
  • feat(desktop): Review panel v2 — gate banner + per-finding actions (Wave 5 / B) by @kinqsradio in #429
  • feat(cli): gate /commit on the shared local review (Wave 4 / C — CLI side) by @kinqsradio in #430
  • feat(desktop): surface the review gate in the Changes/Diff area (Wave 7 / B+G) by @kinqsradio in #431
  • feat(desktop): GitHub Midnight theme — palette restyle via design tokens (Wave 7 / G) by @kinqsradio in #432
  • feat(review): rich finding data + read-only reviewer + clean≠bypass gate (§1/§6/§7) by @kinqsradio in #433
  • feat(desktop): PR-style Review panel — code frames, actions, diff linkage, gated buttons (§2-5,§7,§8) by @kinqsradio in #434
  • fix(desktop): strip reviewer from summary + un-double banner + drop side-panel close × by @kinqsradio in #435
  • refactor(desktop): group pure renderer helpers + tests under src/lib// by @kinqsradio in #436
  • refactor(desktop): move commands into src/lib/commands/ + co-locate reset test by @kinqsradio in #437
  • refactor(desktop): split panels.tsx into src/panels/ (one file per panel) by @kinqsradio in #438
  • refactor(desktop): extract App.tsx pure helpers, types & constants into modules by @kinqsradio in #439
  • refactor(desktop): extract App.tsx presentational components into chat/ + components/ by @kinqsradio in #440
  • refactor(desktop): extract the message-row renderer into chat/MessageRow.tsx by @kinqsradio in #441
  • refactor(desktop): drop two dead imports left by the App.tsx extraction by @kinqsradio in #442
  • chore(desktop): remove dead write-only termLines state from App.tsx by @kinqsradio in #443
  • feat(desktop): editor file backend in fsRead.ts (stat, guarded write, binary detection) by @kinqsradio in #444
  • feat(desktop): host backend endpoints for the editor (file-*) and GitHub CI/CD (gh) by @kinqsradio in #445
  • feat(desktop): in-app Monaco code editor (editable tabs, save, dirty, preview fallback) by @kinqsradio in #446
  • feat(desktop): GitHub CI/CD panel via gh (checks, runs, logs, rerun) by @kinqsradio in #447
  • feat(desktop): multi-workspace review — state keyed by workspace + sidebar badges (T2) by @kinqsradio in #448
  • refactor(desktop): extract usePanels hook from App.tsx (T4 slice 1) by @kinqsradio in #449
  • fix(desktop): clearer Changes commit row + aligned CI/Checks rows by @kinqsradio in #450
  • feat(desktop): review-fix-finding agent + apply feedback + scroll-to-hunk (T3) by @kinqsradio in #451
  • feat(desktop): workflow/background dashboard — workspace + global modes (T1) by @kinqsradio in #452
  • refactor(desktop): break up App.tsx into modular hooks + components (<900 lines) — T4 by @kinqsradio in #453
  • fix(desktop): refresh git/branch state on window focus by @kinqsradio in #454
  • feat(cli): session-scoped execution mode / review policy / effort by @kinqsradio in #455
  • feat(cli): requirement records + /requirement commands (workflow #1) by @kinqsradio in #456
  • feat(cli): link plans to requirements + /requirement seed-plan by @kinqsradio in #457
  • feat(review): triage statuses (acknowledged/disputed/out-of-scope) by @kinqsradio in #458
  • feat(desktop): Requirements panel — surface requirement records by @kinqsradio in #459
  • feat(cli): first-party annotation records + /annotation commands (workflow #6) by @kinqsradio in #460
  • feat(desktop): Annotations panel + annotate review findings (workflow #6/#9/#11) by @kinqsradio in #461
  • fix(desktop): restore missing subtle backgrounds (undefined --ov-1 token) by @kinqsradio in #462
  • feat(cli): requirement clarification flow — /requirement ask/answer/clarify (workflow #2) by @kinqsradio in #463
  • docs(0.4.15): changelog for the requirement-first workflow by @kinqsradio in #464
  • feat(cli): artifact records + /artifact commands (workflow #10) by @kinqsradio in #465
  • feat(desktop): Artifacts panel — browse + preview artifact records (workflow #10/#11) by @kinqsradio in #466
  • feat(cli): plan approval + version history/diffs (workflow #7) by @kinqsradio in #467
  • fix(desktop): session-scoped context meter + plan; self-heal new-chat transcript by @kinqsradio in #468
  • fix(desktop): dark-theme contrast — CI run cards, Monaco editor, close buttons by @kinqsradio in #469
  • feat(desktop): Plan panel approval + version history (workflow #7 UI) by @kinqsradio in #470
  • feat(annotations): code anchors with stale-detection + comment threads (§6) by @kinqsradio in #471
  • feat(desktop): artifact annotation + write-workspace (§8/§12) by @kinqsradio in #472
  • feat(mcp): memory_create_requirement tool + provenance ID-linking (§2) by @kinqsradio in #473
  • refactor(desktop): Button + Chip control primitives (consolidation) by @kinqsradio in #474
  • feat(desktop): provider capability UX in the model picker (§13) by @kinqsradio in #475
  • feat(0.4.15): core package extraction, modular providers, Artifacts v2, desktop polish by @kinqsradio in #476
  • refactor(brainrouter): ADR-004 + Phase 2 memory domain reorg by @kinqsradio in #477
  • refactor(brainrouter): Phase 1 — in-repo contracts + API error envelope by @kinqsradio in #478
  • refactor(brainrouter): Phase 3.1 — split sqlite.ts (converters + Source store) by @kinqsradio in #479
  • refactor(brainrouter): Phase 3.2 — extract Graph + Connections sub-stores by @kinqsradio in #480
  • refactor(brainrouter): Phase 4 — extract ModelLLMRunner from engine.ts by @kinqsradio in #481
  • refactor(brainrouter): Phase 6 — extract MCP server factory from index.ts by @kinqsradio in #482
  • docs(adr-004): Phase 5 — defer core de-dup (investigation outcome) by @kinqsradio in #483
  • refactor(brainrouter): Phase 3.3 — extract Users + Jobs sub-stores by @kinqsradio in #484
  • 0.4.15 checkpoint — desktop UX + a steadier core by @kinqsradio in #485
  • Track mode — unified workspace (Chat · Track · Code) by @kinqsradio in #486
  • Track — complete project surface (detail · backlog/sprint · roadmap · reports · modes) by @kinqsradio in #487
  • feat(track): advanced Track — JQL, automation, permissions, read-only Chat, GitHub sync by @kinqsradio in #488
  • feat(track): sync members from GitHub collaborators + assignee mapping by @kinqsradio in #489
  • feat(track): drag-and-drop board, theme-synced dropdowns/buttons, GitHub secrets in Settings by @kinqsradio in #490
  • fix(track): uniform dropdown + button styling across the Track surface by @kinqsradio in #491
  • fix(track): themed dropdowns + consistent buttons + chat banner + sidebar reopen by @kinqsradio in #492
  • feat(workspace): Codex automation brief + mode order / topbar / Code-button fixes by @kinqsradio in #493
  • feat(automation): agentic Requirement → Plan → Track automation (6 phases, reviewed) by @kinqsradio in #494
  • fix(track): final control-consistency tweak (Add-action button height) by @kinqsradio in #495
  • feat(automation): tiered autonomy — propose by default, autopilot opt-in by @kinqsradio in #496
  • feat(hooks): deterministic enforcement on unattended/silent agents (#3) by @kinqsradio in #497
  • feat(track): BR-123 commit-message scanner (#5) by @kinqsradio in #498
  • feat(sandbox): enforce sandbox for unattended/silent agents (#4) by @kinqsradio in #499
  • fix(reasoning): binary on/off model detection — stop sending graded effort by @kinqsradio in #500
  • fix(desktop): refresh effort/mode chip on session switch by @kinqsradio in #501
  • fix(goal/desktop): workflow-card overflow + /goal seeds a plan + agentic kickoff by @kinqsradio in #502
  • fix(workflow): block nested workflows from spawned/child agents by @kinqsradio in #503
  • feat(desktop): live file-watching for the Files/Changes panel by @kinqsradio in #504
  • feat(desktop): pinned goal banner with edit/resume/delete by @kinqsradio in #505
  • feat(workflow): fan out the build review across parallel lenses by @kinqsradio in #506
  • feat(agents): ground-truth handoff + anti-redundancy (tier 1 of the flow rework) by @kinqsradio in #507
  • feat(agents): stop weak-model tool-call corruption propagating (tier 2) by @kinqsradio in #508
  • fix(agents): stop the repeat-sequence guard misfiring on productive writes by @kinqsradio in #509
  • feat: workflow-automation settings surface (desktop + CLI /config keys) by @kinqsradio in #510
  • feat(agents): forward a structured read-manifest between phases (B2 + C3) by @kinqsradio in #511
  • feat: typed extension API + project trust + audited self-update by @kinqsradio in #514
  • fix(reranker): shed to RRF under parallel load + raise CPU timeout; add TokenBucket by @luannn010 in #515
  • fix(memory): stop silent sensory-row loss on bad extraction output + LLM resilience by @luannn010 in #512
  • fix(agent): argument-aware repeat-guard + recall-path timeout policy + architecture map by @kinqsradio in #518
  • feat(goal): record goal text as a transcript entry on /goal (WS4) by @kinqsradio in #520
  • feat(goal): sync goal pause ↔ chat stop; hide goal budgets (WS7) by @kinqsradio in #521
  • feat(orchestrator): auto-resume idle session when background work finishes (WS1) by @kinqsradio in #522
  • feat(exec): block destructive git/IaC commands unless asked (WS5) by @kinqsradio in #523
  • fix(desktop): per-session running indicator live across workspaces (WS3) by @kinqsradio in #524
  • feat(desktop): surface agent background shells in the tasks panel (WS2) by @kinqsradio in #525
  • feat(desktop): friendlier Advanced Options — hide internals, drop raw JSON (WS11) by @kinqsradio in #526
  • feat(orchestrator): make Stop halt a running workflow / fan-out (WS6) by @kinqsradio in #527
  • feat(desktop): "rewind to here" with code-generated guard (WS8) by @kinqsradio in #528
  • feat(mcp): background auto-reconnect for dropped MCP servers (WS9 pt1) by @kinqsradio in #529
  • feat(desktop): MCP settings rework — name, brain/tools, single-active (WS9 pt2) by @kinqsradio in #530
  • feat(desktop): live /models picker for the provider model field (WS12) by @kinqsradio in #531
  • feat(usage): persistent cross-session usage history (WS10 pipeline) by @kinqsradio in #532
  • fix(memory): route all LLM-JSON parsing through a robust extraction chokepoint by @kinqsradio in #534
  • feat(desktop): cross-session usage contributions heatmap (WS10 viz) by @kinqsradio in #533
  • feat(desktop): group MCP servers into Brains / Tools (WS9 viz) by @kinqsradio in #535
  • feat(desktop): visual provider gallery for one-click setup (WS12 viz) by @kinqsradio in #536
  • feat(core): prefix-cache stability measurement (WS0) by @kinqsradio in #537
  • test(core): WS0 prefix-stability invariant guard (audit conclusion) by @kinqsradio in #538
  • feat(desktop): week/month/year range selector for the usage heatmap (WS10) by @kinqsradio in #539
  • feat(desktop): provider configure modal + saved-provider cards (WS12) by @kinqsradio in #540
  • feat(core): surface cache savings (cached vs full-price tokens) in /usage (WS0 0.5) by @kinqsradio in #541
  • feat: kill background shells — process-group teardown + panel Stop control (WS2 2.4 / WS6 6.3) by @kinqsradio in #542
  • fix(desktop): UX polish pass — Models, MCP, Usage, commands, layout, sidebar (7 fixes) by @kinqsradio in #543
  • feat(desktop): cross-workspace session menu + bg-tasks badge fix + panel min by @kinqsradio in #544
  • fix(desktop): bg-tasks row names, Plan/toolbar overlap, 3-dots flicker, parked rename by @kinqsradio in #545
  • chore(release): 0.4.15 — version bump + changelog/roadmap by @kinqsradio in #546
  • Release 0.4.15 — requirement-first workflow + unified workspace + desktop UX/reliability pass by @kinqsradio in #547

New Contributors

Full Changelog: v0.4.14...v0.4.15