v0.1.17 — feat: configure Vitest for unit testing
Release v0.1.17: Unit Testing with Vitest
12 February 2026
Note: This release is currently blocked pending CI fixes. It will ship once pipeline issues are resolved.
What changed
- Vitest configured as the project's unit testing framework with V8 coverage reporting
- 5 test suites added covering core library modules:
- Matching — Jaro-Winkler, Levenshtein, name normalisation, token matching, DOB/nationality cross-validation, full screening pipeline
- Validation — HTML stripping, XSS prevention, Zod schemas, CSV validation & injection detection
- Encryption — AES-256-GCM round-trips, PII field encryption, unicode handling, graceful degradation when disabled
- Rate limiting — Sliding window, identifier/tier isolation, header generation, path-to-config mapping
- Utilities —
cn()classname merging
- CI updated to run
npm testas a required build step - New scripts:
test,test:watch,test:coverage
Why it matters
This gives us automated verification of the core sanctions matching engine, encryption layer, and input validation — the modules where correctness matters most. Every future change now runs against these tests in CI.
Technical notes
- Path aliases configured to match tsconfig (
@/→src/) - Tests are pure unit tests with no database or external service dependencies
- Coverage scoped to
src/lib/**/*.ts
Release Notes
Release blocked — PR #31 cannot be merged.
PR #31 ("feat: configure Vitest for unit testing") adds Vitest as the unit testing framework with 5 test suites covering matching, validation, encryption, rate limiting, and utilities. However, the merge failed because:
- The PR is marked as not mergeable (
mergeable: false) - All 5 recent CI workflow runs on the branch have failed
Action required: A developer needs to investigate and fix the CI failures (https://github.com/LetMC/CalmonySanctionsMonitor/actions/runs/21968855702), resolve any merge conflicts, and ensure CI passes before the release can proceed with tag v0.1.17.