Files
marathon/Cargo.toml
Sienna Meridian Satterwhite 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

68 lines
1.4 KiB
TOML

[workspace]
members = ["crates/libmarathon", "crates/macros", "crates/app", "crates/xtask", "crates/marathonctl"]
resolver = "2"
[workspace.package]
edition = "2024"
[workspace.dependencies]
# Async runtime
tokio = { version = "1", features = ["full"] }
tokio-stream = "0.1"
tokio-util = "0.7"
futures-lite = "2.0"
# Iroh - P2P networking and gossip
iroh = { version = "0.95.0", features = ["discovery-pkarr-dht"] }
iroh-gossip = "0.95.0"
# Database
rusqlite = { version = "0.37.0", features = ["bundled"] }
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.9"
rkyv = { version = "0.8", features = ["uuid-1", "bytes-1"] }
# Error handling
thiserror = "2.0"
anyhow = "1.0"
# Date/time
chrono = { version = "0.4", features = ["serde"] }
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tracing-appender = "0.2"
tracing-oslog = "0.3"
# Random
rand = "0.8"
# Encoding
hex = "0.4"
# Data structures
bytes = "1.0"
crossbeam-channel = "0.5"
uuid = { version = "1.0", features = ["v4", "serde"] }
# Bevy and graphics
bevy = "0.17.2"
egui = { version = "0.33", default-features = false, features = ["bytemuck", "default_fonts"] }
glam = "0.29"
winit = "0.30"
# Synchronization
parking_lot = "0.12"
crdts = "7.3"
inventory = "0.3"
# CLI
clap = { version = "4.5", features = ["derive"] }
# Testing
tempfile = "3"