|
1 | 1 |
|
| 2 | +## v0.2.0 |
| 3 | + |
| 4 | +### Session Resumption & Routing |
| 5 | + |
| 6 | +- **Session Resumption:** Implement full client/server session resumption flow |
| 7 | + (`resume.go`) so that peers can reconnect and restore an existing session |
| 8 | + without repeating the handshake. Ratchet state is persisted and restored |
| 9 | + automatically. |
| 10 | +- **Ratchet State Serialization:** Add a `State` type with JSON |
| 11 | + `Serialize`/`Deserialize` and `Restore` support in `pkg/ratchet`, enabling |
| 12 | + durable persistence of Double Ratchet state across restarts. |
| 13 | +- **Router & Route Dispatching:** Introduce `Router` and `RouteDispatcher` with |
| 14 | + middleware support (`router.go`). Add a `Route` enum and thread route |
| 15 | + constants through `Transport.Send` and serialization for structured message |
| 16 | + routing. |
| 17 | +- **Session Manager:** Add persistent `SessionManager` (`session.go`) with |
| 18 | + handshake tracking, session save/load, `ListSessions`, and `CreatedAt` |
| 19 | + preservation. |
| 20 | + |
| 21 | +### Desktop GUI (Bus) |
| 22 | + |
| 23 | +- **Fyne-based Chat GUI:** Add a cross-platform desktop client under `bus/` |
| 24 | + built with Fyne, including chat UI, custom widgets, peer verification dialog, |
| 25 | + and encrypted history viewer. |
| 26 | +- **Session List & In-App Logs:** Display active sessions and live application |
| 27 | + logs inside the GUI. |
| 28 | +- **App Icons:** Ship platform-specific app icons for macOS, Windows, and Linux. |
| 29 | +- **Unified DB Path:** GUI and CLI now share a single default database path |
| 30 | + (`~/.config/kamune/db`), overridable via `KAMUNE_DB_PATH`. |
| 31 | +- **File Logger:** Concurrent file logger (`bus/logger`) with `Init`, `Close`, |
| 32 | + `Info`/`Warn`/`Error`/`Errorf` helpers, plus tests and benchmarks. |
| 33 | + |
| 34 | +### Daemon |
| 35 | + |
| 36 | +- **JSON-over-stdio Daemon:** Add `cmd/daemon` — a headless wrapper that |
| 37 | + exposes Kamune operations over JSON-over-stdio IPC, with its own README and |
| 38 | + tests. |
| 39 | + |
| 40 | +### Relay Improvements |
| 41 | + |
| 42 | +- **Refactored Relay:** Switch `attest.Identity` → `attest.Algorithm` across |
| 43 | + the relay API and models. Improve client IP extraction and rate-limit error |
| 44 | + responses. |
| 45 | +- **Queue Operations:** Extend relay storage API with queue ops |
| 46 | + (`storage/queue.go`, `services/queue.go`) and a new queue HTTP handler, with |
| 47 | + tests. |
| 48 | +- **Centralized Parsing:** Add `handlers/parse.go` to share base64 and |
| 49 | + public-key parsing logic; remove duplicate code from handlers. |
| 50 | + |
| 51 | +### Storage |
| 52 | + |
| 53 | +- **`DeleteBatch`:** Remove multiple keys from a bucket in a single |
| 54 | + transaction; missing buckets produce `ErrMissingBucket`, non-existent keys |
| 55 | + are silently skipped. |
| 56 | +- **Bucket Listing Helpers:** Add `ListBuckets` and `ListKeys` queries to |
| 57 | + `pkg/store`. |
| 58 | +- **`PubKeySessionIndex`:** New protobuf model and storage index mapping public |
| 59 | + keys to session IDs. |
| 60 | +- **Peer `LastSeen`:** Track and persist the last-seen timestamp on every |
| 61 | + `Peer`, with full test coverage. |
| 62 | + |
| 63 | +### Cryptography & Fingerprinting |
| 64 | + |
| 65 | +- **SHA-256 Fingerprint:** Add `fingerprint.Sum` (SHA-256) alongside the |
| 66 | + existing emoji/hex helpers. |
| 67 | +- **stdlib `crypto/sha3`:** Replace `golang.org/x/crypto/sha3` with the Go |
| 68 | + standard library `crypto/sha3` package. |
| 69 | + |
| 70 | +### Connection & Transport |
| 71 | + |
| 72 | +- **Conn Mutex:** Protect `Conn` fields with a mutex for safe concurrent use; |
| 73 | + simplify `Option` type by removing its error return. |
| 74 | +- **Improved Dial/Serve/Resume:** Better error messages, cleaner control flow, |
| 75 | + and style improvements across `dial.go`, `server.go`, and `resume.go`. |
| 76 | + |
| 77 | +### Configuration & Environment |
| 78 | + |
| 79 | +- **Environment Variables:** `KAMUNE_DB_PASSPHRASE` and `KAMUNE_DB_PATH` are |
| 80 | + now preferred over interactive prompts and hard-coded paths. |
| 81 | +- **Default DB Directory:** `getDefaultDBDir()` resolves |
| 82 | + `KAMUNE_DB_PATH` → `~/.config/kamune/db` → `./db`. |
| 83 | + |
| 84 | +### Testing & Quality |
| 85 | + |
| 86 | +- **Testify Adoption:** Replace manual `t.Error`/`t.Fatalf` checks with |
| 87 | + `testify/assert` and `testify/require` across the entire test suite. |
| 88 | +- **Comprehensive Storage Tests:** Add tests covering peer timestamps, session |
| 89 | + index persistence, expiry/cleanup, batch deletes, session update/info, and |
| 90 | + resume checks. |
| 91 | +- **Per-Goroutine Done Channels:** Replace shared signal channels with |
| 92 | + individual done channels in concurrent tests; capture and assert goroutine |
| 93 | + errors after joining. |
| 94 | +- **New Fingerprint Tests:** Expand fingerprint coverage including `Hex` |
| 95 | + empty-input edge case. |
| 96 | + |
| 97 | +### Miscellaneous |
| 98 | + |
| 99 | +- **Protobuf Regeneration:** Regenerate Go protobuf bindings (protoc v6.33.4); |
| 100 | + add `Route` field to `SignedTransport`, update `box.proto` and `model.proto`. |
| 101 | +- **Logo & Assets:** Add `assets/logo.png`; move `demo.gif` from `.assets/` to |
| 102 | + `assets/`. |
| 103 | +- **ECDH Private Key Marshal:** Fix ECDH private key marshalling in |
| 104 | + `pkg/exchange`. |
| 105 | +- **README Updates:** Refresh feature checklist and fix demo image path. |
| 106 | + |
| 107 | +--- |
| 108 | + |
2 | 109 | ## v0.1.0 - Initial Release |
3 | 110 |
|
4 | 111 | Kamune is a secure, peer-to-peer communication library for real-time messaging |
|
0 commit comments