@kirjapro/mcp-server 0.5.7 → 0.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,53 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.5.8] - 2026-05-18
4
+
5
+ Three coordinated dep-migration waves (W1, W3, W4b) of the pre-launch
6
+ version-migration campaign. No runtime behavior changes for MCP consumers;
7
+ tool input schemas gain explicit `z.record(string, unknown)` form (Zod 4
8
+ requirement) which shifts JSON-schema hashes — fingerprint baseline updated.
9
+
10
+ ### Changed
11
+
12
+ - **Dependencies (W1)** — `@modelcontextprotocol/sdk` 1.12 → 1.29,
13
+ `@supabase/supabase-js` 2.49 → 2.105, `tsx` 4.19 → 4.22.
14
+ - **Dependencies (W3)** — `esbuild` 0.25 → 0.28, `typescript` 5.7 → 6.0,
15
+ `vitest` 3.0 → 4.1. Added `@types/node` ^22.18.0 as direct devDep
16
+ (was transitive — TS 6 dropped that auto-discovery).
17
+ - **Dependencies (W4b)** — `zod` 3.24 → 4.4.
18
+
19
+ ### Fixed
20
+
21
+ - **(W1) supabase-js v2.100+ `RejectExcessProperties` rejects `Record<string, unknown>`**
22
+ at `.update()` / `.insert()` call sites — the new generic wrapper
23
+ resolves to `{ [x: string]: never }` for any source carrying an open
24
+ index signature. Re-typed `updates` / `updateFields` in four tool files
25
+ as `Database['public']['Tables']['<table>']['Update']`:
26
+ `customers.ts`, `invoices.ts`, `offers.ts`, `recurring-invoices.ts`.
27
+ Skill: `supabase-js-update-rejectexcessproperties`.
28
+ - **(W1) `customers.ts` latent NOT-NULL bug** — `updates.name = sanitizeText(...)`
29
+ would attempt to set `name = null` (and trip the column's NOT NULL
30
+ CHECK at the DB) when the sanitizer collapsed whitespace-only input.
31
+ Now coalesces `?? undefined` so the field is skipped instead.
32
+ - **(W1) `offers.ts` dynamic-key write** refactored from a `timestampMap[newStatus]`
33
+ lookup into an explicit `switch` on the discriminator — typed Update
34
+ rejects open-string indexing.
35
+ - **(W1) `recurring-invoices.ts` `template_data` assignment** — cast as `Json`
36
+ at the assignment site; `Record<string, unknown>` is not a subtype of
37
+ the recursive `Json` type.
38
+ - **(W3) `tsconfig.json` — added `"types": ["node"]`.** TS 6 with
39
+ `moduleResolution: "bundler"` stopped auto-including `@types/node` from
40
+ transitive deps. Without explicit declaration, 21 TS2591 errors hit
41
+ (`process`, `Buffer`, `node:crypto`, `.unref` on `setTimeout` return).
42
+ Skill: `ts6-bundler-resolution-types-node-explicit`.
43
+ - **(W4b) Zod 4 `z.record` API requires explicit key schema.** Migrated
44
+ 11 sites from `z.record(z.unknown())` → `z.record(z.string(), z.unknown())`
45
+ across `schemas.ts` and six tool files. Tool fingerprints regenerated
46
+ via `npm run fingerprints:update` — the rug-pull guard correctly caught
47
+ the JSON-schema-shape shift even though it's semantically equivalent.
48
+
49
+ ## [0.5.7] - 2026-05-09
50
+
3
51
  ## [0.5.7] - 2026-05-09
4
52
 
5
53
  Pre-launch trim and supply-chain hardening. Two coordinated changes shape
@@ -108,7 +156,7 @@ legacy rows continue to work without backfill.
108
156
  ages past `CLAIM_STALE_MS`; on exhaustion returns an explicit `retry_later`
109
157
  error instead of racing into a duplicate write.
110
158
  - **Idempotency body-hash check** (T3-6, migration
111
- `20260420185239_mcp_idempotency_body_hash.sql`) — each claim stores
159
+ `20260420192510_mcp_idempotency_body_hash.sql`) — each claim stores
112
160
  `sha256(canonical JSON of params ∖ idempotencyKey)`. On cache hit the server
113
161
  recomputes and compares; mismatch returns `IDEMPOTENCY_BODY_MISMATCH`
114
162
  instead of silently replaying the wrong cached response. Nullable column,
@@ -144,7 +192,7 @@ legacy rows continue to work without backfill.
144
192
 
145
193
  Published artefact requires:
146
194
 
147
- 1. Apply migration `20260420185239_mcp_idempotency_body_hash.sql` to the
195
+ 1. Apply migration `20260420192510_mcp_idempotency_body_hash.sql` to the
148
196
  Supabase project (adds nullable `body_sha256`). Missing column will NOT
149
197
  break the server — the INSERT still succeeds with PostgREST schema-cache
150
198
  tolerance — but the mismatch check will be inert until migrated.