chore: merge dev into main #248
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Update server phases 2-3: license keys + Dolibarr.
@MokoBot
Add license key data model and Dolibarr update feed endpoint: License key system: - license_package table: subscription tiers with duration, max sites, repo scope (org-wide or specific repos), and allowed update channels - license_key table: individual keys with SHA-256 hashed storage, domain restriction, custom start/end dates, internal/master key flag - license_key_usage table: tracks update check activity per key - DB migration v335 creates all three tables Update server enhancements: - Dolibarr JSON endpoint at /{owner}/{repo}/updates/dolibarr.json - License key validation on update endpoints via ?key=MOKO-XXXX param - Channel filtering: packages restrict which update streams keys access - Invalid keys get empty XML response (Joomla-compatible "no updates") - Usage tracking records domain, IP, user agent, version on each check Key design decisions: - Org-level master keys: IsInternal=true, package RepoScope="all" - Keys stored as SHA-256 hashes, raw key only shown at creation - Packages define allowed channels (e.g. ["stable","rc"] for Pro tier) - MOKO-XXXX-XXXX-XXXX-XXXX format for license keys Ref #239 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>Add license key data model and Dolibarr update feed endpoint: License key system: - license_package table: subscription tiers with duration, max sites, repo scope (org-wide or specific repos), and allowed update channels - license_key table: individual keys with SHA-256 hashed storage, domain restriction, custom start/end dates, internal/master key flag - license_key_usage table: tracks update check activity per key - DB migration v335 creates all three tables Update server enhancements: - Dolibarr JSON endpoint at /{owner}/{repo}/updates/dolibarr.json - License key validation on update endpoints via ?key=MOKO-XXXX param - Channel filtering: packages restrict which update streams keys access - Invalid keys get empty XML response (Joomla-compatible "no updates") - Usage tracking records domain, IP, user agent, version on each check Key design decisions: - Org-level master keys: IsInternal=true, package RepoScope="all" - Keys stored as SHA-256 hashes, raw key only shown at creation - Packages define allowed channels (e.g. ["stable","rc"] for Pro tier) - MOKO-XXXX-XXXX-XXXX-XXXX format for license keys Ref #239 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>