You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.