feat: curate landing-page examples to a featured subset#114
Merged
Conversation
The landing page dumped all 40 example cards into its Render Result section, making it the longest scroll on the site (9948px at 1280px). A landing page should showcase, not enumerate - the full grid lives at /gallery/ with search, filters, and density controls since #113. Selection is data-driven: gallery.json entries may carry a featured_rank integer, build_site.py sorts by it into featured_examples, and the template renders that subset (falling back to the full list when nothing is curated). The panel counter is now honest about shown-vs-total ('8 of 40 frames'), and the gallery link moves from a below-the-fold footnote to a primary button above the grid. No controls on the landing page - that is what /gallery/ is for. Featured set (rank order): car-mirror-symmetry, soccer-ball-goldberg, damped-track-aim, light-link-studio, collision-hull-proxy, armature-bend, bmesh-gear, color-attribute-wheel - the pinned calibration members plus recent striking work, chosen for subject and palette range. Landing page height: 9948px -> 4847px at 1280px (-51%), 24788px -> 10203px at 390px (-59%). Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
The landing page's Render Result section rendered all 40 example cards in a two-column grid — 9,948px of scroll at 1280px (24,788px at 390px), the longest page on the site. PR #113 gave
/gallery/search, filters, and density controls; this PR makes the landing page a showcase that delegates enumeration to the gallery. No search/filter/toggle is added to the landing page — that is what/gallery/is for.All changes go through the generators (
scripts/site/build_site.py+scripts/site/template.html.j2, driven byexamples/gallery.json); no generated file is hand-edited (docs/index.htmlis a gitignored build output;docs/gallery/regenerates byte-identical — verified).Featured-selection mechanism
examples/gallery.jsonentries may now carry afeatured_rankinteger.build_site.py::pick_featured()sorts entries with a rank intofeatured_examplesand passes it to the template. When nothing is curated (empty list), the template falls back to the full list — the section can never go blank.Featured set and why
Rank order as rendered: car-mirror-symmetry, soccer-ball-goldberg, damped-track-aim, light-link-studio, collision-hull-proxy, armature-bend, bmesh-gear, color-attribute-wheel.
The two pinned calibration members (
armature-bend,bmesh-gear— third memberdamped-track-aimalso included) plus the most striking recent work, ordered for subject and palette variety: automotive (Mirror), sports geometry (Goldberg), constraints (golden needle array), lighting narrative (linked/unlinked), game pipeline (wireframe hull), armature weights (pink/teal gradient), bmesh (gold gear), color science (rainbow wheel). Renders were reviewed individually, not picked from names.Section changes
8 of 40 frames(was40 frames).Landing-page height (live measurement, all lazy images loaded)
Verification — live run (Playwright, Chromium 148, local
python -m http.serveroverdocs/)26 assertions, all passing; screenshots reviewed, not just load-checked:
featured_rankorder, counter text, CTA above the grid and within the first ~1.1 viewports (y≈847), hrefgallery/./gallery/where all 40 cards render./gallery/regression: compact default, search (needle→ 1), tag AND search (bmesh+gear→ 1), hash written and restored on a fresh page, detailed toggle, sticky controls at exactlytop:46, no-JS 40/40 cards. PR feat: add search, density toggle, and sticky controls to gallery index #113 behavior intact. (The gallery's own CSS/JS was not touched; its build output is byte-identical on this branch.)<img alt>s ({name} render— the landing template never used teaches-based alts, so the dotted-path truncation class does not apply); complete. All 40/gallery/alts untouched.Other generated pages with the same all-inline problem
Checked while in the template: none pathological. The landing page's Skills section lists 12 compact two-line rows (~700px), Rules a 6-row table, Snippets/Templates link chips, Changelog 2 entries — all enumeration-sized and appropriate for a landing page.
/gallery/detail pages are one-example-each by construction. No further action needed.Inspection only (not live-run)
featured_rankfallback path (template renders all 40 when nothing is curated) — verified by code reading; the shipped config has 8 ranked entries.Release note
feat:subject — release.yml will cut a minor on merge.docs/index.htmlis rebuilt by the Pages deploy from the same template + data, so served and reviewed output cannot drift.