Skip to content

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 29 May 20:51
· 24 commits to trunk since this release
9a5ae06

v0.5.0 — consumer surface

The wire matches what the docs claim, the generator can emit multi-route
bundles, the proxy serves them end-to-end, and brew install delivers
wavefront-bundle as a fast binary download. The TypeScript-specific codegen
was considered, scoped to message emission, then dropped — replaced by
docs/client.md showing how to wire any language's protoc-gen-X against the
bundle directly. OTel SDK adoption was deferred after a dependency-footprint
analysis (#92).

  • Wire-contract conformance. Five new X-Wavefront-Error codes:
    internal_error, unknown_route, upstream_status (bounded passthrough set
    401/403/404/405/409/410/422/429/451), unsupported_media_type, unavailable.
    2xx fidelity preserved; upstream redirects refused; panic recovery; strict
    (path, method) route gating. New wavefront_stdlib_boundary_total metric
    labelled by status (#39, #54 closed).

  • Multi-route bundle generator. wavefront-bundle add now walks every
    paths.. operation in the input OpenAPI; the proxy serves multi-route
    bundles via (path, method, version) negotiation. --force flag for
    same-info.version re-add (#77 closed).

  • Per-language client integration guide. docs/client.md documents how
    to wire the bundle into TypeScript / Go / Python / Rust applications using
    each language's standard protoc-gen-X. No wavefront-specific codegen
    surface (#72 closed).

  • Homebrew binary distribution. brew install alternet-dev/tap/wavefront-bundle
    becomes a fast binary download instead of a source build; per-arch matrix
    for darwin-arm64 / linux-arm64 / linux-amd64; formula scoped to the CLI
    only (server stays container-only). Intel-Mac (x86_64-apple-darwin) is
    intentionally not built — the macos-13 runner queue is too slow to gate a
    release on; Intel-Mac users use the Linux binary via Rosetta or build from
    source (#73 closed).

  • Server timeout + 100-continue posture. WAVEFRONT_READ_HEADER_TIMEOUT_MS
    and WAVEFRONT_READ_TIMEOUT_MS env-configurable; oversized declared bodies
    rejected with 413 before any 100 Continue is sent.

  • server: panic-recovery middleware and shared wire-error helper (#75)

  • feat: unknown_route 404 envelope on unmatched routes (#76)

  • feat: wavefront-bundle gen-ts-client subcommand skeleton (#78) [reverted in #100]

  • feat: per-arch binary build matrix for wavefront-bundle releases (#79)

  • feat: preserve upstream 2xx status on response (#80)

  • feat: TS message-class emission via protoc-gen-es (#81) [reverted in #100]

  • build: render-homebrew-formula.sh for wavefront-bundle releases (#82)

  • feat: upstream-status passthrough for bounded 4xx set (#83)

  • feat: emit unsupported_media_type 415 for wrong Content-Type (#84)

  • feat: refuse upstream redirects (3xx -> 502) (#85)

  • feat: env-configurable data-plane read timeouts; 413 before 100 Continue (#86)

  • feat: emit 503 unavailable on proxy path when bundle not loaded (#87)

  • feat: defense-in-depth check for proto-package collisions across bundle layers (#88)

  • test: set Content-Type on redirect tests so 415 gate doesn't intercept (#90)

  • feat: multi-route bundle generator emission core (#93)

  • build: wire render-homebrew-formula.sh into update-tap, rename formula to wavefront-bundle (#94)

  • feat: observability for stdlib-boundary HTTP responses (labelled by status) (#96)

  • docs: protocol.md and concepts.md updates for wire-contract conformance (#97)

  • feat: serve multi-route bundles end-to-end (#98)

  • feat: --force flag for wavefront-bundle add (#99)

  • docs: client.md per-language integration guide (drop gen-ts-client subcommand) (#100)

  • docs: AGENTS.md — correct stale 'no in-place reload' claim (#103)

  • build: drop Intel-Mac (x86_64-apple-darwin) from release matrix (#104)

  • OTel SDK adoption — dropped after dep-footprint analysis (#92, plus upstream open-telemetry/opentelemetry-go#8385 and #8386)

  • Per-language client codegen revisit — captured in #102

  • Intercept stdlib-boundary statuses with the wire envelope — captured in #91

  • Bundlegen polish (confidence knobs + intent files) — captured in #74

  • Inbound HTTP/2 / h2c / HTTP/3 — captured in #101