fix: unfold the letter cleanly out of its envelope #29

Merged
me merged 4 commits from fix/letter-reveal into main 2026-08-31 10:49:57 +00:00
Owner

Four fixes to how a letter comes out of its envelope, plus a useReveal hook and a LetterPaper component. The canvas now fires onReady so the paper only appears once it has its final height — that's what removes the jag mid-reveal.

These had been sitting unpushed on my local main, so rebasing meant reconciling them with the quill work that landed since.

One thing worth a look in review: both sides had refactored the same function in ComposeCanvas. I kept main's version wherever they overlapped, since its createCompositionTextbox carries the cursor-drift fix — so my createDefaultTextbox is deleted rather than merged. What survives from this side is the onReady hook and a !readOnly guard that stops a reader seeing "Take a deep breath..." on an empty canvas. That guard makes the textbox nullable, hence the new optional chaining. Both branches together pushed the function past the complexity limit, so I split out resolveTextbox.

76 tests, biome and tsc clean, build passes.

Four fixes to how a letter comes out of its envelope, plus a `useReveal` hook and a `LetterPaper` component. The canvas now fires `onReady` so the paper only appears once it has its final height — that's what removes the jag mid-reveal. These had been sitting unpushed on my local main, so rebasing meant reconciling them with the quill work that landed since. One thing worth a look in review: both sides had refactored the same function in `ComposeCanvas`. I kept main's version wherever they overlapped, since its `createCompositionTextbox` carries the cursor-drift fix — so my `createDefaultTextbox` is deleted rather than merged. What survives from this side is the `onReady` hook and a `!readOnly` guard that stops a reader seeing "Take a deep breath..." on an empty canvas. That guard makes the textbox nullable, hence the new optional chaining. Both branches together pushed the function past the complexity limit, so I split out `resolveTextbox`. 76 tests, biome and tsc clean, build passes.
me added 4 commits 2026-08-31 07:53:53 +00:00
me merged commit 5f66a4fad4 into main 2026-08-31 10:49:57 +00:00
me deleted branch fix/letter-reveal 2026-08-31 10:50:03 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
me/pi-ku!29
No description provided.