content: refresh the River hero screenshot in both schemes - #165
Conversation
The light hero was a capture whose legible content was users reporting that the tutorial was outdated and that there was no search engine, plus four consecutive GitHub-bot notifications. At 1379px shown in a 552px slot the text rendered around 5px, so nobody read it at a glance, but it was there for anyone who zoomed or opened the image directly. Recaptured from a live River against Ian's own peer, so this is a real room with real people, not a mock-up. Synthetic chat content was considered and rejected: the image is labelled as a live room, so inventing messages and attributing them to a real room with named members would be a fabricated record, and invented chat reads as fake anyway. Two things changed beyond the content: - Captured at a 900px viewport rather than 1400px. The hero slot is 552px wide, so the old 1379px capture was downscaled to 0.40 and its text was illegible; at 900px the scale is 0.61 and the conversation actually reads. - Both schemes captured in one pass at the same viewport and scroll position, so they are both 1800x910. Previously they were 1379x1269 and 1290x867, which is why .home-browser could not use a fixed height; that comment has been updated rather than left describing a constraint that no longer holds. The room list is cropped to the seven rooms that are fine to show publicly. Private and personal entries below them are out of frame. CLS measured against production as a control: 0.0154 here against 0.0142 light / 0.0154 dark before, so no regression, and the two schemes now match. Full sweep over home, quickstart, river, faq, news, donate and ghostkey in both schemes plus mobile: no page errors, no horizontal overflow, and the same 7 pre-existing /river/ contrast failures and nothing new. Claude-Session: https://claude.ai/code/session_01Cwq3ZRYFqSW9rMtGJYqfo2
Review caught that the replacement screenshot defeated its own purpose.
The topmost message read "unpopular and I think he got upset" - an
unattributed fragment about an unnamed third party, with its author line
cropped off. The old capture's problem was that you had to zoom to read
something embarrassing; this one put a remark about a real person being
unpopular in the first message slot at a size that reads with no zoom at
all, including in the og:image share card. That is worse than what it
replaced, and I missed it because I was checking for complaints about the
docs rather than reading the top line on its own terms.
Recaptured on the Delta thread instead: a join notice, a real question
("if i publish a page on Delta, will it still accessible by others when my
node isn't running?"), the answer ("Yes"), and "yay". The frame now starts
on a complete element rather than slicing a bubble.
Also from review, all consumers of these four files rather than just the
homepage:
- themes/freenet/layouts/river/list.html still declared 1290x867 / 1379x1269
for files that are now 1800x910, reserving a box 200px taller than the
image. Measured on /river/: reserved 494px against a settled 294px in
light. That is a real layout collapse and it pushed that page's CLS from
0.178 to 0.202. Now 1800x910 for both, reserved == settled == 294px, and
CLS measures 0.164 light / 0.169 dark, slightly BELOW production. The
comment explaining the split dimensions is updated too, since the two
screenshots now share one ratio.
- The same file carried the stale "Freenet Official" alt text that
_index.md had already been corrected for. The room is named "Freenet".
- static/slides/demo/river.html had max-height but no max-width, and the
intrinsic width grew 1290 -> 1800. Added max-width: 100%.
Homepage CLS unchanged at 0.0154 both schemes. Full sweep over home,
quickstart, river, faq, news, donate and ghostkey in both schemes plus
mobile: no page errors, no horizontal overflow, same 7 pre-existing /river/
contrast failures and nothing new.
Claude-Session: https://claude.ai/code/session_01Cwq3ZRYFqSW9rMtGJYqfo2
Review findings addressed (4446709)Two of these were serious, and the first one means the PR as originally pushed was worse than what it replaced. The replacement screenshot defeated its own purposeThe topmost message read "unpopular and I think he got upset" — an unattributed fragment about an unnamed third party, author line cropped off. The whole argument for this PR was that the old capture's embarrassing content was legible if you zoomed. The replacement made text deliberately more legible and landed the payoff on a remark about a real person being unpopular, readable with no zoom at all — and, via Recaptured on the Delta thread: a join notice, a real question ("if i publish a page on Delta, will it still accessible by others when my node isn't running?"), the answer ("Yes"), and "yay". The frame now starts on a complete element instead of slicing a bubble, so there is no orphan fragment at either edge. /river/ was left declaring the old dimensions
Measured CLS on Worth noting the reviewer's point that "I measured CLS and it didn't change" was not sufficient here — the homepage figure was genuinely unchanged while a different page regressed. Also fixed
Corrections to the PR description
Knowingly not changed
[AI-assisted - Claude] |
…d band
Re-review confirmed the recapture is clean (no gossip, no private rooms, no
complaints, light/dark pixel-parity verified by text-mask XOR) but raised a
better objection about the content itself.
The featured exchange was "if i publish a page on Delta, will it still
accessible by others when my node isn't running?" -> "Yes". That is an
unqualified durability guarantee, as the most legible text on the front page
and in the /river/ og:image card, about precisely the property that is the
project's hardest open problem right now. The rest of the site is careful
here: the hero note says "No mobile app yet", /river/ carries a column of
alpha caveats, and the project deliberately keeps "hosting" and "storing"
distinct. A claim embedded in a PNG cannot be softened by a prose edit.
Recaptured on an exchange that shows the product without asserting anything:
community banter ("Does macos count?"), a greeting, and a developer asking
about building a TypeScript dApp on Freenet Skills. That last one is better
signal than the answer it replaces - it shows someone building.
Also from re-review:
- /river/ was loading river-screenshot-dark.png as its LCP image with
fetchpriority=high while an identical WebP sat in the repo. Dark was
130KB on production and had regressed to 192KB here; it now serves the
83KB WebP on both pages. Verified via currentSrc and content-length.
- All four images carried a 24px band of dead background below the input
bar, so the declared box was 24px taller than the capture and the browser
frame drew its border away from the content. Cropped to 1800x886, and all
five declaration sites updated together.
- og:image had no dimensions. Now declared, which matters more than it did
since the aspect changed from 1.087 to 2.03.
Corrections to my earlier claim about CLS: the /river/ residual is font-swap,
not the image. Blocking Google Fonts drives it to 0.000 on both this build
and production. Reserved == settled on production too, so the only real
collapse was the one this branch introduced and has now fixed; the 0.178 ->
0.164 movement is incidental to the hero being shorter, not a fix. The
dimension change is still correct, and carries an unclaimed win: the <img>
fallback previously declared 1379x1269 while the dark <source> said
1290x867, so any engine ignoring dimensions on <source> reserved a badly
wrong box in dark.
Measured: reserved == settled == 287px on /river/, 0px collapse both
schemes. Homepage CLS 0.0154 unchanged. Full sweep over home, quickstart,
river, faq, news, donate and ghostkey in both schemes plus mobile: no page
errors, no horizontal overflow, same 7 pre-existing /river/ contrast
failures and nothing new.
Claude-Session: https://claude.ai/code/session_01Cwq3ZRYFqSW9rMtGJYqfo2
Re-review findings addressed (d1557fc)The re-review confirmed the recapture is clean — no gossip, no private rooms, no complaints, and light/dark parity verified structurally via a text-mask XOR rather than by eye. It then raised a better objection about the content, which I've acted on. The featured exchange was making a promise the project can't currently keep
That would have been the single most legible line on the front page, and in the The rest of the site is careful here: the hero note says "No mobile app yet", Recaptured on an exchange that shows the product without asserting anything: community banter ("Does macos count?"), a greeting, and a developer asking about building a TypeScript dApp on Freenet Skills. That last one is arguably better signal than the answer it replaces — it shows someone building. Also fixed
Correcting my own CLS claimThe reviewer is right and I overstated this. The The dimension change remains correct, and carries a win I hadn't claimed: the Measured after the fix: reserved == settled == 287px on Raised, not fixed here
[AI-assisted - Claude] |
Its screenshot was live at /slides/futo/river-screenshot.png and carried a DIRECT MESSAGES panel naming a contributor, a stale "Atlas (search engine)" room topic, and a pinned line calling the browser version "centralized and thus somewhat misses the point of Freenet" - which #125 had explicitly corrected, so the site said one thing in prose and the opposite in an image. Found while reviewing the hero screenshot in #165. Retired rather than recaptured at Ian's direction; River is still covered by private-rooms and private-rooms-limits immediately after it in the deck. Deck serves 200 with 20 top-level slides (was 21), no broken images, no page errors, and no remaining reference to the slide, the image, "DIRECT MESSAGES" or "misses the point of Freenet" in the rendered output. Claude-Session: https://claude.ai/code/session_01Cwq3ZRYFqSW9rMtGJYqfo2
Why
The light-mode hero was a capture whose legible content was users reporting that the tutorial was outdated and that there was no search engine, plus four consecutive GitHub-bot notifications:
At 1379px shown in a 552px slot that text rendered around 5px, so nobody read it at a glance — but it was there for anyone who zoomed or opened
/images/river-hero-light.webpdirectly.Real capture, not a mock-up
Recaptured from a live River against Ian's own peer, so this is a real room with real people.
Synthetic chat content was considered and rejected. The image is labelled "a live River chat room", so inventing messages and attributing them to a real room with named members would be a fabricated record. It is also self-defeating: invented chat reads as fake almost immediately, and the texture that makes a real capture convincing (someone saying "Hiiiii", a join notice mid-thread) is exactly what a mock-up loses.
Two things changed beyond the content
Capture scale. The hero slot is 552px wide. The old 1379px capture was downscaled to 0.40, which is why its text was illegible. Captured at a 900px viewport instead, the scale is 0.579 and the conversation actually reads at normal viewing size. River keeps its three-pane layout at that width.
Matched aspect ratios. Both schemes were captured in one pass at the same viewport and scroll position, so both are now 1800x910. They were previously 1379x1269 and 1290x867 — a mismatch that was the documented reason
.home-browsercould not use a fixed height. That comment has been updated rather than left describing a constraint that no longer applies.Privacy
The room list is cropped to the seven rooms Ian chose to show.
Politics,Ian / Steven, the Direct Messages list andArchivedare out of frame. NoteFreenet Devscarries a padlock and is in frame — that is deliberate, not an oversight; an earlier version of this description implied nothing private was visible, which was imprecise.Verification
No regression, and the two schemes now match. Full sweep over home, quickstart, river, faq, news, donate and ghostkey in both schemes plus mobile: no page errors, no transparent text, no horizontal overflow, and the same 7 pre-existing
/river/contrast failures and nothing new.[AI-assisted - Claude]
https://claude.ai/code/session_01Cwq3ZRYFqSW9rMtGJYqfo2
Update
The first push of this PR had a worse problem than the image it replaced: its top message was unattributed gossip about a real person, made more legible by the change. Recaptured, and the other three consumers of these files (which I had not checked) are fixed. See the review-response comment.