* chore: add pre-push hook for lint + tests (closes#29)
- scripts/install-hooks.mjs: zero-dep hook installer, runs on postinstall
- Pre-push runs: biome lint + pulse tests + pulse-hermes tests
- CI: add pulse-hermes type check + tests, use bun run lint
- CONTRIBUTING.md: document hook setup
Uses pure Node.js APIs (no Bun dependency) so postinstall works with any runtime.
Users can delete .git/hooks/pre-push to opt out.
* fix: TS2322 in findEffectiveEpoch — cast meta.to to string
meta is Record<string, unknown>, so meta.to is unknown.
Explicit cast to (string | undefined) satisfies codeRev: string param.
---------
Co-authored-by: 鹿鸣 <luming@shazhou.work>
CI scope: type check (both packages) + unit tests (pulse 82 + upulse config 6)
E2E tests run locally on NEKO/KUMA where monorepo is available.
小橘 🍊(NEKO Team)
T1-T5 depend on `upulse init` which runs `bun install` with file:../pulse.
CI runner doesn't have the monorepo layout that findLocalPulsePath() expects.
T6 (--dir flag) only tests config resolution, no init needed.
小橘 🍊(NEKO Team)