Commit Graph

44 Commits

Author SHA1 Message Date
d5aeefd50a chore(release): update CHANGELOG for v0.1.2 v0.1.2 2026-02-07 19:17:09 +00:00
843eef6c39 chore(lefthook): update hooks
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 19:15:15 +00:00
8e5a999b09 chore(deps): updated cargo
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 19:15:11 +00:00
2f5bdbdb3e chore: add lefthook for git hooks automation
- Add conventional commits validation for commit messages
- Add pre-commit checks: fmt, clippy, trailing whitespace
- Add pre-push test runner
- Install git hooks with lefthook
2026-02-07 19:15:10 +00:00
1e2055d66c chore: add git-cliff configuration and regenerate CHANGELOG
- Add cliff.toml with conventional commits configuration
- Configure changelog sections and formatting
- Regenerate CHANGELOG.md using git-cliff
- Set up automatic changelog generation for future releases
2026-02-07 19:15:10 +00:00
d11f1b0dbd chore: update CHANGELOG for v0.1.2 release
Release highlights:
- New marathonctl CLI tool with beautiful TUI
- Session ID redaction for security (fixes CodeQL alerts)
- Dependency updates (fixes Dependabot alert)
- Consistent versioning across all crates
2026-02-07 19:15:10 +00:00
7c64de9795 fix(deps): update lru to 0.16.3 to address Dependabot alert #1
Addresses CVE regarding IterMut violating Stacked Borrows in lru crate.

Changes:
- Update lru v0.16.2 -> v0.16.3 (patched version)
- Remove vulnerable lru v0.12.5 and v0.13.0
- Update ratatui v0.29 -> v0.30 in marathonctl
- Remove unnecessary ratatui/crossterm from app crate
- Update pkarr v5.0.0 -> v5.0.2
- Bump libmarathon v0.1.1 -> v0.1.2
- Bump marathonctl dependency on libmarathon to 0.1.2

All lru versions now use the patched 0.16.3 release.

Fixes: https://github.com/r3t-studios/marathon/security/dependabot/1

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-07 19:15:10 +00:00
841d758316 chore(libmarathon): add CodeQL suppression for database secret storage
Add suppression comment for alert #4 (rust/cleartext-logging) at database.rs:506.
This is database persistence, not logging - the secret field must be stored
for session functionality. False positive will be dismissed in GitHub UI.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-07 19:15:10 +00:00
303ea7d8e0 chore(marathonctl): add crates.io metadata for publishing
Add package metadata required for crates.io publication:
- Description
- MIT license
- Repository URL
- Keywords and categories
- Version requirement for libmarathon dependency

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-07 19:15:10 +00:00
25550e2165 fix(security): redact sensitive session IDs in marathonctl output
Addresses CodeQL cleartext-logging alerts (#1, #2, #3) by implementing
session ID redaction for CLI output.

Changes:
- Extract marathonctl into standalone crate (crates/marathonctl)
- Add session ID redaction showing only first 8 characters by default
- Add --show-sensitive/-s flag for full session IDs when debugging
- Implement beautiful ratatui-based UI module with inline viewport
- Add .envrc to .gitignore for secure token management
- Document GitHub token setup in CONTRIBUTING.md

The CLI now provides a secure-by-default experience while maintaining
debugging capabilities through explicit opt-in flags. Session IDs are
redacted to format "abc-def-..." unless --show-sensitive is specified.

UI module provides easy-to-use builder APIs (ui::table, ui::grid, ui::list)
that render beautiful terminal output without hijacking the terminal.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-07 19:15:10 +00:00
7292aa54e6 chore: Prepare v0.1.1 release for crates.io
- Rename `macros` crate to `libmarathon-macros` for better discoverability on crates.io
- Update all imports from `macros::` to `libmarathon_macros::`
- Add crates.io metadata (description, license, repository, homepage, etc.)
- Bump version to 0.1.1
- Add version requirement for libmarathon-macros dependency
2026-02-07 19:15:06 +00:00
9010ec5cf4 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>
2026-02-07 19:15:06 +00:00
854b858159 feat: DEMO IS READY BITCHES!! FUCK YEAH MOTHERFUCKERS
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 19:14:59 +00:00
d2fc967f1a chore: checkpoint for the demo. almost!!
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 19:14:52 +00:00
d1d3aec8aa chore: honestly fixed so much and forgot to commit
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 19:14:46 +00:00
f9f289f5b2 bug: fix keyboard input and app shutdown freeze
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 19:14:40 +00:00
e0c2b2653c feat(libmarathon): 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>
2026-02-07 19:14:28 +00:00
a8822f8d92 feat: 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
2026-02-07 18:41:26 +00:00
b7cf022687 feat(marathonctl): 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>
2026-02-07 18:41:14 +00:00
d8c3dc5ab5 tests(libmarathon): 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>
2026-02-07 18:22:33 +00:00
702d85ef60 bug(debug_ui): 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>
2026-02-07 18:22:20 +00:00
b03b71c1d9 feat(rendering): 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>
2026-02-07 18:22:13 +00:00
d73e50bb9e chore: checkpoint before render engine vendoring
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 18:22:05 +00:00
9c19fc0296 feat: 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>
2026-02-07 18:21:22 +00:00
bb4393bb9e feat(libmarathon): added methods for #128
* migrated to `bytes` to ensure zero-copy

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 18:20:14 +00:00
0bbc2c094a chore: cleaned up code
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 18:19:29 +00:00
c57a9c0787 chore: removed bincode for rkyv
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 18:19:21 +00:00
6b994aa7c4 docs: added issue templates and rfcs
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 18:19:07 +00:00
5cafe89e4f feat(ipad): first successful ipad build
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 18:18:57 +00:00
8f829e9537 moved some things around.
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:11:14 +00:00
52953c531a vendored bevy_egui and removed legacy code :/
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:11:12 +00:00
2d22fdbbc3 dried stuff
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:11:11 +00:00
bc5b013582 initial arhitectural overhaul
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:11:08 +00:00
9d4e603db3 initial commit for session and lock features
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:11:07 +00:00
e4754eef3d first pass at the session rfc
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:11:06 +00:00
63312e09cb initial working demo sans networking
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:11:04 +00:00
4965d13070 code review results
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:11:03 +00:00
e25078ba44 added persistence and networking
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:11:02 +00:00
93ab598db0 checkpoint
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:11:00 +00:00
a76306342d defined sync abstraction
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:10:59 +00:00
7acbadbc4a finished initial networking impl
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:10:57 +00:00
0f65b1baa2 format
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:10:55 +00:00
a15e018876 initial persistence commit
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2026-02-07 14:10:50 +00:00
3c456abadc chore: initial commit 2026-02-07 13:58:20 +00:00