Skip to content

Swing the card's interior door about its hinge - #80

Merged
irongollem merged 1 commit into
mainfrom
claude/og-image-door-curve-rpjg57
Sep 20, 2026
Merged

irongollem merged 1 commit into
mainfrom
claude/og-image-door-curve-rpjg57

Conversation

@irongollem

Copy link
Copy Markdown
Owner

What this changes

The social card's interior door took the arc's other candidate centre. A swing is an arc of the leaf's own radius about the hinge, and both centres produce the same two endpoints, so the sweep flag alone decides which one the arc takes. With sweep=0 the arc was centred on (850, 290) — the opposite corner of the opening — instead of the hinge at (920, 360), bowing back into the hinge rather than away from it. The front door in the same drawing was already right, which is what made the two marks disagree on the card.

  • assets/og.svg: the interior door's sweep flag, and a comment stating the convention.
  • tests/site.test.ts: recovers each swing's centre from the SVG arc parameters (endpoint → centre parameterisation) and asserts it is the hinge, at the leaf's own length. Reverting the flag fails it with arc is centred on (850, 290), hinge is (920, 360).

The counts on the card were stale for a second reason. assets/og.png is a committed raster rendered by hand, so it drifts from the registries it advertises: it stated 110 symbols where the editor now carries 82. renderOg() now records the counts it rendered with (assets/og.counts.json) and the suite fails on that drift, rather than leaving the card to advertise a figure the editor no longer has.

The raster is regenerated at 82 · 27 with the corrected swing. The container has neither rsvg-convert nor magick, so it was rasterised through librsvg with the same 64-colour palette output; rendering the unchanged SVG first reproduced the committed file, which is what established the substitute as faithful before it was used.

Note for the live card: LinkedIn is showing an older image again (77 symbols), from a deploy predating this repository's history. Once this is deployed the URL needs re-scraping in LinkedIn's Post Inspector — the cache does not expire on its own.

Checklist

  • I have signed the CLA (one-time — see CONTRIBUTING.md)
  • npm run check passes (typecheck + engine tests)
  • npm run build produces a self-contained dist/index.html
  • No new runtime dependencies
  • Any third-party code is identified with its source and licence

🤖 Generated with Claude Code

https://claude.ai/code/session_01Wj4oF7sWCM1cduVPMamsFN


Generated by Claude Code

The social card's interior door took the arc's other candidate centre, so the
swing bowed back into the hinge instead of away from it — the door mark drawn
backwards, beside a front door that was already right.

A door swing is an arc of the leaf's own radius about the hinge; both centres
give the same endpoints, so the sweep flag alone decides it. tests/site.test.ts
now recovers each swing's centre from the SVG arc parameters and asserts it is
the hinge, at the leaf's own length.

The committed raster also trailed the registries it advertises, stating 110
symbols where the editor now carries 82. renderOg() records the counts it
rendered with, and the suite fails on that drift rather than leaving the card
to advertise a figure the editor no longer has.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wj4oF7sWCM1cduVPMamsFN
@irongollem
irongollem merged commit b38111b into main Sep 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants