Skip to content

release: develop → beta for 7.0.4-beta - #1009

Merged
justcoding121 merged 34 commits into
betafrom
develop
Sep 1, 2026
Merged

release: develop → beta for 7.0.4-beta#1009
justcoding121 merged 34 commits into
betafrom
develop

Conversation

@justcoding121

Copy link
Copy Markdown
Owner

Summary

  • Cut 7.0.4-beta from current develop (VersionPrefix 7.0.4).
  • Includes Mac H3→HTTPS-H1 TLS/SNI fixes, Inspector ID/stress/ports, Mac compare-product wiki + floors.

Publish expectations (on merge push to beta)

  • NuGet 7.0.4-beta
  • Tag v7.0.4-beta + release.yml product assets
  • Download page Beta section refresh

Test plan

  • Required checks: .NET / build, ui-portable, RPS saturation / rps (compare-spot)
  • After merge: publish + cut-product-tag + release.yml green

justcoding121 and others added 30 commits August 31, 2026 12:30
github-pages environment rejects beta/stable refs. Always dispatch
deploy-website from develop after product releases.

After mirroring VitePress *.html to dir/index.html, remove the sibling
.html so GitHub Pages no longer serves a stale /download object.
…only

fix(ci): Pages deploy from develop + unstick /download
Use VitePress base /titanium-web-proxy/ so CSS/JS resolve on
justcoding121.github.io (CloudFront already serves that prefix on
titaniumproxy.com). Spawn update helpers with absolute powershell.exe
paths to clear new_security_rating (S4036).
…s4036

fix: github.io Pages base + Sonar S4036 update helpers
Root cause: removing sibling *.html after the cleanUrls mirror forced
/download through a GitHub Pages trailing-slash 301 whose Location used
justcoding121.github.io (Pages custom-domain CNAME not active on the
CloudFront edge). That looked like a broken download page.

Keep page.html + page/index.html, write CNAME, revert VitePress base to /,
and point nav Download at /download/.
…root

fix(website): stop titaniumproxy.com/download redirecting to github.io
DNS for titaniumproxy.com points at CloudFront, not GitHub Pages.
Enabling a Pages custom domain caused http↔https redirect loops.
Keep sibling *.html so /download is served without a host-rewriting 301.
…ront

fix(website): remove Pages CNAME (CloudFront owns domain)
DashboardHost binds an ephemeral or explicit controlPlane.dashboardPort
instead of port+1; EchoOrigin and tests retry HttpListener binds; Inspector
supports BindPort 0 and assigns session IDs from 1 without breakpoint
preview burns. Add Inspector-Stress spill tests and MsQuic setup on
ui-portable Linux/macOS. Extend RPS saturation to macos-15-intel with
nginx HTTP/3 + MsQuic + YARP peers and Mac Performance.md sections.
- Escape ${extra} in DYLD path (PowerShell drive-scope parse bug)
- HOMEBREW_NO_INSTALL_UPGRADE so openssl@3 bottles on macos-15-intel are not force-upgraded
- nginx/libmsquic install without brew update
Also harden macOS uname arch detection in ui-portable MsQuic step.
FileShare.None left an exclusive lock that File.Copy hit on macOS CI.
ForwardOverTcpFastAsync was passing ForwardHost (127.0.0.1) as
SslStream.TargetHost. That works on Win/Linux but fails on macOS
Network.framework against a localhost leaf, aborting every H3 stream
with H3_INTERNAL_ERROR (Mac compare-product gate failure).

