feat: add text-version-stamp example (TextCurve solids + self-labeling renders)#59
Merged
Merged
Conversation
…g renders)
The gallery covered mesh, curves-with-bevel, GPv3, and armatures but nothing
exercised the TextCurve data API, which AI-generated code routinely gets wrong
(parsing version_string as bare semver, expecting to_mesh results to outlive
to_mesh_clear). The stamp's body is the live bpy.app.version_string, so every
render self-documents which Blender produced it and CI artifacts become
self-labeling. The check asserts the closed-form solids contract (evaluated
z-extent = 2 x (extrude + bevel_depth), bevel widening the outline by
2 x bevel_depth), that flat text is filled but planar, that body edits
regenerate geometry, that version_string starts with the dotted version tuple
("4.5.11 LTS" is not bare semver), and that a Mesh reference dies at
to_mesh_clear().
Co-Authored-By: Claude Fable 5 <noreply@anthropic.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.
Summary
Adds
examples/text-version-stamp/— a beveled 3D stamp of the running Blender version. TheTextCurvebody is the livebpy.app.version_string, so every render self-documents which Blender produced it; CI artifacts made this way are self-labeling. Fills the top-priority TextCurve gap from the gallery coverage review (ROADMAP candidate pool).API contract witnessed
bpy.data.curves.new(type='FONT')returns aTextCurvethat is aCurvesubclass; the object istype='FONT'and the built-in font ("Bfont Regular") is always loaded, even headless.bodyis plain assignable text; editing it regenerates geometry (appending characters strictly widens the evaluated mesh).to_mesh_clear()the returnedMeshreference is dead — access raisesReferenceError. The check proves the reference dies.4.5 / 5.1 divergence:
version_stringis"5.1.2"on 5.x but"4.5.11 LTS"on 4.5 — the LTS suffix is part of the string, so it is not bare semver. The check asserts the contract that holds on both (version_string.startswith("%d.%d.%d" % bpy.app.version)); the README tells readers to branch on the tuple, not parse the string.Visual notes
Brass beveled numerals scaled to a constant width (frame holds for any version-string length), small steel
B L E N D E Rcaption (also a TextCurve), teal emissive underline, dark-studio floor/wall with warm key + cool fill + warm rim — matching the fleet's dark-studio recipe. Inspected at full 1280×720 and at thumbnail size; numerals read clearly in both.Test plan
Proven by live run (local):
solid z-extent=0.1600 = 2*(0.06+0.02)).python scripts/build_gallery.pyregenerateddocs/gallery/(19 detail pages); gallery.json and plugin.json re-parsed as valid JSON.Established by inspection only (verified live by CI on this PR):
blender-smoke.ymlstep underxvfb-runon CI's own 4.5/5.1 builds.validate-counts/validate-manifestagainst the 18→19 bumps in README/AGENTS/CLAUDE and the manifest entry.🤖 Generated with Claude Code