- Persistent admin warning when no download key is set on the MokoWaaS
update site, with link to System → Update Sites
- Daily heartbeat validates the key against MokoGitea's dynamic endpoint;
shows error if key is invalid or expired
- Package postflight removes stale/duplicate update site entries and
orphaned #__updates rows
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update server now points to MokoGitea's dynamic endpoint which
validates license keys (dlid) and generates update XML from git
releases. Users enter the download key via Joomla's native
System → Update Sites interface. Legacy static URLs are auto-migrated
on install/update.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Only enforce the primary master username; plugin no longer creates
or protects the secondary user account.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Hardcode mokoconsulting and jmiller as master usernames (no longer
configurable via params)
- Fix isIpAllowed() reading from global config instead of plugin params
- Fix empty allowed_ips returning false (now allows all IPs)
- Both master users are auto-created and enforced as Super Admins
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add `allow_extension_updates` param (default: Yes) so tenants can
update extensions even when the installer is restricted. The update
and updatesites views are now permitted independently of the install
and manage views.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add plg_task_mokowaassync scheduled task plugin for automated content sync
- Fix demo banner countdown to show weeks/days/months for longer intervals
- Add Community Builder tables to DemoResetService safe reset list
- Remove all CI/CD workflow files (manual release process)
- Bump version to 02.28.00 across all manifests and updates.xml
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Banner is now a normal block element at the top of the body instead of
position:fixed. No close button, no sessionStorage dismiss. Content
flows below it naturally.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Task params only contain custom fields after the task is edited and
saved in the Scheduler UI. Before that, they're missing — default to
the form defaults (all On) instead of Off.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
After restoring content tables, deletes stale content-level assets
(articles, categories, modules, contacts, banners) and rebuilds:
- Category nested set tree
- Menu nested set tree
- Asset nested set tree
- Re-creates missing asset entries for articles with asset_id=0
Component and extension-level assets are never touched.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Supports interval-minutes, interval-hours, interval-days, and
cron-expression rule types. Shows banner, media, countdown, and
baseline snapshot status in the plugin config info card.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
DreamHost server timezone is America/Los_Angeles, so PHP was interpreting
the UTC datetime as Pacific time, causing the display to be hours off.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Snapshot now triggers via onContentAfterSave when the task is saved
with take_snapshot_on_save=1, instead of waiting for the next execution.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Demo mode is now controlled entirely through the Joomla Scheduled Task:
- Create a "MokoWaaS Demo Reset" task to enable demo mode
- Task form has: snapshot toggle, media toggle, banner settings
- System plugin reads banner config from the task params
- Plugin config shows task status card with link to manage it
- Removed demo_mode_enabled, schedule, and one-shot toggles from plugin
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Full database restore overwrites #__extensions and #__scheduler_tasks
with snapshot data, losing the current plugin registrations. After
restore, re-enables all MokoWaaS extensions, re-registers the task
plugin if missing, and re-enables the update server.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
NextResetField now queries #__scheduler_tasks.next_execution directly
instead of using a stored param. Also shows last execution time.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>