Skip to main content

Changelog

What changed, and when. Newest first.

2026-08-31 · Installed-app crashes leave a trace, and the chat's first suggestions say what they ask

  • The empty chat's suggestion chips are now the sentence the person is about to send: the observed fact in plain words, then the request (for example, a node says it belongs to a domain but the domain's own list lacks it, so check and line both sides up). A copy contract refuses bare noun-phrase labels.
  • Installed-app crashes become diagnosable. A panic hook writes thread, file, line and message to the app log and stderr; the release keeps a packed dSYM beside the still-stripped binary and ships it as a release asset (the workflow fails when it is missing); log timestamps use local time. The vault watcher no longer rebuilds an FSEvents stream for an unchanged folder, and a replaced watcher is dropped off the main thread.
  • A frontmatter scalar whose quote closes before the value ends (for example display_ko: "Agents" destination) is reported as malformed-quoted-scalar by every validator instead of rendering the stray quote on the map; the dogfood vault line that did this is corrected.
  • The unmodified d shortcut no longer opens the documents drawer over an agent chat that is opening.
  • Operator-facing script and MCP messages are English, and the source-language gate now scans string literals in scripts, MCP and CLI code, not only comments.
  • README describes release-candidate status by tag rather than as an absolute, and the MCP and CLI changelogs restate the current 36-tool and 58-command surfaces.
  • A crash census of the desktop shell found 27 panic-capable expressions and closed the twelve that could abort the app (a synchronous Tauri command runs on the macOS main thread, where a panic ends in SIGABRT): the git status parser, frontmatter unquoting, one C-string conversion, and the panic hook's own stderr write. A panic before the log plugin exists is appended to panic.log in the app's log directory.
  • A crash census of the WebView closed three silent failures (an agent turn that never released the panel, a bare JSON.parse in the evidence pack, a render-time localStorage read) and mounted error boundaries around the map canvas, the vault agent panel, and the ACP chat panel, so one widget's render crash no longer blanks the route. Window errors, unhandled rejections, and boundary catches are forwarded to the app log through the new log_webview_error command.
  • The static-artifact size gate widens to 64 MiB total and 8 MiB per chunk by owner decision: it catches a stray dependency or a duplicated bundle, not documented growth. Recorded in the decision ledger with its falsifier.
  • The analysis screen's Do-next tab is one list. The readiness meter, the repair-queue counters and the agent footer are gone; each item is a title, one sentence naming the observed fact, and actions in one order: hand it to the in-app AI chat, fix it here, see it on the map. Documents that fail validation join the list by name instead of hiding behind a count.
  • Going wrong now says so. A returning web visitor whose folder moved sees a notice with a re-pick button instead of a silent gateway; a failed agent config write names the file and says nothing changed; a missing bundled MCP server explains itself; broken frontmatter shows on the document and as a quiet count in the map's index.
  • Native failures speak in sentences. Git, keychain and LLM errors reach the screen as a stable code that the app renders in the reader's language with the machine detail in parentheses; an unknown code shows its English detail instead of a bare kebab-case string, and a parity test keeps every code translated in both locales.
  • Screen words say what they mean. A catalog audit against the rule that every feature must be understandable from its on-screen words rewrote 64 strings: "Repair queue" is "Things to fix", "Promote" is "Add to map", relation names explain themselves in the editor, the empty-folder starter says what an ontology is in one sentence, and the agent-connection notes gloss MCP where it first appears. A catalog-wide contract ratchets internal vocabulary, untranslated English, and bare acronyms.

2026-08-31 · Rust dependency evidence stays exact, bounded, and review-only

  • infer_imports, index_project, and CLI infer-imports now read deterministic Rust use paths, file-backed mod declarations, and exact literal path/include forms through the existing file-edge envelope. External crate names remain observed candidates; Cargo/package evidence and human review decide importance.
  • Rust source reads stop at 256 KiB and 256 dependency statements per file. Conditional modules, non-literal macros, escaped paths, and unsupported syntax remain unresolved instead of being guessed. No compiler, Cargo command, cache, network, symbol graph, vault write, or automatic depends_on is introduced.
  • The public coverage contract now lists Rust as supported bounded static evidence. Runtime, reverse, transitive, capability, and business impact remain explicitly unproven, and C stays fail-closed as unsupported.
  • The frozen persisted-vault replay improved the qualified q4 starting-point and q5 direct-dependency answers. Its first two reader audits exposed attribution errors (21/22 and 23/25); the corrected immutable pass reached 27/27. This is recorded as coverage progress, not a clean first-pass or inferred-impact win.

