From 063ae125276738e578a28483f218a8049979b1bc Mon Sep 17 00:00:00 2001 From: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Date: Tue, 22 Sep 2026 20:04:11 -0400 Subject: [PATCH] fix(site): finish the Pages review follow-ups The first pass left the landing page cutting 19 skill and rule descriptions mid-clause, listing all 28 showcase props (10k px of page), and the gallery with three identical links per card, a zoom overlay that let focus escape behind it, and no 404 page for renamed examples. - build_site: descriptions shown whole up to 340 chars, else cut at a sentence boundary; backtick spans render as ; showcase honors featured_rank like examples; generate a root-absolute 404.html - showcase/gallery.json: feature six varied pieces on the landing page - build_gallery: zoom overlay is a (focus trap, Esc, focus return, Close button); the image link on each card leaves the tab order; "View" links carry the entry name; the Tags toggle names the active tag on narrow screens; footer names the right source JSON; README content is substituted last so it can't hit other placeholders - both templates declare color-scheme: dark Co-Authored-By: Claude Opus 5.5 (1M context) Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> --- .gitignore | 1 + docs/gallery/anvil/index.html | 31 +- docs/gallery/armature-bend/index.html | 29 +- .../gallery/attribute-domain-shear/index.html | 29 +- .../bake-normal-high-to-low/index.html | 29 +- docs/gallery/bmesh-gear/index.html | 29 +- docs/gallery/campfire/index.html | 31 +- docs/gallery/car-mirror-symmetry/index.html | 29 +- docs/gallery/cart/index.html | 31 +- docs/gallery/chopping-block/index.html | 31 +- docs/gallery/collision-hull-proxy/index.html | 29 +- docs/gallery/color-attribute-wheel/index.html | 29 +- docs/gallery/compositor-glare/index.html | 29 +- docs/gallery/crate-stack/index.html | 31 +- .../cross-version-property-delete/index.html | 29 +- docs/gallery/curve-bevel-arc/index.html | 29 +- docs/gallery/custom-normals-shade/index.html | 29 +- docs/gallery/damped-track-aim/index.html | 29 +- docs/gallery/degenerate-bevel-weld/index.html | 29 +- docs/gallery/depsgraph-export/index.html | 29 +- docs/gallery/driver-wave/index.html | 29 +- docs/gallery/export-preset-axis/index.html | 29 +- docs/gallery/fence-kit/index.html | 31 +- docs/gallery/gltf-export-roundtrip/index.html | 29 +- docs/gallery/gltf-skin-roundtrip/index.html | 29 +- docs/gallery/gn-instance-grid/index.html | 29 +- docs/gallery/gn-modifier-inputs/index.html | 29 +- docs/gallery/gn-sdf-remesh/index.html | 29 +- docs/gallery/gn-socket-rename/index.html | 29 +- docs/gallery/gn-zone-iterate/index.html | 29 +- docs/gallery/gp-lineart-contour/index.html | 29 +- docs/gallery/grease-pencil-rosette/index.html | 29 +- docs/gallery/grindstone/index.html | 31 +- docs/gallery/hand-pump/index.html | 31 +- docs/gallery/hay-bale/index.html | 31 +- docs/gallery/hitching-post/index.html | 31 +- docs/gallery/image-pixels-testcard/index.html | 29 +- docs/gallery/index.html | 336 +++++++++--------- docs/gallery/iron-cauldron/index.html | 31 +- docs/gallery/light-link-studio/index.html | 29 +- docs/gallery/lightmap-uv-channel/index.html | 29 +- docs/gallery/lod-decimate-chain/index.html | 29 +- docs/gallery/market-stall/index.html | 31 +- docs/gallery/mesh-hygiene-audit/index.html | 29 +- docs/gallery/modular-kit-snap/index.html | 29 +- docs/gallery/parent-inverse-orrery/index.html | 29 +- docs/gallery/park-bench/index.html | 31 +- docs/gallery/png-exr-alpha/index.html | 29 +- docs/gallery/prop-origin-transform/index.html | 29 +- docs/gallery/shader-node-group/index.html | 29 +- docs/gallery/shape-key-blend/index.html | 29 +- docs/gallery/shipping-crate/index.html | 31 +- docs/gallery/signpost/index.html | 31 +- .../sky-texture-sun-elevation/index.html | 29 +- docs/gallery/soccer-ball-goldberg/index.html | 29 +- docs/gallery/socket-attach-points/index.html | 29 +- docs/gallery/stone-archway/index.html | 31 +- docs/gallery/stone-well/index.html | 31 +- docs/gallery/street-lantern/index.html | 31 +- docs/gallery/swatch-grid/index.html | 29 +- docs/gallery/tavern-stool/index.html | 31 +- docs/gallery/temp-override-join/index.html | 29 +- docs/gallery/terrain-scatter/index.html | 31 +- docs/gallery/text-version-stamp/index.html | 29 +- docs/gallery/treasure-chest/index.html | 31 +- docs/gallery/triangulate-tangents/index.html | 29 +- docs/gallery/turntable/index.html | 29 +- .../usd-export-evaluation-mode/index.html | 29 +- docs/gallery/uv-layer-grid/index.html | 29 +- docs/gallery/vertex-color-ao/index.html | 29 +- docs/gallery/vertex-weight-limit/index.html | 29 +- docs/gallery/vse-cut-list/index.html | 29 +- docs/gallery/vse-gamma-cross/index.html | 29 +- docs/gallery/wall-torch/index.html | 31 +- docs/gallery/watchtower/index.html | 31 +- docs/gallery/water-trough/index.html | 31 +- docs/gallery/wave-displace/index.html | 29 +- docs/gallery/wheelbarrow/index.html | 31 +- docs/gallery/wooden-barrel/index.html | 31 +- docs/gallery/wooden-bucket/index.html | 31 +- docs/gallery/wooden-ladder/index.html | 31 +- scripts/build_gallery.py | 52 ++- scripts/site/404.html.j2 | 51 +++ scripts/site/build_site.py | 49 ++- scripts/site/template.html.j2 | 15 +- showcase/gallery.json | 18 +- 86 files changed, 1860 insertions(+), 1009 deletions(-) create mode 100644 scripts/site/404.html.j2 diff --git a/.gitignore b/.gitignore index 47f3c444..2300d9b6 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ docs/site-upgrade-plan.md # Landing-page build outputs (generated at deploy time by scripts/site/build_site.py; # docs/gallery/ stays committed) docs/index.html +docs/404.html docs/fonts/ docs/assets/ diff --git a/docs/gallery/anvil/index.html b/docs/gallery/anvil/index.html index 138aaa6f..339f2475 100644 --- a/docs/gallery/anvil/index.html +++ b/docs/gallery/anvil/index.html @@ -8,6 +8,7 @@ + @@ -30,6 +31,7 @@ /* Blender-viewport system, shared with the landing page. Dark only. */ :root { + color-scheme: dark; --bg: #1a1b1e; --surface: #222327; --surface-2: #2a2b30; --bg2: #131417; --border: #3a3b40; --text: #e8e9eb; --text-dim: #9698a0; --select: #ff8c19; --ok: #6dc96d; @@ -171,6 +173,8 @@ background: var(--bg2); padding: 0; display: block; width: 100%; cursor: zoom-in; line-height: 0; } .detail-hero img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; } .zoom-hint { color: var(--text-dim); font-size: 0.78rem; margin-top: 0.4rem; } + .sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); + white-space: nowrap; } .callout { border: 1px solid color-mix(in srgb, var(--select) 45%, var(--border)); border-left: 3px solid var(--select); border-radius: var(--radius); background: color-mix(in srgb, var(--select) 7%, var(--surface)); @@ -213,10 +217,15 @@ flex-wrap: wrap; margin-bottom: 0.6rem; color: var(--text-dim); font-size: 0.85rem; } .src-meta code { font-family: var(--font-mono); font-size: 0.82rem; } - .lightbox { position: fixed; inset: 0; z-index: 50; display: none; align-items: center; - justify-content: center; background: rgba(0,0,0,0.85); padding: 2rem; cursor: zoom-out; } - .lightbox.open { display: flex; } + .lightbox { border: 0; margin: 0; padding: 2rem; width: 100%; height: 100%; max-width: none; + max-height: none; background: rgba(0,0,0,0.85); cursor: zoom-out; } + .lightbox[open] { display: flex; align-items: center; justify-content: center; } + .lightbox::backdrop { background: transparent; } .lightbox img { max-width: 100%; max-height: 100%; border-radius: var(--radius); } + .lightbox-close { position: absolute; top: 0.9rem; right: 0.9rem; background: var(--surface-2); + color: var(--text); border: 1px solid var(--border); border-radius: var(--radius); + font: 500 0.8rem var(--font-sans); padding: 0.4rem 0.75rem; cursor: pointer; } + .lightbox-close:hover { border-color: var(--select); color: var(--select); } footer { border-top: 1px solid var(--border); background: var(--surface); margin-top: 2rem; } footer .statusbar { max-width: var(--maxw); margin: 0 auto; padding: 0.55rem 1.25rem; @@ -1661,12 +1670,13 @@

Source

- +