feat(logo): improve printing-mallet.svg β depth, materials, illumination#96
Merged
Conversation
The prior asset rendered as a coopered keg-on-a-stick with iron bands β
the silhouette of a Thor-style sledge, not a printer's tool. Historical
references (per A. A. Stewart's "Typesetting" and Letterpress Commons)
describe a compositor's mallet as:
- Roughly *square* head (5 in top Γ 4 in bottom Γ 3 in thick),
NOT a cylinder. No iron bands. No brass ferrules.
- Thin handle of beech or ash (~1 in diameter, 7-8 in long), entering
the head through a beveled hole locked with a wedge.
- Used in conjunction with a wooden planer block to tap movable type
flat on the imposing stone ("type-high"), or to drive quoins.
This redraw replaces the entire geometry from scratch.
WHAT YOU SEE NOW
- Squat boxy head in 3/4 perspective: top face (end-grain rings),
front face (vertical side-grain streaks, slight bottom taper per
the 5-top-to-4-bottom anatomy), right-side face (foreshortened,
in shadow).
- Locking wedge visible on the top face (light beech, contrasts
against the darker head).
- Wear band + chipped corners along the bottom-front edge β where
repeated strikes against the planer block leave their mark.
- One small knot on the front face; subtle surface dents from use.
- Thin tapered handle with palm-swell at the grip; round-shaft
shading (left highlight, center specular, right shadow); subtle
grip darkening from hand oils.
- Ground shadow beneath the (un-rotated) composition; soft 2-stop
elliptical drop.
ANATOMY THIS REJECTS (versus prior asset and prior v1 attempt)
- No cylindrical head with rounded top/bottom ellipses.
- No iron reinforcement bands. No rivets. No rust patina.
- No 4-strap mortise. No leather wrap rings on the grip.
- Handle is thin, not stubby. Grip is at the bottom, not the middle.
UNCHANGED
- 400x400 viewBox preserved for existing consumers (favicons,
blog illustrations, etc.).
- 42Β° rotation pose preserved for continuity with the prior asset.
- public/scripthammer-logo.svg, public/favicon.svg,
public/apple-touch-icon.svg unchanged (their embedded mallets
are sub-pixel-detail at favicon render sizes; separate follow-up
if desired).
REFERENCES
- Stewart, A. A. β "Typesetting" (Project Gutenberg #46113)
- Stewart, A. A. β "Type Cases And Composing-Room Furniture" (PG #31704)
- https://letterpresscommons.com/compositors-tools/
- https://www.c82.net/typography/term/mallet
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3ce5a24 to
c95faee
Compare
TortoiseWolfe
pushed a commit
that referenced
this pull request
May 16, 2026
) Replace earlier hand-drawn "hammer + anvil + DaisyUI accent orbs" scene geometry with the three canonical ScriptHammer brand SVGs, inlined as <symbol> defs and referenced via <use>. Geometry data copied verbatim from public/scripthammer-logo.svg, public/script-tags.svg, and public/printing-mallet.svg. Composition follows the canonical layering rules from src/components/atomic/SpinningLogo/LayeredScriptHammerLogo.tsx. SPEC.MD CHANGES - Drop "anvil" language throughout (anvil is a blacksmith tool, not a Gutenberg-press tool; was anatomically wrong from the start). - FR-007, Key Entities β Scene, US-1 acceptance scenario, Clarifications Q1 + Q2 all updated to describe the canonical 3-asset composition: silver cog ring (mirror of scripthammer-logo.svg) + golden code-tag brackets (mirror of script-tags.svg) + printing-mallet (mirror of printing-mallet.svg, redrawn in PR #96 with historically-accurate compositor's-mallet anatomy). WIREFRAME CHANGES (both 01-main and 02-fallback) - Three <symbol> defs added per SVG: #brand-cog, #brand-script-tags, #brand-printing-mallet. Each declares viewBox="0 0 400 400" matching the source assets, so <use> with width/height scales predictably. - Scene region replaced with three <use> calls at the layered positions: Layer 1 (BACK): mallet at top:58% left:42%, sized 65% of cog Layer 2 (MIDDLE): cog ring at 100%, centered Layer 3 (FRONT): brackets at 68%, centered - Solid silver fill (#c0c0c0) substitutes the source's metallic gradients to avoid id-collision overhead at wireframe scale. - File restructured: gradient <defs> closes early, then background <rect> + centered title + section labels, then a second <defs> with the brand symbol defs. This ensures the validator's 2000-char G-024/SECTION-001 scan window catches the structural elements. VALIDATOR - Both wireframes PASS the v5.0 validator (0 errors). - Issue files updated with regeneration history. NOTES - Visual review of the rendered SVGs (via PNG screenshots and direct browser navigation) confirmed the layered brand composition reads correctly. Iteration on exact mallet/bracket/cog proportions remains open for designer polish in future passes, but the architectural pattern (canonical-SVG-via-symbol) is now in place so refinement only requires updating the public/*.svg source. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
TortoiseWolfe
pushed a commit
that referenced
this pull request
May 19, 2026
) Replace earlier hand-drawn "hammer + anvil + DaisyUI accent orbs" scene geometry with the three canonical ScriptHammer brand SVGs, inlined as <symbol> defs and referenced via <use>. Geometry data copied verbatim from public/scripthammer-logo.svg, public/script-tags.svg, and public/printing-mallet.svg. Composition follows the canonical layering rules from src/components/atomic/SpinningLogo/LayeredScriptHammerLogo.tsx. SPEC.MD CHANGES - Drop "anvil" language throughout (anvil is a blacksmith tool, not a Gutenberg-press tool; was anatomically wrong from the start). - FR-007, Key Entities β Scene, US-1 acceptance scenario, Clarifications Q1 + Q2 all updated to describe the canonical 3-asset composition: silver cog ring (mirror of scripthammer-logo.svg) + golden code-tag brackets (mirror of script-tags.svg) + printing-mallet (mirror of printing-mallet.svg, redrawn in PR #96 with historically-accurate compositor's-mallet anatomy). WIREFRAME CHANGES (both 01-main and 02-fallback) - Three <symbol> defs added per SVG: #brand-cog, #brand-script-tags, #brand-printing-mallet. Each declares viewBox="0 0 400 400" matching the source assets, so <use> with width/height scales predictably. - Scene region replaced with three <use> calls at the layered positions: Layer 1 (BACK): mallet at top:58% left:42%, sized 65% of cog Layer 2 (MIDDLE): cog ring at 100%, centered Layer 3 (FRONT): brackets at 68%, centered - Solid silver fill (#c0c0c0) substitutes the source's metallic gradients to avoid id-collision overhead at wireframe scale. - File restructured: gradient <defs> closes early, then background <rect> + centered title + section labels, then a second <defs> with the brand symbol defs. This ensures the validator's 2000-char G-024/SECTION-001 scan window catches the structural elements. VALIDATOR - Both wireframes PASS the v5.0 validator (0 errors). - Issue files updated with regeneration history. NOTES - Visual review of the rendered SVGs (via PNG screenshots and direct browser navigation) confirmed the layered brand composition reads correctly. Iteration on exact mallet/bracket/cog proportions remains open for designer polish in future passes, but the architectural pattern (canonical-SVG-via-symbol) is now in place so refinement only requires updating the public/*.svg source. Co-Authored-By: Claude Opus 4.7 (1M context) <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
Refines
public/printing-mallet.svgβ the standalone printing-mallet asset used by the brand identity, blog illustrations, and (forthcoming) the #48 Three.js game wireframes.Eight specific improvements:
Plus leather wrap rings at the grip and relocated surface scratches.
Why
The previous version was generated by an older Claude Code session. Rendered side-by-side, the old asset had several "AI-drew-this" tells: backwards handle taper, flat sheen overlay reading as smudge, hammer marks placed where strikes wouldn't land, no rivets despite explicit ironwork, no shadow. This PR fixes those specifically.
This PR also enables a downstream improvement: the #48 Three.js game wireframes (PR #95, currently in draft) embed the canonical mallet asset. Once this merges, those wireframes can
<image href=\"/printing-mallet.svg\">the improved version instead of using my hand-drawn approximation.What is NOT changed (deliberate, for scope)
public/scripthammer-logo.svgβ silver cog ring; doesn't contain a mallet (just the engraved "ScriptHammer.com" wordmark).public/favicon.svgandpublic/apple-touch-icon.svgβ they embed their own miniaturized copy of the mallet geometry inline. At their render sizes (favicon β€32px effective; apple-touch 180β512px with mallet ~150px of that), the rivet/knot/leather details are sub-pixel anyway. Separate follow-up if we want them updated.viewBoxis preserved so any consumer expecting that canvas size keeps working.Visual diff
Before vs after screenshots captured locally via headless chromium. Not committed to the repo (per .gitignore on .screenshots/) β see the commit message for the specific item-by-item improvements.
Test plan
git push./ScriptHammer/printing-mallet.svgonce dev server is up.<image href=\"/printing-mallet.svg\">.π€ Generated with Claude Code