Bug: Game state completely resets on page refresh #147
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bug Description
Refreshing the browser page completely resets the game state — all progress is lost.
Root Cause Analysis
The persistence infrastructure uses Zustand's
persistmiddleware withcreateSafeStorage()across 8 stores. Multiple issues contribute:Critical: Silent
setItemfailuresrc/lib/game/utils/safe-persist.tslines 30-34: ThesetItemmethod has an empty catch block — ALL errors (quota exceeded, serialization failure, private browsing) are silently swallowed, so the game silently never saves.High: Missing
versionfieldNo persist config includes a
versionfield, so schema changes silently break rehydration.Medium: Missing state fields in
partializemanaStore.ts:meditateTicksnot persisted (line 208)combatStore.ts:currentAction,currentRoom,comboHitCount,floorHitCount,totalSpellsCast,totalDamageDealt,totalCraftsCompletednot persisted (lines 310-321)Fix Required
setIteminsafe-persist.ts:console.error('[safe-persist] Failed to persist:', name, error)version: 1to all 8 store persist configspartializeinmanaStore.tsandcombatStore.tsAffected Files
src/lib/game/utils/safe-persist.ts(line 30-34)src/lib/game/stores/manaStore.ts(line 206-208)src/lib/game/stores/combatStore.ts(line 308-321)versionfield additionStarting work on #147 — Game state resets on page refresh. Will investigate safe-persist.ts, manaStore.ts, combatStore.ts, and add version fields to all store persist configs.
Fixed #147 — Game state no longer resets silently on refresh.
Changes:
All 885 tests pass. Committed and pushed as
707a1ee.