# Changelog

## Score

- CAI 53 → 58 (+4.8)
- Rubric changed (rubric-2026.09.9 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 94 → 94 (+0.0)
- Architecture 100 → 86 (-13.6)
- Maturity 55 → 55 (-0.0)
- Readiness 43 → 49 (+5.3)
- Security 46 → 61 (+15.4)
- Performance 100 (new)

## Resolved (4)

- Documentation: no architecture or design documentation (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (11–12 lines × 2) (wstunnel/src/lib.rs)

## New (10)

- Duplicate intent across transport modules. Both `http2` and `websocket` modules expose a `connect` function with identical signatures and likely similar internal logic (establishing a tunnel connection). This suggests a lack of a unified `Transport` trait or factory pattern, forcing users to import specific transport modules to connect.
- Duplicated block (11–12 lines × 2) (wstunnel/src/lib.rs)
- Inconsistent method naming for proxy support. `connect` is the primary method, but `connect_with_http_proxy` is a separate method. This breaks the expectation that proxy configuration would be part of the `RemoteAddr` or a context object, or that a single `connect` method would handle proxy logic internally. It forces users to know whether to use the proxy variant based on external state not visible in the signature's primary argument.
- Inconsistent naming for bidirectional data flow. `propagate_local_to_remote` and `propagate_remote_to_local` are verbose and asymmetric in naming convention compared to standard Rust idioms like `forward` or `copy`. While distinct, they represent the same logical operation (data forwarding) in opposite directions. The verb 'propagate' is also less standard than 'forward' or 'relay' for I/O streams.
- Low cohesion: L4Stream (LCOM4 6) (wstunnel/src/tunnel/client/connection_pool/l4_stream.rs)
- Off the main sequence: wstunnel
- Outdated: hyper-util
- Outdated: tokio-rustls
- Projects may be oversized for their cohesion
- Redundant entry points with confusing semantic distinction. `run_client` and `create_client` appear to perform the same high-level operation (initializing a client), but differ in the executor type consumed (`TokioExecutor` vs `TokioExecutorRef`) and likely in lifecycle management (run vs create). This forces users to guess which function to use based on subtle executor trait differences rather than clear operational intent.

## Changes since last survey

- 14 commits — 10 feature/other, 4 fixes

## By area

- wstunnel/src — 6 commits
- (root) — 5 commits
- .github/workflows — 2 commits
- wstunnel-cli/Cargo.toml — 1 commit

## Notable commits

- fix: fix(revere-tunnel): force reconnect on idle reverse tunnel
- fix: fix(tcp-listener): configure the tcp socket to have TCP_NO_DELAY
- fix: fix(webtransport): Reload restriction on new stream
- fix: fix: Don't use IPv4 mapped IPv6 on BSD like OS
- change: Bump version v11.0.0
- change: Bump version v11.0.0
- change: Revise README for improved documentation and examples
- change: Revise security support information and reporting method
- change: Update Android SDK setup in release workflow
- change: Upgrade Android SDK setup action to v4
- change: bump
- change: bumps deps
- change: chore(webtransport): improve read throughput
- change: reverse-tunnel: speedup dispatch of reverse tunnel
