* 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>
- Add pnpm-workspace.yaml for monorepo workspace
- Add root package.json with packageManager field
- Add .npmrc with shamefully-hoist=true
- Replace bun.lock with pnpm-lock.yaml
- Use workspace:* protocol for @uncaged/pulse dependency
- Update init.ts scaffold to use pnpm install
- Update CLI commands (tick/dev/deploy) to use pnpm/npx
- Update E2E test comments to reference pnpm
- Keep bun as TS runtime (bun:sqlite, bun:test still needed)
closes#19