Commit Graph

25 Commits

Author SHA1 Message Date
da886452bd Add headless mode for automated testing
Implemented headless mode using MinimalPlugins and ScheduleRunnerPlugin
to enable running the app without rendering, controlled via Unix socket.

Changes:
- Added conditional compilation based on 'headless' feature flag
- Use MinimalPlugins with 60 FPS ScheduleRunner in headless mode
- Skip rendering plugins (Camera, Rendering, DebugUI, SessionUI)
- Made cube mesh/material assets optional for headless spawning
- Direct NetworkingPlugin + PersistencePlugin instead of MarathonPlugin
- Use app.run() instead of platform executor in headless mode

This enables:
- Running multiple instances for multi-client testing
- Automated testing via marathonctl without GUI overhead
- Background server instances for development
- CI/CD integration for networking tests

Refs #131, #132

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-24 11:50:56 +00:00
6303c4b409 Fix egui session panel sync with engine state
The session UI panel was not updating when networking started via
control socket because poll_engine_events used commands.insert_resource
which queued updates until end of schedule. The UI could run before
the command was applied.

Fixed by:
- Initialize CurrentSession at startup in offline state (session.rs)
- Use direct ResMut mutation in poll_engine_events (engine_bridge.rs)
- Check session.state instead of resource existence (session_ui.rs)

This ensures Bevy's change detection triggers immediately when engine
events update the session state.

Refs #131, #132

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-24 11:32:30 +00:00
f3f8094530 Vendor Bevy rendering crates (Phase 1 complete)
Closes #6, #7, #8, #9, #10
Refs #2, #122

Vendored bevy_render, bevy_core_pipeline, and bevy_pbr from Bevy v0.17.2
(commit 566358363126dd69f6e457e47f306c68f8041d2a) into libmarathon.

- ~51K LOC vendored to crates/libmarathon/src/render/
- Merged bevy_render_macros into crates/macros/
- Fixed 773→0 compilation errors
- Updated dependencies (encase 0.10→0.11, added 4 new deps)
- Removed bevy_render/pbr/core_pipeline from app Cargo features

All builds passing, macOS smoke test successful.

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-24 00:04:24 +00:00
7b8fed178e checkpoint before render engine vendoring
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-17 22:40:51 +00:00
99db2c90b4 finished zero-copy migration!
now the entire networking and persistence stack is zero-copy with
single-allocation, single-copy reads.

Closes #128

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-17 21:51:08 +00:00
7d24abf113 added methods for #128
* migrated to `bytes` to ensure zero-copy

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-17 21:05:37 +00:00
b421aaf037 cleaned up code
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-17 20:11:31 +00:00
99e31b1157 removed bincode for rkyv
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-17 19:20:34 +00:00
56f0f0d40b added issue templates and rfcs
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-16 21:22:28 +00:00
82ba23bfa2 first successful ipad build
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-14 22:50:35 +00:00
70735a33a5 moved some things around.
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-14 21:25:52 +00:00
5493faa1f1 vendored bevy_egui and removed legacy code :/
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-14 20:25:55 +00:00
b0f62dae38 dried stuff
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-13 22:50:13 +00:00
5cb258fe6b initial arhitectural overhaul
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-13 22:22:05 +00:00
b098a19d6b initial commit for session and lock features
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-12 20:18:41 +00:00
2dbbf28bc6 first pass at the session rfc
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-12 00:05:58 +00:00
28c56defe7 initial working demo sans networking
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-11 22:10:06 +00:00
1504807afe code review results
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-11 18:39:57 +00:00
2847e7236f added persistence and networking
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-09 22:21:58 +00:00
260ceae4c5 checkpoint
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-04 19:49:48 +00:00
693cbd944c defined sync abstraction
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-11-16 16:35:09 +00:00
579b6bcabc finished initial networking impl
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-11-16 16:34:55 +00:00
888e5d303c format
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-11-16 11:50:49 +00:00
1bd664fd2a initial persistence commit
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-11-16 11:50:16 +00:00
2bad250a04 initial commit
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-11-15 23:42:12 +00:00