The default checkout token doesn't have push access to protected main.
Set remote URL with GA_TOKEN (jmiller's PAT) for authenticated push.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Support all common image formats (PNG, JPEG, GIF, WebP, BMP)
not just PNG — uses getimagesize() to detect type
- Add Log::add() warnings when generation fails (GD missing,
file not found, unsupported format)
- Fix source path: try both direct path and images/ prefix
to handle Joomla media field variations
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Panel, buttons, and labels now use --body-bg, --secondary-bg, and
--body-font-color with proper dark theme fallbacks instead of
hardcoded light-theme values (#fff, #444).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 0: no message shown at all
- 1: shows JOFFLINE_MESSAGE language string
- 2: shows only the custom message from Global Config
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The top section of the card (where the logo sits) now uses
var(--body-bg) background with negative margins to bleed into
the card's border-radius. Creates a clean two-tone card effect.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When running from a non-main branch (e.g. dev), the workflow now
cherry-picks the updates.xml change to main so the Joomla update
server always has the latest SHA and download URLs.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
deploy-manual, update-server, auto-release now use runs-on: release
to avoid competing with CI jobs in the general runner queue.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Release builds now run on moko-beelink-release, a dedicated runner
that won't compete with CI jobs for capacity.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Logo gets white background with padding and rounded corners
- Removed <jdoc:include type="message" /> (was duplicating offline message)
- Load template language files explicitly (not auto-loaded in offline context)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Joomla's update system compares hash_file() output (raw hex) against
the <sha256> element value. The sha256: prefix caused mismatch.
Also adds bridge migration helper for future MokoOnyx rename.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Restore updates.xml from broken ${VAR} placeholders to actual values
- Dev/alpha/beta: Gitea-only download URLs (no GitHub)
- RC/stable: both Gitea + GitHub download URLs
- Fix Python heredoc: use os.environ instead of shell var expansion
- Workflow now removes GitHub URLs for non-RC/stable channels
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
shivammathur/setup-php is incompatible with Gitea act_runner DinD.
Install PHP + extensions directly via apt-get instead.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- GA_TOKEN for all Gitea API operations
- GH_TOKEN reserved for GitHub mirror (stable/rc only)
- gh api calls → Gitea API curl
- gitea-actions[bot] identity
- Gitea download URLs as primary
- 15 workflow files updated
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Gitea API calls use secrets.GA_TOKEN
- GitHub mirror only for stable/rc, uses secrets.GH_TOKEN
- updates.xml now updates only the specific stability channel
(version, SHA, date, download URLs) via Python regex
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- All release creation via Gitea API (curl), no gh CLI or softprops
- GitHub mirror is optional (uses GH_MIRROR_TOKEN, continue-on-error)
- Stability input: development/alpha/beta/rc/stable with proper suffixes
- ZIP excludes sftp-config, .local, .env, keys
- Auto-updates updates.xml SHA-256 for matching channel
- Uses GITEA_TOKEN secret for authentication
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Joomla does not auto-load joomla.asset.json for offline.php,
causing 'unable to detect manifest' errors. Explicitly register
the registry file before using any WAM assets.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Load a11y-high-contrast.css via WAM
- Add all data-theme-fab-* and data-a11y-* attributes to body
- Theme switcher FAB and a11y toolbar now render on offline page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- All CSS/JS loading now uses $wa->useStyle/useScript matching index.php
- Added template.offline and template.offline.min to joomla.asset.json
- Font Awesome, Osaka font, themes, user overrides all via WAM
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Brand-aside position now uses flex columns like top-a (card style, equal-width)
- Offline page: external offline.css with theme variables, 3-column centered card
layout, Osaka font loading, full-screen on mobile
- CSS variable click-to-copy: scans text for --var patterns, wraps in clickable
chips with toast notification on copy
- Search button border matches input border (--input-border-color)
- mod_stats override: converted from dl to table layout
- Patch bump 03.09.15 → 03.09.16
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove toggle switch, Light/Dark labels, knob/track CSS
- Single button with sun (light) and moon (dark) FA icons
- Icons cross-fade with rotation transition on theme change
- Compact circular button matches FAB aesthetic
- Removed duplicate old switch CSS rules
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Light mode uses darker blue (#1565c0), dark mode uses lighter blue
(#42a5f5). No hover effect — only active ring when panel is open.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>