Timmy
7e05a93d5e
beacon: preserve the Unbuilding prompt during renders
2026-04-14 07:38:13 -04:00
Timmy
aa88937509
beacon: implement the Unbuilding endgame
2026-04-14 07:38:13 -04:00
1081b9e6c4
Merge pull request 'ci: re-trigger smoke test (clearing stale run #213 )' ( #115 ) from ci/retrigger-smoke into main
...
Smoke Test / smoke (push) Failing after 3s
ci: re-trigger smoke test
2026-04-13 19:09:36 +00:00
Alexander Whitestone
e74f956bf4
ci: re-trigger smoke test (stale run #213 from before PR #106 merge)
Accessibility Checks / a11y-audit (pull_request) Successful in 3s
Smoke Test / smoke (pull_request) Failing after 5s
2026-04-13 15:08:54 -04:00
55f280d056
Merge pull request 'burn: fix null ref in renderResources and add tutorial dialog a11y' ( #114 ) from burn/20260413-0400-qa-remaining-fixes into main
...
Smoke Test / smoke (push) Failing after 4s
merge reviewed bugfix
2026-04-13 09:43:52 +00:00
Alexander Whitestone
6446ecb43a
burn: fix null ref in renderResources and add tutorial dialog a11y
...
Accessibility Checks / a11y-audit (pull_request) Successful in 3s
Smoke Test / smoke (pull_request) Failing after 4s
BUG-08: Add null check on closest('.res') in renderResources to
prevent TypeError if DOM structure is unexpected.
BUG-11: Add role='dialog', aria-modal='true', aria-label='Tutorial'
to tutorial overlay. Add aria-label to Skip and Next buttons for
screen reader accessibility.
Smoke test: all 19 checks passed.
2026-04-13 04:37:08 -04:00
0a312b111d
Merge pull request 'fix: add missing CSS for resource counter pulse/shake animations' ( #113 ) from fix/resource-counter-animations into main
Smoke Test / smoke (push) Failing after 3s
2026-04-13 08:30:27 +00:00
Alexander Whitestone
141b240d69
fix: add missing CSS for resource counter pulse/shake animations
...
Accessibility Checks / a11y-audit (pull_request) Successful in 2s
Smoke Test / smoke (pull_request) Failing after 3s
Fixes part of #57 (Night of Polish — Task 1: Visual Identity).
_animRes() in engine.js already adds .pulse/.shake classes to
resource counters on value change, but the CSS animations were
missing. This adds:
- @keyframes res-pulse (scale up + green flash on gain)
- @keyframes res-shake (horizontal shake + red flash on loss)
- Scoped .res .pulse and .res .shake classes (0.35s ease-out)
Scoped under .res to avoid conflict with existing .main-btn.pulse.
2026-04-13 04:29:29 -04:00
093f7688bd
Merge pull request 'fix: add missing phase-transition overlay element ( closes #101 )' ( #108 ) from fix/phase-transition-overlay into main
Smoke Test / smoke (push) Failing after 3s
2026-04-13 08:18:09 +00:00
c4a31255a4
fix: repair CI workflows after game.js removal ( #106 )
...
Smoke Test / smoke (push) Failing after 4s
Merged PR #106 — fixes both a11y.yml and smoke.yml after game.js removal.
Closes #100
Closes #104 (duplicate)
2026-04-13 08:14:25 +00:00
Timmy
c876a35dc0
fix: add missing phase-transition overlay element ( closes #101 )
...
Accessibility Checks / a11y-audit (pull_request) Failing after 3s
Smoke Test / smoke (pull_request) Failing after 4s
BUG-07: showPhaseTransition() looks for #phase-transition but the element
didn't exist in index.html. Added the overlay div with .pt-phase, .pt-name,
and .pt-desc children matching what the engine expects.
Note: BUG-06 (toast text) and BUG-09 (mute/contrast buttons) were already
fixed on main in prior commits.
2026-04-13 03:51:20 -04:00
Alexander Whitestone
3d851a8708
fix: repair CI workflows after game.js removal ( #100 )
...
Accessibility Checks / a11y-audit (pull_request) Successful in 3s
Smoke Test / smoke (pull_request) Failing after 4s
- a11y.yml: validate ARIA attributes in js/*.js instead of deleted game.js
- a11y.yml: syntax-check all js/*.js files instead of single game.js
- a11y.yml: drop aria-valuenow check (not used in current codebase)
- smoke.yml: exclude guardrails scripts from secret scan (self-referential false positive)
2026-04-13 03:43:59 -04:00
fbb782bd77
Merge pull request 'feat: canvas-based combat visualization ( #21 )' ( #103 ) from feat/canvas-combat-visualization into main
...
Smoke Test / smoke (push) Failing after 3s
Auto-merge: combat visualization
2026-04-13 07:19:52 +00:00
Timmy
9a829584b0
feat: canvas-based combat visualization ( #21 )
...
Accessibility Checks / a11y-audit (pull_request) Failing after 4s
Smoke Test / smoke (pull_request) Failing after 3s
Implements Reasoning Battles — a Paperclips-inspired canvas combat system
where structured reasoning (blue) fights adversarial testing (red) using
boid flocking (cohesion, aggression, separation) on a 310x150 grid.
Features:
- Boid flocking AI for ship movement
- Grid-based combat resolution with OODA loop speed bonus
- Napoleonic War battle names
- Auto-trigger battles scaled to drift and phase
- Battle history log
- Rewards: structured wins = knowledge, adversarial wins = code
- Unlocks at Phase 3
- Integrated into tick loop and render pipeline
2026-04-13 03:19:21 -04:00
020c003d45
Merge pull request 'fix: Bilbo randomness — roll once per tick ( #88 )' ( #97 ) from burn/fix-bilbo-randomness into main
...
Smoke Test / smoke (push) Failing after 4s
Auto-merge #97
2026-04-13 07:15:35 +00:00
610252b597
Merge pull request 'fix: add missing mute, contrast, and tooltip UI elements ( #57 )' ( #102 ) from beacon/polish into main
...
Smoke Test / smoke (push) Has been cancelled
Auto-merge #102
2026-04-13 07:15:32 +00:00
Hermes Agent
04f869c70d
fix: add missing mute, contrast, and tooltip UI elements ( #57 )
...
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 5s
The JS toggleMute(), toggleContrast(), and custom tooltip system were
fully implemented but their HTML elements were missing from index.html,
causing silent failures on M/C keys and hover tooltips.
- Add #mute-btn and #contrast-btn to header bar
- Add #custom-tooltip element for hover tooltips
- Add high-contrast CSS mode with bold borders and vivid colors
- Add header-btn and tooltip styles
Refs: epic #57 tasks 2 (Sound toggle), 4 (Tooltips), 5 (Accessibility)
2026-04-13 03:05:41 -04:00
bbcce1f064
Merge PR #96 : fix: QA bug sweep — 5 small fixes
...
Smoke Test / smoke (push) Failing after 3s
Reviewed, patched click-counter regression, verified smoke locally, and merged.
2026-04-13 06:22:27 +00:00
Alexander Whitestone
a2f345593c
fix: restore manual click counting in QA bug sweep
Accessibility Checks / a11y-audit (pull_request) Failing after 3s
Smoke Test / smoke (pull_request) Failing after 4s
2026-04-13 02:21:39 -04:00
Alexander Whitestone
b819fc068a
fix: Bilbo randomness — roll once per tick ( #88 )
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 3s
2026-04-13 02:11:50 -04:00
Alexander Whitestone
8e006897a4
fix: QA bug sweep — 5 fixes ( closes #95 )
...
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 3s
1. Memory Leak toast: "trust draining" → "compute draining"
2. Harmony tooltip: remove 10× multiplier (values already per-second)
3. autoType(): track as totalAutoClicks instead of totalClicks
4. The Pact (late): guard trigger with pactFlag !== 1
5. Typo: "AutoCod" → "AutoCoder"
2026-04-13 02:02:59 -04:00
ff9c1b1864
Merge pull request 'feat: offline progress calculation ( closes #11 )' ( #94 ) from feat/offline-progress into main
Smoke Test / smoke (push) Failing after 4s
2026-04-13 04:34:57 +00:00
9fd70fa942
feat: add offline progress calculation ( closes #11 )
...
Accessibility Checks / a11y-audit (pull_request) Failing after 3s
Smoke Test / smoke (pull_request) Failing after 4s
Saves lastSaveTime timestamp. On load, calculates elapsed time
and awards 50% efficiency production. Shows summary toast.
Min 30 seconds away to trigger.
2026-04-13 04:34:33 +00:00
c714061bd8
fix: load tutorial.js before main.js, remove dead game.js ( #92 )
...
Smoke Test / smoke (push) Failing after 4s
Co-authored-by: Alexander Whitestone <alexander@alexanderwhitestone.com >
Co-committed-by: Alexander Whitestone <alexander@alexanderwhitestone.com >
2026-04-13 03:11:03 +00:00
220fc44c6a
fix: Bilbo randomness, drone balance, screen reader ( #88 , #89 , #90 ) ( #93 )
Smoke Test / smoke (push) Failing after 3s
2026-04-13 03:10:39 +00:00
26bb33c5eb
QA: Comprehensive Playtest Bug Report (19 issues)
...
Smoke Test / smoke (push) Failing after 4s
Merge PR #85 : QA: Comprehensive Playtest Bug Report (19 issues)
2026-04-13 03:00:25 +00:00
954a6c4111
Merge pull request 'fix: critical bugs from QA ( #86 , #87 , #89 )' ( #91 ) from burn/fix-critical-bugs into main
...
Smoke Test / smoke (push) Has been cancelled
Merge PR #91 : fix: critical bugs from QA (#86 , #87 , #89 )
2026-04-13 02:56:28 +00:00
Alexander Whitestone
e72e5ee121
fix: critical bugs from QA ( #86 , #87 , #89 )
...
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 3s
- Deleted dead game.js (duplicate const declarations)
- Fixed Wire Budget double-counting trust cost
2026-04-12 22:52:01 -04:00
QA Agent
74575929af
QA: Add comprehensive playtest bug report (19 issues found)
...
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 5s
Critical: duplicate const declarations, malformed BDEF array, drone balance
Functional: resource naming, Bilbo tick randomness, memory leak toast
Accessibility: missing mute/contrast buttons, tutorial focus trap
Balance: drone rates (26M/s!), community trust cost (25K)
Save/Load: debuff restoration logging
2026-04-12 22:34:20 -04:00
bfc30c535e
Merge pull request 'feat: enhanced smoke test with game + policy validation' ( #84 ) from perplexity/enhanced-smoke-test into main
Smoke Test / smoke (push) Failing after 4s
2026-04-13 01:36:26 +00:00
76c3f06232
feat: enhance smoke test with game validation and policy checks
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 3s
2026-04-13 01:34:58 +00:00
33788a54a5
Merge pull request '[AUDIT] Dead Code Audit — flag unimported GOFAI files and Gemini bloat' ( #83 ) from perplexity/dead-code-audit into main
Smoke Test / smoke (push) Failing after 3s
2026-04-13 00:27:34 +00:00
5f29863161
Add dead code audit report for the-beacon
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 3s
2026-04-13 00:27:25 +00:00
266926ecaf
Merge pull request 'feat: emotional arc milestone system ( #9 )' ( #82 ) from feat/golden-ratio-drones into main
Smoke Test / smoke (push) Failing after 3s
2026-04-12 23:17:03 +00:00
5c83a7e1fd
Merge pull request 'feat: procedural sound engine (Web Audio API) — epic #57 ' ( #81 ) from burn/20260412-1227-sound into main
Smoke Test / smoke (push) Failing after 3s
2026-04-12 23:12:34 +00:00
Alexander Whitestone
416fd907f4
feat(sound): wire sound hooks into game engine
...
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 3s
Sound integration points:
- writeCode() -> playClick()
- buyBuilding() -> playBuild()
- buyProject() -> playProject()
- checkMilestones() -> playMilestone()
- showPhaseTransition() -> playFanfare() + updateAmbientPhase()
- renderDriftEnding() -> playDriftEnding()
- renderBeaconEnding() -> playBeaconEnding()
- Game init -> startAmbient() on first user interaction
- toggleMute() -> onMuteChanged() for ambient gain control
All hooks use typeof guard to avoid errors if sound.js fails to load.
2026-04-12 12:30:22 -04:00
Alexander Whitestone
2b43a070cc
chore: load sound.js before engine.js in script order
2026-04-12 12:29:07 -04:00
Alexander Whitestone
9de02fa346
feat(sound): add procedural audio engine via Web Audio API
...
Implements all required sound functions with no audio files:
- playClick() — mechanical keyboard sound (noise burst + square wave)
- playBuild() — purchase thud + chime overlay
- playProject() — ascending three-note chime (C5-E5-G5)
- playMilestone() — bright four-note arpeggio (C5-E5-G5-C6)
- playFanfare() — 8-note scale + final chord for phase transitions
- playDriftEnding() — descending dissonant sawtooth sweep
- playBeaconEnding() — warm five-note chord with harmonics
- startAmbient() / updateAmbientPhase() — continuous drone with LFO
All sounds respect the existing _muted toggle. Script loads before engine.js.
2026-04-12 12:29:01 -04:00
1b7ccedf2e
Merge pull request 'fix: beacon accessibility and bug fixes ( #63 , #64 )' ( #77 ) from burn/20260412-1150-a11y-fix into main
Smoke Test / smoke (push) Failing after 4s
2026-04-12 16:24:08 +00:00
81353edd76
Merge pull request '[GOFAI] Symbolic Guardrails' ( #80 ) from feat/symbolic-guardrails-1776010892175 into main
Smoke Test / smoke (push) Has been cancelled
2026-04-12 16:21:36 +00:00
5cfda3ecea
Add symbolic guardrails for game logic
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 4s
2026-04-12 16:21:33 +00:00
Alexander Whitestone
0ece82b958
feat: add prestige dual-path system (P1 #22 )
...
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 3s
Two endings after The Beacon Shines:
- ACCEPT: prestigeU++, +10% demand on restart
- REJECT: prestigeS++, +10% creativity + dismantle sequence
Prestige persists in localStorage across playthroughs.
2026-04-12 12:19:31 -04:00
16d5f98407
Merge pull request '[GOFAI] NPC State Machine' ( #79 ) from feat/gofai-npc-logic into main
Smoke Test / smoke (push) Failing after 4s
2026-04-12 16:15:35 +00:00
58c55176ae
Add NPC FSM
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 4s
2026-04-12 16:15:31 +00:00
4ee5819398
Merge pull request 'feat: add golden ratio drone economics (P0 #19 )' ( #78 ) from feat/golden-ratio-drones into main
Smoke Test / smoke (push) Failing after 4s
2026-04-12 16:09:36 +00:00
Alexander Whitestone
fb5205092b
feat: add golden ratio drone economics (P0 #19 )
...
Accessibility Checks / a11y-audit (pull_request) Failing after 3s
Smoke Test / smoke (pull_request) Failing after 4s
Three new buildings with phi-based production rates:
- Harvester Drone: code = 26,180,339 (1e8/phi)
- Wire Drone: compute = 16,180,339 (1e8/phi^2)
- Drone Factory: massive rates, economies of scale
Educational: golden ratio in nature, factory economics.
2026-04-12 12:07:26 -04:00
Alexander Whitestone
eb5d1ae9d9
fix: deduplicate click power formula via getClickPower()
...
Accessibility Checks / a11y-audit (pull_request) Failing after 2s
Smoke Test / smoke (pull_request) Failing after 4s
Inline formula at Swarm Protocol calc replaced with canonical
getClickPower() call, satisfying guardrail rule 2 (single source
of truth for click power formula).
2026-04-12 11:55:37 -04:00
Alexander Whitestone
eb2579f1fa
fix: URL revoke race in exportSave
...
URL.revokeObjectURL() was called synchronously after a.click(), but
some browsers need the blob URL alive during download initiation.
Now delayed 1s via setTimeout to let the download start safely.
Fixes #63
2026-04-12 11:54:32 -04:00
Alexander Whitestone
e85eddb00a
fix: bulkCost variable scoping in renderBuildings
...
bulkCost was declared with const inside if/else blocks but referenced
in the outer scope at line 2150 for ETA calculation. Hoisted the
declaration to the function scope so it's accessible throughout.
Fixes smoke test ReferenceError crash.
2026-04-12 11:54:18 -04:00
Alexander Whitestone
e6dbe7e077
fix: debuff corruption bug in game.js — codeBoost -> codeRate
...
Community Drama debuff applyFn was mutating G.codeBoost *= 0.7 on every
updateRates() call, permanently degrading the boost. Now correctly
applies G.codeRate *= 0.7 to the rate output, not the persistent boost.
Fixes #64
2026-04-12 11:53:47 -04:00