jmiller
b2d2ae9eff
chore: sync .mokogitea/workflows/pr-check.yml from moko-platform [skip ci]
2026-06-04 15:56:48 +00:00
jmiller
7de46486e6
chore: sync .mokogitea/workflows/pr-check.yml from moko-platform [skip ci]
2026-06-04 15:39:16 +00:00
jmiller
8b7b84dd41
chore: sync .mokogitea/workflows/pr-check.yml from moko-platform [skip ci]
2026-06-04 15:30:13 +00:00
jmiller
daa17a627e
chore: remove updates.xml [skip ci]
2026-06-04 15:27:11 +00:00
jmiller
f960b37b33
chore: sync .mokogitea/workflows/pr-check.yml from moko-platform [skip ci]
2026-06-04 15:14:19 +00:00
jmiller
40de6532d6
feat(update): migrate update server URL to Gitea Pages [skip ci]
2026-06-04 14:33:53 +00:00
jmiller
364bba0271
chore: sync .mokogitea/workflows/auto-release.yml from moko-platform [skip ci]
2026-06-04 14:21:09 +00:00
jmiller
7091e64e2c
chore: sync .mokogitea/workflows/repo-health.yml from moko-platform [skip ci]
2026-06-03 09:37:32 +00:00
jmiller
26e146bcf4
chore: sync .mokogitea/workflows/repo-health.yml from moko-platform [skip ci]
2026-06-03 03:11:19 +00:00
jmiller
2bb8aaf8b4
chore: add .mokogitea/workflows/auto-release.yml from moko-platform [skip ci]
2026-06-02 23:47:55 +00:00
jmiller
9d0d772dd4
chore: sync .mokogitea/workflows/pr-check.yml from moko-platform [skip ci]
2026-06-02 21:52:10 +00:00
Moko Consulting
5d32a37258
chore(ci): add CI issue reporter for auto-filing gate failures
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 5s
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Universal: PR Check / Validate PR (pull_request) Successful in 4s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Successful in 17s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 10s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Release configuration (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
2026-06-02 20:38:33 +00:00
Moko Consulting
922f74d37a
chore(ci): add CI issue reporter for auto-filing gate failures
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 3s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 4s
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Validate PR (pull_request) Successful in 5s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 3s
Joomla: Extension CI / Lint & Validate (pull_request) Successful in 19s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Release configuration (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
2026-06-02 20:38:32 +00:00
Moko Consulting
6a38ca957a
chore(ci): add CI issue reporter for auto-filing gate failures
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
2026-06-02 20:38:31 +00:00
Jonathan Miller
87fc0930a0
chore(ci): remove release workflows for update server migration
...
Universal: PR Check / Branch Policy (pull_request) Successful in 4s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 11s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 8s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 12s
Universal: PR Check / Validate PR (pull_request) Successful in 11s
Joomla: Extension CI / Lint & Validate (pull_request) Successful in 21s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Delete auto-release.yml, pre-release.yml, and auto-bump.yml in
preparation for the new update server system.
Remaining workflows: ci-joomla, cleanup, gitleaks, notify, pr-check,
repo-health, security-audit (7 total).
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 22:35:14 -05:00
Jonathan Miller
23caf15df6
fix(ci): replace PCRE grep with sed for Alpine compat
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 5s
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 4s
Universal: PR Check / Validate PR (pull_request) Successful in 5s
Joomla: Extension CI / Lint & Validate (pull_request) Successful in 8s
Alpine Linux grep doesn't support -P (PCRE). Use sed for VERSION
and manifest version extraction.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 21:59:55 -05:00
Jonathan Miller
d001ef7c35
fix(ci): support HTML comment VERSION format, add en-GB/en-US check
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 3s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 6s
Universal: Auto Version Bump / Version Bump (push) Successful in 7s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 4s
Joomla: Extension CI / Lint & Validate (pull_request) Successful in 8s
Universal: PR Check / Validate PR (pull_request) Successful in 6s
- Release readiness: support <!-- VERSION: XX.YY.ZZ --> format in
README.md (not just FILE INFORMATION block format)
- Add language directory check: verify en-GB and en-US exist in all
language/ directories under src/ or htdocs/
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 21:51:51 -05:00
gitea-actions[bot]
2dcc6860c2
chore: update development channel 01.00.01-dev [skip ci]
2026-05-31 02:46:37 +00:00
gitea-actions[bot]
01055aa844
chore(version): pre-release bump to 01.00.01-dev [skip ci]
2026-05-31 02:46:34 +00:00
Jonathan Miller
8c0fcfe81f
fix: add missing index.html to all extension directories
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 5s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 4s
Universal: PR Check / Validate PR (pull_request) Successful in 5s
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Joomla: Extension CI / Lint & Validate (pull_request) Successful in 11s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || 'development' }}) (push) Successful in 15s
Joomla security requirement — prevents directory listing on misconfigured
servers. Added to all 57 directories that were missing them.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 21:46:21 -05:00
Jonathan Miller
ba62e95e58
fix(ci): skip namespace check for package manifests, secrets already set
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 3s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 8s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 9s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 8s
Universal: PR Check / Validate PR (pull_request) Successful in 11s
Universal: Auto Version Bump / Version Bump (push) Successful in 14s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 14s
Package type extensions (pkg_*) don't have <namespace> tags — only
component/plugin manifests do. Skip the check when type="package".
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 21:41:46 -05:00
Jonathan Miller
90e5f8c717
fix(ci): use GH_MIRROR_TOKEN for composer GitHub auth
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 5s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 5s
Universal: PR Check / Validate PR (pull_request) Successful in 6s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 8s
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
MOKOGITEA_TOKEN is a Gitea token — cannot authenticate against github.com
for Packagist downloads. Use GH_MIRROR_TOKEN (GitHub PAT) instead.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 21:26:10 -05:00
Jonathan Miller
e1747da3ff
fix: add minimum-stability alpha for joomla/coding-standards
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 5s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 4s
Universal: PR Check / Validate PR (pull_request) Successful in 5s
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 22s
joomla/coding-standards has no stable release — only 3.0.0-alpha.
Add minimum-stability: alpha with prefer-stable: true.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 21:23:40 -05:00
Jonathan Miller
ad09eae874
fix(ci): always clone fresh moko-platform tools, fix composer constraint
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 4s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 6s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 4s
Universal: PR Check / Validate PR (pull_request) Successful in 5s
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
- auto-bump.yml: remove stale /opt/moko-platform check, always clone
fresh from git (matches pre-release.yml pattern)
- composer.json: fix joomla/coding-standards ^4.0 → ^3.0 (v4 doesn't
exist on Packagist)
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 21:16:20 -05:00
Jonathan Miller
5cbd0b64d4
refactor(ci): simplify workflows — merge update-server into pre-release, remove redundancy
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Universal: Auto Version Bump / Version Bump (push) Failing after 5s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 5s
Universal: PR Check / Validate PR (pull_request) Successful in 6s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 7s
Changes:
- Delete cascade-dev.yml (disabled; auto-release Step 11 handles dev recreation)
- Delete update-server.yml (merged into pre-release.yml)
- Consolidate pre-release.yml: now handles push triggers on dev/alpha/beta/rc
branches, PR merged to dev, manual dispatch, SFTP deploy, and updates.xml sync
- Remove pre-release RC trigger from pr-check.yml (auto-release.yml handles RC
via promote-rc job on PR opened to main)
- Restrict repo-health.yml to manual dispatch only (was noisy on every push/PR)
Workflow count: 12 → 10
Before:
pre-release.yml — PR merged to dev + manual
update-server.yml — push to dev + PR merged to dev + manual + SFTP deploy
pr-check.yml — branch policy + validate + trigger pre-release RC
cascade-dev.yml — disabled
repo-health.yml — push + PR + manual
After:
pre-release.yml — push to dev + PR merged to dev + manual + SFTP deploy
pr-check.yml — branch policy + validate (no RC trigger)
repo-health.yml — manual only
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 21:05:26 -05:00
Jonathan Miller
073e24bf4e
revert(ci): restore pre-release.yml to upstream template
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 4s
Universal: Auto Version Bump / Version Bump (push) Failing after 4s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 5s
Universal: PR Check / Validate PR (pull_request) Successful in 5s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Generic: Repo Health / Release configuration (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
RC-on-PR-to-main is already handled by auto-release.yml (promote-rc job).
pre-release.yml only needs to handle dev releases (PR merged to dev) and
manual dispatch.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 20:57:46 -05:00
gitea-actions[bot]
5a6f315403
chore: update release-candidate channel 01.00.01-rc [skip ci]
2026-05-31 01:54:54 +00:00
gitea-actions[bot]
516e2a4a47
chore(version): pre-release bump to 01.00.01-rc [skip ci]
2026-05-31 01:54:51 +00:00
Jonathan Miller
fe92892310
feat(ci): trigger RC build on PR draft to main, rename branch to rc
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Failing after 5s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 6s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 5s
Universal: PR Check / Validate PR (pull_request) Successful in 6s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Generic: Repo Health / Release configuration (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
When a PR is opened or drafted targeting main, the pre-release workflow
now automatically builds a release-candidate package and renames the
source branch to 'rc'.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 20:54:02 -05:00
Jonathan Miller
e1cf4cb385
docs: update README and CHANGELOG for v1.0.0 release
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 3s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 4s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 5s
Universal: Auto Version Bump / Version Bump (push) Failing after 4s
Universal: PR Check / Validate PR (pull_request) Successful in 6s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Generic: Repo Health / Release configuration (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 20:47:10 -05:00
jmiller
381557e79b
chore: sync .mokogitea/workflows/auto-bump.yml from moko-platform [skip ci]
2026-05-31 01:46:47 +00:00
jmiller
5da49ce416
chore: sync .mokogitea/workflows/cascade-dev.yml from moko-platform [skip ci]
2026-05-31 01:46:05 +00:00
gitea-actions[bot]
e1eb409943
chore: update development channel 01.00.01-dev [skip ci]
2026-05-31 01:40:50 +00:00
gitea-actions[bot]
5125fff078
chore(version): auto-bump 01.00.01-dev [skip ci]
2026-05-31 01:40:48 +00:00
Jonathan Miller
de9f7eeb58
fix(security): harden controllers, add site defaults, platform-specific OG tags
...
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Failing after 7s
Update Server / Update Server (push) Successful in 11s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Security fixes:
- Fix JSON-LD XSS via </script> injection in content data (#34 )
- Add ACL permission checks to Batch and ImportExport controllers (#37 )
- Add CSV import file type, MIME, and size validation (#35 )
- Fix multilingual bug in content plugin load/save OG data (#41 )
Enhancements:
- Add site-wide default OG title and description plugin parameters
- Add Discord embed color (theme-color) plugin parameter
- Add og:image:width/height for faster social previews
- Add article:published_time, article:modified_time, article:author for LinkedIn
- Add onMokoOGAfterRender event for third-party plugin extensibility
- Add content_type regex validation on CSV import rows
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 20:40:21 -05:00
Jonathan Miller
a5b14048f4
refactor: rename MokoOpenGraph → MokoJoomOpenGraph, add moko-platform standards compliance
...
- Rename project display name across 69 files (PHP, XML, INI, SQL, CSS, JS, JSON, MD)
- Add <display-name> to .mokogitea/manifest.xml per moko-platform schema
- Update pkg_mokoog.xml <name> to "Package - MokoJoomOpenGraph" (Joomla convention)
- Update all update server URLs to new repo path
- Add CONTRIBUTING.md and CODE_OF_CONDUCT.md (required by repo-health workflow)
- Add .gitattributes for line-ending normalization and export-ignore rules
- Add .gitignore
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-30 20:40:21 -05:00
jmiller
d46f726a78
chore: sync .mokogitea/workflows/pr-check.yml from moko-platform [skip ci]
2026-05-30 16:03:52 +00:00
jmiller
0ff6798918
chore: sync .mokogitea/workflows/auto-release.yml from moko-platform [skip ci]
2026-05-30 15:04:57 +00:00
jmiller
5c175ebc21
chore: sync .mokogitea/workflows/auto-bump.yml from moko-platform [skip ci]
2026-05-30 15:02:21 +00:00
jmiller
182e8caa90
chore: sync .mokogitea/workflows/auto-release.yml from moko-platform [skip ci]
2026-05-30 01:17:07 +00:00
jmiller
56d7d8784b
chore: sync .mokogitea/workflows/auto-bump.yml from moko-platform [skip ci]
2026-05-29 10:32:33 +00:00
jmiller
efd86ee77e
chore: sync .mokogitea/workflows/update-server.yml from moko-platform [skip ci]
2026-05-28 20:51:44 +00:00
jmiller
7e4b391004
chore: sync .mokogitea/workflows/auto-release.yml from moko-platform [skip ci]
2026-05-28 20:46:53 +00:00
jmiller
9a88daec9d
chore: sync .mokogitea/workflows/auto-release.yml from moko-platform [skip ci]
2026-05-28 20:28:58 +00:00
jmiller
29917529ca
chore: sync .mokogitea/workflows/pre-release.yml from moko-platform [skip ci]
2026-05-28 20:09:45 +00:00
jmiller
afb431a62c
chore: sync .mokogitea/workflows/update-server.yml from moko-platform [skip ci]
2026-05-28 20:06:39 +00:00
jmiller
4fef3cd528
chore: sync .mokogitea/workflows/auto-release.yml from moko-platform [skip ci]
2026-05-28 20:03:23 +00:00
Moko Consulting
5d34cbced4
fix(workflows): rename remaining old secrets in repo-specific workflows [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
2026-05-28 14:50:17 -05:00
Moko Consulting
90bcabd2fa
fix(workflows): GITHUB_TOKEN→GH_MIRROR_TOKEN (reserved name) [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
2026-05-28 14:37:54 -05:00
Moko Consulting
a1d5953015
chore(workflows): sync all universal workflows from moko-platform [skip bump]
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 3s
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Generic: Repo Health / Release configuration (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
2026-05-28 14:25:41 -05:00
Moko Consulting
f3a76c93be
refactor(workflows): rename secrets MOKOGITEA_TOKEN/GITHUB_TOKEN, use x-access-token [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Joomla: Repo Health / Access control (push) Successful in 2s
Joomla: Repo Health / Release configuration (push) Has been cancelled
Joomla: Repo Health / Scripts governance (push) Has been cancelled
Joomla: Repo Health / Repository health (push) Has been cancelled
2026-05-28 14:24:11 -05:00
Moko Consulting
72639c1155
fix(workflows): proper suffix handling — use version_set_platform instead of sed [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Joomla: Repo Health / Access control (push) Successful in 1s
Joomla: Repo Health / Release configuration (push) Has been cancelled
Joomla: Repo Health / Scripts governance (push) Has been cancelled
Joomla: Repo Health / Repository health (push) Has been cancelled
2026-05-28 14:16:05 -05:00
Moko Consulting
000d9a8fb6
feat(workflows): append stability suffix to manifest versions [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been skipped
2026-05-28 13:42:28 -05:00
jmiller
129a9d547b
chore(ci): update pre-release.yml from moko-platform [skip ci]
2026-05-26 22:51:25 +00:00
jmiller
e1c826a46a
chore(ci): update auto-bump.yml from moko-platform [skip ci]
2026-05-26 22:50:14 +00:00
jmiller
2c90881a5b
chore(ci): update auto-release.yml from moko-platform [skip ci]
2026-05-26 22:49:02 +00:00
jmiller
f86d1bca41
chore(ci): update pre-release.yml from moko-platform [skip ci]
2026-05-26 22:37:35 +00:00
jmiller
943b5077b3
chore(ci): update auto-release.yml from moko-platform [skip ci]
2026-05-26 22:36:08 +00:00
jmiller
1954b36720
chore(ci): update auto-bump.yml from moko-platform [skip ci]
2026-05-26 22:25:46 +00:00
jmiller
fa732f44c8
chore(ci): update auto-release.yml from moko-platform [skip ci]
2026-05-26 22:24:31 +00:00
jmiller
2b5b42567b
chore(ci): update pre-release.yml from moko-platform [skip ci]
2026-05-26 22:13:52 +00:00
jmiller
72e0f85e4b
chore(ci): add auto-bump.yml from moko-platform [skip ci]
2026-05-26 22:12:39 +00:00
jmiller
105d282077
fix(ci): use release_package.php for Joomla package builds [skip ci]
2026-05-26 19:54:38 +00:00
jmiller
23de6dcb07
chore(ci): update pre-release.yml from moko-platform [skip ci]
2026-05-26 19:36:22 +00:00
jmiller
bbda9318d8
chore(ci): update auto-release.yml from moko-platform [skip ci]
2026-05-26 19:36:22 +00:00
jmiller
292265841e
chore(ci): update auto-release.yml from moko-platform [skip ci]
2026-05-26 17:36:26 +00:00
jmiller
3563c62ec2
chore(ci): update pre-release.yml from moko-platform [skip ci]
2026-05-26 17:35:11 +00:00
gitea-actions[bot]
0b97a62c82
chore: update development channel 01.00.00 [skip ci]
2026-05-24 04:37:35 +00:00
gitea-actions[bot]
fc148084a1
chore(version): bump 01.00.00 → 01.00.00-dev [skip ci]
2026-05-24 04:37:34 +00:00
jmiller
11ad5be25e
Merge pull request 'chore: cascade main -> dev [skip ci]' ( #32 ) from main into dev
...
chore: cascade main → dev [skip ci]
2026-05-24 04:31:22 +00:00
Jonathan Miller
0509980b50
fix: production readiness improvements for admin panel and installer
...
Joomla: Repo Health / Access control (push) Successful in 2s
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 4s
Joomla: Repo Health / Release configuration (push) Has been cancelled
Joomla: Repo Health / Scripts governance (push) Has been cancelled
Joomla: Repo Health / Repository health (push) Has been cancelled
Add search/filter tools to tags list view, fix API content type naming,
build proper frontend URLs for social debugger links, and auto-enable
the content plugin on package install.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:30:53 -05:00
gitea-actions[bot]
f7826ca60a
chore: update updates.xml (development: 01.00.00-dev) [skip ci]
2026-05-23 23:30:52 -05:00
Jonathan Miller
400d3759e5
feat(api): add Joomla Web Services API for OG tags ( closes #27 )
...
New sub-extension: plg_webservices_mokoog
- Registers REST API routes via onBeforeApiRoute
- CRUD endpoints at /api/index.php/v1/mokoog/tags
- Lookup endpoint at /api/index.php/v1/mokoog/lookup/:type/:id
- SubscriberInterface pattern with DI container
Component API layer (com_mokoog/api/):
- TagsController extending ApiController for CRUD operations
- JsonapiView with whitelisted fields for JSON:API output
- TagModel (AdminModel) for single-item operations
Package updates:
- pkg_mokoog.xml includes plg_webservices_mokoog
- Install script auto-enables webservices plugin
- Component manifest declares api/ directory
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:30:31 -05:00
Jonathan Miller
78fbe252cb
feat(preview): live social sharing preview in article editor ( closes #3 )
...
- Facebook and Twitter/X card previews update in real-time
- Renders below the OG fieldset in article/menu editors
- Reads og_title, og_description, og_image with fallback to
article title and meta description
- CSS mockups of each platform's card layout
- Registered via joomla.asset.json Web Asset Manager
- Safe DOM construction (no innerHTML with user data)
- MutationObserver watches media field for image changes
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:30:31 -05:00
Jonathan Miller
3d855f829f
feat(csv): add CSV import/export for OG tags ( closes #12 )
...
ImportExportController with export() and import() actions:
- Export: CSV with all OG + SEO fields, joined with article titles
- Import: Upload CSV, match on content_type + content_id
- Upsert logic: creates new or updates existing records
- Reports created/updated/skipped counts
- Toolbar buttons ready for integration
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:30:30 -05:00
Jonathan Miller
6674f354c6
feat(overlay): add OG image text overlay generator ( closes #7 )
...
ImageGenerator class renders article title onto a template background:
- Center-crop template to 1200x630px
- Semi-transparent dark overlay band for text readability
- TTF font rendering with word wrapping (max 3 lines)
- Cached output in images/mokoog/generated/overlay_*.jpg
- Configurable font size, color, quality
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:30:30 -05:00
Jonathan Miller
4a9433d2bb
feat(i18n): add multilingual OG tag support ( closes #11 )
...
- Add language column to #__mokoog_tags (default * for all languages)
- Updated unique key to include language
- SQL migration 01.02.00 for upgrades
- og:locale output from current Joomla language (en-GB to en_GB)
- Language-aware OG data loading: exact match preferred over wildcard
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:30:30 -05:00
Jonathan Miller
3d73ea2f9c
feat(jsonld): add JSON-LD structured data output ( closes #6 )
...
- JsonLdBuilder helper with Article, WebPage, BreadcrumbList, Organization
- Article schema includes headline, author, datePublished, dateModified, image
- BreadcrumbList built from Joomla's pathway
- Toggle JSON-LD and breadcrumbs independently in plugin settings
- Output via addCustomTag() in onBeforeCompileHead
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:30:29 -05:00
Jonathan Miller
9e953646d7
feat(debug): add social platform debugger quick links ( closes #9 )
...
- Debug column in admin tag list with FB, LinkedIn, Google buttons
- Links open platform debugger tools in new tab with page URL
- Facebook Sharing Debugger, LinkedIn Post Inspector, Google Rich Results
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:30:00 -05:00
Jonathan Miller
a34091ffbe
feat(adapters): add third-party content type adapter architecture ( closes #5 )
...
- ContentTypeInterface with canHandle(), getTitle(), getDescription(), getImage()
- VirtueMartAdapter for product pages (com_virtuemart)
- K2Adapter for K2 items (com_k2)
- HikaShopAdapter for HikaShop products (com_hikashop)
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:29:59 -05:00
Jonathan Miller
e6ee93b79b
feat(social): add WhatsApp/Telegram link preview optimization ( closes #10 )
...
- Telegram channel meta tag config and output (telegram:channel)
- Image validation via ImageHelper::validate() already covers
WhatsApp minimum requirements (300x200px)
- Auto-resize (from #2 ) ensures images meet all platform specs
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:29:59 -05:00
Jonathan Miller
4c9486173b
feat(categories): add category-level OG tag support ( closes #4 )
...
- Content plugin now hooks com_categories.categorycom_content forms
- Category OG data stored as content_type 'com_content.category'
- System plugin detects category views and merges category OG as fallback
- Article image fallback chain: article image → category image → default
- New loadOgDataByType() helper for flexible type lookups
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:29:59 -05:00
Jonathan Miller
9a6cd6fce8
feat(batch): add batch OG tag generation for existing articles ( closes #1 )
...
- BatchController with count() and process() AJAX endpoints
- Chunked processing (50 articles per request) to avoid PHP timeouts
- LEFT JOIN query to find articles without existing OG records
- Auto-extracts og_title from article title, og_description from
metadesc or introtext (160 char), og_image from article images JSON
- Also populates meta_description from article metadesc
- Progress bar UI in admin tag list with real-time updates
- "Batch Generate" toolbar button in Tags view
- Auto-reloads page after completion
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:29:58 -05:00
Jonathan Miller
3ec4b163bb
feat(images): auto-resize OG images to 1200x630px ( closes #2 )
...
- New ImageHelper class with resize(), validate(), cleanup() methods
- Center-crop algorithm maintains aspect ratio to target dimensions
- GD-based processing, supports JPEG/PNG/GIF/WebP input, outputs JPEG
- Generated images cached in images/mokoog/generated/ with hash naming
- Skips resize if image already at or below target dimensions
- Skips regeneration if cached version is newer than source
- validate() checks minimum 200x200px (Facebook/WhatsApp requirement)
- cleanup() removes generated images when OG records are deleted
- Auto-resize toggle in system plugin advanced settings (default: on)
- Integrated into resolveImageUrl() in the system plugin
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:29:58 -05:00
Jonathan Miller
15ec388b52
feat(seo): add SEO meta tag management ( closes #8 )
...
- Add seo_title, meta_description, robots, canonical_url columns
- SQL migration for upgrades (01.01.00.sql) + updated install schema
- New "SEO Meta Tags" fieldset in article/menu editor with:
- SEO title (70 char max, overrides <title>)
- Meta description (200 char max)
- Robots directive (noindex, nofollow, nosnippet, etc.)
- Canonical URL override
- System plugin applies SEO tags in onBeforeCompileHead before OG tags
- SEO audit column in admin tag list (missing desc, title too long, noindex)
- Content plugin saves/loads all SEO fields alongside OG data
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:29:58 -05:00
gitea-actions[bot]
52a4bf7e5d
chore: update updates.xml (development: 01.00.00-dev) [skip ci]
2026-05-24 04:25:14 +00:00
Jonathan Miller
97bc2526c0
fix: production readiness improvements for admin panel and installer
...
Joomla: Repo Health / Access control (push) Successful in 6s
Joomla: Update Server / Update updates.xml (push) Successful in 33s
Joomla: Repo Health / Release configuration (push) Has been cancelled
Joomla: Repo Health / Scripts governance (push) Has been cancelled
Joomla: Repo Health / Repository health (push) Has been cancelled
Add search/filter tools to tags list view, fix API content type naming,
build proper frontend URLs for social debugger links, and auto-enable
the content plugin on package install.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 23:24:27 -05:00
jmiller
2ab883103c
Merge pull request 'chore: cascade main → dev ( 8b8ba12) [skip ci]' ( #30 ) from main into dev
...
chore: cascade main → dev [skip ci]
2026-05-24 04:10:04 +00:00
gitea-actions[bot]
44d9ccfda6
chore: update updates.xml (development: 01.00.00-dev) [skip ci]
2026-05-24 03:45:20 +00:00
jmiller
a66e1d5e86
Merge pull request 'feat(api): Joomla Web Services API for OG tags ( #27 )' ( #29 ) from feature/27-webservices-api into dev
Joomla: Repo Health / Access control (push) Successful in 1s
Joomla: Update Server / Update updates.xml (push) Successful in 29s
Joomla: Repo Health / Release configuration (push) Has been cancelled
Joomla: Repo Health / Scripts governance (push) Has been cancelled
Joomla: Repo Health / Repository health (push) Has been cancelled
2026-05-24 03:44:50 +00:00
jmiller
f9b4ca880c
Merge pull request 'chore: cascade main → dev ( 1b09c5d) [skip ci]' ( #28 ) from main into dev
...
chore: cascade main → dev [skip ci]
2026-05-24 03:44:23 +00:00
Jonathan Miller
ce0bbe821a
feat(api): add Joomla Web Services API for OG tags ( closes #27 )
...
Joomla: Repo Health / Access control (push) Successful in 2s
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Joomla: Repo Health / Access control (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 2s
Joomla: Update Server / Update updates.xml (pull_request) Successful in 27s
Joomla: Repo Health / Release configuration (pull_request) Failing after 3s
Joomla: Repo Health / Scripts governance (pull_request) Successful in 3s
Joomla: Repo Health / Repository health (pull_request) Failing after 4s
Joomla: Repo Health / Release configuration (push) Has been cancelled
Joomla: Repo Health / Scripts governance (push) Has been cancelled
Joomla: Repo Health / Repository health (push) Has been cancelled
New sub-extension: plg_webservices_mokoog
- Registers REST API routes via onBeforeApiRoute
- CRUD endpoints at /api/index.php/v1/mokoog/tags
- Lookup endpoint at /api/index.php/v1/mokoog/lookup/:type/:id
- SubscriberInterface pattern with DI container
Component API layer (com_mokoog/api/):
- TagsController extending ApiController for CRUD operations
- JsonapiView with whitelisted fields for JSON:API output
- TagModel (AdminModel) for single-item operations
Package updates:
- pkg_mokoog.xml includes plg_webservices_mokoog
- Install script auto-enables webservices plugin
- Component manifest declares api/ directory
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 22:43:18 -05:00
Jonathan Miller
19035b1171
Merge branch 'feature/3-social-preview' into dev
2026-05-23 22:08:07 -05:00
Jonathan Miller
fcce208278
Merge branch 'feature/12-csv-import-export' into dev
2026-05-23 22:08:06 -05:00
Jonathan Miller
26e3d39e01
Merge branch 'feature/7-image-overlay' into dev
2026-05-23 22:08:05 -05:00
Jonathan Miller
b28703465d
Merge branch 'feature/11-multilingual' into dev
2026-05-23 22:08:04 -05:00
Jonathan Miller
b9738f0b5f
Merge branch 'feature/6-jsonld' into dev
...
# Conflicts:
# src/packages/plg_system_mokoog/src/Extension/MokoOG.php
2026-05-23 22:07:43 -05:00
jmiller
d10c3bc0ea
Merge pull request 'feat(debug): debugger quick links ( #9 )' ( #22 ) from feature/9-debugger-links into dev
2026-05-23 23:40:52 +00:00
jmiller
717cfe9a0e
Merge pull request 'feat(adapters): third-party extension support ( #5 )' ( #21 ) from feature/5-third-party-adapters into dev
2026-05-23 23:40:52 +00:00
jmiller
3d5e7eec8a
Merge pull request 'feat(social): WhatsApp/Telegram optimization ( #10 )' ( #19 ) from feature/10-whatsapp-telegram into dev
2026-05-23 23:39:49 +00:00
jmiller
fbbe74079d
Merge pull request 'feat(categories): category-level OG tags ( #4 )' ( #18 ) from feature/4-category-og-tags into dev
2026-05-23 23:39:48 +00:00
Jonathan Miller
fdf4835051
feat(csv): add CSV import/export for OG tags ( closes #12 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
ImportExportController with export() and import() actions:
- Export: CSV with all OG + SEO fields, joined with article titles
- Import: Upload CSV, match on content_type + content_id
- Upsert logic: creates new or updates existing records
- Reports created/updated/skipped counts
- Toolbar buttons ready for integration
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 18:38:18 -05:00
Jonathan Miller
9275a4f980
feat(overlay): add OG image text overlay generator ( closes #7 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
ImageGenerator class renders article title onto a template background:
- Center-crop template to 1200x630px
- Semi-transparent dark overlay band for text readability
- TTF font rendering with word wrapping (max 3 lines)
- Cached output in images/mokoog/generated/overlay_*.jpg
- Configurable font size, color, quality
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 18:37:05 -05:00
Jonathan Miller
04d1da29d4
feat(i18n): add multilingual OG tag support ( closes #11 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
- Add language column to #__mokoog_tags (default * for all languages)
- Updated unique key to include language
- SQL migration 01.02.00 for upgrades
- og:locale output from current Joomla language (en-GB to en_GB)
- Language-aware OG data loading: exact match preferred over wildcard
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 18:35:49 -05:00
Jonathan Miller
94b5eb084c
feat(debug): add social platform debugger quick links ( closes #9 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
Joomla: Update Server / Update updates.xml (pull_request) Successful in 25s
- Debug column in admin tag list with FB, LinkedIn, Google buttons
- Links open platform debugger tools in new tab with page URL
- Facebook Sharing Debugger, LinkedIn Post Inspector, Google Rich Results
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 18:33:46 -05:00
Jonathan Miller
8dc1e8175a
feat(adapters): add third-party content type adapter architecture ( closes #5 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
Joomla: Update Server / Update updates.xml (pull_request) Successful in 26s
- ContentTypeInterface with canHandle(), getTitle(), getDescription(), getImage()
- VirtueMartAdapter for product pages (com_virtuemart)
- K2Adapter for K2 items (com_k2)
- HikaShopAdapter for HikaShop products (com_hikashop)
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 18:32:06 -05:00
Jonathan Miller
5217986478
feat(jsonld): add JSON-LD structured data output ( closes #6 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
- JsonLdBuilder helper with Article, WebPage, BreadcrumbList, Organization
- Article schema includes headline, author, datePublished, dateModified, image
- BreadcrumbList built from Joomla's pathway
- Toggle JSON-LD and breadcrumbs independently in plugin settings
- Output via addCustomTag() in onBeforeCompileHead
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 18:23:07 -05:00
Jonathan Miller
71c1fea356
feat(preview): live social sharing preview in article editor ( closes #3 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
- Facebook and Twitter/X card previews update in real-time
- Renders below the OG fieldset in article/menu editors
- Reads og_title, og_description, og_image with fallback to
article title and meta description
- CSS mockups of each platform's card layout
- Registered via joomla.asset.json Web Asset Manager
- Safe DOM construction (no innerHTML with user data)
- MutationObserver watches media field for image changes
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 18:17:32 -05:00
Jonathan Miller
6f5cc4425e
feat(social): add WhatsApp/Telegram link preview optimization ( closes #10 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 5s
Joomla: Update Server / Update updates.xml (pull_request) Successful in 27s
- Telegram channel meta tag config and output (telegram:channel)
- Image validation via ImageHelper::validate() already covers
WhatsApp minimum requirements (300x200px)
- Auto-resize (from #2 ) ensures images meet all platform specs
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 18:12:38 -05:00
Jonathan Miller
7ef1d79336
feat(categories): add category-level OG tag support ( closes #4 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Joomla: Update Server / Update updates.xml (pull_request) Successful in 28s
- Content plugin now hooks com_categories.categorycom_content forms
- Category OG data stored as content_type 'com_content.category'
- System plugin detects category views and merges category OG as fallback
- Article image fallback chain: article image → category image → default
- New loadOgDataByType() helper for flexible type lookups
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 18:10:53 -05:00
jmiller
6fc6c704ba
Merge pull request 'feat(batch): batch OG tag generation ( #1 )' ( #16 ) from feature/1-batch-processing into dev
...
feat(batch): batch OG tag generation (closes #1 )
2026-05-23 23:04:18 +00:00
jmiller
d6624af876
Merge pull request 'feat(images): auto-resize OG images ( #2 )' ( #17 ) from feature/2-image-auto-resize into dev
...
chore: cascade main → dev [skip ci]
2026-05-23 23:02:53 +00:00
Jonathan Miller
5fc0fbfc07
feat(images): auto-resize OG images to 1200x630px ( closes #2 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
- New ImageHelper class with resize(), validate(), cleanup() methods
- Center-crop algorithm maintains aspect ratio to target dimensions
- GD-based processing, supports JPEG/PNG/GIF/WebP input, outputs JPEG
- Generated images cached in images/mokoog/generated/ with hash naming
- Skips resize if image already at or below target dimensions
- Skips regeneration if cached version is newer than source
- validate() checks minimum 200x200px (Facebook/WhatsApp requirement)
- cleanup() removes generated images when OG records are deleted
- Auto-resize toggle in system plugin advanced settings (default: on)
- Integrated into resolveImageUrl() in the system plugin
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 17:57:07 -05:00
Jonathan Miller
935185b46f
feat(batch): add batch OG tag generation for existing articles ( closes #1 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
Joomla: Update Server / Update updates.xml (pull_request) Successful in 23s
- BatchController with count() and process() AJAX endpoints
- Chunked processing (50 articles per request) to avoid PHP timeouts
- LEFT JOIN query to find articles without existing OG records
- Auto-extracts og_title from article title, og_description from
metadesc or introtext (160 char), og_image from article images JSON
- Also populates meta_description from article metadesc
- Progress bar UI in admin tag list with real-time updates
- "Batch Generate" toolbar button in Tags view
- Auto-reloads page after completion
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 17:53:28 -05:00
Jonathan Miller
54bf5f7737
feat(seo): add SEO meta tag management ( closes #8 )
...
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
- Add seo_title, meta_description, robots, canonical_url columns
- SQL migration for upgrades (01.01.00.sql) + updated install schema
- New "SEO Meta Tags" fieldset in article/menu editor with:
- SEO title (70 char max, overrides <title>)
- Meta description (200 char max)
- Robots directive (noindex, nofollow, nosnippet, etc.)
- Canonical URL override
- System plugin applies SEO tags in onBeforeCompileHead before OG tags
- SEO audit column in admin tag list (missing desc, title too long, noindex)
- Content plugin saves/loads all SEO fields alongside OG data
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-23 17:50:28 -05:00
jmiller
1f0b373ba3
Merge pull request 'chore: cascade main → dev ( 98ac42c) [skip ci]' ( #14 ) from main into dev
...
chore: cascade main → dev [skip ci]
2026-05-23 22:41:05 +00:00
jmiller
6d1eb2d993
Merge pull request 'chore: cascade main → dev ( 27bb22e) [skip ci]' ( #13 ) from main into dev
...
chore: cascade main → dev [skip ci]
2026-05-23 22:30:55 +00:00