Conversation
README: rewrite from 712 lines to 130 — concise overview with links to docs site for details. Keep "When to Use This vs MSW" section and comparison table. Add npm version badge. Cut API reference, fixture format details, E2E patterns, WebSocket protocol docs — all on docs site now. index.html: "Get Started" button links to docs.html instead of GitHub README. Swap Comparison and Reliability section order (comparison is more compelling for first-time visitors). Add npm version badge inline in hero-badge pill. Update nav link order to match.
Add coverage for all new features since v1.4.0: embeddings (inputText match field, EmbeddingResponse, onEmbedding), structured output (responseFormat match field, onJsonOutput), sequential responses (sequenceIndex, resetMatchCounts), streaming physics (streamingProfile with ttft/tps/jitter). Add API endpoints table covering all 14 HTTP and WebSocket endpoints including Bedrock and Azure. Add 5 new critical gotchas.
The on(), onMessage(), onToolCall(), onToolResult(), onEmbedding(), and onJsonOutput() convenience methods spread opts into the Fixture object but their TypeScript types didn't include streamingProfile. Users had to fall back to addFixture() to set streaming physics. Now all convenience methods accept streamingProfile in opts, matching how truncateAfterChunks and disconnectAfterMs already work. Also fix implicit any on server.close() callback parameter.
Add .worktrees/ to eslint ignores — worktree build artifacts were triggering lint errors. Remove unused @Keyframes sseLine CSS animation from docs/index.html.
The 5-field opts type was duplicated inline on 6 convenience methods. Extract FixtureOpts = Omit<Fixture, 'match' | 'response'> and EmbeddingFixtureOpts = Pick<FixtureOpts, 'latency' | 'chunkSize' | 'streamingProfile'> so adding a new Fixture option field automatically propagates to all convenience methods.
skills/write-fixtures/SKILL.md was a symlink to .claude/commands/, which npm pack silently skips. Swap the direction: real file lives at skills/write-fixtures/SKILL.md, symlink at .claude/commands/ points to it. Now npm pack includes the skill in the published tarball.
Add FixtureOpts and EmbeddingFixtureOpts to the re-export list in index.ts so external consumers can import them from the package root. Remove .claude from package.json files array since the symlink doesn't ship in the tarball — skills/ already includes the real file.
Embeddings, structured output, sequential responses, streaming physics, AWS Bedrock, Azure OpenAI, health/models endpoints, Docker, Helm, docs website, drift remediation, and numerous bug fixes.
commit: |
jpr5
added a commit
that referenced
this pull request
Mar 20, 2026
## Summary
Release v1.5.0 — major feature additions, bug fixes, documentation
overhaul, and developer tooling improvements.
### New Features
- **Embeddings API** — `POST /v1/embeddings`, `onEmbedding()`,
`inputText` match field, deterministic fallback embeddings
- **Structured output / JSON mode** — `responseFormat` match field,
`onJsonOutput()` convenience method
- **Sequential responses** — `sequenceIndex` for stateful multi-turn
fixtures, `resetMatchCounts()`
- **Streaming physics** — `StreamingProfile` with `ttft`, `tps`,
`jitter` for realistic timing
- **AWS Bedrock** — `POST /model/{modelId}/invoke` with Anthropic
Messages format translation
- **Azure OpenAI** — provider routing for completions and embeddings
- **Health & models endpoints** — `GET /health`, `GET /ready`, `GET
/v1/models`
- **Docker & Helm** — Dockerfile and Helm chart for Kubernetes
deployment
- **Documentation website** — full docs site at llmock.com
- **Automated drift remediation** — CI-driven drift detection and fix
pipeline
- **`FixtureOpts` / `EmbeddingFixtureOpts`** type aliases exported for
external consumers
### Bug Fixes
- Fix Gemini Live handler crash on malformed `clientContent.turns` and
`toolResponse.functionResponses`
- Add `isClosed` guard before WebSocket finalization events
- Default to non-streaming for Claude Messages and Responses API
(matching real API defaults)
- Fix `streamingProfile` missing from convenience method opts types
- Fix skills/ symlink direction so npm pack includes the write-fixtures
skill
- Fix watcher cleanup on error, empty-reload guard
### Documentation & Tooling
- README rewritten as concise overview with links to docs site
- Write-fixtures skill updated for all v1.5.0 features
- Docs site: Get Started→docs, comparison above reliability, npm version
badge
- ESLint config: add `.worktrees/` to ignores, remove dead CSS
## Test plan
- [x] 813 unit tests pass
- [x] Build succeeds
- [x] Prettier formatting clean
- [x] ESLint clean
- [x] npm pack includes correct files (skills/, .claude-plugin/, dist/,
fixtures/)
- [x] 4 rounds of 7-agent code review — zero actionable findings on
final round
🤖 Generated with [Claude Code](https://claude.com/claude-code)
jpr5
added a commit
that referenced
this pull request
Apr 3, 2026
## Summary
Release v1.5.0 — major feature additions, bug fixes, documentation
overhaul, and developer tooling improvements.
### New Features
- **Embeddings API** — `POST /v1/embeddings`, `onEmbedding()`,
`inputText` match field, deterministic fallback embeddings
- **Structured output / JSON mode** — `responseFormat` match field,
`onJsonOutput()` convenience method
- **Sequential responses** — `sequenceIndex` for stateful multi-turn
fixtures, `resetMatchCounts()`
- **Streaming physics** — `StreamingProfile` with `ttft`, `tps`,
`jitter` for realistic timing
- **AWS Bedrock** — `POST /model/{modelId}/invoke` with Anthropic
Messages format translation
- **Azure OpenAI** — provider routing for completions and embeddings
- **Health & models endpoints** — `GET /health`, `GET /ready`, `GET
/v1/models`
- **Docker & Helm** — Dockerfile and Helm chart for Kubernetes
deployment
- **Documentation website** — full docs site at llmock.com
- **Automated drift remediation** — CI-driven drift detection and fix
pipeline
- **`FixtureOpts` / `EmbeddingFixtureOpts`** type aliases exported for
external consumers
### Bug Fixes
- Fix Gemini Live handler crash on malformed `clientContent.turns` and
`toolResponse.functionResponses`
- Add `isClosed` guard before WebSocket finalization events
- Default to non-streaming for Claude Messages and Responses API
(matching real API defaults)
- Fix `streamingProfile` missing from convenience method opts types
- Fix skills/ symlink direction so npm pack includes the write-fixtures
skill
- Fix watcher cleanup on error, empty-reload guard
### Documentation & Tooling
- README rewritten as concise overview with links to docs site
- Write-fixtures skill updated for all v1.5.0 features
- Docs site: Get Started→docs, comparison above reliability, npm version
badge
- ESLint config: add `.worktrees/` to ignores, remove dead CSS
## Test plan
- [x] 813 unit tests pass
- [x] Build succeeds
- [x] Prettier formatting clean
- [x] ESLint clean
- [x] npm pack includes correct files (skills/, .claude-plugin/, dist/,
fixtures/)
- [x] 4 rounds of 7-agent code review — zero actionable findings on
final round
🤖 Generated with [Claude Code](https://claude.com/claude-code)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release v1.5.0 — major feature additions, bug fixes, documentation overhaul, and developer tooling improvements.
New Features
POST /v1/embeddings,onEmbedding(),inputTextmatch field, deterministic fallback embeddingsresponseFormatmatch field,onJsonOutput()convenience methodsequenceIndexfor stateful multi-turn fixtures,resetMatchCounts()StreamingProfilewithttft,tps,jitterfor realistic timingPOST /model/{modelId}/invokewith Anthropic Messages format translationGET /health,GET /ready,GET /v1/modelsFixtureOpts/EmbeddingFixtureOptstype aliases exported for external consumersBug Fixes
clientContent.turnsandtoolResponse.functionResponsesisClosedguard before WebSocket finalization eventsstreamingProfilemissing from convenience method opts typesDocumentation & Tooling
.worktrees/to ignores, remove dead CSSTest plan
🤖 Generated with Claude Code