Skip to content

Commit 3f715e2

Browse files
TMHSDigitalclaude
andcommitted
feat(showcase): add stand-mixer (household)
The fourth piece in the household category: a retro tilt-head kitchen stand mixer, generic and unbranded, on a honed limestone countertop section 0.47 x 0.57 m. A cast slate-blue enamel body lofted from superellipse sections: a pebble-plan base foot on four rubber feet, a neck that leans back as it rises, and a streamlined head that closes to a flat nose. A tilt hinge at the back: a chrome pin through two neck knuckles and a head knuckle, with the neck's top following the head's underside 1.5 mm below it, so the tilt seam reads. A chrome trim band wrapped on the head's own sections, a blank badge and a speed escutcheon in the head's tangent plane, a speed lever, and a tilt-lock lever on the neck. An attachment hub with a domed cap and a knurled thumb screw. A planetary housing and socket carry a white-coated flat beater, its frame the bowl's inner profile offset by the clearance, into a 4.5 L brushed stainless bowl with a rolled rim and a strap handle, clamped under three bayonet lugs on a chrome plate. A cord runs through a strain relief to a plug. Props: a balloon whisk, a measuring cup, and two brown eggs in a glazed terracotta dish. Eight materials: enamel, chrome, stainless, stone, rubber, ceramic, egg, beater coating. Blender: E:\Blender-Developer-Tools\.scratch\5.2\blender-5.2.1-windows-x64\blender.exe reports "Blender 5.2.1 LTS". 4.5 LTS and 5.1 are left to CI (not run locally). Recomputed budgets (5.2.1): - 29620 tris (band 29000-30300); LOD1 0.5000, LOD2 0.2200 - 8 materials: enamel 4328, chrome 2626, stainless 5560, stone 91, rubber 1174, ceramic 812, egg 760, beater 562 faces - UVs in 0..1, overlap 0; AABB 0.4700 x 0.5700 x 0.3890 m, zmin 0; collider 2329 tris (ceiling 2450); bake FINISHED; glTF 2337532 B - hygiene all 0, zero coplanar cross-shell pairs. Drafts caught a plate rim vertex welding to the base, a badge panel on the band's offset plane, fan chords of conforming plates, a facet-down egg, and bunched feet sharing facet planes. All were fixed by staggering, never by bands. - feet: 4, sunk 0.00025-0.00070 m into the counter (band 0.0001-0.0008) - hinge: pin 0.000000 m off all 2 + 1 knuckle axes (cap 0.0003), spans all, tilt 0.0000 deg (cap 0.5) - bowl: bite 0.00050 m (band 0.0002-0.0010), 0.000000 m off the plate's axis (cap 0.0003), 3/3 lugs engaged, handle on - size: height 0.35899 m (0.360 +- 0.006), brim capacity 4.5465 L (4.5 +- 0.35, ray slices from the bowl's own axis) - beater: 0.000000 m off the socket axis (cap 0.0003), clears the wall by 0.00245 m and the floor by 0.00250 m (band 0.0012-0.0040). A spline frame bulged to 1.65 mm and was replaced by straight runs. - stance: mass centre 0.0658 m inside the feet's polygon (floor 0.040), 13.94 kg - one connected assembly, 52 shells - two default runs print identical measurements Falsifiers (flag -> measured -> exit): - --skip-decimate -> LOD1 ratio 1.0000 -> 9 - --stray-vert -> loose_v 1 -> 15 - --lift-z -> zmin 0.05000 -> 16 - --float-foot -> one foot seat -0.00230 m -> 16 - --offset-hinge -> pin 0.002000 m off the knuckles -> 17 - --offset-bowl -> bowl 0.001000 m off the plate (beater still 1.72 mm clear) -> 18 - --shallow-bowl -> capacity 3.4959 L -> 19 - --offset-beater -> 0.000800 m off the socket (still 1.87 mm clear) -> 20 - --long-beater -> wall 0.00050, floor 0.00050 m -> 21 - --bunch-feet -> stance margin -0.0785 m -> 22 - --loose-cap -> 2 components -> 23 Tris (29620) and AABB identical under every falsifier. Every budget checked before each target stayed green. --shallow-bowl first changed the topology; the bowl now has fixed wall stations, and the beater follows the full-height wall's r(z). Render: render_hero.py wrote the hero and preview. Framing fill x 0.669, y 0.872, margins >= 0.061. Asset-quality floors pass (edge90 0.023); a violation remaps to 24. Asset sheet (docs/gallery/asset-sheets/stand-mixer.webp): not the least-designed object in the lineup; the hydrant and the wheelbarrow are plainer. Isolated, it reads at once as a stand mixer, with the band, badge, levers, hub cap, bowl and lugs visible, and the props read as whisk, cup and eggs. Weak points: the stainless bowl reads dark grey on the dark sweep, the beater is hidden inside the bowl as on a real mixer, and the panel camera crops the counter's near corner. Contact sheet: luma 0.2409 against calibration 0.2369-0.2428 (in band; first drafts 0.1752, then 0.2524). Stage 0.2065 against 0.1919-0.2517 (in band). Saturation 0.2069 against 0.1525-0.2367 (in band). Wedge warmth -0.0538 against -0.1440/+0.1052/+0.0921 (in range); the wedge is aimed at the wall along the camera's diagonal view. Thumbnail legibility good. Also updated: README, CLAUDE.md and ROADMAP counts and entries (stand mixer added to the Household list as shipped), the asset_sheet.py SELECT row, catalog.json, plugin.json and the regenerated gallery. build_gallery, check_site_links (106 pages, 0 failures), check_falsifier_targets, check_exit_code_readme, check_engine_id, check_gallery_images and the count check all pass. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent fccf2ce commit 3f715e2

