Release history for Cybersalt Articles Module Maxxed. For install and usage instructions see the documentation.
📋 Cybersalt Articles Module Maxxed — Changelog
v1.4.0 October 2026
Fixes
- Grouped modules now skip correctly. With Grouping turned on (by month, year, author, category or tag in the Articles module, or grouping in Articles - Category), the module renders one list per group. 1.3.x only trimmed a single list that held more than N items, so on grouped modules it usually trimmed nothing and showed the very articles it was meant to skip. The skip now counts articles across all groups in the order the module displays them, and a group left with no articles is removed together with its heading.
- Skipping as many articles as exist (or more) no longer shows them all. If a module had N or fewer articles to show, 1.3.x left the list untouched, so every article it should have skipped appeared. Now they are all skipped, and when nothing is left the module is not shown at all (Joomla hides a module with empty output).
Admin
- The Skip field now sits directly under the module's own article count ("Articles to Display" in Articles and Articles - Latest, "Count" on the Filtering Options tab of Articles - Category). It used to be added at the end of the Module tab.
- Plugin name follows Joomla's plugin naming convention: System - Cybersalt Articles Module Maxxed (was Cybersalt - System - Articles Module Maxxed). The type word stays translated in each language.
- "Apply to modules" label corrected: the unified Articles module (
mod_articles) ships with Joomla 5.2 and later, not only Joomla 6. - The "Email Super Users when Joomla is updated" switch shows its state correctly. Its Yes/No options were in the wrong order for Joomla's switcher, so "Yes" was drawn in the grey "off" style.
Other
- The Support URL setting is now used. It appears after the support email in the one-time "Joomla was updated" email. Its default is now the Cybersalt support request form.
Compatibility
- Joomla 5.0+ and Joomla 6.0+ native (the Articles module needs Joomla 5.2+).
- PHP 8.1+.
v1.3.1 June 2026
Update server
- Update polling switched from GitHub raw to Cybersalt Release Manager. The plugin's
<updateservers>URL in the manifest now points athttps://www.cybersalt.com/index.php?option=com_csreleasemanager&task=api.updatexml&format=raw&element=csarticlesmodulemaxxedinstead of the previoushttps://raw.githubusercontent.com/cybersalt/cs-articles-module-maxxed/main/updates.xml. Release Manager handles version metadata and serves the ZIP via itsapi.userdownloadtask. Existing v1.1.x – v1.3.0 installs will keep polling the old GitHub raw URL until they upgrade once more; that final hop installs v1.3.1 and from then on they poll Release Manager. The legacyupdates.xmlon GitHub raw is preserved so the cutover is gradual rather than a hard cliff.
Compatibility
- Joomla 5.0+ and Joomla 6.0+ native.
- PHP 8.1+.
v1.3.0 June 2026
Brand polish
- Dark-mode white disc behind the logo on every branded surface. The cobalt+orange artwork loses contrast against Atum's dark slate-800 background. Every Cybersalt-branded surface in this plugin (install card header, Basic-tab page-info-logo injection, Support-tab brand header) now wraps the logo in a white circular disc in dark mode — same pattern the cs-siteground-cache header uses. Light mode unchanged.
- Branded headers on both plugin-settings tabs. A new custom form field type,
BrandheaderField, ships two render variants:variant="page-info-logo"(on the Basic tab) emits no visible row and instead injects a tiny inline JS snippet that prepends the 44px extension logo to Joomla's existing plugin-name<h2>heading at the top of the tab. The logo ends up to the left of "Cybersalt - System - Articles Module Maxxed" without duplicating the title. Idempotent (uses adata-cs-logo-injectedflag) and scoped to.col-lg-9 > h2so it can't match an unrelated heading.- default (on the Support tab) renders a full brand-header card: 48px logo + plugin name + "Support contact information" subtitle. Title uses Joomla's default body text colour so it sits natively against Atum's light or dark surface; only the card background and the muted subtitle swap on dark mode.
- Logo wired into the install package. The cs-articles-module-maxxed brand logo (Tabler "news" newspaper in cobalt + orange "maxxed" lightning bolt) now installs to
media/plg_system_csarticlesmodulemaxxed/via a manifest<media>block. Same logo appears in the README header. - Post-install card rebuilt to the locked-in Cybersalt brand spec (Joomla-Brain
JOOMLA-EXTENSION-WISHLIST.mdv2026-05-06):- Extension logo at 56px next to the title in the header
- Plain-English description paragraph below the title (mirrors the plugin manager listing description)
- Action buttons in Cybersalt orange (
#dc6b1a) so the eye knows where to click - CSS-variable theme switching: white header + cobalt title in light Atum; slate header + brand orange title in dark Atum (both
data-bs-theme="dark"anddata-color-scheme="dark"selectors) - Footer line with vendor link + bug-report link
- All CSS scoped to
.cs-install-cardto avoid leaking into the rest of the admin frame
Compatibility
- Joomla 5.0+ and Joomla 6.0+ native.
- PHP 8.1+.
v1.2.1 June 2026
Fix — Regular Labs Advanced Module Manager compatibility
- Skip field now appears under AMM. Regular Labs Advanced Module Manager (AMM) entirely replaces Joomla's core
com_moduleswithcom_advancedmodules— its module edit form is namedcom_advancedmodules.modulerather thancom_modules.module. The plugin'sonContentPrepareFormhandler was doing a strict equality match oncom_modules.module, so the Skip field never appeared on sites using AMM. The check is nowstr_ends_with($formName, '.module'), which accepts both Joomla core's and AMM's module edit forms. The existingisTargetEnabled()whitelist still confines injection to the three supported articles modules, so the looser form-name match doesn't open the field up to other unrelated forms.
Compatibility
- Joomla 5.0+ and Joomla 6.0+ native.
- Compatible with Regular Labs Advanced Module Manager (any version that fires
onContentPrepareFormfrom the module edit form). - PHP 8.1+.
v1.2.0 June 2026
Fix — Joomla 6 compatibility
- Skip field now appears on the article module edit form on Joomla 6. The plugin's
onContentPrepareForm,onAfterModuleList, andonAfterRenderModulehandlers were reading event arguments via the legacy generic-event API ($event->getArguments()['subject']etc.). On Joomla 6 the dispatcher delivers these as concrete typed events (PrepareFormEvent,AfterModuleListEvent,AfterRenderModuleEvent), and reaching into the underlying arguments array was unreliable. Handlers now use the typed-event getter methods (getForm(),getData(),getModules(),getModule()) with a generic-event fallback for any rare legacy caller. $autoloadLanguage = true. Joomla only auto-loads a plugin's.sys.iniglobally; the.inionly loaded inside the plugin's own settings page on J5 and not at all reliably on J6. With this flag set, the plugin's.iniis loaded automatically every time the plugin's events fire, so the Skip field's label and description render correctly on the module edit form on both J5 and J6.- Defensive try/catch around all three module-form/render handlers. A throwable in the plugin can no longer break the module edit form or a frontend page render — failures are logged to
plg_system_csarticlesmodulemaxxedand the handler bails out silently.
Compatibility
- Joomla 5.0+ and Joomla 6.0+ native — confirmed against the typed-event API in both versions.
- PHP 8.1+.
v1.1.1 May 2026
Security / Hardening
- Defence-in-depth on the params writer. If
#__extensions.paramsis ever non-empty but contains invalid JSON (only possible via direct DB tampering — Joomla itself never produces this state),writeLastSeenJoomlaVersion()now logs a warning and bails out instead of overwriting the corrupted-but-real settings blob with a minimal{"last_seen_joomla":"..."}object. Empty params row → still safely treated as[]and written as before. Identified as INFO-2 in the v1.1.0 pre-announcement security review.
v1.1.0 May 2026
New
- Joomla-version-change watch — when Joomla itself is upgraded on the site, the plugin sends a one-time email to every active Super User reminding them to verify the plugin still works on the new Joomla version. The email includes what to check, where to grab a newer plugin version (GitHub releases), how to file an issue (GitHub issues), and how to contact the configured support address. Steady-state cost is one in-memory string compare per admin request; DB+email work runs only on the rare moment Joomla actually changes versions.
- Notify opt-out — Email Super Users when Joomla is updated toggle in the plugin's basic settings (default Yes).
- 17-language coverage — translations now ship for the full Cybersalt-target language list: en-GB (native), nl-NL, de-DE, es-ES, fr-FR, it-IT, pt-BR, ru-RU, pl-PL, ja-JP, zh-CN, tr-TR, el-GR, cs-CZ, sv-SE, nb-NO (new), nn-NO (new). Non-English files are AI-translated with native-speaker review welcome via PR.
Norwegian
- Added Norwegian Bokmål (nb-NO) and Nynorsk (nn-NO) — partly a Cybersalt-customer language, partly a tribute to Bjørn Ove Bremnes, the Norwegian whose original "wouldn't it be nice if Joomla's articles module had this" wish became this plugin.
Improvements
- Provider now wires
DatabaseInterfaceinto the plugin so the new version-watch can query Super Users without going throughFactory::getDbo().
Compatibility
- Joomla 5.0+ and Joomla 6.0+ native (no Backward-Compat plugin required).
- PHP 8.1+.
Credits
- Bjørn Ove Bremnes — for wishing an articles offset was a feature in Joomla's core articles module. This plugin (and the Norwegian translations in this release) is that wish, productionised.
- The Basic Joomla Tutorials channel family — for hosting and helping vibe-code this during a live stream.
- Tim Davis (Cybersalt) — author / maintainer.
v1.0.0 May 2026
New
- Initial release.
- System plugin that adds a Skip first N articles setting to Joomla 6's unified
mod_articlesplus the legacymod_articles_categoryandmod_articles_latestmodules. - Per-module-type opt-out in the plugin's own settings (Apply to modules checkbox group).
- Count-bump on
onAfterModuleListso the SQL fetches enough rows. - DOMDocument-based render-strip on
onAfterRenderModuleso the first N items are removed from the visible output, scoped by themod-list/mod-articles-itemsclass selector so it never strips a list inside an article's introtext. - Postflight install card pointing the user to the plugin settings + modules manager.
- Auto-enable on first install.
- Configurable Support contact (email / URL / label) for "contact support" messages.
- Update server broadcast — Joomla's Update Manager will detect new versions automatically.
- 15-language coverage: en-GB translated; nl-NL, de-DE, es-ES, fr-FR, it-IT, pt-BR, ru-RU, pl-PL, ja-JP, zh-CN, tr-TR, el-GR, cs-CZ, sv-SE shipped as
TRANSLATION PENDINGstubs (PRs welcome). - GitHub Actions CI: PHP lint (8.1 + 8.3), manifest XML validation, language-file UTF-8/no-BOM check, zip-build smoke-test on every push.
Security
- Pre-publish security review passed with zero HIGH / zero MEDIUM findings.
- One LOW (HTML markup in install-card language strings, theoretical XSS neutered by
htmlspecialcharsbut cosmetically broken) fixed before tagging.
Compatibility
- Joomla 5.0+ and Joomla 6.0+ native (no
Behaviour - Backward Compatibilityplugin required). - PHP 8.1+.