| Commit message (Expand) | Author | Age | Files | Lines |
| ... | |
| * | fix(spa): a reconnect must give the Chat composer back | Christophe Besson | 2026-09-09 | 6 | -17/+256 |
| * | fix: the PDF preview needs object-src and frame-src, in both policies | Christophe Besson | 2026-09-09 | 4 | -11/+160 |
| * | fix(node): the leaseless bound refused the music player | Christophe Besson | 2026-09-09 | 2 | -15/+80 |
| * | Merge branch 'fix/large-download-paths' | Christophe Besson | 2026-09-09 | 74 | -255/+8914 |
| |\ |
|
| | * | fix(spa): say why a download cannot be paused | Christophe Besson | 2026-09-09 | 13 | -0/+69 |
| | * | fix(spa): a paused transfer is not a finished one | Christophe Besson | 2026-09-09 | 12 | -2/+132 |
| | * | feat: MNP 3.0 — a transfer needs a lease | Christophe Besson | 2026-09-09 | 16 | -15/+549 |
| | * | fix(spa): wake the download worker before handing it a stream | Christophe Besson | 2026-09-09 | 4 | -6/+148 |
| | * | feat: resume an interrupted upload, and pause one | Christophe Besson | 2026-09-09 | 10 | -18/+440 |
| | * | feat(node): uploads outlive their connection, and their leftovers are reaped | Christophe Besson | 2026-09-09 | 4 | -14/+649 |
| | * | fix(spa): stop reloading a healthy page at boot | Christophe Besson | 2026-09-09 | 2 | -116/+99 |
| | * | docs(spa): say that a download with no folder cannot be paused | Christophe Besson | 2026-09-09 | 12 | -21/+81 |
| | * | feat(spa): pause and resume a download, in session | Christophe Besson | 2026-09-09 | 17 | -26/+484 |
| | * | fix(spa): repair a bypassed page in seconds, not half a minute | Christophe Besson | 2026-09-09 | 2 | -3/+71 |
| | * | fix(spa): repair a page the download worker cannot serve | Christophe Besson | 2026-09-09 | 12 | -12/+172 |
| | * | log(node): a transfer open is INFO, not DEBUG | Christophe Besson | 2026-09-09 | 1 | -2/+8 |
| | * | fix(spa): nothing on the worker path may wait for ever | Christophe Besson | 2026-09-09 | 2 | -13/+186 |
| | * | fix(spa): the target queue must not be able to freeze a batch | Christophe Besson | 2026-09-09 | 2 | -32/+129 |
| | * | fix(spa): one save dialog per batch, not one per file | Christophe Besson | 2026-09-09 | 5 | -8/+177 |
| | * | test(node): match transfer replies by id, not by arrival order | Christophe Besson | 2026-09-09 | 1 | -6/+72 |
| | * | fix(node): push the grants a per-member cap change produces | Christophe Besson | 2026-09-09 | 1 | -2/+38 |
| | * | fix(node): give the per-member transfer cap a door anyone can open | Christophe Besson | 2026-09-09 | 3 | -6/+65 |
| | * | fix(hub): the transfers row exists from the click | Christophe Besson | 2026-09-08 | 15 | -87/+280 |
| | * | docs: three lessons from the download freeze | Christophe Besson | 2026-09-08 | 1 | -0/+41 |
| | * | test(node): the two checks that need the operator's own CLI | Christophe Besson | 2026-09-08 | 1 | -0/+114 |
| | * | test(node): keep the transfer probe in the repo | Christophe Besson | 2026-09-08 | 1 | -0/+416 |
| | * | feat(hub): client-side transfer leases and the transfers panel | Christophe Besson | 2026-09-08 | 21 | -82/+1090 |
| | * | fix(node): a running transfer keeps its slot, and a dead grant lets go | Christophe Besson | 2026-09-08 | 5 | -10/+159 |
| | * | fix(hub): keep the download worker alive, and never hang on a dead sink | Christophe Besson | 2026-09-08 | 4 | -7/+238 |
| | * | fix(hub): let this origin frame its own download URL | Christophe Besson | 2026-09-08 | 3 | -6/+111 |
| | * | feat(node): make the transfer caps settable, node-wide and per group | Christophe Besson | 2026-09-08 | 21 | -3/+470 |
| | * | feat(node): transfer leases, pools and a queue for downloads and uploads | Christophe Besson | 2026-09-08 | 7 | -1/+1264 |
| | * | fix(node): make max_concurrent_streams take effect without a restart | Christophe Besson | 2026-09-08 | 3 | -5/+222 |
| | * | test(node): close the eleven failures, and the order-dependence behind seven | Christophe Besson | 2026-09-08 | 4 | -3/+47 |
| | * | feat(node): cap the media cache and evict least-recently-used entries | Christophe Besson | 2026-09-08 | 2 | -5/+270 |
| | * | fix(client): write a download to .part and rename it when it completes | Christophe Besson | 2026-09-08 | 1 | -4/+36 |
| | * | test(hub): stop the Chrome profile cleanup racing its own children | Christophe Besson | 2026-09-08 | 5 | -5/+50 |
| | * | fix(hub): never collect a large download in the page | Christophe Besson | 2026-09-08 | 14 | -16/+395 |
| | * | fix(hub): make the streamed download path reliable, and clean up after an abort | Christophe Besson | 2026-09-08 | 5 | -42/+465 |
| |/ |
|
| * | chore: bump all packages to 0.12.0 | Christophe Besson | 2026-09-08 | 6 | -6/+6 |
| * | feat(client): create the system tray at launch, not on first minimise | Christophe Besson | 2026-09-08 | 6 | -25/+158 |
| * | fix(hub): drop the flag emoji from the language menu | Christophe Besson | 2026-09-08 | 2 | -11/+18 |
| * | feat(hub): name a group's host on its card, not its visibility | Christophe Besson | 2026-09-08 | 3 | -7/+21 |
| * | feat(hub): collapse "Your devices on this node" by default | Christophe Besson | 2026-09-08 | 1 | -3/+8 |
| * | feat(hub): cap a directory zip at 512 MB | Christophe Besson | 2026-09-08 | 13 | -6/+162 |
| * | fix(hub): stop badging every poster "unmatched" when TMDB is off | Christophe Besson | 2026-09-08 | 2 | -7/+75 |
| * | fix(chat): the operator was missing from the roster they host | Christophe Besson | 2026-09-07 | 2 | -9/+102 |
| * | feat(chat): Tier 2 — a member verifies another member's device itself | Christophe Besson | 2026-09-07 | 22 | -41/+929 |
| * | docs(chat): correct the claim that two devices never share a key | Christophe Besson | 2026-09-07 | 1 | -4/+17 |
| * | Merge origin/main into the chat encryption work | Christophe Besson | 2026-09-07 | 25 | -606/+1747 |
| |\ |
|