33 Commits

Author SHA1 Message Date
fdba3903cc chore(release): final release commit for 0.1.0
this commit includes a whole lotta fuck yeah, a whole lotta we fuckin
got this, and a lot of "please change the future."

i hope it works.

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
v0.1.0
2026-02-06 20:10:51 +00:00
5838b2dd6a DEMO IS READY BITCHES!! FUCK YEAH MOTHERFUCKERS
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-01-05 21:15:52 +00:00
ffe529852d checkpoint for the demo. almost!!
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-01-05 19:41:38 +00:00
e890b0213a honestly fixed so much and forgot to commit
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-28 17:39:27 +00:00
28909e8b76 fix keyboard input and app shutdown freeze
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-24 18:18:35 +00:00
3e840908f6 Connect engine NetworkingManager to Bevy GossipBridge
- Engine creates GossipBridge and returns it via NetworkingStarted event
- NetworkingManager forwards incoming gossip → GossipBridge.push_incoming()
- NetworkingManager polls GossipBridge.try_recv_outgoing() → broadcasts via iroh
- Bevy inserts GossipBridge resource when networking starts
- Added Debug impl for GossipBridge

Fixes gossip layer connectivity between iroh network and Bevy sync systems.

References: #131, #132
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-24 14:01:22 +00:00
8ca02fd492 Add spawn/delete commands, fix session state and entity broadcast
- marathonctl now supports spawn/delete entity commands
- Fixed session state bug (was transitioning to Left every 5s)
- Fixed entity broadcast to detect Added<NetworkedEntity>
- Added AppCommandQueue pattern for app-level control commands

References: #131, #132
2025-12-24 12:53:50 +00:00
a0c13be6d6 Add CLI arguments for multi-instance support
Added --db-path and --control-socket arguments to app binary to enable
running multiple instances simultaneously.

Updated marathonctl to use clap with --socket argument for targeting
different instances.

Enables multi-client testing with isolated databases and control sockets.

Refs #131, #132

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-24 11:58:30 +00:00
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