# 20-Feb-2026 — 1 fix, 1 build change and 1 chore

## [build 483](https://github.com/nbarrett/ngx-ramblers/actions/runs/22244785470) — [commit c4613fb](https://github.com/nbarrett/ngx-ramblers/commit/c4613fb0b02e96e64c855f7d8f7ae15877e216c1)

_____

### resolve 104 pre-existing ESLint violations to unblock pre-push hook

- Remove Object.entries() lint rule (entries() not exported by es-toolkit/compat)
- Replace Object.keys/values and Array.isArray with es-toolkit/compat equivalents
- Replace typeof string/number checks with isString/isNumber from es-toolkit/compat
- Rewrite imperative for/while loops declaratively (Array.from, reduce, for...of, recursion)
- Extract named functions in place of inline explanatory comments
- Fix broken imports and TypeScript errors from previous incomplete fix attempt
- All 585 frontend and 499 server tests pass

### add claude-swarm lifecycle management and timed git hooks

- Add @annix/claude-swarm 0.1.12 as devDependency
- Add dev/stop npm scripts backed by claude-swarm
- Add claude-swarm.sh launcher (npm-based, no pnpm)
- Add .claude-swarm/config.json: frontend (port 4200) and server (port 5001)
with logs directed to cli-output/logs
- Add run-frontend.sh: wraps npm run serve
- Add run-server.sh: loads secrets from non-vcs/secrets/secrets.${NGX_APP}.env
safely (handles & in URLs), sets runtime env vars, starts tsx watch server
- Replace pre-push hook with timed version using @annix/claude-swarm/timer.sh:
lint -> frontend tests -> server tests with ms-precision timing summary

### sync package-lock.json with @annix/claude-swarm 0.1.12