jwinterm
a62eefb47b
fix: resolve security/correctness review + AAA graphics pass
...
Backend (Tier 0/1/3): single-payout double-pay -> needs_review; admin-retry tx_hash guard; UNIQUE index on games.payment_id (migration 023) + atomic claim; reconnect no longer resets block-timeout; completeGame keys on user_id+dungeon_seed (not socket_id); token-gated /api/user/:socketId/* endpoints; payout min/max enforcement; orphaned-active-game boot recovery; sessionManager cleanup FK fix; XFF rightmost-hop; global uncaughtException/unhandledRejection guard; server binds 127.0.0.1; provably-fair client-seed (HMAC) + RNG [0,1) bound; difficulty preset ranges reach the digger; chat no longer leaks full socket.id; removed dangerous-keyword SQL theater.
Match mode (Tier 2, still MATCH_ENABLED-gated): fixed match_queue/match_move crash paths + scheduler dead-code + leaked ceiling timer; pot collected before start with abort+refund; BigInt/basis-point fee math, capped payout; no-address winner claimable; winnerId==placement[0]; finalize schema + payout-first isolation; reconnect re-key with ownership; refunds on all cancel paths; real countdown; map/timer cleanup. +16 tests.
Graphics: new overlay FX layer (torch light, vignette, embers, sparkle/burst/flash/shake, self-suspending rAF); gameplay juice; atmospheric screens; CSS design-token chrome with framed modals; richer Kenney tile renderer; imported Kenney dungeon/interior sheets + fx particles.
Verification: 45 suites / 312 tests pass; 40 changed JS files parse; 20 server modules load clean; no regressions.
2026-07-09 17:46:58 -04:00
jwinterm
34788e5810
fix: credits BIGINT, idempotent migration 010, atomic migration runner
...
- Migration 018 widens users.credits and credit_transactions.amount/
balance_after from INTEGER to BIGINT (consistent with the atomic-money
columns; removes a latent overflow risk on admin-configurable packages).
- Migration 010 rewritten with conname-guarded DO blocks so it is idempotent
and safe to re-run / recover from a partial apply (bare ADD CONSTRAINT
previously hard-failed on re-run and could wedge startup).
- The migration runner now applies each migration and records its ledger row
in a single transaction, so a migration can never be applied-but-unrecorded
(which would re-run a non-idempotent migration on the next boot).
Verified end-to-end against a throwaway Postgres database: all 18 migrations
apply cleanly, a second run skips via the ledger, credits is bigint, and the
new constraints/indexes are present. Full suite: 16 suites / 134 tests.
2026-05-31 10:07:15 -04:00
jwinterm
bc55f0355e
fix edge cases and tests
2026-02-19 06:15:45 -05:00
jwinterm
b6597a4a6e
fix db query
2026-02-18 20:59:28 -05:00
jwinterm
c6425a6a47
remove hardcoded junkola p2
2026-01-28 17:33:51 -05:00
jwinterm
3aeb4fc2f1
fix: remove old files and hardcoded stuff
2026-01-28 17:33:51 -05:00
jwinterm
2286d8deff
Feat: add smirk login
...
Fix: add security hardening and transaction database commits
2026-01-28 17:21:53 -05:00
jwinterm
251ace4635
Fix: make reconnect more robust and make spectate window re-openable
2026-01-07 17:44:47 -05:00
jwinterm
deca4a4685
add db commands and test payout (worked!)
2025-11-23 13:33:04 -05:00
jwinterm
9a4911f410
fix audio and add new audio and fix qr and db index
2025-09-28 10:43:48 -04:00
jwinterm
e3915dcde2
Begin payment logic and tests
2025-09-27 08:45:22 -04:00
jwinterm
bd97d9d848
First (untested) payment and db setup
2025-06-01 14:17:29 -04:00
jwinterm
f02e16272e
refactor frontend and fix debug mode
2025-05-29 13:40:44 -04:00
jwinterm
50ccf28a04
refactor backend folder structure
2025-05-26 20:04:25 -04:00