Skip to content

docs: refresh README hero for better visibility#1863

Merged
coliff merged 3 commits intohtmlhint:mainfrom
livlign:docs/retina-hero-refresh
Apr 22, 2026
Merged

docs: refresh README hero for better visibility#1863
coliff merged 3 commits intohtmlhint:mainfrom
livlign:docs/retina-hero-refresh

Conversation

@livlign
Copy link
Copy Markdown
Contributor

@livlign livlign commented Apr 22, 2026

Summary

The existing hero renders a little small and slightly fuzzy on GitHub's ~1000 px content column (it's captured at 1× so text softens after GitHub's downscale). This PR is a visibility refinement, not a redesign — same split-stage composition, same palette, same animation sequence, same content.

What changed

Before After
Dimensions 1200 × 200 1200 × 260 (+30% taller)
Pixel density 2× retina (2400 × 520 native)
Wordmark 28 px 42 px
Tagline / terminal body 11.5 / 12 px 15.5 px
Brand column 360 px 440 px
File size ~49 KB ~120 KB
Layout, palette, animation unchanged

After GitHub's downscale to column width, terminal text now lands at ~13 CSS px (close to README body) instead of ~10 px, and retina displays get pixel-perfect rendering instead of subpixel blur.

Files

  • website/src/assets/img/hero.gif — replaced with the 2× render
  • website/src/assets/img/hero.htmlnew: editable source, single self-contained HTML file (open in any browser to preview)
  • website/src/assets/img/README.mdnew: documents the stats embedded in the hero and the Puppeteer + ffmpeg re-render pipeline so future updates don't need archaeology

Preview note

The existing embed in the root README uses an absolute raw.githubusercontent.com/.../main/... URL, so GitHub's PR diff won't render the updated GIF until merge. Click the hero.gif file in the "Files changed" tab to see the new render directly; I can also switch the embed to a relative path in a follow-up if that aligns with the project's conventions.

Test plan

  • Open website/src/assets/img/hero.gif in the PR — verify the 2× render plays cleanly and text is crisp.
  • After merge, confirm the README renders the hero at its new taller proportions (~30% more vertical space) with readable terminal text on narrow / wide / retina viewports.
  • Easy revert: restore hero.gif from git history; delete the two new files.

Feel free to close if the direction doesn't suit the project — happy to iterate or drop it.

Replaces the existing 1200x200 hero.gif with a 1200x260 retina-rendered
refinement (+30% vertical, 2x pixel density, ~30% type size) while
preserving the split-stage composition, palette, and animation. The
smaller text in the previous version rendered fuzzy on GitHub's content
column and was hard to read at a glance; this version lands ~13-15 CSS
pixels on-screen after GitHub's downscale and stays crisp on high-DPI
displays.

Also adds the editable hero.html source and a short maintenance README
so future contributors can update embedded text and re-render without
archaeology.
@livlign livlign requested a review from coliff as a code owner April 22, 2026 15:53
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new hero marquee for the website, including the source HTML/CSS/JS animation and a README with instructions and a Puppeteer script for re-rendering the GIF. Feedback was provided to synchronize the capture duration with the animation loop, update deprecated Puppeteer options, and improve the maintainability of the animation source by dynamically calculating summary statistics.

Comment thread website/src/assets/img/README.md Outdated
Comment thread website/src/assets/img/README.md Outdated
Comment thread website/src/assets/img/README.md Outdated
Comment thread website/src/assets/img/hero.html Outdated
…teer cleanup

- hero.html: summary line (problems / rules fired) now derives from the
  HITS array at render time, so editing HITS keeps the summary in sync
  automatically (instead of two hardcoded 5s that silently drift).
- capture script (in README.md): DURATION_MS 20700 -> 20000 and dropped
  the '+ 200' cutoff pad so the capture stops exactly at
  TIMELINE.loopEnd, avoiding a 700ms sliver of the next cycle bleeding
  into the GIF.
- capture script: headless: 'new' -> headless: true per the current
  Puppeteer API.
- hero.gif: re-captured with the above settings (still 2x retina,
  2400x520, ~110 KB).
@livlign
Copy link
Copy Markdown
Contributor Author

livlign commented Apr 22, 2026

Thanks for the review @gemini-code-assist — all four points addressed in 72f37db:

  • DURATION_MS 20700 → 20000 so the capture stops exactly at TIMELINE.loopEnd; the 700 ms bleed into the next cycle is gone.
  • Dropped the + 200 cutoff pad for the same reason.
  • headless: 'new' → headless: true per the current Puppeteer API.
  • Summary is now derived from HITS — the 5 problems · 5 rules fired line is built at render time from HITS.length and new Set(HITS.map(h => h.rule)).size, so editing the hits keeps the summary in sync automatically.

The re-capture uses all three fixes, so the shipped hero.gif now loops cleanly (same 2× retina, 2400×520, ~110 KB).

@gemini-code-assist

This comment was marked as resolved.

livlign added a commit to livlign/claude-skills that referenced this pull request Apr 22, 2026
Two lessons from htmlhint/HTMLHint#1863 where a 1x 1200x200 hero with
11.5 px body text shipped visibly fuzzy:

- §2.4 adds a 'Retina quality is mandatory' rule with a MacBook-retina
  benchmark, minimum source font sizes (~15.5 px body after GitHub's
  0.83x column downscale), and a pointer to the GIF-specific workaround.
- §4.3g is rewritten for mandatory 2x capture. Chromium's screencast
  API silently ignores deviceScaleFactor, so the recipe now sets the
  viewport to 2W x 2H, applies body zoom: 2, and overrides the
  preview-only media query so the stage stays flush at (0, 0).
  Also removes the +200 ms cutoff pad and switches headless: 'new' to
  headless: true, matching the review outcome on #1863.
@coliff
Copy link
Copy Markdown
Member

coliff commented Apr 22, 2026

GIF looks good -if you could kindly remove the HTML and MD I'll get it merged. thanks!

Keeping the scope minimal — only the refreshed hero.gif remains.
@livlign
Copy link
Copy Markdown
Contributor Author

livlign commented Apr 22, 2026

Removed hero.html and website/src/assets/img/README.md in f44dbc3 — PR is now just the refreshed hero.gif. Thanks for the quick review, @coliff!

livlign added a commit to livlign/claude-skills that referenced this pull request Apr 22, 2026
Flips the §5.1 guidance: the mandatory artifact is the image file plus the
README embed, nothing else. Do not preemptively commit hero.html,
docs/images/README.md, capture scripts, or any supporting files.

Supporting files are ONLY added when (a) the reviewer asks, (b) the target
repo has precedent, or (c) the user explicitly requests it.

Cites both real incidents so the skill carries both lessons:
- SonarSource/sonarqube#3427 — reviewer requested source + maintenance
  doc; adding them turned a 2-item review into a merged PR.
- htmlhint/HTMLHint#1863 — maintainer's feedback was literally 'GIF
  looks good — if you could kindly remove the HTML and MD I'll get it
  merged.' Anything beyond the image can be scope imposition.
@coliff coliff merged commit 283575b into htmlhint:main Apr 22, 2026
6 checks passed
livlign added a commit to livlign/claude-skills that referenced this pull request Apr 22, 2026
PR htmlhint/HTMLHint#1863 merged 2026-04-22 — a 2x retina re-render
of the existing 1200x200 marquee at 1200x260 with ~30% larger fonts.
Same path on main, but the entry now carries a ?v=retina cache-buster
(so CDN returns the new bytes) and a PR link so readers can see what
changed vs the original marquee.
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.

2 participants