bug-postmortem

  1. A recording that assumed three lives

    The PvP gameplay recording still planned for three lives, while the game starts duels with two, so its final crash never reached the video. The recorder now reads the count from the game.

  2. When two theme rules tie

    A light theme set alongside high contrast inherited the dark palette by source order, and the fix became a per-theme rule for the duel snakes.

  3. A passkey with a name of its own

    New passkeys now carry a device label into the authenticator, so a password manager can tell registrations apart.

  4. Headroom for the replay

    A flaky leaderboard test traced back to tests repeatedly rediscovering deterministic scores and an arbitrary rate limit cap.

  5. The wrapper that only looked for two

    A devcontainer rebuild failure on Apple Silicon traced back to a browser launcher that matched x86 and legacy Chromium cache paths but missed ARM64.

  6. The score was only true here

    An end-to-end test hardcoded Norwegian replay scores derived on a local dev database, only to fail on CI because identical words walked into a different fruit queue.

  7. Daily Challenge Across Devices

    Keeping a signed-in player's daily challenge progress consistent across devices via a merge strategy, not an overwrite, plus fixing the races that exposed the need for it.

  8. A Warning for a Word Already Gone

    The already-used hint flashed on a word the player could no longer edit, because the check that decided whether to show it never looked at what phase the game was actually in.

  9. The Cheapest Part Was Already Installed

    Three CI hangs on the same day, one nearly three hours long, traced to an unbounded apt-get for Chromium system deps on a slow package mirror, fixed by reusing an already-installed container image.

  10. A Mock That Imported the Real Thing

    A flaky error-reporting test traced to a mock factory that quietly resolved the real Sentry package under full-suite load, and the audit for the same pattern elsewhere.