Module and theme management
Modules and themes are managed under AACP → System (permission: system.module.manage; for themes system.settings.manage).
Modules
AACP → System → Modules: all modules on disk are listed with their status (active / inactive / quarantined) and versions.
Activating
When you say activate on a module, the system does the following:
- Checks dependencies (are the required modules on, is the core version suitable).
- Puts the module through a trial build in an isolated process.
- If it passes, activates the module, builds its tables (migration) and adds its default capabilities.
If any step fails the module does not open and you see the reason on screen; your site is not affected. An example message: "Docs requires CPalius core >=2.2.52, but 2.2.51 is installed" (update the core first).
Disabling
Disable turns the module off; it does not delete data. When you turn it back on everything is in place. If the module is a dependency of another active module, disabling is blocked.
To delete the data too (uninstall), cp:module:deactivate <Name> --purge is used on the command line; the module's tables and settings are deleted. This cannot be undone, take a backup first.
Installing from a zip
You can upload a module zip from the panel (if a module with the same name exists, confirmation to overwrite is asked). The package first passes the contract check: it cannot write to core files, cannot use the App\ namespace, and the manifest and installer class must be complete. A failing package is rejected. Install modules only from sources you trust: the check gives a structural guarantee, it cannot filter out malicious logic on its own.
Store
AACP → Modules → Module store (for themes Appearance → Theme store): you browse modules and themes with images from a signed catalogue and install them.
- The catalogue is signed; the package's SHA-256 digest is verified before installation. If the signature is invalid, expired or the version has gone backwards, the catalogue is rejected.
- Each card: name, summary, category, whether it is free, compatibility with the core ("Compatible with this version / update the core") and a screenshot.
- Install / Update: free packages are installed directly. The update of an active module is done with a database snapshot and rollback protection (like a core update).
- A purchase flow for paid packages has not been added yet.
- Images are cached by the panel itself; your browser does not connect to the update server.
The catalogue is refreshed in the background every hour; the number of updatable packages is shown in the store menu.
Quarantine
AACP → System → Quarantine: modules that failed at runtime and were disabled, or that could not pass an activation attempt, are listed with the reason. A module is either:
- In permanent quarantine: it could not pass the build check; it must be fixed and retried.
- Or one of its hooks failed: in that case the page keeps working and the error is written to the log (
cp-core/var/log/module_quarantine.log).
For a quarantined module's problem, pass the details in the log to the module developer.
Plugins
AACP → System → Plugins: you switch sub-features inside a module on and off without disabling the whole module. The module's documentation says which plugins there are.
Themes
AACP → Appearance → Theme list: installed themes, with preview images and an Activate button.
- Zip upload: the theme package is checked first (kebab-case directory name,
theme.json,layout.html.twig, no server-side code). A failing package is rejected with the reason. - Activation: the Twig paths are rebuilt; this may take a few seconds.
- Fallback theme: if the active theme breaks, the system falls back to the fallback theme (
cpalius-website); your site's look breaks but the pages keep opening. - If you are a theme developer: Theme development.
System updates
AACP → System → Updates: you see the new version of the core.
- Release information is signed; if the signature cannot be verified, the update button becomes inactive.
- The Update button: maintenance mode → database snapshot → file writing → migration → cache refresh; if something goes wrong, automatic rollback.
- Taking a backup before updating is still a good habit (Backup and maintenance).
- If there are new module versions after the update, update the modules from the store.
Details: Update system.