Changelog
- c5e33cd: chore(audit): close stale 018 rows + enforce DCO in commit-msg hook (#252) (@phsb5321)
- c568f77: chore(deps): bump whatsmeow to 2026-06-11 head (62 commits) (#265) (@phsb5321)
- fb5a981: ci(release): build, attest + publish .mcpb bundles to MCP Registry (#245) (@phsb5321)
- 15e2295: ci: add quality-gates (code-slop + alignment) on the PR diff (#275) (@phsb5321)
- 718b12b: docs(security): fix SECURITY.md threat-model drift (T1 tag, T7 export) (#276) (@phsb5321)
- beb435f: feat(app): sendSeen — mark chat read at newest incoming message (#271) (@phsb5321)
- 6bfc6e5: feat(dist): .mcpb bundles + MCP Registry server.json (roadmap 0.1) (#239) (@phsb5321)
- 2cbeed9: feat(events): wire durable ring + SSE Last-Event-ID replay (ARCH-01) (#269) (@phsb5321)
- bde3638: feat(mcp): agentic eval set + tool snapshot in CI (FR-111-08) (#286) (@phsb5321)
- a4356df: feat(mcp): resources + prompts (spec 111 M3) (#285) (@phsb5321)
- 715c2d5: feat(rest): RFC 9457 problem+json for REST-layer errors (feature 113) (#237) (@phsb5321)
- 9c81f9d: feat(send): --humanize typing presence + jittered delay (roadmap 2.3) (#243) (@phsb5321)
- 1ce2c76: feat(wad): opt-in offline presence on connect (WA_PRESENCE_OFFLINE) (#280) (@phsb5321)
- c135260: fix(app): actively drop poison rows at embed retry bound (SF-07) (#259) (@phsb5321)
- 5cf1ce0: fix(app): back off + surface eventbridge stream errors (SF-08) (#260) (@phsb5321)
- 9b71870: fix(app): complete channel firewall on contacts/groups/transcript reads (#279) (@phsb5321)
- 3cc7741: fix(concurrency): unblock fan-out, join fires, scope seq counter (#241) (@phsb5321)
- cfc58a3: fix(daemon): surface silent failures from 018 audit (SF-01..03) (#246) (@phsb5321)
- dbfa8b4: fix(deps): bump Go to 1.26.4 to clear 2 reachable stdlib CVEs (#277) (@phsb5321)
- ab35c53: fix(history): wrap inbound stored messages in the channel firewall (#278) (@phsb5321)
- e5c661c: fix(media): resolve MIME + filename so documents arrive openable (#268) (@phsb5321)
- 22dabdb: fix(security): path-hygiene sweep — SEC-05/07/08/09 from 018 audit (#244) (@phsb5321)
- 34265c5: fix(socket): add correlation ref to dispatcher panic path (SF-09) (#255) (@phsb5321)
- 544d460: fix(wad): abort migration pre-flight on unreadable probes (SF-10) (#256) (@phsb5321)
- 402de13: fix(wad): audit allowlist reload outcomes from every trigger (SF-05) (#258) (@phsb5321)
- 5531202: fix(wad): cancel daemon-lifetime callbacks + join retention on shutdown (#240) (@phsb5321)
- f22fec3: fix(wad): close-error hygiene on write-capable handles (SF-11..14) (#266) (@phsb5321)
- 4b251fe: fix(wad): keep migration marker on incomplete rename rollback (SF-04) (#257) (@phsb5321)
- d7b4b75: fix(wad): surface contact vCards on the live inbound path too (#283) (@phsb5321)
- 7eb1306: fix(wad): surface contactMessage vCard in history sync (#281) (#282) (@phsb5321)
- 03e47ac: fix(whatsmeow): record stream drops in resume ring unconditionally (#242) (@phsb5321)
- e4fe0e7: refactor(app): remove orphan EventBus/EventSubscription ports (ARCH-01) (#270) (@phsb5321)
- bbe0ea8: refactor(arch): split server.go and adapter.go below 500 lines (ARCH-04) (#267) (@phsb5321)
- a9059d1: refactor(pair): single-source pair-page HTML in internal/pairhtml (#272) (@phsb5321)
- c320b1b: refactor: fold ProtoVersion into domain/schema.go (ARCH-05) (#262) (@phsb5321)
- 50fea50: refactor: single-source pair-HTML path, wire FR-014 profile suffix (#261) (@phsb5321)
- 648072e: test(app): assert deny-path audit decisions in send pipeline (TEST-07) (#251) (@phsb5321)
- d5d2432: test(app): tier-2 dispatcher contract tests (TEST-06) (#238) (@phsb5321)
- b2e545c: test(cli): e2e-cover 15 undriven wa subcommands (TEST-10) (#249) (@phsb5321)
- 0f9c9d1: test(porttest): export AL/CD/GM/SS standalone contract runners (TEST-04) (#250) (@phsb5321)
- 12b694c: test(porttest): export MS/ES/HS standalone contract runners (#248) (@phsb5321)
- 4752726: test(wad): cover handlePanic always-success contract (TEST-17) (#253) (@phsb5321)
- 0c84093: test(whatsmeow): de-flake Close-joins-panic-goroutine assertion (#274) (@phsb5321)