Skip to content

0.4.16

Choose a tag to compare

@kinqsradio kinqsradio released this 01 Jul 07:10
3a7e62a

0.4.16 — The autonomous fleet, the unified desktop, and a Postgres brain

Shipped — 2026-07-01. Tagged v0.4.16 and 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 fleet run / status / drain (H4). The CLI drives live
    multi-repo migrations: run enqueues a job across its targets, status reads
    the aggregated read-model, and drain processes 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 /build is 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 in callOpenAI (L4) sheds
    the tools payload 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 new run_workflow_graph agent 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 local new Date()), so a due date never drifts a day by
    timezone.

Core public-API boundary (Refactor P1)

  • Curated entrypoints for packages/core. packages/core now exposes a
    public API through curated barrels — the CLI, Desktop, brain, and fleet
    import from those entrypoints instead of reaching into deep dist/* 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-workspace typecheck plus a single root verify command
    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.
  • PostgresMemoryStore is the default. A native-async pg + pgvector store
    (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 / none
    via env — so you can trade recall latency against build cost
    for your dataset size.
  • Lazy + closeable engine; Postgres in CI. The memoryEngine singleton is now
    lazy and closeable (dropping the --test-force-exit workaround), 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 runs atlas_query / atlas_impact /
    atlas_enrich server-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_enrich adds 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 into I*Service ports (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/messages and Gemini generateContent wire 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 dashboard 0/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 /research evidence ledger
    (research_note / research_brief tools) plus a requirement SDD trace round out
    the workflow surface.

Build & release

  • Cloudflare build fix. @modelcontextprotocol/sdk is 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 pull node:crypto; the workspace fan-out now builds
    @kinqs/brainrouter-agent-protocol and brainrouter-desktop in CI to catch
    renderer build breaks; and dist-electron was 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-workspace typecheck (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