60 Commits
Author SHA1 Message Date
Jasper VanandClaude Opus 4.8 5a5583b4ed feat(licensing): regroup comparison table by capability and add social-login/downloader gates (#423)
* feat(licensing): regroup comparison table by capability and add social-login/downloader gates

Decouple the feature comparison table's grouping axis from the pricing tier:
features are now grouped by capability (core/advanced) while edition
availability is expressed purely by the per-edition cells. Coming-soon
features show a badge next to the name with a muted check in the target
edition column, so it's clear which edition they will land in.

Tier reclassification (per product decision):
- Social login & OIDC: free = 1 provider, Pro/Business = unlimited
- Downloaders: free = 1, Pro/Business = unlimited
- Site announcements, Multi-IdP SSO, LDAP/SCIM, Analytics: Business-only

New runtime gates (enforced, mirroring the storages count-gate):
- social_login_unlimited in POST /api/admin/auth-providers (402 on 2nd)
- downloaders_unlimited in POST /api/admin/downloaders (402 on 2nd)
- site_announcements added to BUSINESS_ONLY_FEATURES

Copy cleanup:
- Rename rows that embedded a limit word: "Unlimited Team Workspaces"
  -> "Team Workspaces", "Storage Backends" -> "Storages"
- Clarify "Storage Plans" -> "Sell Storage & Traffic" (the quota_store feature)
- Make the Licensing page intro edition-neutral (Pro + Business) instead of
  the leftover Pro-only copy

Tests: add gate tests for both new limits; seed licenses in the existing
multi-provider/multi-downloader tests; switch announcement tests to a
Business license.

Note: site_announcements moving to Business takes full effect for real
licenses only once zpan-cloud stops listing it in Pro certificates; the
local edition-derived path is already updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* refactor(licensing): drop unused per-cert feature override, derive from edition

The optional `features[]` override on the license certificate was added with
the Pro/Business split but was never exercised: real certs carry only
`edition`, and entitlements are derived from it via the feature registry
(PRO_GATE_KEYS minus BUSINESS_ONLY_FEATURES). The override was dead in the
normal flow and duplicated the edition→feature mapping in two places.

Remove it so edition is the single source of truth:
- Drop `LicenseAssertion.features` and `normalizeFeatures` (verify.ts)
- `effectiveFeatures(edition)` no longer takes/honors an override list
- Simplify the test seed helpers (no `features` arg, no test-side
  business-only set) and update licensing tests to assert edition-derived
  entitlements

`BindingState.features` (the resolved list exposed to the client) is kept.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(downloader): regenerate OpenAPI spec and Go client for new 402 response

The downloaders create route gained a 402 (feature_not_available) response
for the free-plan limit; regenerate the committed OpenAPI document and Go
client so openapi:downloader:check passes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 13:32:59 -04:00
saltbo e17e2018d3 fix(docker): use host hostname for downloader registration 2026-06-07 01:00:35 -04:00
saltbo 5f83099c7c fix(docker): configure remote downloader runtime 2026-06-06 20:44:08 -04:00
saltbo 7e7eeb4ca7 fix(downloads): expose torrent listen port in docker 2026-06-06 20:26:03 -04:00
saltbo c1cec37ccf fix(downloads): report downloader transfer speed 2026-06-06 20:19:45 -04:00
saltbo 2e12929290 fix(downloads): improve downloader assignment handling 2026-06-06 20:13:23 -04:00
saltbo 47c0af9675 fix(downloader): clear seeding phase on shutdown 2026-06-06 19:03:27 -04:00
saltbo 71af982044 fix(downloader): store runtime updates as snapshots 2026-06-06 18:58:36 -04:00
saltbo 00f42e762f fix(downloader): ignore stale seed progress after restart 2026-06-06 16:16:18 -04:00
saltbo 9fe0bb3520 fix(downloader): make aria2 reset idempotent 2026-06-06 16:04:19 -04:00
saltbo bc3ef9f512 fix(downloads): use standard geoip data paths 2026-06-06 09:52:07 -04:00
saltbo 12604529b1 feat(downloads): report peer geo regions 2026-06-06 09:44:36 -04:00
saltbo ebe0e426bf fix(downloader): stabilize docker runtime validation 2026-06-06 02:29:35 -04:00
saltbo dd66ed4bd7 feat(cli): allow config init server url 2026-06-06 02:04:17 -04:00
saltbo ce170cbd41 fix(cli): keep auth token in global config 2026-06-06 02:01:02 -04:00
saltbo a5c5cee590 fix(cli): avoid probing unmanaged runtimes in auto mode 2026-06-06 01:53:36 -04:00
saltbo f31278b434 refactor(cli): move zpan command module to cmd 2026-06-06 01:49:41 -04:00
saltboandClaude Opus 4.6 b817cab2c1 feat: ZPan v2.0 roadmap, architecture, and repo reset
Remove the Go v1 codebase (preserved in the v1 branch) and establish
the foundation for v2 — a complete rewrite in TypeScript (server) and
Rust (CLI/desktop). This commit includes the product roadmap (v2.0–v2.9),
technical architecture document, and updated project documentation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 20:57:15 -04:00
saltbo c06eed7208 refactor: remove the dependency between dao and repo
Signed-off-by: saltbo <saltbo@foxmail.com>
2023-08-05 21:58:43 +08:00
Ambor 76fca8a615 refactor: update the codes by the clean arch (#184)
* refactor: update the codes by the clean arch

Signed-off-by: saltbo <saltbo@foxmail.com>

* fix: some error for the api

Signed-off-by: saltbo <saltbo@foxmail.com>

* fix: some error for the api v2

Signed-off-by: saltbo <saltbo@foxmail.com>

---------

Signed-off-by: saltbo <saltbo@foxmail.com>
2023-07-30 02:12:33 +08:00
saltbo 2cb9eedf34 chore: update the web assets 2021-02-19 23:51:38 +08:00
saltbo 72a983cb96 fix: three error for the admin op 2021-02-19 23:18:34 +08:00
saltbo 936ac81c2c chore: update configs for the latest version 2021-02-14 22:51:30 +08:00
saltbo da3c3f566c refactor: replace the folders and files by the matters 2021-02-09 21:52:58 +08:00
saltbo 4fae6e2bdc refactor: remove the moreu depend && add user supports 2021-02-01 23:04:58 +08:00
saltbo 206add4aa8 feat: add option supports 2021-01-23 22:15:12 +08:00
saltbo 29d1f37979 refactor: remove the moreu depend 2021-01-23 10:47:49 +08:00
saltbo cec7ff6720 refactor: remove the moreu module depends 2021-01-13 22:59:01 +08:00
saltbo fb24501fc8 refactor: add multi storages supports 2021-01-08 08:45:26 +08:00
saltbo ffcba1dac3 feat: add storages api supports 2020-11-01 23:40:46 +08:00
LXM 0fd1c63fe4 feat: auto https (#42) 2020-10-12 22:00:48 +08:00
saltbo 9c1721dac9 feat: add the api user list 2020-10-11 15:29:59 +08:00
saltbo a4a3ac7350 feat: add apis for the recycle bin 2020-09-26 23:47:14 +08:00
saltbo 5cea1217d6 refactor: update the service to improve the test coverage && support delete the folder && support i18n #7 #8 #12 2020-09-20 18:50:26 +08:00
Yu Xiang a1e687ecfc feat: support delete the folder (#37) 2020-09-20 17:43:43 +08:00
saltbo 2898dac653 fix: panic for the mailutil 2020-09-09 01:52:24 +08:00
saltbo c3dd425af7 refactor: update the moreu integration form 2020-09-09 01:34:47 +08:00
saltbo 51a69b65e7 fix: error for the invitation flag 2020-09-06 13:56:43 +08:00
saltbo 4eda21cdf8 refactor: update the dir for the install.sh 2020-09-06 12:20:45 +08:00
saltbo de13545591 chore: embed the moreu into the main progress 2020-09-04 23:24:22 +08:00
saltbo ace2dc2c51 refactor: update the user for the ux of user 2020-08-31 21:54:08 +08:00
saltbo 103ff9c758 refactor: add aws-s3 and remove the callback 2020-08-30 23:11:20 +08:00
saltbo 96a654c0f9 refactor: update the provider for the bucket 2020-08-28 00:58:36 +08:00
saltbo 21c236a650 refactor: support config the default storage 2020-08-28 00:27:03 +08:00
saltbo 4348087136 refactor: not allow the duplicate folders and files 2020-08-27 23:26:39 +08:00
saltbo 41677fbd4c chore: add go generate for the statik 2020-08-27 21:59:44 +08:00
saltbo de28e470ee refactor: update the gintuil 2020-08-23 02:12:56 +08:00
saltbo ff5c0be2ac refactor: embed the front code as assets 2020-08-23 02:02:24 +08:00
saltbo 165376a1d4 refactor: replace the xorm by the gormutil 2020-08-18 00:12:18 +08:00
saltbo fa0ccd57ee refactor: update the struct tags 2020-08-15 00:55:30 +08:00