From 903d4d37c8b015619c37d29bb3a1b84047fdb473 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 29 Jun 2026 10:52:55 -0500 Subject: [PATCH 01/30] test: add unit tests for pure JsonLdBuilder methods (#33 partial) - JsonLdBuilderLocalBusinessTest: buildLocalBusiness() null/minimal/custom-type/ partial-address/geo-requires-both-coords cases - JsonLdScriptTagTest: toScriptTag() wraps in ld+json, escapes breakout, and produces valid JSON after unescaping Covers the pure (Factory/Uri/DB-free) helpers that run under the existing minimal bootstrap. The remaining #33 targets (ImageHelper, BatchController, CSV import, content/system plugin integration) need a Joomla test harness. --- .../Helper/JsonLdBuilderLocalBusinessTest.php | 93 +++++++++++++++++++ tests/Unit/Helper/JsonLdScriptTagTest.php | 56 +++++++++++ 2 files changed, 149 insertions(+) create mode 100644 tests/Unit/Helper/JsonLdBuilderLocalBusinessTest.php create mode 100644 tests/Unit/Helper/JsonLdScriptTagTest.php diff --git a/tests/Unit/Helper/JsonLdBuilderLocalBusinessTest.php b/tests/Unit/Helper/JsonLdBuilderLocalBusinessTest.php new file mode 100644 index 0000000..be1de69 --- /dev/null +++ b/tests/Unit/Helper/JsonLdBuilderLocalBusinessTest.php @@ -0,0 +1,93 @@ + + * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. + * @license GNU General Public License version 3 or later; see LICENSE + */ + +namespace Mokoconsulting\MokoOG\Tests\Unit\Helper; + +use Joomla\Plugin\System\MokoOG\Helper\JsonLdBuilder; +use PHPUnit\Framework\TestCase; + +class JsonLdBuilderLocalBusinessTest extends TestCase +{ + /** + * Minimal Registry-like stand-in exposing get($key, $default). + */ + private function params(array $data): object + { + return new class ($data) { + private array $data; + + public function __construct(array $data) + { + $this->data = $data; + } + + public function get($key, $default = null) + { + return $this->data[$key] ?? $default; + } + }; + } + + public function testReturnsNullWithoutName(): void + { + $this->assertNull(JsonLdBuilder::buildLocalBusiness($this->params([]))); + $this->assertNull(JsonLdBuilder::buildLocalBusiness($this->params(['lb_name' => ' ']))); + } + + public function testMinimalSchemaHasNoOptionalKeys(): void + { + $result = JsonLdBuilder::buildLocalBusiness($this->params(['lb_name' => 'Acme Co'])); + + $this->assertSame('https://schema.org', $result['@context']); + $this->assertSame('LocalBusiness', $result['@type']); + $this->assertSame('Acme Co', $result['name']); + $this->assertArrayNotHasKey('address', $result); + $this->assertArrayNotHasKey('geo', $result); + $this->assertArrayNotHasKey('telephone', $result); + } + + public function testCustomTypeAndPartialAddress(): void + { + $result = JsonLdBuilder::buildLocalBusiness($this->params([ + 'lb_name' => 'Joe Pizza', + 'lb_type' => 'Restaurant', + 'lb_street' => '1 Main St', + 'lb_city' => 'Springfield', + 'lb_country' => 'US', + 'lb_phone' => '+1-555-0100', + ])); + + $this->assertSame('Restaurant', $result['@type']); + $this->assertSame('PostalAddress', $result['address']['@type']); + $this->assertSame('1 Main St', $result['address']['streetAddress']); + $this->assertSame('Springfield', $result['address']['addressLocality']); + $this->assertSame('US', $result['address']['addressCountry']); + $this->assertArrayNotHasKey('postalCode', $result['address']); + $this->assertSame('+1-555-0100', $result['telephone']); + } + + public function testGeoRequiresBothCoordinates(): void + { + $partial = JsonLdBuilder::buildLocalBusiness($this->params([ + 'lb_name' => 'X', + 'lb_latitude' => '1.0', + ])); + $this->assertArrayNotHasKey('geo', $partial); + + $full = JsonLdBuilder::buildLocalBusiness($this->params([ + 'lb_name' => 'X', + 'lb_latitude' => '1.0', + 'lb_longitude' => '2.0', + ])); + $this->assertSame('GeoCoordinates', $full['geo']['@type']); + $this->assertSame('1.0', $full['geo']['latitude']); + $this->assertSame('2.0', $full['geo']['longitude']); + } +} diff --git a/tests/Unit/Helper/JsonLdScriptTagTest.php b/tests/Unit/Helper/JsonLdScriptTagTest.php new file mode 100644 index 0000000..757e484 --- /dev/null +++ b/tests/Unit/Helper/JsonLdScriptTagTest.php @@ -0,0 +1,56 @@ + + * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. + * @license GNU General Public License version 3 or later; see LICENSE + */ + +namespace Mokoconsulting\MokoOG\Tests\Unit\Helper; + +use Joomla\Plugin\System\MokoOG\Helper\JsonLdBuilder; +use PHPUnit\Framework\TestCase; + +class JsonLdScriptTagTest extends TestCase +{ + private const OPEN = ''; + + private function body(string $output): string + { + return substr($output, \strlen(self::OPEN), -\strlen(self::CLOSE)); + } + + public function testWrapsInLdJsonScriptTag(): void + { + $out = JsonLdBuilder::toScriptTag(['@type' => 'Thing']); + + $this->assertStringStartsWith(self::OPEN, $out); + $this->assertStringEndsWith(self::CLOSE, $out); + } + + public function testEscapesClosingScriptInsideData(): void + { + $out = JsonLdBuilder::toScriptTag(['name' => 'evil ']); + $body = $this->body($out); + + // No raw " block. The builder rewrites every "assertStringNotContainsString('assertStringContainsString('<\\/', $body); + } + + public function testBodyIsValidJsonAfterUnescaping(): void + { + $out = JsonLdBuilder::toScriptTag(['@context' => 'https://schema.org', '@type' => 'Article']); + $json = str_replace('<\\/', 'body($out)); + + $decoded = json_decode($json, true); + + $this->assertIsArray($decoded); + $this->assertSame('Article', $decoded['@type']); + $this->assertSame('https://schema.org', $decoded['@context']); + } +} -- 2.52.0 From 7532446e46227792798ac53e4843e641674836e6 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 29 Jun 2026 12:17:37 -0500 Subject: [PATCH 02/30] refactor: sitemap throttle + SEF URLs (#100) and batch cursor pagination (#106) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #106 — BatchController now paginates by id cursor (WHERE c.id > :lastId) instead of always querying offset 0. A row that fails to insert falls behind the cursor and is not re-fetched, so the batch always terminates and reaches 100% even with persistent failures. process() returns examined + last_id; the editor JS drives the cursor and stops when a chunk examines 0 rows. #100 — Sitemap: - Throttle: regenerate at most once per 60s on content save (SITEMAP_MIN_INTERVAL) so bulk edits/imports don't rebuild the whole file every save - SEF URLs: route each article via Route::link('site', ...) with a fallback to the non-SEF index.php URL if routing fails (worst case = prior behavior) (access-level filtering + atomic write were done earlier in the cycle) --- .../src/Controller/BatchController.php | 26 ++++++++---- .../packages/com_mokoog/tmpl/tags/default.php | 20 +++++---- .../src/Extension/MokoOG.php | 14 +++++++ .../src/Helper/SitemapBuilder.php | 41 ++++++++++++++++++- 4 files changed, 85 insertions(+), 16 deletions(-) diff --git a/source/packages/com_mokoog/src/Controller/BatchController.php b/source/packages/com_mokoog/src/Controller/BatchController.php index ee2aff8..2031b4e 100644 --- a/source/packages/com_mokoog/src/Controller/BatchController.php +++ b/source/packages/com_mokoog/src/Controller/BatchController.php @@ -73,7 +73,9 @@ class BatchController extends BaseController } $app = Factory::getApplication(); - $limit = min($app->getInput()->getInt('limit', 50), 200); + $input = $app->getInput(); + $limit = min($input->getInt('limit', 50), 200); + $lastId = max(0, $input->getInt('lastid', 0)); $db = Factory::getContainer()->get(\Joomla\Database\DatabaseInterface::class); $query = $db->getQuery(true) @@ -88,18 +90,25 @@ class BatchController extends BaseController ) ->where($db->quoteName('c.state') . ' = 1') ->where($db->quoteName('t.id') . ' IS NULL') + ->where($db->quoteName('c.id') . ' > ' . $lastId) ->order($db->quoteName('c.id') . ' ASC'); - // Always offset=0: processed articles now have #__mokoog_tags rows - // and are excluded by the LEFT JOIN ... IS NULL filter automatically. + // Cursor-based pagination by id: each chunk fetches the next articles whose + // id is greater than the previous chunk's highest id. A row that fails to + // insert is passed over on the next chunk (its id is already behind the + // cursor) instead of being re-fetched forever, so the batch always reaches + // the end. The client stops when a chunk examines 0 rows. $db->setQuery($query, 0, $limit); $articles = $db->loadObjectList(); - $created = 0; - $skipped = 0; - $now = Factory::getDate()->toSql(); + $created = 0; + $skipped = 0; + $lastProcessedId = $lastId; + $now = Factory::getDate()->toSql(); foreach ($articles as $article) { + $lastProcessedId = (int) $article->id; + $ogTitle = $article->title; $ogDescription = $this->extractDescription($article); $ogImage = $this->extractImage($article); @@ -131,7 +140,10 @@ class BatchController extends BaseController } echo new JsonResponse([ - 'created' => $created, + 'created' => $created, + 'skipped' => $skipped, + 'examined' => \count($articles), + 'last_id' => $lastProcessedId, ]); $app->close(); diff --git a/source/packages/com_mokoog/tmpl/tags/default.php b/source/packages/com_mokoog/tmpl/tags/default.php index 77e8c56..82143a4 100644 --- a/source/packages/com_mokoog/tmpl/tags/default.php +++ b/source/packages/com_mokoog/tmpl/tags/default.php @@ -234,27 +234,31 @@ document.addEventListener('DOMContentLoaded', function() { return; } status.textContent = total + ' '; - processChunk(0, total, chunkSize, token, bar, status); + processChunk(0, 0, total, chunkSize, token, bar, status); }) .catch(function(err) { status.textContent = ' ' + err.message; }); } - function processChunk(processed, total, chunkSize, token, bar, status) { - // Always offset=0: processed items are excluded by the IS NULL filter - fetch('index.php?option=com_mokoog&task=batch.process&format=json&limit=' + chunkSize + '&' + token + '=1') + function processChunk(lastId, processed, total, chunkSize, token, bar, status) { + // Cursor-based: pass the highest id seen so far. Failed rows fall behind + // the cursor and are not re-fetched, so the loop always terminates. + fetch('index.php?option=com_mokoog&task=batch.process&format=json&limit=' + chunkSize + '&lastid=' + lastId + '&' + token + '=1') .then(function(r) { return r.json(); }) .then(function(resp) { - processed += resp.data.created; - var pct = Math.min(100, Math.round((processed / total) * 100)); + var examined = resp.data.examined || 0; + processed += examined; + var pct = total > 0 ? Math.min(100, Math.round((processed / total) * 100)) : 100; bar.style.width = pct + '%'; bar.textContent = pct + '%'; status.textContent = processed + ' / ' + total + ' '; - if (resp.data.created > 0 && processed < total) { - processChunk(processed, total, chunkSize, token, bar, status); + if (examined > 0) { + processChunk(resp.data.last_id, processed, total, chunkSize, token, bar, status); } else { + bar.style.width = '100%'; + bar.textContent = '100%'; bar.classList.remove('progress-bar-animated'); bar.classList.add('bg-success'); status.textContent = ' ' + processed + ' articles.'; diff --git a/source/packages/plg_system_mokoog/src/Extension/MokoOG.php b/source/packages/plg_system_mokoog/src/Extension/MokoOG.php index 38d661c..c625448 100644 --- a/source/packages/plg_system_mokoog/src/Extension/MokoOG.php +++ b/source/packages/plg_system_mokoog/src/Extension/MokoOG.php @@ -28,6 +28,11 @@ final class MokoOG extends CMSPlugin implements SubscriberInterface */ protected $autoloadLanguage = true; + /** + * Minimum seconds between full sitemap regenerations (save-time throttle). + */ + private const SITEMAP_MIN_INTERVAL = 60; + /** * Returns the events this plugin subscribes to. * @@ -845,6 +850,15 @@ final class MokoOG extends CMSPlugin implements SubscriberInterface return; } + // Throttle: rebuilding the whole sitemap on every save does not scale + // (bulk edits/imports). Regenerate at most once per interval — the + // sitemap is eventually consistent within that window. + $path = JPATH_ROOT . '/sitemap.xml'; + + if (is_file($path) && (time() - filemtime($path)) < self::SITEMAP_MIN_INTERVAL) { + return; + } + $changefreq = $this->params->get('sitemap_changefreq', 'weekly'); $xml = SitemapBuilder::generate($changefreq); diff --git a/source/packages/plg_system_mokoog/src/Helper/SitemapBuilder.php b/source/packages/plg_system_mokoog/src/Helper/SitemapBuilder.php index 45b4040..6b7df61 100644 --- a/source/packages/plg_system_mokoog/src/Helper/SitemapBuilder.php +++ b/source/packages/plg_system_mokoog/src/Helper/SitemapBuilder.php @@ -81,7 +81,7 @@ class SitemapBuilder continue; } - $url = $root . '/index.php?option=com_content&view=article&id=' . $article->id; + $url = self::articleUrl($article, $root); $lastmod = $article->modified && $article->modified !== '0000-00-00 00:00:00' ? date('Y-m-d', strtotime($article->modified)) : ''; @@ -102,6 +102,45 @@ class SitemapBuilder return $xml; } + /** + * Build the SEF/canonical site URL for an article, with a safe fallback. + * + * Routes through the site router so the sitemap matches the canonical URLs + * the plugin emits. If routing fails (or SEF is off), falls back to the + * non-SEF index.php URL — never an empty or broken URL. + * + * @param object $article Row with id, alias, catid, language + * @param string $root Site root without trailing slash + * + * @return string Absolute URL + */ + private static function articleUrl(object $article, string $root): string + { + $fallback = $root . '/index.php?option=com_content&view=article&id=' . (int) $article->id; + + $internal = 'index.php?option=com_content&view=article&id=' . (int) $article->id + . (!empty($article->alias) ? ':' . $article->alias : '') + . (!empty($article->catid) ? '&catid=' . (int) $article->catid : ''); + + try { + $routed = \Joomla\CMS\Router\Route::link( + 'site', + $internal, + false, + \Joomla\CMS\Router\Route::TLS_IGNORE, + true + ); + + if (\is_string($routed) && $routed !== '') { + return $routed; + } + } catch (\Throwable $e) { + // Fall back to the non-SEF URL below. + } + + return $fallback; + } + /** * Write sitemap XML to the site root. * -- 2.52.0 From fd28cb8a9385e0e410d25f8b26b5ca4131dbc4b5 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Mon, 29 Jun 2026 17:18:29 +0000 Subject: [PATCH 03/30] chore(version): pre-release bump to 01.07.01-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.01.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.01.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index a997a9b..2088785 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.06.13 +# VERSION: 01.07.01 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index d517b5f..1516c38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 1e32ef6..fa8534a 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.06.13 + VERSION: 01.07.01 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index e19d088..3ced84f 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.06.13 + VERSION: 01.07.01 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 81fcc39..5cfcc4b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 26b9e89..69e100d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.06.13 +VERSION: 01.07.01 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 09d2e63..77c8a14 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.06.13 + 01.07.01 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.01.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.01.sql new file mode 100644 index 0000000..91983b0 --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.01.sql @@ -0,0 +1 @@ +/* 01.07.01 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 2961f55..31db221 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.06.13 + 01.07.01 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index d5b0b40..76a7cee 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.06.13 + 01.07.01 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 5636b78..970d8c2 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.06.13 + 01.07.01 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index cca3faf..29101eb 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.06.13 + 01.07.01 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From 236baed80dd2ab67be07cbf4a2bb127b2a0e0dc0 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 29 Jun 2026 12:26:13 -0500 Subject: [PATCH 04/30] refactor: consolidate ImageHelper resize paths, drop unused validate() (#104) - resize() is now a thin wrapper over resizeToSize() (added a $quality param), removing ~80 lines of duplicated crop/resample/encode logic. resize(path) and resizeToSize(path, 1200, 630, '') produce identical output paths/files, so behavior is unchanged. - Removed the unused ImageHelper::validate() method (no callers). Net: -130/+11 lines. Closes the remaining #104 consolidation items. --- .../src/Helper/ImageHelper.php | 141 ++---------------- 1 file changed, 11 insertions(+), 130 deletions(-) diff --git a/source/packages/plg_system_mokoog/src/Helper/ImageHelper.php b/source/packages/plg_system_mokoog/src/Helper/ImageHelper.php index c8f4e65..a443318 100644 --- a/source/packages/plg_system_mokoog/src/Helper/ImageHelper.php +++ b/source/packages/plg_system_mokoog/src/Helper/ImageHelper.php @@ -57,96 +57,8 @@ class ImageHelper int $targetHeight = self::TARGET_HEIGHT, int $quality = self::JPEG_QUALITY ): string { - // Resolve absolute path - $absPath = JPATH_ROOT . '/' . ltrim($imagePath, '/'); - - if (!is_file($absPath)) { - return $imagePath; - } - - $imageInfo = getimagesize($absPath); - - if (!$imageInfo) { - Log::add('MokoOG ImageHelper: Cannot read image dimensions: ' . basename($absPath), Log::WARNING, 'mokoog'); - - return $imagePath; - } - - [$origWidth, $origHeight, $type] = $imageInfo; - - // Skip if already at or below target size - if ($origWidth <= $targetWidth && $origHeight <= $targetHeight) { - return $imagePath; - } - - // Ensure output directory exists - $outputDir = JPATH_ROOT . '/' . self::OUTPUT_DIR; - - if (!is_dir($outputDir) && !Folder::create($outputDir)) { - Log::add('MokoOG ImageHelper: Cannot create output directory: ' . self::OUTPUT_DIR, Log::WARNING, 'mokoog'); - - return $imagePath; - } - - // Generate output filename based on source hash + dimensions - $hash = md5($imagePath . $targetWidth . $targetHeight); - $outputName = $hash . '.jpg'; - $outputPath = $outputDir . '/' . $outputName; - $outputRel = self::OUTPUT_DIR . '/' . $outputName; - - // Skip if already generated - if (is_file($outputPath) && filemtime($outputPath) >= filemtime($absPath)) { - return $outputRel; - } - - // Load source image - $source = self::loadImage($absPath, $type); - - if (!$source) { - return $imagePath; - } - - // Calculate crop dimensions (center crop to target aspect ratio) - $targetRatio = $targetWidth / $targetHeight; - $sourceRatio = $origWidth / $origHeight; - - if ($sourceRatio > $targetRatio) { - // Source is wider — crop sides - $cropHeight = $origHeight; - $cropWidth = (int) round($origHeight * $targetRatio); - $cropX = (int) round(($origWidth - $cropWidth) / 2); - $cropY = 0; - } else { - // Source is taller — crop top/bottom - $cropWidth = $origWidth; - $cropHeight = (int) round($origWidth / $targetRatio); - $cropX = 0; - $cropY = (int) round(($origHeight - $cropHeight) / 2); - } - - // Create output canvas and resample - $output = imagecreatetruecolor($targetWidth, $targetHeight); - - imagecopyresampled( - $output, - $source, - 0, - 0, - $cropX, - $cropY, - $targetWidth, - $targetHeight, - $cropWidth, - $cropHeight - ); - - // Save as JPEG - imagejpeg($output, $outputPath, $quality); - - imagedestroy($source); - imagedestroy($output); - - return $outputRel; + // Thin wrapper over the shared implementation (no subdirectory). + return self::resizeToSize($imagePath, $targetWidth, $targetHeight, '', $quality); } /** @@ -182,11 +94,17 @@ class ImageHelper * @param int $width Target width * @param int $height Target height * @param string $subdir Subdirectory name for output (e.g. platform name) + * @param int $quality JPEG quality 1-100 * * @return string Path to the output image (relative to JPATH_ROOT) */ - private static function resizeToSize(string $imagePath, int $width, int $height, string $subdir = ''): string - { + private static function resizeToSize( + string $imagePath, + int $width, + int $height, + string $subdir = '', + int $quality = self::JPEG_QUALITY + ): string { // Resolve absolute path $absPath = JPATH_ROOT . '/' . ltrim($imagePath, '/'); @@ -272,7 +190,7 @@ class ImageHelper ); // Save as JPEG - imagejpeg($output, $outputPath, self::JPEG_QUALITY); + imagejpeg($output, $outputPath, $quality); imagedestroy($source); imagedestroy($output); @@ -333,43 +251,6 @@ class ImageHelper } } - /** - * Check if an image meets minimum OG size requirements. - * - * @param string $imagePath Image path relative to JPATH_ROOT - * - * @return array{valid: bool, width: int, height: int, message: string} - */ - public static function validate(string $imagePath): array - { - $absPath = JPATH_ROOT . '/' . ltrim($imagePath, '/'); - - if (!is_file($absPath)) { - return ['valid' => false, 'width' => 0, 'height' => 0, 'message' => 'File not found']; - } - - $imageInfo = getimagesize($absPath); - - if (!$imageInfo) { - return ['valid' => false, 'width' => 0, 'height' => 0, 'message' => 'Not a valid image']; - } - - [$width, $height] = $imageInfo; - - // Facebook minimum: 200x200, recommended: 1200x630 - // WhatsApp minimum: 300x200 - if ($width < 200 || $height < 200) { - return [ - 'valid' => false, - 'width' => $width, - 'height' => $height, - 'message' => "Image too small ({$width}x{$height}). Minimum: 200x200px.", - ]; - } - - return ['valid' => true, 'width' => $width, 'height' => $height, 'message' => 'OK']; - } - /** * Load an image resource from a file. * -- 2.52.0 From 3e6c8d685b4f7fe022df178282a0d4f7ede073c4 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Mon, 29 Jun 2026 17:26:29 +0000 Subject: [PATCH 05/30] chore(version): pre-release bump to 01.07.02-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.02.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.02.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 2088785..87e9013 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.01 +# VERSION: 01.07.02 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 1516c38..0900035 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index fa8534a..c93a931 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.01 + VERSION: 01.07.02 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 3ced84f..df0f5ae 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.01 + VERSION: 01.07.02 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 5cfcc4b..b62cb0b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 69e100d..8b68236 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.01 +VERSION: 01.07.02 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 77c8a14..5f1e114 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.01 + 01.07.02 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.02.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.02.sql new file mode 100644 index 0000000..393d9b9 --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.02.sql @@ -0,0 +1 @@ +/* 01.07.02 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 31db221..26afaa1 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.01 + 01.07.02 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 76a7cee..535c625 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.01 + 01.07.02 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 970d8c2..333dbd1 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.01 + 01.07.02 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index 29101eb..6746daf 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.01 + 01.07.02 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From 84b3d9dc2c7d8c52cf67951c04574b70e1e6c8a3 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Mon, 29 Jun 2026 17:26:56 +0000 Subject: [PATCH 06/30] chore(version): pre-release bump to 01.07.03-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.03.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.03.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 87e9013..aceb8ba 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.02 +# VERSION: 01.07.03 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 0900035..34c2813 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c93a931..be9a704 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.02 + VERSION: 01.07.03 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index df0f5ae..2bd9da7 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.02 + VERSION: 01.07.03 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index b62cb0b..3883664 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 8b68236..00e8f32 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.02 +VERSION: 01.07.03 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 5f1e114..73f76f7 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.02 + 01.07.03 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.03.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.03.sql new file mode 100644 index 0000000..b353b72 --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.03.sql @@ -0,0 +1 @@ +/* 01.07.03 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 26afaa1..9aec28d 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.02 + 01.07.03 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 535c625..7621fbf 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.02 + 01.07.03 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 333dbd1..3d948ce 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.02 + 01.07.03 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index 6746daf..a3037b5 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.02 + 01.07.03 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From a6a24f72de04f3a54eeec3a1a81d8226c7495610 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 5 Jul 2026 22:54:38 -0500 Subject: [PATCH 07/30] fix(installer): gate install-success on real verification Joomla installers keep running after a failed sub-step, so a postflight "installed successfully" / next-steps message can lie. Gate the success path in both installer scripts. Package (source/script.php): postflight now verifies every child extension declared in the package manifest actually registered in #__extensions (element + type, plus folder for plugins). If any are missing it enqueues an error listing them and returns before the licence notice. Download-key restore and plugin-enable housekeeping still run unconditionally. Check fails open on any error. Component (source/packages/com_mokoog/script.php): install() now parses the installed SQL (JPATH_ADMINISTRATOR/components/com_mokoog/sql/install.mysql.sql) for CREATE TABLE declarations and verifies each exists (prefix-substituted, case-insensitive) before echoing the success message. Fails open if the SQL is unreadable. Claude-Session: https://claude.ai/code/session_01MrxXW9iyuDda5yDZrjZMbF --- source/packages/com_mokoog/script.php | 62 ++++++++++++++++++ source/script.php | 94 ++++++++++++++++++++++++++- 2 files changed, 155 insertions(+), 1 deletion(-) diff --git a/source/packages/com_mokoog/script.php b/source/packages/com_mokoog/script.php index ace5636..c77018c 100644 --- a/source/packages/com_mokoog/script.php +++ b/source/packages/com_mokoog/script.php @@ -10,6 +10,7 @@ defined('_JEXEC') or die; +use Joomla\CMS\Factory; use Joomla\CMS\Installer\InstallerAdapter; class Com_MokoOGInstallerScript @@ -23,6 +24,25 @@ class Com_MokoOGInstallerScript */ public function install(InstallerAdapter $parent): void { + // Be smart: verify EVERY table the component's own install SQL declares is + // actually present. If any are missing the install did not complete — say + // so instead of showing "installed successfully". + $missing = $this->missingTables(); + + if ($missing !== []) { + $detail = count($missing) > 6 + ? count($missing) . ' expected database tables are missing' + : 'missing tables: ' . htmlspecialchars(implode(', ', $missing), ENT_QUOTES, 'UTF-8'); + + Factory::getApplication()->enqueueMessage( + 'MokoSuiteOpenGraph did not install correctly. ' . $detail + . ' — review the errors above, then reinstall.', + 'error' + ); + + return; + } + echo '

MokoSuiteOpenGraph component installed successfully.

'; } @@ -37,4 +57,46 @@ class Com_MokoOGInstallerScript { echo '

MokoSuiteOpenGraph component updated successfully.

'; } + + /** + * Smart schema check: parse the component's own installed install SQL for every + * CREATE TABLE, then return the ones missing from the database. An empty array + * means the full schema installed. Fails open (returns []) if the SQL can't be + * read, so a good install is never flagged as failed. + * + * @return string[] Names (without the #__ prefix) of missing tables. + */ + private function missingTables(): array + { + try { + $sqlFile = JPATH_ADMINISTRATOR . '/components/com_mokoog/sql/install.mysql.sql'; + + if (!is_file($sqlFile)) { + return []; + } + + $sql = file_get_contents($sqlFile); + + if ($sql === false + || !preg_match_all('/CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?[`"\']?(#__[A-Za-z0-9_]+)/i', $sql, $m)) { + return []; + } + + $db = Factory::getDbo(); + $prefix = strtolower($db->getPrefix()); + $have = array_map('strtolower', $db->getTableList()); + $missing = []; + + foreach (array_unique($m[1]) as $decl) { + $bare = substr($decl, 3); // strip "#__" + if (!in_array($prefix . strtolower($bare), $have, true)) { + $missing[] = $bare; + } + } + + return $missing; + } catch (\Throwable $e) { + return []; + } + } } diff --git a/source/script.php b/source/script.php index c90d65e..5ab47da 100644 --- a/source/script.php +++ b/source/script.php @@ -50,9 +50,10 @@ class Pkg_MokoOGInstallerScript public function postflight(string $type, InstallerAdapter $parent): void { + // The download key must be restored regardless of the install outcome. $this->restoreDownloadKey(); - $this->warnMissingLicenseKey(); + // Housekeeping: ensure the bundled plugins are enabled after a fresh install. if ($type === 'install') { $db = Factory::getContainer()->get(\Joomla\Database\DatabaseInterface::class); @@ -69,6 +70,97 @@ class Pkg_MokoOGInstallerScript )->execute(); } } + + // Be smart: only run the success path (the licence notice, which implies a + // completed install) when every child extension declared in the package + // manifest actually registered. If any are missing, the package did NOT + // install successfully — surface that instead of implying success. + $missing = $this->missingChildExtensions($parent); + + if ($missing !== []) + { + Factory::getApplication()->enqueueMessage( + 'MokoSuiteOpenGraph did not install completely. ' + . 'The following extension(s) failed to install: ' . htmlspecialchars(implode(', ', $missing), ENT_QUOTES, 'UTF-8') . '. ' + . 'Resolve the errors shown above, then uninstall and reinstall the package.', + 'error' + ); + + return; + } + + $this->warnMissingLicenseKey(); + } + + /** + * Compare the child extensions the package manifest declares against what is + * actually registered in #__extensions after the install/update. Returns the + * label of each declared extension that is missing (i.e. failed to install); + * an empty array means every child installed and the package succeeded. + * + * Fails open: any error returns [] so a query problem can never turn a good + * install into a false "did not install completely" warning. + * + * @param InstallerAdapter $parent Installer adapter + * + * @return string[] + */ + private function missingChildExtensions(InstallerAdapter $parent): array + { + $missing = []; + + try + { + $manifest = $parent->getParent()->getManifest(); + + if (!$manifest || !isset($manifest->files) || !isset($manifest->files->file)) + { + return []; + } + + $db = Factory::getContainer()->get(\Joomla\Database\DatabaseInterface::class); + + foreach ($manifest->files->file as $file) + { + $childType = (string) $file['type']; + $element = (string) $file['id']; + $group = (string) $file['group']; + + if ($element === '') + { + continue; + } + + $query = $db->getQuery(true) + ->select('COUNT(*)') + ->from($db->quoteName('#__extensions')) + ->where($db->quoteName('element') . ' = ' . $db->quote($element)); + + if ($childType !== '') + { + $query->where($db->quoteName('type') . ' = ' . $db->quote($childType)); + } + + // Plugins are only unique by element + folder (the manifest "group"). + if ($childType === 'plugin' && $group !== '') + { + $query->where($db->quoteName('folder') . ' = ' . $db->quote($group)); + } + + $db->setQuery($query); + + if ((int) $db->loadResult() === 0) + { + $missing[] = $element . ($group !== '' ? ' (' . $group . ')' : ''); + } + } + } + catch (\Throwable $e) + { + return []; + } + + return $missing; } -- 2.52.0 From a6fe8fb5803558f0424654e99bab1f0bbebf2363 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Mon, 6 Jul 2026 03:55:02 +0000 Subject: [PATCH 08/30] chore(version): pre-release bump to 01.07.05-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.05.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.05.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index aceb8ba..f747342 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.03 +# VERSION: 01.07.05 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 34c2813..ca9b8cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index be9a704..efc28f4 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.03 + VERSION: 01.07.05 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 2bd9da7..8c2169b 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.03 + VERSION: 01.07.05 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 3883664..7c7f84f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 00e8f32..6b6da73 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.03 +VERSION: 01.07.05 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 73f76f7..3d98fd5 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.03 + 01.07.05 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.05.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.05.sql new file mode 100644 index 0000000..6c1be34 --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.05.sql @@ -0,0 +1 @@ +/* 01.07.05 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 9aec28d..4dfbffb 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.03 + 01.07.05 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 7621fbf..0b97545 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.03 + 01.07.05 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 3d948ce..583ae34 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.03 + 01.07.05 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index a3037b5..74359f0 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.03 + 01.07.05 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From dbaeb33dc43f7dec21f5991a94ce7be8fe5d25a4 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Mon, 6 Jul 2026 16:24:15 +0000 Subject: [PATCH 09/30] fix(installer): gate update() on schema + use enqueueMessage for success Mirrors the install() smart-check on update() and replaces echo with a proper Joomla message for consistency. Claude-Session: https://claude.ai/code/session_01MrxXW9iyuDda5yDZrjZMbF --- source/packages/com_mokoog/script.php | 221 ++++++++++++++------------ 1 file changed, 119 insertions(+), 102 deletions(-) diff --git a/source/packages/com_mokoog/script.php b/source/packages/com_mokoog/script.php index c77018c..cf2cc39 100644 --- a/source/packages/com_mokoog/script.php +++ b/source/packages/com_mokoog/script.php @@ -1,102 +1,119 @@ - - * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. - * @license GNU General Public License version 3 or later; see LICENSE - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\Factory; -use Joomla\CMS\Installer\InstallerAdapter; - -class Com_MokoOGInstallerScript -{ - /** - * Called after install. - * - * @param InstallerAdapter $parent Installer adapter - * - * @return void - */ - public function install(InstallerAdapter $parent): void - { - // Be smart: verify EVERY table the component's own install SQL declares is - // actually present. If any are missing the install did not complete — say - // so instead of showing "installed successfully". - $missing = $this->missingTables(); - - if ($missing !== []) { - $detail = count($missing) > 6 - ? count($missing) . ' expected database tables are missing' - : 'missing tables: ' . htmlspecialchars(implode(', ', $missing), ENT_QUOTES, 'UTF-8'); - - Factory::getApplication()->enqueueMessage( - 'MokoSuiteOpenGraph did not install correctly. ' . $detail - . ' — review the errors above, then reinstall.', - 'error' - ); - - return; - } - - echo '

MokoSuiteOpenGraph component installed successfully.

'; - } - - /** - * Called after update. - * - * @param InstallerAdapter $parent Installer adapter - * - * @return void - */ - public function update(InstallerAdapter $parent): void - { - echo '

MokoSuiteOpenGraph component updated successfully.

'; - } - - /** - * Smart schema check: parse the component's own installed install SQL for every - * CREATE TABLE, then return the ones missing from the database. An empty array - * means the full schema installed. Fails open (returns []) if the SQL can't be - * read, so a good install is never flagged as failed. - * - * @return string[] Names (without the #__ prefix) of missing tables. - */ - private function missingTables(): array - { - try { - $sqlFile = JPATH_ADMINISTRATOR . '/components/com_mokoog/sql/install.mysql.sql'; - - if (!is_file($sqlFile)) { - return []; - } - - $sql = file_get_contents($sqlFile); - - if ($sql === false - || !preg_match_all('/CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?[`"\']?(#__[A-Za-z0-9_]+)/i', $sql, $m)) { - return []; - } - - $db = Factory::getDbo(); - $prefix = strtolower($db->getPrefix()); - $have = array_map('strtolower', $db->getTableList()); - $missing = []; - - foreach (array_unique($m[1]) as $decl) { - $bare = substr($decl, 3); // strip "#__" - if (!in_array($prefix . strtolower($bare), $have, true)) { - $missing[] = $bare; - } - } - - return $missing; - } catch (\Throwable $e) { - return []; - } - } -} + + * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. + * @license GNU General Public License version 3 or later; see LICENSE + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Factory; +use Joomla\CMS\Installer\InstallerAdapter; + +class Com_MokoOGInstallerScript +{ + /** + * Called after install. + * + * @param InstallerAdapter $parent Installer adapter + * + * @return void + */ + public function install(InstallerAdapter $parent): void + { + // Be smart: verify EVERY table the component's own install SQL declares is + // actually present. If any are missing the install did not complete — say + // so instead of showing "installed successfully". + $missing = $this->missingTables(); + + if ($missing !== []) { + $detail = count($missing) > 6 + ? count($missing) . ' expected database tables are missing' + : 'missing tables: ' . htmlspecialchars(implode(', ', $missing), ENT_QUOTES, 'UTF-8'); + + Factory::getApplication()->enqueueMessage( + 'MokoSuiteOpenGraph did not install correctly. ' . $detail + . ' — review the errors above, then reinstall.', + 'error' + ); + + return; + } + + Factory::getApplication()->enqueueMessage('

MokoSuiteOpenGraph installed successfully!

', 'info'); + } + + /** + * Called after update. + * + * @param InstallerAdapter $parent Installer adapter + * + * @return void + */ + public function update(InstallerAdapter $parent): void + { + // Same smart check on update: only report success if the schema is intact. + $missing = $this->missingTables(); + + if ($missing !== []) { + $detail = count($missing) > 6 + ? count($missing) . ' expected database tables are missing' + : 'missing tables: ' . htmlspecialchars(implode(', ', $missing), ENT_QUOTES, 'UTF-8'); + + Factory::getApplication()->enqueueMessage( + 'MokoSuiteOpenGraph did not update correctly. ' . $detail + . ' — review the errors above.', + 'error' + ); + + return; + } + + Factory::getApplication()->enqueueMessage('MokoSuiteOpenGraph updated successfully.', 'info'); + } + + /** + * Smart schema check: parse the component's own installed install SQL for every + * CREATE TABLE, then return the ones missing from the database. An empty array + * means the full schema installed. Fails open (returns []) if the SQL can't be + * read, so a good install is never flagged as failed. + * + * @return string[] Names (without the #__ prefix) of missing tables. + */ + private function missingTables(): array + { + try { + $sqlFile = JPATH_ADMINISTRATOR . '/components/com_mokoog/sql/install.mysql.sql'; + + if (!is_file($sqlFile)) { + return []; + } + + $sql = file_get_contents($sqlFile); + + if ($sql === false + || !preg_match_all('/CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?[`"\']?(#__[A-Za-z0-9_]+)/i', $sql, $m)) { + return []; + } + + $db = Factory::getDbo(); + $prefix = strtolower($db->getPrefix()); + $have = array_map('strtolower', $db->getTableList()); + $missing = []; + + foreach (array_unique($m[1]) as $decl) { + $bare = substr($decl, 3); // strip "#__" + if (!in_array($prefix . strtolower($bare), $have, true)) { + $missing[] = $bare; + } + } + + return $missing; + } catch (\Throwable $e) { + return []; + } + } +} -- 2.52.0 From 6ef67d9ca7cf89ac61e8b783ca709035ade43f45 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Mon, 6 Jul 2026 22:37:10 +0000 Subject: [PATCH 10/30] feat(menu): add COM_MOKOOG_SHORT short-name constant (#119) Claude-Session: https://claude.ai/code/session_01B9aZHSWbiiZykJD88pYx8R --- source/packages/com_mokoog/language/en-GB/com_mokoog.sys.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/source/packages/com_mokoog/language/en-GB/com_mokoog.sys.ini b/source/packages/com_mokoog/language/en-GB/com_mokoog.sys.ini index 0e382dd..49acd54 100644 --- a/source/packages/com_mokoog/language/en-GB/com_mokoog.sys.ini +++ b/source/packages/com_mokoog/language/en-GB/com_mokoog.sys.ini @@ -3,4 +3,5 @@ ; License: GPL-3.0-or-later COM_MOKOOG="MokoSuiteOpenGraph" +COM_MOKOOG_SHORT="OpenGraph" COM_MOKOOG_DESCRIPTION="Manage Open Graph and social sharing tags for all your content. View, edit, and batch-process OG metadata." -- 2.52.0 From 2b56dc411a7423ca7a7921abcac0b7d93a6253ef Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Mon, 6 Jul 2026 22:37:44 +0000 Subject: [PATCH 11/30] feat(menu): use COM_MOKOOG_SHORT for admin menu label (#119) Claude-Session: https://claude.ai/code/session_01B9aZHSWbiiZykJD88pYx8R --- source/packages/com_mokoog/mokoog.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 3d98fd5..5eb6dad 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -71,7 +71,7 @@ access.xml config.xml - COM_MOKOOG + COM_MOKOOG_SHORT COM_MOKOOG_SUBMENU_DASHBOARD COM_MOKOOG_SUBMENU_TAGS -- 2.52.0 From c64c503f5dfd6d7e18649a17c94eae8348ac185d Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Mon, 6 Jul 2026 22:39:54 +0000 Subject: [PATCH 12/30] chore(version): pre-release bump to 01.07.07-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/script.php | 238 +++++++++--------- .../com_mokoog/sql/updates/mysql/01.07.07.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- .../plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 13 files changed, 131 insertions(+), 130 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.07.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index f747342..876fb87 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.05 +# VERSION: 01.07.07 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index ca9b8cd..829ecef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index efc28f4..05c9fc8 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.05 + VERSION: 01.07.07 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 8c2169b..ad588be 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.05 + VERSION: 01.07.07 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 7c7f84f..d5e770a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 6b6da73..4bea1a5 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.05 +VERSION: 01.07.07 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 5eb6dad..7dcbfed 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.05 + 01.07.07 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/script.php b/source/packages/com_mokoog/script.php index cf2cc39..75ba03a 100644 --- a/source/packages/com_mokoog/script.php +++ b/source/packages/com_mokoog/script.php @@ -1,119 +1,119 @@ - - * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. - * @license GNU General Public License version 3 or later; see LICENSE - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\Factory; -use Joomla\CMS\Installer\InstallerAdapter; - -class Com_MokoOGInstallerScript -{ - /** - * Called after install. - * - * @param InstallerAdapter $parent Installer adapter - * - * @return void - */ - public function install(InstallerAdapter $parent): void - { - // Be smart: verify EVERY table the component's own install SQL declares is - // actually present. If any are missing the install did not complete — say - // so instead of showing "installed successfully". - $missing = $this->missingTables(); - - if ($missing !== []) { - $detail = count($missing) > 6 - ? count($missing) . ' expected database tables are missing' - : 'missing tables: ' . htmlspecialchars(implode(', ', $missing), ENT_QUOTES, 'UTF-8'); - - Factory::getApplication()->enqueueMessage( - 'MokoSuiteOpenGraph did not install correctly. ' . $detail - . ' — review the errors above, then reinstall.', - 'error' - ); - - return; - } - - Factory::getApplication()->enqueueMessage('

MokoSuiteOpenGraph installed successfully!

', 'info'); - } - - /** - * Called after update. - * - * @param InstallerAdapter $parent Installer adapter - * - * @return void - */ - public function update(InstallerAdapter $parent): void - { - // Same smart check on update: only report success if the schema is intact. - $missing = $this->missingTables(); - - if ($missing !== []) { - $detail = count($missing) > 6 - ? count($missing) . ' expected database tables are missing' - : 'missing tables: ' . htmlspecialchars(implode(', ', $missing), ENT_QUOTES, 'UTF-8'); - - Factory::getApplication()->enqueueMessage( - 'MokoSuiteOpenGraph did not update correctly. ' . $detail - . ' — review the errors above.', - 'error' - ); - - return; - } - - Factory::getApplication()->enqueueMessage('MokoSuiteOpenGraph updated successfully.', 'info'); - } - - /** - * Smart schema check: parse the component's own installed install SQL for every - * CREATE TABLE, then return the ones missing from the database. An empty array - * means the full schema installed. Fails open (returns []) if the SQL can't be - * read, so a good install is never flagged as failed. - * - * @return string[] Names (without the #__ prefix) of missing tables. - */ - private function missingTables(): array - { - try { - $sqlFile = JPATH_ADMINISTRATOR . '/components/com_mokoog/sql/install.mysql.sql'; - - if (!is_file($sqlFile)) { - return []; - } - - $sql = file_get_contents($sqlFile); - - if ($sql === false - || !preg_match_all('/CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?[`"\']?(#__[A-Za-z0-9_]+)/i', $sql, $m)) { - return []; - } - - $db = Factory::getDbo(); - $prefix = strtolower($db->getPrefix()); - $have = array_map('strtolower', $db->getTableList()); - $missing = []; - - foreach (array_unique($m[1]) as $decl) { - $bare = substr($decl, 3); // strip "#__" - if (!in_array($prefix . strtolower($bare), $have, true)) { - $missing[] = $bare; - } - } - - return $missing; - } catch (\Throwable $e) { - return []; - } - } -} + + * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. + * @license GNU General Public License version 3 or later; see LICENSE + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Factory; +use Joomla\CMS\Installer\InstallerAdapter; + +class Com_MokoOGInstallerScript +{ + /** + * Called after install. + * + * @param InstallerAdapter $parent Installer adapter + * + * @return void + */ + public function install(InstallerAdapter $parent): void + { + // Be smart: verify EVERY table the component's own install SQL declares is + // actually present. If any are missing the install did not complete — say + // so instead of showing "installed successfully". + $missing = $this->missingTables(); + + if ($missing !== []) { + $detail = count($missing) > 6 + ? count($missing) . ' expected database tables are missing' + : 'missing tables: ' . htmlspecialchars(implode(', ', $missing), ENT_QUOTES, 'UTF-8'); + + Factory::getApplication()->enqueueMessage( + 'MokoSuiteOpenGraph did not install correctly. ' . $detail + . ' — review the errors above, then reinstall.', + 'error' + ); + + return; + } + + Factory::getApplication()->enqueueMessage('

MokoSuiteOpenGraph installed successfully!

', 'info'); + } + + /** + * Called after update. + * + * @param InstallerAdapter $parent Installer adapter + * + * @return void + */ + public function update(InstallerAdapter $parent): void + { + // Same smart check on update: only report success if the schema is intact. + $missing = $this->missingTables(); + + if ($missing !== []) { + $detail = count($missing) > 6 + ? count($missing) . ' expected database tables are missing' + : 'missing tables: ' . htmlspecialchars(implode(', ', $missing), ENT_QUOTES, 'UTF-8'); + + Factory::getApplication()->enqueueMessage( + 'MokoSuiteOpenGraph did not update correctly. ' . $detail + . ' — review the errors above.', + 'error' + ); + + return; + } + + Factory::getApplication()->enqueueMessage('MokoSuiteOpenGraph updated successfully.', 'info'); + } + + /** + * Smart schema check: parse the component's own installed install SQL for every + * CREATE TABLE, then return the ones missing from the database. An empty array + * means the full schema installed. Fails open (returns []) if the SQL can't be + * read, so a good install is never flagged as failed. + * + * @return string[] Names (without the #__ prefix) of missing tables. + */ + private function missingTables(): array + { + try { + $sqlFile = JPATH_ADMINISTRATOR . '/components/com_mokoog/sql/install.mysql.sql'; + + if (!is_file($sqlFile)) { + return []; + } + + $sql = file_get_contents($sqlFile); + + if ($sql === false + || !preg_match_all('/CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?[`"\']?(#__[A-Za-z0-9_]+)/i', $sql, $m)) { + return []; + } + + $db = Factory::getDbo(); + $prefix = strtolower($db->getPrefix()); + $have = array_map('strtolower', $db->getTableList()); + $missing = []; + + foreach (array_unique($m[1]) as $decl) { + $bare = substr($decl, 3); // strip "#__" + if (!in_array($prefix . strtolower($bare), $have, true)) { + $missing[] = $bare; + } + } + + return $missing; + } catch (\Throwable $e) { + return []; + } + } +} diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.07.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.07.sql new file mode 100644 index 0000000..8f086aa --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.07.sql @@ -0,0 +1 @@ +/* 01.07.07 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 4dfbffb..6809a5b 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.05 + 01.07.07 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 0b97545..a51788a 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.05 + 01.07.07 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 583ae34..43fb199 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.05 + 01.07.07 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index 74359f0..da7c3a8 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.05 + 01.07.07 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From e94a950cb0452737ce68c92b04eeffcf2c12567c Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Mon, 6 Jul 2026 22:40:10 +0000 Subject: [PATCH 13/30] chore(version): pre-release bump to 01.07.08-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.08.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.08.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 876fb87..471fe1c 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.07 +# VERSION: 01.07.08 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 829ecef..0b40945 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 05c9fc8..9b799a7 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.07 + VERSION: 01.07.08 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index ad588be..78429a5 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.07 + VERSION: 01.07.08 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index d5e770a..93f089a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 4bea1a5..76b7367 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.07 +VERSION: 01.07.08 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 7dcbfed..86a9353 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.07 + 01.07.08 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.08.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.08.sql new file mode 100644 index 0000000..0921fce --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.08.sql @@ -0,0 +1 @@ +/* 01.07.08 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 6809a5b..5222171 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.07 + 01.07.08 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index a51788a..fc0f4b2 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.07 + 01.07.08 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 43fb199..4ee533f 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.07 + 01.07.08 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index da7c3a8..545c5db 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.07 + 01.07.08 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From a2ba10c56207af5a2ef4e3e88c4d61946e7345a3 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Mon, 6 Jul 2026 22:41:46 +0000 Subject: [PATCH 14/30] chore(version): pre-release bump to 01.07.09-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.09.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.09.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 471fe1c..c6824bc 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.08 +# VERSION: 01.07.09 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b40945..c0548e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 9b799a7..b9eb463 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.08 + VERSION: 01.07.09 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 78429a5..f554708 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.08 + VERSION: 01.07.09 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 93f089a..2bd7763 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 76b7367..b152f79 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.08 +VERSION: 01.07.09 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 86a9353..251df00 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.08 + 01.07.09 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.09.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.09.sql new file mode 100644 index 0000000..521edc5 --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.09.sql @@ -0,0 +1 @@ +/* 01.07.09 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 5222171..c8825d8 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.08 + 01.07.09 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index fc0f4b2..702b368 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.08 + 01.07.09 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 4ee533f..0c6753b 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.08 + 01.07.09 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index 545c5db..d2dee47 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.08 + 01.07.09 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From eac29f3f235b1c89e4c61ed07929dbeaa925d68e Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Tue, 7 Jul 2026 10:16:42 +0000 Subject: [PATCH 15/30] chore(version): pre-release bump to 01.07.10-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.10.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.10.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index c6824bc..b15bf50 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.09 +# VERSION: 01.07.10 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index c0548e9..8cf0c9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index b9eb463..66797ac 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.09 + VERSION: 01.07.10 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index f554708..860f36d 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.09 + VERSION: 01.07.10 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 2bd7763..21a2004 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index b152f79..29cdf0f 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.09 +VERSION: 01.07.10 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 251df00..fb61d14 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.09 + 01.07.10 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.10.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.10.sql new file mode 100644 index 0000000..5eb421c --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.10.sql @@ -0,0 +1 @@ +/* 01.07.10 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index c8825d8..63f0da3 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.09 + 01.07.10 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 702b368..23bddab 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.09 + 01.07.10 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 0c6753b..f9b4882 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.09 + 01.07.10 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index d2dee47..d825316 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.09 + 01.07.10 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From b6e9afacd8fd6d65f33302a2b4745bf5ea9541ab Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Thu, 9 Jul 2026 23:11:21 +0000 Subject: [PATCH 16/30] chore(version): pre-release bump to 01.07.11-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.11.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.11.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index b15bf50..78d34c8 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.10 +# VERSION: 01.07.11 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cf0c9b..6160990 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 66797ac..cd3b4e7 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.10 + VERSION: 01.07.11 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 860f36d..3086a83 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.10 + VERSION: 01.07.11 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 21a2004..9f1a853 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 29cdf0f..dd278ad 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.10 +VERSION: 01.07.11 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index fb61d14..6a4eb97 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.10 + 01.07.11 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.11.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.11.sql new file mode 100644 index 0000000..35338ef --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.11.sql @@ -0,0 +1 @@ +/* 01.07.11 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 63f0da3..def8540 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.10 + 01.07.11 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 23bddab..60e31c1 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.10 + 01.07.11 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index f9b4882..5e5038c 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.10 + 01.07.11 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index d825316..393da84 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.10 + 01.07.11 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From ddfec7b8c2678037aa8588bba023925088a9d849 Mon Sep 17 00:00:00 2001 From: "mokogitea-actions[bot]" Date: Thu, 9 Jul 2026 23:23:34 +0000 Subject: [PATCH 17/30] chore(version): pre-release bump to 01.07.12-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.12.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.12.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index eb67f8f..99dbe0c 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: MokoGitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.00.00 +# VERSION: 01.07.12 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 6160990..4cf55b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 5c99d75..4438ebb 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.00 + VERSION: 01.07.12 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 6b00c88..18dd1e7 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.00 + VERSION: 01.07.12 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 190c9b2..ad48b94 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index efc1e5f..3861d41 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.00 +VERSION: 01.07.12 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 6a4eb97..41158a4 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.11 + 01.07.12 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.12.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.12.sql new file mode 100644 index 0000000..a3f268b --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.12.sql @@ -0,0 +1 @@ +/* 01.07.12 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index def8540..3c716e9 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.11 + 01.07.12 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 60e31c1..3d83acb 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.11 + 01.07.12 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 5e5038c..24e0a30 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.11 + 01.07.12 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index 393da84..272b098 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.11 + 01.07.12 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From 22dee1464f9d5dce1e80b438305c0cb2a737ecf7 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 12 Jul 2026 16:35:08 -0500 Subject: [PATCH 18/30] docs(changelog): note admin menu short-name constant (#119) Claude-Session: https://claude.ai/code/session_01B9aZHSWbiiZykJD88pYx8R --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cf55b2..165a788 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] ### Added +- **Admin menu short-name constant** — the Administrator → Components menu now shows a compact label via `COM_MOKOOG_SHORT` ("OpenGraph"); defined in the admin sys.ini (#119) - OG coverage **dashboard** as the default admin view — SVG donut gauge, coverage by content type, and a list of articles missing OG tags with a batch-generate shortcut (#94) - Single OG tag **create/edit screen** in the admin (the tag manager was previously read-only) (#98) - **CSV import** button and upload form in the tag manager (#103) -- 2.52.0 From d2a1c1a60cff51bf9d74a9e6e4d6e064dc722cb6 Mon Sep 17 00:00:00 2001 From: "mokogitea-actions[bot]" Date: Sun, 12 Jul 2026 21:40:49 +0000 Subject: [PATCH 19/30] chore(version): pre-release bump to 01.07.13-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.13.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.13.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 99dbe0c..2ecb553 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: MokoGitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.12 +# VERSION: 01.07.13 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 165a788..d492cbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 4438ebb..5bf02f4 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.12 + VERSION: 01.07.13 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 18dd1e7..fe09be3 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.12 + VERSION: 01.07.13 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index ad48b94..2b7ebb5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 3861d41..e64f34e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.12 +VERSION: 01.07.13 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 41158a4..49a9715 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.12 + 01.07.13 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.13.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.13.sql new file mode 100644 index 0000000..7088fa4 --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.13.sql @@ -0,0 +1 @@ +/* 01.07.13 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 3c716e9..cd3e170 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.12 + 01.07.13 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 3d83acb..cd0acb8 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.12 + 01.07.13 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 24e0a30..e4e489b 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.12 + 01.07.13 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index 272b098..9e8a426 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.12 + 01.07.13 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From fb1e37878b847161ece271a33bb40e6d3767e603 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Mon, 13 Jul 2026 01:42:36 +0000 Subject: [PATCH 20/30] chore: align README.md to Joomla 6 / PHP 8.3 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b7ebb5..8626a5f 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ MokoSuiteOpenGraph gives you full control over how your Joomla content appears w ## Installation -**Requirements:** Joomla 6.0 or higher and PHP 8.2 or higher. +**Requirements:** Joomla 6.0 or higher and PHP 8.3 or higher. 1. Download the latest `pkg_mokoog-*.zip` from [Releases](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteOpenGraph/releases) 2. In Joomla Administrator → Extensions → Install → Upload Package File -- 2.52.0 From 1575454aae142d0d88d6313cbf8d90afbc9a1d15 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Mon, 13 Jul 2026 01:42:36 +0000 Subject: [PATCH 21/30] chore: align .mokogitea/CLAUDE.md to Joomla 6 / PHP 8.3 --- .mokogitea/CLAUDE.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.mokogitea/CLAUDE.md b/.mokogitea/CLAUDE.md index b4b2470..17d9f70 100644 --- a/.mokogitea/CLAUDE.md +++ b/.mokogitea/CLAUDE.md @@ -7,7 +7,7 @@ Open Graph, Twitter Card, and social sharing meta tag management for Joomla. Per | Field | Value | |---|---| | **Package** | `pkg_mokoog` | -| **Language** | PHP 8.1+ | +| **Language** | PHP 8.3+ | | **Branch** | develop on `dev`, merge to `main` (protected) | | **Wiki** | [MokoSuiteOpenGraph Wiki](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteOpenGraph/wiki) | @@ -28,7 +28,7 @@ Joomla **package** with three sub-extensions: ### com_mokoog (Component) - Admin backend for viewing/managing all OG tag records -- Joomla 4/5 MVC: `Controller/DisplayController`, `Model/TagsModel`, `View/Tags/HtmlView`, `Table/TagTable` +- Joomla 6 MVC: `Controller/DisplayController`, `Model/TagsModel`, `View/Tags/HtmlView`, `Table/TagTable` - Namespace: `Joomla\Component\MokoOG\Administrator` ### plg_system_mokoog (System Plugin) @@ -58,8 +58,8 @@ Single table `#__mokoog_tags`: ## Coding Standards -- PHP 8.1+ minimum -- Joomla 4/5 DI container pattern: `services/provider.php` → Extension class +- PHP 8.3+ minimum +- Joomla 6 DI container pattern: `services/provider.php` → Extension class - Legacy stub `.php` file required for plugin loader but empty - `SubscriberInterface` for event subscription (not `on*` method naming) - `bind() → check() → store()` for Table operations (not `save()`) -- 2.52.0 From 647eeb71a753bdf6293eb0e7bf9f9f0f612ce210 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Mon, 13 Jul 2026 01:42:37 +0000 Subject: [PATCH 22/30] chore: align composer.json to Joomla 6 / PHP 8.3 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index a5fd414..9bd5a31 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ } ], "require": { - "php": ">=8.1" + "php": ">=8.3" }, "require-dev": { "joomla/coding-standards": "^3.0", -- 2.52.0 From 91f1869fb7c5162f2aac0f1d578cf8f8125816ba Mon Sep 17 00:00:00 2001 From: "mokogitea-actions[bot]" Date: Mon, 13 Jul 2026 01:43:47 +0000 Subject: [PATCH 23/30] chore(version): pre-release bump to 01.07.14-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.14.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.14.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 2ecb553..1d13741 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: MokoGitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.13 +# VERSION: 01.07.14 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index d492cbf..8886996 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 5bf02f4..b5d69eb 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.13 + VERSION: 01.07.14 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index fe09be3..314f9fb 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.13 + VERSION: 01.07.14 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 8626a5f..35dea9d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index e64f34e..653af25 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.13 +VERSION: 01.07.14 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 49a9715..657bec1 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.13 + 01.07.14 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.14.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.14.sql new file mode 100644 index 0000000..d52374c --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.14.sql @@ -0,0 +1 @@ +/* 01.07.14 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index cd3e170..5dacbfd 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.13 + 01.07.14 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index cd0acb8..5a11962 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.13 + 01.07.14 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index e4e489b..c314b1d 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.13 + 01.07.14 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index 9e8a426..e031cb2 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.13 + 01.07.14 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From 003e9ad564f89b60e30aba6e7cc87ea8504e6313 Mon Sep 17 00:00:00 2001 From: "mokogitea-actions[bot]" Date: Mon, 13 Jul 2026 01:44:26 +0000 Subject: [PATCH 24/30] chore(version): pre-release bump to 01.07.15-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.15.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.15.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 1d13741..ffa1268 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: MokoGitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.14 +# VERSION: 01.07.15 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 8886996..cd4bbe8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index b5d69eb..6254069 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.14 + VERSION: 01.07.15 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 314f9fb..7faa4f3 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.14 + VERSION: 01.07.15 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 35dea9d..3668bd3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 653af25..b31f412 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.14 +VERSION: 01.07.15 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 657bec1..aea1f0d 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.14 + 01.07.15 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.15.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.15.sql new file mode 100644 index 0000000..e0bdac3 --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.15.sql @@ -0,0 +1 @@ +/* 01.07.15 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 5dacbfd..4f6da95 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.14 + 01.07.15 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 5a11962..918561e 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.14 + 01.07.15 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index c314b1d..f0315b0 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.14 + 01.07.15 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index e031cb2..290f07e 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.14 + 01.07.15 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From c531383a33f6361351518be7158f5cc4a470c6d5 Mon Sep 17 00:00:00 2001 From: "mokogitea-actions[bot]" Date: Mon, 13 Jul 2026 01:44:49 +0000 Subject: [PATCH 25/30] chore(version): pre-release bump to 01.07.16-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.16.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.16.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index ffa1268..16b5f67 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: MokoGitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.15 +# VERSION: 01.07.16 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index cd4bbe8..eced3b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 6254069..2639e13 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.15 + VERSION: 01.07.16 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 7faa4f3..fcc4e3a 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.15 + VERSION: 01.07.16 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index 3668bd3..c7a3d43 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index b31f412..877a49d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.15 +VERSION: 01.07.16 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index aea1f0d..590db4d 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.15 + 01.07.16 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.16.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.16.sql new file mode 100644 index 0000000..e9d61ac --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.16.sql @@ -0,0 +1 @@ +/* 01.07.16 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 4f6da95..129dc0d 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.15 + 01.07.16 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 918561e..e65cefc 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.15 + 01.07.16 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index f0315b0..de90057 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.15 + 01.07.16 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index 290f07e..939bc47 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.15 + 01.07.16 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From 9602930d8c93b6db3b5eb754534df30dbea013bc Mon Sep 17 00:00:00 2001 From: "mokogitea-actions[bot]" Date: Mon, 13 Jul 2026 02:24:01 +0000 Subject: [PATCH 26/30] chore(version): pre-release bump to 01.07.17-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.17.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.17.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 16b5f67..87c1ed2 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: MokoGitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.16 +# VERSION: 01.07.17 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index eced3b0..239a1a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 2639e13..3a2f524 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.16 + VERSION: 01.07.17 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index fcc4e3a..9535c5f 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.16 + VERSION: 01.07.17 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index c7a3d43..e16611b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 877a49d..5c6640d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.16 +VERSION: 01.07.17 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 590db4d..1773d0f 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.16 + 01.07.17 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.17.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.17.sql new file mode 100644 index 0000000..5e4a8fa --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.17.sql @@ -0,0 +1 @@ +/* 01.07.17 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 129dc0d..4e7369a 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.16 + 01.07.17 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index e65cefc..2dbed8a 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.16 + 01.07.17 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index de90057..6e7e8b9 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.16 + 01.07.17 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index 939bc47..da99f0b 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.16 + 01.07.17 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From 39d8d6c6edfb356c8ff82a351616987a3f822993 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Mon, 13 Jul 2026 09:31:47 +0000 Subject: [PATCH 27/30] chore(sync): CI notify retry + JEXEC whole-file scan from Template-Generic --- .mokogitea/workflows/notify.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.mokogitea/workflows/notify.yml b/.mokogitea/workflows/notify.yml index 5fead53..656996f 100644 --- a/.mokogitea/workflows/notify.yml +++ b/.mokogitea/workflows/notify.yml @@ -46,13 +46,13 @@ jobs: WORKFLOW="${{ github.event.workflow_run.name }}" URL="${{ github.event.workflow_run.html_url }}" - curl -sS \ + curl -sS --retry 3 --retry-connrefused --retry-delay 2 --max-time 20 \ -H "Title: ${REPO} released" \ -H "Tags: white_check_mark,package" \ -H "Priority: default" \ -H "Click: ${URL}" \ -d "${WORKFLOW} completed successfully." \ - "${NTFY_URL}/${NTFY_TOPIC}" + "${NTFY_URL}/${NTFY_TOPIC}" || echo "::warning::ntfy notification could not be delivered (non-fatal)" - name: Notify on failure if: github.event.workflow_run.conclusion == 'failure' @@ -61,10 +61,10 @@ jobs: WORKFLOW="${{ github.event.workflow_run.name }}" URL="${{ github.event.workflow_run.html_url }}" - curl -sS \ + curl -sS --retry 3 --retry-connrefused --retry-delay 2 --max-time 20 \ -H "Title: ${REPO} workflow failed" \ -H "Tags: x,warning" \ -H "Priority: high" \ -H "Click: ${URL}" \ -d "${WORKFLOW} failed. Check the run for details." \ - "${NTFY_URL}/${NTFY_TOPIC}" + "${NTFY_URL}/${NTFY_TOPIC}" || echo "::warning::ntfy notification could not be delivered (non-fatal)" -- 2.52.0 From bbbffb79eab33e942e34e4511e58f32c6b2e8e39 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Mon, 13 Jul 2026 09:31:48 +0000 Subject: [PATCH 28/30] chore(sync): CI notify retry + JEXEC whole-file scan from Template-Generic --- .mokogitea/workflows/pr-check.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.mokogitea/workflows/pr-check.yml b/.mokogitea/workflows/pr-check.yml index c7c2e8f..2874d60 100644 --- a/.mokogitea/workflows/pr-check.yml +++ b/.mokogitea/workflows/pr-check.yml @@ -258,8 +258,9 @@ jobs: while IFS= read -r -d '' file; do # Skip vendor, node_modules, and index.html stub files case "$file" in ./vendor/*|./node_modules/*) continue ;; esac - # Check first 10 lines for JEXEC or JPATH guard - if ! head -20 "$file" | grep -qE "defined\s*\(\s*['\"](_JEXEC|JPATH_BASE|\\\\JPATH_PLATFORM)['\"]"; then + # Scan the whole file for the JEXEC/JPATH guard: it is placed after + # the SPDX/file-header docblock, which commonly runs past 20 lines. + if ! grep -qE "defined\s*\(\s*['\"](_JEXEC|JPATH_BASE|\\\\JPATH_PLATFORM)['\"]" "$file"; then echo "::error file=${file}::Missing JEXEC guard: ${file}" ERRORS=$((ERRORS + 1)) fi -- 2.52.0 From 69e3fe49966c2b8071cc46a83bd77ec82cec9995 Mon Sep 17 00:00:00 2001 From: "mokogitea-actions[bot]" Date: Mon, 13 Jul 2026 09:36:07 +0000 Subject: [PATCH 29/30] chore(version): pre-release bump to 01.07.18-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.18.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.18.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 87c1ed2..4296076 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: MokoGitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.17 +# VERSION: 01.07.18 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 239a1a7..097b7f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 3a2f524..6b7a829 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.17 + VERSION: 01.07.18 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 9535c5f..4a9e5e3 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.17 + VERSION: 01.07.18 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index e16611b..c9b4a5c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index 5c6640d..bfcbf35 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.17 +VERSION: 01.07.18 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 1773d0f..3296d6f 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.17 + 01.07.18 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.18.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.18.sql new file mode 100644 index 0000000..1d3b2b6 --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.18.sql @@ -0,0 +1 @@ +/* 01.07.18 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 4e7369a..9ff537b 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.17 + 01.07.18 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 2dbed8a..023531b 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.17 + 01.07.18 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 6e7e8b9..0f9e529 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.17 + 01.07.18 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index da99f0b..9a54dab 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.17 + 01.07.18 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From b87d6bca0e7741ead61a98c68fcc8453c19cb856 Mon Sep 17 00:00:00 2001 From: "mokogitea-actions[bot]" Date: Mon, 13 Jul 2026 09:36:29 +0000 Subject: [PATCH 30/30] chore(version): pre-release bump to 01.07.19-dev [skip ci] --- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- source/packages/com_mokoog/mokoog.xml | 2 +- source/packages/com_mokoog/sql/updates/mysql/01.07.19.sql | 1 + source/packages/plg_content_mokoog/mokoog.xml | 2 +- source/packages/plg_system_mokoog/mokoog.xml | 2 +- source/packages/plg_webservices_mokoog/mokoog.xml | 2 +- source/pkg_mokoog.xml | 2 +- 12 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 source/packages/com_mokoog/sql/updates/mysql/01.07.19.sql diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 4296076..125ecc1 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: MokoGitea.Workflow # INGROUP: mokocli.Automation -# VERSION: 01.07.18 +# VERSION: 01.07.19 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 097b7f5..23cc023 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to MokoSuiteOpenGraph will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - + ## [Unreleased] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 6b7a829..a1ed633 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://github.com/mokoconsulting-tech/Template-Joomla/ - VERSION: 01.07.18 + VERSION: 01.07.19 PATH: ./CODE_OF_CONDUCT.md BRIEF: Community expectations and enforcement guidelines NOTE: Adapted with attribution from the Contributor Covenant v2.1 diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 4a9e5e3..467e551 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.Template-Joomla INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/Template-Joomla - VERSION: 01.07.18 + VERSION: 01.07.19 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for Template-Joomla --> diff --git a/README.md b/README.md index c9b4a5c..30fa7a0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteOpenGraph - + Open Graph, Twitter Card, and social sharing meta tag management for Joomla 6 and higher. diff --git a/SECURITY.md b/SECURITY.md index bfcbf35..051757e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla INGROUP: Template-Joomla.Documentation REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla PATH: /SECURITY.md -VERSION: 01.07.18 +VERSION: 01.07.19 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/source/packages/com_mokoog/mokoog.xml b/source/packages/com_mokoog/mokoog.xml index 3296d6f..467ae44 100644 --- a/source/packages/com_mokoog/mokoog.xml +++ b/source/packages/com_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> com_mokoog - 01.07.18 + 01.07.19 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/com_mokoog/sql/updates/mysql/01.07.19.sql b/source/packages/com_mokoog/sql/updates/mysql/01.07.19.sql new file mode 100644 index 0000000..9e9a677 --- /dev/null +++ b/source/packages/com_mokoog/sql/updates/mysql/01.07.19.sql @@ -0,0 +1 @@ +/* 01.07.19 — no schema changes */ diff --git a/source/packages/plg_content_mokoog/mokoog.xml b/source/packages/plg_content_mokoog/mokoog.xml index 9ff537b..edda11f 100644 --- a/source/packages/plg_content_mokoog/mokoog.xml +++ b/source/packages/plg_content_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Content - MokoSuiteOpenGraph - 01.07.18 + 01.07.19 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokoog/mokoog.xml b/source/packages/plg_system_mokoog/mokoog.xml index 023531b..590de71 100644 --- a/source/packages/plg_system_mokoog/mokoog.xml +++ b/source/packages/plg_system_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> System - MokoSuiteOpenGraph - 01.07.18 + 01.07.19 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokoog/mokoog.xml b/source/packages/plg_webservices_mokoog/mokoog.xml index 0f9e529..051b2a8 100644 --- a/source/packages/plg_webservices_mokoog/mokoog.xml +++ b/source/packages/plg_webservices_mokoog/mokoog.xml @@ -8,7 +8,7 @@ --> Web Services - MokoSuiteOpenGraph - 01.07.18 + 01.07.19 2026-05-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokoog.xml b/source/pkg_mokoog.xml index 9a54dab..4e15347 100644 --- a/source/pkg_mokoog.xml +++ b/source/pkg_mokoog.xml @@ -8,7 +8,7 @@ Package - MokoSuiteOpenGraph mokoog - 01.07.18 + 01.07.19 2026-05-23 Moko Consulting hello@mokoconsulting.tech -- 2.52.0