Client repos (WaaS) are managed Joomla sites — not extensions. They have
src/ with site structure PLUS deployment configs (sftp-config, monitoring,
sync scripts). Detection prioritizes client over joomla when deployment
markers are present.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Embeds an MCP server in mcp/ that exposes MokoStandards CLI tools as
AI assistant tools: platform detection, repo health checks, validation
(structure, headers, secrets, changelog, version consistency, enterprise
readiness, drift scan), Joomla/Dolibarr-specific checks, definitions
browser, policy/guide reader, and release notes generation.
Also adds McpServerPlugin, MCP platform detection, and MCP workflow
templates.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Version policy: stable=minor bump (was major), pre-release=patch
- Client repos: 10 workflows (no update-server, no updates.xml)
- Cascade delete documented
- Release naming with element name documented
- Full changelog updated
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Defines standard structure for client Joomla site repos:
- No updates.xml (not an installable extension)
- No update-server workflow
- Has sync-media.yml for bidirectional SFTP media sync
- 10 workflows (vs 10+update-server for extensions)
- Required per-repo variables/secrets for media sync
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
No longer references local templates/workflows/ — instead clones
the canonical template repo (Joomla/Dolibarr/Generic/Client) at
sync time to get the latest workflow files directly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace old .template files with actual workflow YMLs from template repos
- Update RepositorySynchronizer to use new 10/11-workflow standard
- Remove legacy shared workflows (enterprise-firewall, auto-assign, etc.)
- Joomla workflows sourced from MokoStandards-Template-Joomla
- Dolibarr workflows sourced from MokoStandards-Template-Dolibarr
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Document new 10-workflow standard for Joomla, 11 for Dolibarr
- Remove deploy.yml from definitions (deploy is manual only)
- Add pre-release.yml to definitions
- Update waas-component.tf: ci-dolibarr + publish-to-mokodolimods
- Canonical source is now template repos, not API repo
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Expands standard workflow suite from 6 to 10 in both joomla-template.tf
and waas-component.tf definitions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replaces old .github/workflows with the standard 6-workflow set
matching MokoOnyx: auto-release, ci-joomla, deploy, deploy-manual,
repo-health, update-server.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds auto-release, ci-joomla, deploy, deploy-manual, repo-health,
and update-server workflows as standard templates.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
migrateMokoStandards() now checks both root and .github/.mokostandards
as sources, migrating to .gitea/.mokostandards when running on Gitea.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Guard upload-artifact@v4 / download-artifact@v4 with
github.server_url == 'https://github.com' so they skip on Gitea
- Add Gitea fallbacks (checkout or log message) where artifacts are used
- Make enforce-tags step continue-on-error so sync doesn't fail on tag issues
- Replace upload-artifact in bulk-repo-sync with step summary on Gitea
- Fix escaped variable references in bulk-repo-sync.yml
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
syncFilesToBranch was resolving template paths against $standardsRoot
(../MokoStandards) instead of $repoRoot (the API repo where templates
actually live). This caused all template-sourced entries to silently
fail with "Source file not found", resulting in 0 files synced.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ensureComposerEnterprise() now skips repos whose composer.json name
matches 'mokoconsulting-tech/enterprise' to avoid the package requiring
itself. Also removes the re-added self-reference from composer.json.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Gitea API expects label IDs (int64) not names. When string labels are
passed, resolve them via listLabels() before posting. Fixes 422
Unprocessable Entity errors that were causing tracking issue creation
to fail and repos to be marked as skipped during bulk sync.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>