|
1 | 1 | # ATM (Agent Team Manager) — Changelog |
2 | 2 |
|
| 3 | +## v0.8.1 — March 5, 2026 |
| 4 | + |
| 5 | +### New Feature: Cloud Relay — Remote Access from Anywhere (GitHub Issue #14) |
| 6 | +- **Cloud relay mode** — connect to your ATM desktop from anywhere in the world, not just the same WiFi. Turn on "Cloud" mode in Settings, get a room code, enter it on your phone — it just works |
| 7 | +- **End-to-end encryption** — all messages between desktop and phone are encrypted with X25519 ECDH key exchange + XSalsa20-Poly1305 authenticated encryption. The relay server never sees plaintext |
| 8 | +- **Standalone relay server** — new `relay/` Rust crate: a lightweight WebSocket relay that forwards opaque encrypted blobs between desktop and mobile. Runs on `atm-relay.datafying.com` |
| 9 | +- **Room code system** — 8-character base58 room codes (e.g., `ATM-X7K3mP`) with 5-minute TTL for joining and 30-minute idle timeout |
| 10 | +- **QR code for instant pairing** — Settings panel shows a scannable QR code encoding the relay URL, room code, and desktop public key. Scan on phone to connect instantly |
| 11 | +- **LAN/Cloud mode toggle** — new mode selector in Settings panel. LAN mode unchanged; Cloud mode uses the encrypted relay. Switch freely between modes |
| 12 | +- **Custom relay URL** — advanced option to point at a self-hosted relay server instead of the default |
| 13 | + |
| 14 | +### Security |
| 15 | +- E2E encryption using tweetnacl-js (X25519 + XSalsa20-Poly1305, audited library) |
| 16 | +- Nonce space partitioned by role (desktop=0x01, mobile=0x02) to prevent nonce collisions |
| 17 | +- Relay server rate limiting: per-IP connection limits, room creation throttling, message rate limiting |
| 18 | +- Room codes use cryptographically random base58 characters |
| 19 | +- Relay never stores data to disk, never logs message content |
| 20 | + |
| 21 | +### Technical |
| 22 | +- New Rust crate: `relay/` with axum 0.8, dashmap, governor rate limiting |
| 23 | +- New Rust module: `src-tauri/src/remote/relay_client.rs` — outbound WSS client to relay |
| 24 | +- New Tauri commands: `connect_to_relay`, `disconnect_from_relay`, `get_relay_status`, `send_to_relay` |
| 25 | +- New TypeScript class: `CryptoSession` in `remote-sync.ts` for E2E encryption |
| 26 | +- Updated `remote-sync.ts` with `initRelay()`, dual-mode broadcasting, encrypted message handling |
| 27 | +- Updated `ui-store.ts` with `relayStatus`, `connectRelay()`, `disconnectRelay()` |
| 28 | +- Updated `SettingsPanel.tsx` with LAN/Cloud toggle, room code display, QR code |
| 29 | +- Updated mobile client `app.js` with room code entry, relay WebSocket, E2E crypto |
| 30 | +- Added `tweetnacl` and `tweetnacl-util` npm dependencies |
| 31 | +- Added `tokio-tungstenite` Cargo dependency for outbound WSS |
| 32 | +- Deployment files: Dockerfile, systemd service, Caddyfile for relay server |
| 33 | + |
| 34 | +--- |
| 35 | + |
3 | 36 | ## v0.8.0 — March 4, 2026 |
4 | 37 |
|
5 | 38 | ### New Feature: Remote Access from Mobile (GitHub Issue #14) |
|
0 commit comments