Jasper Van
9d70acfdea
feat(licensing): support independent business authorization
...
Support independent Pro and Business licensing, migrate Cloud store integration through the SDK, gate Business-only credit billing features, and validate the Cloud store E2E flow.
2026-06-08 01:42:23 -04:00
saltbo
d1c83ccece
refactor(objects): run file operations sequentially
2026-06-06 12:46:18 -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
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
3f7a859e73
refactor(downloader): consolidate api contract generation
2026-06-05 15:24:56 -04:00
saltbo
b05bf4f07e
fix(downloads): normalize target folder paths
2026-06-05 10:10:44 -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
saltbo
dd1d237945
feat(store): add credits package management
2026-06-02 13:38:11 -04:00
Jasper Van
650f209fe8
docs: clarify cloud credit billing boundaries
...
Clarify ZPAN's Cloud Credits boundaries and keep gift-card creation on the Credits-only contract.
2026-06-02 03:41:07 -04:00
Jasper Van
908786837d
fix: align store pricing with USD contract
...
* fix: align store pricing with usd contract
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
* fix: align gift card cloud payload
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
* fix: normalize cloud gift card credits
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
* test: cover gift card payload without expiry
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
* fix: keep gift card payload mapping executable
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
* fix: map credits to cloud wallets
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
* test: align credits e2e selector
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
* fix: keep store credits on credits contract
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
2026-06-02 01:44:00 -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
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
Jasper Van
0694d5511a
feat: add local archive background jobs
2026-05-11 20:42:01 -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
e82f868568
fix(cloud-store): read order deliverable quotas
2026-05-11 15:34:02 -04:00
saltbo
9efdcbb424
refactor(cloud-store): use cloud sdk contracts
2026-05-11 15:03:34 -04:00
saltbo
0795867993
fix(cloud-store): read order item deliverables
2026-05-11 11:49:45 -04:00
saltbo
0c070d8a83
fix(cloud-store): align gift cards with cloud model
2026-05-11 10:10:04 -04:00
saltbo
8c9dcfd928
fix(cloud-store): use wallet balances endpoint
2026-05-10 14:05:21 -04:00
saltbo
0de620d021
fix(cloud-store): align customer fields with cloud
2026-05-10 13:41:43 -04:00
saltbo
acc2e81b98
refactor(cloud-store): rename end user fields to consumer
2026-05-10 12:29:58 -04:00
saltbo
73a592c8d9
feat(pro): tighten gates and unify upgrade prompts
2026-05-10 01:58:49 -04:00
saltbo
0f0ea65cb1
feat(storage): allow metered traffic overage
2026-05-09 15:27:54 -04:00
saltbo
46cacc011c
feat(storage): redesign plan catalog
2026-05-09 15:10:48 -04:00
saltbo
ae3f368335
feat(billing): configure per-currency metered plan pricing
2026-05-09 13:02:41 -04:00
saltbo
25c4a3c3ac
feat(billing): configure traffic overage price on plans
2026-05-09 12:24:10 -04:00
saltbo
1ebc46fac0
feat(store): manage workspace subscription plans
2026-05-09 09:25:39 -04:00
saltbo
0b2e7d40cc
feat(store): support subscription and fixed quota packages
2026-05-09 08:28:38 -04:00
saltbo
58d94c3df6
feat(cloud-store): accept opaque store deliveries
2026-05-09 00:07:37 -04:00
saltbo
25416a5f18
feat(quota): support plan and extra entitlement quotas
2026-05-08 23:34:15 -04:00
Jasper Van
bf8a4f5877
feat: add quota entitlements ( #383 )
...
Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5
2026-05-08 19:21:34 -04:00
Jasper Van
0b65e2dc15
[v2.6] Integrate zpan with new cloud order flow and complete migration cleanup
...
fix(store): guard cloud order actions by org
2026-05-08 15:42:05 -04:00
Jasper Van
11ab430493
refactor(quota-store): unify orders and gift cards
...
* refactor(quota-store): unify orders and gift cards
* test(quota-store): cover helper paths
* test(quota-store): cover webhook idempotency
* test(quota-store): cover cloud response normalization
2026-05-07 09:03:55 -04:00
Jasper Van
9cabe3ccc1
feat: align Storage Plans with combined package model
...
Update ZPan to treat each Store package as one product that can include both storage quota and download traffic quota.
- replace package resourceType/resourceBytes with storageBytes/trafficBytes in shared schemas and types
- widen package and checkout currency handling to string
- update Cloud proxy parsing for new package response shapes
- redesign admin package form/list and Store package cards around combined quotas
- update API and UI tests for storage-only, traffic-only, and combined package flows
- remove an unreachable duplicate parser branch so Codecov patch coverage stays green
Task: jrfmeahm17rp
2026-05-06 22:48:56 -04:00
Jasper Van and Copilot
bf0bf99ef4
feat: separate storage code revoke and delete
...
* feat(quota-store): separate revoke and delete semantics for redemption codes
- PATCH /api/admin/quota-store/storage-codes/:code accepts { revokedAt } to
revoke a code (keeps it visible, prevents future redemptions)
- DELETE /api/admin/quota-store/storage-codes/:code removes eligible codes
- Added revokeStorageCodeSchema (shared) with zValidator on PATCH route
- Fixed revokeStorageRedemptionCode API fn to use PATCH with revokedAt payload
- Added deleteStorageRedemptionCode API fn using DELETE
- UI: separate Revoke and Delete buttons per code row with distinct disabled rules
- Revoke disabled when already revoked or fully redeemed
- Delete disabled when any redemptions exist (usesCount > 0)
- Updated confirmation copy to describe product outcome, not technical action
- i18n: added delete keys in en.json and zh.json; updated revokeConfirm copy
- Updated integration, unit, and component tests
Agent-Profile: https://agent-kanban.dev/agents/f68cfbce6456edb5
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
* fix: align storage code revoke contract
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-06 17:08:41 -04:00
Jasper Van
df2e2a8cd3
feat: manage Cloud storage packages
...
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
2026-05-06 16:46:10 -04:00
Jasper Van
a4f9e3ff6a
refactor: proxy quota store through cloud
...
Agent-Profile: https://agent-kanban.dev/agents/a318237412dd8b98
2026-05-06 16:16:20 -04:00
Jasper Van
3a88c17d6e
feat: add monthly traffic quotas
...
Agent-Profile: https://agent-kanban.dev/agents/1dc839c09b5ee5e5
2026-05-06 13:41:20 -04:00