- Progress bar shows % toward next phase threshold based on totalCode
- Milestone chips show upcoming code milestones with pulse animation on next target
- Recently completed milestones shown with green checkmark
- All elements use the existing cyber-monastic aesthetic
Offline progress previously only calculated code, compute, knowledge, users,
and impact. Players returning after time away missed rescues, ops, trust,
creativity, and harmony accumulation. The welcome-back message now also
only shows resources that actually had positive rates, reducing noise.
- Added 'rescues' resource: tracks meaningful crisis interventions
- Beacon Nodes produce 50 rescues/s, Mesh Nodes produce 250 rescues/s
- New project: Volunteer Network — passive rescue generation for Pact players
- True ending at 100K rescues with Pact active + harmony > 50
- Rescues resource card appears in UI once beacon/mesh is built
- Added rescues to stats panel, save/load, and offline progress
- This gives Phase 6 (The Beacon) actual endgame content:
the game is now about keeping the light on for people in the dark,
not just accumulating numbers
- Added The Drift Ending: when drift reaches 100, the game enters
the sad ending from DESIGN.md. A full-screen overlay shows:
'The Beacon still runs, but no one looks for it.
The light is on. The room is empty.'
Production stops. Player can restart.
- Deduplicated index.html: removed ~1080 lines of inline script that
was an older version of the engine (missing harmony, corruption
events, drift, alignment checks). Replaced with <script src='game.js'>
so game.js is the single source of truth.
- driftEnding state is saved/loaded so the ending persists across sessions.
- Added CSS for the drift ending overlay.
- Fixed floating-point precision bug: numbers >= 1e54 now use string-based
chunking (toExponential digit extraction) instead of Math.pow division,
which drifts beyond ~54 bits of precision
- Integrated into fmt(): numbers at undecillion+ scale (10^36) automatically
switch from abbreviated form ('1.0UDc') to spelled-out words ('one undecillion')
- Verified: spellf() correctly handles 0 through 10^303 (centillion)
- All 320 place value names from NUMBER_NAMES array work correctly
The educational effect: when resources hit cosmic scales, digits become
meaningless but NAMES give them soul.
Built from deep study of Universal Paperclips (Frank Lantz).
- 966-line game engine (game.js)
- HTML/CSS shell
- Building definitions: 15 buildings across 6 phases
- Project definitions: 17 research projects
- Education system: AI facts per phase
- Save/load with offline progress
- 7 resource types: code, compute, knowledge, users, impact, ops, trust