65 files changed

Lines changed: 7456 additions & 110 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.cursor-plugin/plugin.json‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@
188188
"showcase/floor-fan",
189189
"showcase/motor-scooter",
190190
"showcase/bowling-pins",
191-
"showcase/pond-edge"
191+
"showcase/pond-edge",
192+
"showcase/stand-mixer"
192193
]
193194
}

‎CLAUDE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ rules/<rule-name>.mdc - Anti-pattern rules, 9 total
2222
templates/<template-name>/ - Starter projects, 3 total
2323
snippets/<snippet-name>.py - Standalone code patterns, 27 total
2424
examples/<name>/ - Runnable smoke-gated examples, 60 total (+ gallery.json)
25-
showcase/<name>/ - Budget-conformance props, 50 pieces, each with a gallery `category` (sibling of examples/; see showcase/README.md § Categories)
25+
showcase/<name>/ - Budget-conformance props, 51 pieces, each with a gallery `category` (sibling of examples/; see showcase/README.md § Categories)
2626
scripts/build_gallery.py - Regenerates docs/gallery/ from examples/gallery.json + showcase/gallery.json
2727
scripts/site/ - Vendored landing-page build (Jinja2); tokens.css is the shared palette
2828
tests/check_site_links.py - Internal link/anchor/alt gate over the built site (docs/)

‎README.md‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</p>
1919

2020
<p align="center">
21-
<strong>16 skills</strong> &nbsp;&bull;&nbsp; <strong>9 rules</strong> &nbsp;&bull;&nbsp; <strong>3 templates</strong> &nbsp;&bull;&nbsp; <strong>27 snippets</strong> &nbsp;&bull;&nbsp; <strong>60 examples</strong> &nbsp;&bull;&nbsp; <strong>50 showcase pieces</strong>
21+
<strong>16 skills</strong> &nbsp;&bull;&nbsp; <strong>9 rules</strong> &nbsp;&bull;&nbsp; <strong>3 templates</strong> &nbsp;&bull;&nbsp; <strong>27 snippets</strong> &nbsp;&bull;&nbsp; <strong>60 examples</strong> &nbsp;&bull;&nbsp; <strong>51 showcase pieces</strong>
2222
</p>
2323

2424
<p align="center">
@@ -37,7 +37,7 @@
3737

3838
## Overview
3939

40-
This repository ships **16 skills, 9 rules, 3 templates, 27 snippets, 60 examples, and 50 showcase pieces** for Blender Python development targeting Blender 5.2 LTS (current stable) with Blender 4.5 LTS fallback support. Blender 5.1 is prior stable.
40+
This repository ships **16 skills, 9 rules, 3 templates, 27 snippets, 60 examples, and 51 showcase pieces** for Blender Python development targeting Blender 5.2 LTS (current stable) with Blender 4.5 LTS fallback support. Blender 5.1 is prior stable.
4141

4242
The content is consumed by AI coding agents reading these files directly from a checkout — **there is no MCP server in this repository, and none is required**. Cursor applies `rules/*.mdc` automatically wherever their scope globs match and takes skills by name in chat; Claude Code reads `skills/` and `rules/` from the project workspace, or from this repo kept as a referenced checkout. Any agent that can read files in a workspace can use it the same way. There is no build step for the content — edit the Markdown and Python files directly.
4343

@@ -106,7 +106,7 @@ per-script exit-code model, are in
106106
Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](showcase/README.md).
107107

