Files
featherChat/warzone/Cargo.toml
Siavash Sameni a368ab24d2 v0.0.37: TUI call state UI, missed calls, inline keyboards in web
FC-P2-T4: TUI call state machine
- CallInfo struct + CallPhase enum (Calling/Ringing/Active)
- Header shows call indicator: yellow "Calling...", magenta "Incoming", green timer
- /call sets Calling, /accept sets Active, /reject+/hangup clears
- Incoming signals show contextual messages (Offer→prompt, Answer→connected, etc.)

FC-P2-T5: Missed call display in TUI
- WS Text frames parsed for missed_call + bot_message JSON
- Missed calls: "📞 Missed call from X at HH:MM" + terminal bell
- Bot messages rendered as @botname: text

FC-P8-T5: Inline keyboard buttons in web
- CSS styled keyboard buttons (.kbd-btn)
- Bot messages with reply_markup render clickable button rows
- Click sends callback_data back to bot as bot_message
- Works in both WS text handler and handleIncomingMessage fallback

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 16:44:14 +04:00

86 lines
1.7 KiB
TOML

[workspace]
resolver = "2"
members = [
"crates/warzone-protocol",
"crates/warzone-server",
"crates/warzone-client",
"crates/warzone-mule",
"crates/warzone-wasm",
]
[workspace.package]
version = "0.0.37"
edition = "2021"
license = "MIT"
rust-version = "1.75"
[workspace.dependencies]
# Crypto
ed25519-dalek = { version = "2", features = ["serde", "rand_core"] }
x25519-dalek = { version = "2", features = ["serde", "static_secrets"] }
curve25519-dalek = "4"
chacha20poly1305 = "0.10"
hkdf = "0.12"
sha2 = "0.10"
argon2 = "0.5"
rand = "0.8"
# Ethereum compatibility
k256 = { version = "0.13", features = ["ecdsa", "serde"] }
tiny-keccak = { version = "2", features = ["keccak"] }
# BIP39
bip39 = "2"
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
bincode = "1"
# Async
tokio = { version = "1", features = ["full"] }
# Server
axum = { version = "0.7", features = ["ws"] }
tower = { version = "0.4", features = ["limit"] }
tower-http = { version = "0.5", features = ["cors", "trace"] }
# Client HTTP
reqwest = { version = "0.12", features = ["json"] }
# Database
sled = "0.34"
# CLI
clap = { version = "4", features = ["derive"] }
# TUI
ratatui = "0.28"
crossterm = "0.28"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Error handling
thiserror = "2"
anyhow = "1"
# Time
chrono = { version = "0.4", features = ["serde"] }
# Hex encoding
hex = "0.4"
# Base64
base64 = "0.22"
# UUID
uuid = { version = "1", features = ["v4", "serde"] }
# WebSocket client
tokio-tungstenite = { version = "0.21", features = ["native-tls"] }
# Zero secrets in memory
zeroize = { version = "1", features = ["derive"] }