pkg_themer changelog

Notable releases and milestones for Cassiopeia Themer (pkg_themer).

VersionSummary
2.0

Major release. Significant restructure of the admin and a polished front-end layout layer.

Brand view split into three. Brand was overcrowded, so it’s now Brand (colour pairs, semantic alerts, WCAG contrast checker, Material / palette import), Surfaces (page surfaces, background image, header / footer gradients), and Identity (typography and favicon). Each page has its own focused live preview.

Inline navbar layout — new toggle in Layout → Site header that lays out logo, optional search and menu side-by-side in one horizontal band, with menu items left-aligned next to the logo. Long menus wrap whole items onto new rows. Optional sticky header (with backdrop blur) and a choice of toggler icon (hamburger or ellipsis). On mobile the menu collapses to a full-width drop-down panel anchored under the header, picking up the same gradient.

Header / footer gradients with eight bundled presets, an explicit Header / Footer / Both target picker, and a built-in “Best Practice” recipe (Primary → Dark surface, diagonal top-left to bottom-right for headers; Dark surface → Primary, top to bottom for footers).

Smarter favicon. One SVG covers every modern browser. The 180×180 PNG iOS uses for “Add to Home Screen” is rendered automatically from your SVG when Imagick is available, on a theme-coloured canvas with proportional padding so the logo doesn’t bleed to the edges. The legacy ICO fallback is dropped — Joomla’s stock /favicon.ico already covers URL-bar / bookmark scrapers.

Tier matrix rebalance. The trial tier now ships a complete “make my site look good” toolkit: backgrounds, gradients, banners (unlimited), all the visual editors. Standard adds Material / palette import, Ahrefs Web Analytics on its own gate, preset export, and a higher saved-palettes limit — a meaningful step up rather than “trial plus a few cosmetic tweaks”. Premium covers commercial monetisation (GA4, AdSense, Amazon affiliates, Consent Mode v2). Enterprise adds per-Cassiopeia-style theming and white-label.

Front-end assets moved. The Bootstrap Icons toggle is now under Layout → Front-end assets rather than Marketing — it’s a presentation choice, not a tracking one. Marketing now reads as a focused tracking / monetisation / consent panel.

Self-healing upgrades. The postflight regenerates user.css on every install/upgrade and clears the subscription / tier caches, so newly-shipped feature flags take effect immediately without anyone having to remember to re-save.

Subscription panel fix. The Options → Subscription tab now correctly displays the subscriber name and expiry date for paid keys (the cache writer was missing those fields).

before_footer banner placement fix. Banners assigned to the “before footer” position are now injected before the opening <footer> tag rather than after the closing one, so they actually appear above the footer as the position name implies.

1.8 Activity tables and dashboard polish — admin list filtering, KPI refresh, contextual usage meters following the rest of the Multizone catalogue. Sample banner seeding is idempotent and trial-enabled with a default of two slots.
1.7 Custom CSS escape hatch on the Layout page for one-off tweaks Themer doesn’t expose as a setting. Full Material 3 colour mapping on the palette importer (26 fields across brand / surfaces / semantic groups; on-text fields for accessibility). Marketing-form fields no longer drop out of the saved settings on second save. Security audit pass and a regex-corruption fix for the shared admin dashboard tile that affected several extensions in the suite.
1.1.2 Robust dashboard panel rebuild — on install, the “Multizone Extensions” mod_custom is regenerated from observed tile data attributes, repairing any orphan markup left over from earlier regex-corruption bugs across the suite.
1.1.1 Cassiopeia Themer added to the shared “Multizone Extensions” tile on the admin Home Dashboard, alongside the other Multizone packages.
1.1.0 Three new front-end injection options on the Marketing tab. Ahrefs Web Analytics — cookieless, GDPR-friendly site analytics, single data-key field, no Consent Mode integration needed (same tier gate as GA4 in this release; later split onto its own gate in 1.10). Bootstrap Icons toggle — pulls the official CDN bundle so any <i class="bi bi-X"> in your content renders (Cassiopeia ships icomoon and Font Awesome but not Bootstrap Icons). Favicon set on Brand — SVG primary (modern browsers), Apple touch icon 180×180 (iOS home screen), ICO fallback (legacy), and a theme-colour for mobile browser chrome and PWA splash. The system plugin emits the four head tags ahead of Cassiopeia’s default favicon link so yours wins.
1.0.0 Initial release. Visual control panel for Joomla’s Cassiopeia front-end template, generating media/templates/site/cassiopeia/css/user.css from admin-edited theme settings: brand palette, surfaces and semantic colours, typography, page background image, layout (container width, spacing, radius, shadow, link decoration). Site-wide advertising banners with image and composed (gradient + headline + sub-head + CTA + optional inline image) modes, three positions (header, below-header, before-footer), and nine bundled placeholder PNGs seeded as sample banners on first install. Marketing-script integration: GA4, AdSense, Amazon affiliate-link rewriting (per marketplace, ca/com.au/co.uk/etc.), Google Consent Mode v2 default-denied, and Google’s free Consent Management Platform. Setup checklists on the Marketing tab for Google CMP and Amazon Associates with server-side validation, deep-links to AdSense Privacy & messaging and Amazon Associates Central, and an end-to-end live test that fetches the front page server-side and confirms the CMP loader and Consent Mode default reach visitors. Subscription tiers and licensing via pkg_subsmgr; trial keys auto-provisioned on first install. Lock-and-modify pattern on stored marketing IDs prevents accidental overwrite. Idempotent postflight preserves user-edited theme and banner data across uninstall/reinstall and recovers existing themes from user.css when no database row is present.