syoul c1a81a9065 P2: peers CRUD and aggregated stats
Backend
- api/peers.rs: list/add/remove + aggregate() that derives totals,
  per-state counts, and tx/rx sums in one pass over the peer list
- poller.rs spawns a 3s tokio loop that emits peers://updated and
  stats://updated; cancelled via abort() on stop_daemon
- DELETE peer URL-encodes the endpoint (the path includes ://) with
  a small inline percent-encoder to avoid a url crate dep
- Tauri commands: peers_list, peer_add (with empty-string guard),
  peer_remove, peers_stats

Frontend
- peers store subscribes to the two events and refreshes after
  add/remove for immediate UI feedback
- Peers view renders endpoint, type, color-coded state badge, and
  formatBytes-formatted rx/tx; the four stat cards re-use a
  reusable Stat component
- AddPeerDialog uses radix-vue's Dialog primitive with regex
  validation for tcp:// and quic:// schemes
2026-04-25 22:56:50 +02:00
2026-04-25 22:56:50 +02:00
2026-04-25 19:05:15 +02:00

mycellium-ui

Cross-platform desktop GUI for Mycelium — Threefold's end-to-end encrypted IPv6 overlay network.

Status: scaffolding. See the implementation plan for architecture, IPC protocol, and phasing.

Stack (planned)

  • App: Tauri v2 + Vue 3 + TypeScript
  • Daemon: Rust (myceliumd) running as system service, IPC via Unix socket / named pipe
  • Mycelium engine: official mycelium binary embedded as Tauri sidecar
  • Targets v1: Linux + Windows
Description
No description provided
Readme 53 MiB
Languages
Rust 39.8%
Vue 39.3%
TypeScript 17.3%
Shell 2.2%
CSS 1.1%
Other 0.2%