- Add .nav-mobile-bar flexbox row (d-lg-none) with hamburger left,
search icon right — collapses to one line on mobile
- Horizontal menu collapse target unified to #moko-main-menu-collapse
(shared between index.php bar and mod_menu override)
- Remove duplicate navbar-toggler from horizontal.php (now in index.php)
- CSS: [data-bs-theme] selectors for per-module color scheme (no :root)
- Desktop: .nav-mobile-bar hidden, search always visible
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Updates.xml fixes:
- Restored clean 5-channel structure with proper comment markers
- All channels use consistent format (single-line <tags>, same targetplatform)
- Correct descriptions per channel (not "MokoOnyx (rc)" for everything)
- Version tag uses raw XX.YY.ZZ (no -dev/-beta suffixes)
update-server.yml fixes:
- Entry builder matches canonical format (single-line tags, consistent quoting)
- Version uses raw VERSION not DISPLAY_VERSION (suffix is ZIP-only)
- targetplatform standardized to (5|6).*
- Cascade now UPDATES IN PLACE (preserves ordering) or CREATES if missing
- No more remove+insert that destroyed the comment-based structure
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The bump step was doing sed "s|<version>${README_VERSION}|..." on the
manifest, but the manifest had a different version (01.00.31) than
README (02.00.02). The sed silently failed — no replacement, so the
ZIP shipped with the old version. Joomla saw the update in updates.xml
but the installed ZIP's manifest was <= the current version, so
nothing actually updated.
Fix: read the manifest's own <version> independently and replace that,
regardless of what README says. Also sync templateDetails.xml to
02.00.02 to match current README.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add "theme-dark" or "theme-light" to any module's Module Class Suffix
to force it into dark or light mode regardless of the page theme.
Implementation:
- CSS theme selectors changed from :root[data-bs-theme] to
[data-bs-theme] so variables apply to any element, not just <html>
- JS scans for .theme-dark/.theme-light classes on DOMContentLoaded
and sets data-bs-theme attribute on matching elements
- Scoped background/color/border-radius applied to themed modules
- Works with all module types, all layouts, no per-override changes
Files: template.js, template.css, light.standard.css, dark.standard.css,
light.custom.css, dark.custom.css, en-GB + en-US language docs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
BREAKING CHANGE: Sites still on MokoCassiopeia must install MokoOnyx
v01.x first to migrate settings before upgrading to v02.
Removed:
- helper/migrate.php — full migration engine (style cloning, file copy,
update server rewrite)
- script.php migration methods: migrateFromCassiopeia(),
copyUserFiles(), replaceCassiopeiaReferences() + OLD_NAME constants
- index.php first-load migration check (file_exists .migrated)
- Migration fieldset and language strings from admin UI
- "formerly MokoCassiopeia" from description
- MokoCassiopeia reference in bootstrap-toc.css comment
Updated:
- Roadmap rewritten for 01.xx→02.xx version line with clean future plan
- script.php MIN_JOOMLA bumped to 5.0.0 (Joomla 4.4 dropped)
- script.php postflight() simplified (favicon + lock only)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove GitHub mirror step from release.yml (Gitea is sole release host)
- Remove GitHub update server from templateDetails.xml
- Replace GH_TOKEN composer auth with GA_TOKEN Gitea auth
- Collapse MokoCassiopeia migration guide in <details> element
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Source dir: add htdocs/ fallback (components may use htdocs/ not src/)
- Manifest search: increase maxdepth to 3, exclude .git/ and build/
(covers src/admin/com_xxx.xml and similar nested structures)
- Exclude trigger files (.build-trigger, .beta-trigger, .rc-trigger)
from release packages
- Both release.yml and update-server.yml now consistent
Tested extension types: template, plugin (system), component, module,
library, package — all use the same generic workflow.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove hardcoded GITEA_REPO and EXT_ELEMENT env vars
- GITEA_REPO derived from github.event.repository.name
- EXT_ELEMENT auto-detected from Joomla manifest <element> tag,
falls back to manifest filename, then repo name
- Workflow is now identical across all Joomla repos — no per-repo
customization needed. Drop it in .gitea/workflows/ and it works.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Tags are now stream names: stable, development, alpha, beta, rc
- Stable releases preserve last 5 versions in the Gitea release body
(new version prepended, oldest trimmed)
- Other streams replace the release body entirely (single latest)
- Version derived from README.md, not the tag name
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tags are now release stream names: stable, release-candidate, beta,
alpha, development. Version is read from README.md and auto-bumped.
Workflow dispatch also uses stream names as a choice input.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>