CPalius CMF 2.2.42
Released: 2026-10-06 · Channel: stable · Critical: no
Themes
- New theme Githeme: a high-contrast light/dark theme inspired by GitHub's Primer design language (system fonts, 6px corners, 1px borders, compact density). The header has a light/dark switch that remembers the choice. Templates it does not ship (blog, forum, account and so on) come from the Default theme, so Githeme needs Default to stay installed.
- The original theme is now listed as Default in AACP.
- AACP → Appearance has a new Themes entry. Every theme card shows a preview image: set
screenshotintheme.json, or putscreenshot.png,.jpg,.webpor.svgin the theme folder. A theme whosetheme.jsonlists a missing CSS or JS file shows a warning, and such a theme can no longer be installed or activated. - Theme assets are now resolved with
cp_theme_url('dist/style.css'): the active theme first, then the other installed themes. The file is copied topublic/themes/on first use, so a theme installed from a ZIP no longer loads without styles. Asset URLs carry a version (?v=), so updated CSS and JS reach visitors at once. The error page and the forum statistics card follow the active theme too.
Forum statistics card
- The statistics card above the footer now shows on every public page except the home page, not only in the forum.
DNS tools
- The home hero has a large All tools button under the logo, and the logo no longer sits on a white box.
SEO
- Forum topics always carry a
textvalue in their structured data, which clears Google Search Console's "text, image or video must be specified" error for topics whose opening post could not be read.
Upgrade notice: cron
/cron/executeno longer accepts the token in the URL. Call it with POST andAuthorization: Bearer <token>(or anX-Cron-Tokenheader). A GET request now gets 405 and a wrong token 401. Update your crontab after upgrading, otherwise scheduled jobs stop running. AACP → Cron shows the new line to copy.
Security
- Inline
onsubmit,onclickandonchangehandlers in the admin and module templates were replaced bydata-confirmanddata-autosubmitattributes handled by one script, so the strict (nonce) CSP mode can be used for the admin panel. The default stays report-only. - Theme ZIPs are refused when they contain PHP files,
.htaccess,.user.ini,web.configor symbolic links, more than 3000 entries, or unpack to more than 128 MB. - Pages served straight from the page cache now carry
X-Content-Type-Options,Referrer-PolicyandX-Frame-Options.
Themes (more)
- Appearance colors and sizes are now stored per theme; logo, favicon and the social image stay shared. Existing settings stay with the Default theme.
- A theme card lists the page areas the theme does not ship itself (they come from another installed theme).
site_homeis a theme-neutral name for the home page route; the old name keeps working.
SEO (more)
- Private messages pages are
noindex, nofollow. - Showcase has titles, canonical URLs, structured data (with an offer when an item has a price) and a sitemap source for published items. Member screens stay
noindex. - The social image from the appearance settings feeds the SEO fallback chain, and the themes no longer print a second
og:imagetag.
More hardening and theme tools
- Inline
<style>blocks of DnsTools, Messages, Showcase, the maintenance page, the admin home and the page theme now carry the CSP nonce. - Per-page custom CSS and JS can only be changed by users with
system.settings.manage; other editors' submissions leave the stored values untouched. Stored values are also neutralised at render time against</styleand</scriptbreakouts. - The blog read counter is limited to 6 pings per minute per IP and post.
- Themes can ship their own translations in
Resources/translations. They load below module and core translations, so a theme can never override a core key. The AACP translation editor lists theme catalogues. - Theme ZIPs are checked before install: a
.twigor.cssfile that fails to parse rejects the package and is listed asfile: message. - One shared theme discovery now backs the runtime and the compile-time pass; a database problem during container build is logged.
- Fixed a crash in the theme card's "not fully shipped" report.
- Whitepaper pages get a real SEO title and description, DNS tool pages emit
SoftwareApplicationstructured data, and Showcase sitemap entries carry hreflang alternates. No database changes. Clearcp-core/var/cache/prod/after updating.