{"id":"6998ed6e140f327e8e7a3087","title":"2026 02 20","path":"how-to/committee/release-notes/2026-02-20","contentMarkdown":"# 20-Feb-2026 — 1 fix, 1 build change and 1 chore\n\n## [build 483](https://github.com/nbarrett/ngx-ramblers/actions/runs/22244785470) — [commit c4613fb](https://github.com/nbarrett/ngx-ramblers/commit/c4613fb0b02e96e64c855f7d8f7ae15877e216c1)\n\n_____\n\n### resolve 104 pre-existing ESLint violations to unblock pre-push hook\n\n- Remove Object.entries() lint rule (entries() not exported by es-toolkit/compat)\n- Replace Object.keys/values and Array.isArray with es-toolkit/compat equivalents\n- Replace typeof string/number checks with isString/isNumber from es-toolkit/compat\n- Rewrite imperative for/while loops declaratively (Array.from, reduce, for...of, recursion)\n- Extract named functions in place of inline explanatory comments\n- Fix broken imports and TypeScript errors from previous incomplete fix attempt\n- All 585 frontend and 499 server tests pass\n\n### add claude-swarm lifecycle management and timed git hooks\n\n- Add @annix/claude-swarm 0.1.12 as devDependency\n- Add dev/stop npm scripts backed by claude-swarm\n- Add claude-swarm.sh launcher (npm-based, no pnpm)\n- Add .claude-swarm/config.json: frontend (port 4200) and server (port 5001)\nwith logs directed to cli-output/logs\n- Add run-frontend.sh: wraps npm run serve\n- Add run-server.sh: loads secrets from non-vcs/secrets/secrets.${NGX_APP}.env\nsafely (handles & in URLs), sets runtime env vars, starts tsx watch server\n- Replace pre-push hook with timed version using @annix/claude-swarm/timer.sh:\nlint -> frontend tests -> server tests with ms-precision timing summary\n\n### sync package-lock.json with @annix/claude-swarm 0.1.12","contentHtml":"<h1>20-Feb-2026 — 1 fix, 1 build change and 1 chore</h1>\n<h2><a href=\"https://github.com/nbarrett/ngx-ramblers/actions/runs/22244785470\">build 483</a> — <a href=\"https://github.com/nbarrett/ngx-ramblers/commit/c4613fb0b02e96e64c855f7d8f7ae15877e216c1\">commit c4613fb</a></h2>\n<hr>\n<h3>resolve 104 pre-existing ESLint violations to unblock pre-push hook</h3>\n<ul>\n<li>Remove Object.entries() lint rule (entries() not exported by es-toolkit/compat)</li>\n<li>Replace Object.keys/values and Array.isArray with es-toolkit/compat equivalents</li>\n<li>Replace typeof string/number checks with isString/isNumber from es-toolkit/compat</li>\n<li>Rewrite imperative for/while loops declaratively (Array.from, reduce, for...of, recursion)</li>\n<li>Extract named functions in place of inline explanatory comments</li>\n<li>Fix broken imports and TypeScript errors from previous incomplete fix attempt</li>\n<li>All 585 frontend and 499 server tests pass</li>\n</ul>\n<h3>add claude-swarm lifecycle management and timed git hooks</h3>\n<ul>\n<li>Add @annix/claude-swarm 0.1.12 as devDependency</li>\n<li>Add dev/stop npm scripts backed by claude-swarm</li>\n<li>Add claude-swarm.sh launcher (npm-based, no pnpm)</li>\n<li>Add .claude-swarm/config.json: frontend (port 4200) and server (port 5001)\nwith logs directed to cli-output/logs</li>\n<li>Add run-frontend.sh: wraps npm run serve</li>\n<li>Add run-server.sh: loads secrets from non-vcs/secrets/secrets.${NGX_APP}.env\nsafely (handles &amp; in URLs), sets runtime env vars, starts tsx watch server</li>\n<li>Replace pre-push hook with timed version using @annix/claude-swarm/timer.sh:\nlint -&gt; frontend tests -&gt; server tests with ms-precision timing summary</li>\n</ul>\n<h3>sync package-lock.json with @annix/claude-swarm 0.1.12</h3>\n"}