| Commit message (Expand) | Author | Age | Files | Lines |
| * | fix(client): the audit export never hands a spreadsheet a formula | Christophe Besson | 10 hours | 2 | -5/+16 |
| * | chore: remove a spike page served in production and an unused derivation | Christophe Besson | 10 hours | 1 | -265/+0 |
| * | fix: an MBK2 bundle is opened once and stored again as MBK3 | Christophe Besson | 10 hours | 3 | -4/+104 |
| * | fix: downloads are marked and keep their extension; Explorer files are refused | Christophe Besson | 11 hours | 1 | -1/+6 |
| * | fix(hub): a stranger who knows your name locks only browsers you never used | Christophe Besson | 11 hours | 1 | -1/+25 |
| * | fix(hub): a group name fits its column and carries no control characters | Christophe Besson | 13 hours | 1 | -2/+2 |
| * | fix(node): how a hosted group admits people is the operator's, not the hub's | Christophe Besson | 13 hours | 1 | -0/+3 |
| * | fix: an identity signs a named kind, and a device approval answers a request | Christophe Besson | 26 hours | 5 | -32/+99 |
| * | fix(hub): the pepper and a device key take the passphrase, not a token | Christophe Besson | 26 hours | 4 | -16/+32 |
| * | feat: browser access, decided in the desktop application | Christophe Besson | 30 hours | 16 | -5/+189 |
| * | feat(client): the desktop application keeps M and every node identity in its ... | Christophe Besson | 30 hours | 19 | -59/+270 |
| * | refactor(hub): the transport holds an identity, never a private key | Christophe Besson | 31 hours | 10 | -96/+87 |
| * | feat: bundles sealed per node under the passphrase and the hub's pepper | Christophe Besson | 32 hours | 19 | -197/+273 |
| * | fix(hub): a downloaded file opens in a tab only under a type that runs nothing | Christophe Besson | 34 hours | 3 | -20/+56 |
| * | fix(client): the page names node operations, and the app confirms what widens... | Christophe Besson | 34 hours | 16 | -92/+149 |
| * | fix: only the owner decides who hosts a group, and nobody is made a member un... | Christophe Besson | 35 hours | 13 | -2/+335 |
| * | feat(hub): sitemap.xml, named by robots.txt | Christophe Besson | 37 hours | 2 | -0/+22 |
| * | docs: keypair_bundle_delete is reserved for device_policy (O3) | Christophe Besson | 3 days | 1 | -0/+4 |
| * | refactor: drop the unread transfer_limits field from the handshake ack | Christophe Besson | 3 days | 1 | -9/+0 |
| * | feat(client): save files under a name every platform can write | Christophe Besson | 3 days | 15 | -6/+113 |
| * | feat(hub): reports from public-group members, decided by an administrator | Christophe Besson | 3 days | 15 | -5/+435 |
| * | fix: bound pending admin challenges and sign every value an op acts on | Christophe Besson | 3 days | 4 | -15/+62 |
| * | refactor: remove dead code across packages | Christophe Besson | 3 days | 10 | -112/+9 |
| * | fix: refuse an unsigned handshake challenge | Christophe Besson | 3 days | 1 | -25/+16 |
| * | feat(hub): new login tagline, dimmer gradient top | Christophe Besson | 3 days | 11 | -11/+11 |
| * | fix(hub): say so when a lazily loaded view cannot be fetched0.16 | Christophe Besson | 3 days | 13 | -5/+66 |
| * | feat(hub): keep a show's detail modal open under the player | Christophe Besson | 3 days | 4 | -4/+33 |
| * | fix(hub): the sidebar's Node section follows the node link | Christophe Besson | 4 days | 2 | -8/+35 |
| * | fix(hub): say "No operator paired" only when the node says so | Christophe Besson | 4 days | 1 | -4/+12 |
| * | fix: Windows installer and desktop app start and stop the node one way | Christophe Besson | 4 days | 10 | -10/+10 |
| * | fix(node,client): query TMDB only once a language is chosen, in that language | Christophe Besson | 5 days | 1 | -0/+16 |
| * | feat(hub): default email opt-outs and match Register to Login styling | Christophe Besson | 6 days | 3 | -14/+34 |
| * | feat(protocol): bind the MNP token to the node it is for (E10) | Christophe Besson | 6 days | 4 | -7/+11 |
| * | fix(node,client): survive a transient hub state on login, and surface a faile... | Christophe Besson | 6 days | 1 | -5/+9 |
| * | feat(protocol): MNP 4.0 flag day for the node-audience token (B2) | Christophe Besson | 6 days | 1 | -10/+9 |
| * | fix(hub): present a node-audience token in the handshake, not the hub session... | Christophe Besson | 6 days | 1 | -1/+30 |
| * | fix(hub): require the passphrase to change the e-mail on file | Christophe Besson | 6 days | 1 | -6/+22 |
| * | feat: invitation links no longer bound to an e-mail address | Christophe Besson | 6 days | 12 | -71/+97 |
| * | feat(hub): friendlier welcome page, link previews, robots.txt and favicon | Christophe Besson | 6 days | 16 | -162/+438 |
| * | refactor(client): split transport.js into classic scripts | Christophe Besson | 6 days | 10 | -2145/+2214 |
| * | feat(client): fetch the media apps, the player, settings and search on first use | Christophe Besson | 7 days | 4 | -12/+69 |
| * | refactor(client): move the connection pool and the media tiles to modules | Christophe Besson | 7 days | 7 | -369/+392 |
| * | refactor(node): move per-app enrichment out of NodeDaemon | Christophe Besson | 7 days | 2 | -2/+2 |
| * | refactor(node): move operator authority and the admin response out of webrtc_... | Christophe Besson | 7 days | 1 | -2/+2 |
| * | refactor(node): move the operator's group controls out of webrtc_server | Christophe Besson | 7 days | 1 | -1/+1 |
| * | refactor(node): move the MNP handshake out of webrtc_server | Christophe Besson | 7 days | 1 | -1/+1 |
| * | refactor(node): move the Videos catalogue handlers out of webrtc_server | Christophe Besson | 7 days | 1 | -5/+5 |
| * | refactor(node): move the MusicBrainz switch to the Music mixin | Christophe Besson | 7 days | 1 | -1/+1 |
| * | refactor(node): move the Music handlers out of webrtc_server | Christophe Besson | 7 days | 1 | -1/+1 |
| * | fix(hub): Search reaches each group with one offer, and a busy hub is not a d...0.15 | Christophe Besson | 8 days | 2 | -67/+246 |