diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index e134379..be72701 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Template - MokoOnyx MokoConsulting MokoOnyx - Joomla site template (successor to MokoCassiopeia) - 02.20.00 + 02.19.03 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 5e03998..0839499 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.20.00 +# VERSION: 02.19.03 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 484088e..ebfd6c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,13 +8,24 @@ DEFGROUP: Joomla.Template.Site INGROUP: MokoOnyx.Documentation PATH: ./CHANGELOG.md - VERSION: 02.20.00 + VERSION: 02.19.03 BRIEF: Changelog file documenting version history of MokoOnyx --> -# Changelog — MokoOnyx (VERSION: 02.20.00) +# Changelog — MokoOnyx (VERSION: 02.19.03) ## [Unreleased] +### Fixed +- Strip Joomla-injected `p-2` padding class from Font Awesome icons in all menu overrides (default, mainmenu, horizontal) + +### Changed +- Migrated update server URL from raw file endpoint to Gitea Pages +- Release workflow no longer manages updates.xml (decoupled to Gitea Pages) +- Added conflict-marker guard to PR check and release workflows +- Added Joomla language file validation (syntax, duplicates, en-GB/en-US consistency) +- Added JEXEC guard, joomla.asset.json, XML well-formedness, and script file CI checks +- Removed RS_FTP_PATH_SUFFIX from repo health requirements + ## [02.20.00] --- 2026-06-04 ## [02.19.00] --- 2026-06-04 @@ -24,3 +35,4 @@ ## [02.17.00] --- 2026-06-02 ## [02.15.00] --- 2026-05-30 +## [02.14.00] --- 2026-05-30 diff --git a/SECURITY.md b/SECURITY.md index 46cba7c..5fae7f7 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,7 +10,7 @@ INGROUP: MokoOnyx.Governance REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx FILE: SECURITY.md - VERSION: 02.20.00 + VERSION: 02.19.03 BRIEF: Security policy and vulnerability reporting process for MokoOnyx. PATH: /SECURITY.md NOTE: This policy is process oriented and does not replace secure engineering practices. diff --git a/src/html/layouts/joomla/module/card.php b/src/html/layouts/joomla/module/card.php index 316554d..566ab1a 100644 --- a/src/html/layouts/joomla/module/card.php +++ b/src/html/layouts/joomla/module/card.php @@ -10,7 +10,7 @@ * INGROUP: MokoOnyx * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx * PATH: /html/layouts/joomla/module/card.php - * VERSION: 02.20.00 + * VERSION: 02.19.03 * BRIEF: Custom card module chrome — renders module titles for all modules */ diff --git a/src/html/layouts/mokoonyx/article-metadata.php b/src/html/layouts/mokoonyx/article-metadata.php index 17812e1..d95431f 100644 --- a/src/html/layouts/mokoonyx/article-metadata.php +++ b/src/html/layouts/mokoonyx/article-metadata.php @@ -11,7 +11,7 @@ * INGROUP: MokoOnyx.Layouts * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx * PATH: /src/html/layouts/mokoonyx/article-metadata.php - * VERSION: 02.20.00 + * VERSION: 02.19.03 * BRIEF: Article metadata footer layout -- renders jcfields grouped by field group */ diff --git a/src/html/mod_menu/default_component.php b/src/html/mod_menu/default_component.php index 2242c7f..9568e3f 100644 --- a/src/html/mod_menu/default_component.php +++ b/src/html/mod_menu/default_component.php @@ -33,6 +33,8 @@ if ($item->anchor_rel) { $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); if ($itemParams->get('menu_text', 1)) { $linktype = '' . $item->title; } else { diff --git a/src/html/mod_menu/default_heading.php b/src/html/mod_menu/default_heading.php index eeaaf2e..60368f5 100644 --- a/src/html/mod_menu/default_heading.php +++ b/src/html/mod_menu/default_heading.php @@ -19,6 +19,8 @@ $anchor_css = $item->anchor_css ?: ''; $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); if ($itemParams->get('menu_text', 1)) { $linktype = '' . $item->title; } else { diff --git a/src/html/mod_menu/default_separator.php b/src/html/mod_menu/default_separator.php index 1a08dbc..7eb600c 100644 --- a/src/html/mod_menu/default_separator.php +++ b/src/html/mod_menu/default_separator.php @@ -19,6 +19,8 @@ $anchor_css = $item->anchor_css ?: ''; $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); if ($itemParams->get('menu_text', 1)) { $linktype = '' . $item->title; } else { diff --git a/src/html/mod_menu/default_url.php b/src/html/mod_menu/default_url.php index 55b6eab..affe564 100644 --- a/src/html/mod_menu/default_url.php +++ b/src/html/mod_menu/default_url.php @@ -33,6 +33,8 @@ if ($item->anchor_rel) { $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); if ($itemParams->get('menu_text', 1)) { $linktype = '' . $item->title; } else { diff --git a/src/html/mod_menu/horizontal_component.php b/src/html/mod_menu/horizontal_component.php index 7619390..30c76d2 100644 --- a/src/html/mod_menu/horizontal_component.php +++ b/src/html/mod_menu/horizontal_component.php @@ -33,6 +33,8 @@ if ($item->anchor_rel) { $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); if ($itemParams->get('menu_text', 1)) { $linktype = '' . $item->title; } else { diff --git a/src/html/mod_menu/horizontal_heading.php b/src/html/mod_menu/horizontal_heading.php index 2bc20ef..fe559a9 100644 --- a/src/html/mod_menu/horizontal_heading.php +++ b/src/html/mod_menu/horizontal_heading.php @@ -19,6 +19,8 @@ $anchor_css = $item->anchor_css ?: ''; $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); if ($itemParams->get('menu_text', 1)) { $linktype = '' . $item->title; } else { diff --git a/src/html/mod_menu/horizontal_separator.php b/src/html/mod_menu/horizontal_separator.php index d7625b6..ed469f1 100644 --- a/src/html/mod_menu/horizontal_separator.php +++ b/src/html/mod_menu/horizontal_separator.php @@ -19,6 +19,8 @@ $anchor_css = $item->anchor_css ?: ''; $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); if ($itemParams->get('menu_text', 1)) { $linktype = '' . $item->title; } else { diff --git a/src/html/mod_menu/horizontal_url.php b/src/html/mod_menu/horizontal_url.php index 2ed318d..caa2cc4 100644 --- a/src/html/mod_menu/horizontal_url.php +++ b/src/html/mod_menu/horizontal_url.php @@ -33,6 +33,8 @@ if ($item->anchor_rel) { $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); if ($itemParams->get('menu_text', 1)) { $linktype = '' . $item->title; } else { diff --git a/src/html/mod_menu/mainmenu_component.php b/src/html/mod_menu/mainmenu_component.php index d2887cb..6f0cc07 100644 --- a/src/html/mod_menu/mainmenu_component.php +++ b/src/html/mod_menu/mainmenu_component.php @@ -33,6 +33,8 @@ if ($item->anchor_rel) { $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); // The link is an icon if ($itemParams->get('menu_text', 1)) { // If the link text is to be displayed, the icon is added with aria-hidden diff --git a/src/html/mod_menu/mainmenu_heading.php b/src/html/mod_menu/mainmenu_heading.php index af61674..b1c2b50 100644 --- a/src/html/mod_menu/mainmenu_heading.php +++ b/src/html/mod_menu/mainmenu_heading.php @@ -19,6 +19,8 @@ $anchor_css = $item->anchor_css ?: ''; $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); // The link is an icon if ($itemParams->get('menu_text', 1)) { // If the link text is to be displayed, the icon is added with aria-hidden diff --git a/src/html/mod_menu/mainmenu_separator.php b/src/html/mod_menu/mainmenu_separator.php index 42579b9..59d0c58 100644 --- a/src/html/mod_menu/mainmenu_separator.php +++ b/src/html/mod_menu/mainmenu_separator.php @@ -19,6 +19,8 @@ $anchor_css = $item->anchor_css ?: ''; $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); // The link is an icon if ($itemParams->get('menu_text', 1)) { // If the link text is to be displayed, the icon is added with aria-hidden diff --git a/src/html/mod_menu/mainmenu_url.php b/src/html/mod_menu/mainmenu_url.php index 1d81553..e537255 100644 --- a/src/html/mod_menu/mainmenu_url.php +++ b/src/html/mod_menu/mainmenu_url.php @@ -33,6 +33,8 @@ if ($item->anchor_rel) { $linktype = $item->title; if ($item->menu_icon) { + // Strip Joomla-injected padding classes that conflict with FA icon sizing + $item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon)); // The link is an icon if ($itemParams->get('menu_text', 1)) { // If the link text is to be displayed, the icon is added with aria-hidden diff --git a/src/media/css/a11y-high-contrast.css b/src/media/css/a11y-high-contrast.css index e9e2471..81e0b96 100644 --- a/src/media/css/a11y-high-contrast.css +++ b/src/media/css/a11y-high-contrast.css @@ -10,7 +10,7 @@ * INGROUP: MokoOnyx.Accessibility * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx * PATH: ./media/css/a11y-high-contrast.css - * VERSION: 02.20.00 + * VERSION: 02.19.03 * BRIEF: High-contrast stylesheet for accessibility toolbar */ diff --git a/src/templateDetails.xml b/src/templateDetails.xml index 3bdc767..d192160 100644 --- a/src/templateDetails.xml +++ b/src/templateDetails.xml @@ -31,12 +31,10 @@ --> - - https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx/updates.xml - + https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx/updates.xml mokoonyx - 02.20.00 + 02.19.03-dev script.php 2026-05-16 Jonathan Miller || Moko Consulting