0.4.16
0.4.16 — The autonomous fleet, the unified desktop, and a Postgres brain
Shipped — 2026-07-01. Tagged
v0.4.16and published to npm.
0.4.16 is the largest release since the memory engine landed. It grows
BrainRouter along four big arcs at once: an autonomous fleet that can drain a
queue of migrations across many repos as isolated, verified PRs; a unified
desktop workspace where Chat · Track · Code become full first-class modes with
a Write workspace, prototype generation, a visual workflow canvas, and a
Memory panel; Track matures into a Jira/Plane-class board with a headline
bidirectional 3-way GitHub Issues sync; and the brain moves onto PostgreSQL +
pgvector behind a fully async engine — with a remote-brain runtime and an
Atlas codebase knowledge graph riding on top. Underneath it all, packages/core
gets a machine-enforced public-API boundary so the CLI, Desktop, brain, and
fleet all consume one curated surface instead of deep-importing build artifacts.
Fleet automation — the Honk program (H0–H4, L1–L7)
BrainRouter can now run one change across a whole fleet of repos unattended, as N
isolated and independently-verified pull requests — and drive weak/local models
reliably enough to do the coding.
- Durable global fleet job queue + runner (H3.1a). A file-backed, retryable
queue of fleet jobs with a single runner loop that drains it — jobs survive
host restarts, so a long multi-repo migration picks up exactly where it left
off instead of starting over. - Single-runner host lock (H3). A host-level lock guards the drain loop so
only one runner processes the queue at a time — two desktops or a desktop + a
cron job pointed at the same brain can't double-run a job or race on a worktree. - Fleet fan-out + PR-emitting build executor + status read-model (H3.2/H4).
The executor fans a job out across its target repos, runs the build loop in
each, and emits the result as a PR; a separate status read-model aggregates
per-repo state (queued · running · passed · failed · PR-opened) so a run is
observable without tailing logs. - Recipe fleet executor — isolated-worktree codemod → PR (H3.2). A "recipe"
applies a codemod inside an isolated worktree per repo, verifies it, and opens a
PR — the mechanism behind applying the same change to many repositories as
clean, reviewable diffs. brainrouter fleetrun / status / drain (H4). The CLI drives live
multi-repo migrations:runenqueues a job across its targets,statusreads
the aggregated read-model, anddrainprocesses the queue to completion.- MCP fleet surface. The agent can start and inspect fleet runs over MCP
(start-a-run + read-status tools), so a supervising agent orchestrates the fleet
the same way it manages the board or the plan. - PR from a successful build loop (H1). Opt-in
cli.buildLoopEmitPr: a
passing/buildis delivered as a draft GitHub PR from an isolated worktree,
with a unique branch name, redaction, a safe base-ref, and no-hang guards baked
in — so a green build becomes a reviewable PR without a manual push. - Requirements-intake agent + self-contained delegation packet (H2.1). A
role that turns a raw request into a structured requirement, then hands each
delegated worker a self-contained packet (everything the child needs, no
back-channel to the parent) so unattended workers don't stall waiting for
context. - Un-opt-out-able sandbox + secret-env scoping for fleet roles (H0). For
unattended roles the sandbox cannot be disabled, and secret environment
variables are scoped to the role that needs them — an autonomous worker can't
turn off its own guardrails or read a secret outside its lane. - Local-model bounded harness (L1–L7). A profile that makes a weak/local
model usable as a coding worker: a bounded-harness profile (L1/L7) caps the
run; a hard tool allowlist (L2) removes tools it would misuse; a
schema-flatten pass (L3) rewrites nested tool schemas into the shallow shapes
local models handle; a drop-and-retry fallback incallOpenAI(L4) sheds
thetoolspayload and retries when a server rejects it; and a verify-loop
nudge + router tier bias (L5/L6) pushes the model back to green and biases the
router toward the right tier. - Fleet console on the dashboard (H3.3). The CLI pushes fleet snapshots to the
brain (store-and-serve API), and the dashboard reads them — a live console for
what the fleet is doing across every repo, from anywhere the brain is reachable. - Dependency-free pre-commit lint hook + installer (R0.3). A zero-dependency
pre-commit hook (plus its installer) keeps fleet-authored and human commits from
landing lint failures.
Desktop unified workspace — Chat · Track · Code become full modes
The three-mode workspace introduced in 0.4.15 grows into a genuine
Chat · Track · Code product: a Markdown/Monaco Write mode, in-app
prototype generation, a visual workflow canvas, a Memory panel, and
system-level polish.
Write mode (W1–W6)
- Markdown writing workspace on Monaco (W1). A real editor surface for prose
and docs — not the chat composer — with a per-workspace writing thread. - Diff-review primitive + selection inline AI (W2/W3). Review a proposed edit
as a diff before accepting; select any span and ask the AI to act on just that
selection. - Ghost-text (W4). Inline, accept-on-tab continuations while you write.
- Workspace-grounded assistant + per-workspace thread (W5). The Write
assistant is grounded in the workspace's files and keeps its own thread, so it
answers about this document set, not a blank chat. - DOC/HTML export + copy-as-rich-text (W6). Export the document to HTML or
DOC, or copy it as rich text to paste elsewhere with formatting intact.
Interactive prototype generation (D2–D4)
- Prototype detection + auth-gate (D2/D3). BrainRouter detects when a turn
produced an interactive HTML prototype and gates it behind an explicit enable
step instead of running arbitrary generated markup silently. - Sandboxed-webview render (D3). Prototypes render in a locked-down webview,
isolated from the app. - Design-context editor + prompt composer (D4). Steer generation with a
design-context block and a dedicated prompt composer so the prototype matches
the intended look and behaviour. - Placeholder resolve-and-swap in Artifacts (D2). Generated placeholders
resolve and swap into the Artifacts preview, so a scaffold fills in with real
content in place.
Visual workflow canvas (L1–L4)
- Workflow graph DSL + execution engine (L2). A visual-workflow graph
language with an execution engine — nodes and edges that actually run. - Canvas UI + advanced nodes (L1/L3). A drag-and-connect canvas with advanced
node types wired to the engine. - Durable canvas persistence +
run_workflow_graph(L4). A workflow graph
store persists a canvas, and a newrun_workflow_graphagent tool makes a
saved graph callable as a tool — so a hand-built visual workflow becomes
something the agent can invoke by name.
Desktop platform & UX
- Memory panel (§5.3). Search the brain's memory engine directly from the
desktop — inspect what the brain knows without dropping to the CLI. - System tray with dynamic session menu (§5.8). A tray icon whose menu lists
live sessions, so you can jump to a running chat from the OS chrome. - Customizable keyboard shortcuts (§5.9). A shortcut registry with template
expansion (core) plus a rebind-and-persist UI (desktop) — remap keys and keep
them across restarts. - @-mention workspace-file picker (§5.7). Type
@in the composer to pick a
workspace file into the prompt; a global code prompt-prefix knob rounds it out. - Settings → Tools — enable/disable built-in & MCP tools (§5.10). A per-tool
enable/disable policy (cli.toolOverrides, core) with a desktop UI, where core
tools stay protected so you can't disable the agent's ability to function. - Per-session model fix. Picking a model in one chat no longer syncs that
pick to every other chat — model choice is per-session. - VS Code-grade Editor fold-in. Docs folded into a full Editor with unified
canvas controls and capped auto-compaction; Monaco is themed from a
hex-normalized palette and Write/Workflows reflow when the window is narrow. - Automated signed-build pipeline (CP-B). A signed macOS build pipeline with
packaged-build verification, backed by the notarization scaffold — so releases
ship as a trusted, verifiable app. - UX hardening. A top-level error boundary, friendly 5-card permission modes
in Settings, hooks-phase parity (glob matchers + post-tool/prompt rewrite),
per-turn git checkpoint + rollback, PM-framework buttons in the Requirements
panel, and a batch of picker/menu/z-index/layout fixes.
Track — a Jira/Plane-class board with bidirectional GitHub sync
Track grows from the 0.4.15 board into a full project-management surface, aligned
to the lifecycle model and finished with a true two-way GitHub Issues sync.
- Work-item model aligned to lifecycle (T-align). Items carry lifecycle
status groups, priority, dates, and an archive state, so the board maps
onto the same lifecycle the rest of BrainRouter uses. - Multiple assignees + a first-class label registry. Items support multiple
assignees, and labels are a managed registry (not free-typed strings) with
stable identity and colour. - Modules + extended issue relations. A Modules model groups work, plus
richer issue relations (blocks/relates/etc.) — surfaced end-to-end through a
Modules tab. - Calendar / Gantt / spreadsheet layouts + saved Views + clickable card menu.
Three new board layouts alongside the existing ones, a saved Views system
(named filter + layout presets), and a right-click/kebab menu on every card. - GitHub linking — comment sync + label-color round-trip. Linking a work item
to an issue keeps comments in sync both ways and round-trips label
colours between the board and the repo. - Bidirectional 3-way GitHub Issues sync (headline). Sync now pushes local
edits up, pulls remote changes down, and flags conflicts without clobbering
either side — a per-link baseline snapshot lets a 3-way merge tell a local
edit from a remote one, so pulling no longer overwrites work you did on the
board. Surfaced as a "Sync ⇅ Both ways" card. (This is PAT/REST against the
Issues API, not git — issues don't live in the repo tree.) - Detail-drawer UX. The work-item drawer renders Markdown, gains real
date fields, and stops the toolbar overlapping content; calendar
today/date placement and the Gantt view were redesigned; the board and Sync
auto-refresh (no manual Refresh); and macOS traffic lights clear when the
sidebar is collapsed. Track dates are treated as plain calendar dates
(ISO-slice, not a localnew Date()), so a due date never drifts a day by
timezone.
Core public-API boundary (Refactor P1)
- Curated entrypoints for
packages/core.packages/corenow exposes a
public API through curated barrels — the CLI, Desktop, brain, and fleet
import from those entrypoints instead of reaching into deepdist/*build
artifacts, so an internal refactor can't silently break a downstream head. - Machine-enforced boundary. An ESLint flat config + Prettier with an
import-boundary rule (Refactor P0) fails a build that deep-imports across
the boundary; a per-workspacetypecheckplus a single rootverifycommand
gate the whole monorepo in one shot. New architecture-refactor +
agent-automation skills document the workflow.
PostgreSQL + pgvector — the brain goes async (ADR-007)
- Async
IMemoryStore+MemoryEngine. The store interface and the entire
memory engine were made natively async (ADR-007 Phase 2, step 1) — a
prerequisite for a networked database and a remote brain. PostgresMemoryStoreis the default. A native-asyncpg+pgvectorstore
(step 2) mirrors the full schema and becomes the default backend (step 3);
SQLite is removed entirely — one storage engine, no dual-write drift.- Tunable ANN index. The pgvector index is configurable —
ivfflat/
hnsw/nonevia env — so you can trade recall latency against build cost
for your dataset size. - Lazy + closeable engine; Postgres in CI. The
memoryEnginesingleton is now
lazy and closeable (dropping the--test-force-exitworkaround), a
teardown-time init rejection can't crash an unrelated test, and Postgres +
pgvector runs in CI. A deterministic "most recent" tiebreak was restored in
getTreeNodeIdByChunkId(MEM-17).
Remote brain runtime (Workstream A)
cli.brainUrl— point the active brain at a remote HTTP endpoint (Phase 1).
The brain no longer has to be embedded; a single knob makes it a remote service.- Health probe + graceful embedded fallback (Phase 2). A remote brain is
health-checked and falls back to the embedded engine cleanly if it's
unreachable — remote is an upgrade, not a single point of failure. - Atlas-as-service (Phase 3). The brain persists and serves a
client-built Atlas graph and runsatlas_query/atlas_impact/
atlas_enrichserver-side over the stored graph; the CLI and Desktop sync
their Atlas with the brain, so the codebase graph is shared, not rebuilt per
client. - Remote-transport observability (Phase 4). Metrics plus an opt-in access log
on the remote transport, so a hosted brain is measurable. - Cloud packaging (Phase 5). A brain server image + compose file for
running a remote brain, alongside the remote dashboard — the deployable shape of
a hosted BrainRouter.
Atlas — the codebase knowledge graph (ADR-006/008, ATLAS-1…18)
A new first-party feature: a knowledge graph of your codebase, on the CLI and in
a desktop panel.
- Data model + deterministic scanner (ATLAS-1/2). A codebase graph data model
and a deterministic scanner + symbol extractor that builds the base graph with
no LLM in the loop. /atlas+ graph persistence (ATLAS-3). A CLI command that builds and
persists the graph.- Interactive desktop panel (ATLAS-5). The graph as an interactive panel —
node detail cards (symbols · layer · deps · summary), search-and-focus, a guided
tour, and open-file-from-graph. - LLM enrichment (ATLAS-4). Server-side
atlas_enrichadds summaries, derived
layers, semantic domain edge labels, and a guided tour — harnessed via
forced tool-calls so enrich reliably produces structured output. - Structural / grouped / service-level views. A grouped Overview/Structural
view (packed roughly square, no endless column), layers derived from
package/dir structure, a per-workspace switch, and a Services view that
renders the decomposed service architecture as a map with deterministic
service-port detection (ADR-008 Wave 3). - Change-aware overlays. A Review overlay (see uncommitted/AI changes before
commit), impact / blast-radius (what a change affects), AI change
assessment (explain · risk · checklist · concerns), and a test-coverage
overlay that flags AI changes nothing tests. - Symbol line-jump. Open a file at a symbol's exact line straight from the
graph.
Service-module decomposition (ADR-008)
- Service ports over every subsystem. Behind the Atlas Services view, the core
was decomposed intoI*Serviceports (Waves 1–3) over the exec, schedule,
worker, background-task, orchestration, model-gateway, retrieval, session, tool,
prompt/context/workflow, storage, config/workspace/git/command,
usage/pack/hooks, review/track/goal/task, annotation/artifact/requirement, and
cognitive-tier (tree/lessons/blackboard) modules — a deploy-optional boundary
that makes each subsystem independently testable and, eventually, independently
deployable.
Providers, prompts & polish
- Native Anthropic-Messages / Gemini-generate wire adapters (opt-in). Beyond
the OpenAI-compatible shims, BrainRouter can speak the native
Anthropic/v1/messagesand GeminigenerateContentwire formats —
opt-in (default OFF), non-streaming for now. - Fast mode decoupled from reasoning. Fast is BrainRouter's own agentic
concept, no longer tied to a provider reasoning param; it moved to Settings,
alongside window-zoom controls, native computer use, a provider-agnostic web
search, and a working reasoning-effort slider with model-family reasoning
profiles. - The agent gets today's date. Today's date is now injected into the Runtime
Context, so the agent stops guessing the current date (and Track/date logic has
a correct "today"). - Dashboard await fix. The brain API routes now await the now-async engine
methods (the PG cutover made them async) — fixing dashboard0/NaN/undefined
and crashes — and the dashboard shows resolved contradictions. - Connector settings honesty pass. Only GitHub has a real runtime, so the
connector catalog greys out every other source with a "Coming soon"
label and disables OAuth — the settings surface now tells the truth about what
actually works instead of offering dead options. - MCP progressive discovery. New
mcp_search/mcp_describe/mcp_call
tools let the agent discover a large MCP surface progressively instead of
loading every tool schema up front. - Token-ROI completeness + code-review checklist in the prompt. Cache stats
persist and an unknown model gets a sane context-window floor; the code-review
checklist is baked into the system prompt; and a/researchevidence ledger
(research_note/research_brieftools) plus a requirement SDD trace round out
the workflow surface.
Build & release
- Cloudflare build fix.
@modelcontextprotocol/sdkis declared as a core
dependency and pinned at the monorepo root, fixing the workspace-scoped
Cloudflare build. - Renderer browser-bundle safety. The desktop renderer deep-imports
browser-safe core subpaths (e.g. atlas-ops from the types subpath) so the Vite
build doesn't pullnode:crypto; the workspace fan-out now builds
@kinqs/brainrouter-agent-protocolandbrainrouter-desktopin CI to catch
renderer build breaks; anddist-electronwas rebuilt to match host source.
What's Changed
- feat(atlas): codebase knowledge-graph data model (ATLAS-1) by @kinqsradio in #549
- feat(atlas): deterministic scanner + symbol extractor + base graph (ATLAS-2) by @kinqsradio in #550
- feat(atlas): /atlas CLI command + graph persistence (ATLAS-3) by @kinqsradio in #551
- feat(atlas): desktop Atlas panel — interactive codebase graph (ATLAS-5) by @kinqsradio in #553
- feat(atlas): LLM enrichment — summaries, layers, guided tour (ATLAS-4) by @kinqsradio in #554
- feat(atlas): desktop Enrich button — summaries, layers, tour in the panel (ATLAS-4b) by @kinqsradio in #555
- feat(atlas): node detail card — symbols, layer, deps, summary (ATLAS-6) by @kinqsradio in #556
- feat(atlas): guided tour stepper (ATLAS-7) by @kinqsradio in #557
- feat(atlas): search — find & focus nodes (ATLAS-8) by @kinqsradio in #558
- feat(atlas): open files from the graph (ATLAS-9) by @kinqsradio in #559
- feat(atlas): grouped Overview/Structural views + category filters (ATLAS-10) by @kinqsradio in #560
- feat(atlas): Review overlay — see uncommitted/AI changes before commit (ATLAS-11) by @kinqsradio in #561
- feat(atlas): Domain deep-dive — capability cards with entities + flows (ATLAS-12) by @kinqsradio in #562
- feat(atlas): impact / blast-radius — what a change affects (ATLAS-13) by @kinqsradio in #563
- feat(atlas): AI change assessment — explain + risk + checklist + concerns (ATLAS-14) by @kinqsradio in #564
- feat(atlas): test-coverage overlay — flag AI changes nothing tests (ATLAS-15) by @kinqsradio in #565
- fix(atlas): pack grouped layout roughly square — no tall column on big graphs (ATLAS-16) by @kinqsradio in #566
- feat(atlas): derive layers from package/dir structure at build (ATLAS-17) by @kinqsradio in #567
- feat(atlas): per-workspace switch (keep enrichment) + domain relationship edges (ATLAS-18) by @kinqsradio in #568
- docs+infra: service-architecture ADRs (005–007) + optional local Postgres+pgvector by @kinqsradio in #569
- docs: ADR-008 — full service-module decomposition (deploy-optional) by @kinqsradio in #570
- feat(svc): IModelGateway port over the provider module (ADR-008 Wave 1) by @kinqsradio in #571
- feat(svc): IExecService port over the exec module (ADR-008 Wave 1) by @kinqsradio in #572
- feat(svc): IScheduleService port over the schedule module (ADR-008 Wave 1) by @kinqsradio in #573
- feat(svc): IBackgroundTaskService port over the background store (ADR-008 Wave 1) by @kinqsradio in #574
- feat(svc): IWorkerService port over the worker store (ADR-008 Wave 1) by @kinqsradio in #575
- feat(pg): Postgres connection + migration runner groundwork (ADR-007 Phase 1) by @kinqsradio in #576
- feat(core): IOrchestrationService port over the child-session store (ADR-008 Wave 1) by @kinqsradio in #577
- feat(brain): IRetrievalService port over the recall pipeline (ADR-006/008 Wave 1) by @kinqsradio in #578
- feat(core): annotation/artifact/requirement service ports (ADR-008 Wave 2) by @kinqsradio in #579
- feat(core): review/track/goal/task service ports (ADR-008 Wave 2) by @kinqsradio in #580
- feat(core): session + tool service ports (ADR-008 Wave 2) by @kinqsradio in #581
- feat(core): prompt/context/workflow service ports (ADR-008 Wave 2) by @kinqsradio in #582
- feat(core): usage/pack/hooks service ports (ADR-008 Wave 2) by @kinqsradio in #583
- feat(core): config/workspace/git/command service ports (ADR-008 Wave 2) by @kinqsradio in #584
- feat(core): storage/attachment/telemetry service ports (ADR-008 Wave 2) by @kinqsradio in #585
- feat(core): IAtlasService port over the knowledge-graph pipeline (ADR-008 Wave 2) by @kinqsradio in #586
- feat(brain): tree/lessons/blackboard cognitive-tier service ports (ADR-008 Wave 2) by @kinqsradio in #587
- feat(atlas): deterministic service-port detection (ADR-008 Wave 3 — data layer) by @kinqsradio in #588
- feat(atlas): Services view — the decomposed service architecture as a map (ADR-008 Wave 3 UI) by @kinqsradio in #589
- feat(atlas): Top-N layer rollup + "Other" bucket for the Overview (Workstream C) by @kinqsradio in #590
- feat(atlas): symbol line-jump — open a file at a symbol's exact line (Workstream C) by @kinqsradio in #591
- feat(pg): full Postgres schema migration mirroring SqliteMemoryStore (ADR-007 Phase 2a) by @kinqsradio in #592
- refactor(brain): async-ify IMemoryStore + the memory engine (ADR-007 Phase 2, step 1) by @kinqsradio in #593
- feat(pg): PostgresMemoryStore — native-async pg + pgvector store (ADR-007 Phase 2, step 2) by @kinqsradio in #594
- feat(pg)!: cut over to Postgres + remove SQLite entirely (ADR-007 Phase 2, step 3) by @kinqsradio in #595
- fix(pg): deterministic tiebreak in getTreeNodeIdByChunkId (MEM-17 CI flake) by @kinqsradio in #597
- feat(atlas): semantic domain edge labels (ATLAS-8) by @kinqsradio in #596
- feat(remote-brain): cli.brainUrl knob → remote HTTP brain (Workstream A, Phase 1) by @kinqsradio in #598
- feat(remote-brain): health probe + graceful embedded fallback (Workstream A, Phase 2) by @kinqsradio in #599
- fix(brain): observe memory-engine background init promise (CI flake) by @kinqsradio in #601
- feat(remote-brain): Atlas-as-service store & serve (Workstream A, Phase 3a) by @kinqsradio in #600
- feat(remote-brain): server-side atlas_query + atlas_impact (Workstream A, Phase 3b) by @kinqsradio in #602
- feat(brain): lazy + closeable memoryEngine singleton (drop --test-force-exit) by @kinqsradio in #603
- feat(brain): structured LLM output via forced tool-calls — harness + extraction (Task B.1) by @kinqsradio in #604
- feat(brain): harness remaining runner-based memory passes via tool-calls (Task B.2) by @kinqsradio in #605
- feat(brain): harness relevance-judge via forced tool-call (Task B.3) by @kinqsradio in #606
- feat(atlas): harness Atlas enrich via forced tool-calls — completes Task B (B.4) by @kinqsradio in #607
- release(0.4.16): land beta — Atlas polish, PG migration hardening, remote-brain runtime, lazy/closeable engine, structured-output harness by @kinqsradio in #608
- feat(pg): tunable pgvector ANN index (ivfflat/hnsw/none) by @kinqsradio in #609
- feat(brain): remote-transport observability — metrics + access log (Phase 4) by @kinqsradio in #610
- feat(remote-brain): atlas_enrich server-side (Phase 3c) by @kinqsradio in #611
- feat(remote-brain): client wiring — CLI/desktop ↔ brain Atlas (Phase 3d) by @kinqsradio in #612
- feat(deploy): brain server image + compose (Phase 5 — cloud packaging) by @kinqsradio in #613
- chore(release): bump to 0.4.16 (version bump only — no publish) by @kinqsradio in #614
- release(0.4.16): deferred-task wave — pgvector tuning, observability, Atlas-as-service (3c/3d), cloud packaging, 0.4.16 bump by @kinqsradio in #615
- fix(desktop): renderer build broke on node:crypto via types barrel + add desktop to CI build by @kinqsradio in #616
- release(0.4.16): desktop renderer build fix + CI desktop-build gate by @kinqsradio in #617
- fix(atlas): enrich produced 0 summaries/tour — descriptive tool schemas + prompt fallback by @kinqsradio in #618
- release(0.4.16): Atlas enrich fix (descriptive tool schemas + fallback) by @kinqsradio in #619
- fix(atlas): UX pass — render-on-load, no review zoom, compact minimap, hover-highlight, de-dup name by @kinqsradio in #620
- release(0.4.16): Atlas UX pass (render-on-load, hover-highlight, compact minimap, de-dup) by @kinqsradio in #621
- feat(atlas): reference-match upgrade — layered DAG layout + Deep Dive panel + hover glow by @kinqsradio in #622
- release(0.4.16): Atlas reference-match — layered DAG layout + Deep Dive panel + hover glow by @kinqsradio in #623
- feat(atlas): polish — tour pulse, docked Deep Dive (re-fits), orthogonal edges by @kinqsradio in #624
- release(0.4.16): Atlas polish — tour pulse, docked Deep Dive, orthogonal edges by @kinqsradio in #625
- fix(desktop): stop the window pill overlaying side-rail tabs; separate Environment toggle by @kinqsradio in #626
- release(0.4.16): Atlas chrome — pill no longer overlays side-rail tabs; Environment toggle separated by @kinqsradio in #627
- feat: align prompts and connector settings by @kinqsradio in #628
- feat(desktop): Onyx-style Models panel with key-driven multi-select model fetch by @luannn010 in #630
- feat(desktop): all-PRs Review panel + auto-refresh, settings modal fixes, Atlas click-highlight, Models/picker layout by @kinqsradio in #632
- fix(desktop): opening a worktree opens a separate window (stop it wiping projects/chat) by @kinqsradio in #633
- feat(prompt): bake the code-review checklist into the system prompt by @kinqsradio in #634
- feat(desktop): auto-refresh Track (no manual Refresh on board / Sync) by @kinqsradio in #635
- feat(connectors): expand the catalog toward Onyx parity (+18 sources) by @kinqsradio in #636
- feat(desktop): review any PR with an AI agent on an isolated worktree by @kinqsradio in #637
- feat(core): native Anthropic Messages + Gemini generateContent adapters (opt-in) by @kinqsradio in #638
- feat(desktop): chat UX — right-click menu, header rename, paste-to-vision by @luannn010 in #639
- feat(desktop): hybrid drawer side-panel + OS-aware shortcut reference by @luannn010 in #641
- feat(desktop): per-session PR status icons in the sidebar by @luannn010 in #642
- fix(desktop): Atlas Structural reads as a wide band, not an endless column by @kinqsradio in #644
- feat(desktop): model-family reasoning profiles + Claude-style effort slider by @luannn010 in #640
- fix(desktop): right-panel / model-picker / connector UX batch by @kinqsradio in #645
- fix(desktop): model/effort menu no longer renders under the send arrow by @kinqsradio in #646
- chore(desktop): rebuild dist-electron to match host source (#639 paste-to-vision) by @kinqsradio in #647
- feat(desktop): decouple Fast mode from reasoning + window zoom controls by @kinqsradio in #648
- feat(desktop): native computer use + web search + reasoning-slider effect (reviewed) by @kinqsradio in #649
- feat(core): requirement SDD trace + PM-skill frameworks by @kinqsradio in #650
- feat(core): MCP progressive discovery (mcp_search/describe/call) by @kinqsradio in #651
- feat: token-ROI completeness — persist cache stats + unknown-model context floor by @kinqsradio in #652
- feat(core): friendly permission modes ↔ existing engine policy by @kinqsradio in #653
- feat(core): hooks-phase parity — glob matchers + post-tool/prompt rewrite by @kinqsradio in #654
- build(desktop): macOS signing/notarization scaffold for computer_use by @kinqsradio in #655
- feat(core): per-turn git checkpoint + rollback by @kinqsradio in #656
- feat(core): visual workflow graph DSL + execution engine (canvas L2) by @kinqsradio in #657
- feat(core): /research evidence ledger + research_note/research_brief tools by @kinqsradio in #658
- feat(desktop): visual workflow canvas UI (canvas L1) by @kinqsradio in #659
- feat(desktop): 5-card friendly permission modes in Settings (§5.10 UI) by @kinqsradio in #660
- feat(desktop): top-level error boundary (§5.9) by @kinqsradio in #661
- feat(core): workflow graph store — durable canvas persistence (§7 L4) by @kinqsradio in #662
- feat(desktop): PM-framework buttons in RequirementsPanel (§5.1 UI) by @kinqsradio in #663
- feat(desktop): Write mode — Markdown writing workspace (§2 W1) by @kinqsradio in #664
- feat(desktop): Write mode HTML export (§2 W6) by @kinqsradio in #665
- feat(desktop): canvas saves/loads to the workflow graph store (§7 L4) by @kinqsradio in #666
- feat(core): interactive prototype detection + auth-gate core (§3 D2/D3) by @kinqsradio in #667
- feat(desktop): Memory panel — search the brain memory engine (§5.3) by @kinqsradio in #668
- feat: visual-workflow L3 — advanced nodes (engine + canvas) (§7 L3) by @kinqsradio in #669
- feat(core): run_workflow_graph — saved visual graphs callable as an agent tool (§7 L4) by @kinqsradio in #670
- feat: Write mode W2+W3 — diff-review primitive + selection inline AI (§2) by @kinqsradio in #671
- feat(desktop): Write-mode DOC export + copy-as-rich-text (§2 W6) by @kinqsradio in #672
- feat(core): interactive-prototype prompt builder + design steering (§3 D2/D4) by @kinqsradio in #673
- feat(core): prototype placeholder resolve-and-swap (§3 D2) by @kinqsradio in #674
- feat(core): customizable keyboard-shortcut registry + template expansion (§5.9) by @kinqsradio in #675
- feat(core): global code prompt-prefix (§5.7) + shortcuts config knob (§5.9) by @kinqsradio in #676
- feat(desktop): system tray with dynamic session menu (§5.8) by @kinqsradio in #677
- feat(desktop): Write mode W1 (Monaco editor) + W4 (ghost-text) (§2) by @kinqsradio in #678
- feat(desktop): resolve prototype placeholders in the Artifacts preview (§3 D2) by @kinqsradio in #679
- feat: Write mode W5 — workspace-grounded assistant + per-workspace thread (§2) by @kinqsradio in #680
- feat(desktop): customizable keyboard shortcuts — rebind + persist (§5.9) by @kinqsradio in #681
- feat(desktop): @-mention workspace-file picker in the composer (§5.7) by @kinqsradio in #682
- feat(desktop): Prototype panel — design-context editor + prompt composer (§3 D4) by @kinqsradio in #683
- feat(desktop): sandboxed-webview render for html prototypes (§3 D3) by @kinqsradio in #684
- feat(desktop): automated signed-build pipeline + packaged-build verification (CP-B) by @kinqsradio in #685
- fix(desktop): Monaco theme crash in Write + narrow-panel reflow for Write/Workflows by @kinqsradio in #686
- feat(desktop): Docs→Editor merge + VS Code-grade editor + canvas/colour/compaction fixes by @kinqsradio in #687
- docs(skills): architecture-refactor + agent-automation skills by @kinqsradio in #688
- chore(repo): root
verify+ per-workspacetypecheck(Refactor P0) by @kinqsradio in #689 - chore(repo): ESLint + Prettier with an import-boundary rule (Refactor P0) by @kinqsradio in #690
- refactor(core): public-API boundary for packages/core — curated entrypoints, no deep-dist imports (Refactor P1, consolidated) by @kinqsradio in #700
- feat(core): Honk H1 — emit a GitHub PR from a successful build loop by @kinqsradio in #701
- feat(core): Honk H0 — un-opt-out-able sandbox + secret-env scoping for fleet roles by @kinqsradio in #702
- feat(core): Honk H2.1 — requirements-intake agent + self-contained delegation packet by @kinqsradio in #703
- feat(core): durable global fleet job queue + runner (Honk H3.1a) by @kinqsradio in #704
- feat(core): fleet fan-out + PR-emitting build executor + status read-model (Honk H3.2/H4 core) by @kinqsradio in #705
- feat(core): single-runner host lock for the fleet drain loop (Honk H3) by @kinqsradio in #706
- feat(core): recipe fleet executor — isolated-worktree codemod → PR (Honk H3.2) by @kinqsradio in #707
- feat(cli): brainrouter fleet run/status/drain — live multi-repo migrations (Honk H4) by @kinqsradio in #708
- feat(core): local-model bounded-harness profile (Honk L1/L7) by @kinqsradio in #709
- chore: dependency-free pre-commit lint hook + installer (Refactor R0.3) by @kinqsradio in #710
- feat(core): hard tool allowlist for local models (Honk L2) by @kinqsradio in #711
- feat(core): wire the schema-flatten pass for local models (Honk L3) by @kinqsradio in #712
- feat(core): tools drop-and-retry fallback in callOpenAI (Honk L4) by @kinqsradio in #713
- feat(core): local-model verify-loop nudge + router tier bias (Honk L5+L6) by @kinqsradio in #714
- feat(brain): fleet snapshot store-and-serve API (Honk H3.3, 1/3) by @kinqsradio in #715
- feat(cli): push fleet snapshots to the brain (Honk H3.3, 2/3) by @kinqsradio in #716
- feat(dashboard): fleet console — read fleet snapshots from the brain (Honk H3.3, 3/3) by @kinqsradio in #717
- feat(core): per-tool enable/disable policy (cli.toolOverrides + protected core) by @kinqsradio in #718
- fix(desktop): per-session model — stop model picks syncing to every chat by @kinqsradio in #719
- feat(desktop): Settings → Tools — enable/disable built-in & MCP tools by @kinqsradio in #720
- feat(track): align work-item model — lifecycle groups, priority, dates, archive by @kinqsradio in #721
- feat(track): multiple assignees + a first-class label registry by @kinqsradio in #722
- feat(track): GitHub linking — bidirectional comment sync + label-color round-trip by @kinqsradio in #723
- feat(track): Modules + extended issue relations by @kinqsradio in #724
- feat(desktop): Track Modules tab — surface the modules model end-to-end by @kinqsradio in #725
- feat(desktop): Track calendar/gantt/spreadsheet layouts + clickable card menu by @kinqsradio in #726
- feat(track): saved Views — named filter + layout presets by @kinqsradio in #727
- fix(desktop): Track detail drawer — Markdown, date fields, no toolbar overlap by @kinqsradio in #728
- fix(desktop): Track — clear macOS traffic lights when sidebar is collapsed by @kinqsradio in #729
- fix(dashboard): await async engine calls in brain API routes + show resolved contradictions by @kinqsradio in #730
- feat(core): give the agent today's date in Runtime Context by @kinqsradio in #731
- fix(desktop): Track — Calendar today/date placement + Gantt redesign by @kinqsradio in #732
- feat(track): bidirectional GitHub sync (3-way merge, no clobbered edits) by @kinqsradio in #733
- fix(desktop): grey out unsupported connector options with "Coming soon" by @kinqsradio in #734
- Release 0.4.16 by @kinqsradio in #735
Full Changelog: v0.4.15...v0.4.16