diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fb28c024..653251d8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ Format based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] ### Added +- TcpBridge transport for Godot client connection — TCP localhost IPC alongside existing Unix socket LocalBridge +- Input processing system (process_player_input) — drains InputQueue, converts PlayerActions to MoveIntent components, handles pause/unpause +- Snapshot generation system (generate_snapshot) — builds ObserverSnapshot from ECS state with render coordinate conversion +- Bridge I/O systems (receive_bridge_inputs, send_bridge_snapshot) — wire bridge to ECS pipeline with graceful disconnect detection +- Full game loop in main.rs — TCP accept, tick loop with ServerRunning resource, CLI/env addr config +- PlayerCharacter marker component, Player EntityKind variant, SnapshotBuffer resource +- E2E game_loop integration test verifying player movement through full pipeline +- 8 new tests (3 TCP bridge + 4 input processing + 1 E2E game loop), total 53 - v0.1 content gap analysis workshop — 6 agents, 2 rounds, 9 content layers, 8 new decisions (D-032 through D-039) - D-032: Separate monologue pools per playable character (hard partition, not filter) - D-033: Entity color represents relationship to player character (asymmetric per character) @@ -96,6 +104,8 @@ Format based on [Keep a Changelog](https://keepachangelog.com/). - Rejected alternatives R-004 through R-010 documented (pure Bevy, pure Godot, GDExtension, C++ GDExtension, Fyrox, custom framework, protobuf) ### Fixed +- Wire format mismatch: LocalBridge now uses rmp_serde::to_vec_named() (named maps) matching client Protocol.gd expectations +- EOF on bridge read now returns BridgeError::Transport for disconnect detection instead of empty Vec - WalkabilityMap rewritten from flat Vec to chunk-based HashMap per D-012 architecture (Tyre review) - LocalBridge mutex .unwrap() → .expect() for clearer panic messages (Hoshe review) - Documented 16MB MAX_MESSAGE_SIZE rationale in framing.rs (Hoshe review)