fix: honest installer success message #15

Merged
jmiller merged 2 commits from fix/honest-install-success into dev 2026-07-06 16:24:10 +00:00
Owner

Summary

Applies the "honest installer success" pattern (mirrors MokoSuiteHQ PR #72 / MokoSuiteClient PR #300).

Installer type: package (pkg_mokosuiteeditor.xml, <scriptfile>script.php</scriptfile>).

The package postflight previously always showed the license / next-steps message. Joomla only logs a failed child sub-install but still runs postflight, so a partial install looked successful.

Change

postflight() now calls a new private missingChildExtensions() verifier that reads $parent->getParent()->getManifest(), iterates $manifest->files->file, and confirms each declared extension registered in #__extensions (element = id, minus a leading plg_<group>_ for plugins; plugins also match folder = group). If any are missing it enqueues an error (htmlspecialchars'd names) and returns before the license message.

Fails open: the whole check is wrapped in try/catch and returns [] on any error, so a transient DB/IO glitch never fakes a failure. php -l passes.

https://claude.ai/code/session_01B9aZHSWbiiZykJD88pYx8R

## Summary Applies the "honest installer success" pattern (mirrors MokoSuiteHQ PR #72 / MokoSuiteClient PR #300). Installer type: **package** (`pkg_mokosuiteeditor.xml`, `<scriptfile>script.php</scriptfile>`). The package postflight previously always showed the license / next-steps message. Joomla only *logs* a failed child sub-install but still runs postflight, so a partial install looked successful. ## Change `postflight()` now calls a new private `missingChildExtensions()` verifier that reads `$parent->getParent()->getManifest()`, iterates `$manifest->files->file`, and confirms each declared extension registered in `#__extensions` (element = `id`, minus a leading `plg_<group>_` for plugins; plugins also match `folder = group`). If any are missing it enqueues an `error` (htmlspecialchars'd names) and returns **before** the license message. Fails open: the whole check is wrapped in try/catch and returns `[]` on any error, so a transient DB/IO glitch never fakes a failure. `php -l` passes. https://claude.ai/code/session_01B9aZHSWbiiZykJD88pYx8R
jmiller added 2 commits 2026-07-06 16:19:27 +00:00
fix: honest installer success message
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 9s
6d33273e18
Gate the installer success/license/next-steps message behind a fail-open
verifier so the installer never reports success when the install failed or
only partially completed.

- Package scripts: verify every child extension declared in the manifest
  actually registered in #__extensions before showing the license message.
- com_mokoog component script: verify the declared SQL tables exist before
  echoing the success message.

Mirrors MokoSuiteHQ PR #72 and MokoSuiteClient PR #300. Both checks are wrapped
in try/catch and fail open, so a transient DB/IO glitch never fakes a failure.

Claude-Session: https://claude.ai/code/session_01B9aZHSWbiiZykJD88pYx8R
chore(version): pre-release bump to 01.00.26-dev [skip ci]
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Failing after 1s
e386230828
jmiller merged commit d58f5ed2d0 into dev 2026-07-06 16:24:10 +00:00
jmiller deleted branch fix/honest-install-success 2026-07-06 16:24:11 +00:00
Sign in to join this conversation.
No Reviewers
Priority -
Type -
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoSuiteEditor#15