Releases: gooddata/gooddata-goodmock
Release v0.11.0
Docker Image
The Docker image for this release has been published to DockerHub:
Repository: gooddata/gooddata-goodmock
Tags:
gooddata/gooddata-goodmock:0.11.0gooddata/gooddata-goodmock:latest
Pull Commands
# Pull specific version
docker pull gooddata/gooddata-goodmock:0.11.0
# Pull latest
docker pull gooddata/gooddata-goodmock:latestRun Command
docker run --rm gooddata/gooddata-goodmock:0.11.0 [command]Standalone Binaries
Download the binary for your platform from the assets below.
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | goodmock-linux-amd64.tar.gz |
| Linux | ARM64 | goodmock-linux-arm64.tar.gz |
| macOS | Intel | goodmock-darwin-amd64.tar.gz |
| macOS | Apple Silicon | goodmock-darwin-arm64.tar.gz |
| Windows | x86_64 | goodmock-windows-amd64.zip |
| Windows | ARM64 | goodmock-windows-arm64.zip |
All platforms
goodmock-darwin-amd64.tar.gzgoodmock-darwin-amd64.tar.gz.sha256goodmock-darwin-arm64.tar.gzgoodmock-darwin-arm64.tar.gz.sha256goodmock-linux-amd64.tar.gzgoodmock-linux-amd64.tar.gz.sha256goodmock-linux-arm64.tar.gzgoodmock-linux-arm64.tar.gz.sha256goodmock-windows-amd64.zipgoodmock-windows-amd64.zip.sha256goodmock-windows-arm64.zipgoodmock-windows-arm64.zip.sha256
Install (Linux/macOS)
# Example: download and install linux/amd64
curl -sL https://github.com/gooddata/gooddata-goodmock/releases/download/v0.11.0/goodmock-linux-amd64.tar.gz | tar xz
chmod +x goodmock-linux-amd64
sudo mv goodmock-linux-amd64 /usr/local/bin/goodmockChangelog
0.11.0 - 2026-04-02
Changed
X-GDC-TRACE-IDresponse header is now preserved in proxy and record modes (previously stripped along with allX-GDC*headers)- In record mode,
X-GDC-TRACE-IDis only forwarded to the client — it is still excluded from saved mappings to keep recordings clean
0.10.0 - 2026-03-18
Changed
- Moved replay mode into its own
internal/replaypackage, matching the pattern ofrecordandpureproxy - Each mode now has its own admin handler (
handleReplayAdmin,handleRecordAdmin) — admin endpoints are scoped to the mode where they make sense instead of sharing a single catch-all handler - Mapping-related admin endpoints (
/__admin/mappings,/__admin/mappings/import,/__admin/mappings/reset,/__admin/reset) are now replay-mode only — record and proxy modes no longer silently accept mapping operations that have no effect /__admin/recordings/snapshotis now record-mode only — replay and proxy modes return 404 instead of an empty response/__admin/scenarios/resetnow returns 501 (was a silent no-op returning 200)/__admin/settingsnow returns 501 (was a silent no-op returning 200)DELETE /__admin/requestsnow returns 501 in replay/proxy modes (record mode still clears exchanges)- Record mode
/__admin/resetno longer callsClearMappings(mappings are never loaded in record mode)
0.9.0 - 2026-03-15
Added
install.shscript for downloading and installing prebuilt binaries with checksum verification
0.8.0 - 2026-03-15
Added
- Cross-platform binary releases attached to GitHub Releases (linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64, windows/arm64) with SHA-256 checksums
Changed
- Binaries are now built with
-ldflags="-s -w"to strip debug symbols and reduce binary size
0.7.0 - 2026-03-15
Added
--version/-vflag to print the embedded version and exit- Version is now embedded in the binary at compile time via
//go:embed VERSION
0.6.0 - 2026-03-10
Added
BINARY_CONTENT_TYPESenvironment variable (record + replay) — comma-separated list of Content-Types whose response bodies should be stored as base64-encoded strings in thebodyfield. In replay mode, responses with matching Content-Types are automatically base64-decoded before serving.
0.5.1 - 2026-02-20
Changed
- Increased default maximum request body size to 16MB
0.5.0 - 2026-02-11
Added
application/jsonresponse bodies are now always stored as structured JSON (jsonBody) instead of escaped strings, improving diffability of mapping filesJSON_CONTENT_TYPESenvironment variable (record mode) — comma-separated list of additional Content-Types to also store asjsonBody(e.g.application/vnd.gooddata.api+json)- Replay mode supports serving both
body(string) andjsonBody(structured) response formats PRESERVE_JSON_KEY_ORDERenvironment variable (record mode) — when set, preserves original key ordering in both JSON request bodies (equalToJson) and response bodies (jsonBody) instead of sorting alphabeticallySORT_ARRAY_MEMBERSenvironment variable (record mode) — when set, recursively sorts JSON array elements by their stringified value (bottom-up) in both request and response bodies, eliminating diffs caused by non-deterministic array ordering from upstream- Recorded mappings are now sorted deterministically by name (with method + URL + query params + body as tiebreaker for duplicate names), eliminating spurious diffs caused by request-arrival ordering
Removed
- Removed
idanduuidfields from recorded mappings — they were random UUIDs that caused spurious diffs on every re-record and were never used for matching or lookup
Changed
- Breaking (output only): Mapping files produced by record mode are no longer WireMock-compatible as of v0.5.0 —
application/jsonresponses usejsonBody(structured JSON) instead ofbody(escaped strings), and mappings omitid/uuidfields. Replay mode remains fully backwards-compatible: old WireMock-format mapping files (withbodystrings andid/uuidfields) still load and work without changes. The admin API also remains WireMock-compatible. - Breaking (key order): JSON keys in both request bodies (
equalToJson) and response bodies (jsonBody) are now sorted alphabetically by default for deterministic diffs. If your consumers rely on original key ordering from the upstream server, setPRESERVE_JSON_KEY_ORDER=trueto restore the previous behaviour. VERBOSEenvironment variable now accepts any non-empty value (previously requiredtrue,1, oryes)
0.4.0 - 2026-02-11
Added
- Proxy mode (
goodmock proxy) — forwards all traffic to upstream without recording, applying the same header transformations and response filtering as record mode
0.3.2 - 2026-02-11
Changed
- Split monolithic
mainpackage intointernal/sub-packages:types,server,record,matching,logging,proxy,common - Exported Server struct fields (
Mappings,ProxyHost,RefererPath,Verbose,Mu) for cross-package access - Exported public API functions (
HandleRequest,HandleAdmin,LoadMappings,ClearMappings,TransformRequestHeaders,LogVerboseRequest,MatchRequest,LogMismatch,ProxyRequest,RunRecord) - Moved shared helpers (
GetPort,IsVerbose) intointernal/common
0.3.1 - 2026-02-11
Changed
- Refactored codebase from OOP style to functional style — all Server and RecordServer methods converted to free functions
- Pure functions (applyResponseHeaders, evaluateMapping, logMismatch, logVerboseRequest, transformRequestHeaders) no longer take a server receiver
- Replaced RecordServer struct embedding with explicit
server *Serverfield - Request handlers use closures instead of method values
0.3.0 - 2026-02-10
Added
- Record mode (
goodmock record) — proxies to upstream and captures request/response pairs /__admin/recordings/snapshotendpoint with URL pattern filtering and scenario support- Automatic gzip decompression for recorded response bodies
- Scenario-based mappings for repeated URLs (
repeatsAsScenarios) VERBOSEenvironment variable for full request/response traffic logging
0.2.1 - 2026-02-10
Changed
- Added mode as primary CLI arg (
goodmock replay), defaults toreplay - Replaced
-portflag withPORTenvironment variable (default: 8080)
0.2.0 - 2026-02-10
Fixed
- URL path matching now preserves percent-encoding (e.g.
%3A) by using raw request URI instead of fasthttp's decoded path
Added
- Request header rewriting (Origin, Referer, Accept-Encoding) to match recorded stubs
REFERER_PATHenvironment variable for app-specific Referer header path
0.1.1 - 2026-02-10
Changed
- Refactor and minor improvements
0.1.0 - 2026-02-09
Added
- Initial release
Build Information
- Commit: f42eeba...
Release v0.10.0
Docker Image
The Docker image for this release has been published to DockerHub:
Repository: gooddata/gooddata-goodmock
Tags:
gooddata/gooddata-goodmock:0.10.0gooddata/gooddata-goodmock:latest
Pull Commands
# Pull specific version
docker pull gooddata/gooddata-goodmock:0.10.0
# Pull latest
docker pull gooddata/gooddata-goodmock:latestRun Command
docker run --rm gooddata/gooddata-goodmock:0.10.0 [command]Standalone Binaries
Download the binary for your platform from the assets below.
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | goodmock-linux-amd64.tar.gz |
| Linux | ARM64 | goodmock-linux-arm64.tar.gz |
| macOS | Intel | goodmock-darwin-amd64.tar.gz |
| macOS | Apple Silicon | goodmock-darwin-arm64.tar.gz |
| Windows | x86_64 | goodmock-windows-amd64.zip |
| Windows | ARM64 | goodmock-windows-arm64.zip |
All platforms
goodmock-darwin-amd64.tar.gzgoodmock-darwin-amd64.tar.gz.sha256goodmock-darwin-arm64.tar.gzgoodmock-darwin-arm64.tar.gz.sha256goodmock-linux-amd64.tar.gzgoodmock-linux-amd64.tar.gz.sha256goodmock-linux-arm64.tar.gzgoodmock-linux-arm64.tar.gz.sha256goodmock-windows-amd64.zipgoodmock-windows-amd64.zip.sha256goodmock-windows-arm64.zipgoodmock-windows-arm64.zip.sha256
Install (Linux/macOS)
# Example: download and install linux/amd64
curl -sL https://github.com/gooddata/gooddata-goodmock/releases/download/v0.10.0/goodmock-linux-amd64.tar.gz | tar xz
chmod +x goodmock-linux-amd64
sudo mv goodmock-linux-amd64 /usr/local/bin/goodmockChangelog
0.10.0 - 2026-03-18
Changed
- Moved replay mode into its own
internal/replaypackage, matching the pattern ofrecordandpureproxy - Each mode now has its own admin handler (
handleReplayAdmin,handleRecordAdmin) — admin endpoints are scoped to the mode where they make sense instead of sharing a single catch-all handler - Mapping-related admin endpoints (
/__admin/mappings,/__admin/mappings/import,/__admin/mappings/reset,/__admin/reset) are now replay-mode only — record and proxy modes no longer silently accept mapping operations that have no effect /__admin/recordings/snapshotis now record-mode only — replay and proxy modes return 404 instead of an empty response/__admin/scenarios/resetnow returns 501 (was a silent no-op returning 200)/__admin/settingsnow returns 501 (was a silent no-op returning 200)DELETE /__admin/requestsnow returns 501 in replay/proxy modes (record mode still clears exchanges)- Record mode
/__admin/resetno longer callsClearMappings(mappings are never loaded in record mode)
0.9.0 - 2026-03-15
Added
install.shscript for downloading and installing prebuilt binaries with checksum verification
0.8.0 - 2026-03-15
Added
- Cross-platform binary releases attached to GitHub Releases (linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64, windows/arm64) with SHA-256 checksums
Changed
- Binaries are now built with
-ldflags="-s -w"to strip debug symbols and reduce binary size
0.7.0 - 2026-03-15
Added
--version/-vflag to print the embedded version and exit- Version is now embedded in the binary at compile time via
//go:embed VERSION
0.6.0 - 2026-03-10
Added
BINARY_CONTENT_TYPESenvironment variable (record + replay) — comma-separated list of Content-Types whose response bodies should be stored as base64-encoded strings in thebodyfield. In replay mode, responses with matching Content-Types are automatically base64-decoded before serving.
0.5.1 - 2026-02-20
Changed
- Increased default maximum request body size to 16MB
0.5.0 - 2026-02-11
Added
application/jsonresponse bodies are now always stored as structured JSON (jsonBody) instead of escaped strings, improving diffability of mapping filesJSON_CONTENT_TYPESenvironment variable (record mode) — comma-separated list of additional Content-Types to also store asjsonBody(e.g.application/vnd.gooddata.api+json)- Replay mode supports serving both
body(string) andjsonBody(structured) response formats PRESERVE_JSON_KEY_ORDERenvironment variable (record mode) — when set, preserves original key ordering in both JSON request bodies (equalToJson) and response bodies (jsonBody) instead of sorting alphabeticallySORT_ARRAY_MEMBERSenvironment variable (record mode) — when set, recursively sorts JSON array elements by their stringified value (bottom-up) in both request and response bodies, eliminating diffs caused by non-deterministic array ordering from upstream- Recorded mappings are now sorted deterministically by name (with method + URL + query params + body as tiebreaker for duplicate names), eliminating spurious diffs caused by request-arrival ordering
Removed
- Removed
idanduuidfields from recorded mappings — they were random UUIDs that caused spurious diffs on every re-record and were never used for matching or lookup
Changed
- Breaking (output only): Mapping files produced by record mode are no longer WireMock-compatible as of v0.5.0 —
application/jsonresponses usejsonBody(structured JSON) instead ofbody(escaped strings), and mappings omitid/uuidfields. Replay mode remains fully backwards-compatible: old WireMock-format mapping files (withbodystrings andid/uuidfields) still load and work without changes. The admin API also remains WireMock-compatible. - Breaking (key order): JSON keys in both request bodies (
equalToJson) and response bodies (jsonBody) are now sorted alphabetically by default for deterministic diffs. If your consumers rely on original key ordering from the upstream server, setPRESERVE_JSON_KEY_ORDER=trueto restore the previous behaviour. VERBOSEenvironment variable now accepts any non-empty value (previously requiredtrue,1, oryes)
0.4.0 - 2026-02-11
Added
- Proxy mode (
goodmock proxy) — forwards all traffic to upstream without recording, applying the same header transformations and response filtering as record mode
0.3.2 - 2026-02-11
Changed
- Split monolithic
mainpackage intointernal/sub-packages:types,server,record,matching,logging,proxy,common - Exported Server struct fields (
Mappings,ProxyHost,RefererPath,Verbose,Mu) for cross-package access - Exported public API functions (
HandleRequest,HandleAdmin,LoadMappings,ClearMappings,TransformRequestHeaders,LogVerboseRequest,MatchRequest,LogMismatch,ProxyRequest,RunRecord) - Moved shared helpers (
GetPort,IsVerbose) intointernal/common
0.3.1 - 2026-02-11
Changed
- Refactored codebase from OOP style to functional style — all Server and RecordServer methods converted to free functions
- Pure functions (applyResponseHeaders, evaluateMapping, logMismatch, logVerboseRequest, transformRequestHeaders) no longer take a server receiver
- Replaced RecordServer struct embedding with explicit
server *Serverfield - Request handlers use closures instead of method values
0.3.0 - 2026-02-10
Added
- Record mode (
goodmock record) — proxies to upstream and captures request/response pairs /__admin/recordings/snapshotendpoint with URL pattern filtering and scenario support- Automatic gzip decompression for recorded response bodies
- Scenario-based mappings for repeated URLs (
repeatsAsScenarios) VERBOSEenvironment variable for full request/response traffic logging
0.2.1 - 2026-02-10
Changed
- Added mode as primary CLI arg (
goodmock replay), defaults toreplay - Replaced
-portflag withPORTenvironment variable (default: 8080)
0.2.0 - 2026-02-10
Fixed
- URL path matching now preserves percent-encoding (e.g.
%3A) by using raw request URI instead of fasthttp's decoded path
Added
- Request header rewriting (Origin, Referer, Accept-Encoding) to match recorded stubs
REFERER_PATHenvironment variable for app-specific Referer header path
0.1.1 - 2026-02-10
Changed
- Refactor and minor improvements
0.1.0 - 2026-02-09
Added
- Initial release
Build Information
Release v0.9.0
Docker Image
The Docker image for this release has been published to DockerHub:
Repository: gooddata/gooddata-goodmock
Tags:
gooddata/gooddata-goodmock:0.9.0gooddata/gooddata-goodmock:latest
Pull Commands
# Pull specific version
docker pull gooddata/gooddata-goodmock:0.9.0
# Pull latest
docker pull gooddata/gooddata-goodmock:latestRun Command
docker run --rm gooddata/gooddata-goodmock:0.9.0 [command]Standalone Binaries
Download the binary for your platform from the assets below.
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | goodmock-linux-amd64.tar.gz |
| Linux | ARM64 | goodmock-linux-arm64.tar.gz |
| macOS | Intel | goodmock-darwin-amd64.tar.gz |
| macOS | Apple Silicon | goodmock-darwin-arm64.tar.gz |
| Windows | x86_64 | goodmock-windows-amd64.zip |
| Windows | ARM64 | goodmock-windows-arm64.zip |
All platforms
goodmock-darwin-amd64.tar.gzgoodmock-darwin-amd64.tar.gz.sha256goodmock-darwin-arm64.tar.gzgoodmock-darwin-arm64.tar.gz.sha256goodmock-linux-amd64.tar.gzgoodmock-linux-amd64.tar.gz.sha256goodmock-linux-arm64.tar.gzgoodmock-linux-arm64.tar.gz.sha256goodmock-windows-amd64.zipgoodmock-windows-amd64.zip.sha256goodmock-windows-arm64.zipgoodmock-windows-arm64.zip.sha256
Install (Linux/macOS)
# Example: download and install linux/amd64
curl -sL https://github.com/gooddata/gooddata-goodmock/releases/download/v0.9.0/goodmock-linux-amd64.tar.gz | tar xz
chmod +x goodmock-linux-amd64
sudo mv goodmock-linux-amd64 /usr/local/bin/goodmockChangelog
0.9.0 - 2026-03-15
Added
install.shscript for downloading and installing prebuilt binaries with checksum verification
0.8.0 - 2026-03-15
Added
- Cross-platform binary releases attached to GitHub Releases (linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64, windows/arm64) with SHA-256 checksums
Changed
- Binaries are now built with
-ldflags="-s -w"to strip debug symbols and reduce binary size
0.7.0 - 2026-03-15
Added
--version/-vflag to print the embedded version and exit- Version is now embedded in the binary at compile time via
//go:embed VERSION
0.6.0 - 2026-03-10
Added
BINARY_CONTENT_TYPESenvironment variable (record + replay) — comma-separated list of Content-Types whose response bodies should be stored as base64-encoded strings in thebodyfield. In replay mode, responses with matching Content-Types are automatically base64-decoded before serving.
0.5.1 - 2026-02-20
Changed
- Increased default maximum request body size to 16MB
0.5.0 - 2026-02-11
Added
application/jsonresponse bodies are now always stored as structured JSON (jsonBody) instead of escaped strings, improving diffability of mapping filesJSON_CONTENT_TYPESenvironment variable (record mode) — comma-separated list of additional Content-Types to also store asjsonBody(e.g.application/vnd.gooddata.api+json)- Replay mode supports serving both
body(string) andjsonBody(structured) response formats PRESERVE_JSON_KEY_ORDERenvironment variable (record mode) — when set, preserves original key ordering in both JSON request bodies (equalToJson) and response bodies (jsonBody) instead of sorting alphabeticallySORT_ARRAY_MEMBERSenvironment variable (record mode) — when set, recursively sorts JSON array elements by their stringified value (bottom-up) in both request and response bodies, eliminating diffs caused by non-deterministic array ordering from upstream- Recorded mappings are now sorted deterministically by name (with method + URL + query params + body as tiebreaker for duplicate names), eliminating spurious diffs caused by request-arrival ordering
Removed
- Removed
idanduuidfields from recorded mappings — they were random UUIDs that caused spurious diffs on every re-record and were never used for matching or lookup
Changed
- Breaking (output only): Mapping files produced by record mode are no longer WireMock-compatible as of v0.5.0 —
application/jsonresponses usejsonBody(structured JSON) instead ofbody(escaped strings), and mappings omitid/uuidfields. Replay mode remains fully backwards-compatible: old WireMock-format mapping files (withbodystrings andid/uuidfields) still load and work without changes. The admin API also remains WireMock-compatible. - Breaking (key order): JSON keys in both request bodies (
equalToJson) and response bodies (jsonBody) are now sorted alphabetically by default for deterministic diffs. If your consumers rely on original key ordering from the upstream server, setPRESERVE_JSON_KEY_ORDER=trueto restore the previous behaviour. VERBOSEenvironment variable now accepts any non-empty value (previously requiredtrue,1, oryes)
0.4.0 - 2026-02-11
Added
- Proxy mode (
goodmock proxy) — forwards all traffic to upstream without recording, applying the same header transformations and response filtering as record mode
0.3.2 - 2026-02-11
Changed
- Split monolithic
mainpackage intointernal/sub-packages:types,server,record,matching,logging,proxy,common - Exported Server struct fields (
Mappings,ProxyHost,RefererPath,Verbose,Mu) for cross-package access - Exported public API functions (
HandleRequest,HandleAdmin,LoadMappings,ClearMappings,TransformRequestHeaders,LogVerboseRequest,MatchRequest,LogMismatch,ProxyRequest,RunRecord) - Moved shared helpers (
GetPort,IsVerbose) intointernal/common
0.3.1 - 2026-02-11
Changed
- Refactored codebase from OOP style to functional style — all Server and RecordServer methods converted to free functions
- Pure functions (applyResponseHeaders, evaluateMapping, logMismatch, logVerboseRequest, transformRequestHeaders) no longer take a server receiver
- Replaced RecordServer struct embedding with explicit
server *Serverfield - Request handlers use closures instead of method values
0.3.0 - 2026-02-10
Added
- Record mode (
goodmock record) — proxies to upstream and captures request/response pairs /__admin/recordings/snapshotendpoint with URL pattern filtering and scenario support- Automatic gzip decompression for recorded response bodies
- Scenario-based mappings for repeated URLs (
repeatsAsScenarios) VERBOSEenvironment variable for full request/response traffic logging
0.2.1 - 2026-02-10
Changed
- Added mode as primary CLI arg (
goodmock replay), defaults toreplay - Replaced
-portflag withPORTenvironment variable (default: 8080)
0.2.0 - 2026-02-10
Fixed
- URL path matching now preserves percent-encoding (e.g.
%3A) by using raw request URI instead of fasthttp's decoded path
Added
- Request header rewriting (Origin, Referer, Accept-Encoding) to match recorded stubs
REFERER_PATHenvironment variable for app-specific Referer header path
0.1.1 - 2026-02-10
Changed
- Refactor and minor improvements
0.1.0 - 2026-02-09
Added
- Initial release
Build Information
Release v0.8.0
Docker Image
The Docker image for this release has been published to DockerHub:
Repository: gooddata/gooddata-goodmock
Tags:
gooddata/gooddata-goodmock:0.8.0gooddata/gooddata-goodmock:latest
Pull Commands
# Pull specific version
docker pull gooddata/gooddata-goodmock:0.8.0
# Pull latest
docker pull gooddata/gooddata-goodmock:latestRun Command
docker run --rm gooddata/gooddata-goodmock:0.8.0 [command]Standalone Binaries
Download the binary for your platform from the assets below.
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | goodmock-linux-amd64.tar.gz |
| Linux | ARM64 | goodmock-linux-arm64.tar.gz |
| macOS | Intel | goodmock-darwin-amd64.tar.gz |
| macOS | Apple Silicon | goodmock-darwin-arm64.tar.gz |
| Windows | x86_64 | goodmock-windows-amd64.zip |
| Windows | ARM64 | goodmock-windows-arm64.zip |
All platforms
goodmock-darwin-amd64.tar.gzgoodmock-darwin-amd64.tar.gz.sha256goodmock-darwin-arm64.tar.gzgoodmock-darwin-arm64.tar.gz.sha256goodmock-linux-amd64.tar.gzgoodmock-linux-amd64.tar.gz.sha256goodmock-linux-arm64.tar.gzgoodmock-linux-arm64.tar.gz.sha256goodmock-windows-amd64.zipgoodmock-windows-amd64.zip.sha256goodmock-windows-arm64.zipgoodmock-windows-arm64.zip.sha256
Install (Linux/macOS)
# Example: download and install linux/amd64
curl -sL https://github.com/gooddata/gooddata-goodmock/releases/download/v0.8.0/goodmock-linux-amd64.tar.gz | tar xz
chmod +x goodmock-linux-amd64
sudo mv goodmock-linux-amd64 /usr/local/bin/goodmockChangelog
0.8.0 - 2026-03-15
Added
- Cross-platform binary releases attached to GitHub Releases (linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64, windows/arm64) with SHA-256 checksums
Changed
- Binaries are now built with
-ldflags="-s -w"to strip debug symbols and reduce binary size
0.7.0 - 2026-03-15
Added
--version/-vflag to print the embedded version and exit- Version is now embedded in the binary at compile time via
//go:embed VERSION
0.6.0 - 2026-03-10
Added
BINARY_CONTENT_TYPESenvironment variable (record + replay) — comma-separated list of Content-Types whose response bodies should be stored as base64-encoded strings in thebodyfield. In replay mode, responses with matching Content-Types are automatically base64-decoded before serving.
0.5.1 - 2026-02-20
Changed
- Increased default maximum request body size to 16MB
0.5.0 - 2026-02-11
Added
application/jsonresponse bodies are now always stored as structured JSON (jsonBody) instead of escaped strings, improving diffability of mapping filesJSON_CONTENT_TYPESenvironment variable (record mode) — comma-separated list of additional Content-Types to also store asjsonBody(e.g.application/vnd.gooddata.api+json)- Replay mode supports serving both
body(string) andjsonBody(structured) response formats PRESERVE_JSON_KEY_ORDERenvironment variable (record mode) — when set, preserves original key ordering in both JSON request bodies (equalToJson) and response bodies (jsonBody) instead of sorting alphabeticallySORT_ARRAY_MEMBERSenvironment variable (record mode) — when set, recursively sorts JSON array elements by their stringified value (bottom-up) in both request and response bodies, eliminating diffs caused by non-deterministic array ordering from upstream- Recorded mappings are now sorted deterministically by name (with method + URL + query params + body as tiebreaker for duplicate names), eliminating spurious diffs caused by request-arrival ordering
Removed
- Removed
idanduuidfields from recorded mappings — they were random UUIDs that caused spurious diffs on every re-record and were never used for matching or lookup
Changed
- Breaking (output only): Mapping files produced by record mode are no longer WireMock-compatible as of v0.5.0 —
application/jsonresponses usejsonBody(structured JSON) instead ofbody(escaped strings), and mappings omitid/uuidfields. Replay mode remains fully backwards-compatible: old WireMock-format mapping files (withbodystrings andid/uuidfields) still load and work without changes. The admin API also remains WireMock-compatible. - Breaking (key order): JSON keys in both request bodies (
equalToJson) and response bodies (jsonBody) are now sorted alphabetically by default for deterministic diffs. If your consumers rely on original key ordering from the upstream server, setPRESERVE_JSON_KEY_ORDER=trueto restore the previous behaviour. VERBOSEenvironment variable now accepts any non-empty value (previously requiredtrue,1, oryes)
0.4.0 - 2026-02-11
Added
- Proxy mode (
goodmock proxy) — forwards all traffic to upstream without recording, applying the same header transformations and response filtering as record mode
0.3.2 - 2026-02-11
Changed
- Split monolithic
mainpackage intointernal/sub-packages:types,server,record,matching,logging,proxy,common - Exported Server struct fields (
Mappings,ProxyHost,RefererPath,Verbose,Mu) for cross-package access - Exported public API functions (
HandleRequest,HandleAdmin,LoadMappings,ClearMappings,TransformRequestHeaders,LogVerboseRequest,MatchRequest,LogMismatch,ProxyRequest,RunRecord) - Moved shared helpers (
GetPort,IsVerbose) intointernal/common
0.3.1 - 2026-02-11
Changed
- Refactored codebase from OOP style to functional style — all Server and RecordServer methods converted to free functions
- Pure functions (applyResponseHeaders, evaluateMapping, logMismatch, logVerboseRequest, transformRequestHeaders) no longer take a server receiver
- Replaced RecordServer struct embedding with explicit
server *Serverfield - Request handlers use closures instead of method values
0.3.0 - 2026-02-10
Added
- Record mode (
goodmock record) — proxies to upstream and captures request/response pairs /__admin/recordings/snapshotendpoint with URL pattern filtering and scenario support- Automatic gzip decompression for recorded response bodies
- Scenario-based mappings for repeated URLs (
repeatsAsScenarios) VERBOSEenvironment variable for full request/response traffic logging
0.2.1 - 2026-02-10
Changed
- Added mode as primary CLI arg (
goodmock replay), defaults toreplay - Replaced
-portflag withPORTenvironment variable (default: 8080)
0.2.0 - 2026-02-10
Fixed
- URL path matching now preserves percent-encoding (e.g.
%3A) by using raw request URI instead of fasthttp's decoded path
Added
- Request header rewriting (Origin, Referer, Accept-Encoding) to match recorded stubs
REFERER_PATHenvironment variable for app-specific Referer header path
0.1.1 - 2026-02-10
Changed
- Refactor and minor improvements
0.1.0 - 2026-02-09
Added
- Initial release
Build Information
Release v0.7.0
Docker Image
The Docker image for this release has been published to DockerHub:
Repository: gooddata/gooddata-goodmock
Tags:
gooddata/gooddata-goodmock:0.7.0gooddata/gooddata-goodmock:latest
Pull Commands
# Pull specific version
docker pull gooddata/gooddata-goodmock:0.7.0
# Pull latest
docker pull gooddata/gooddata-goodmock:latestRun Command
docker run --rm gooddata/gooddata-goodmock:0.7.0 [command]Changelog
0.7.0 - 2026-03-15
Added
--version/-vflag to print the embedded version and exit- Version is now embedded in the binary at compile time via
//go:embed VERSION
0.6.0 - 2026-03-10
Added
BINARY_CONTENT_TYPESenvironment variable (record + replay) — comma-separated list of Content-Types whose response bodies should be stored as base64-encoded strings in thebodyfield. In replay mode, responses with matching Content-Types are automatically base64-decoded before serving.
0.5.1 - 2026-02-20
Changed
- Increased default maximum request body size to 16MB
0.5.0 - 2026-02-11
Added
application/jsonresponse bodies are now always stored as structured JSON (jsonBody) instead of escaped strings, improving diffability of mapping filesJSON_CONTENT_TYPESenvironment variable (record mode) — comma-separated list of additional Content-Types to also store asjsonBody(e.g.application/vnd.gooddata.api+json)- Replay mode supports serving both
body(string) andjsonBody(structured) response formats PRESERVE_JSON_KEY_ORDERenvironment variable (record mode) — when set, preserves original key ordering in both JSON request bodies (equalToJson) and response bodies (jsonBody) instead of sorting alphabeticallySORT_ARRAY_MEMBERSenvironment variable (record mode) — when set, recursively sorts JSON array elements by their stringified value (bottom-up) in both request and response bodies, eliminating diffs caused by non-deterministic array ordering from upstream- Recorded mappings are now sorted deterministically by name (with method + URL + query params + body as tiebreaker for duplicate names), eliminating spurious diffs caused by request-arrival ordering
Removed
- Removed
idanduuidfields from recorded mappings — they were random UUIDs that caused spurious diffs on every re-record and were never used for matching or lookup
Changed
- Breaking (output only): Mapping files produced by record mode are no longer WireMock-compatible as of v0.5.0 —
application/jsonresponses usejsonBody(structured JSON) instead ofbody(escaped strings), and mappings omitid/uuidfields. Replay mode remains fully backwards-compatible: old WireMock-format mapping files (withbodystrings andid/uuidfields) still load and work without changes. The admin API also remains WireMock-compatible. - Breaking (key order): JSON keys in both request bodies (
equalToJson) and response bodies (jsonBody) are now sorted alphabetically by default for deterministic diffs. If your consumers rely on original key ordering from the upstream server, setPRESERVE_JSON_KEY_ORDER=trueto restore the previous behaviour. VERBOSEenvironment variable now accepts any non-empty value (previously requiredtrue,1, oryes)
0.4.0 - 2026-02-11
Added
- Proxy mode (
goodmock proxy) — forwards all traffic to upstream without recording, applying the same header transformations and response filtering as record mode
0.3.2 - 2026-02-11
Changed
- Split monolithic
mainpackage intointernal/sub-packages:types,server,record,matching,logging,proxy,common - Exported Server struct fields (
Mappings,ProxyHost,RefererPath,Verbose,Mu) for cross-package access - Exported public API functions (
HandleRequest,HandleAdmin,LoadMappings,ClearMappings,TransformRequestHeaders,LogVerboseRequest,MatchRequest,LogMismatch,ProxyRequest,RunRecord) - Moved shared helpers (
GetPort,IsVerbose) intointernal/common
0.3.1 - 2026-02-11
Changed
- Refactored codebase from OOP style to functional style — all Server and RecordServer methods converted to free functions
- Pure functions (applyResponseHeaders, evaluateMapping, logMismatch, logVerboseRequest, transformRequestHeaders) no longer take a server receiver
- Replaced RecordServer struct embedding with explicit
server *Serverfield - Request handlers use closures instead of method values
0.3.0 - 2026-02-10
Added
- Record mode (
goodmock record) — proxies to upstream and captures request/response pairs /__admin/recordings/snapshotendpoint with URL pattern filtering and scenario support- Automatic gzip decompression for recorded response bodies
- Scenario-based mappings for repeated URLs (
repeatsAsScenarios) VERBOSEenvironment variable for full request/response traffic logging
0.2.1 - 2026-02-10
Changed
- Added mode as primary CLI arg (
goodmock replay), defaults toreplay - Replaced
-portflag withPORTenvironment variable (default: 8080)
0.2.0 - 2026-02-10
Fixed
- URL path matching now preserves percent-encoding (e.g.
%3A) by using raw request URI instead of fasthttp's decoded path
Added
- Request header rewriting (Origin, Referer, Accept-Encoding) to match recorded stubs
REFERER_PATHenvironment variable for app-specific Referer header path
0.1.1 - 2026-02-10
Changed
- Refactor and minor improvements
0.1.0 - 2026-02-09
Added
- Initial release
Build Information
Release v0.6.0
Docker Image
The Docker image for this release has been published to DockerHub:
Repository: gooddata/gooddata-goodmock
Tags:
gooddata/gooddata-goodmock:0.6.0gooddata/gooddata-goodmock:latest
Pull Commands
# Pull specific version
docker pull gooddata/gooddata-goodmock:0.6.0
# Pull latest
docker pull gooddata/gooddata-goodmock:latestRun Command
docker run --rm gooddata/gooddata-goodmock:0.6.0 [command]Changelog
0.6.0 - 2026-03-10
Added
BINARY_CONTENT_TYPESenvironment variable (record + replay) — comma-separated list of Content-Types whose response bodies should be stored as base64-encoded strings in thebodyfield. In replay mode, responses with matching Content-Types are automatically base64-decoded before serving.
0.5.1 - 2026-02-20
Changed
- Increased default maximum request body size to 16MB
0.5.0 - 2026-02-11
Added
application/jsonresponse bodies are now always stored as structured JSON (jsonBody) instead of escaped strings, improving diffability of mapping filesJSON_CONTENT_TYPESenvironment variable (record mode) — comma-separated list of additional Content-Types to also store asjsonBody(e.g.application/vnd.gooddata.api+json)- Replay mode supports serving both
body(string) andjsonBody(structured) response formats PRESERVE_JSON_KEY_ORDERenvironment variable (record mode) — when set, preserves original key ordering in both JSON request bodies (equalToJson) and response bodies (jsonBody) instead of sorting alphabeticallySORT_ARRAY_MEMBERSenvironment variable (record mode) — when set, recursively sorts JSON array elements by their stringified value (bottom-up) in both request and response bodies, eliminating diffs caused by non-deterministic array ordering from upstream- Recorded mappings are now sorted deterministically by name (with method + URL + query params + body as tiebreaker for duplicate names), eliminating spurious diffs caused by request-arrival ordering
Removed
- Removed
idanduuidfields from recorded mappings — they were random UUIDs that caused spurious diffs on every re-record and were never used for matching or lookup
Changed
- Breaking (output only): Mapping files produced by record mode are no longer WireMock-compatible as of v0.5.0 —
application/jsonresponses usejsonBody(structured JSON) instead ofbody(escaped strings), and mappings omitid/uuidfields. Replay mode remains fully backwards-compatible: old WireMock-format mapping files (withbodystrings andid/uuidfields) still load and work without changes. The admin API also remains WireMock-compatible. - Breaking (key order): JSON keys in both request bodies (
equalToJson) and response bodies (jsonBody) are now sorted alphabetically by default for deterministic diffs. If your consumers rely on original key ordering from the upstream server, setPRESERVE_JSON_KEY_ORDER=trueto restore the previous behaviour. VERBOSEenvironment variable now accepts any non-empty value (previously requiredtrue,1, oryes)
0.4.0 - 2026-02-11
Added
- Proxy mode (
goodmock proxy) — forwards all traffic to upstream without recording, applying the same header transformations and response filtering as record mode
0.3.2 - 2026-02-11
Changed
- Split monolithic
mainpackage intointernal/sub-packages:types,server,record,matching,logging,proxy,common - Exported Server struct fields (
Mappings,ProxyHost,RefererPath,Verbose,Mu) for cross-package access - Exported public API functions (
HandleRequest,HandleAdmin,LoadMappings,ClearMappings,TransformRequestHeaders,LogVerboseRequest,MatchRequest,LogMismatch,ProxyRequest,RunRecord) - Moved shared helpers (
GetPort,IsVerbose) intointernal/common
0.3.1 - 2026-02-11
Changed
- Refactored codebase from OOP style to functional style — all Server and RecordServer methods converted to free functions
- Pure functions (applyResponseHeaders, evaluateMapping, logMismatch, logVerboseRequest, transformRequestHeaders) no longer take a server receiver
- Replaced RecordServer struct embedding with explicit
server *Serverfield - Request handlers use closures instead of method values
0.3.0 - 2026-02-10
Added
- Record mode (
goodmock record) — proxies to upstream and captures request/response pairs /__admin/recordings/snapshotendpoint with URL pattern filtering and scenario support- Automatic gzip decompression for recorded response bodies
- Scenario-based mappings for repeated URLs (
repeatsAsScenarios) VERBOSEenvironment variable for full request/response traffic logging
0.2.1 - 2026-02-10
Changed
- Added mode as primary CLI arg (
goodmock replay), defaults toreplay - Replaced
-portflag withPORTenvironment variable (default: 8080)
0.2.0 - 2026-02-10
Fixed
- URL path matching now preserves percent-encoding (e.g.
%3A) by using raw request URI instead of fasthttp's decoded path
Added
- Request header rewriting (Origin, Referer, Accept-Encoding) to match recorded stubs
REFERER_PATHenvironment variable for app-specific Referer header path
0.1.1 - 2026-02-10
Changed
- Refactor and minor improvements
0.1.0 - 2026-02-09
Added
- Initial release
Build Information
Release v0.5.1
Docker Image
The Docker image for this release has been published to DockerHub:
Repository: gooddata/gooddata-goodmock
Tags:
gooddata/gooddata-goodmock:0.5.1gooddata/gooddata-goodmock:latest
Pull Commands
# Pull specific version
docker pull gooddata/gooddata-goodmock:0.5.1
# Pull latest
docker pull gooddata/gooddata-goodmock:latestRun Command
docker run --rm gooddata/gooddata-goodmock:0.5.1 [command]Changelog
0.5.1 - 2026-02-20
Changed
- Increased default maximum request body size to 16MB
0.5.0 - 2026-02-11
Added
application/jsonresponse bodies are now always stored as structured JSON (jsonBody) instead of escaped strings, improving diffability of mapping filesJSON_CONTENT_TYPESenvironment variable (record mode) — comma-separated list of additional Content-Types to also store asjsonBody(e.g.application/vnd.gooddata.api+json)- Replay mode supports serving both
body(string) andjsonBody(structured) response formats PRESERVE_JSON_KEY_ORDERenvironment variable (record mode) — when set, preserves original key ordering in both JSON request bodies (equalToJson) and response bodies (jsonBody) instead of sorting alphabeticallySORT_ARRAY_MEMBERSenvironment variable (record mode) — when set, recursively sorts JSON array elements by their stringified value (bottom-up) in both request and response bodies, eliminating diffs caused by non-deterministic array ordering from upstream- Recorded mappings are now sorted deterministically by name (with method + URL + query params + body as tiebreaker for duplicate names), eliminating spurious diffs caused by request-arrival ordering
Removed
- Removed
idanduuidfields from recorded mappings — they were random UUIDs that caused spurious diffs on every re-record and were never used for matching or lookup
Changed
- Breaking (output only): Mapping files produced by record mode are no longer WireMock-compatible as of v0.5.0 —
application/jsonresponses usejsonBody(structured JSON) instead ofbody(escaped strings), and mappings omitid/uuidfields. Replay mode remains fully backwards-compatible: old WireMock-format mapping files (withbodystrings andid/uuidfields) still load and work without changes. The admin API also remains WireMock-compatible. - Breaking (key order): JSON keys in both request bodies (
equalToJson) and response bodies (jsonBody) are now sorted alphabetically by default for deterministic diffs. If your consumers rely on original key ordering from the upstream server, setPRESERVE_JSON_KEY_ORDER=trueto restore the previous behaviour. VERBOSEenvironment variable now accepts any non-empty value (previously requiredtrue,1, oryes)
0.4.0 - 2026-02-11
Added
- Proxy mode (
goodmock proxy) — forwards all traffic to upstream without recording, applying the same header transformations and response filtering as record mode
0.3.2 - 2026-02-11
Changed
- Split monolithic
mainpackage intointernal/sub-packages:types,server,record,matching,logging,proxy,common - Exported Server struct fields (
Mappings,ProxyHost,RefererPath,Verbose,Mu) for cross-package access - Exported public API functions (
HandleRequest,HandleAdmin,LoadMappings,ClearMappings,TransformRequestHeaders,LogVerboseRequest,MatchRequest,LogMismatch,ProxyRequest,RunRecord) - Moved shared helpers (
GetPort,IsVerbose) intointernal/common
0.3.1 - 2026-02-11
Changed
- Refactored codebase from OOP style to functional style — all Server and RecordServer methods converted to free functions
- Pure functions (applyResponseHeaders, evaluateMapping, logMismatch, logVerboseRequest, transformRequestHeaders) no longer take a server receiver
- Replaced RecordServer struct embedding with explicit
server *Serverfield - Request handlers use closures instead of method values
0.3.0 - 2026-02-10
Added
- Record mode (
goodmock record) — proxies to upstream and captures request/response pairs /__admin/recordings/snapshotendpoint with URL pattern filtering and scenario support- Automatic gzip decompression for recorded response bodies
- Scenario-based mappings for repeated URLs (
repeatsAsScenarios) VERBOSEenvironment variable for full request/response traffic logging
0.2.1 - 2026-02-10
Changed
- Added mode as primary CLI arg (
goodmock replay), defaults toreplay - Replaced
-portflag withPORTenvironment variable (default: 8080)
0.2.0 - 2026-02-10
Fixed
- URL path matching now preserves percent-encoding (e.g.
%3A) by using raw request URI instead of fasthttp's decoded path
Added
- Request header rewriting (Origin, Referer, Accept-Encoding) to match recorded stubs
REFERER_PATHenvironment variable for app-specific Referer header path
0.1.1 - 2026-02-10
Changed
- Refactor and minor improvements
0.1.0 - 2026-02-09
Added
- Initial release
Build Information
Release v0.5.0
Docker Image
The Docker image for this release has been published to DockerHub:
Repository: gooddata/gooddata-goodmock
Tags:
gooddata/gooddata-goodmock:0.5.0gooddata/gooddata-goodmock:latest
Pull Commands
# Pull specific version
docker pull gooddata/gooddata-goodmock:0.5.0
# Pull latest
docker pull gooddata/gooddata-goodmock:latestRun Command
docker run --rm gooddata/gooddata-goodmock:0.5.0 [command]Changelog
0.5.0 - 2026-02-11
Added
application/jsonresponse bodies are now always stored as structured JSON (jsonBody) instead of escaped strings, improving diffability of mapping filesJSON_CONTENT_TYPESenvironment variable (record mode) — comma-separated list of additional Content-Types to also store asjsonBody(e.g.application/vnd.gooddata.api+json)- Replay mode supports serving both
body(string) andjsonBody(structured) response formats PRESERVE_JSON_KEY_ORDERenvironment variable (record mode) — when set, preserves original key ordering in both JSON request bodies (equalToJson) and response bodies (jsonBody) instead of sorting alphabeticallySORT_ARRAY_MEMBERSenvironment variable (record mode) — when set, recursively sorts JSON array elements by their stringified value (bottom-up) in both request and response bodies, eliminating diffs caused by non-deterministic array ordering from upstream- Recorded mappings are now sorted deterministically by name (with method + URL + query params + body as tiebreaker for duplicate names), eliminating spurious diffs caused by request-arrival ordering
Removed
- Removed
idanduuidfields from recorded mappings — they were random UUIDs that caused spurious diffs on every re-record and were never used for matching or lookup
Changed
- Breaking (output only): Mapping files produced by record mode are no longer WireMock-compatible as of v0.5.0 —
application/jsonresponses usejsonBody(structured JSON) instead ofbody(escaped strings), and mappings omitid/uuidfields. Replay mode remains fully backwards-compatible: old WireMock-format mapping files (withbodystrings andid/uuidfields) still load and work without changes. The admin API also remains WireMock-compatible. - Breaking (key order): JSON keys in both request bodies (
equalToJson) and response bodies (jsonBody) are now sorted alphabetically by default for deterministic diffs. If your consumers rely on original key ordering from the upstream server, setPRESERVE_JSON_KEY_ORDER=trueto restore the previous behaviour. VERBOSEenvironment variable now accepts any non-empty value (previously requiredtrue,1, oryes)
0.4.0 - 2026-02-11
Added
- Proxy mode (
goodmock proxy) — forwards all traffic to upstream without recording, applying the same header transformations and response filtering as record mode
0.3.2 - 2026-02-11
Changed
- Split monolithic
mainpackage intointernal/sub-packages:types,server,record,matching,logging,proxy,common - Exported Server struct fields (
Mappings,ProxyHost,RefererPath,Verbose,Mu) for cross-package access - Exported public API functions (
HandleRequest,HandleAdmin,LoadMappings,ClearMappings,TransformRequestHeaders,LogVerboseRequest,MatchRequest,LogMismatch,ProxyRequest,RunRecord) - Moved shared helpers (
GetPort,IsVerbose) intointernal/common
0.3.1 - 2026-02-11
Changed
- Refactored codebase from OOP style to functional style — all Server and RecordServer methods converted to free functions
- Pure functions (applyResponseHeaders, evaluateMapping, logMismatch, logVerboseRequest, transformRequestHeaders) no longer take a server receiver
- Replaced RecordServer struct embedding with explicit
server *Serverfield - Request handlers use closures instead of method values
0.3.0 - 2026-02-10
Added
- Record mode (
goodmock record) — proxies to upstream and captures request/response pairs /__admin/recordings/snapshotendpoint with URL pattern filtering and scenario support- Automatic gzip decompression for recorded response bodies
- Scenario-based mappings for repeated URLs (
repeatsAsScenarios) VERBOSEenvironment variable for full request/response traffic logging
0.2.1 - 2026-02-10
Changed
- Added mode as primary CLI arg (
goodmock replay), defaults toreplay - Replaced
-portflag withPORTenvironment variable (default: 8080)
0.2.0 - 2026-02-10
Fixed
- URL path matching now preserves percent-encoding (e.g.
%3A) by using raw request URI instead of fasthttp's decoded path
Added
- Request header rewriting (Origin, Referer, Accept-Encoding) to match recorded stubs
REFERER_PATHenvironment variable for app-specific Referer header path
0.1.1 - 2026-02-10
Changed
- Refactor and minor improvements
0.1.0 - 2026-02-09
Added
- Initial release
Build Information
Release v0.4.0
Docker Image
The Docker image for this release has been published to DockerHub:
Repository: gooddata/gooddata-goodmock
Tags:
gooddata/gooddata-goodmock:0.4.0gooddata/gooddata-goodmock:latest
Pull Commands
# Pull specific version
docker pull gooddata/gooddata-goodmock:0.4.0
# Pull latest
docker pull gooddata/gooddata-goodmock:latestRun Command
docker run --rm gooddata/gooddata-goodmock:0.4.0 [command]Changelog
0.4.0 - 2026-02-11
Added
- Proxy mode (
goodmock proxy) — forwards all traffic to upstream without recording, applying the same header transformations and response filtering as record mode
0.3.2 - 2026-02-11
Changed
- Split monolithic
mainpackage intointernal/sub-packages:types,server,record,matching,logging,proxy,common - Exported Server struct fields (
Mappings,ProxyHost,RefererPath,Verbose,Mu) for cross-package access - Exported public API functions (
HandleRequest,HandleAdmin,LoadMappings,ClearMappings,TransformRequestHeaders,LogVerboseRequest,MatchRequest,LogMismatch,ProxyRequest,RunRecord) - Moved shared helpers (
GetPort,IsVerbose) intointernal/common
0.3.1 - 2026-02-11
Changed
- Refactored codebase from OOP style to functional style — all Server and RecordServer methods converted to free functions
- Pure functions (applyResponseHeaders, evaluateMapping, logMismatch, logVerboseRequest, transformRequestHeaders) no longer take a server receiver
- Replaced RecordServer struct embedding with explicit
server *Serverfield - Request handlers use closures instead of method values
0.3.0 - 2026-02-10
Added
- Record mode (
goodmock record) — proxies to upstream and captures request/response pairs /__admin/recordings/snapshotendpoint with URL pattern filtering and scenario support- Automatic gzip decompression for recorded response bodies
- Scenario-based mappings for repeated URLs (
repeatsAsScenarios) VERBOSEenvironment variable for full request/response traffic logging
0.2.1 - 2026-02-10
Changed
- Added mode as primary CLI arg (
goodmock replay), defaults toreplay - Replaced
-portflag withPORTenvironment variable (default: 8080)
0.2.0 - 2026-02-10
Fixed
- URL path matching now preserves percent-encoding (e.g.
%3A) by using raw request URI instead of fasthttp's decoded path
Added
- Request header rewriting (Origin, Referer, Accept-Encoding) to match recorded stubs
REFERER_PATHenvironment variable for app-specific Referer header path
0.1.1 - 2026-02-10
Changed
- Refactor and minor improvements
0.1.0 - 2026-02-09
Added
- Initial release
Build Information
Release v0.3.2
Docker Image
The Docker image for this release has been published to DockerHub:
Repository: gooddata/gooddata-goodmock
Tags:
gooddata/gooddata-goodmock:0.3.2gooddata/gooddata-goodmock:latest
Pull Commands
# Pull specific version
docker pull gooddata/gooddata-goodmock:0.3.2
# Pull latest
docker pull gooddata/gooddata-goodmock:latestRun Command
docker run --rm gooddata/gooddata-goodmock:0.3.2 [command]Changelog
0.3.2 - 2026-02-11
Changed
- Split monolithic
mainpackage intointernal/sub-packages:types,server,record,matching,logging,proxy,common - Exported Server struct fields (
Mappings,ProxyHost,RefererPath,Verbose,Mu) for cross-package access - Exported public API functions (
HandleRequest,HandleAdmin,LoadMappings,ClearMappings,TransformRequestHeaders,LogVerboseRequest,MatchRequest,LogMismatch,ProxyRequest,RunRecord) - Moved shared helpers (
GetPort,IsVerbose) intointernal/common
0.3.1 - 2026-02-11
Changed
- Refactored codebase from OOP style to functional style — all Server and RecordServer methods converted to free functions
- Pure functions (applyResponseHeaders, evaluateMapping, logMismatch, logVerboseRequest, transformRequestHeaders) no longer take a server receiver
- Replaced RecordServer struct embedding with explicit
server *Serverfield - Request handlers use closures instead of method values
0.3.0 - 2026-02-10
Added
- Record mode (
goodmock record) — proxies to upstream and captures request/response pairs /__admin/recordings/snapshotendpoint with URL pattern filtering and scenario support- Automatic gzip decompression for recorded response bodies
- Scenario-based mappings for repeated URLs (
repeatsAsScenarios) VERBOSEenvironment variable for full request/response traffic logging
0.2.1 - 2026-02-10
Changed
- Added mode as primary CLI arg (
goodmock replay), defaults toreplay - Replaced
-portflag withPORTenvironment variable (default: 8080)
0.2.0 - 2026-02-10
Fixed
- URL path matching now preserves percent-encoding (e.g.
%3A) by using raw request URI instead of fasthttp's decoded path
Added
- Request header rewriting (Origin, Referer, Accept-Encoding) to match recorded stubs
REFERER_PATHenvironment variable for app-specific Referer header path
0.1.1 - 2026-02-10
Changed
- Refactor and minor improvements
0.1.0 - 2026-02-09
Added
- Initial release