From 2ee8a5e286e36403f7c8b2deb0687ce52d1f19d5 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Tue, 23 Jun 2026 11:41:17 -0500 Subject: [PATCH 1/5] chore: remove wiki/ folder -- content migrated to Gitea wiki feature --- wiki/Home.md | 46 ---- wiki/developer/Adding-Custom-Services.md | 74 ----- wiki/developer/Developer-Guide.md | 337 ----------------------- wiki/developer/REST-API.md | 57 ---- wiki/getting-started/Configuration.md | 39 --- wiki/getting-started/Installation.md | 33 --- wiki/services/Telegram.md | 62 ----- wiki/user-guide/Message-Templates.md | 77 ------ wiki/user-guide/Services.md | 60 ---- wiki/user-guide/Troubleshooting.md | 48 ---- 10 files changed, 833 deletions(-) delete mode 100644 wiki/Home.md delete mode 100644 wiki/developer/Adding-Custom-Services.md delete mode 100644 wiki/developer/Developer-Guide.md delete mode 100644 wiki/developer/REST-API.md delete mode 100644 wiki/getting-started/Configuration.md delete mode 100644 wiki/getting-started/Installation.md delete mode 100644 wiki/services/Telegram.md delete mode 100644 wiki/user-guide/Message-Templates.md delete mode 100644 wiki/user-guide/Services.md delete mode 100644 wiki/user-guide/Troubleshooting.md diff --git a/wiki/Home.md b/wiki/Home.md deleted file mode 100644 index 46bbc47..0000000 --- a/wiki/Home.md +++ /dev/null @@ -1,46 +0,0 @@ -# MokoSuiteCross Wiki - -**MokoSuiteCross** — Cross-posting Joomla content to social media, email marketing, and chat platforms. - -## Quick Start - -1. Install `pkg_mokosuitecross-*.zip` via Joomla Extensions → Install -2. Navigate to **Components → MokoSuiteCross → Services** -3. Add your first service (e.g., Telegram, Discord, Facebook) -4. Publish an article — it's automatically cross-posted to all active services - -## Getting Started - -- [Installation](getting-started/Installation) -- [Configuration](getting-started/Configuration) - -## User Guide - -- [Services](user-guide/Services) - - [Telegram](services/Telegram) -- [Message Templates](user-guide/Message-Templates) -- [Troubleshooting](user-guide/Troubleshooting) - -## Developer - -- [Developer Guide](developer/Developer-Guide) -- [Adding Custom Services](developer/Adding-Custom-Services) -- [REST API](developer/REST-API) - -## Architecture - -MokoSuiteCross uses a **plugin-based service architecture**. Each social platform is a separate Joomla plugin in the custom `mokosuitecross` plugin group. This means: - -- Install only the platforms you need -- Third-party developers can add new platforms as plugins -- Each service plugin implements `MokoSuiteCrossServiceInterface` -- Services support both **default bot/app** mode (pre-configured by Moko) and **custom** mode (bring your own API keys) - -## Database Tables - -| Table | Purpose | -|-------|---------| -| `#__mokosuitecross_services` | Connected service accounts | -| `#__mokosuitecross_posts` | Cross-post queue and history | -| `#__mokosuitecross_templates` | Per-platform message templates | -| `#__mokosuitecross_logs` | Activity and error logs | diff --git a/wiki/developer/Adding-Custom-Services.md b/wiki/developer/Adding-Custom-Services.md deleted file mode 100644 index 6a3dc22..0000000 --- a/wiki/developer/Adding-Custom-Services.md +++ /dev/null @@ -1,74 +0,0 @@ -# Adding Custom Services - -MokoSuiteCross uses a plugin-based architecture. Any developer can create a new service plugin. - -## Plugin Structure - -Create a Joomla plugin in the `mokosuitecross` group: - -``` -plg_mokosuitecross_myservice/ -├── myservice.xml # Plugin manifest (group="mokosuitecross") -├── myservice.php # Legacy stub (empty) -├── src/ -│ └── Extension/ -│ └── MyserviceService.php # Implements MokoSuiteCrossServiceInterface -├── services/ -│ └── provider.php # DI container registration -└── language/ - └── en-GB/ - ├── plg_mokosuitecross_myservice.ini - └── plg_mokosuitecross_myservice.sys.ini -``` - -## Implement the Interface - -Your Extension class must implement `MokoSuiteCrossServiceInterface`: - -```php -namespace Joomla\Plugin\MokoSuiteCross\Myservice\Extension; - -use Joomla\CMS\Plugin\CMSPlugin; -use Joomla\Component\MokoSuiteCross\Administrator\Service\MokoSuiteCrossServiceInterface; -use Joomla\Event\SubscriberInterface; - -class MyserviceService extends CMSPlugin implements SubscriberInterface, MokoSuiteCrossServiceInterface -{ - public static function getSubscribedEvents(): array - { - return ['onMokoSuiteCrossGetServices' => 'onMokoSuiteCrossGetServices']; - } - - public function onMokoSuiteCrossGetServices(&$services): void - { - $services[] = $this; - } - - public function getServiceType(): string { return 'myservice'; } - public function getServiceName(): string { return 'My Service'; } - public function getMaxLength(): int { return 500; } - public function supportsMedia(): bool { return true; } - - public function publish(string $message, array $media, array $credentials, array $params): array - { - // Your API integration here - return ['success' => true, 'platform_post_id' => '...', 'response' => [...]]; - } - - public function validateCredentials(array $credentials): array - { - return ['valid' => true, 'message' => 'OK', 'account_name' => '...']; - } -} -``` - -## Required Methods - -| Method | Returns | Purpose | -|--------|---------|---------| -| `getServiceType()` | string | Unique identifier (lowercase, no spaces) | -| `getServiceName()` | string | Display name in admin UI | -| `publish()` | array | Send content to the platform | -| `validateCredentials()` | array | Test if credentials work | -| `getMaxLength()` | int | Character limit (0 = no limit) | -| `supportsMedia()` | bool | Whether images can be attached | diff --git a/wiki/developer/Developer-Guide.md b/wiki/developer/Developer-Guide.md deleted file mode 100644 index e184274..0000000 --- a/wiki/developer/Developer-Guide.md +++ /dev/null @@ -1,337 +0,0 @@ -# Developer Guide - -This guide covers building new service plugins for MokoSuiteCross — from directory structure through testing. - -## Plugin Directory Structure - -Each service plugin lives in its own package under `source/packages/`: - -``` -plg_mokosuitecross_myservice/ -├── myservice.xml ← Joomla manifest (type="plugin", group="mokosuitecross") -├── myservice.php ← Legacy loader stub (empty, required by Joomla) -├── services/ -│ └── provider.php ← DI container: registers the Extension class -└── src/ - └── Extension/ - └── MyServiceService.php ← Main class: implements the interface -``` - -## MokoSuiteCrossServiceInterface - -Every service plugin **must** implement `MokoSuiteCrossServiceInterface`. The interface defines 5 methods: - -```php -namespace Joomla\Component\MokoSuiteCross\Administrator\Service; - -interface MokoSuiteCrossServiceInterface -{ - /** - * Unique identifier matching the service_type in service.xml. - * Must match exactly (e.g. 'mastodon', 'telegram'). - */ - public function getServiceType(): string; - - /** - * Human-readable display name (e.g. 'Mastodon', 'Telegram'). - */ - public function getServiceName(): string; - - /** - * Post content to the platform. - * - * @param string $message Rendered message text (already template-processed) - * @param array $media Array of media file paths (images) - * @param array $credentials Decrypted credential key-value pairs from the service record - * @param array $params Plugin params + service params merged - * @return array ['success' => bool, 'platform_post_id' => string, 'response' => array] - */ - public function publish(string $message, array $media, array $credentials, array $params): array; - - /** - * Test whether the stored credentials are valid. - * - * @param array $credentials Decrypted credential key-value pairs - * @return array ['valid' => bool, 'message' => string, 'account_name' => string] - */ - public function validateCredentials(array $credentials): array; - - /** - * Platform character limit (0 = unlimited). - */ - public function getMaxLength(): int; - - /** - * Whether this service supports image/media attachments. - */ - public function supportsMedia(): bool; -} -``` - -## Step-by-Step: Creating a New Service Plugin - -### 1. Create the manifest (`myservice.xml`) - -```xml - - - plg_mokosuitecross_myservice - Moko Consulting - 1.0.0 - MyService integration for MokoSuiteCross - Joomla\Plugin\MokoSuiteCross\MyService - - myservice.php - services - src - - - - -
- -
-
-
-
-``` - -### 2. Create the legacy stub (`myservice.php`) - -```php -set( - PluginInterface::class, - function (Container $container) { - $dispatcher = $container->get(DispatcherInterface::class); - $plugin = new MyServiceService($dispatcher, (array) PluginHelper::getPlugin('mokosuitecross', 'myservice')); - $plugin->setApplication(Factory::getApplication()); - return $plugin; - } - ); - } -}; -``` - -### 4. Create the Extension class - -```php - 'onMokoSuiteCrossGetServices', - ]; - } - - public function onMokoSuiteCrossGetServices(&$services): void - { - $services[] = $this; - } - - public function getServiceType(): string - { - return 'myservice'; - } - - public function getServiceName(): string - { - return 'My Service'; - } - - public function publish(string $message, array $media, array $credentials, array $params): array - { - // Your API integration here - // $credentials contains the decrypted values from service.xml fields - // e.g. $credentials['api_key'], $credentials['webhook_url'] - - return [ - 'success' => true, - 'platform_post_id' => 'abc123', - 'response' => ['status' => 'ok'], - ]; - } - - public function validateCredentials(array $credentials): array - { - // Test the credentials against the platform API - return [ - 'valid' => true, - 'message' => 'Connected', - 'account_name' => 'MyAccount', - ]; - } - - public function getMaxLength(): int - { - return 0; // 0 = no limit - } - - public function supportsMedia(): bool - { - return false; - } -} -``` - -### 5. Add credential fields to `service.xml` - -In `source/packages/com_mokosuitecross/forms/service.xml`, add your fields with `showon`: - -```xml - - -``` - -### 6. Add language strings to `com_mokosuitecross.ini` - -```ini -COM_MOKOSUITECROSS_CRED_MYSERVICE_KEY="API Key" -``` - -### 7. Add to the service_type dropdown (if not already listed) - -In the `` list in `service.xml`, add: - -```xml - -``` - -## How `showon` Credential Fields Work - -Joomla's `showon` attribute controls field visibility client-side via JavaScript: - -| Pattern | Meaning | -|---------|---------| -| `showon="service_type:telegram"` | Show when service type is Telegram | -| `showon="service_type:telegram[AND]cred_mode:custom"` | Show when Telegram AND custom mode | -| `showon="service_type:webhook[AND]cred_webhook_auth_type:bearer,basic"` | Show when webhook AND auth is bearer or basic | - -Fields are hidden/shown without page reloads. The form data for hidden fields is still submitted but ignored by the component. - -## Dispatch Pipeline - -The cross-posting flow works like this: - -1. **Article published** → System plugin (`plg_system_mokosuitecross`) catches `onContentAfterSave` -2. **Queue creation** → For each enabled service, a `#__mokosuitecross_posts` row is created with status `queued` -3. **Queue processing** → Either the Scheduled Task or page-load fallback picks up queued posts -4. **Service dispatch** → `QueueProcessor` fires `onMokoSuiteCrossGetServices` event in the `mokosuitecross` plugin group -5. **Plugin response** → Each registered service plugin adds itself to the `$services` array -6. **Matching** → The processor finds the plugin whose `getServiceType()` matches the service record's `service_type` -7. **Publishing** → `publish()` is called with the rendered message, media paths, decrypted credentials, and params -8. **Result** → The post record is updated with `posted`/`failed` status and the platform response - -## Default Bot Mode - -Some services (Telegram, Discord, Slack, Teams, Facebook, Threads) support a **default mode** where pre-configured MokoSuite credentials are used. This is controlled by: - -1. The `cred_mode` field in `service.xml` (shown for services listed in its `showon`) -2. Plugin-level params in the plugin manifest (`` section) that store default tokens -3. The service plugin's `publish()` method checks `$credentials['mode']`: - - `'default'` → use plugin params (`$this->params->get('default_token')`) - - `'custom'` → use the per-service credentials from `$credentials` - -## OAuth Integration - -For services requiring OAuth (Facebook, LinkedIn, Twitter, Pinterest, etc.): - -1. **OAuthHelper** (`source/packages/com_mokosuitecross/src/Helper/OAuthHelper.php`) handles: - - Authorization URL generation with state parameter - - Code-to-token exchange - - Token storage back to the service record's credentials - -2. **OauthController** provides two endpoints: - - `task=oauth.authorize` → redirects to the platform's auth page - - `task=oauth.callback` → handles the redirect, exchanges code for token - -3. Plugin params store the OAuth Client ID and Secret (set in Extensions → Plugins) - -4. In `edit.php`, services listed in `$oauthServices` get a "Connect to {Service}" button - -## Testing Your Plugin - -1. **Syntax check**: `php -l source/packages/plg_mokosuitecross_myservice/src/Extension/MyServiceService.php` -2. **Install**: Include the plugin in `pkg_mokosuitecross.xml` or install the plugin ZIP standalone -3. **Enable**: Extensions → Plugins → search "mokosuitecross myservice" → Enable -4. **Add service**: Components → MokoSuiteCross → Services → New → select your service type -5. **Verify fields**: Confirm your credential fields appear when your service type is selected -6. **Test post**: Publish an article and check the Post Queue for results - -## Example: Building a "Fediverse" Service - -Imagine building a service for a Mastodon-compatible platform: - -```php -public function publish(string $message, array $media, array $credentials, array $params): array -{ - $instanceUrl = rtrim($credentials['instance_url'] ?? '', '/'); - $token = $credentials['access_token'] ?? ''; - - $ch = curl_init($instanceUrl . '/api/v1/statuses'); - curl_setopt_array($ch, [ - CURLOPT_POST => true, - CURLOPT_POSTFIELDS => json_encode(['status' => $message]), - CURLOPT_HTTPHEADER => [ - 'Content-Type: application/json', - 'Authorization: Bearer ' . $token, - ], - CURLOPT_RETURNTRANSFER => true, - CURLOPT_TIMEOUT => 30, - ]); - - $response = curl_exec($ch); - $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - curl_close($ch); - - $data = json_decode($response, true) ?: []; - - if ($httpCode === 200 && !empty($data['id'])) { - return ['success' => true, 'platform_post_id' => $data['id'], 'response' => $data]; - } - - return ['success' => false, 'platform_post_id' => '', 'response' => $data]; -} -``` - -This pattern — curl to API, check response code, return structured result — is the same for every service plugin. The only differences are the API endpoint, authentication method, and payload format. diff --git a/wiki/developer/REST-API.md b/wiki/developer/REST-API.md deleted file mode 100644 index 6059b28..0000000 --- a/wiki/developer/REST-API.md +++ /dev/null @@ -1,57 +0,0 @@ -# REST API - -MokoSuiteCross includes a WebServices plugin that provides REST API endpoints via Joomla's API application. - -## Authentication - -All endpoints require a Joomla API token. Generate one in **Users → Manage → [User] → API Tokens**. - -Include the token in the `Authorization` header: - -``` -Authorization: Bearer YOUR_API_TOKEN -``` - -## Base URL - -``` -https://yoursite.com/api/index.php/v1/mokosuitecross/ -``` - -## Endpoints - -### Posts - -| Method | Endpoint | Description | -|--------|----------|-------------| -| GET | `/v1/mokosuitecross/posts` | List all cross-posts | -| GET | `/v1/mokosuitecross/posts/:id` | Get single post details | -| POST | `/v1/mokosuitecross/posts` | Create a cross-post entry | -| DELETE | `/v1/mokosuitecross/posts/:id` | Delete a post | - -### Services - -| Method | Endpoint | Description | -|--------|----------|-------------| -| GET | `/v1/mokosuitecross/services` | List connected services | -| GET | `/v1/mokosuitecross/services/:id` | Get service details | - -## Example - -```bash -# List all posts -curl -H "Authorization: Bearer YOUR_TOKEN" \ - https://yoursite.com/api/index.php/v1/mokosuitecross/posts - -# List services -curl -H "Authorization: Bearer YOUR_TOKEN" \ - https://yoursite.com/api/index.php/v1/mokosuitecross/services -``` - -## Filtering - -Posts support query parameters: -- `filter[status]=posted` — Filter by status (queued, posting, posted, failed, scheduled) -- `filter[service_id]=5` — Filter by service -- `page[limit]=20` — Pagination limit -- `page[offset]=0` — Pagination offset diff --git a/wiki/getting-started/Configuration.md b/wiki/getting-started/Configuration.md deleted file mode 100644 index 40f2105..0000000 --- a/wiki/getting-started/Configuration.md +++ /dev/null @@ -1,39 +0,0 @@ -# Configuration - -Navigate to **Components → MokoSuiteCross** to access the admin panel. - -## Global Settings - -Go to **Options** (toolbar gear icon) to configure: - -| Setting | Default | Description | -|---------|---------|-------------| -| Auto-post on Publish | Yes | Automatically cross-post when articles are published | -| Max Retries | 3 | How many times to retry a failed post | -| Retry Delay | 300s | Seconds between retry attempts | -| Log Retention | 90 days | How long to keep activity logs | -| Default Template | `{title}\n\n{introtext}\n\n{url}` | Fallback message template | - -## Message Templates - -Templates use placeholders that are replaced with article data: - -| Placeholder | Description | -|-------------|-------------| -| `{title}` | Article title | -| `{url}` | Full article URL | -| `{introtext}` | Article intro text (stripped of HTML, max 280 chars) | -| `{image}` | Article intro image URL | -| `{category}` | Article category name | -| `{author}` | Article author name | - -You can create per-platform templates. The system checks for a platform-specific template first, then falls back to the default. - -## Service Modes - -Services that support universal bots offer two modes: - -- **Default Mode** — Uses the pre-configured MokoSuite bot/app. API keys are stored in the component's encrypted global params and never exposed in the individual service record. -- **Custom Mode** — You provide your own API keys, tokens, and credentials. - -Services supporting default mode: **Telegram** (@mokosuite_bot), **Facebook**, **Discord**, **Slack** diff --git a/wiki/getting-started/Installation.md b/wiki/getting-started/Installation.md deleted file mode 100644 index 9085192..0000000 --- a/wiki/getting-started/Installation.md +++ /dev/null @@ -1,33 +0,0 @@ -# Installation - -## Requirements - -- Joomla 5.x or 6.x -- PHP 8.1+ -- cURL extension enabled - -## Install - -1. Download the latest `pkg_mokosuitecross-*.zip` from [Releases](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteCross/releases) -2. In Joomla Administrator → **Extensions → Install → Upload Package File** -3. Upload and install the package - -The installer automatically: -- Enables the system plugin (triggers cross-posting on article publish) -- Enables the content plugin (shows cross-post status badges in admin) -- Enables the webservices plugin (REST API) -- Enables all service plugins in the `mokosuitecross` group - -## Migrating from Perfect Publisher Pro - -If Perfect Publisher Pro is installed, MokoSuiteCross detects it and offers one-click migration: - -1. Install MokoSuiteCross (PP Pro can remain installed) -2. Navigate to **Components → MokoSuiteCross → Dashboard** -3. Click **"Migrate from Perfect Publisher Pro"** -4. Review detected services and confirm import -5. Imported services are created in **disabled** state — verify credentials before enabling - -## Uninstall - -Uninstalling the package removes all MokoSuiteCross database tables and data. Export any needed data before uninstalling. diff --git a/wiki/services/Telegram.md b/wiki/services/Telegram.md deleted file mode 100644 index 144a062..0000000 --- a/wiki/services/Telegram.md +++ /dev/null @@ -1,62 +0,0 @@ -# Telegram Service - -Cross-post Joomla articles to Telegram channels, groups, or users. - -## Setup - -### Default Bot (@mokosuite_bot) - -1. Add MokoSuiteCross service with type **Telegram** -2. Set mode to **Default** -3. Enter your **Chat ID** (channel, group, or user) -4. Add @mokosuite_bot to your channel/group as admin - -The default bot token is embedded in the plugin and hidden from the admin UI. No API key configuration is needed. - -### Custom Bot - -1. Create a bot via [@BotFather](https://t.me/BotFather) -2. Add MokoSuiteCross service with type **Telegram** -3. Set mode to **Custom** -4. Enter your Bot Token and Chat ID -5. Add your bot to the target channel/group as admin - -## Credentials Format - -```json -{ - "mode": "default", - "chat_id": "-100xxxxxxxxxx" -} -``` - -Or for custom bot: - -```json -{ - "mode": "custom", - "bot_token": "123456:ABC-DEF...", - "chat_id": "-100xxxxxxxxxx" -} -``` - -## Finding Your Chat ID - -- **Channel**: Forward a message from your channel to @userinfobot -- **Group**: Add @userinfobot to the group temporarily -- **User**: Send a message to @userinfobot - -Channel IDs typically start with `-100`. - -## Plugin Settings - -Configure defaults in **Extensions → Plugins → MokoSuiteCross - Telegram**: - -| Setting | Default | Description | -|---------|---------|-------------| -| Message Format | HTML | Parse mode (HTML, Markdown, MarkdownV2) | -| Disable Link Preview | No | Disable automatic link preview | - -## Character Limit - -Telegram supports up to **4,096 characters** per message. diff --git a/wiki/user-guide/Message-Templates.md b/wiki/user-guide/Message-Templates.md deleted file mode 100644 index 2913d2a..0000000 --- a/wiki/user-guide/Message-Templates.md +++ /dev/null @@ -1,77 +0,0 @@ -# Message Templates - -MokoSuiteCross uses message templates to format the content sent to each platform. Templates support placeholders that are replaced with article data at post time. - -## Managing Templates - -Navigate to **Components → MokoSuiteCross → Templates** to create and edit templates. - -## Template Priority - -When cross-posting, the system looks for templates in this order: -1. **Platform-specific template** — matches the service type exactly (e.g., "twitter") -2. **Default template** — fallback used when no platform-specific template exists - -## Available Placeholders - -| Placeholder | Description | Example | -|-------------|-------------|---------| -| `{title}` | Article title | "New Product Launch" | -| `{url}` | Full article URL | "https://example.com/article/123" | -| `{introtext}` | Intro text (280 chars, HTML stripped) | "We're excited to announce..." | -| `{fulltext}` | Full text (500 chars, HTML stripped) | Extended content | -| `{image}` | Intro image full URL | "https://example.com/images/photo.jpg" | -| `{category}` | Article category name | "News" | -| `{author}` | Author display name | "John Smith" | -| `{date}` | Publish date (YYYY-MM-DD) | "2026-05-28" | - -## Example Templates - -### Default (all platforms) -``` -{title} - -{introtext} - -{url} -``` - -### Twitter / X (280 char limit) -``` -{title} - -{url} -``` - -### Mastodon (with hashtags) -``` -{title} - -{introtext} - -{url} - -#Joomla #{category} -``` - -### Mailchimp (HTML email) -```html -

{title}

-

{introtext}

-

Read the full article

-``` - -### Telegram (HTML format) -```html -{title} - -{introtext} - -Read more -``` - -## Per-Article Override - -In the article editor, the **Cross-Posting** tab lets you: -- Skip cross-posting entirely for a specific article -- Select which services to post to (instead of all enabled services) diff --git a/wiki/user-guide/Services.md b/wiki/user-guide/Services.md deleted file mode 100644 index 7034215..0000000 --- a/wiki/user-guide/Services.md +++ /dev/null @@ -1,60 +0,0 @@ -# Services - -MokoSuiteCross supports 9 platforms. Each is a separate plugin that can be enabled or disabled independently. - -## Social Media - -| Platform | Plugin | Character Limit | Media | Default Bot | -|----------|--------|----------------|-------|-------------| -| **Facebook** | plg_mokosuitecross_facebook | No limit | Yes | Yes | -| **X / Twitter** | plg_mokosuitecross_twitter | 280 | Yes | No | -| **LinkedIn** | plg_mokosuitecross_linkedin | 3,000 | Yes | No | -| **Mastodon** | plg_mokosuitecross_mastodon | 500 | Yes | No | -| **Bluesky** | plg_mokosuitecross_bluesky | 300 | Yes | No | - -## Email Marketing - -| Platform | Plugin | Character Limit | Media | Default Bot | -|----------|--------|----------------|-------|-------------| -| **Mailchimp** | plg_mokosuitecross_mailchimp | No limit | Yes | No | - -## Chat / Messaging - -| Platform | Plugin | Character Limit | Media | Default Bot | -|----------|--------|----------------|-------|-------------| -| **Telegram** | plg_mokosuitecross_telegram | 4,096 | Yes | Yes (@mokosuite_bot) | -| **Discord** | plg_mokosuitecross_discord | 2,000 | Yes | Yes (webhook) | -| **Slack** | plg_mokosuitecross_slack | 40,000 | Yes | Yes (webhook) | - -## Default vs Custom Mode - -Services with "Default Bot" support offer two operating modes: - -- **Default Mode**: Uses a pre-configured bot/app token managed by Moko. The admin only needs to provide a destination (chat ID, page ID, etc.). The API key is stored in the plugin's configuration and never visible in the service record. - -- **Custom Mode**: The admin provides their own API keys, tokens, or webhook URLs. Full control, but requires setting up your own app/bot on the platform. - -Configure default tokens in **Extensions → Plugins → MokoSuiteCross - [Platform]**. - -## Adding a Service - -1. Go to **Components → MokoSuiteCross → Services** -2. Click **New** -3. Select the service type -4. Enter a title and choose credentials mode -5. For **Default mode**: enter only the destination (chat ID, channel, etc.) -6. For **Custom mode**: enter your full API credentials as JSON -7. Save and enable - -## Credentials Format - -Each service expects specific JSON fields. See the individual service pages: -- [[Telegram]] — bot_token, chat_id -- [[Facebook]] — page_access_token, page_id -- [[Discord]] — webhook_url -- [[Slack]] — webhook_url -- [[LinkedIn]] — access_token, organization_id -- [[Mastodon]] — instance_url, access_token -- [[Bluesky]] — handle, app_password -- [[Mailchimp]] — api_key, list_id -- [[Twitter (X)]] — bearer_token, api_key, api_secret diff --git a/wiki/user-guide/Troubleshooting.md b/wiki/user-guide/Troubleshooting.md deleted file mode 100644 index 352eb25..0000000 --- a/wiki/user-guide/Troubleshooting.md +++ /dev/null @@ -1,48 +0,0 @@ -# Troubleshooting - -## Posts Stuck in "Queued" Status - -**Cause**: The queue processor isn't running. - -**Fix**: -1. Check **Components → MokoSuiteCross → Options → Queue Processing** — ensure it's set to "Scheduler" or "Both" -2. If using Scheduler: verify a task exists in **System → Scheduled Tasks** of type "MokoSuiteCross - Process Queue" -3. If using Page-load: ensure the system plugin is enabled and check the throttle interval - -## Posts Failing - -**Cause**: Invalid credentials or platform API changes. - -**Fix**: -1. Check the error message in **Components → MokoSuiteCross → Post Queue** (hover over the red "Failed" badge) -2. Check **Activity Logs** for detailed error messages -3. Go to **Services** and verify credentials -4. For services using Default mode, check the plugin params in **Extensions → Plugins** - -## "No service plugin found" Warning - -**Cause**: The service plugin for that platform is disabled. - -**Fix**: Go to **Extensions → Plugins**, search for "MokoSuiteCross", and enable the relevant service plugin. - -## Cross-posting Not Triggering on Publish - -**Cause**: Auto-post is disabled or system plugin is inactive. - -**Fix**: -1. Check **Components → MokoSuiteCross → Options** — "Auto-post on Publish" should be "Yes" -2. Verify **Extensions → Plugins → System - MokoSuiteCross** is enabled -3. Check that at least one service is configured and enabled - -## Duplicate Posts - -MokoSuiteCross has a built-in duplicate guard. If you're seeing duplicates: -1. Check if the article was saved multiple times in quick succession -2. Check if both page-load and scheduler are running (shouldn't cause duplicates, but verify) -3. Review the **Activity Logs** for the article in question - -## OAuth Connection Failing - -1. Verify the OAuth Client ID and Secret are correct in the plugin params -2. Check that the redirect URI matches: `https://yoursite.com/administrator/index.php?option=com_mokosuitecross&task=oauth.callback` -3. Ensure your Joomla site uses HTTPS (required by most OAuth providers) -- 2.52.0 From ac8a64c4c1781939cf6f2174a061a08feadf2168 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Tue, 23 Jun 2026 11:44:55 -0500 Subject: [PATCH 2/5] fix: license key warning no longer shows during uninstall Check if com_mokosuitecross is still in #__extensions before warning about missing license key. Prevents the warning from firing during package uninstall when the update site row is already deleted. --- CHANGELOG.md | 1 + .../src/Extension/MokoSuiteCross.php | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 402b40d..d76f147 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ - **Medium**: Fixed getUserId() returning array instead of string on error - **Bluesky**: Replaced md5() with hash('sha256', ...) for cache key - **ServiceController**: Exception details no longer exposed to client +- **License warning**: No longer shows during extension uninstall when component is being removed ## [01.04.01] --- 2026-06-21 diff --git a/source/packages/plg_system_mokosuitecross/src/Extension/MokoSuiteCross.php b/source/packages/plg_system_mokosuitecross/src/Extension/MokoSuiteCross.php index 44626b5..2c94b8e 100644 --- a/source/packages/plg_system_mokosuitecross/src/Extension/MokoSuiteCross.php +++ b/source/packages/plg_system_mokosuitecross/src/Extension/MokoSuiteCross.php @@ -117,6 +117,19 @@ class MokoSuiteCross extends CMSPlugin implements SubscriberInterface try { $db = Factory::getDbo(); + // Don't warn if the component is not installed (e.g. during uninstall) + $componentExists = $db->setQuery( + $db->getQuery(true) + ->select('COUNT(*)') + ->from($db->quoteName('#__extensions')) + ->where($db->quoteName('type') . ' = ' . $db->quote('component')) + ->where($db->quoteName('element') . ' = ' . $db->quote('com_mokosuitecross')) + )->loadResult(); + + if (!$componentExists) { + return; + } + $query = $db->getQuery(true) ->select($db->quoteName('extra_query')) ->from($db->quoteName('#__update_sites')) -- 2.52.0 From 166a6366f874fa3275b141e6253b0244ab24de4e Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Tue, 23 Jun 2026 16:45:37 +0000 Subject: [PATCH 3/5] chore(version): pre-release bump to 01.05.01-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- README.md | 2 +- source/packages/com_mokosuitecross/mokosuitecross.xml | 2 +- source/packages/plg_content_mokosuitecross/mokosuitecross.xml | 2 +- source/packages/plg_mokosuitecross_activitypub/activitypub.xml | 2 +- source/packages/plg_mokosuitecross_blogger/blogger.xml | 2 +- source/packages/plg_mokosuitecross_bluesky/bluesky.xml | 2 +- source/packages/plg_mokosuitecross_brevo/brevo.xml | 2 +- .../plg_mokosuitecross_constantcontact/constantcontact.xml | 2 +- source/packages/plg_mokosuitecross_convertkit/convertkit.xml | 2 +- source/packages/plg_mokosuitecross_devto/devto.xml | 2 +- source/packages/plg_mokosuitecross_discord/discord.xml | 2 +- source/packages/plg_mokosuitecross_facebook/facebook.xml | 2 +- source/packages/plg_mokosuitecross_ghost/ghost.xml | 2 +- .../plg_mokosuitecross_googlebusiness/googlebusiness.xml | 2 +- source/packages/plg_mokosuitecross_googlechat/googlechat.xml | 2 +- source/packages/plg_mokosuitecross_hashnode/hashnode.xml | 2 +- source/packages/plg_mokosuitecross_instagram/instagram.xml | 2 +- source/packages/plg_mokosuitecross_linkedin/linkedin.xml | 2 +- source/packages/plg_mokosuitecross_mailchimp/mailchimp.xml | 2 +- source/packages/plg_mokosuitecross_mastodon/mastodon.xml | 2 +- source/packages/plg_mokosuitecross_matrix/matrix.xml | 2 +- source/packages/plg_mokosuitecross_medium/medium.xml | 2 +- .../plg_mokosuitecross_mokosuitecalendar/mokosuitecalendar.xml | 2 +- .../plg_mokosuitecross_mokosuitegallery/mokosuitegallery.xml | 2 +- source/packages/plg_mokosuitecross_nostr/nostr.xml | 2 +- source/packages/plg_mokosuitecross_ntfy/ntfy.xml | 2 +- source/packages/plg_mokosuitecross_pinterest/pinterest.xml | 2 +- source/packages/plg_mokosuitecross_reddit/reddit.xml | 2 +- source/packages/plg_mokosuitecross_rssfeed/rssfeed.xml | 2 +- source/packages/plg_mokosuitecross_sendgrid/sendgrid.xml | 2 +- source/packages/plg_mokosuitecross_slack/slack.xml | 2 +- source/packages/plg_mokosuitecross_teams/teams.xml | 2 +- source/packages/plg_mokosuitecross_telegram/telegram.xml | 2 +- source/packages/plg_mokosuitecross_threads/threads.xml | 2 +- source/packages/plg_mokosuitecross_tiktok/tiktok.xml | 2 +- source/packages/plg_mokosuitecross_tumblr/tumblr.xml | 2 +- source/packages/plg_mokosuitecross_twitter/twitter.xml | 2 +- source/packages/plg_mokosuitecross_webhook/webhook.xml | 2 +- source/packages/plg_mokosuitecross_whatsapp/whatsapp.xml | 2 +- source/packages/plg_mokosuitecross_wordpress/wordpress.xml | 2 +- source/packages/plg_mokosuitecross_youtube/youtube.xml | 2 +- source/packages/plg_system_mokosuitecross/mokosuitecross.xml | 2 +- .../plg_system_mokosuitecross_events/mokosuitecross_events.xml | 2 +- .../mokosuitecross_gallery.xml | 2 +- source/packages/plg_task_mokosuitecross/mokosuitecross.xml | 2 +- .../packages/plg_webservices_mokosuitecross/mokosuitecross.xml | 2 +- source/pkg_mokosuitecross.xml | 2 +- 50 files changed, 50 insertions(+), 50 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index adc9f5b..d5ccc0d 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -5,7 +5,7 @@ Package - MokoSuiteCross MokoConsulting Cross-posting Joomla content to social media, email marketing, and chat platforms - 01.04.12 + 01.05.01 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index da9d64e..3aea2aa 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.04.12 +# VERSION: 01.05.01 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index d76f147..a90d9f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,7 +48,7 @@ ## [01.03.00] --- 2026-06-21 - + All notable changes to MokoSuiteCross will be documented in this file. diff --git a/README.md b/README.md index a25625f..0998009 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteCross - + Cross-posting Joomla content to social media, email marketing, and chat platforms for Joomla 5/6. diff --git a/source/packages/com_mokosuitecross/mokosuitecross.xml b/source/packages/com_mokosuitecross/mokosuitecross.xml index c7dbc1c..ebb16bd 100644 --- a/source/packages/com_mokosuitecross/mokosuitecross.xml +++ b/source/packages/com_mokosuitecross/mokosuitecross.xml @@ -1,7 +1,7 @@ com_mokosuitecross - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_content_mokosuitecross/mokosuitecross.xml b/source/packages/plg_content_mokosuitecross/mokosuitecross.xml index 730ac92..b17b3f7 100644 --- a/source/packages/plg_content_mokosuitecross/mokosuitecross.xml +++ b/source/packages/plg_content_mokosuitecross/mokosuitecross.xml @@ -1,7 +1,7 @@ Content - MokoSuiteCross - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_activitypub/activitypub.xml b/source/packages/plg_mokosuitecross_activitypub/activitypub.xml index 1dd3a10..306c251 100644 --- a/source/packages/plg_mokosuitecross_activitypub/activitypub.xml +++ b/source/packages/plg_mokosuitecross_activitypub/activitypub.xml @@ -1,7 +1,7 @@ MokoSuiteCross - ActivityPub (Fediverse) - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_blogger/blogger.xml b/source/packages/plg_mokosuitecross_blogger/blogger.xml index 3595095..8f6b81d 100644 --- a/source/packages/plg_mokosuitecross_blogger/blogger.xml +++ b/source/packages/plg_mokosuitecross_blogger/blogger.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Google Blogger - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_bluesky/bluesky.xml b/source/packages/plg_mokosuitecross_bluesky/bluesky.xml index 1364e65..dd8a3b9 100644 --- a/source/packages/plg_mokosuitecross_bluesky/bluesky.xml +++ b/source/packages/plg_mokosuitecross_bluesky/bluesky.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Bluesky - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_brevo/brevo.xml b/source/packages/plg_mokosuitecross_brevo/brevo.xml index 29848a8..d50b334 100644 --- a/source/packages/plg_mokosuitecross_brevo/brevo.xml +++ b/source/packages/plg_mokosuitecross_brevo/brevo.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Brevo (Sendinblue) - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_constantcontact/constantcontact.xml b/source/packages/plg_mokosuitecross_constantcontact/constantcontact.xml index 920c09b..b9c6bb6 100644 --- a/source/packages/plg_mokosuitecross_constantcontact/constantcontact.xml +++ b/source/packages/plg_mokosuitecross_constantcontact/constantcontact.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Constant Contact - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_convertkit/convertkit.xml b/source/packages/plg_mokosuitecross_convertkit/convertkit.xml index ff9e718..1d2fd0f 100644 --- a/source/packages/plg_mokosuitecross_convertkit/convertkit.xml +++ b/source/packages/plg_mokosuitecross_convertkit/convertkit.xml @@ -1,7 +1,7 @@ MokoSuiteCross - ConvertKit - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_devto/devto.xml b/source/packages/plg_mokosuitecross_devto/devto.xml index 18ac26b..0785a9f 100644 --- a/source/packages/plg_mokosuitecross_devto/devto.xml +++ b/source/packages/plg_mokosuitecross_devto/devto.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Dev.to - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_discord/discord.xml b/source/packages/plg_mokosuitecross_discord/discord.xml index e01b373..508d311 100644 --- a/source/packages/plg_mokosuitecross_discord/discord.xml +++ b/source/packages/plg_mokosuitecross_discord/discord.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Discord - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_facebook/facebook.xml b/source/packages/plg_mokosuitecross_facebook/facebook.xml index 064ccd6..ad48f4e 100644 --- a/source/packages/plg_mokosuitecross_facebook/facebook.xml +++ b/source/packages/plg_mokosuitecross_facebook/facebook.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Facebook / Meta - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_ghost/ghost.xml b/source/packages/plg_mokosuitecross_ghost/ghost.xml index a41eb23..100f01c 100644 --- a/source/packages/plg_mokosuitecross_ghost/ghost.xml +++ b/source/packages/plg_mokosuitecross_ghost/ghost.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Ghost - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_googlebusiness/googlebusiness.xml b/source/packages/plg_mokosuitecross_googlebusiness/googlebusiness.xml index 3988dbd..fde0c1f 100644 --- a/source/packages/plg_mokosuitecross_googlebusiness/googlebusiness.xml +++ b/source/packages/plg_mokosuitecross_googlebusiness/googlebusiness.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Google Business Profile - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_googlechat/googlechat.xml b/source/packages/plg_mokosuitecross_googlechat/googlechat.xml index a9c46fa..23753bf 100644 --- a/source/packages/plg_mokosuitecross_googlechat/googlechat.xml +++ b/source/packages/plg_mokosuitecross_googlechat/googlechat.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Google Chat - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_hashnode/hashnode.xml b/source/packages/plg_mokosuitecross_hashnode/hashnode.xml index 38f5a5a..98c73dd 100644 --- a/source/packages/plg_mokosuitecross_hashnode/hashnode.xml +++ b/source/packages/plg_mokosuitecross_hashnode/hashnode.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Hashnode - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_instagram/instagram.xml b/source/packages/plg_mokosuitecross_instagram/instagram.xml index ed0a60f..d93a019 100644 --- a/source/packages/plg_mokosuitecross_instagram/instagram.xml +++ b/source/packages/plg_mokosuitecross_instagram/instagram.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Instagram - 01.04.12-dev + 01.05.01-dev 2026-06-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_linkedin/linkedin.xml b/source/packages/plg_mokosuitecross_linkedin/linkedin.xml index fef965a..a572214 100644 --- a/source/packages/plg_mokosuitecross_linkedin/linkedin.xml +++ b/source/packages/plg_mokosuitecross_linkedin/linkedin.xml @@ -1,7 +1,7 @@ MokoSuiteCross - LinkedIn - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_mailchimp/mailchimp.xml b/source/packages/plg_mokosuitecross_mailchimp/mailchimp.xml index cc034b9..eba60ba 100644 --- a/source/packages/plg_mokosuitecross_mailchimp/mailchimp.xml +++ b/source/packages/plg_mokosuitecross_mailchimp/mailchimp.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Mailchimp - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_mastodon/mastodon.xml b/source/packages/plg_mokosuitecross_mastodon/mastodon.xml index 9cc84e5..44ba098 100644 --- a/source/packages/plg_mokosuitecross_mastodon/mastodon.xml +++ b/source/packages/plg_mokosuitecross_mastodon/mastodon.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Mastodon - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_matrix/matrix.xml b/source/packages/plg_mokosuitecross_matrix/matrix.xml index c4f16a3..5b70557 100644 --- a/source/packages/plg_mokosuitecross_matrix/matrix.xml +++ b/source/packages/plg_mokosuitecross_matrix/matrix.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Matrix / Element - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_medium/medium.xml b/source/packages/plg_mokosuitecross_medium/medium.xml index 6be06f2..5b68023 100644 --- a/source/packages/plg_mokosuitecross_medium/medium.xml +++ b/source/packages/plg_mokosuitecross_medium/medium.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Medium - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_mokosuitecalendar/mokosuitecalendar.xml b/source/packages/plg_mokosuitecross_mokosuitecalendar/mokosuitecalendar.xml index 3ee603c..5e9c3d6 100644 --- a/source/packages/plg_mokosuitecross_mokosuitecalendar/mokosuitecalendar.xml +++ b/source/packages/plg_mokosuitecross_mokosuitecalendar/mokosuitecalendar.xml @@ -1,7 +1,7 @@ MokoSuiteCross - MokoSuiteCalendar Events - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_mokosuitegallery/mokosuitegallery.xml b/source/packages/plg_mokosuitecross_mokosuitegallery/mokosuitegallery.xml index 34516bf..b03fce6 100644 --- a/source/packages/plg_mokosuitecross_mokosuitegallery/mokosuitegallery.xml +++ b/source/packages/plg_mokosuitecross_mokosuitegallery/mokosuitegallery.xml @@ -1,7 +1,7 @@ MokoSuiteCross - MokoSuiteGallery - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_nostr/nostr.xml b/source/packages/plg_mokosuitecross_nostr/nostr.xml index b08e054..3a18fb5 100644 --- a/source/packages/plg_mokosuitecross_nostr/nostr.xml +++ b/source/packages/plg_mokosuitecross_nostr/nostr.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Nostr - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_ntfy/ntfy.xml b/source/packages/plg_mokosuitecross_ntfy/ntfy.xml index 43f60f7..b16917f 100644 --- a/source/packages/plg_mokosuitecross_ntfy/ntfy.xml +++ b/source/packages/plg_mokosuitecross_ntfy/ntfy.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Ntfy Push Notifications - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_pinterest/pinterest.xml b/source/packages/plg_mokosuitecross_pinterest/pinterest.xml index 2781b8c..9610662 100644 --- a/source/packages/plg_mokosuitecross_pinterest/pinterest.xml +++ b/source/packages/plg_mokosuitecross_pinterest/pinterest.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Pinterest - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_reddit/reddit.xml b/source/packages/plg_mokosuitecross_reddit/reddit.xml index 62273a6..04e3c56 100644 --- a/source/packages/plg_mokosuitecross_reddit/reddit.xml +++ b/source/packages/plg_mokosuitecross_reddit/reddit.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Reddit - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_rssfeed/rssfeed.xml b/source/packages/plg_mokosuitecross_rssfeed/rssfeed.xml index 15bc7c2..13386d7 100644 --- a/source/packages/plg_mokosuitecross_rssfeed/rssfeed.xml +++ b/source/packages/plg_mokosuitecross_rssfeed/rssfeed.xml @@ -1,7 +1,7 @@ MokoSuiteCross - RSS Feed - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_sendgrid/sendgrid.xml b/source/packages/plg_mokosuitecross_sendgrid/sendgrid.xml index 7134a3a..67c9926 100644 --- a/source/packages/plg_mokosuitecross_sendgrid/sendgrid.xml +++ b/source/packages/plg_mokosuitecross_sendgrid/sendgrid.xml @@ -1,7 +1,7 @@ MokoSuiteCross - SendGrid - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_slack/slack.xml b/source/packages/plg_mokosuitecross_slack/slack.xml index 2c82a94..e580579 100644 --- a/source/packages/plg_mokosuitecross_slack/slack.xml +++ b/source/packages/plg_mokosuitecross_slack/slack.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Slack - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_teams/teams.xml b/source/packages/plg_mokosuitecross_teams/teams.xml index 0e54111..17b5305 100644 --- a/source/packages/plg_mokosuitecross_teams/teams.xml +++ b/source/packages/plg_mokosuitecross_teams/teams.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Microsoft Teams - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_telegram/telegram.xml b/source/packages/plg_mokosuitecross_telegram/telegram.xml index 53b0359..cc29545 100644 --- a/source/packages/plg_mokosuitecross_telegram/telegram.xml +++ b/source/packages/plg_mokosuitecross_telegram/telegram.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Telegram - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_threads/threads.xml b/source/packages/plg_mokosuitecross_threads/threads.xml index f8ed58c..05f831c 100644 --- a/source/packages/plg_mokosuitecross_threads/threads.xml +++ b/source/packages/plg_mokosuitecross_threads/threads.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Threads (Meta) - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_tiktok/tiktok.xml b/source/packages/plg_mokosuitecross_tiktok/tiktok.xml index cc297f9..697719e 100644 --- a/source/packages/plg_mokosuitecross_tiktok/tiktok.xml +++ b/source/packages/plg_mokosuitecross_tiktok/tiktok.xml @@ -1,7 +1,7 @@ MokoSuiteCross - TikTok - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_tumblr/tumblr.xml b/source/packages/plg_mokosuitecross_tumblr/tumblr.xml index 1504b8d..3cee58c 100644 --- a/source/packages/plg_mokosuitecross_tumblr/tumblr.xml +++ b/source/packages/plg_mokosuitecross_tumblr/tumblr.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Tumblr - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_twitter/twitter.xml b/source/packages/plg_mokosuitecross_twitter/twitter.xml index 0cc7a77..4bad22f 100644 --- a/source/packages/plg_mokosuitecross_twitter/twitter.xml +++ b/source/packages/plg_mokosuitecross_twitter/twitter.xml @@ -1,7 +1,7 @@ MokoSuiteCross - X / Twitter - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_webhook/webhook.xml b/source/packages/plg_mokosuitecross_webhook/webhook.xml index 2307377..c04f836 100644 --- a/source/packages/plg_mokosuitecross_webhook/webhook.xml +++ b/source/packages/plg_mokosuitecross_webhook/webhook.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Generic Webhook - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_whatsapp/whatsapp.xml b/source/packages/plg_mokosuitecross_whatsapp/whatsapp.xml index 5e07b6a..b716e5e 100644 --- a/source/packages/plg_mokosuitecross_whatsapp/whatsapp.xml +++ b/source/packages/plg_mokosuitecross_whatsapp/whatsapp.xml @@ -1,7 +1,7 @@ MokoSuiteCross - WhatsApp Business - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_wordpress/wordpress.xml b/source/packages/plg_mokosuitecross_wordpress/wordpress.xml index 06ef169..d90f3a2 100644 --- a/source/packages/plg_mokosuitecross_wordpress/wordpress.xml +++ b/source/packages/plg_mokosuitecross_wordpress/wordpress.xml @@ -1,7 +1,7 @@ MokoSuiteCross - WordPress - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_youtube/youtube.xml b/source/packages/plg_mokosuitecross_youtube/youtube.xml index 2c2b902..1e6073c 100644 --- a/source/packages/plg_mokosuitecross_youtube/youtube.xml +++ b/source/packages/plg_mokosuitecross_youtube/youtube.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Youtube - 01.04.12-dev + 01.05.01-dev 2026-06-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokosuitecross/mokosuitecross.xml b/source/packages/plg_system_mokosuitecross/mokosuitecross.xml index 5d358cb..bced1ab 100644 --- a/source/packages/plg_system_mokosuitecross/mokosuitecross.xml +++ b/source/packages/plg_system_mokosuitecross/mokosuitecross.xml @@ -1,7 +1,7 @@ System - MokoSuiteCross - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokosuitecross_events/mokosuitecross_events.xml b/source/packages/plg_system_mokosuitecross_events/mokosuitecross_events.xml index c8b8972..9286ce7 100644 --- a/source/packages/plg_system_mokosuitecross_events/mokosuitecross_events.xml +++ b/source/packages/plg_system_mokosuitecross_events/mokosuitecross_events.xml @@ -1,7 +1,7 @@ System - MokoSuiteCross Events - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokosuitecross_gallery/mokosuitecross_gallery.xml b/source/packages/plg_system_mokosuitecross_gallery/mokosuitecross_gallery.xml index 54aaaf7..d4a3cfd 100644 --- a/source/packages/plg_system_mokosuitecross_gallery/mokosuitecross_gallery.xml +++ b/source/packages/plg_system_mokosuitecross_gallery/mokosuitecross_gallery.xml @@ -1,7 +1,7 @@ System - MokoSuiteCross Gallery - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_task_mokosuitecross/mokosuitecross.xml b/source/packages/plg_task_mokosuitecross/mokosuitecross.xml index 7a71d5a..ead5a74 100644 --- a/source/packages/plg_task_mokosuitecross/mokosuitecross.xml +++ b/source/packages/plg_task_mokosuitecross/mokosuitecross.xml @@ -1,7 +1,7 @@ Task - MokoSuiteCross Queue Processor - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokosuitecross/mokosuitecross.xml b/source/packages/plg_webservices_mokosuitecross/mokosuitecross.xml index f38e01a..b405974 100644 --- a/source/packages/plg_webservices_mokosuitecross/mokosuitecross.xml +++ b/source/packages/plg_webservices_mokosuitecross/mokosuitecross.xml @@ -1,7 +1,7 @@ Web Services - MokoSuiteCross - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokosuitecross.xml b/source/pkg_mokosuitecross.xml index 4dc6d41..f0d8070 100644 --- a/source/pkg_mokosuitecross.xml +++ b/source/pkg_mokosuitecross.xml @@ -2,7 +2,7 @@ MokoSuiteCross mokosuitecross - 01.04.12-dev + 01.05.01-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech -- 2.52.0 From 70d2bab52d327b01394f9ec8c8d895f145109b31 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Tue, 23 Jun 2026 11:59:49 -0500 Subject: [PATCH 4/5] fix: remove duplicate license warning from system plugin The license key warning was firing twice: 1. Package install script (source/script.php) - has direct "Enter Key" button 2. System plugin (onAfterRoute) - every admin session, less actionable Removed #2 entirely. The install script version is better UX (button links directly to update site edit page) and only fires during install/update. Also eliminates the uninstall bug where the warning fired during removal. --- CHANGELOG.md | 2 +- .../src/Extension/MokoSuiteCross.php | 76 ------------------- 2 files changed, 1 insertion(+), 77 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a90d9f2..60668cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,7 +31,7 @@ - **Medium**: Fixed getUserId() returning array instead of string on error - **Bluesky**: Replaced md5() with hash('sha256', ...) for cache key - **ServiceController**: Exception details no longer exposed to client -- **License warning**: No longer shows during extension uninstall when component is being removed +- **License warning**: Removed duplicate from system plugin -- install script already shows it with direct edit link ## [01.04.01] --- 2026-06-21 diff --git a/source/packages/plg_system_mokosuitecross/src/Extension/MokoSuiteCross.php b/source/packages/plg_system_mokosuitecross/src/Extension/MokoSuiteCross.php index 2c94b8e..3cddf9a 100644 --- a/source/packages/plg_system_mokosuitecross/src/Extension/MokoSuiteCross.php +++ b/source/packages/plg_system_mokosuitecross/src/Extension/MokoSuiteCross.php @@ -34,20 +34,10 @@ class MokoSuiteCross extends CMSPlugin implements SubscriberInterface public static function getSubscribedEvents(): array { return [ - 'onAfterRoute' => 'onAfterRoute', 'onAfterRender' => 'onAfterRender', ]; } - public function onAfterRoute(): void - { - $app = $this->getApplication(); - - if ($app->isClient('administrator')) { - $this->warnMissingLicenseKey(); - } - } - /** * Process queued posts on page load (backend and/or frontend). * @@ -93,72 +83,6 @@ class MokoSuiteCross extends CMSPlugin implements SubscriberInterface \Joomla\Component\MokoSuiteCross\Administrator\Helper\QueueProcessor::processQueue(5); } - /** - * Warn administrators once per session when no license key is configured. - * - * @return void - */ - private function warnMissingLicenseKey(): void - { - $session = Factory::getSession(); - - if ($session->get('mokosuitecross.license_warned', false)) { - return; - } - - $user = Factory::getUser(); - - if ($user->guest || !$user->authorise('core.manage')) { - return; - } - - $session->set('mokosuitecross.license_warned', true); - - try { - $db = Factory::getDbo(); - - // Don't warn if the component is not installed (e.g. during uninstall) - $componentExists = $db->setQuery( - $db->getQuery(true) - ->select('COUNT(*)') - ->from($db->quoteName('#__extensions')) - ->where($db->quoteName('type') . ' = ' . $db->quote('component')) - ->where($db->quoteName('element') . ' = ' . $db->quote('com_mokosuitecross')) - )->loadResult(); - - if (!$componentExists) { - return; - } - - $query = $db->getQuery(true) - ->select($db->quoteName('extra_query')) - ->from($db->quoteName('#__update_sites')) - ->where($db->quoteName('name') . ' = ' . $db->quote('MokoSuiteCross Updates')) - ->setLimit(1); - $db->setQuery($query); - $extraQuery = (string) $db->loadResult(); - - if (!empty($extraQuery)) { - parse_str($extraQuery, $parsed); - - if (!empty($parsed['dlid']) && preg_match('/^MOKO-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}$/', $parsed['dlid'])) { - return; - } - } - - $this->getApplication()->enqueueMessage( - 'Moko Consulting License Key Required — ' - . 'No download key is configured. Updates will not be available until a valid license key is entered. ' - . 'Go to System → Update Sites ' - . 'and enter your license key (MOKO-XXXX-XXXX-XXXX-XXXX) in the Download Key field ' - . 'for the MokoSuiteCross update site.', - 'warning' - ); - } catch (\Throwable $e) { - // Don't break admin over a license check - } - } - /** * Store the last page-load run timestamp. */ -- 2.52.0 From 78cbd1f370ee1c14f6205fbe7c1b4bdc785c2212 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Tue, 23 Jun 2026 17:01:51 +0000 Subject: [PATCH 5/5] chore(version): pre-release bump to 01.05.02-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- README.md | 2 +- source/packages/com_mokosuitecross/mokosuitecross.xml | 2 +- source/packages/plg_content_mokosuitecross/mokosuitecross.xml | 2 +- source/packages/plg_mokosuitecross_activitypub/activitypub.xml | 2 +- source/packages/plg_mokosuitecross_blogger/blogger.xml | 2 +- source/packages/plg_mokosuitecross_bluesky/bluesky.xml | 2 +- source/packages/plg_mokosuitecross_brevo/brevo.xml | 2 +- .../plg_mokosuitecross_constantcontact/constantcontact.xml | 2 +- source/packages/plg_mokosuitecross_convertkit/convertkit.xml | 2 +- source/packages/plg_mokosuitecross_devto/devto.xml | 2 +- source/packages/plg_mokosuitecross_discord/discord.xml | 2 +- source/packages/plg_mokosuitecross_facebook/facebook.xml | 2 +- source/packages/plg_mokosuitecross_ghost/ghost.xml | 2 +- .../plg_mokosuitecross_googlebusiness/googlebusiness.xml | 2 +- source/packages/plg_mokosuitecross_googlechat/googlechat.xml | 2 +- source/packages/plg_mokosuitecross_hashnode/hashnode.xml | 2 +- source/packages/plg_mokosuitecross_instagram/instagram.xml | 2 +- source/packages/plg_mokosuitecross_linkedin/linkedin.xml | 2 +- source/packages/plg_mokosuitecross_mailchimp/mailchimp.xml | 2 +- source/packages/plg_mokosuitecross_mastodon/mastodon.xml | 2 +- source/packages/plg_mokosuitecross_matrix/matrix.xml | 2 +- source/packages/plg_mokosuitecross_medium/medium.xml | 2 +- .../plg_mokosuitecross_mokosuitecalendar/mokosuitecalendar.xml | 2 +- .../plg_mokosuitecross_mokosuitegallery/mokosuitegallery.xml | 2 +- source/packages/plg_mokosuitecross_nostr/nostr.xml | 2 +- source/packages/plg_mokosuitecross_ntfy/ntfy.xml | 2 +- source/packages/plg_mokosuitecross_pinterest/pinterest.xml | 2 +- source/packages/plg_mokosuitecross_reddit/reddit.xml | 2 +- source/packages/plg_mokosuitecross_rssfeed/rssfeed.xml | 2 +- source/packages/plg_mokosuitecross_sendgrid/sendgrid.xml | 2 +- source/packages/plg_mokosuitecross_slack/slack.xml | 2 +- source/packages/plg_mokosuitecross_teams/teams.xml | 2 +- source/packages/plg_mokosuitecross_telegram/telegram.xml | 2 +- source/packages/plg_mokosuitecross_threads/threads.xml | 2 +- source/packages/plg_mokosuitecross_tiktok/tiktok.xml | 2 +- source/packages/plg_mokosuitecross_tumblr/tumblr.xml | 2 +- source/packages/plg_mokosuitecross_twitter/twitter.xml | 2 +- source/packages/plg_mokosuitecross_webhook/webhook.xml | 2 +- source/packages/plg_mokosuitecross_whatsapp/whatsapp.xml | 2 +- source/packages/plg_mokosuitecross_wordpress/wordpress.xml | 2 +- source/packages/plg_mokosuitecross_youtube/youtube.xml | 2 +- source/packages/plg_system_mokosuitecross/mokosuitecross.xml | 2 +- .../plg_system_mokosuitecross_events/mokosuitecross_events.xml | 2 +- .../mokosuitecross_gallery.xml | 2 +- source/packages/plg_task_mokosuitecross/mokosuitecross.xml | 2 +- .../packages/plg_webservices_mokosuitecross/mokosuitecross.xml | 2 +- source/pkg_mokosuitecross.xml | 2 +- 50 files changed, 50 insertions(+), 50 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index d5ccc0d..6d2953b 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -5,7 +5,7 @@ Package - MokoSuiteCross MokoConsulting Cross-posting Joomla content to social media, email marketing, and chat platforms - 01.05.01 + 01.05.02 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 3aea2aa..7d01a20 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.05.01 +# VERSION: 01.05.02 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 60668cc..848ec2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,7 +48,7 @@ ## [01.03.00] --- 2026-06-21 - + All notable changes to MokoSuiteCross will be documented in this file. diff --git a/README.md b/README.md index 0998009..03af03c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MokoSuiteCross - + Cross-posting Joomla content to social media, email marketing, and chat platforms for Joomla 5/6. diff --git a/source/packages/com_mokosuitecross/mokosuitecross.xml b/source/packages/com_mokosuitecross/mokosuitecross.xml index ebb16bd..def891f 100644 --- a/source/packages/com_mokosuitecross/mokosuitecross.xml +++ b/source/packages/com_mokosuitecross/mokosuitecross.xml @@ -1,7 +1,7 @@ com_mokosuitecross - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_content_mokosuitecross/mokosuitecross.xml b/source/packages/plg_content_mokosuitecross/mokosuitecross.xml index b17b3f7..63448c6 100644 --- a/source/packages/plg_content_mokosuitecross/mokosuitecross.xml +++ b/source/packages/plg_content_mokosuitecross/mokosuitecross.xml @@ -1,7 +1,7 @@ Content - MokoSuiteCross - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_activitypub/activitypub.xml b/source/packages/plg_mokosuitecross_activitypub/activitypub.xml index 306c251..9c87f91 100644 --- a/source/packages/plg_mokosuitecross_activitypub/activitypub.xml +++ b/source/packages/plg_mokosuitecross_activitypub/activitypub.xml @@ -1,7 +1,7 @@ MokoSuiteCross - ActivityPub (Fediverse) - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_blogger/blogger.xml b/source/packages/plg_mokosuitecross_blogger/blogger.xml index 8f6b81d..aafe3aa 100644 --- a/source/packages/plg_mokosuitecross_blogger/blogger.xml +++ b/source/packages/plg_mokosuitecross_blogger/blogger.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Google Blogger - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_bluesky/bluesky.xml b/source/packages/plg_mokosuitecross_bluesky/bluesky.xml index dd8a3b9..8a4e1cf 100644 --- a/source/packages/plg_mokosuitecross_bluesky/bluesky.xml +++ b/source/packages/plg_mokosuitecross_bluesky/bluesky.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Bluesky - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_brevo/brevo.xml b/source/packages/plg_mokosuitecross_brevo/brevo.xml index d50b334..47f50ae 100644 --- a/source/packages/plg_mokosuitecross_brevo/brevo.xml +++ b/source/packages/plg_mokosuitecross_brevo/brevo.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Brevo (Sendinblue) - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_constantcontact/constantcontact.xml b/source/packages/plg_mokosuitecross_constantcontact/constantcontact.xml index b9c6bb6..5446654 100644 --- a/source/packages/plg_mokosuitecross_constantcontact/constantcontact.xml +++ b/source/packages/plg_mokosuitecross_constantcontact/constantcontact.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Constant Contact - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_convertkit/convertkit.xml b/source/packages/plg_mokosuitecross_convertkit/convertkit.xml index 1d2fd0f..38944a3 100644 --- a/source/packages/plg_mokosuitecross_convertkit/convertkit.xml +++ b/source/packages/plg_mokosuitecross_convertkit/convertkit.xml @@ -1,7 +1,7 @@ MokoSuiteCross - ConvertKit - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_devto/devto.xml b/source/packages/plg_mokosuitecross_devto/devto.xml index 0785a9f..f620632 100644 --- a/source/packages/plg_mokosuitecross_devto/devto.xml +++ b/source/packages/plg_mokosuitecross_devto/devto.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Dev.to - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_discord/discord.xml b/source/packages/plg_mokosuitecross_discord/discord.xml index 508d311..db86a85 100644 --- a/source/packages/plg_mokosuitecross_discord/discord.xml +++ b/source/packages/plg_mokosuitecross_discord/discord.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Discord - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_facebook/facebook.xml b/source/packages/plg_mokosuitecross_facebook/facebook.xml index ad48f4e..74822c7 100644 --- a/source/packages/plg_mokosuitecross_facebook/facebook.xml +++ b/source/packages/plg_mokosuitecross_facebook/facebook.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Facebook / Meta - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_ghost/ghost.xml b/source/packages/plg_mokosuitecross_ghost/ghost.xml index 100f01c..7ca87a0 100644 --- a/source/packages/plg_mokosuitecross_ghost/ghost.xml +++ b/source/packages/plg_mokosuitecross_ghost/ghost.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Ghost - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_googlebusiness/googlebusiness.xml b/source/packages/plg_mokosuitecross_googlebusiness/googlebusiness.xml index fde0c1f..bce86ba 100644 --- a/source/packages/plg_mokosuitecross_googlebusiness/googlebusiness.xml +++ b/source/packages/plg_mokosuitecross_googlebusiness/googlebusiness.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Google Business Profile - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_googlechat/googlechat.xml b/source/packages/plg_mokosuitecross_googlechat/googlechat.xml index 23753bf..d4e25f2 100644 --- a/source/packages/plg_mokosuitecross_googlechat/googlechat.xml +++ b/source/packages/plg_mokosuitecross_googlechat/googlechat.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Google Chat - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_hashnode/hashnode.xml b/source/packages/plg_mokosuitecross_hashnode/hashnode.xml index 98c73dd..f75132e 100644 --- a/source/packages/plg_mokosuitecross_hashnode/hashnode.xml +++ b/source/packages/plg_mokosuitecross_hashnode/hashnode.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Hashnode - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_instagram/instagram.xml b/source/packages/plg_mokosuitecross_instagram/instagram.xml index d93a019..b98897b 100644 --- a/source/packages/plg_mokosuitecross_instagram/instagram.xml +++ b/source/packages/plg_mokosuitecross_instagram/instagram.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Instagram - 01.05.01-dev + 01.05.02-dev 2026-06-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_linkedin/linkedin.xml b/source/packages/plg_mokosuitecross_linkedin/linkedin.xml index a572214..d30bcd4 100644 --- a/source/packages/plg_mokosuitecross_linkedin/linkedin.xml +++ b/source/packages/plg_mokosuitecross_linkedin/linkedin.xml @@ -1,7 +1,7 @@ MokoSuiteCross - LinkedIn - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_mailchimp/mailchimp.xml b/source/packages/plg_mokosuitecross_mailchimp/mailchimp.xml index eba60ba..62a3425 100644 --- a/source/packages/plg_mokosuitecross_mailchimp/mailchimp.xml +++ b/source/packages/plg_mokosuitecross_mailchimp/mailchimp.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Mailchimp - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_mastodon/mastodon.xml b/source/packages/plg_mokosuitecross_mastodon/mastodon.xml index 44ba098..8d8bb2e 100644 --- a/source/packages/plg_mokosuitecross_mastodon/mastodon.xml +++ b/source/packages/plg_mokosuitecross_mastodon/mastodon.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Mastodon - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_matrix/matrix.xml b/source/packages/plg_mokosuitecross_matrix/matrix.xml index 5b70557..4fa2d05 100644 --- a/source/packages/plg_mokosuitecross_matrix/matrix.xml +++ b/source/packages/plg_mokosuitecross_matrix/matrix.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Matrix / Element - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_medium/medium.xml b/source/packages/plg_mokosuitecross_medium/medium.xml index 5b68023..1292fca 100644 --- a/source/packages/plg_mokosuitecross_medium/medium.xml +++ b/source/packages/plg_mokosuitecross_medium/medium.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Medium - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_mokosuitecalendar/mokosuitecalendar.xml b/source/packages/plg_mokosuitecross_mokosuitecalendar/mokosuitecalendar.xml index 5e9c3d6..414d992 100644 --- a/source/packages/plg_mokosuitecross_mokosuitecalendar/mokosuitecalendar.xml +++ b/source/packages/plg_mokosuitecross_mokosuitecalendar/mokosuitecalendar.xml @@ -1,7 +1,7 @@ MokoSuiteCross - MokoSuiteCalendar Events - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_mokosuitegallery/mokosuitegallery.xml b/source/packages/plg_mokosuitecross_mokosuitegallery/mokosuitegallery.xml index b03fce6..4204623 100644 --- a/source/packages/plg_mokosuitecross_mokosuitegallery/mokosuitegallery.xml +++ b/source/packages/plg_mokosuitecross_mokosuitegallery/mokosuitegallery.xml @@ -1,7 +1,7 @@ MokoSuiteCross - MokoSuiteGallery - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_nostr/nostr.xml b/source/packages/plg_mokosuitecross_nostr/nostr.xml index 3a18fb5..621ae47 100644 --- a/source/packages/plg_mokosuitecross_nostr/nostr.xml +++ b/source/packages/plg_mokosuitecross_nostr/nostr.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Nostr - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_ntfy/ntfy.xml b/source/packages/plg_mokosuitecross_ntfy/ntfy.xml index b16917f..13fd453 100644 --- a/source/packages/plg_mokosuitecross_ntfy/ntfy.xml +++ b/source/packages/plg_mokosuitecross_ntfy/ntfy.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Ntfy Push Notifications - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_pinterest/pinterest.xml b/source/packages/plg_mokosuitecross_pinterest/pinterest.xml index 9610662..804867e 100644 --- a/source/packages/plg_mokosuitecross_pinterest/pinterest.xml +++ b/source/packages/plg_mokosuitecross_pinterest/pinterest.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Pinterest - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_reddit/reddit.xml b/source/packages/plg_mokosuitecross_reddit/reddit.xml index 04e3c56..46efe15 100644 --- a/source/packages/plg_mokosuitecross_reddit/reddit.xml +++ b/source/packages/plg_mokosuitecross_reddit/reddit.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Reddit - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_rssfeed/rssfeed.xml b/source/packages/plg_mokosuitecross_rssfeed/rssfeed.xml index 13386d7..82e4de3 100644 --- a/source/packages/plg_mokosuitecross_rssfeed/rssfeed.xml +++ b/source/packages/plg_mokosuitecross_rssfeed/rssfeed.xml @@ -1,7 +1,7 @@ MokoSuiteCross - RSS Feed - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_sendgrid/sendgrid.xml b/source/packages/plg_mokosuitecross_sendgrid/sendgrid.xml index 67c9926..00bbe02 100644 --- a/source/packages/plg_mokosuitecross_sendgrid/sendgrid.xml +++ b/source/packages/plg_mokosuitecross_sendgrid/sendgrid.xml @@ -1,7 +1,7 @@ MokoSuiteCross - SendGrid - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_slack/slack.xml b/source/packages/plg_mokosuitecross_slack/slack.xml index e580579..2dfc501 100644 --- a/source/packages/plg_mokosuitecross_slack/slack.xml +++ b/source/packages/plg_mokosuitecross_slack/slack.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Slack - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_teams/teams.xml b/source/packages/plg_mokosuitecross_teams/teams.xml index 17b5305..73d614f 100644 --- a/source/packages/plg_mokosuitecross_teams/teams.xml +++ b/source/packages/plg_mokosuitecross_teams/teams.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Microsoft Teams - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_telegram/telegram.xml b/source/packages/plg_mokosuitecross_telegram/telegram.xml index cc29545..3b8e5ca 100644 --- a/source/packages/plg_mokosuitecross_telegram/telegram.xml +++ b/source/packages/plg_mokosuitecross_telegram/telegram.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Telegram - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_threads/threads.xml b/source/packages/plg_mokosuitecross_threads/threads.xml index 05f831c..791abba 100644 --- a/source/packages/plg_mokosuitecross_threads/threads.xml +++ b/source/packages/plg_mokosuitecross_threads/threads.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Threads (Meta) - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_tiktok/tiktok.xml b/source/packages/plg_mokosuitecross_tiktok/tiktok.xml index 697719e..9fd428c 100644 --- a/source/packages/plg_mokosuitecross_tiktok/tiktok.xml +++ b/source/packages/plg_mokosuitecross_tiktok/tiktok.xml @@ -1,7 +1,7 @@ MokoSuiteCross - TikTok - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_tumblr/tumblr.xml b/source/packages/plg_mokosuitecross_tumblr/tumblr.xml index 3cee58c..7864936 100644 --- a/source/packages/plg_mokosuitecross_tumblr/tumblr.xml +++ b/source/packages/plg_mokosuitecross_tumblr/tumblr.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Tumblr - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_twitter/twitter.xml b/source/packages/plg_mokosuitecross_twitter/twitter.xml index 4bad22f..97d210a 100644 --- a/source/packages/plg_mokosuitecross_twitter/twitter.xml +++ b/source/packages/plg_mokosuitecross_twitter/twitter.xml @@ -1,7 +1,7 @@ MokoSuiteCross - X / Twitter - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_webhook/webhook.xml b/source/packages/plg_mokosuitecross_webhook/webhook.xml index c04f836..d22a0b1 100644 --- a/source/packages/plg_mokosuitecross_webhook/webhook.xml +++ b/source/packages/plg_mokosuitecross_webhook/webhook.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Generic Webhook - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_whatsapp/whatsapp.xml b/source/packages/plg_mokosuitecross_whatsapp/whatsapp.xml index b716e5e..cf627b0 100644 --- a/source/packages/plg_mokosuitecross_whatsapp/whatsapp.xml +++ b/source/packages/plg_mokosuitecross_whatsapp/whatsapp.xml @@ -1,7 +1,7 @@ MokoSuiteCross - WhatsApp Business - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_wordpress/wordpress.xml b/source/packages/plg_mokosuitecross_wordpress/wordpress.xml index d90f3a2..4159509 100644 --- a/source/packages/plg_mokosuitecross_wordpress/wordpress.xml +++ b/source/packages/plg_mokosuitecross_wordpress/wordpress.xml @@ -1,7 +1,7 @@ MokoSuiteCross - WordPress - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_mokosuitecross_youtube/youtube.xml b/source/packages/plg_mokosuitecross_youtube/youtube.xml index 1e6073c..6b6fae0 100644 --- a/source/packages/plg_mokosuitecross_youtube/youtube.xml +++ b/source/packages/plg_mokosuitecross_youtube/youtube.xml @@ -1,7 +1,7 @@ MokoSuiteCross - Youtube - 01.05.01-dev + 01.05.02-dev 2026-06-23 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokosuitecross/mokosuitecross.xml b/source/packages/plg_system_mokosuitecross/mokosuitecross.xml index bced1ab..6ad3a45 100644 --- a/source/packages/plg_system_mokosuitecross/mokosuitecross.xml +++ b/source/packages/plg_system_mokosuitecross/mokosuitecross.xml @@ -1,7 +1,7 @@ System - MokoSuiteCross - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokosuitecross_events/mokosuitecross_events.xml b/source/packages/plg_system_mokosuitecross_events/mokosuitecross_events.xml index 9286ce7..0660d54 100644 --- a/source/packages/plg_system_mokosuitecross_events/mokosuitecross_events.xml +++ b/source/packages/plg_system_mokosuitecross_events/mokosuitecross_events.xml @@ -1,7 +1,7 @@ System - MokoSuiteCross Events - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_system_mokosuitecross_gallery/mokosuitecross_gallery.xml b/source/packages/plg_system_mokosuitecross_gallery/mokosuitecross_gallery.xml index d4a3cfd..e8ed872 100644 --- a/source/packages/plg_system_mokosuitecross_gallery/mokosuitecross_gallery.xml +++ b/source/packages/plg_system_mokosuitecross_gallery/mokosuitecross_gallery.xml @@ -1,7 +1,7 @@ System - MokoSuiteCross Gallery - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_task_mokosuitecross/mokosuitecross.xml b/source/packages/plg_task_mokosuitecross/mokosuitecross.xml index ead5a74..7f13ec0 100644 --- a/source/packages/plg_task_mokosuitecross/mokosuitecross.xml +++ b/source/packages/plg_task_mokosuitecross/mokosuitecross.xml @@ -1,7 +1,7 @@ Task - MokoSuiteCross Queue Processor - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/packages/plg_webservices_mokosuitecross/mokosuitecross.xml b/source/packages/plg_webservices_mokosuitecross/mokosuitecross.xml index b405974..198387d 100644 --- a/source/packages/plg_webservices_mokosuitecross/mokosuitecross.xml +++ b/source/packages/plg_webservices_mokosuitecross/mokosuitecross.xml @@ -1,7 +1,7 @@ Web Services - MokoSuiteCross - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech diff --git a/source/pkg_mokosuitecross.xml b/source/pkg_mokosuitecross.xml index f0d8070..f2b01f7 100644 --- a/source/pkg_mokosuitecross.xml +++ b/source/pkg_mokosuitecross.xml @@ -2,7 +2,7 @@ MokoSuiteCross mokosuitecross - 01.05.01-dev + 01.05.02-dev 2026-05-28 Moko Consulting hello@mokoconsulting.tech -- 2.52.0