What's Changed
- docs(quickstart): give Linux the release binary, not only brew by @jhgaylor in #1327
- Speak to builders on the open-source launch page by @jhgaylor in #1328
- feat(connections): registry of remote MCP servers verified with discovery by @jhgaylor in #1323
- ci(release): open the bump as a PR and tag on merge by @jhgaylor in #1332
- docs(decisions): ADR 0037, component libraries extracted umbrella-first by @jhgaylor in #1346
- feat(libraries): managoat_substitution, the first umbrella library app by @jhgaylor in #1347
- feat(libraries): managoat_sandbox, the sandbox behaviour, three adapters and the conformance suite by @jhgaylor in #1349
- feat(libraries): managoat_mcp_auth, MCP authorization discovery and the URL guard by @jhgaylor in #1350
- feat(libraries): managoat_runner, the runner wire protocol, connection and adapter behind a host behaviour by @jhgaylor in #1352
- feat(libraries): managoat_docs, the compile-time manual, its renderer and its guardrails by @jhgaylor in #1354
- feat(libraries): managoat_oauth, the code+PKCE and device-grant state machine behind a host behaviour by @jhgaylor in #1356
- feat(libraries): managoat_broker, the egress credential proxy from #1148 as a library by @jhgaylor in #1355
- feat(broker): native broker backend beside Agent Vault, selected by BROKER_LISTEN_PORT by @jhgaylor in #1357
- feat(libraries): managoat_acp, the ACP peer, permission policy and blocks behind a writer callback by @jhgaylor in #1358
- docs(contributing): the one-VM trap for library test helpers by @jhgaylor in #1353
- chore(deps): bump golang from 1.26-bookworm to 1.27-bookworm by @dependabot[bot] in #1330
- chore(deps): bump softprops/action-gh-release from 3.0.2 to 3.0.3 in the actions group by @dependabot[bot] in #1331
- chore(sandbox): take the Sprites client from hex, pinned to 0.2.0 by @jhgaylor in #1360
- fix(libraries): two things the stand-alone gates found before graduation by @jhgaylor in #1367
- chore(libraries): managoat_substitution from hex by @jhgaylor in #1366
- feat(libraries): the graduation template, script and recipe by @jhgaylor in #1362
- chore(libraries): managoat_mcp_auth from hex by @jhgaylor in #1378
- chore(libraries): managoat_oauth from hex by @jhgaylor in #1379
- chore(libraries): managoat_acp from hex by @jhgaylor in #1380
- chore(libraries): managoat_sandbox from hex by @jhgaylor in #1381
- chore(libraries): managoat_docs from hex by @jhgaylor in #1382
- chore(libraries): managoat_broker from hex by @jhgaylor in #1383
- chore(libraries): managoat_runner from hex by @jhgaylor in #1385
- refactor(conversations): the size ratchet and honest section headers by @jhgaylor in #1384
- refactor(conversations): MCP server list and callback key out (McpServers, CallbackKey) by @jhgaylor in #1386
- docs(decisions): ADR 0038, onboarding is the path from verified to first reply by @jhgaylor in #1394
- feat(libraries): managoat_runtimes, how a coding agent gets into a sandbox speaking ACP by @jhgaylor in #1387
- chore(scripts): graduate-library keeps a library's extra package files by @jhgaylor in #1396
- refactor(conversations): sprite environment assembly and runtime file writes out (SpriteEnv, Provisioning) by @jhgaylor in #1395
- feat(api): sandbox files and git diff, read-only (ADR 0039) by @jhgaylor in #1397
- refactor(conversations): egress brokerage and connection secrets out (Egress) by @jhgaylor in #1398
- chore(libraries): managoat_runtimes from hex by @jhgaylor in #1400
- refactor(conversations): the turn machinery and peer reports as a state machine (TurnMachine) by @jhgaylor in #1401
- refactor(conversations): pending permissions and parked caller tools out (Pending) by @jhgaylor in #1402
- refactor(conversations): sandbox reclaim actions into Lifecycle by @jhgaylor in #1403
- feat(sdk): add Elixir client by @jhgaylor in #1409
- feat(sdk): add Swift client by @jhgaylor in #1408
- feat(sdk): add Python client by @jhgaylor in #1407
- feat(funnel): activation is the first conversation with a reply by @jhgaylor in #1416
- feat(sdk): make OpenAPI the canonical wire contract for every client by @jhgaylor in #1417
- feat(billing): platform inference keys, metered against credits (#1388) by @jhgaylor in #1419
- feat(onboarding): a default agent in every account at verification by @jhgaylor in #1420
- feat(sdk): a shared cross-language behavioural conformance suite by @jhgaylor in #1425
- test: scratch paths two concurrent suites cannot collide on by @jhgaylor in #1428
- feat(onboarding): the verified landing is a key, one request, the reply by @jhgaylor in #1426
- test(api): guard the schema against its own controller by @jhgaylor in #1442
- refactor(onboarding): drop users.onboarding_state (#1393) by @jhgaylor in #1447
- feat(cli): auth register waits for verification; quickstart runs the request by @jhgaylor in #1443
- docs(sandbox): ADR 0040 for Render, and the Render column in platform-requirements by @jhgaylor in #1449
- fix(api): LogEvent renders state and stage as null, not "" by @jhgaylor in #1445
- copy(docs): tighten sandbox platform requirements by @jhgaylor in #1450
- docs(sandbox): mark Render Sandboxes as early access by @jhgaylor in #1451
- fix(api): one shape for every 422 by @jhgaylor in #1448
- fix(funnel): re-decompose the stalled breakdown around the starter agent (#1421) by @jhgaylor in #1453
- ci(sdk): publish the Elixir package from Actions by @jhgaylor in #1452
- fix(sdk): make the Swift package release-ready by @jhgaylor in #1454
- chore(release): v0.16.0 by @jhgaylor in #1455
Full Changelog: v0.15.0...v0.16.0