108108
<details>
109-
<summary><strong>50 showcase pieces</strong> — click to expand the preview grid</summary>
109+
<summary><strong>51 showcase pieces</strong> — click to expand the preview grid</summary>
110110

111111
<p align="center">
112112
<a href="showcase/shipping-crate/"><img src="showcase/shipping-crate/preview.webp" width="24%" alt="Shipping crate: a wooden slat crate stencilled PORT ROYAL and NO 17, with iron corner brackets and an end handle, on a dark studio floor, warm wedge on the back wall" /></a>
@@ -159,6 +159,7 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
159159
<a href="showcase/motor-scooter/"><img src="showcase/motor-scooter/preview.webp" width="24%" alt="Motor scooter: a pastel sea-green 1960s step-through scooter with a two-tone cream and oxblood dual saddle, louvred side cowls, a curved chrome-trimmed leg shield, split-rim wheels and a black silencer, on its centre stand on a dark studio floor" /></a>
160160
<a href="showcase/bowling-pins/"><img src="showcase/bowling-pins/preview.webp" width="24%" alt="Bowling pins: ten white pins with red neck stripes racked on a dark pin deck at the end of a glossy maple lane with arrows and dots, a marbled violet ball on the approach, between gutters and kickbacks, on a dark studio floor" /></a>
161161
<a href="showcase/pond-edge/"><img src="showcase/pond-edge/preview.webp" width="24%" alt="Pond edge: a dark rippled pond on a raised soil disc, cattails with brown seed heads and rush tufts on the far bank, notched lily pads and two pink-white water lilies, wet stones and a branch at the waterline, on a dark studio floor" /></a>
162+
<a href="showcase/stand-mixer/"><img src="showcase/stand-mixer/preview.webp" width="24%" alt="Stand mixer: a slate-blue retro tilt-head stand mixer with a chrome trim band and a brushed steel bowl on a stone countertop, beside a wire whisk, a steel measuring cup and two brown eggs in a terracotta dish, on a dark studio floor" /></a>
162163
</p>
163164

164165
[`shipping-crate`](showcase/shipping-crate/) — procedural crate through UVs, bake, LOD, collider, and Unity glTF, asserting recomputed budgets. Falsifier `--skip-decimate` exits 9.
@@ -257,6 +258,8 @@ Budget-conformance props. Not examples. Conventions: [`showcase/README.md`](show
257258

258259
[`pond-edge`](showcase/pond-edge/) — the fourth `nature` piece: procedural pond margin on a raised soil disc (a bank sloping from turf through wet mud into a shallow basin, its cut edge showing its soil horizons; the water its own rippled sheet at a declared level, its rim run on under the bank; a cattail clump of arching strap leaves and five stems, each threaded through a velvet seed head with a bare spike; rush and turf tufts; five notched lily pads and two layered water lilies floating; wet stones, a half-submerged branch, pebbles and fallen leaves), whose leaves and stems rooted in the mud, pads floating at the water level, water level and ripple band, seed heads threaded on their stems, water enclosed by the bank and cover joined to the soil are recomputed from the mesh, through the same pipeline. Falsifiers `--float-reeds` exits 17, `--sink-pad` 18, `--flat-water` 19, `--slip-heads` 20, `--short-water` 21, `--float-cover` 22.
259260

261+
[`stand-mixer`](showcase/stand-mixer/) — the fourth `household` piece: procedural retro tilt-head stand mixer on a honed stone countertop section (a cast enamel base foot, neck and streamlined head lofted from superellipse sections, on four rubber feet; a tilt hinge pinned through two neck knuckles; a chrome trim band, blank badge, speed and tilt-lock levers; an attachment hub with cap and thumb screw; a planetary socket carrying a flat beater into a 4.5 L brushed stainless bowl with a rolled rim and strap handle under three bayonet lugs; a cord to a plug; a whisk, a measuring cup and two eggs in a glazed dish), whose feet on the counter, hinge pin coaxial through its knuckles, bowl seated and concentric on its plate, height and brim capacity, beater coaxial with its socket, beater's dime-test clearance to the bowl, mass centre inside the feet and single connected assembly are recomputed from the mesh, through the same pipeline. Falsifiers `--float-foot` exits 16, `--offset-hinge` 17, `--offset-bowl` 18, `--shallow-bowl` 19, `--offset-beater` 20, `--long-beater` 21, `--bunch-feet` 22, `--loose-cap` 23.
262+
260263
</details>
261264

262265
## Examples

0 commit comments

Comments
 (0)