Astro migration effect sandbox
This post is the local proving ground for the original Attegi interaction layer. Every effect here exists for a reason, not because someone had extra JavaScript and poor impulse control.
Gallery and lightbox
The gallery keeps Ghost’s ratio contract, then the lightbox upgrades only when gallery markup is actually present.
Embeds, code, and footnotes
Responsive wrappers, syntax highlighting, copy buttons, and footnote relinking all depend on the content being rendered as final HTML.
An Apple Music embed is promoted to the listening card — vinyl, not chrome.
const migration = {
renderer: 'astro',
cms: 'ghost',
rule: 'do not invent extra layers'
};
export function keepItBoring() {
return migration;
}
The migration also keeps footnotes alive.[1]
- Footnotes should link both ways after the HTML lands in Astro. ↩︎
Portrait media and poem cards
A portrait image should earn its modifier class, and the poem blockquote should stop pretending to be a quote.
[!poem] Build Notes [center]
Move the shell first.
Then move the habits.
Let the markup stay recognizable.
— The migration log
[!poem] Field Notes
The left rule keeps the ragged right honest,
and a long line that runs past the measure wraps with a hanging indent so the eye knows it is one thought.
Short lines stay short.
— Author, somewhere quieter
Mood embed
A Ghost HTML card can embed a buxx.me mood post. The author hardcodes a short height with overflow hidden; the runtime listens for the embed's resize message and grows the frame so nothing clips.
Bookmark cards and nested headings
The TOC needs enough headings to matter, while bookmark cards need the old theme skin to remain intact.
Bookmark card
Secondary heading
The TOC should pick this up and the back-to-top control should stay hidden while the TOC owns the floating action slot.
Detail heading
Because h4 exists in the theme TOC rules, it gets to stay in the test payload too.