Repository navigation
Swing the card's interior door about its hinge - #80
Merged
Merged
Conversation
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
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.
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=0the 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 witharc is centred on (850, 290), hinge is (920, 360).The counts on the card were stale for a second reason.
assets/og.pngis 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-convertnormagick, 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
npm run checkpasses (typecheck + engine tests)npm run buildproduces a self-containeddist/index.html🤖 Generated with Claude Code
https://claude.ai/code/session_01Wj4oF7sWCM1cduVPMamsFN
Generated by Claude Code