Commit Graph
140 Commits
Author SHA1 Message Date
saltbo 76f9e01f89 fix(traffic): meter webdav downloads 2026-06-06 10:37:14 -04:00
saltbo 4f15956209 fix(quota): reconcile storage usage after purge 2026-06-06 10:31:22 -04:00
saltbo 65eb5d9738 fix(downloader): reset runtime on task restart 2026-06-06 00:54:26 -04:00
saltbo 6aa711bfb6 refactor(downloads): reshape download task status model 2026-06-06 00:07:21 -04:00
saltbo e113c6c2cf fix(downloader): clean recovered torrent runtime 2026-06-05 22:34:32 -04:00
saltbo 031c568c40 fix(downloader): keep task upload tokens stable 2026-06-05 22:02:19 -04:00
saltbo 8f272b8a41 refactor(downloader): clarify task states and restart action 2026-06-05 21:51:32 -04:00
saltbo 9dd3ca0105 fix(downloader): separate interrupted task recovery 2026-06-05 21:34:57 -04:00
saltbo 6ba1f16282 fix(downloader): preserve retry recovery checkpoints 2026-06-05 20:52:38 -04:00
saltbo 3f7a859e73 refactor(downloader): consolidate api contract generation 2026-06-05 15:24:56 -04:00
saltbo 0b3bc2da09 fix(api-keys): return 429 for rate-limited keys 2026-06-05 13:19:34 -04:00
saltbo 3c9e1bf1ca fix(webdav): stabilize propfind directory listings 2026-06-05 12:39:56 -04:00
saltbo b5154e76d9 fix(storage): presign multipart complete without body 2026-06-05 01:42:41 -04:00
saltbo 83d26e9dd6 fix(storage): surface multipart complete failures 2026-06-05 01:31:50 -04:00
saltbo 4ec207290e fix(storage): avoid sdk xml parser for multipart 2026-06-05 00:15:52 -04:00
saltbo d6a368c6c0 fix(downloader): multipart upload large results 2026-06-04 23:40:25 -04:00
saltbo 655b58d93a fix(downloader): acknowledge stopped cancel controls 2026-06-04 20:01:38 -04:00
saltbo 52dc621ecf fix(objects): avoid LIKE patterns for folder descendants 2026-06-04 18:11:10 -04:00
saltbo 4dcbab55b1 feat(downloads): improve task controls and metadata 2026-06-04 14:57:44 -04:00
saltbo 94dada75ba feat(downloads): add task actions and classification 2026-06-04 14:08:39 -04:00
saltbo 6276530476 feat(auth): unify api key management 2026-06-04 12:39:59 -04:00
saltbo 1b4f149d05 feat(downloads): stream normalized task details 2026-06-03 13:08:14 -04:00
saltbo 754d1aaa3d fix(downloads): separate storage and peer upload metrics 2026-06-03 12:23:31 -04:00
saltbo cf3324b4a2 feat(downloads): preserve directory uploads 2026-06-03 12:05:55 -04:00
saltbo f698e5a8a9 feat(downloads): show normalized task details 2026-06-03 11:12:56 -04:00
saltbo 53076d7873 feat(downloads): add remote download workers 2026-06-03 02:21:50 -04:00
saltbo 1ff6d13998 feat(billing): meter storage egress with credits 2026-06-02 22:22:40 -04:00
saltbo 7f85da222f feat(quota): consolidate storage entitlements 2026-06-02 20:12:59 -04:00
Jasper Van f45e8732fc feat: integrate cloud credits store flow
Replace ZPAN Store Wallet semantics with Credits-only APIs and UI.

Proxy Cloud credits through credit-account routes, send unitless gift-card credits, and block metered downloads on insufficient Cloud credits before presign while rolling back local counters.

Verification waiver: E2E fails only because the hosted Cloud target rejects the merged Credits gift-card payload; AK follow-up kxel47x6x6l3 tracks that target gap.
2026-06-01 22:31:46 -04:00
saltbo c0c6a27ecb fix(s3): bypass customHost in presignUpload to support S3 PUT uploads on R2 custom domains 2026-05-27 21:09:37 -04:00
saltbo f65139fc35 fix(s3): set Content-Disposition metadata on objects during S3 direct upload for custom domains 2026-05-27 19:57:08 -04:00
saltbo 399f9325a5 fix(s3): conform to RFC 6266 for ResponseContentDisposition filename encoding 2026-05-27 14:12:15 -04:00
saltbo f3972c2df0 fix(s3): handle missing customHost scheme and remove bucket name from path 2026-05-27 12:12:11 -04:00
saltbo f869eeb3e9 fix(s3): apply customHost to presigned upload, download, and inline URLs 2026-05-27 12:01:52 -04:00
saltbo ef4a10577a fix(archive): persist streaming task progress 2026-05-15 17:57:00 -04:00
saltbo 2438275ea8 feat(archive): queue streaming archive jobs 2026-05-15 09:59:08 -04:00
Jasper Van 8b45c6218a fix: use better auth captcha providers (#401)
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
2026-05-13 16:39:09 -04:00
Jasper Van fdb61c2a14 feat: add captcha protection for authentication (#400)
* feat: add captcha protection for authentication

Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98

* test: guard captcha option key literal

Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98

* test: avoid captcha placeholder literal

Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98

* fix: pin captcha secret option literal

Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98

* fix: block oauth when captcha is enabled

Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98

* test: cover captcha social pass-through

Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98

* test: cover settings identity and registration saves

Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
2026-05-13 15:20:28 -04:00
saltbo 2b69a02c04 fix(webdav): speed up small fixed-length uploads 2026-05-13 00:26:15 -04:00
saltbo 8560b1b2ef fix(webdav): support unknown length streaming PUT 2026-05-12 23:22:19 -04:00
saltbo ea27161690 fix(webdav): unblock worker streaming transfers 2026-05-12 22:09:49 -04:00
saltbo ba0f27eb77 fix(webdav): stream file transfers 2026-05-12 21:17:32 -04:00
Jasper Van c218f90712 fix(webdav): make preview auth and locks D1-safe (#399)
Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5
2026-05-12 12:28:53 -04:00
Jasper Van e41ea3f016 feat(webdav): add RFC 4918 Class 2 support (#398)
* feat(webdav): add RFC 4918 class 2 support

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

* test(webdav): cover RFC failure paths

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

* fix(webdav): harden RFC lock and state semantics

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

* fix(webdav): cover rejected RFC edge cases

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

* test(webdav): cover precondition rejection paths

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

* fix(webdav): close RFC lock compliance gaps

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

* fix(webdav): close lock refresh scope gaps

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5
2026-05-12 11:38:29 -04:00
Jasper Van 9557f4da7c feat: harden WebDAV client compatibility
Serve WebDAV file GETs directly from storage, add coherent validators/range support, expand PROPFIND properties, and honor Overwrite/precondition behavior for WebDAV operations.

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5
2026-05-11 23:21:11 -04:00
Jasper Van 85cd3994b3 feat: add user-bound WebDAV app passwords 2026-05-11 22:28:46 -04:00
Jasper Van 0694d5511a feat: add local archive background jobs 2026-05-11 20:42:01 -04:00
Jasper Van efb92397bf feat: add WebDAV API-key protocol routes (#390)
* feat: add WebDAV API key routes

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

* fix: route WebDAV preview requests to worker

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5
2026-05-11 19:32:29 -04:00
Jasper Van 2053b84c1a feat: add background job foundation (#388)
* feat: add background job foundation

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5

* fix: normalize cloud gift card create responses

Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5
2026-05-11 19:24:54 -04:00
saltbo 0de620d021 fix(cloud-store): align customer fields with cloud 2026-05-10 13:41:43 -04:00