Skip to content

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:

  1. Checks dependencies (are the required modules on, is the core version suitable).
  2. Puts the module through a trial build in an isolated process.
  3. 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.

Last updated: 13.10.2026