# Changelog

## Baseline

- First survey — no prior run to compare against. CAI 54.

## Lenses

- Code Health 50
- Architecture 95
- Maturity 69
- Readiness 67
- Security 68
- Event Sourcing 100
- Accessibility 46

## Changes since last survey

- 300 commits — 299 feature/other, 1 fixes

## By area

- crates/ai — 69 commits
- crates/engine — 59 commits
- crates/ui-egui — 42 commits
- crates/formats — 33 commits
- (root) — 17 commits
- crates/platform — 17 commits
- crates/analysis — 16 commits
- docs/ROADMAP.md — 8 commits
- crates/disasm — 7 commits
- apps/craft-anything — 6 commits
- apps/craft-anything-cli — 6 commits
- crates/engines — 6 commits
- crates/js — 4 commits
- crates/mcp — 3 commits
- .github/workflows — 2 commits
- crates/setup — 2 commits
- packaging/linux — 2 commits
- vendor/wgpu-hal — 1 commit

## Notable commits

- fix: Agent setup and streaming fixes: Aider, Antigravity on Windows, chat-only models, SSE limits and retries (#653)
- change: A GraphQL document that begins with a comment is still read (#386)
- change: A Haswell request picks the x86_64h Mach-O slice (#371)
- change: A Mach-O executable with only __mh_execute_header counts as stripped (#373)
- change: A build stops with a plain message when craft-anything-cli is missing (#226)
- change: A builder never continues a session another builder saved (#471)
- change: A builder on a local model isn't told to call memory tools it isn't offered (#746)
- change: A capture's timeout stops every process in the group, not just the leader (#246)
- change: A failed adb download or capture doesn't leave a folder that blocks the retry (#266)
- change: A hand-off that ends just before a kill reports its exit (#910)
- change: A large approved action keeps its allow decision over MCP (#314)
- change: A long prompt shows more of itself in a tall window (#734)
- change: A plain HTML and CSS request builds a static site instead of a Rust app (#225)
- change: A plain HTML site passes the build check as it is, with nothing to build (#500)
- change: A remote OpenAI-compatible service gets the cloud context budget and its price, not a local model's (R2.1) (#379)
- change: A same-size rewrite of an unhashed file reads as unknown, not unchanged (#241)
- change: A website capture says when its HTML was cut at the size limit (#472)
- change: A window that can't start says why instead of the app crashing (#786)
- change: ARM and Thumb branches point at their real targets (#363)
- change: ARM32 loads and stores keep their memory operands in pseudo-C (#450)
- …and 280 more
