Release: WebAsset fixes, hero card title, video viewport pause #38

Merged
jmiller merged 100 commits from dev into main 2026-05-30 15:56:37 +00:00
Owner

Summary

  • Fix WebAsset registration with #style/#script suffixes and correct URI resolution
  • Fix iframe video cover with oversize and centre-crop technique
  • Render module title inside hero card, respecting Show Title toggle
  • Preserve button styling by excluding .btn from card color inherit
  • Pause/resume videos on scroll via IntersectionObserver

Test plan

  • Hero renders full-width with video covering entire section
  • Show Title toggle works inside card
  • YouTube video pauses on scroll
  • Image slideshow mode works
  • Buttons retain styling
## Summary - Fix WebAsset registration with #style/#script suffixes and correct URI resolution - Fix iframe video cover with oversize and centre-crop technique - Render module title inside hero card, respecting Show Title toggle - Preserve button styling by excluding .btn from card color inherit - Pause/resume videos on scroll via IntersectionObserver ## Test plan - [ ] Hero renders full-width with video covering entire section - [ ] Show Title toggle works inside card - [ ] YouTube video pauses on scroll - [ ] Image slideshow mode works - [ ] Buttons retain styling
jmiller added 98 commits 2026-05-30 15:51:18 +00:00
chore: cascade main → dev [skip ci]
chore: cascade main → dev [skip ci]
chore: cascade main → dev [skip ci]
feat(workflows): append stability suffix to manifest versions [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
153cd407e3
chore: trigger update-server workflow for version suffix [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
eec06b1875
fix(ci): resolve merge conflict in pre-release.yml
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Successful in 3s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
4d979f1afc
Keep the newer version with version suffix appending support.

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix(workflows): proper suffix handling — use version_set_platform instead of sed [skip bump]
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
1f08b9cdd0
refactor(workflows): rename secrets MOKOGITEA_TOKEN/GITHUB_TOKEN, use x-access-token [skip bump]
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
c99caf7174
chore(workflows): sync all universal workflows from moko-platform [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
3c2c9ee084
fix(workflows): GITHUB_TOKEN→GH_MIRROR_TOKEN (reserved name) [skip bump]
Generic: Repo Health / Site Health (push) Has been skipped
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
b126817d54
feat: add YouTube video support for hero background
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Successful in 5s
Update Server / Update Server (push) Failing after 9s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
ac5c8d18b2
Detect YouTube URLs (youtube.com/watch, youtu.be, youtube.com/embed)
and render a privacy-enhanced iframe embed instead of a <video> tag.
Local video files still work as before via the <video> element.

- Extract YouTube video ID via regex in entry point
- Render iframe with autoplay, muted, looped, no controls
- Use youtube-nocookie.com for privacy
- Add pointer-events: none to prevent interaction with video layer
- Update video field label/description to mention YouTube support

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix(workflows): rename remaining old secrets in repo-specific workflows [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
9d76604cfa
The url filter rejects local relative paths like images/video.mp4.
Changed to string filter to support both local paths and YouTube URLs.

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: smart video URL detection for YouTube, Vimeo, and local files
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Successful in 6s
Update Server / Update Server (push) Failing after 10s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
ae948e41a7
The video field now accepts any URL format and auto-detects the source:
- YouTube: watch, embed, shorts, youtu.be (extracts video ID)
- Vimeo: vimeo.com/ID, player.vimeo.com/video/ID
- Local/direct: relative paths or direct URLs render as <video>

Also fix videoFile filter from url to string to allow local paths.

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix(updates): correct element name and display name in updates.xml
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Successful in 6s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
5a77ec63f1
- Element must be mod_mokojoomhero (with prefix) to match #__extensions
- Display name should be "Module - MokoJoomHero" not "Module - mod_mokojoomhero"

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
refactor: align with Joomla 5 module conventions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Successful in 4s
Update Server / Update Server (push) Failing after 9s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
e3d156bf2f
- Rename css/template.css → css/mod_mokojoomhero.css
- Rename js/template.js → js/mod_mokojoomhero.js
- Update joomla.asset.json URIs to match new filenames
- Use $app (injected by Joomla) instead of Factory::getApplication()
- Remove unused Factory import
- Add proper scope annotations ($app, $module, $params)

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat(i18n): add en-US locale alongside en-GB
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Successful in 6s
Update Server / Update Server (push) Failing after 11s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
d5bf76e642
- en-GB: British English (Colour, Centre)
- en-US: American English (Color, Center)
- Both locales declared in manifest <languages> section

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix(i18n): add param labels to .ini files for admin form rendering
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Successful in 6s
Update Server / Update Server (push) Failing after 12s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
894866bf53
Joomla's Module Manager loads mod_mokojoomhero.ini (not .sys.ini) when
rendering the configuration form fields. All param labels were only in
.sys.ini, causing raw constants to show in the admin edit screen.

Duplicated all param label/description strings into both .ini and
.sys.ini for en-GB and en-US locales.

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix(manifest): hardcode name and description in XML manifest
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Successful in 6s
Update Server / Update Server (push) Failing after 11s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
1d50f88bbc
Joomla does not reliably translate language keys in <name> and
<description> manifest elements — the .sys.ini may not be loaded
when these are first read. Hardcode the values instead.

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat(params): default hero height to 60vh, clarify vh/px in description
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Successful in 3s
Update Server / Update Server (push) Failing after 6s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
2b49acefaa
- Change default from 400px to 60vh (viewport-relative is more responsive)
- Add hint placeholder showing "e.g. 60vh or 400px"
- Update description to explain both px and vh units

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: add WYSIWYG content editor with card display on hero
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Successful in 3s
Update Server / Update Server (push) Failing after 6s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
d738d75fad
- Add heroContent param with Joomla editor field for rich HTML input
- Add showCard toggle to wrap content in a styled card (white bg, shadow, rounded)
- Card CSS: semi-transparent white, 8px radius, centered, max 700px
- Remove old $module->content fallback — content now comes from params
- Language strings for en-GB and en-US (both .ini and .sys.ini)

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix(mobile): hide video/images on mobile, show card only
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Successful in 3s
Update Server / Update Server (push) Failing after 7s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
29a32a9e07
On mobile (<=768px) the video/slideshow is hidden behind the card
and wastes bandwidth. Now:
- Hide video and slide elements via display:none
- Remove fixed height so hero auto-sizes to card content
- Clear overlay background (no need without background media)
- Skip slideshow JS timer on mobile via matchMedia check

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: use inline asset registration instead of preset registry
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Successful in 3s
Update Server / Update Server (push) Failing after 6s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
96e7ae65eb
addExtensionRegistryFile fails during countModules() — Joomla renders
modules early during template parsing and the preset registry lookup
fails. Switch to registerAndUseStyle/registerAndUseScript which work
reliably in all contexts.

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
refactor: move assets to media/ for proper Joomla WAM integration
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Successful in 3s
Update Server / Update Server (push) Failing after 6s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
42c578fc7a
Joomla's addExtensionRegistryFile('mod_foo') resolves to
media/mod_foo/joomla.asset.json, not modules/mod_foo/. Move CSS, JS,
and joomla.asset.json to src/media/ and add <media> tag to manifest.

- src/css/ → src/media/css/
- src/js/ → src/media/js/
- src/joomla.asset.json → src/media/joomla.asset.json
- Manifest: replace <folder>css/js</folder> in <files> with <media> tag
- Entry point: restore addExtensionRegistryFile + usePreset

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
chore: add wiki/ to .gitignore
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
6791a9debc
Wiki content is managed via Gitea wiki, not in the repo.

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: correct WebAsset registration and iframe video cover
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Failing after 3s
Update Server / Update Server (push) Successful in 9s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
7130c27840
- Add #style/#script suffixes to preset dependencies (Joomla defaults
  untyped deps to "preset", causing UnsatisfiedDependencyException)
- Fix asset URIs to use extension_name/file pattern — Joomla's
  HTMLHelper auto-inserts the css/js folder
- Split video CSS into <video> (object-fit:cover) and <iframe>
  (oversize+centre-crop) rules since object-fit doesn't apply to iframes

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: render module title inside hero card and preserve btn styles
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Failing after 4s
Update Server / Update Server (push) Successful in 15s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
65169f8730
- Show module title as h2 inside the card/content when showtitle is
  enabled, keeping it within the overlay rather than above the hero
- Exclude .btn from card link color override so buttons retain their
  own styling

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: pause/resume videos when hero scrolls out of viewport
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Auto Version Bump / Version Bump (push) Failing after 3s
Update Server / Update Server (push) Successful in 10s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
22c9349b5d
Use IntersectionObserver to pause videos when the hero is not visible
and resume when it scrolls back in. Supports native <video>, YouTube
(postMessage API with enablejsapi=1), and Vimeo embeds.

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
jmiller added 2 commits 2026-05-30 15:56:23 +00:00
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
chore: merge origin/dev
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 6s
Universal: Auto Version Bump / Version Bump (push) Failing after 4s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 8s
Universal: PR Check / Validate PR (pull_request) Successful in 6s
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 13s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Generic: Repo Health / Release configuration (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
fbec3b2fbf
jmiller merged commit 9b97df6bd5 into main 2026-05-30 15:56:37 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoJoomHero#38