| Commit message (Expand) | Author | Age | Files | Lines |
| * | test(hub): wrap a docstring ruff flagged0.17 | Christophe Besson | 7 hours | 1 | -3/+3 |
| * | fix(client): rotating a group key asks nothing | Christophe Besson | 7 hours | 14 | -30/+8 |
| * | fix(client): hosting a group asks nothing when its folder came from the picker | Christophe Besson | 7 hours | 12 | -15/+4 |
| * | fix(hub): a username is unique whatever its case | Christophe Besson | 10 hours | 3 | -5/+38 |
| * | fix(hub): what an offer or a node message costs the hub is bounded | Christophe Besson | 10 hours | 4 | -26/+114 |
| * | fix(client): the audit export never hands a spreadsheet a formula | Christophe Besson | 10 hours | 3 | -5/+48 |
| * | chore: remove a spike page served in production and an unused derivation | Christophe Besson | 10 hours | 5 | -454/+2 |
| * | fix(node): the clear fields beside a chat message are bounded | Christophe Besson | 10 hours | 2 | -2/+48 |
| * | fix(node): a member is told a media tool failed, not what ffmpeg said | Christophe Besson | 10 hours | 4 | -3/+30 |
| * | fix(node): the reaper deletes only the .part files the node wrote | Christophe Besson | 10 hours | 3 | -12/+37 |
| * | fix(node): a revoked account is disconnected, not only refused next time | Christophe Besson | 10 hours | 3 | -15/+87 |
| * | fix: an MBK2 bundle is opened once and stored again as MBK3 | Christophe Besson | 10 hours | 8 | -31/+252 |
| * | docs: chat at rest is protected from a copy without the unlock key, not from ... | Christophe Besson | 11 hours | 2 | -5/+20 |
| * | fix: downloads are marked and keep their extension; Explorer files are refused | Christophe Besson | 11 hours | 10 | -16/+144 |
| * | fix(hub): a stranger who knows your name locks only browsers you never used | Christophe Besson | 11 hours | 6 | -21/+272 |
| * | fix(node): one member holds a share of the node, sized past real use | Christophe Besson | 13 hours | 11 | -35/+295 |
| * | fix(hub): a group name fits its column and carries no control characters | Christophe Besson | 13 hours | 3 | -4/+58 |
| * | fix(node): an upload never replaces a file, nor shares a part with another | Christophe Besson | 13 hours | 5 | -13/+159 |
| * | fix(node): ffprobe over a member's file is bounded, and stopped when it is | Christophe Besson | 13 hours | 3 | -1/+84 |
| * | fix(node): link previews connect to the address they checked, without blocking | Christophe Besson | 13 hours | 4 | -60/+207 |
| * | fix(node): how a hosted group admits people is the operator's, not the hub's | Christophe Besson | 13 hours | 13 | -34/+209 |
| * | docs: state the pepper's proof, signing by kind and device retirement as they... | Christophe Besson | 26 hours | 2 | -8/+40 |
| * | fix: an identity signs a named kind, and a device approval answers a request | Christophe Besson | 26 hours | 17 | -66/+636 |
| * | fix(hub): the pepper and a device key take the passphrase, not a token | Christophe Besson | 26 hours | 9 | -39/+134 |
| * | docs: state the pepper, MBK3, the desktop keyring and browser access as they are | Christophe Besson | 30 hours | 5 | -109/+291 |
| * | feat: browser access, decided in the desktop application | Christophe Besson | 30 hours | 19 | -5/+231 |
| * | feat(client): the desktop application keeps M and every node identity in its ... | Christophe Besson | 30 hours | 25 | -59/+873 |
| * | refactor(hub): the transport holds an identity, never a private key | Christophe Besson | 31 hours | 13 | -99/+140 |
| * | chore: bump version to 0.17.0, and the client minimum with it | Christophe Besson | 32 hours | 9 | -10/+14 |
| * | feat: bundles sealed per node under the passphrase and the hub's pepper | Christophe Besson | 32 hours | 30 | -479/+682 |
| * | feat(hub): a bundle pepper per account, handed only to a proven session | Christophe Besson | 33 hours | 5 | -0/+283 |
| * | fix(hub): a downloaded file opens in a tab only under a type that runs nothing | Christophe Besson | 34 hours | 7 | -24/+124 |
| * | fix: the page connects to its own origin and reCAPTCHA, nowhere else | Christophe Besson | 34 hours | 4 | -10/+21 |
| * | fix(client): the page names node operations, and the app confirms what widens... | Christophe Besson | 34 hours | 25 | -193/+574 |
| * | fix(hub): the admin allow-list grants an account, not a username | Christophe Besson | 35 hours | 7 | -19/+284 |
| * | docs: state hosting, invitations, the roster check and link previews as they are | Christophe Besson | 35 hours | 2 | -22/+31 |
| * | fix(node): the roster, not the key alone, decides who gets a session | Christophe Besson | 35 hours | 6 | -21/+200 |
| * | fix: only the owner decides who hosts a group, and nobody is made a member un... | Christophe Besson | 35 hours | 44 | -95/+1573 |
| * | fix: a member can no longer lock a node, crash it with a link, or stop hub cl... | Christophe Besson | 36 hours | 8 | -88/+490 |
| * | feat(hub): search title, description, canonical and noscript in the shell | Christophe Besson | 36 hours | 3 | -4/+67 |
| * | feat(hub): sitemap.xml, named by robots.txt | Christophe Besson | 37 hours | 3 | -1/+37 |
| * | refactor(hub): remove the closed relay registry | Christophe Besson | 3 days | 6 | -262/+2 |
| * | refactor(node): remove five loopback routes nothing called | Christophe Besson | 3 days | 3 | -46/+6 |
| * | docs: keypair_bundle_delete is reserved for device_policy (O3) | Christophe Besson | 3 days | 3 | -1/+10 |
| * | refactor: drop the unread transfer_limits field from the handshake ack | Christophe Besson | 3 days | 4 | -41/+22 |
| * | feat(client): save files under a name every platform can write | Christophe Besson | 3 days | 19 | -7/+245 |
| * | feat(hub): reports from public-group members, decided by an administrator | Christophe Besson | 3 days | 22 | -128/+943 |
| * | feat: nodes apply the content blocklist in their public groups | Christophe Besson | 3 days | 17 | -57/+661 |
| * | refactor: remove the public-content swarm | Christophe Besson | 3 days | 12 | -336/+64 |
| * | fix: bound pending admin challenges and sign every value an op acts on | Christophe Besson | 3 days | 18 | -132/+594 |