diff --git a/CHANGELOG.md b/CHANGELOG.md index da4aac7..b65773d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## Unreleased + +- the project page reads on a phone. Two things broke below about 372px: the + card grid asked for a 22rem minimum track, which is wider than a phone, so + the floor could not shrink and the whole page scrolled sideways with the + text cut off at the right edge; and the architecture diagram is 860 units + wide, so it scaled to roughly a third and put its labels near 4px. The grid + minimums are now `min(22rem,100%)`, and below 48rem a portrait version of + the same diagram is swapped in, capped in width so its labels stay near + their true size. The landscape diagram is untouched, so nothing about the + desktop page changes. The bridge itself already held up: its chrome + reflows and its fixed-width gopher content scrolls inside its own `pre`, + which is the only correct answer when a profile banner is SGR block art + that must not reflow + ## 0.16.7 (2026-08-07) - `post` takes `--as npub1...` and refuses to sign as anyone else. The signer diff --git a/site/index.html b/site/index.html index 6552846..c31d41a 100644 --- a/site/index.html +++ b/site/index.html @@ -86,6 +86,10 @@ border-bottom:1px solid var(--rule); font-size:.78rem; color:var(--muted)} .dot{width:.6rem; height:.6rem; border-radius:50%; background:var(--rule)} .term pre{margin:0; padding:1rem; overflow-x:auto; font-size:.85rem; line-height:1.55} +/* A transcript is fixed-width by nature and still scrolls sideways inside its + own box on a phone; the smaller step just buys back a dozen columns so the + shorter lines land whole. */ +@media (max-width:30rem){ .term pre{font-size:.76rem; padding:.75rem} } .term .p{color:var(--accent)} .term .c{color:var(--muted)} .term .l{color:var(--link)} @@ -93,9 +97,11 @@ code:not(pre code){background:var(--panel); border:1px solid var(--rule); border-radius:.25rem; padding:.05em .35em; font-size:.9em} -/* grids */ -.grid{display:grid; gap:1.25rem; grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))} -.grid-2{grid-template-columns:repeat(auto-fit,minmax(22rem,1fr))} +/* grids. The min() guard is load-bearing: a bare minmax(22rem,1fr) sets a + floor wider than a phone, so the track overflows the viewport instead of + shrinking and the whole page scrolls sideways. */ +.grid{display:grid; gap:1.25rem; grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr))} +.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(22rem,100%),1fr))} .card{background:var(--panel); border:1px solid var(--rule); border-radius:.5rem; padding:1.15rem 1.25rem} .card p:last-child{margin-bottom:0} .card .tag{font-family:ui-monospace,monospace; font-size:.75rem; color:var(--accent); @@ -115,10 +121,22 @@ .svg-box{fill:var(--panel); stroke:var(--rule); stroke-width:1.5} .svg-label{font-family:ui-monospace,monospace; font-size:12px} .svg-small{font-family:ui-monospace,monospace; font-size:10.5px} +/* The landscape diagram is 860 units wide, so on a phone it scales to about a + third and its labels land near 4px. Below 48rem a portrait version of the + same diagram is swapped in, capped in width so its own labels stay near + their true size rather than ballooning on a tablet. display:none keeps the + hidden one out of the accessibility tree, so only one title is announced. */ +.svg-label-n{font-family:ui-monospace,monospace; font-size:15px} +.svg-small-n{font-family:ui-monospace,monospace; font-size:13px} +.diagram-narrow{display:none} +@media (max-width:48rem){ + .diagram-wide{display:none} + .diagram-narrow{display:block; max-width:24rem; margin-inline:auto} +} /* support */ .support{background:var(--panel)} -.give{display:grid; gap:.75rem; grid-template-columns:repeat(auto-fit,minmax(13rem,1fr)); margin:1.5rem 0} +.give{display:grid; gap:.75rem; grid-template-columns:repeat(auto-fit,minmax(min(13rem,100%),1fr)); margin:1.5rem 0} .give a{display:block; padding:.85rem 1rem; border:1px solid var(--rule); border-radius:.45rem; text-decoration:none; background:var(--bg)} .give a:hover{border-color:var(--link)} @@ -253,7 +271,7 @@

A directory in, four protocols out.

- + Text files are signed into kind 31436 events, stored on relays, and served by any bridge to gopher, Gemini, HTTP and terminal clients. @@ -304,6 +322,65 @@

A directory in, four protocols out.

Lose the bridge and the documents remain. Any other bridge serves the same signed events. + + + + Text files are signed into kind 31436 events, stored on + relays, and served by any bridge to gopher, Gemini, HTTP and terminal clients. + + + my-hole/ + index.map + about.txt + + + + sign + + + kind 31436 + d = /about.txt + type = 0 + signed by your npub + + + + publish + + + + + relay + relay + relay + your choice, plus NIP-65 + + + + fetch + + + bridge + any bridge + + + + + + + + + + + gopher + gemini + http / lynx + terminal + + Lose the bridge and the documents + remain. Any other bridge serves + the same signed events. +
One router, four frontends. Reading needs no identity anywhere; writing always goes through a NIP-46 signer or a NIP-07 extension you control.