aboutsummaryrefslogtreecommitdiffstats
Commit message (Expand)AuthorAgeFilesLines
* feat(files): download a folder as a zip, and remove an empty oneChristophe Besson2026-08-1511-7/+834
* feat(node): meshbay-node group add — host another of your groupsChristophe Besson2026-08-155-12/+224
* fix(cli): --group takes a name, and operator pair says it takes noneChristophe Besson2026-08-151-2/+35
* perf(upload): several chunks in flight, instead of one per round tripChristophe Besson2026-08-153-32/+120
* feat(groups): editable description, and one source of operator authorityChristophe Besson2026-08-1513-66/+348
* The Files panel stops guessing, and search says how old its answer isChristophe Besson2026-08-153-32/+78
* feat(logs): keep the username on records the account no longer answers forChristophe Besson2026-08-158-4/+90
* fix(members): restore the member list and invite form, and retire the pairing...Christophe Besson2026-08-154-48/+106
* docs: account deletion, notifications, and the APIs that no longer existChristophe Besson2026-08-154-124/+232
* One stroked icon set, matching the Administration shieldChristophe Besson2026-08-152-23/+94
* Notifications: one per conversation, none for your own messagesChristophe Besson2026-08-1410-27/+422
* feat(account): a user can delete their own account, an admin can delete oneChristophe Besson2026-08-147-5/+402
* feat(files): one uploads/ directory, for files and chat alikeChristophe Besson2026-08-144-66/+107
* feat(files): upload into the current directory, and create foldersChristophe Besson2026-08-146-76/+280
* feat(ui): upload progress, PDF preview, invite form above the member listChristophe Besson2026-08-143-22/+69
* chore: release 0.2.00.2Christophe Besson2026-08-1413-19/+35
* merge: Phase 11.5 security remediation, invite redesign, per-node identityChristophe Besson2026-08-1463-2279/+8470
|\
| * fix(node): an operator keeps their role when reconnectingChristophe Besson2026-08-141-1/+5
| * docs: user guide and conventions catch up with per-node identityChristophe Besson2026-08-142-18/+32
| * feat!: identity keys per node — C4's blast radius drops to one operatorChristophe Besson2026-08-1417-303/+493
| * docs: Argon2id, the multi-browser property, and what a browser foundChristophe Besson2026-08-145-37/+139
| * perf(client): bundle KDF to 128 MB, and derive it once per sign-inChristophe Besson2026-08-145-14/+37
| * feat(client): Argon2id for the keypair bundle, and remove the backup toggleChristophe Besson2026-08-149-100/+315
| * feat(client): make the key backup a choice, and raise the passphrase floorChristophe Besson2026-08-146-11/+190
| * test: prove a second browser works after pairingChristophe Besson2026-08-141-0/+16
| * fix(client): recover identity keys from what the browser already hasChristophe Besson2026-08-141-0/+40
| * fix(client): capture the challenge values before joining, not afterChristophe Besson2026-08-142-8/+100
| * fix(client): refresh the token when the node says "not a member"Christophe Besson2026-08-145-13/+87
| * fix(node): keep reading the hub socket while negotiating WebRTCChristophe Besson2026-08-142-11/+67
| * fix(node): announce the node key in the challenge, and keep names in the rosterChristophe Besson2026-08-147-32/+105
| * docs: record the invite redesign — H3 and M3 closedChristophe Besson2026-08-145-98/+226
| * feat(node): operator surface — member list, invite, revoke, unpin over SSHChristophe Besson2026-08-147-14/+499
| * feat(node)!: the node wraps the group key — closes H3 and M3Christophe Besson2026-08-1418-285/+2637
| * test(node): allocate daemon test ports instead of hardcoding 28000Christophe Besson2026-08-141-3/+17
| * feat(node): CLI for headless operators — status, ui, gek-initChristophe Besson2026-08-133-10/+153
| * feat(node): keep the daemon alive when the hub rejects credentialsChristophe Besson2026-08-131-8/+22
| * test: JS/Python transcript parity across the language boundaryChristophe Besson2026-08-131-0/+175
| * docs: draft-v5 — mark C6, M8 and 11.5.8 closedChristophe Besson2026-08-131-12/+29
| * feat(client): pin node identities on first use — closes 11.5.8Christophe Besson2026-08-132-0/+24
| * fix(hub): require proof of possession on node announce — closes M8Christophe Besson2026-08-135-13/+232
| * feat(quic): GEK proof and mutual authentication — closes C6Christophe Besson2026-08-133-8/+186
| * docs: record 11.5.6 spike — QUIC channel binding constraintsChristophe Besson2026-08-131-1/+39
| * docs: draft-v5 architecture specChristophe Besson2026-08-133-2/+345
| * docs: rework Phase 12 — hub minimization deferred by operator decisionChristophe Besson2026-08-132-48/+69
| * refactor(quic): share the unified handshake authorizationChristophe Besson2026-08-132-25/+36
| * feat(mnp): unified handshake with mutual authenticationChristophe Besson2026-08-137-123/+680
| * fix: resource limits, signaling authz, node admin UI tokenChristophe Besson2026-08-137-32/+380
| * fix: swarm privacy, revocation persistence, keystore KDF, audit integrityChristophe Besson2026-08-1314-66/+406
| * fix(hub): authenticate node WebSocket registrationChristophe Besson2026-08-132-13/+256
| * fix(node): group isolation, upload confinement, GEK seizure, admin challengeChristophe Besson2026-08-1311-155/+919