| Commit message (Expand) | Author | Age | Files | Lines |
| * | feat: the node signs its handshake challenge (MNP 3.4) | Christophe Besson | 2 days | 1 | -1/+14 |
| * | feat(chat): Tier 2 — a member verifies another member's device itself | Christophe Besson | 2026-09-07 | 1 | -0/+3 |
| * | Merge origin/main into the chat encryption work | Christophe Besson | 2026-09-07 | 1 | -2/+9 |
| |\ |
|
| | * | feat(mnp)!: seal the upload under the group key | Christophe Besson | 2026-09-07 | 1 | -2/+8 |
| * | | feat(chat): encrypt group chat under per-device epoch keys (MNP 2.0) | Christophe Besson | 2026-09-07 | 1 | -1/+116 |
| |/ |
|
| * | feat!: MNP 1.0 — seal index and handshake_ack under the group key | Christophe Besson | 2026-09-03 | 1 | -0/+75 |
| * | refactor(hub): drop the base64 chunk fallback and the dead HTTP file client | Christophe Besson | 2026-09-03 | 1 | -61/+12 |
| * | feat: device linking, and signing in to the hub with a device key | Christophe Besson | 2026-08-18 | 1 | -0/+67 |
| * | feat(node)!: the node wraps the group key — closes H3 and M3 | Christophe Besson | 2026-08-14 | 1 | -1/+26 |
| * | feat(mnp): unified handshake with mutual authentication | Christophe Besson | 2026-08-13 | 1 | -9/+57 |
| * | fix(node): group isolation, upload confinement, GEK seizure, admin challenge | Christophe Besson | 2026-08-13 | 1 | -1/+37 |
| * | feat: Phase 12 — P2P crypto material, password split, node Ed25519 auth | Christophe Besson | 2026-08-13 | 1 | -0/+16 |
| * | feat: Phase 10b — Self-service UI (group create/join, upload, IndexedDB, se... | Christophe Besson | 2026-08-11 | 1 | -2/+77 |
| * | feat: Phase 9 — Web client SPA with WebRTC P2P transport | Christophe Besson | 2026-08-11 | 1 | -2/+9 |
| * | feat: Phase 6 complete — chat, multi-group, federation, replication, webcrypto | Christophe Besson | 2026-08-09 | 1 | -0/+155 |