Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 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
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
5 changes: 3 additions & 2 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|sdk|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)
- **go-sdk**: `make test-go-sdk` (nested module `clients/go`; gates against `suites.go-sdk`, rendered separately and never merged into the Go total)
- **ts-unit**: `make test-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 suite sequentially + `make cov`)

After the run completes:

Expand Down
11 changes: 10 additions & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
version: 2
updates:
# Go modules
#
# TWO directories, not one — the same trap as github-actions below:
# `directory: /` covers the root module only, and Dependabot does not
# descend into nested modules. clients/go is its own module, so its
# go.mod needs its own entry here. That module is stdlib-only today
# (no `require` block, no go.sum), so this catches the first dependency
# it takes on rather than closing a gap that already exists.
- 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
10 changes: 8 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,14 @@ 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 + SDK vitest + Go SDK tests
run: make test-unit test-ts test-go-sdk test-conformance-ts COV_DEFER=1
# This one fragment carries THREE suites' data: unit covdata, ts-unit
# (vitest/istanbul) and go-sdk covdata from the nested clients/go
# module — every target above ran under COV_DEFER, so the `coverage`
# job renders and gates all three. No per-suite paths here on purpose:
# uploading the whole tmp/coverage tree means a new suite collected by
# this job needs no workflow change.
- name: Upload coverage fragment
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
Expand Down
16 changes: 15 additions & 1 deletion .testcoverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
# together, so `threshold.total` below applies to the *project-wide*
# 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.
# coverage adds integration- and e2e-only paths and clears it. The
# nested-module suites (go-sdk) are gated separately and never merged
# in — see suites.go-sdk.
profile: tmp/coverage/total/coverage.txt
local-prefix: github.com/Wave-RF/WaveHouse

Expand All @@ -30,6 +32,18 @@ suites:
unit: 80
integration: 20
e2e: 60
# Go SDK (clients/go) — a NESTED module, so its coverage is rendered and
# gated on its own and is deliberately NOT part of the merged Go total
# above. Nothing from clients/go can leak into that total: the root
# module can't see a nested one (`go list ./...` at the repo root never
# yields clients/go), so the unit/integration/e2e `-coverpkg=./...` never
# reaches these files — which is also why there is no `^clients/go/`
# entry under exclude.paths; there is nothing to exclude.
# Measured 82.7% when this floor was set (SDK package 88.6%,
# cmd/wavehouse-codegen 55.8%). 75 leaves the same order of headroom
# unit's 80 leaves under its real ~91%. Raise it as the codegen
# command's tests fill in.
go-sdk: 75
# 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