Skip to content

feat: persist user stats to localStorage across sessions#41

Merged
nitrocode merged 2 commits into
mainfrom
copilot/save-stats-to-local-storage
Apr 23, 2026
Merged

feat: persist user stats to localStorage across sessions#41
nitrocode merged 2 commits into
mainfrom
copilot/save-stats-to-local-storage

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 23, 2026

The "Tokens Since You Arrived" counter resets on every page load, and theme/accelerator progress is lost between visits. Return visitors should resume where they left off.

Changes

New localStorage keys

Key What's stored
tokenDeathclockFirstArrival Epoch ms of user's first-ever visit
tokenDeathclockTheme "dark" | "light" preference
tokenDeathclockGameState Accelerator personalTokens, doomPoints, totalTaps, milestonesTriggered, personalMilestoneSet

"Tokens Since You Arrived" (sessionCounter)

  • Replaces pageLoadTime with firstArrivalTime for token and elapsed-time calculations
  • Subtitle switches from "on page""since first visit" for returning visitors
  • pageLoadTime is preserved for share/receipt text (intentionally session-scoped)

Theme persistence

  • toggleTheme() writes to tokenDeathclockTheme on every toggle
  • init() reads and applies it before first render — no flash of wrong theme

Accelerator game state

  • loadAcceleratorState() / saveAcceleratorState() extended with tokenDeathclockGameState; all values validated (finite, non-negative, correct types) before applying
  • Saves triggered every 30 s via setInterval and eagerly on visibilitychange: hidden, both registered once in init() to avoid duplicate listeners

Test isolation

  • localStorage.clear() added to beforeEach in script.test.js — prevents persisted theme/state from leaking across test cases

Copilot AI and others added 2 commits April 23, 2026 15:48
@nitrocode nitrocode marked this pull request as ready for review April 23, 2026 15:53
@nitrocode nitrocode self-requested a review as a code owner April 23, 2026 15:53
@nitrocode nitrocode enabled auto-merge (squash) April 23, 2026 15:53
@github-actions
Copy link
Copy Markdown
Contributor

👁️ PR Preview

🚀 Open Preview

Deployed from commit a70ab33 · Updates on every push to this PR
(Preview is removed automatically when the PR is closed.)

@nitrocode nitrocode merged commit bc65470 into main Apr 23, 2026
3 checks passed
@nitrocode nitrocode deleted the copilot/save-stats-to-local-storage branch April 23, 2026 15:54
github-actions Bot added a commit that referenced this pull request Apr 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants