2 Commits

Author SHA1 Message Date
gitea-actions[bot] 49a00185c9 chore(version): auto-bump patch 09.03.03-dev [skip ci] 2026-05-28 22:40:36 +00:00
Jonathan Miller e5e32c4cb7 fix(cli): fix joomla_release org, element derivation, isset bug
Platform: moko-platform CI / Gate 2: Unit Tests (8.1) (push) Blocked by required conditions
Platform: moko-platform CI / Gate 2: Unit Tests (8.2) (push) Blocked by required conditions
Platform: moko-platform CI / Gate 2: Unit Tests (8.3) (push) Blocked by required conditions
Platform: moko-platform CI / Gate 3: Self-Health Check (push) Blocked by required conditions
Platform: moko-platform CI / Gate 4: Governance (push) Blocked by required conditions
Platform: moko-platform CI / Gate 5: Template Integrity (push) Blocked by required conditions
Platform: moko-platform CI / CI Summary (push) Blocked by required conditions
Generic: Repo Health / Release configuration (push) Blocked by required conditions
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
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
Platform: moko-platform CI / Gate 1: Code Quality (push) Failing after 1m19s
- Change ORG from mokoconsulting-tech to MokoConsulting
- Fix infourl from github.com to git.mokoconsulting.tech
- Strip type prefix from name before deriving element
- Use array_key_exists instead of isset for null-valued stability

Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 17:40:24 -05:00
3 changed files with 30 additions and 7 deletions
+23 -2
View File
@@ -12,8 +12,6 @@ BRIEF: Release changelog
# Changelog # Changelog
## [Unreleased] ## [Unreleased]
## [09.04.00] --- 2026-05-28
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
@@ -101,3 +99,26 @@ Version format: `XX.YY.ZZ` (zero-padded semver).
- PHPStan level 3→4: removed 13 dead properties, 41 defensive patterns baselined - PHPStan level 3→4: removed 13 dead properties, 41 defensive patterns baselined
- PHPStan level 4→5: fixed metrics `increment()` bug (labels passed as value param) - PHPStan level 4→5: fixed metrics `increment()` bug (labels passed as value param)
- PHPStan level 5→6: 360 missing array generic types baselined - PHPStan level 5→6: 360 missing array generic types baselined
## [07.00.00] - 2026-05-25
### Added
- `cli/client_provision.php` — end-to-end client onboarding from JSON config (closes #4)
- `cli/client_dashboard.php` — unified HTML dashboard: health, SSL, uptime, releases (closes #3)
- `cli/client_health_check.php`, `cli/joomla_compat_check.php`, `cli/theme_lint.php` — new CLI tools
- `lib/Enterprise/ConfigValidator.php` — JSON schema validator for plugin configs (closes #105)
- PHPUnit test infrastructure: `phpunit.xml` + 19 tests (closes #102)
- `bin/moko list` — auto-grouped command list with 45 commands, plugin command dispatcher (closes #104)
- `templates/client-provision-example.json` — example config for client provisioning
### Fixed
- `bin/moko` COMMAND_MAP: all paths pointed to non-existent `api/` directory (closes #100)
- `release_cascade.php`: accept `release-candidate` as stability value (was silently skipping)
- `package_build.php`: fix 0-byte ZIP for Joomla packages — correct structure, no double prefix (closes #92)
- PHPStan: level 0 to 2, 67 type errors fixed, 0 exclusions
- `ApiClient::delete()`: accept optional body parameter for Gitea Contents API
### Changed
- Migrated all 7 CLIApp scripts to CliFramework (closes #101)
- Updated CLAUDE.md with current architecture, CLI patterns, code quality (closes #103)
- Wiki CLI_AUTOMATION page updated with all tools
+1 -1
View File
@@ -6,7 +6,7 @@ DEFGROUP: MokoStandards.Root
INGROUP: MokoStandards INGROUP: MokoStandards
REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
PATH: /README.md PATH: /README.md
VERSION: 09.04.00 VERSION: 09.03.03
BRIEF: Project overview and documentation BRIEF: Project overview and documentation
--> -->
+6 -4
View File
@@ -37,7 +37,7 @@ use MokoEnterprise\{ApiClient, AuditLogger, CliFramework, Config, PlatformAdapte
class JoomlaRelease extends CliFramework class JoomlaRelease extends CliFramework
{ {
private const VERSION = '04.06.00'; private const VERSION = '04.06.00';
private const ORG = 'mokoconsulting-tech'; private const ORG = 'MokoConsulting';
private const STABILITY_TAGS = [ private const STABILITY_TAGS = [
'development' => 'development', 'development' => 'development',
@@ -75,7 +75,7 @@ class JoomlaRelease extends CliFramework
$stability = (string) $this->getArgument('--stability'); $stability = (string) $this->getArgument('--stability');
$dryRun = (bool) $this->getArgument('--dry-run'); $dryRun = (bool) $this->getArgument('--dry-run');
if (!isset(self::STABILITY_TAGS[$stability])) { if (!array_key_exists($stability, self::STABILITY_TAGS)) {
$this->log('ERROR', "Invalid stability: {$stability}. Use: " . implode(', ', array_keys(self::STABILITY_TAGS))); $this->log('ERROR', "Invalid stability: {$stability}. Use: " . implode(', ', array_keys(self::STABILITY_TAGS)));
return 1; return 1;
} }
@@ -213,7 +213,9 @@ class JoomlaRelease extends CliFramework
// Templates don't have <element> — derive from <name> // Templates don't have <element> — derive from <name>
if ($element === '') { if ($element === '') {
$element = strtolower(str_replace(' ', '', $name)); // Strip type prefix (e.g. "Template - ") before deriving element
$baseName = preg_replace('/^(Package|Plugin|Module|Component|Template|Library|File)\s*-\s*/i', '', $name);
$element = strtolower(str_replace([' ', '-'], '', $baseName));
} }
$tp = ''; $tp = '';
@@ -435,7 +437,7 @@ class JoomlaRelease extends CliFramework
$lines[] = ' <tags>'; $lines[] = ' <tags>';
$lines[] = " <tag>{$stability}</tag>"; $lines[] = " <tag>{$stability}</tag>";
$lines[] = ' </tags>'; $lines[] = ' </tags>';
$lines[] = " <infourl title=\"{$meta['name']}\">https://github.com/" . self::ORG . "</infourl>"; $lines[] = " <infourl title=\"{$meta['name']}\">https://git.mokoconsulting.tech/" . self::ORG . "</infourl>";
$lines[] = ' <downloads>'; $lines[] = ' <downloads>';
$lines[] = " <downloadurl type=\"full\" format=\"zip\">{$zipUrl}</downloadurl>"; $lines[] = " <downloadurl type=\"full\" format=\"zip\">{$zipUrl}</downloadurl>";
$lines[] = " <downloadurl type=\"full\" format=\"tar.gz\">{$tarUrl}</downloadurl>"; $lines[] = " <downloadurl type=\"full\" format=\"tar.gz\">{$tarUrl}</downloadurl>";