| Commit message (Expand) | Author | Age | Files | Lines |
| * | feat: invitation links no longer bound to an e-mail address | Christophe Besson | 6 hours | 1 | -0/+34 |
| * | feat(hub): invitation-link tickets bound to a verified address | Christophe Besson | 2 days | 1 | -0/+46 |
| * | style: ruff's own fixes, mechanically applied | Christophe Besson | 6 days | 8 | -44/+38 |
| * | fix(hub): a per-account sign-in lockout, and a reviewed unauthenticated surface | Christophe Besson | 12 days | 1 | -0/+33 |
| * | fix(hub): the migration chain runs, and a test says so | Christophe Besson | 12 days | 1 | -1/+7 |
| * | fix(hub): the mail allowance is written down, and recovery keeps a share | Christophe Besson | 13 days | 1 | -0/+36 |
| * | feat: email verification for registration, email change, and invitations | Christophe Besson | 2026-08-31 | 1 | -0/+53 |
| * | feat(hub): group names unique per owner, shown as name@owner | Christophe Besson | 2026-08-28 | 1 | -0/+45 |
| * | feat(hub): let a hub admin disable public groups instance-wide | Christophe Besson | 2026-08-28 | 1 | -0/+34 |
| * | feat: unified group management, public groups, and activity-based sidebar | Christophe Besson | 2026-08-20 | 1 | -0/+28 |
| * | feat(ui): 11-point UI overhaul — tabs, transfers, settings, uploads | Christophe Besson | 2026-08-19 | 1 | -0/+30 |
| * | fix(hub): rewrite initial migration to match the ORM models | Christophe Besson | 2026-08-19 | 8 | -386/+206 |
| * | feat: device linking, and signing in to the hub with a device key | Christophe Besson | 2026-08-18 | 1 | -0/+47 |
| * | feat(hub): leaving a group, a cap on public ones, and hosting as a precondition | Christophe Besson | 2026-08-16 | 1 | -0/+37 |
| * | fix: stop a stream on close, count only real users, record where a node is | Christophe Besson | 2026-08-15 | 1 | -0/+35 |
| * | feat(logs): keep the username on records the account no longer answers for | Christophe Besson | 2026-08-15 | 1 | -0/+31 |
| * | Notifications: one per conversation, none for your own messages | Christophe Besson | 2026-08-14 | 1 | -0/+41 |
| * | feat!: identity keys per node — C4's blast radius drops to one operator | Christophe Besson | 2026-08-14 | 1 | -0/+37 |
| * | feat: Phase 12 — P2P crypto material, password split, node Ed25519 auth | Christophe Besson | 2026-08-13 | 2 | -14/+0 |
| * | docs: update all pointers after keyderive + QE restructure | Christophe Besson | 2026-08-09 | 1 | -0/+83 |
| * | feat(hub): add SQLAlchemy 2.0 async DB layer + Alembic | Christophe Besson | 2026-08-09 | 1 | -0/+127 |