Files
2026-06-25 19:45:58 +00:00

5.3 KiB

Changelog

[Unreleased]

Added

  • Mirror Domains & Staging — repeatable subform table in DevTools plugin for configuring domain aliases with per-alias offline bypass, robots directive, and labels
  • Daily Support PIN — HMAC-SHA256 rotating PIN shown on cpanel module, component dashboard, and HQ site cards
  • Support PIN in status bar — cache/temp module now shows PIN request button instead of domain; click to request, click again to copy
  • Frontend link in status bar — cache/temp module now has 4 buttons: Site (frontend link), PIN, Cache, Temp
  • Help buttons — all admin views link to Gitea wiki pages via toolbar help button
  • Support PIN in heartbeat — core system plugin includes current PIN in heartbeat payload to HQ
  • HQ config sync — client stores HQ-configured support_pin_hours from heartbeat response, PIN TTL now configurable from HQ

Changed

  • Support PIN UI unifiedSupportPinHelper::renderBadge() and renderScript() replace 3 separate inline implementations (dashboard, cpanel module, cache module) with click-to-copy on all PIN badges
  • Admin sidebar menu module now loads component-local language files (fixes untranslated keys for MokoSuiteCross and other components)
  • Support PIN TTL is now configurable via HQ global options instead of hardcoded 72 hours
  • Removed MokoSuiteHQ from extension catalog (internal app, not for client sites)
  • SupportPinHelper — shared helper centralises PIN generation across dashboard, cpanel module, cache module, and AJAX controller
  • Current IP display — firewall plugin settings show admin's IP with copy button
  • Heartbeat monitor — consolidated into core plugin from retired monitor plugin, with diagnostic logging on all bail-out points
  • Backup bridge plugin — discovers MokoSuiteBackup's BackupStatusHelper and sends status in heartbeat payloads
  • Activity log — blockchain-style hash chain for tamper detection in MokoSuiteHQ
  • Dev domain in heartbeat — client sends dev alias to HQ for display on dashboard
  • Login app badges — recent logins table shows Admin/Site badge parsed from Joomla action log message JSON

Changed

  • Plugin install — self-healing: extracts plugin zips from package on every update, creates missing extension records with namespace
  • Menu naming — MokoSuiteClient displays as "MokoSuite", MokoSuiteHQ as "MokoHQ", others stripped of prefix
  • Menu ordering — HQ first, MokoSuite second, others alphabetical
  • Cpanel module — always starts collapsed, access level 3 (Special), pretty plugin badge labels
  • Module namespaces — fixed cpanel (MokoSuiteCpanel → MokoSuiteClientCpanel) and cache (MokoSuiteCache → MokoSuiteClientCache)
  • Health checks — return status:error on exceptions instead of false status:ok; MokoSuiteBackup detection queries correct table
  • Heartbeat — correct URL (suite.dev), correct API route (mokosuitehq), correct headers (X-MokoSuite-*), fresh RSA key pair
  • Date formats — all templates use Joomla locale-aware DATE_FORMAT_LC2/LC4
  • Domains — updated from waas.dev to suite.dev.mokoconsulting.tech throughout
  • Dashboard info bar — reverted stacked layout; info items back to horizontal row
  • Extension version bar — full-width auto-sized strip with equal-width cells and border separators
  • Recent logins — exact match on LOGGED_IN key (excludes logout noise), limit increased to 10

Removed

  • Helpdesk/tickets — migrated to MokoSuiteCRM (issue #67)
  • Monitor plugin — retired, config consolidated into core plugin
  • Backup bridge — temporarily removed from package manifest (build pipeline issue)
  • Update server migration — removed migrateUpdateServerUrls, cleanupStaleUpdateSites, fixUpdateRecords, enableUpdateServer calls

Fixed

  • Health endpoint cron check SQL error — orphan setQuery(getQuery(true), 0, 5) produced bare LIMIT 5, returning 503 for all health polls
  • License plugin missing src/ and language/ directories causing install failure
  • PIN generation inconsistency — controller used floor(now/TTL) while display used floor(requestedAt/TTL)
  • Plugin files installing to group root instead of element subdirectory (ALTER TABLE DEFAULT '' + empty element cleanup)
  • Orphan extension rows with empty element or display-name-as-element
  • Module not publishing (ensureAdminModule direct DB update bypasses checked_out)
  • RSA key pair had Windows line endings causing signature verification failure
  • Heartbeat connection failing due to wrong domain, route, and header names

[02.44.00] --- 2026-06-20

[02.42.00] --- 2026-06-20

[02.42.00] --- 2026-06-20