Uncle Versace

Deploy Notes 05.24.2026

Random Thoughts from a Restless Mind

Category: Deploy Notes

Published On: May 25, 2026

๐Ÿ’ง The Droplets

Routine maintenance โ€” system packages updated, reboots applied. No infrastructure changes this week.

๐Ÿ  Personal Home Page โ€” v2026.5.4

Mostly internal plumbing this week, but the kind that pays dividends. Ported the /todo skill from sibling projects so deferred items survive across Claude conversations, and added a docs/releases/ convention with a stub that gets auto-generated whenever I bump the version โ€” Sunday-night deploys are about to get meaningfully less error-prone when a release needs one-time setup steps. Also locked in three new Symfony conventions in CLAUDE.md (FormType vs manual CSRF, per-feature exception namespaces, Requirement::UUID on route placeholders) so future-me stops re-deriving them. Plus a twig/twig security bump (v3.23.0 โ†’ v3.26.0) that clears seven advisories including a critical PHP code injection.

๐ŸŽฌ They Said It! โ€” v2026.5.4 โ€” theysaidit.app

Light week โ€” synced over the new project docs and skills, plus the same Twig security bump.

๐Ÿง™ Accumulated Knowledge โ€” v2026.5.4 โ€” accumulatedknowledge.app

Just ported over the /todo skill. Quiet release.

๐Ÿค– Uncle Versace Bot (dashboard) โ€” v2026.5.4

Big release. Several genuinely user-facing things landed:

  • Check-In Seasons + Leaderboard Widget. Streamers can now run named seasons on top of !checkin โ€” per-season streaks and totals run alongside the lifetime numbers without touching them, so existing streaks are safe. There's also a public OBS leaderboard widget that auto-resolves to the active season or falls back to lifetime when nothing's running, with milestone badges (๐Ÿ”ฅ streaks, โญ totals) computed at render time. !checkin season start to kick one off.
  • !featurerequest from chat. Streamers and mods can submit feature requests directly from chat instead of opening the dashboard. Goes straight into the same backlog the roadmap pulls from.
  • Wheel: Create from Winners. Once you've marked two or more winners on a wheel spin, a new button hands them off to a fresh wheel pre-populated with their names and colors. Tournament-bracketing got a lot less click-y.
  • Task Board widget: chat call-to-action. New toggle-able CTA tells viewers how to add and complete their own tasks via !task, and it's alias-aware for streamers who've remapped the command (e.g. !todo).
  • Task Board widget defaults. The customize page now has a "Save as my Task Board defaults" button that promotes a board's tweaks to channel-wide defaults โ€” so new Task Boards inherit your styling instead of resetting to the channel brand every time the active board rotates. Fixes a real annoyance from co-working streams.

On the foundations side, also shipped the Platform Identity layer โ€” a global identity record keyed by stable Twitch user ID (not the mutable login), plus a per-channel viewer record and an append-only name-history audit log. Means when a viewer renames themselves on Twitch, their check-in streak and chat history stop fragmenting across two ghost identities. Nothing visible on the streamer-facing side yet โ€” that's a follow-up โ€” but every chat event from this point forward links to a stable identity.

And the big internal one: the botโ†”dashboard wire contract got reshaped to the bot's native Twurple envelope โ€” same release on both sides, lockstep deploy. Knock-on benefit is that nine new chat event types finally land in the log (subs, resubs, sub gifts, community subs, timeouts, bans, message removes, chat clears, announcements) โ€” the dashboard had been silent on all of those. Whisper events were dropped on the way through; a multi-tenant dashboard has no good home for a private DM to the bot account.

๐Ÿ’ฌ Uncle Versace Bot (Node.js) โ€” v2026.5.4

Counterpart to the dashboard release above. Forwards the nine new chat event types Twurple exposes, retired the tmi.js compatibility shim, removed the whisper handler, and fixed a /me action bug where the raw IRC \x01ACTION ... \x01 wrapper bytes were leaking into the message text. Also added Prettier + ESLint + Vitest plus a /check-code skill that runs all three before a PR โ€” bringing the Node sibling in line with the pre-PR tooling the Symfony projects have had for a while.

๐Ÿ”ฎ On Deck

  • Battle Royale. First true game feature in the bot. Boom Bears-style passive battle royale โ€” viewers !join, the sim runs for 3โ€“5 minutes, eliminations stream into an OBS widget. Unblocked by this week's identity foundation.
  • Identity backfill. One-shot console command to populate the new channel_viewer_id FK on historical chat_log rows from data already in the JSON. Pre-launch data hygiene.
  • Widget Defaults Phase 2. Standalone editor for per-widget-type defaults, plus extending the layer to Auctions and the Check-In Leaderboard.