Skip to content

Commit 68d6fde

Browse files
authored
Merge pull request #68 from TMHSDigital/fix/gallery-alt-dotted-paths
fix: gallery alts truncate on dotted API paths + version example prompt
2 parents ff5e514 + fc48228 commit 68d6fde

4 files changed

Lines changed: 209 additions & 24 deletions

File tree

‎.gitignore‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ ehthumbs.db
3333

3434
# Local planning docs (not published)
3535
docs/site-upgrade-plan.md
36-
docs/new-example-prompt.md
37-
3836
# Landing-page build outputs (generated at deploy time by scripts/site/build_site.py;
3937
# docs/gallery/ stays committed)
4038
docs/index.html

‎docs/gallery/index.html‎

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ <h1>Examples Gallery</h1>
205205
<div class="grid">
206206
<article class="card" data-tags="materials rendering">
207207
<a class="card-media" href="swatch-grid/" aria-label="swatch-grid example detail page">
208-
<img src="assets/swatch-grid-hero.webp" alt="swatch-grid — Procedural Principled materials — metal and dielectric, the emission pattern, and the cross-version set_specular shim" loading="lazy" decoding="async" />
208+
<img src="assets/swatch-grid-hero.webp" alt="swatch-grid — Procedural Principled materials — metal and dielectric, the emission pattern, and the cross-version set_specular shim." loading="lazy" decoding="async" />
209209
</a>
210210
<div class="card-body">
211211
<h2><a href="swatch-grid/">swatch-grid</a></h2>
@@ -216,7 +216,7 @@ <h2><a href="swatch-grid/">swatch-grid</a></h2>
216216
</article>
217217
<article class="card" data-tags="animation">
218218
<a class="card-media" href="turntable/" aria-label="turntable example detail page">
219-
<img src="assets/turntable-hero.webp" alt="turntable — A slotted-actions Z-rotation turntable keyed through the cross-version channelbag path (get_channelbag_for_slot)" loading="lazy" decoding="async" />
219+
<img src="assets/turntable-hero.webp" alt="turntable — A slotted-actions Z-rotation turntable keyed through the cross-version channelbag path (get_channelbag_for_slot)." loading="lazy" decoding="async" />
220220
</a>
221221
<div class="card-body">
222222
<h2><a href="turntable/">turntable</a></h2>
@@ -227,7 +227,7 @@ <h2><a href="turntable/">turntable</a></h2>
227227
</article>
228228
<article class="card" data-tags="geometry-nodes materials">
229229
<a class="card-media" href="gn-sdf-remesh/" aria-label="gn-sdf-remesh example detail page">
230-
<img src="assets/gn-sdf-remesh-hero.webp" alt="gn-sdf-remesh — A Geometry Nodes SDF remesh (MeshToSDFGrid → GridToMesh at the SDF zero-level), with a Set Material node carrying the material through the remesh" loading="lazy" decoding="async" />
230+
<img src="assets/gn-sdf-remesh-hero.webp" alt="gn-sdf-remesh — A Geometry Nodes SDF remesh (MeshToSDFGrid → GridToMesh at the SDF zero-level), with a Set Material node carrying the material through the remesh." loading="lazy" decoding="async" />
231231
</a>
232232
<div class="card-body">
233233
<h2><a href="gn-sdf-remesh/">gn-sdf-remesh</a></h2>
@@ -238,7 +238,7 @@ <h2><a href="gn-sdf-remesh/">gn-sdf-remesh</a></h2>
238238
</article>
239239
<article class="card" data-tags="depsgraph export">
240240
<a class="card-media" href="depsgraph-export/" aria-label="depsgraph-export example detail page">
241-
<img src="assets/depsgraph-export-hero.webp" alt="depsgraph-export — The depsgraph lifetime contract — evaluated_get()" loading="lazy" decoding="async" />
241+
<img src="assets/depsgraph-export-hero.webp" alt="depsgraph-export — The depsgraph lifetime contract — evaluated_get().to_mesh() paired with to_mesh_clear() — measured against an OBJ export of the same object." loading="lazy" decoding="async" />
242242
</a>
243243
<div class="card-body">
244244
<h2><a href="depsgraph-export/">depsgraph-export</a></h2>
@@ -249,7 +249,7 @@ <h2><a href="depsgraph-export/">depsgraph-export</a></h2>
249249
</article>
250250
<article class="card" data-tags="mesh performance">
251251
<a class="card-media" href="wave-displace/" aria-label="wave-displace example detail page">
252-
<img src="assets/wave-displace-hero.webp" alt="wave-displace — Bulk vertex IO at real scale — 9,409 vertices displaced into a standing wave with one foreach_get and one foreach_set, no per-vertex access" loading="lazy" decoding="async" />
252+
<img src="assets/wave-displace-hero.webp" alt="wave-displace — Bulk vertex IO at real scale — 9,409 vertices displaced into a standing wave with one foreach_get and one foreach_set, no per-vertex access." loading="lazy" decoding="async" />
253253
</a>
254254
<div class="card-body">
255255
<h2><a href="wave-displace/">wave-displace</a></h2>
@@ -260,7 +260,7 @@ <h2><a href="wave-displace/">wave-displace</a></h2>
260260
</article>
261261
<article class="card" data-tags="drivers animation">
262262
<a class="card-media" href="driver-wave/" aria-label="driver-wave example detail page">
263-
<img src="assets/driver-wave-hero.webp" alt="driver-wave — A driver_namespace function driving sixteen column heights through SCRIPTED drivers — the sine skyline is entirely driver-evaluated" loading="lazy" decoding="async" />
263+
<img src="assets/driver-wave-hero.webp" alt="driver-wave — A driver_namespace function driving sixteen column heights through SCRIPTED drivers — the sine skyline is entirely driver-evaluated." loading="lazy" decoding="async" />
264264
</a>
265265
<div class="card-body">
266266
<h2><a href="driver-wave/">driver-wave</a></h2>
@@ -271,7 +271,7 @@ <h2><a href="driver-wave/">driver-wave</a></h2>
271271
</article>
272272
<article class="card" data-tags="mesh bmesh">
273273
<a class="card-media" href="bmesh-gear/" aria-label="bmesh-gear example detail page">
274-
<img src="assets/bmesh-gear-hero.webp" alt="bmesh-gear — A 14-tooth gear built entirely with bmesh — profile ring, face, extrude — with bm" loading="lazy" decoding="async" />
274+
<img src="assets/bmesh-gear-hero.webp" alt="bmesh-gear — A 14-tooth gear built entirely with bmesh — profile ring, face, extrude — with bm.free() in a try/finally, exactly as the ownership contract demands." loading="lazy" decoding="async" />
275275
</a>
276276
<div class="card-body">
277277
<h2><a href="bmesh-gear/">bmesh-gear</a></h2>
@@ -282,7 +282,7 @@ <h2><a href="bmesh-gear/">bmesh-gear</a></h2>
282282
</article>
283283
<article class="card" data-tags="materials node-groups">
284284
<a class="card-media" href="shader-node-group/" aria-label="shader-node-group example detail page">
285-
<img src="assets/shader-node-group-hero.webp" alt="shader-node-group — One reusable shader group declared via tree" loading="lazy" decoding="async" />
285+
<img src="assets/shader-node-group-hero.webp" alt="shader-node-group — One reusable shader group declared via tree.interface.new_socket, instanced in two materials with different Tint values — two spheres, one group, two colors." loading="lazy" decoding="async" />
286286
</a>
287287
<div class="card-body">
288288
<h2><a href="shader-node-group/">shader-node-group</a></h2>
@@ -293,7 +293,7 @@ <h2><a href="shader-node-group/">shader-node-group</a></h2>
293293
</article>
294294
<article class="card" data-tags="operators context">
295295
<a class="card-media" href="temp-override-join/" aria-label="temp-override-join example detail page">
296-
<img src="assets/temp-override-join-hero.webp" alt="temp-override-join — Join three unit cubes into a staircase under bpy" loading="lazy" decoding="async" />
296+
<img src="assets/temp-override-join-hero.webp" alt="temp-override-join — Join three unit cubes into a staircase under bpy.context.temp_override — the supported replacement for the removed context.copy() dict-pass form." loading="lazy" decoding="async" />
297297
</a>
298298
<div class="card-body">
299299
<h2><a href="temp-override-join/">temp-override-join</a></h2>
@@ -304,7 +304,7 @@ <h2><a href="temp-override-join/">temp-override-join</a></h2>
304304
</article>
305305
<article class="card" data-tags="geometry-nodes instancing">
306306
<a class="card-media" href="gn-instance-grid/" aria-label="gn-instance-grid example detail page">
307-
<img src="assets/gn-instance-grid-hero.webp" alt="gn-instance-grid — A generative Geometry Nodes tree — Mesh Grid → Instance on Points → Realize Instances → Set Shade Smooth — attached as a NODES modifier with no Group Input geometry" loading="lazy" decoding="async" />
307+
<img src="assets/gn-instance-grid-hero.webp" alt="gn-instance-grid — A generative Geometry Nodes tree — Mesh Grid → Instance on Points → Realize Instances → Set Shade Smooth — attached as a NODES modifier with no Group Input…" loading="lazy" decoding="async" />
308308
</a>
309309
<div class="card-body">
310310
<h2><a href="gn-instance-grid/">gn-instance-grid</a></h2>
@@ -315,7 +315,7 @@ <h2><a href="gn-instance-grid/">gn-instance-grid</a></h2>
315315
</article>
316316
<article class="card" data-tags="mesh shape-keys">
317317
<a class="card-media" href="shape-key-blend/" aria-label="shape-key-blend example detail page">
318-
<img src="assets/shape-key-blend-hero.webp" alt="shape-key-blend — A relative Tall shape key that lifts and flares the top face — authored via shape_key_add / key_blocks / " loading="lazy" decoding="async" />
318+
<img src="assets/shape-key-blend-hero.webp" alt="shape-key-blend — A relative Tall shape key that lifts and flares the top face — authored via shape_key_add / key_blocks / .value — read back from the depsgraph-evaluated mesh." loading="lazy" decoding="async" />
319319
</a>
320320
<div class="card-body">
321321
<h2><a href="shape-key-blend/">shape-key-blend</a></h2>
@@ -326,7 +326,7 @@ <h2><a href="shape-key-blend/">shape-key-blend</a></h2>
326326
</article>
327327
<article class="card" data-tags="curves bevel">
328328
<a class="card-media" href="curve-bevel-arc/" aria-label="curve-bevel-arc example detail page">
329-
<img src="assets/curve-bevel-arc-hero.webp" alt="curve-bevel-arc — A beveled Bezier semicircle authored on bpy" loading="lazy" decoding="async" />
329+
<img src="assets/curve-bevel-arc-hero.webp" alt="curve-bevel-arc — A beveled Bezier semicircle authored on bpy.types.Curve — splines.new(&#x27;BEZIER&#x27;), bezier_points, bevel_depth, use_fill_caps — so the curve renders as a solid…" loading="lazy" decoding="async" />
330330
</a>
331331
<div class="card-body">
332332
<h2><a href="curve-bevel-arc/">curve-bevel-arc</a></h2>
@@ -337,7 +337,7 @@ <h2><a href="curve-bevel-arc/">curve-bevel-arc</a></h2>
337337
</article>
338338
<article class="card" data-tags="compositor rendering">
339339
<a class="card-media" href="compositor-glare/" aria-label="compositor-glare example detail page">
340-
<img src="assets/compositor-glare-hero.webp" alt="compositor-glare — Bloom where it actually lives — a compositor Glare (Fog Glow) node fed by Render Layers, wired via scene" loading="lazy" decoding="async" />
340+
<img src="assets/compositor-glare-hero.webp" alt="compositor-glare — Bloom where it actually lives — a compositor Glare (Fog Glow) node fed by Render Layers, wired via scene.compositing_node_group on 5.x and scene.node_tree on…" loading="lazy" decoding="async" />
341341
</a>
342342
<div class="card-body">
343343
<h2><a href="compositor-glare/">compositor-glare</a></h2>
@@ -348,7 +348,7 @@ <h2><a href="compositor-glare/">compositor-glare</a></h2>
348348
</article>
349349
<article class="card" data-tags="constraints animation">
350350
<a class="card-media" href="damped-track-aim/" aria-label="damped-track-aim example detail page">
351-
<img src="assets/damped-track-aim-hero.webp" alt="damped-track-aim — Aim constraints via the data API — Object" loading="lazy" decoding="async" />
351+
<img src="assets/damped-track-aim-hero.webp" alt="damped-track-aim — Aim constraints via the data API — Object.constraints.new(&#x27;DAMPED_TRACK&#x27;) with target and TRACK_Z, not bpy.ops.object.constraint_add in a headless loop." loading="lazy" decoding="async" />
352352
</a>
353353
<div class="card-body">
354354
<h2><a href="damped-track-aim/">damped-track-aim</a></h2>
@@ -359,7 +359,7 @@ <h2><a href="damped-track-aim/">damped-track-aim</a></h2>
359359
</article>
360360
<article class="card" data-tags="mesh materials attributes">
361361
<a class="card-media" href="color-attribute-wheel/" aria-label="color-attribute-wheel example detail page">
362-
<img src="assets/color-attribute-wheel-hero.webp" alt="color-attribute-wheel — The modern color-attributes API — mesh" loading="lazy" decoding="async" />
362+
<img src="assets/color-attribute-wheel-hero.webp" alt="color-attribute-wheel — The modern color-attributes API — mesh.color_attributes.new() on the CORNER domain, filled by expanding per-vertex HSV across face corners with…" loading="lazy" decoding="async" />
363363
</a>
364364
<div class="card-body">
365365
<h2><a href="color-attribute-wheel/">color-attribute-wheel</a></h2>
@@ -370,7 +370,7 @@ <h2><a href="color-attribute-wheel/">color-attribute-wheel</a></h2>
370370
</article>
371371
<article class="card" data-tags="objects transforms">
372372
<a class="card-media" href="parent-inverse-orrery/" aria-label="parent-inverse-orrery example detail page">
373-
<img src="assets/parent-inverse-orrery-hero.webp" alt="parent-inverse-orrery — Data-API parenting for a brass orrery — the keep-world idiom (child" loading="lazy" decoding="async" />
373+
<img src="assets/parent-inverse-orrery-hero.webp" alt="parent-inverse-orrery — Data-API parenting for a brass orrery — the keep-world idiom (child.parent = pivot; child.matrix_parent_inverse = pivot.matrix_world.inverted()) carrying arms…" loading="lazy" decoding="async" />
374374
</a>
375375
<div class="card-body">
376376
<h2><a href="parent-inverse-orrery/">parent-inverse-orrery</a></h2>
@@ -381,7 +381,7 @@ <h2><a href="parent-inverse-orrery/">parent-inverse-orrery</a></h2>
381381
</article>
382382
<article class="card" data-tags="grease-pencil attributes">
383383
<a class="card-media" href="grease-pencil-rosette/" aria-label="grease-pencil-rosette example detail page">
384-
<img src="assets/grease-pencil-rosette-hero.webp" alt="grease-pencil-rosette — Grease Pencil v3&#x27;s attribute-based API — layer → frames" loading="lazy" decoding="async" />
384+
<img src="assets/grease-pencil-rosette-hero.webp" alt="grease-pencil-rosette — Grease Pencil v3&#x27;s attribute-based API — layer → frames.new(1).drawing → add_strokes → per-point position/radius/opacity/vertex_color — drawing five nested…" loading="lazy" decoding="async" />
385385
</a>
386386
<div class="card-body">
387387
<h2><a href="grease-pencil-rosette/">grease-pencil-rosette</a></h2>
@@ -392,7 +392,7 @@ <h2><a href="grease-pencil-rosette/">grease-pencil-rosette</a></h2>
392392
</article>
393393
<article class="card" data-tags="armature depsgraph">
394394
<a class="card-media" href="armature-bend/" aria-label="armature-bend example detail page">
395-
<img src="assets/armature-bend-hero.webp" alt="armature-bend — Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation — bending a tapered tube through rest, half, and full curl" loading="lazy" decoding="async" />
395+
<img src="assets/armature-bend-hero.webp" alt="armature-bend — Rigging end to end in the data API — edit_bones chain construction, name-bound vertex groups with smoothstep blend zones, posing, and depsgraph evaluation…" loading="lazy" decoding="async" />
396396
</a>
397397
<div class="card-body">
398398
<h2><a href="armature-bend/">armature-bend</a></h2>
@@ -403,7 +403,7 @@ <h2><a href="armature-bend/">armature-bend</a></h2>
403403
</article>
404404
<article class="card" data-tags="curves depsgraph rendering">
405405
<a class="card-media" href="text-version-stamp/" aria-label="text-version-stamp example detail page">
406-
<img src="assets/text-version-stamp-hero.webp" alt="text-version-stamp — The TextCurve data API — curves" loading="lazy" decoding="async" />
406+
<img src="assets/text-version-stamp-hero.webp" alt="text-version-stamp — The TextCurve data API — curves.new(type=&#x27;FONT&#x27;), live body text from bpy.app.version_string, extrude and bevel_depth solids, and evaluated-mesh conversion…" loading="lazy" decoding="async" />
407407
</a>
408408
<div class="card-body">
409409
<h2><a href="text-version-stamp/">text-version-stamp</a></h2>
@@ -414,7 +414,7 @@ <h2><a href="text-version-stamp/">text-version-stamp</a></h2>
414414
</article>
415415
<article class="card" data-tags="images performance rendering">
416416
<a class="card-media" href="image-pixels-testcard/" aria-label="image-pixels-testcard example detail page">
417-
<img src="assets/image-pixels-testcard-hero.webp" alt="image-pixels-testcard — The Image pixel-buffer contract — a procedural broadcast test card written into bpy" loading="lazy" decoding="async" />
417+
<img src="assets/image-pixels-testcard-hero.webp" alt="image-pixels-testcard — The Image pixel-buffer contract — a procedural broadcast test card written into bpy.data.images.new() with one pixels.foreach_set (589,824 floats), byte vs…" loading="lazy" decoding="async" />
418418
</a>
419419
<div class="card-body">
420420
<h2><a href="image-pixels-testcard/">image-pixels-testcard</a></h2>
@@ -425,7 +425,7 @@ <h2><a href="image-pixels-testcard/">image-pixels-testcard</a></h2>
425425
</article>
426426
<article class="card" data-tags="mesh bmesh uv materials">
427427
<a class="card-media" href="uv-layer-grid/" aria-label="uv-layer-grid example detail page">
428-
<img src="assets/uv-layer-grid-hero.webp" alt="uv-layer-grid — The UV-layer authoring hazard — bmesh" loading="lazy" decoding="async" />
428+
<img src="assets/uv-layer-grid-hero.webp" alt="uv-layer-grid — The UV-layer authoring hazard — bmesh.ops.create_grid(..., calc_uvs=True) is a silent no-op unless a UV layer already exists; without one an Image Texture…" loading="lazy" decoding="async" />
429429
</a>
430430
<div class="card-body">
431431
<h2><a href="uv-layer-grid/">uv-layer-grid</a></h2>

0 commit comments

Comments
 (0)