2026-08-30 · A known task can start at the exact reviewed source batch

  • Compact agent briefs v2 project a human-reviewed primary implementation symbol, one supporting symbol, up to three focused tests, and the element's non-exhaustive Includes/Excludes boundary when the bound source is current. Atlas checks only the named files and resolves their current lines; stale, missing, ambiguous, outside-root, symlinked, or unrecorded coordinates return no exact target. Task text selects existing meaning but cannot invent source behavior or a coordinate. Language-aware checks also keep JavaScript test helpers and Python triple-quoted docstring contents from impersonating targets.
  • The same task-navigation receipt leads typed MCP structuredContent, the copyable content.text prompt, and CLI human output without duplicating the full JSON in both MCP channels. A ready receipt tells the coding agent to read all exact targets and a verified runner manifest together before repository inventory or broad search. It asks for named positive/negative regression coverage and exact observable output, then one focused and one non-overlapping full check. Full remains the default and compact remains opt-in.
  • Compact v2 has an explicit 12,000-byte ceiling while the complete pre-source path stays below 20,000 characters. The current read-only frozen-control run reduced source reads from four to one, wall time by 23.9%, and uncached input by 19.1%; two order-reversed blind reviews preferred the treatment and found zero hard failures. Compact human text no longer duplicates its typed JSON: the current dogfood response is 11,646 pretty-JSON bytes and the complete two-call wire path is 12,928 characters. The full 36-tool registration still has no performance claim, and neither detail nor tool-profile defaults change.
  • A prospective unfamiliar repository preserved 10/10 coordinates, 50/50 claims, 81/81 citations, six of six cited paths, and one full plus five honest partial persisted-vault answers. Its 51-minute construction missed the 40-minute target, and its coding A/B had no Go toolchain and an unrelated personal-skill interception, so cross-repository speed remains unclaimed.
  • Bootstrap proposals may use the existing evidence string array for bounded navigation:primary|supporting|test:<path>#<symbol> annotations. They remain structural evidence visible in Markdown/Git, not new frontmatter, function nodes, a repository symbol index, or automatic semantic approval.

2026-08-30 · Agent handoff starts with one project and one bounded task view

  • agent_brief(project: ...) no longer reports global starter-project counts, hubs, or entrypoints. Its complete diagnostic response is built from the selected containment tree, while whole-vault validation findings remain visible as validation evidence.
  • The copyable handoff prompt is regenerated after source and meaning checks, so it cannot say ready 100/100 beside a final needs_attention 75/100 result.
  • Coding agents can opt into detail:"compact" with a request-local task (CLI: --compact --task). The response is capped at 8,000 UTF-8 JSON bytes and carries currentness, one broad persisted capability, cited implementation anchors, explicit unknown impact/verification, a bounded full-body read, and an exact full-detail follow-up. A repeated coding A/B cut MCP calls from 17 to 4 and made blind patch quality a tie, but overall wall-time and uncached-token overhead still missed the promotion gates. The complete response therefore stays the default; task text is not persisted or treated as source-behavior proof.

2026-08-30 · The download hero splits only when the column can hold the decision

  • From 1024 to 1279 the hero split into two columns on a 624px page column: the object took its 320px minimum, the decision block got 256px, the Windows button ran into the object, and all five destinations stood one per row up to 1439. The split now opens at 1280 with a 500px floor for the decision block; below that the object sits under the text with the whole column, and at 1280 the destinations share rows the way they do at 1512.

2026-08-30 · Choosing a role no longer turns the chain

  • At 1920 the seven-role chain runs across; choosing a role opened the inspector beside the canvas and the drawing turned into a column under the click. The chain keeps the direction it had at rest; a selection may cut it at the edge (the fade, the count and the pan say so) and the chosen box is scrolled into view.
  • A rule and a measured count on the same pair of roles shared one sentence identity, so after a selection the rule was drawn twice on top of itself and the count's sentence was coloured as a rule. Each sentence now carries its stroke's kind.

