v0.12.1 — Recordings flow, completed
The Recordings screen recorded fine but dead-ended in the dashboard — captured stubs could be listed, not used. This release closes the loop.
Recordings fixes
- View JSON works: each captured stub expands into a read-only, syntax-highlighted view of the generated mapping (it was an empty
<details>that did nothing) - Captured stubs can now be saved: per-row Add to stubs and a header Import all (N) — both through the standard bulk-import path; imported rows leave the list and the stub counts update live
- Switching tenants clears the captured list, so one tenant's capture is never one accidental click from another
- Hint corrected (all six locales): while recording, every request is proxied to the target and captured — existing stubs answer again once the recording stops
Oracle-verified semantics
The old hint claimed only unmatched requests are proxied. A new differential test tried to prove that — and the real reference oracle refuted it: it proxies every request during a live session, matched-stub requests included. Mockifyr already behaved identically (no server change); the behavior is now pinned by Recording_ProxiesEveryRequest_EvenOnesAnExistingStubWouldMatch and recorded in docs/parity/g12-transport.md, including faithful 404 replay of captured upstream misses.
Validation: 192 oracle-backed differential tests (one new), 285 unit tests, in-browser end-to-end (record → snapshot → view → import → replay against a live upstream).
Docs: record & playback and dashboard guides updated.
🤖 Generated with Claude Code