What's Changed
- fix: resolve ZT-030 … ZT-049 (v1.4.0 re-review — 4 high, 5 medium, 11 low) by @iskandarputra in #13
- refactor(arch): compiler-enforced module layering + dead-code removal (Phase 7) by @iskandarputra in #20
- test(phase6): framing round-trip + SPSC ring coverage + TSan CI leg by @iskandarputra in #15
- perf(phase5): RX hot-path — batch log_write, gate tty_stats, memcpy ring, skip idle broadcast by @iskandarputra in #16
- feat(phase3): account SPSC ring drops (metric + HUD) — no longer silent by @iskandarputra in #17
- test(phase6): XMODEM engine coverage via a socketpair peer by @iskandarputra in #18
- test(phase6): libFuzzer target for the frame decoders + CI fuzz leg by @iskandarputra in #19
- docs: sync tracker/plan status to merged (ZT-030…049 landed on main) by @iskandarputra in #21
- refactor(net): split http.c into six cohesive units (Phase 2) by @iskandarputra in #22
- perf(log): recycle scrollback ring slots instead of malloc per line (Phase 5) by @iskandarputra in #23
- test(fuzz)+fix(proto): xmodem_receive fuzz target finds & fixes ZT-050 hang by @iskandarputra in #24
- test(proto): cover ymodem_send with a scripted YMODEM receiver by @iskandarputra in #25
- build(ci): add make coverage ratchet gate + CI job (Phase 6) by @iskandarputra in #26
- test: HTTP request-parser fuzz + 431/slowloris edge tests (Phase 6 close-out) by @iskandarputra in #27
- chore: close out Phase 7 minor items (embedded cross-run state + profile flow) by @iskandarputra in #28
- chore: remove the dead OSC 8 hyperlink feature (ZT-019) by @iskandarputra in #29
- feat(profile): persist --watch patterns, watch_beep, and F1..F12 macros by @iskandarputra in #30
- release: bump version to 1.5.0 + sync version docs and CHANGELOG by @iskandarputra in #31
Full Changelog: v1.4.0...v1.5.0