2026-08-30 · What the review found: the count stays on the fade, sentences clear every arc, and the headline hydrates clean

  • The "N more below" count sat 28px tall on a 16px fade, so in a short window it stood on the last box's receipt. The faded strip at the bottom is now two insets tall and the count sits inside it; a gate measures the badge against the strip.
  • A skip's sentence sat beside its own arc and a longer arc that passed the same spot ran through the words (1920, Entities chosen). Sentences now clear the widest drawn arc that runs by them, a stroke that is not drawn holds no ground, and a gate samples points along every drawn arc against every visible sentence.
  • Under reduced motion the download headline's first client render disagreed with the server HTML and React kept the dark classes until the next re-render. The preference is read through a hydration-safe store now, so the headline is complete from the first paint with nothing in the console.
  • On the hero object, pressing to turn it clears the hover ring and caption instead of carrying them round on a dot the pointer left; the dot's parent (line and caption) is resolved by one rule shared with the layout.

2026-08-30 · The architecture chain stays whole in the installed app, and the README shows it

  • In the installed app at a 1512x949 window the seven-role chain drew 4px taller than its canvas and a scrollbar appeared for empty dot field; the ground above and below the chain gives 8px back, so the chain stays whole down to a 905px WebView.
  • The "N more below" count no longer takes height from the canvas it counts against. It sat in a row under the drawing, so the moment it appeared it shortened the canvas and kept itself true: a chain that fit by 13px reported one role hidden, and hid it. The count now sits over the faded strip at the bottom.
  • The README's architecture screenshot is retaken from the installed app: exact boxes with two-line summaries and receipts, and every stroke stating its rule beside the line.

2026-08-30 · The installed app never paints a sample over a real vault

  • A restored project could show the bundled Storefront world for one or more frames on the way into Architecture, Docs, Insights, or Projects, then replace it with the real vault. Docs could also carry the sample domains/order slug across that boundary and diagnose it as a missing local document. The workbench now holds a neutral route boundary until one local manifest is ready, so a selected vault is committed once instead of being drawn over a sample.
  • Bundled samples are now a web-demo surface only. The installed app's first run offers local create/open paths, its rail stays hidden until a real vault exists, and the Docs source menu has no sample choice or command.
  • Project-root resolution is the same at every ingress. Picker, recent-vault reopening, and cold restore all redirect a project containing Markdown under atlas/ to that child, persist the corrected root, and build only that manifest; same-vault refreshes keep their current pixels.

2026-08-30 · ACP next steps use names a person can read

  • A containment repair used to show raw identifiers such as elements/qualification-handoff-helper and domains/project-portfolio, then describe the missing reverse edge as "does not link back." Recommendation rows now use each concept's locale display name and state the action directly; the editable agent prompt keeps the canonical slugs beside those names so precision is not traded for readability.
  • One dogfood node's Korean display name had been committed as UTF-8 bytes decoded through Latin-1, producing control glyphs on the map and in the inspector. The source now reads the intended Korean label; renderers fall back to the canonical title for an obviously broken localized value, and a non-empty dogfood gate rejects decoder controls or replacement characters before they can ship again.
  • The composer model/mode grid no longer keeps an intrinsic fixed width that can run under the Stop button in a narrow agent panel. It shrinks inside the space left by Stop and Send, and a missing current model or mode now shows its field name instead of an empty button.

2026-08-30 · The download hero assembles as the headline is typed

  • The hero object used to fade in on a clock of its own, 450ms after the page, with no relation to the headline typing beside it. It now assembles as the typing echo: every typed character lights the next dots of the real vault graph, apex first and then each plane clockwise, so the object and the sentence finish on the same beat in Korean and in English.
  • Pointing at a lit dot draws its line to its parent and prints the one edge it is drawn on in a caption line under the canvas (Ontology Atlas contains Topology map). The line keeps its height while empty, so nothing beside the object moves, and a long label is cut rather than spilled.
  • Below the fold the page moves in three places instead of twelve: each section's stage still rises with scroll, and the three lines above it are simply there.

2026-08-30 · The gateway demo now reaches the agent handoff

  • The nine-second neighbourhood clip stopped before the gateway's agent claim. The Korean and English download pages now carry separate 44-second installed-app takes: find one capability, read its typed relations and evidence, then watch Codex use Atlas MCP get_concept and find_path to explain the path between two concepts without writing files.
  • A separate 23-second Korean X clip now answers the breadth-first posting moment: it moves through Map, Architecture, Docs, Insights, Projects, Agents, and Git History on the same public example. The page clips keep the deeper Atlas MCP proof. All captures start after the example is open; Finder, Settings, absolute paths, terminals, notifications, the desktop, menu bar, and Dock never enter the frame.
  • The gateway remains one silent, viewport-bounded looping clip with no player chrome. The player contract must be reopened if the longer loop is distracting or a mid-loop entry is unclear.