Adds a "Save GIF" button to the replay panel. On click, the component renders each step of the replay to an offscreen canvas (both fabric panels side-by-side, FRONT/BACK labels, active-side border, dashed pattern guides for undrawn edges, drawn stitches in thread colour, dashed start marker, red current-vertex dot) and feeds the frames through gifenc — dynamically imported so the ~8 KB chunk only loads when the user actually exports. Frame timing: 200 ms between stitches, 900 ms hold on the first and last frames. Palette is quantised to 64 colours per frame, which keeps a Snowflake tour (~53 frames at 684×376) around 150–250 KB. The button flips to "Encoding…" while busy and a sonner toast reports the file size on success or the error on failure. https://claude.ai/code/session_01KNdXjQczMCRGMK7K3Qderw |
||
|---|---|---|
| .. | ||
| components | ||
| content | ||
| data | ||
| hooks | ||
| layouts | ||
| lib | ||
| pages | ||
| styles | ||
| types | ||
| utils | ||
| consts.ts | ||
| content.config.ts | ||