v2.3.0
What's Changed
- test(client): jsdom tests for render.ts (closes #90) by @LarsLaskowski in #105
- fix: reconcile CLIENT_MAX_RENDERED_LINES cap across code, config and docs by @LarsLaskowski in #106
- perf(logBuffer): use O(1) ring buffer instead of O(n) splice eviction by @LarsLaskowski in #107
- ci: add stable ci-success gate job for branch protection by @LarsLaskowski in #108
- perf(render): defer scroll write to rAF to avoid layout thrashing by @LarsLaskowski in #109
- feat(config): make file poll interval configurable via POLL_INTERVAL_MS by @LarsLaskowski in #110
- perf(logBuffer): O(1) getItemsAfterId via direct index (#68) by @LarsLaskowski in #111
- fix(client): guard SSE event JSON.parse against malformed payloads by @LarsLaskowski in #112
- fix(preferences): guard localStorage writes and cap stored query (#48) by @LarsLaskowski in #113
- docs: document /api/resync and fix MCP reference (#89) by @LarsLaskowski in #114
- fix: address SonarQube code smells (#21, #22, #23) by @LarsLaskowski in #115
- fix(logTailer): use for-of loop for newline byte scan (typescript:S4138) by @LarsLaskowski in #116
- fix(tsconfig): per-surface configs and real .mjs checking (#92) by @LarsLaskowski in #117
- build(deps-dev): bump undici from 7.27.2 to 7.28.0 by @dependabot[bot] in #118
- fix(config.test): make path assertions OS-agnostic for Windows by @LarsLaskowski in #119
- chore: batch of low-risk cleanups from code review by @LarsLaskowski in #120
- Add npm test script and update Node.js requirement to 22+ by @LarsLaskowski in #121
Full Changelog: v2.2.1...v2.3.0