Skip to content

feat: curate landing-page examples to a featured subset#114

Merged
TMHSDigital merged 1 commit into
mainfrom
feat/landing-featured-examples
Jul 24, 2026
Merged

feat: curate landing-page examples to a featured subset#114
TMHSDigital merged 1 commit into
mainfrom
feat/landing-featured-examples

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

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 by examples/gallery.json); no generated file is hand-edited (docs/index.html is a gitignored build output; docs/gallery/ regenerates byte-identical — verified).

Featured-selection mechanism

  • examples/gallery.json entries may now carry a featured_rank integer.
  • build_site.py::pick_featured() sorts entries with a rank into featured_examples and 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.
  • No hand-maintained duplicate list in the generator or template: the data file is the only place the set lives.

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 member damped-track-aim also 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

  • Grid shows the 8 featured cards; anatomy, dark theme, typography unchanged.
  • Panel-head counter is now honest: 8 of 40 frames (was 40 frames).
  • Gallery link is the section's primary CTA: an orange button above the grid ("Browse all 40 examples in the gallery →"), visible within the first viewport of the section. The original text link remains below the grid as a secondary.

Landing-page height (live measurement, all lazy images loaded)

Viewport Before (current live site) After (this branch, local)
1280×800 9,948px 4,847px (−51.3%)
390×844 24,788px 10,203px (−58.8%)

Verification — live run (Playwright, Chromium 148, local python -m http.server over docs/)

26 assertions, all passing; screenshots reviewed, not just load-checked:

  • Desktop: 8 cards in featured_rank order, counter text, CTA above the grid and within the first ~1.1 viewports (y≈847), href gallery/.
  • Mobile 390px: 8 cards, single column, counter, CTA above grid.
  • No-JS landing: 8 featured cards render, CTA present, and clicking it navigates to /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 exactly top: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.)
  • Alt text: re-read the 8 generated landing <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)

  • Firefox/Safari rendering (all captures Chromium).
  • The empty-featured_rank fallback 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.html is rebuilt by the Pages deploy from the same template + data, so served and reviewed output cannot drift.

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>
@TMHSDigital
TMHSDigital merged commit ecaef2c into main Jul 24, 2026
9 checks passed
@TMHSDigital
TMHSDigital deleted the feat/landing-featured-examples branch July 24, 2026 01:58
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.

1 participant