You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 2e5c91f
Browse filesBrowse the repository at this point in the historyBrowse files
fix: cross-version-property-delete presentation, tags hang from the stand
Render path only: the tags hang from the bar on rods instead of floating in
front of it. Contract and exit codes unchanged on 4.5.11, 5.1.2 and 5.2.1.
Also regenerates the gallery index for all four items.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -744,7 +744,7 @@ sources are gone, and local Z spans all three steps.
744
744
</tr>
745
745
<tr>
746
746
<tdwidth="46%"valign="middle">
747
-
<ahref="examples/cross-version-property-delete/"><imgsrc="examples/cross-version-property-delete/preview.webp"alt="Cross-version property delete: two brass specimen tags on a dark studio stand — left tag with a cyan emissive enamel inlay (ID property kept), right tag with an empty grey pocket (ID property deleted)" /></a>
747
+
<ahref="examples/cross-version-property-delete/"><imgsrc="examples/cross-version-property-delete/preview.webp"alt="Cross-version property delete: two brass specimen tags hanging on rods from a dark studio stand — left tag with a cyan emissive enamel inlay (ID property kept), right tag with an empty grey pocket (ID property deleted)" /></a>
<metaproperty="og:image:alt" content="Two framed display panels on a stand: the left shows a lit cyan screen, the right a blank grey one." />
19
+
<metaproperty="og:image:alt" content="Two brass tags hanging from a stand on steel rods: the left shows a lit cyan inlay, the right a blank grey pocket." />
<metaname="twitter:description" content="Custom ID properties are removed with del, not property_unset. The IDs are built through bpy.data.objects.new so the check does not depend on active_object." />
<metaname="twitter:image:alt" content="Two framed display panels on a stand: the left shows a lit cyan screen, the right a blank grey one." />
25
+
<metaname="twitter:image:alt" content="Two brass tags hanging from a stand on steel rods: the left shows a lit cyan inlay, the right a blank grey pocket." />
26
26
<style>
27
27
/* fonts are deployed by the landing build (docs/fonts/) */
<p>Custom ID properties are removed with del, not property_unset. The IDs are built through bpy.data.objects.new so the check does not depend on active_object.</p>
269
269
</header>
270
270
<mainid="main">
271
-
<buttonclass="detail-hero" id="heroZoom" type="button" aria-label="View full size: Two framed display panels on a stand: the left shows a lit cyan screen, the right a blank grey one.">
272
-
<imgsrc="../assets/cross-version-property-delete-hero.webp" alt="Two framed display panels on a stand: the left shows a lit cyan screen, the right a blank grey one." width="1280" height="720" />
271
+
<buttonclass="detail-hero" id="heroZoom" type="button" aria-label="View full size: Two brass tags hanging from a stand on steel rods: the left shows a lit cyan inlay, the right a blank grey pocket.">
272
+
<imgsrc="../assets/cross-version-property-delete-hero.webp" alt="Two brass tags hanging from a stand on steel rods: the left shows a lit cyan inlay, the right a blank grey pocket." width="1280" height="720" />
273
273
</button>
274
274
<pclass="zoom-hint">Rendered headless by the example itself — click to zoom.</p>
275
275
<divclass="callout"><spanclass="tag">witnesses</span> Factory-empty has no active_object; property_unset raises TypeError and leaves the key; del removes it (clear_has=False). --skip-delete and --unset-instead exit 7.</div>
<p><strong>What it witnesses:</strong><code>property_unset</code> is a TypeError on a custom ID key and does <strong>not</strong> remove it. <code>del id_block[key]</code> does. After factory-empty, there is no <code>active_object</code>.</p>
284
284
<p><strong>What failure each check would catch:</strong></p>
285
285
<ul><li>exit 2 — someone set an active object; the snippet <code>__main__</code> would have been the only path</li><li>exit 3 — the ID property never landed</li><li>exit 4 — <code>property_unset</code> removed the key or failed to raise</li><li>exit 7 — <code>del</code> did not run (<code>--skip-delete</code> / <code>--unset-instead</code> falsify this: measured <code>clear_has=True</code>)</li></ul>
286
+
<h2>Staging</h2>
287
+
<p>The two tags now hang from the stand's bar on steel rods. The bar used to run 0.17 m behind the plates with nothing joining them, and the "rings" were solid discs, so the plates hung on air. The bar spans both plates, the post rises to it, and the base is as wide as what it carries. Render path only: the check reads ID properties, never geometry.</p>
<imgsrc="../assets/cross-version-property-delete-hero.webp" alt="Two framed display panels on a stand: the left shows a lit cyan screen, the right a blank grey one." />
676
+
<imgsrc="../assets/cross-version-property-delete-hero.webp" alt="Two brass tags hanging from a stand on steel rods: the left shows a lit cyan inlay, the right a blank grey pocket." />
<imgsrc="assets/text-version-stamp-hero.webp" alt="The word BLENDER above the Blender version number in large gold 3D characters." loading="lazy" decoding="async" />
555
+
<imgsrc="assets/text-version-stamp-hero.webp" alt="The Blender version number in large gold 3D characters standing on a dark plinth, the word BLENDER set into its face." loading="lazy" decoding="async" />
<imgsrc="assets/cross-version-property-delete-hero.webp" alt="Two framed display panels on a stand: the left shows a lit cyan screen, the right a blank grey one." loading="lazy" decoding="async" />
852
+
<imgsrc="assets/cross-version-property-delete-hero.webp" alt="Two brass tags hanging from a stand on steel rods: the left shows a lit cyan inlay, the right a blank grey pocket." loading="lazy" decoding="async" />
<imgsrc="assets/anvil-hero.webp" alt="A black iron anvil mounted on a hooped timber stump." loading="lazy" decoding="async" />
1050
+
<imgsrc="assets/anvil-hero.webp" alt="A dark forged-steel anvil with a flared, squared waist, mounted on a hooped timber stump." loading="lazy" decoding="async" />
1051
1051
</a>
1052
1052
<divclass="card-body">
1053
1053
<h2><ahref="anvil/">anvil</a></h2>
1054
1054
<pclass="teaches">A procedural blacksmith anvil on a timber stump through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets rather than an API contract.</p>
1055
-
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 2988 tris, two materials with 1040 wood and 822 metal faces, UVs in 0..1 with zero AABB overlap, outer AABB 0.621×0.414×0.489 m, LOD ratios in band, convex collider 134 tris, hygiene 0, 16 grounded staves, hoop bite 0.003 m, foot-on-head gap 0.003 m, non-empty glTF. --skip-decimate exits 9; --stray-vert 15; --lift-z/--short-staves 16; --float-anvil 17; --round-band 18.</p>
1055
+
<pclass="witnesses"><spanclass="tag">witnesses</span> Recomputed: 3052 tris, two materials with 1040 wood and 854 metal faces, UVs in 0..1 with zero AABB overlap, outer AABB 0.621×0.414×0.489 m, LOD ratios in band, convex collider 134 tris, hygiene 0, 16 grounded staves, hoop bite 0.003 m, foot-on-head gap 0.003 m, waist corner reach 0.8572, non-empty glTF. --skip-decimate exits 9; --stray-vert 15; --lift-z/--short-staves 16; --float-anvil 17; --round-band 18; --round-waist 19.</p>
<imgsrc="assets/signpost-hero.webp" alt="A wooden signpost with two pointed finger boards and dark iron bands on the post." loading="lazy" decoding="async" />
1105
+
<imgsrc="assets/signpost-hero.webp" alt="A wooden signpost with two pointed finger boards in worn cream paint and rusted iron bands on the post." loading="lazy" decoding="async" />
Copy file name to clipboardExpand all lines: examples/gallery.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -632,7 +632,7 @@
632
632
"name": "cross-version-property-delete",
633
633
"dir": "examples/cross-version-property-delete",
634
634
"teaches": "Custom ID properties are removed with del, not property_unset. The IDs are built through bpy.data.objects.new so the check does not depend on active_object.",
635
-
"alt": "Two framed display panels on a stand: the left shows a lit cyan screen, the right a blank grey one.",
635
+
"alt": "Two brass tags hanging from a stand on steel rods: the left shows a lit cyan inlay, the right a blank grey pocket.",
636
636
"witnessesFix": "Factory-empty has no active_object; property_unset raises TypeError and leaves the key; del removes it (clear_has=False). --skip-delete and --unset-instead exit 7.",
0 commit comments