feat(core): implement core game data sync, protocol package, CI matrix, and map toolchain (#28, #11, #27, #23, #10, #20) - #74
Conversation
…efi#11, Bitcoindefi#27, Bitcoindefi#23, Bitcoindefi#10, Bitcoindefi#20) - Extract shared @openao/protocol package (Closes Bitcoindefi#28) - Add live map hot-reloading from DB and /recargarmapa command (Closes Bitcoindefi#11) - Add GitHub Actions matrix CI and TruffleHog scanner (Closes Bitcoindefi#27) - Add bidirectional legacy VB6 map converter with tests (Closes Bitcoindefi#23) - Add map exits CRUD API and paired coordinate linking (Closes Bitcoindefi#10) - Add client viewport memory culling and bounded LRU cache (Closes Bitcoindefi#20)
…xit writes, and override rollback
|
Thanks for the automated review feedback! All 5 items have been addressed and verified in commit ca1bced:
All 8 server tests and 5 API tests pass cleanly. |
Code Review ✅ Approved 7 resolved / 7 findingsImplements core game data sync, protocol monorepo extraction, CI workflows, and map toolchain features, addressing VB6 encoding, atomic exit writes, override rollback, and lock ordering findings. ✅ 7 resolved✅ Bug: VB6 map encoder overflows on graphic indices > 32767
✅ Edge Case: Map exits written to server dir may be invisible to running server
✅ Bug: Concurrent exit writes can clobber specials.json (read-modify-write)
✅ Edge Case: Hot map reload never reverts overrides removed from DB
✅ Quality: VB6_MAP_HEADER_SIZE constant/comment inconsistent (261 vs 263)
...and 2 more resolved from earlier reviews OptionsAuto-apply is off → Gitar will not commit updates to this branch. Comment with these commands to change the behavior for this request:
Important Your trial ends in 7 days — upgrade now to keep code review, CI analysis, auto-apply, custom automations, and more. Was this helpful? React with 👍 / 👎 | Gitar |
Summary of Changes
This pull request addresses 6 key architectural issues across the OpenAO ecosystem with comprehensive test coverage, clean monorepo organization, and typechecked TypeScript implementation.
🎯 Addressed Issues & Features
Shared Protocol Monorepo (
@openao/protocol) — Closes El protocolo binario esta duplicado entre cliente y servidor #28CLIENT_PACKET_ID,SERVER_PACKET_ID) intopackages/protocol.pnpm-workspace.yamland refactoredserver/src/package.tsandfrontend/lib/aowProtocol.tsto consume the single source of truth.Live Map Hot-Reloading — Closes Etapa 3: publicar mapas en vivo sin reiniciar el server #11
listAllPublishedMapOverrides()in API repository./internal/game-data/mapssync endpoints inapi/src/server.ts./recargarmapa [mapNum]//recargarmapasGM hot-reload commands.Legacy VB6 Argentum Online Map Converter — Closes Etapa 2: importar y exportar mapas del editor oficial de escritorio #23
server/src/scripts/legacyMapConverter.tsto encode/decode binary.mapbuffers and INI.datmetadata into JSON source maps.GitHub Actions Matrix CI & Security Scan — Closes No hay CI: los tests existen pero nadie los ejecuta #27
.github/workflows/ci.ymlrunning parallel matrix checks with PostgreSQL 18 service container for API integration tests..github/workflows/secret-scan.ymlwith TruffleHog scanner.Map Exits Editor & Paired Linking — Closes Etapa 2: edicion de salidas entre mapas #10
api/src/repositories/mapExits.tsproviding CRUD and bidirectional coordinate pairing forspecials.json.GET,PUT,DELETE/admin/game-data/maps/:mapNum/exits).Client Viewport Memory Culling — Closes Rendimiento del cliente: mapa completo en memoria, sin limite de FPS y prefetch sin tope #20
MAX_CACHED_MAPS = 6) with eviction and cache clearing infrontend/utils/gameLoader.ts.🧪 Verification & Testing
pnpm --filter argentumonlineweb_server test— 6/6 tests passedpnpm --filter argentumonlineweb-api exec vitest run src/tests/mapExits.unit.test.ts— 4/4 tests passedpnpm -r exec tsc --noEmit— 0 type errors across all packagespnpm --filter argentumonlineweb_server run lint— 0 lint errors