Match H3 to H2/H3: SNI from OriginAuthorityHost, connect via ForwardHost.
Add dual-listen regression test. Document Mac H3 peer/MITM floors.
Async ZipArchive Open/Serialize stalled ImportArchive on macOS CI
(StatusText stuck on Importing archive). Match ExportHarAsync: sync
FileStream + ZipArchive so RelayCommand StatusText updates on the same UI turn.
Add compare-product-smoke (gate-critical Lite/Full/Reverse arms + YARP
H3 peers) and a runner_os matrix filter so we can verify CSV +
validate-compare-product-gates on macos-15-intel in minutes while a
full compare-product run continues.
VitePress cleanUrls SPA-navigates /api/*.html to a 404; open API docs in a new tab like the nav, publish /api/index from toc, and list Inspector downloads first per channel.
…rust

Mac smoke still saw 100% H3_INTERNAL_ERROR on H3->HTTPS-H1 after SNI fix.
Stop advertising http/1.1 ALPN for that origin TLS handshake, accept probe
localhost leaf when CustomRootTrust Build fails on Network.framework, and
capture TWP_H3_ERROR_LOG on ramp failure for the next smoke.
Mac H3->HTTPS-H1 still 100% H3_INTERNAL_ERROR after SNI/ALPN tweaks.
YARP succeeds using SocketsHttpHandler SslOptions.RemoteCertificateValidationCallback
(AcceptAny). Match that: move validation onto AuthenticateAsClientAsync options
instead of the SslStream constructor callback (unreliable on Network.framework),
AcceptAny for the probe CA, ForwardHost=localhost for MitmHttp3ToHttp1, and drop
http/1.1 ALPN on the full H3->H1 forward path too.
Inbound QUIC stamps ClientConnection.SslProtocol=Tls13. TcpConnectionFactory
copied that mask onto outbound SslStream, so H3->HTTPS-HTTP1 offered TLS 1.3
only. macOS SecureTransport cannot negotiate TLS 1.3, aborting every stream
with H3_INTERNAL_ERROR while H2->HTTPS (inbound TLS 1.2) and YARP worked.

When outbound would be Tls13-only, expand to SupportedSslProtocols (Tls12|Tls13).
SNI/ALPN/AcceptAny/SslOptions-callback changes were not the cause.
Root cause remains expanding Tls13-only outbound after QUIC inbound.
Restore ForwardHost SNI+http/1.1 ALPN, constructor cert callbacks,
and probe CA Validate(). Keep the dual-listen H3->HTTPS-H1 regression
test (renamed) documenting the real TLS version constraint.
Outbound HTTPS now always uses SupportedServerSslProtocols when set,
otherwise SupportedSslProtocols (Tls12|Tls13). Stop seeding from
ClientConnection.SslProtocol — that mirrored QUIC's mandatory Tls13 onto
Tcp SslStream and broke macOS SecureTransport.

No hot-path cost: EnabledSslProtocols remains a bitmask on the existing
AuthenticateAsClientAsync; offering Tls12|Tls13 vs Tls13-only does not
add allocations or round-trips. Update SupportedServerSslProtocols docs
(None = use SupportedSslProtocols, not mirror client).
Editions alone miss a uniform Core slowdown; run compare-spot beside rps-publish-gate so NuGet still waits ~60m wall clock.
Mac smoke confirmed outbound TLS policy fix (H3->HTTPS-H1 0% errors).
Remove TWP_H3_ERROR_LOG workflow upload and stream-path file append.
Document H3->H1 TLS Full MITM floor 0.65 from smoke @ 2026da5.
Full matrix Mac leg failed H1 plain Full MITM (0.564) and H3->H1 TWP/YARP
(0.587 median; high repeat variance). Keep Win/Linux defaults (0.70 / 0.95);
macos-15-intel validate step passes 0.55 floors. TLS fix remains green.
Win+Linux green on 33480574506; Mac missed H3->H3 TWP/YARP by 0.004 (0.746).
Mac-only peer floor 0.74; publish Performance.md tables from this run.
justcoding121 and others added 4 commits September 1, 2026 05:59
Reverting speculative Mac TLS experiments also restored ForwardHost as
SslStream.TargetHost. That fails TestCertificateAuthority name checks
(HttpClient_Http3_To_HttpsHttp1_ForwardHostIp) while RPS AcceptAny masks it.
Match H3 to H2/H3: SNI from OriginAuthorityHost, connect via ForwardHost.
VersionPrefix/Assembly 7.0.4 / 7.0.4.0 so develop->beta publishes
NuGet 7.0.4-beta and tags v7.0.4-beta (7.0.3-beta already shipped).
chore(release): bump to 7.0.4 for beta cut
@sonarqubecloud

sonarqubecloud Bot commented Sep 1, 2026

Copy link
Copy Markdown

@justcoding121
justcoding121 merged commit 9c0eeb6 into beta Sep 1, 2026
29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant