Highlights
We shipped the playground two weeks ago. This week was follow-up work: three rough edges that needed sanding before we could call it done. Cookies now follow RFC 6265 correctly, the expand button puts the response into a real fullscreen overlay instead of stretching a grid cell, and the whole thing finally works on a phone.
What's New
Cookies follow RFC 6265 now
The cookie jar had a quiet bug for two weeks. Upstream sites send Set-Cookie: ...; Domain=.example.com to opt cookies into subdomain matching (the leading dot says "this cookie travels with the apex and every subdomain"). Our parser stripped that dot and lost the fact that the Domain attribute was set at all. The result was a jar that couldn't tell the difference between a host-only cookie (no Domain attribute) and a domain cookie. Two visible effects:
- The raw view emitted
Domain=example.com(no dot), so when you copied a cookie into a curl command, the receiving site would treat it as host-only and not send it back to subdomains. - The Browser product's cookie hand-off relied on a fragile guess to decide which kind of cookie to install in the browser, and it misfired whenever you had an apex plus a subdomain in the same jar.
We added a hostOnly boolean on every parsed cookie. Domain attribute present, with or without the dot, means hostOnly: false and the cookie matches the host plus its subdomains. Domain attribute absent means hostOnly: true and the cookie stays pinned to the exact host. The raw view emits Domain=.example.com for domain cookies and omits Domain entirely for host-only ones, so copying out of the jar produces a cookie that survives roundtripping. The parsed view shows a small HO badge on host-only rows, which turn out to be the uncommon case once you start watching them. Existing jars saved before the fix keep the old wide-match behaviour so nothing silently drops.
Expand mode is a true fullscreen overlay
The old expand button stretched the response card inside the document flow. That meant a tall response added page height, the body grew a scrollbar, and the request panel above the response shifted slightly when you toggled. And the response panes themselves capped at 480 to 560 pixels, so a deep JSON tree left empty card height under it on a 1440p monitor.
Now it's a position: fixed overlay anchored between the sidebar's right edge and the viewport edge, top to bottom. The body gets overflow: hidden so the page stops scrolling behind the overlay. Inside the overlay the active pane uses calc(100vh - 280px) and the cookie jar got the same scroll model. ESC collapses back to the split view. The button title now reads "Expand to full screen" or "Collapse to split view" so it stops being a guess. The icon was the four-arrows glyph the whole time, which we should have spelled out from the start.
The playground works on phones
Two mobile bugs needed fixing before the responsive layers were worth doing. The Send button's label was sticking to the left edge of the button instead of centering, and once a response rendered, the page picked up a horizontal scrollbar because a wide child (a long URL, a JSON tree, a raw HTML pre block) was forcing the grid column to grow past the viewport. Both fixed: Send centers properly, and the grid column uses minmax(0, 1fr) so wide children scroll inside their own card instead of pushing the page sideways.
On top of that, the responsive layers we never quite finished:
- Below 1023px the Expand button hides (the grid is already a single column).
- Below 767px paddings tighten, the method dropdown shrinks to 96px, the API-key picker flexes.
- Below 640px the URL row reflows into two rows (method and Send on top, URL underneath), response tool buttons grow to 32px touch targets, tabs scroll horizontally, and the cookie table becomes a grid card with name, value, path, and expiry stacked.
- Below 374px (iPhone SE territory) an extra shrink pass keeps everything reachable.
And hint tooltips now open on tap on pointer-coarse devices and dismiss on a second tap of the same trigger. We tested it on a borrowed iPhone SE on the train this week and everything fits without horizontal jiggle.
This is what taking a tool from "demo" to "thing you'd actually use" looks like. Quieter than launch week, but the week the playground stopped frustrating us.