Polishing the Werewolf Game: Multi-tags, Dark Themes, and Game Master Controls
Had a solid dev session today working on the werewolf game (loups-garous). Lots of small but important UX improvements that really add up.
The Big Wins
First up, I tackled the hint button positioning that's been bugging me. Started with increasing the negative margin to -mt-6, but that felt off. Ended up settling on a clean 24px gap above the bottom navigation. Sometimes the simple solutions are the best ones.
The multi-tag support was more interesting than expected. I removed the deduplication logic in RoleRevealVillagePanel so players now appear in every tag group they belong to. This actually makes way more sense from a UX perspective – if you're part of multiple groups, you should see yourself in all of them.
UI Polish That Matters
Renamed the candidacy button from "Confirmer la candidature" to just "Candidater" – shorter and clearer. Also did a bunch of work on the candidacy bottom sheet: it now hides the header when you're typing (focus state) and I replaced that chunky CTA with a clean inline Send button. Much cleaner.
Added dark theme support for the candidacy sheet during the role discovery phase. Those little themed touches really make the game feel more polished.
Game Master Gets More Control
Big addition: GM can now end the game manually with a "Terminer la partie" button right in the configuration panel. It opens a winner picker modal where they can choose between village, werewolf, or lovers winning. I decided to make this GM-controlled rather than auto-detected – gives the game master full control over the flow.
Under the Hood
Upgraded to MemStack v3.2.3 which brings hooks, rules, skills, and SQLite DB support. Also set up a proper .claude/launch.json config for the dev server (Vite on port 5173). The tooling is getting really solid now.
What's Next
Still have a few more candidacy sheet tweaks to handle – mainly around the "nouveaux indices" positioning and general polish. Might also need to look at the dead player UX, but that's lower priority.
The game is really starting to feel complete. All these small improvements are adding up to a much smoother experience. The Supabase realtime backend is humming along nicely, and the development flow feels really good now.
Sometimes the best sessions are the ones where you just knock out a bunch of polish items. Each fix makes the whole experience better.