Skip to content

Release v0.1.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 18:30
· 11 commits to main since this release

Highlights

  • Minor version bump: first release with new server-hardening surface area on pkg/grpctunnel.

Added

  • BridgeConfig.Authorize and WithAuthorize — pre-upgrade authorization hook; failing requests are rejected with 403 Forbidden before any websocket or gRPC resources are allocated.
  • WithAllowedOrigins and BuildOriginAllowlistCheck — declarative origin allowlisting with case-insensitive exact matching, "*", and "scheme://*.domain" subdomain wildcards; requests without an Origin header (non-browser clients) pass, matching browser-only origin-policy convention.
  • NewServer — returns a configured *http.Server so callers own graceful shutdown (Shutdown), TLS wiring, and timeout tuning. Serve/ListenAndServe now build on it.
  • ListenAndServeTLS — one-liner wss:// server startup.
  • Client targets now accept http:// and https:// URLs on both native and WASM builds, mapped to ws:// and wss:// respectively.

Fixed

  • Server-side net.Conn adapter: a non-binary websocket frame now surfaces an explicit protocol error instead of being silently reported as clean io.EOF (which masked protocol violations as normal stream end).
  • WASM target inference: http(s):// targets previously produced malformed URLs like ws://http://example.com; unsupported schemes (e.g. ftp://) are now rejected with an error instead of being mangled.
  • Abuse controls: the per-client upgrade-rate window map is now swept once per window, fixing unbounded memory growth under client-address churn (slow memory-exhaustion vector).
  • WASM dialer test harness: environment overrides now use Object.defineProperty, fixing the navigator.onLine test under modern Node where globalThis.navigator is accessor-defined.

Changed

  • pkg/bridge is formally deprecated in favor of pkg/grpctunnel; it remains supported for existing integrations but new features land in pkg/grpctunnel only.
  • Internal naming cleanup across pkg/grpctunnel and pkg/wasm/dialer: removed the machine-generated parse* prefix from locals, parameters, and unexported identifiers. No exported API was renamed or removed.
  • Documentation examples no longer demonstrate InsecureSkipVerify.

CI and repository (previously unreleased)

  • Hardened test.yml quality gates with one retry, bin/quality/quality.log artifact upload, and explicit CI race-skip fallback (RUNNER_QUALITY_SKIP_RACE=1) to unblock flaky race-toolchain lanes.
  • Hardened release.yml by capturing quality gate logs, using the same CI race-skip fallback in quality retries, forcing Node 24 action runtime, and adding post-publish release visibility/asset verification.
  • Stabilized runner benchmark gating with a built-in retry pass to reduce transient benchmark-noise failures in CI.
  • Reorganized repository docs into docs/core, docs/examples, docs/benchmarks, and docs/observability, and updated docs/catalog.json + docs portal path resolution accordingly.
  • Added root GitHub-facing wrapper files (README.md, CONTRIBUTING.md, SECURITY.md, LICENSE) that point to canonical docs under docs/.
  • Removed stale Makefile references from docs and removed Makefile from the repository in favor of the Go runner workflow (go run ./tools/runner.go ...).
  • Expanded ignore coverage for local benchmark and coverage artifacts (coverage.txt, perf_*.out, benchmarks.test.exe) and cleaned generated local artifacts.
  • Reworked root README.md into a technical product landing page with executable server/WASM integration snippets, architecture flow, production-hardening controls, and benchmark evidence drawn from benchmarks/quality_baseline.json.
  • Added host-repo operational docs (GOGRPCBRIDGE_*) into canonical docs/core/ and indexed them in docs navigation/catalog.
  • Added explicit module/repository identity policy docs (docs/core/MODULE_IDENTITY.md) and linked the policy from README and docs index.
  • Hardened canonical-publish-check to accept canonical and legacy repository URLs, support fork-safe CI mode (RUNNER_CANONICAL_SKIP_ORIGIN=1), and validate clean-consumer server and WASM compile smoke builds.
  • Updated release and CI workflows to align with Go 1.25.x, moved release changelog extraction to docs/core/CHANGELOG.md, added pkg.go.dev discoverability checks in release validation, and replaced blind push-based auto patch tagging with intentional workflow-dispatch semver tagging.