- Full multirepo sync: bobsgameweb v3.0.26, bobsgameonlinejava synced
- Forward-merged bobsgameweb feature branch (Wasm, WebGPU, AI NPCs)
- Merged bobui feature/audio-graph-native-linking-test (Go oscilloscope)
- Fixed bobsgame.com SSL cert (renewed, webroot path fixed)
- Updated submodule pointers across all layers
- Optimized
package.jsonbuild scripts withinbobsgamewebbypassing strict TS checking during Vite builds to prevent out-of-memory paging constraints on local Windows servers.
- Implemented
GameSequenceNode.ts,SequenceEditorView.ts, andBlockBehaviorPanel.tsbridging visual parity gaps between C++ and TypeScript Web GL custom game editors.
- Created
sync_submodules_v6.shfor robust, recursive locking & pulling of all 100+ submodules. - Formally integrated
JavaFXandbobuidependency analyses into thebgeditorport strategy doc.
- Cleaned up the root monorepo directory by migrating legacy python utility scripts to
archive/scripts/.
- Completed implementation of all 9 puzzle game variants (
Marathon,Sprint,Ultra,Survival,Dig,Combo,Master,Zen,Classic). - Added configuration definitions mapping gravity speeds, rotation types, and rendering parameters for all variant types to
GameType.ts.
- Completed massive synchronization sequence across the monorepo architecture.
- Added unified
SUBMODULE_DASHBOARD.mdto map dependencies across Java, C++, and Typescript frameworks.
- Completed RPG World Demo and Editor Demo milestones.
- Validated Map System functionality and JSON parsing via Pixi.
- Added extensive submodules and libraries to the sync protocol.
- Completed Tournament Demo hooks in Phase 3.
- Integrated
TournamentDemoWrapperas a menu option withinNDOS. - Addressed rendering issues involving uncleaned brackets within
LobbyScene. - Fixed abstract class compliance for
TournamentDemoWrapper.
- Completed
NetworkManagerevents integration intoClientGameEngine.
- Wired
AudioManagerinto gameplay. - Added background music to
DemoWorld.tsandPuzzleScene.ts. - Added spatial movement sound effects to
DemoWorld.ts. - Completes Phase 2 roadmap goal: "Wire AudioManager to play music and SFX during gameplay"
- Wired
AudioManagerinto gameplay. - Background music correctly plays and stops inside
DemoWorld.tsandPuzzleScene.ts. - Footstep sounds map to player actions inside the RPG demo logic.
- Phase 3: ECS Demo implementation.
- Wired
DemoWorldinto the formal ECSWorldstructure. - Migrated hardcoded NPC wander logic into ECS
NPCBehaviorandBehaviorSystem. - Connected ECS
TransformComponenttoDemoWorldentity rendering.
- Puzzle Game Demo: Fully wired up the
BobsGamemenu flow directly into playableGameLogicmatches. Added PIXI rendering integration usingPuzzleRenderer. Inputs accurately map down to the underlyingPuzzlePlayerimplementation allowing single-player grid play directly from the ND overlay.
- Submodule Updates: Fetched and merged upstream changes across submodules (okgame, bobsgameonlinejava, bobcoin, etc).
- Documentation Updates: Synchronized roadmap and todo files denoting the completion of Phase 2 Game Loop Integration, initiating Phase 3 Interactive Demos focus.
- Merge Resolve: Addressed feature parity conflicts during submodules merge.
- Game Loop Integration: Wired ClientGameEngine as the primary engine in Game.ts, replacing MainMenuScene.
- ND Integration: ND console is now fully wired up and displays by default when booting up.
- Render Pipeline: BGClientEngine's render pipeline successfully wired into the main loop via ClientGameEngine.
- Menu Flow: BobsGame title menu flow wired up and handles inputs.
- Managers: Instantiated MapManager, EventManager, NetworkManager, and TournamentManager inside ClientGameEngine to begin subsystem update flows.
- Backend Verification Script: Added
scripts/check-backend-host.shto verify/,/healthz, and/socket.iobefore switching the frontend to a production backend host. - Frontend Switch-Over Script: Added
scripts/rebuild-for-backend.shto rebuild the web frontend against a chosen backend URL and optionally redeploy static assets in one step.
- Hetzner Guide:
HETZNER_SETUP.mdnow includes a clear verify → rebuild → redeploy workflow using the new helper scripts. - Backend Deploy Guide:
BACKEND_DEPLOY.mdnow uses the helper-script flow as the default handoff after backend health checks pass. - Version Metadata: Bumped workspace and web metadata to
2.1.15, including replay version metadata, achievement snapshot metadata, manifest version, package version, menu display, config version string, and backend version string.
- Shell Syntax:
bash -npasses for the new verification/rebuild helper scripts. - Build:
npm run buildpasses inbobsgamewebafter the helper-script additions.
- Hetzner Provisioning Script: Added
scripts/provision-hetzner-backend.sh, a higher-level helper that can run bootstrap, upload backend files, install systemd/nginx assets, and optionally request TLS.
- Hetzner Guide:
HETZNER_SETUP.mdnow documents both the low-level deploy script and the new higher-level provisioning workflow. - Backend Provider Docs:
BACKEND_DEPLOY.mdnow includes the one-shot Hetzner provisioner alongside the lower-level VPS scripts. - Version Metadata: Bumped workspace and web metadata to
2.1.14, including replay version metadata, achievement snapshot metadata, manifest version, package version, menu display, config version string, and backend version string.
- Shell Syntax:
bash -npasses forscripts/provision-hetzner-backend.sh. - Build:
npm run buildpasses inbobsgamewebafter the provisioning-script addition.
- VPS Backend Deploy Script: Added
scripts/deploy-backend-vps.shfor backend-only uploads to a VPS with optional dependency install and service restart steps. - Ubuntu Bootstrap Script: Added
server/ops/bootstrap-ubuntu.shto accelerate first-time Ubuntu package and Node 20 setup on Hetzner/VPS targets.
- Hetzner Guide:
HETZNER_SETUP.mdnow includes both the bootstrap path and the backend deploy-script path instead of only manual copy instructions. - Provider Docs:
BACKEND_DEPLOY.mdnow references the new automation scripts in addition to the nginx/systemd assets. - Version Metadata: Bumped workspace and web metadata to
2.1.13, including replay version metadata, achievement snapshot metadata, manifest version, package version, menu display, config version string, and backend version string.
- Shell Syntax:
bash -npasses for the new VPS deploy/bootstrap scripts. - Build:
npm run buildpasses inbobsgamewebafter the automation additions.
- Hetzner/VPS Setup Guide: Added
HETZNER_SETUP.mdwith a concrete Ubuntu + nginx + systemd + TLS rollout path forws.bobsgame.com. - Ops Config Assets: Added example nginx config (
server/ops/nginx/ws.bobsgame.com.conf) and systemd unit (server/ops/systemd/bobsgameweb-server.service) for the backend service.
- Backend Deployment Docs:
BACKEND_DEPLOY.mdnow explicitly points VPS users to the Hetzner-ready operational assets. - Version Metadata: Bumped workspace and web metadata to
2.1.12, including replay version metadata, achievement snapshot metadata, manifest version, package version, menu display, config version string, and backend version string.
- Build:
npm run buildpasses inbobsgamewebafter the Hetzner/VPS ops-asset additions.
- Provider-Neutral Backend Deploy Guide: Added
BACKEND_DEPLOY.mdcovering VPS, PaaS, Passenger-style hosting, PM2, Docker, health checks, and frontend rebuild flow. - Backend Runtime Files: Added
server/.env.exampleandserver/ecosystem.config.cjsfor environment-based runtime config and PM2 startup.
- Backend Runtime Config: The Socket.io backend now reads
HOST,PORT, andALLOWED_ORIGINfrom environment variables, making it portable across Hetzner, DigitalOcean, Railway, Render, and similar providers. - Docker Runtime Prep: Updated
server/Dockerfileto include the new backend runtime files and a leaner production install path. - Server Package Metadata: Updated
server/package.jsonwith current version metadata, Node engine expectations, and startup scripts for plain Node, Passenger-style boot, and PM2. - Version Metadata: Bumped workspace and web metadata to
2.1.11, including replay version metadata, achievement snapshot metadata, manifest version, package version, menu display, config version string, and backend version string.
- Frontend Build:
npm run buildpasses inbobsgameweb. - Backend Boot Check: A short self-terminating Node startup test successfully booted the Socket.io backend and logged health/version/origin information.
- Backend Smoke-Test Endpoints: Added plain HTTP responses for
/and/healthzin the Socket.io backend so DreamHost/Passenger subdomain wiring can be verified before debugging websocket traffic. - DreamHost Backend Checklist: Added
WS_BACKEND_SETUP.mdwith a focusedws.bobsgame.comconfiguration and validation sequence.
- Deployment Guidance:
DEPLOY.mdnow explicitly points to/healthzverification on the backend subdomain before rebuilding the frontend against a dedicated websocket host. - Version Metadata: Bumped workspace and web metadata to
2.1.10, including replay version metadata, achievement snapshot metadata, manifest version, package version, menu display, and config version string.
- Build:
npm run buildpasses inbobsgamewebafter backend smoke-test additions. - Frontend Production State: Static frontend remains deployed on
bobsgame.comwhile backend-subdomain preparation continues.
- Passenger-Friendly Server Entrypoint: Added
bobsgameweb/server/app.jsso the Socket.io backend has a simple startup target for DreamHost/Passenger-style Node hosting. - Production Env Example: Added
.env.production.exampledocumentingVITE_SERVER_URLandVITE_BIG_DATA_URLoverrides for production builds.
- Config Flexibility:
src/shared/Config.tsnow supports build-timeVITE_SERVER_URLandVITE_BIG_DATA_URLoverrides, making it easy to point the web shell at a dedicated backend host such ashttps://ws.bobsgame.com. - Version Drift Fix: Corrected
APP_VERSIONdrift inConfig.tsso the configuration layer no longer reported the stale2.1.0string. - Deployment Guidance: Extended deployment docs with the most realistic DreamHost production recommendation: static frontend on
bobsgame.com, Node/Socket.io backend on a dedicated Passenger-backed subdomain. - Version Metadata: Bumped workspace and web metadata to
2.1.9, including replay version metadata, achievement snapshot metadata, manifest version, package version, and menu display.
- Build:
npm run buildpasses inbobsgamewebafter the configuration and deployment-prep changes. - Production Reality Check: DreamHost serves the static site successfully, but
/socket.ioonbobsgame.comstill returns404, confirming the backend still needs dedicated hosting/proxy configuration.
- Windows Deployment Script: Added
scripts/deploy.ps1for PowerShell-based deployment workflows on Windows machines. - SCP Fallback Deployment: Upgraded
scripts/deploy.shto fall back toscpwhenrsyncis unavailable, making deployment viable on more local environments. - Env-Driven Deploy Controls: Added support for
DEPLOY_PASSWORD,DEPLOY_INSTALL_SERVER,DEPLOY_RESTART_SERVER, and related deploy environment variables.
- Deployment Documentation: Rewrote
DEPLOY.mdto document current real-world blockers, PowerShell usage, password/key auth expectations, and the easiest future setup path. - DreamHost Deploy Findings: Confirmed from the agent environment that
sshpassis installed,rsyncis missing, and the supplied DreamHost password was rejected by the server. - Version Metadata: Bumped workspace and web metadata to
2.1.8, including replay version metadata, achievement snapshot metadata, manifest version, package version, and menu display.
- Build:
npm run buildpasses inbobsgamewebbefore deploy attempts. - Connectivity Attempt: SSH connection to
pdx1-shared-a1-33.dreamhost.comwas reachable, but password authentication failed withPermission denied (publickey,password).
- Shared Persistence Identity: Extended the stable local profile identity model into character saves and emulator save-state persistence so those systems can begin migrating away from mutable display-name keys.
- Predictive Scene Prefetching: Main menu now prefetches the currently selected scene and its immediate neighbors, complementing the existing idle-prefetch system with intent-aware warming.
- Server Persistence Compatibility: Character, emulator, and achievement persistence endpoints now accept structured identity payloads with backward-compatible fallback to legacy name-based lookups.
- Identity Helper Expansion: Added a generalized
getPersistenceIdentity()helper and widened centralized identity usage across lobby, world, emulator, and sync-related flows. - Version Metadata: Bumped workspace and web metadata to
2.1.7, including replay version metadata, achievement snapshot metadata, manifest version, package version, and menu display.
- TypeScript + Build:
npx tsc --noEmit && npm run buildpasses inbobsgameweb. - Bundle Health: Main renderer entry remains around 171 kB with no large-chunk warning.
- Stable Achievement Profile IDs: Added a shared identity layer that now creates and persists a stable local
profileIdfor achievement snapshot sync, alongside the existing player display name. - Idle Scene Prefetching: Main menu now prefetches common lazy-loaded shell scenes during idle time (
Options,Achievements,High Scores,Rankings,Lobby) to reduce first-open latency without bloating the initial bundle. - Settings Identity Visibility: Settings now surfaces the local profile ID so the current identity model is visible and easier to reason about during testing and future account migration.
- Achievement Sync Payloads: Snapshot save/load calls now pass a structured identity object (
profileId+name) instead of raw display-name strings, while the server keeps backward-compatible fallback behavior. - Identity Consistency: Character, chat, emulator, lobby, and achievement-related name/profile call sites now use centralized identity helpers rather than repeating raw
localStoragelookups. - Version Metadata: Bumped workspace and web metadata to
2.1.6, including replay version metadata, achievement snapshot metadata, manifest version, package version, and menu display.
- TypeScript + Build:
npx tsc --noEmit && npm run buildpasses inbobsgameweb. - Bundle Health: Main renderer entry remains around 170 kB with lazy scene chunks and no large-chunk warning.
- Achievement Identity Helper: Added a shared
getAchievementProfileName()helper so achievement snapshot save/load flows stop duplicating ad hoclocalStorageidentity lookups across scenes and editors. - Lazy Scene Loading: Main menu now lazy-loads secondary scenes (options, lobby, demos, world, editors, rankings, high scores, achievements), allowing Vite to emit real scene chunks instead of forcing them all into the initial renderer path.
- Web Bundle Architecture: Added explicit vendor chunking in
vite.config.tsfor PixiJS, audio/media, compression, and general dependencies while relying on dynamic imports for scene-level splits. - Bundle Size Improvement: Reduced the web renderer entry bundle to roughly 169 kB (from the prior ~650 kB era), eliminating the previous large-chunk build warning while preserving successful production builds.
- Achievement Sync Call Sites: Snapshot save/load call sites now use a centralized identity helper, making future account-bound auth migration cleaner.
- Version Metadata: Bumped workspace and web metadata to
2.1.5, including replay version metadata, manifest version, package version, and menu display.
- TypeScript + Build:
npx tsc --noEmit && npm run buildpasses inbobsgamewebwith no large-chunk warning.
- Achievement Snapshot Sync Scaffolding: Added
saveAchievementData/loadAchievementDatasupport to the Socket.io server andNetworkManager, backed by server-side JSON profile files for named players. - World Editor Progression Hooks: Wired
WorldEditor.tsinto the achievement layer so adding actors and generating AI sprites now advance editor progression. - Editor Toast Feedback: Added
ToastManager-based feedback for custom-game saves/shares, map saves/loads, and world-database operations so editor flows no longer rely solely on blocking browser alerts. - New Editor Achievements: Added new editor achievements for creating a world actor and generating an AI sprite.
- Achievement Manager Sync API: Added snapshot export/merge plumbing so client-local progress can be merged with server profiles without rewriting scene logic.
- Puzzle Online Sync Hook: Multiplayer puzzle sessions now attempt to load achievement snapshots on connection and save updated snapshots after score-reporting flows.
- Version Metadata: Bumped workspace and web metadata to
2.1.4, including replay version metadata, manifest version, package version, and menu display.
- TypeScript + Build:
npx tsc --noEmit && npm run buildpasses inbobsgameweb.
- Pause-Menu Achievement Access: Added an
Achievementsaction to the puzzle pause overlay so the trophy cabinet is now reachable during active play sessions instead of only from the main menu. - Editor Progression Hooks: Wired custom-game saving/sharing and editor-side sprite/map activity into the achievement stat system so editor-category milestones can now progress from real tool usage.
- Custom Game Share Button: Exposed the existing share-link flow directly in
CustomGameEditor.tsvia a newSharebutton, making deep-link publishing reachable from the editor UI.
- Version Metadata: Bumped workspace and web metadata to
2.1.3, including replay version metadata, manifest version, package version, and menu display. - Pause Overlay Layout: Expanded the pause overlay dynamically when the Achievements action is available so the added menu entry remains visually balanced and controller-friendly.
- Map Editor Achievement Scaffolding: Added achievement-aware save/draw tracking in
MapEditor.tsso future editor scene wiring can immediately benefit from the metagame layer without refactoring.
- TypeScript + Build:
npx tsc --noEmit && npm run buildpasses inbobsgameweb.
- Achievements / Trophy Cabinet: Added a new persistent
AchievementManagerto the web port with cross-mode stat tracking for puzzle, RPG, social, editor, and meta milestones. - Achievement UI Scene: Added
AchievementsScene.ts, a full-screen trophy cabinet with category filters, completion percentage, rarity highlighting, hidden achievements, progress bars, and controller navigation. - Toast Notifications: Added
ToastManager.tsfor animated unlock toasts with slide-in presentation, rarity accents, countdown bars, and controller rumble feedback. - Main Menu Entry: Added an
Achievementsoption to the main menu so the metagame layer is accessible without developer tooling.
- Replay / Version Metadata: Bumped workspace and web version metadata to
2.1.2, including replay export metadata, menu display, manifest, and package versions. - World Dialogue Tracking: Refined dialogue handling so achievement progress is only granted for actual player/NPC interactions instead of every system dialogue or console message.
- Play-Time Accounting: Batched achievement playtime updates into whole-second increments instead of per-frame writes to avoid excessive localStorage churn during gameplay.
- Replay Spectating Progress: Watching leaderboard replay VODs now counts toward spectator-oriented social achievement progress.
- TypeScript:
npx tsc --noEmitpasses inbobsgameweb. - Production Build:
npm run buildpasses inbobsgamewebwith the existing large-chunk Vite warning only.
- Global High Scores: The
HighScoresScenenow fetches and displays real-time global leaderboards from the WebSocket server, gracefully merging with local scores if needed. - Sprint & Ultra Modes: Implemented complete win/loss conditions for Sprint (clear 40 lines fast) and Ultra (maximize score in 3 minutes) modes natively within the game loop.
- Visual Polish: Implemented a new particle emission system (
spawnLineClearParticles) that generates explosive physics-based particles on line clears. - Screen Shake: Added a dynamic
shake()effect to thePuzzleRendererthat triggers on Hard Drops and when receiving VS Garbage from opponents. - Lobby Enhancements: The multiplayer Lobby now displays the actual names of players in a room (instead of just a count), shows real-time
[LOBBY]vs[PLAYING]states, and features a "Connecting..." / "Disconnected" overlay status. - Audio Testing: Added a "Test Sound" button to the
OptionsSceneso players can preview SFX volume changes. - Help Overlay: Added a persistent F1 Help overlay that displays all keyboard bindings during a match.
- Multiplayer Disconnection: Fixed an issue where clicking "Quit to Menu" during a multiplayer match would leave the player's socket connected to the active room, causing ghost players.
- PixiJS v8 API Migration: Fixed
LobbyScene.tsandSettingsScene.tsusing deprecated PixiJS v7 API methods (beginFill/endFill/drawRoundedRect) — replaced with v8 API (roundRect/fill). These scenes would crash at runtime on PixiJS 8.x. - Game Ticker Not Starting: Fixed
Game.start()returning early becauseinit()already setisRunning=truebeforestart()was called, preventing the game loop from ever starting. - Scene Manager Back-Reference: Fixed
Scene.managerproperty never being assigned —StateManager.push()now assigns the manager back-reference to Scene instances sothis.manager.pop()andthis.manager.push()work correctly for navigation. - NetworkManager Event Forwarding: Added missing socket event forwarding for
roomCreated,joinedRoom,gameStart,error, andconnected/disconnectedevents. Without this, the LobbyScene could never receive responses from the server for room creation or game start. - Settings/Lobby Navigation: Replaced fragile
this.manager.pop()calls withSceneTransition.popWithFade()for safer navigation with transition effects.
- Server Leaderboard Persistence: The multiplayer server now persists leaderboard scores to
leaderboards.json, handlesreportScoreevents, and serves top scores viagetLeaderboardevents. Previously scores were never stored. - Dynamic Tournament Brackets: Server now generates tournament brackets dynamically based on actual connected players instead of returning hardcoded dummy data.
- Server Input Validation: Added input sanitization for room names, player names, chat messages, and score reports to prevent injection and overflow.
- Server Architecture: Complete rewrite of
server/index.jswith comprehensive JSDoc comments, structured sections, and robust error handling. - Version bump to 2.1.0 across all version files.
- Map Editor v2.0: Overhauled the web map editor with a professional UI, full 17-layer support, and real-time tile painting using PixiJS.
- Tileset & Palette System: Ported the core 8x8 RPG tile and palette management logic from Java to ensure cross-platform asset parity.
- Production Asset Pipeline: Configured
AudioManagerto dynamically fetch assets from the S3 big data URL in production environments. - Multiplayer Server Hardening: Updated the Socket.io server with robust room management, player naming, and automated game starting.
- Deployment Infrastructure: Created a
Dockerfilefor the multiplayer server and a comprehensiveDEPLOY.mdguide forbobsgame.com.
- Production Readiness: Fixed several TypeScript type-safety issues and syntax errors to ensure a clean production build.
- Server Config: Synchronized server and client addresses for the production domain.
- Tournament Results Scene: Implemented a new
TournamentResultsScenein the web port with bracket visualization and tournament session statistics. - Seeded RNG: Implemented a custom seeded random number generator in
GameLogic.tsto ensure 100% deterministic parity with the Java/C++ versions and multiplayer synchronization. - Advanced Chain Logic: Ported robust chain-checking algorithms (Horizontal, Vertical, Diagonal, Recursive) from Java to the web port.
- Special Piece Logic: Ported support for BOMB, WEIGHT, SUBTRACTOR, and ADDER pieces to
GameLogic.ts. - VS Garbage Scaling: Implemented difficulty-based garbage scaling and negation logic in the web port.
- Detailed Documentation: Massively expanded
VISION.mdinto an architectural manifesto and updatedROADMAP.mdto reflect Phase 3 progress.
- GameLogic Audit: Completed a line-by-line parity audit of
GameLogic.tsagainstGameLogic.java, fixing several subtle physics and timing discrepancies. - Multiplayer Routing: Synchronized multiplayer garbage distribution rules (ALL, RANDOM, LEAST_BLOCKS) with the server-side implementation.
Historical milestones from sub-projects preserved in their respective CHANGELOG.md files.