Commit Graph
3 Commits
Author SHA1 Message Date
Divarion_D 8e55ba76ac fix(modules): name store modules by hash_id, record them by name
The store now serves every module with update {"source": "platform"} and
its permanent hash_id. Install, update, rollback, licence renewal, the LB
deploy and the store page ask the store for that hash_id, while
config/modules.php, the directory and the .lic stay keyed by the module's
name from module.json. Before, a store slug that differed from the name
recorded the install under the slug: the module showed as not installed
and lost its rollback and renew actions.

A catalogue or LB payload from an older store/MAIN without hash_id still
works through the slug, taken to be the name as before.
2026-10-13 19:21:44 +03:00
Divarion_D 741f8c3a42 feat(admin): list the module store without a key, a page at a time
The Store tab showed nothing until the Modules API key was set, and
pulled the whole catalogue at once. With xcvm_core 2.4.0 it asks the
store for one page (page, per_page, search, sort) with or without a
key; with a key the store says which paid modules the user owns, so
the per-module plugins_check calls go. module_store takes and answers
the paging fields; the page searches (debounced), sorts by name,
popularity, date or price and pages on the server, and keeps only the
latest answer. Free modules install, paid ones not bought link to the
store. Answers are cached 120 s per key and request; a failed one is
not. An older extension keeps the old full list (key required), paged
locally.
2026-10-08 21:38:29 +03:00
Divarion_D edc3bfd64b feat(modules): list the official store's modules
ModuleStore reads the catalogue from the core extension
(XC_VM::extensions_list) and asks XC_VM::plugins_check whether the
Modules API key bought each paid module. Every module is listed, marked
free, purchased or paid, with what is installed of it here, matched by
the manifest's update.slug. Cached 5 minutes per API key; a store that
did not answer is not cached.
2026-10-07 21:57:18 +03:00