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 at https://www.cybersalt.com/index.php?option=com_csreleasemanager&task=api.updatexml&format=raw&element=csarticlesmodulemaxxed instead of the previous https://raw.githubusercontent.com/cybersalt/cs-articles-module-maxxed/main/updates.xml. Release Manager handles version metadata and serves the ZIP via its api.userdownload task. 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 legacy updates.xml on 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 a data-cs-logo-injected flag) and scoped to .col-lg-9 > h2 so 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.md v2026-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" and data-color-scheme="dark" selectors)
    • Footer line with vendor link + bug-report link
    • All CSS scoped to .cs-install-card to 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_modules with com_advancedmodules — its module edit form is named com_advancedmodules.module rather than com_modules.module. The plugin's onContentPrepareForm handler was doing a strict equality match on com_modules.module, so the Skip field never appeared on sites using AMM. The check is now str_ends_with($formName, '.module'), which accepts both Joomla core's and AMM's module edit forms. The existing isTargetEnabled() 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 onContentPrepareForm from 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, and onAfterRenderModule handlers 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.ini globally; the .ini only loaded inside the plugin's own settings page on J5 and not at all reliably on J6. With this flag set, the plugin's .ini is 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_csarticlesmodulemaxxed and 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.params is 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 DatabaseInterface into the plugin so the new version-watch can query Super Users without going through Factory::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_articles plus the legacy mod_articles_category and mod_articles_latest modules.
  • Per-module-type opt-out in the plugin's own settings (Apply to modules checkbox group).
  • Count-bump on onAfterModuleList so the SQL fetches enough rows.
  • DOMDocument-based render-strip on onAfterRenderModule so the first N items are removed from the visible output, scoped by the mod-list / mod-articles-items class 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 PENDING stubs (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 htmlspecialchars but cosmetically broken) fixed before tagging.

📦Compatibility

  • Joomla 5.0+ and Joomla 6.0+ native (no Behaviour - Backward Compatibility plugin required).
  • PHP 8.1+.