diff --git a/css/style.css b/css/style.css index 457f9f2..49bba12 100644 --- a/css/style.css +++ b/css/style.css @@ -141,7 +141,7 @@ ul.tick li::before { content: "→"; position: absolute; left: 0; color: var(--accent); } -/* ---- the round-trip sequence diagrams (mermaid) ---- */ +/* ---- the round-trip sequence diagrams ---- */ .seq { display: grid; gap: 18px; margin: 20px 0; } .seqcol { border: 1px solid var(--line); border-left-width: 4px; border-radius: 8px; @@ -152,11 +152,19 @@ ul.tick li::before { .seqcol h4 { margin: 0 0 14px; font-size: 13px; letter-spacing: .04em; } .seqcol.bad h4 { color: var(--warn); } .seqcol.good h4 { color: var(--accent); } -/* before mermaid runs, .mermaid is a
; reset the code-block chrome */
-.seqcol .mermaid {
-  background: none; border: 0; padding: 0; margin: 0; overflow-x: auto;
-  text-align: center; color: var(--fg-faint); font-size: 12px; line-height: 1.45;
+/* step-flow: one row per hop, no lifelines to overlap */
+.flow { list-style: none; margin: 0; padding: 0; }
+.flow li { display: flex; gap: 12px; align-items: baseline; padding: 4px 0; font-size: 13px; color: var(--fg); }
+.flow .hop {
+  flex: 0 0 76px; text-align: right; white-space: nowrap;
+  font-family: var(--mono); font-size: 11.5px; color: var(--fg-dim);
 }
+.flow li.phase {
+  display: block; margin: 12px 0 4px; font-size: 11px;
+  text-transform: uppercase; letter-spacing: .1em; color: var(--fg-faint);
+}
+.flow li.phase:first-child { margin-top: 0; }
+.flow li.learn { display: block; color: var(--warn); font-size: 12.5px; padding: 6px 0 2px; }
 .seqcol .verdict { margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--line); }
 .seqcol.bad .verdict  { color: var(--warn); }
 .seqcol.good .verdict { color: var(--accent); }
diff --git a/index.html b/index.html
index 8cab531..969d793 100644
--- a/index.html
+++ b/index.html
@@ -142,23 +142,17 @@ 

the wasted round trip

HTTP/3 advertised only via the Alt-Svc HTTP header

-
-sequenceDiagram
-    participant C as Client
-    participant D as DNS
-    participant S as Your server
-    Note over C,S: First connection
-    C->>D: look up A / AAAA
-    D-->>C: IP address
-    C->>S: TCP + TLS handshake
-    S-->>C: connected (HTTP/2)
-    C->>S: HTTP/2 request
-    S-->>C: response + Alt-Svc: h3
-    Note over C,S: only now does the client learn you speak HTTP/3
-    Note over C,S: Second connection
-    C->>S: QUIC + HTTP/3 handshake
-    S-->>C: connected (HTTP/3)
-        
+
    +
  1. first connection
  2. +
  3. → DNSlook up A / AAAA
  4. +
  5. ← DNSIP address
  6. +
  7. ↔ serverTCP + TLS handshake, now on HTTP/2
  8. +
  9. → serverHTTP/2 request
  10. +
  11. ← serverresponse + Alt-Svc: h3
  12. +
  13. only now does the client learn you speak HTTP/3
  14. +
  15. second connection
  16. +
  17. ↔ serverQUIC + HTTP/3 handshake, now on HTTP/3
  18. +
HTTP/3 only on the second connection.

@@ -171,19 +165,13 @@

HTTP/3 advertised only via the Alt-Svc HTTP header

HTTP/3 advertised in an HTTPS DNS record

-
-sequenceDiagram
-    participant C as Client
-    participant D as DNS
-    participant S as Your server
-    Note over C,S: First connection
-    C->>D: look up HTTPS record
-    D-->>C: alpn=h3 + IP hints (+ ECH)
-    C->>S: QUIC + HTTP/3 handshake
-    S-->>C: connected (HTTP/3)
-    C->>S: HTTP/3 request
-    S-->>C: response
-        
+
    +
  1. first connection
  2. +
  3. → DNSlook up HTTPS record
  4. +
  5. ← DNSalpn=h3 + IP hints (+ ECH)
  6. +
  7. ↔ serverQUIC + HTTP/3 handshake, now on HTTP/3
  8. +
  9. → serverHTTP/3 request
  10. +
HTTP/3 right away, on the first connection.
@@ -415,47 +403,5 @@

Should I drop the Alt-Svc header?

-