Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
834a093
feat(sdk): add Go client SDK with full API-tree parity
jfwoods Aug 5, 2026
3089c71
docs(sdk): add Go SDK documentation pages
jfwoods Aug 5, 2026
61b436f
ci(sdk): wire Go SDK into CI and update AGENTS.md
jfwoods Aug 5, 2026
28eb1cf
chore: trim verbose comments across SDK, Makefile, and docs
jfwoods Aug 5, 2026
b66413a
fix(sdk): resolve 18 golangci-lint findings in Go SDK
jfwoods Aug 5, 2026
38b2397
refactor(sdk): shrink Go SDK diff by 114 lines, zero functionality loss
jfwoods Aug 5, 2026
5a480bf
fix(sdk): address PR #434 review feedback — CI blockers + 51 review f…
jfwoods Aug 7, 2026
fc6346e
fix(sdk): address pre-push review round 1 — stream close race, tests,…
jfwoods Aug 7, 2026
e783f5b
fix(sdk): address pre-push review round 2 — terminal SSE errors, code…
jfwoods Aug 7, 2026
6e166da
fix(sdk): address pre-push review round 3 — cursor ceiling honesty, A…
jfwoods Aug 7, 2026
4b199b6
fix(sdk): address pre-push review round 4 — 64-bit codegen mapping, L…
jfwoods Aug 7, 2026
978451c
fix(sdk): address pre-push review round 5 — Array(UInt8) round-trip, …
jfwoods Aug 7, 2026
3a26401
fix(sdk): address pre-push review round 6 — e2e container gate, modul…
jfwoods Aug 7, 2026
10cb253
test(sdk): guard conformance request capture with a mutex
jfwoods Aug 7, 2026
cade9d7
docs(sdk): address pre-push review round 7 — channel error visibility…
jfwoods Aug 7, 2026
791c198
fix(sdk): address pre-push review round 8 — dead param, error wrappin…
jfwoods Aug 7, 2026
478b215
fix(sdk): address pre-push review round 9 — SSE error delivery, test …
jfwoods Aug 7, 2026
a841f1a
fix(sdk): address pre-push review round 10 — terminal StatusClosed, d…
jfwoods Aug 7, 2026
6a4e189
fix(sdk): address verified Codex review findings — Events() buffering…
jfwoods Aug 8, 2026
c88d1b1
fix(sdk): apply verified cavecrew/ponytail wave findings
jfwoods Aug 8, 2026
697e978
Merge remote-tracking branch 'origin/main' into go-sdk
jfwoods Aug 11, 2026
c2c1021
docs: address pre-push review round 11 — stale changelog entry, ARGS/…
jfwoods Aug 11, 2026
0ee1734
docs: address pre-push review round 12 — E2E lifecycle, lint install,…
jfwoods Aug 11, 2026
51d8b45
docs: address pre-push review round 13 — 429 sweep, gotestsum format,…
jfwoods Aug 11, 2026
4ee4f1f
docs: address pre-push review round 14 — not_like is rejected, not ca…
jfwoods Aug 11, 2026
2d043da
Merge remote-tracking branch 'origin/main' into go-sdk
jfwoods Aug 11, 2026
25e36cc
docs: restore branch edits lost in the merge, extend path-prefix docs…
jfwoods Aug 11, 2026
1158ff3
test(sdk): pin BaseURL path-prefix support; qualify the 401 rows
jfwoods Aug 11, 2026
0a46251
fix(sdk): clamp Retry-After before overflow; unalias insert-result po…
jfwoods Aug 11, 2026
9da52dd
test(sdk): pin the fetchNextTyped marshal-error branch
jfwoods Aug 11, 2026
4cc229a
docs: finish the TS side of the pagination parity sweep
jfwoods Aug 11, 2026
6d29538
docs: flag the TS codegen Decimal mismatch; fix the Go release framing
jfwoods Aug 11, 2026
7b85e06
chore(docs): revising Go SDK documentation
jfwoods Aug 12, 2026
d878791
Merge remote-tracking branch 'origin/main' into go-sdk
jfwoods Aug 21, 2026
59b27bb
fix(sdk): bring the Go SDK current with main's API and SSE changes
jfwoods Aug 21, 2026
5d26c34
docs(changelog): note the Go SDK's Headers option in the unreleased e…
jfwoods Aug 21, 2026
90d59ef
style(docs): unwrap hard-wrapped prose in the Go SDK pages
jfwoods Aug 21, 2026
c460c02
build(lint): put the shared conformance runner under Biome
jfwoods Aug 21, 2026
941b097
style(docs): unwrap the Go SDK aside in sdk/index.mdx
jfwoods Aug 21, 2026
c538ee3
build(deps): track the nested clients/go module in Dependabot
jfwoods Aug 21, 2026
167e16d
build(labels): map the Go SDK paths to area/sdk
jfwoods Aug 21, 2026
73edcbe
test(cov): give the Go SDK its own coverage floor
jfwoods Aug 21, 2026
3ed1698
fix(sdk): compare stream filter timestamps as instants, not as text
jfwoods Aug 21, 2026
3831741
fix(sdk): address unresolved CodeRabbit review threads
jfwoods Aug 25, 2026
ed2eace
docs(cov): compress the nested-module coverage comments
jfwoods Aug 25, 2026
20bb752
refactor(sdk/go): cut comment bloat and mechanical verbosity
jfwoods Aug 25, 2026
527dfea
refactor(sdk): compact the conformance fixture and both wire runners
jfwoods Aug 25, 2026
059ad16
docs(go-sdk): cut duplication and padding from the Go SDK docs
jfwoods Aug 25, 2026
0b8e450
test(sdk): consolidate Go SDK test setup and collapse sibling cases
jfwoods Aug 25, 2026
29c6b6b
fix(sdk): replay a missed terminal stream error to late subscribers
jfwoods Aug 25, 2026
3947df3
Merge remote-tracking branch 'origin/main' into go-sdk
jfwoods Aug 25, 2026
48a24e8
fix(sdk): address the latest CodeRabbit review round
jfwoods Aug 25, 2026
6c94796
fix: address the out-of-diff findings from CodeRabbit review 5020447247
jfwoods Aug 25, 2026
e17152f
test(sdk): cover the Go codegen CLI's argv parsing and schema fetch
jfwoods Aug 25, 2026
50bdc2f
refactor(sdk): topic-first SDK docs + one make target family
jfwoods Aug 25, 2026
23c58e2
fix(sdk): address pre-push review findings on the SDK docs merge
jfwoods Aug 25, 2026
4094272
style(docs): updating copywriting on some pages
jfwoods Aug 27, 2026
f778e41
style(docs): updating copywriting on some pages again
jfwoods Aug 27, 2026
ce066c9
fix(sdk): address CodeRabbit findings on the SDK docs merge
jfwoods Aug 27, 2026
ff35c8b
fix(sdk): harden wavehouse-codegen and correct three stale docs claims
jfwoods Aug 27, 2026
607d000
fix(sdk): gate generated map keys on encoding/json, not Go comparability
jfwoods Aug 27, 2026
654924a
refactor(sdk)!: drop the Go codegen CLI
jfwoods Aug 27, 2026
edbc0b3
fix(sdk)!: keep the MaxRetries default; refuse credentialed REST redi…
jfwoods Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .claude/commands/cover.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description: Render coverage HTML for a suite and surface drops below threshold
argument-hint: [unit|integration|e2e|sdk|merge|all] (default: merge whatever exists)
argument-hint: [unit|integration|e2e|go-sdk|ts-unit|ts-e2e|ts-total|merge|all] (default: merge whatever exists)
---

Generate the coverage report and surface anything below threshold from `.testcoverage.yml`.
Expand All @@ -13,10 +13,11 @@ Behavior:
- **unit**: `make test-unit` (gates per-suite + writes `tmp/coverage/unit/`)
- **integration**: `make test-integration` (requires Docker)
- **e2e**: `make test-e2e` (requires Docker; orchestrator + cover binary)
- **ts-unit**: `make test-ts` (SDK unit tests + coverage + gate against `suites.ts-unit`)
- **go-sdk**: `make test-sdk-go` (nested module `clients/go`; gates against `suites.go-sdk`, rendered separately and never merged into the Go total)
- **ts-unit**: `make test-sdk-ts` (TS SDK unit tests + coverage + gate against `suites.ts-unit`)
- **ts-e2e**: emitted as a side effect of `make test-e2e` (the orchestrator always passes `--coverage` to the e2e vitest run; informational only, no standalone gate)
- **ts-total**: `make cov` (runs `cov report` — one consolidated Go + TS summary with per-suite HTML links + all gates; fails if *no* suite has data)
- **all**: `make test-all` (all four suites sequentially + `make cov`)
- **all**: `make test-all` (every coverage-producing suite sequentially + `make cov`; `test-sdk-go-e2e` is excluded, it needs a live server it did not start and runs uninstrumented)

After the run completes:

Expand Down
7 changes: 5 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
version: 2
updates:
# Go modules
# Go modules. TWO directories: Dependabot does not descend into nested
# modules, so clients/go needs its own entry (stdlib-only today).
- package-ecosystem: gomod
directory: /
directories:
- /
- /clients/go
schedule:
interval: weekly
day: monday
Expand Down
6 changes: 4 additions & 2 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@
- changed-files:
- any-glob-to-any-file:
- "clients/ts/**"
- "clients/go/**"
- "tests/e2e/sdk/**"
- "tests/conformance/**"

"area/docs":
- changed-files:
Expand Down Expand Up @@ -83,8 +85,8 @@
dependencies:
- changed-files:
- any-glob-to-any-file:
- "go.mod"
- "go.sum"
- "**/go.mod"
- "**/go.sum"
- "**/package.json"
- "**/pnpm-lock.yaml"
- "**/package-lock.json"
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,10 @@ jobs:
uses: ./.github/actions/setup-env
with:
go-cache-suffix: "-unit"
- name: Run Go unit tests + SDK vitest tests
run: make test-unit test-ts COV_DEFER=1
- name: Run Go unit tests + both SDK suites
run: make test-unit test-sdk COV_DEFER=1
# One fragment, three suites (unit, ts-unit, go-sdk) — all deferred to
# the `coverage` job. Whole-tree path so a new suite needs no edit here.
- name: Upload coverage fragment
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
Expand Down
22 changes: 21 additions & 1 deletion .testcoverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# coverage number — unit alone covers only `./internal/...` packages
# exercised by `*_test.go` files (below total threshold); merged
# coverage adds integration- and e2e-only paths and clears it.
# Nested-module suites (go-sdk) are gated separately — see suites.go-sdk.
profile: tmp/coverage/total/coverage.txt
local-prefix: github.com/Wave-RF/WaveHouse

Expand All @@ -22,14 +23,33 @@ local-prefix: github.com/Wave-RF/WaveHouse
threshold:
total: 80

# Per-suite coverage thresholds (custom key — read by scripts/coverage.sh,
# Per-suite coverage thresholds (custom key — read by scripts/cov,
# silently ignored by go-test-coverage). Single source of truth for what
# percentage each suite must hit before it counts as passing.
#
suites:
unit: 80
integration: 20
e2e: 60
# Go SDK (clients/go) — a NESTED module, so the root module's
# `-coverpkg=./...` can never reach it: rendered and gated on its own,
# never merged into the total above, nothing to add under exclude.paths.
# 75 vs 88.5% measured. The gap is deliberate slack, matching how every other
# floor here is set (ts-unit is 40 against a measured 76%): these are
# regression floors, not targets, so ordinary churn doesn't red the build.
# Raise it when a real regression slips under 75.
#
# ONE key here, three for the TS SDK below, because the TS SDK has two
# coverage-PRODUCING suites and this has one. `ts-unit` is vitest, `ts-e2e`
# is the same SDK source re-measured by the orchestrator's live-server run,
# and `ts-total` exists only because those two have to be merged before a
# meaningful floor can be applied. `make test-sdk-go` is the Go SDK's only
# instrumented suite, so a `go-sdk-total` would be a copy of this number and
# a `go-sdk-e2e` would gate a suite that emits no covdata: `test-sdk-go-e2e`
# drives a server it did not start and runs uninstrumented. Wiring that suite
# into the orchestrator so it earns the same three-gate shape is #518 — add
# the other two keys with it, not before.
go-sdk: 75
Comment thread
jfwoods marked this conversation as resolved.
# TypeScript SDK suites — see scripts/cov for the merge / render logic.
# vitest gates via --coverage.thresholds.statements; the merged ts-total
# is gated by `cov ts-merge` against the value below. Tune ts-total
Expand Down
Loading