The Weekly Diff
No. 042 ·Dear reader,
This week we split the machine into parallel regions. Each one keeps its own clock, so a slow exit on one side no longer holds up the other.
It broke twice on the way. The second time taught us that guards need to see the latest context, not the one they were born with.
Until next Thursday,
Jana
2,481 readers
Installation
Use the shadcn CLI to copy the component source and its dependencies into your own project. Only the Minimal world, with motion, plus the Ovio theme, world, motion, format items.
npx shadcn add JanaSundar/ovio/letter-minimalUsage
Set the visual world on the component, or wrap the page in an OvioProvider to set a default for everything inside it.
import { Letter } from "@/components/ovio/letter/letter"
<Letter
variant="minimal"
letter={issue}
subscribers={2481}
onSubscribe={subscribe}
/>Built with: Motion for React: useAnimate sequences, arc() paths (Retro: Morse keying)
Motion in Minimal: Small springs, opacity and layout shifts that show state.
Props
Control the data, selected world, animation behavior, and callbacks.
| Prop | Type | Description |
|---|---|---|
| letter | { name; issue; date; greeting?; body; signOff?; signature } | The issue. body is one string per paragraph; an ISO date is formatted, greeting defaults to “Dear reader,”. |
| variantdefault minimal | minimalcraftretrotoy | Which world to render. Uses the nearest OvioProvider when there is one. |
| subscribers | number | Readers so far, printed under the P.S. One is added when the letter is sent. |
| onSubscribe | (email: string) => Promise<void> | Called with the email from the P.S. The letter goes out once it resolves; a rejection shows its message. |
| className | string | Merged onto the root. |