cutty devlog #5 — it was supposed to be half an hour
It was supposed to take half an hour: "check if the favicon is good, fix og:image". Ended up at 3 AM with a mailbox migration, two modals, and full QA. The standard "since I'm already here" loop.
What changed
- The background is alive — particles react to the cursor and have their own drift, so the screen doesn't freeze if no one moves the mouse. Mobile skips the canvas because Lighthouse penalizes every ms.
- The entire template got a landing page upgrade — the login looked like a placeholder from 2018. Now everywhere has the same badge + reveal + gradient.
- Branded 404 — "Nothing here. Yet." Status 404, but the human doesn't break.
- Favicon — turns out the default Astro Rocket was hanging in the tab. Since some migration. Generating it from scratch.
- og:image per locale — previously every viewer got a Polish preview with a "Beta" badge. Now the browser picks the language. PL+EN ready, the rest of the ten in v0.6.
- Own mailbox for PINs — primary path from the cutty.dev domain, external provider as fallback. You log in, the code comes from my domain, not someone else's.
- Native
confirm()is gone — deleting a link looked like it was slapped on from 2005. Now a branded modal: red for destructive, purple for non-destructive. ESC works. - CSRF guard in Astro 5 silently rejected POST/DELETE from the UI. It looked like the page randomly threw errors. Fix: one line, one header.
What's next
Lighthouse: desktop 100/100/100/100, mobile 99 — because of 4× CPU throttling + 3G, in reality everything runs smoothly. Minor things remain (translating the "Wrong PIN" error in the Polish UI is still in English — congratulations to me) and Manual QA of the rest of the flow. Then v0.6 — ten new languages via Ollama at night, I sleep.
Launch (ProductHunt + HN) still gated on full QA. Max two more sessions. Yes, I said the same thing a week ago.