Commit Graph

35 Commits

Author SHA1 Message Date
gitea-actions[bot] f3a8246e34 chore(release): build 01.06.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 5s
2026-06-23 17:09:35 +00:00
gitea-actions[bot] 78cbd1f370 chore(version): pre-release bump to 01.05.02-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 38s
2026-06-23 17:01:51 +00:00
Jonathan Miller 70d2bab52d fix: remove duplicate license warning from system plugin
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 18s
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.
2026-06-23 11:59:56 -05:00
gitea-actions[bot] 166a6366f8 chore(version): pre-release bump to 01.05.01-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 33s
2026-06-23 16:45:37 +00:00
Jonathan Miller ac8a64c4c1 fix: license key warning no longer shows during uninstall
Universal: Auto Version Bump / Version Bump (push) Successful in 12s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 12s
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.
2026-06-23 11:45:05 -05:00
gitea-actions[bot] 62a8e9bd99 chore(version): pre-release bump to 01.04.12-dev [skip ci]
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3s
Publish to Composer / Publish Package (release) Failing after 35s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 32s
2026-06-23 16:07:11 +00:00
Jonathan Miller de0b588be0 fix: resolve broken namespace placeholders in 7 plugin XML manifests
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Joomla: Extension CI / Build RC Pre-Release (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 7s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Secret Scan (pull_request) Successful in 7s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Successful in 12s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 24s
Universal: PR Check / Validate PR (pull_request) Failing after 48s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 49s
2026-06-23 11:06:34 -05:00
gitea-actions[bot] 4650f9ba46 chore(version): pre-release bump to 01.04.11-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 5s
2026-06-23 15:46:32 +00:00
Jonathan Miller be58716391 feat: ntfy default server ntfy.mokoconsulting.tech with config params
Universal: Auto Version Bump / Version Bump (push) Successful in 10s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 12s
- Default server URL changed from ntfy.sh to ntfy.mokoconsulting.tech
- Added plugin config fieldset with default_server_url and default_topic
- Server URL reads from plugin params, overridable per-service in credentials
- Updated language strings
2026-06-23 10:46:10 -05:00
gitea-actions[bot] 03870dce33 chore(version): pre-release bump to 01.04.10-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 34s
2026-06-23 15:38:31 +00:00
Jonathan Miller 5fee5d7810 feat: Mastodon polls/visibility/scheduling + Bluesky threads (closes #152, #158)
Universal: Auto Version Bump / Version Bump (push) Successful in 12s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 12s
Mastodon (#152):
- Visibility levels (public/unlisted/private/direct) from params or config
- Content warnings via spoiler_text param
- Scheduled posts via scheduled_at param
- Poll creation (options, expires_in, multiple) mutually exclusive with media
- Language tag support
- Fixed broken ${CLASS_NAME} namespace in mastodon.xml

Bluesky (#158):
- Auto-thread: split long messages at sentence boundaries into reply chains
- External link card embed (app.bsky.embed.external) with article title/description
- Link card attached to last post in thread
- Dispatcher now passes article_title to service plugins

Closes #152, closes #158
2026-06-23 10:38:04 -05:00
gitea-actions[bot] c13c2a372e chore(version): pre-release bump to 01.04.09-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 7s
2026-06-23 14:08:10 +00:00
gitea-actions[bot] 9bfbf36090 chore(version): pre-release bump to 01.04.08-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 3s
2026-06-23 13:48:28 +00:00
Jonathan Miller 7e5ff12d03 feat: UTM auto-tagging and caption rotation (closes #154, closes #155)
Universal: Auto Version Bump / Version Bump (push) Successful in 7s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 9s
UTM tracking (#154):
- New config fieldset with utm_source, utm_medium, utm_campaign, utm_content
- {platform} token in UTM values auto-replaced with service type
- {url} gets UTM params appended when enabled
- {url_raw} placeholder for clean URLs without UTM

Caption rotation (#155):
- {random:option1|option2|option3} placeholder in templates
- Picks one option at random per post render
- Great for evergreen re-shares to vary messaging

Closes #154, closes #155
2026-06-23 08:48:08 -05:00
gitea-actions[bot] 42f7a09bb3 chore(version): pre-release bump to 01.04.07-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 6s
2026-06-23 13:25:07 +00:00
gitea-actions[bot] eb1b112a93 chore(version): pre-release bump to 01.04.06-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 37s
2026-06-23 13:21:41 +00:00
Jonathan Miller 4918879eec feat: delete/unpublish from remote platforms (closes #131)
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 18s
New MokoSuiteCrossDeleteInterface (separate from main interface to avoid
breaking all 38 plugins). Plugins that support deletion implement both.

deletePost() implemented for 7 platforms:
- Twitter: DELETE /2/tweets/{id} with OAuth 1.0a
- Mastodon: DELETE /api/v1/statuses/{id}
- Bluesky: com.atproto.repo.deleteRecord
- Facebook: DELETE /{post_id} via Graph API
- LinkedIn: DELETE /v2/ugcPosts/{urn}
- Telegram: POST /deleteMessage
- Discord: DELETE webhook /messages/{id}

Infrastructure:
- CrossPostDispatcher::deleteFromPlatforms() finds posted entries and
  calls deletePost() on plugins that implement the delete interface
- Content plugin hooks onContentChangeState for unpublish/trash
- New component config: 'Delete from Platforms on Unpublish'
- Post status 'deleted' added to schema

Closes #131
2026-06-23 08:21:18 -05:00
gitea-actions[bot] add973771b chore(version): pre-release bump to 01.04.05-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 7s
2026-06-23 13:07:08 +00:00
Jonathan Miller 5753c307c6 feat: Mailchimp template support + responsive email wrapper (closes #142)
Universal: Auto Version Bump / Version Bump (push) Successful in 14s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 19s
- Add template_id and template_section config fields
- When template_id set, inject content into Mailchimp template sections
- When empty, wrap HTML in responsive email skeleton (600px table layout)
- Fix broken ${CLASS_NAME} namespace placeholder in mailchimp.xml
- New language strings for template fieldset

Closes #142
2026-06-23 08:06:34 -05:00
gitea-actions[bot] bfe4432c78 chore(version): pre-release bump to 01.04.04-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 8s
2026-06-23 12:58:31 +00:00
Jonathan Miller 3c1f3a2421 feat: add per-article Share Content panel with platform-specific placeholders
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 13s
New article editor fieldset 'Share Content' with fields:
- Social Media Text ({social}) - Facebook, LinkedIn, Threads, Mastodon
- Short Text ({short}) - Twitter/X (280), Bluesky (300)
- Chat Text ({chat}) - Telegram, Discord, Slack, Teams
- Email Subject ({email_subject}) + Email Body ({email_body}) - Mailchimp, SendGrid, Brevo
- Share Image picker (intro/fulltext/custom/none)

All placeholders fall back gracefully to introtext/title if empty.
Default templates updated to use platform-specific placeholders.
2026-06-23 07:58:08 -05:00
gitea-actions[bot] 9017b06c7d chore(version): pre-release bump to 01.04.03-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 26s
2026-06-23 12:39:07 +00:00
Jonathan Miller 1cb5c77bec feat: add Instagram + YouTube plugins, re-apply deep scan fixes (#140, #141)
Universal: Auto Version Bump / Version Bump (push) Successful in 12s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 11s
New plugins:
- plg_mokosuitecross_instagram: Meta Content Publishing API (2-step flow)
- plg_mokosuitecross_youtube: YouTube Data API v3 channel bulletins

Bug fixes (re-applied after rebase loss):
- ConvertKit/Brevo/ConstantContact: duplicate curl_setopt_array removed
- Mailchimp: campaign creation accepts 2xx range (not just 200)
- Medium: getUserId() returns '' on error (not array)
- Bluesky: sha256 instead of md5 for cache key
- ServiceController: generic error message instead of exception details

Closes #140, closes #141
2026-06-23 07:38:41 -05:00
gitea-actions[bot] dc5feaa9aa chore(version): pre-release bump to 01.04.02-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 48s
2026-06-21 23:40:48 +00:00
gitea-actions[bot] a1b2bf40ce chore(release): build 01.04.01 [skip ci]
Publish to Composer / Publish Package (release) Failing after 5s
2026-06-21 23:25:01 +00:00
gitea-actions[bot] c8918df03e chore(version): pre-release bump to 01.04.01-dev [skip ci]
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 25s
Publish to Composer / Publish Package (release) Failing after 49s
Branch Cleanup / Delete merged branch (pull_request) Failing after 1s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 4s
2026-06-21 23:09:49 +00:00
gitea-actions[bot] cec436f90e chore(release): build 01.04.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 4s
2026-06-21 22:48:33 +00:00
gitea-actions[bot] 70dbb65173 chore(version): auto-bump 01.03.01-dev [skip ci]
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 4s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 17s
2026-06-21 22:46:05 +00:00
Jonathan Miller 6a00d7ddf9 fix: add missing events/gallery system plugins to package manifest (#137)
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
Update Server / Update Server (push) Successful in 11s
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
Added plg_system_mokosuitecross_events and plg_system_mokosuitecross_gallery
to pkg_mokosuitecross.xml. These content source plugins hook into Joomla
system events to cross-post calendar events and gallery images but were
not being installed with the package.

Also removed the old src/ directory (pre-rename mokojoomcross cruft).

Closes #137
2026-06-21 17:45:31 -05:00
gitea-actions[bot] 78c7b99c6a chore(release): build 01.03.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 55s
2026-06-21 22:26:57 +00:00
gitea-actions[bot] 137b2556ac chore(release): build 01.02.00-rc [skip ci]
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Failing after 1s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 5s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 22s
2026-06-21 17:23:04 -05:00
Jonathan Miller 122c7b630a feat: Telegram @mokosuite_bot default, wiki folders, README/CHANGELOG update
- Telegram: updated default bot from @MokoWaaSBot to @mokosuite_bot
- Telegram: embedded obfuscated bot token in plugin PHP (XOR + base64)
- Telegram: added <config> section to plugin XML for parse_mode/preview
- Telegram: removed bot token from admin-visible plugin params
- Branding: replaced all MokoWaaS references with MokoSuite
- Wiki: reorganized into getting-started/, user-guide/, services/, developer/
- README: updated with all 36 service plugins and current features
- CHANGELOG: added entries for recent fixes and changes
2026-06-21 17:23:03 -05:00
gitea-actions[bot] 8ab62abf29 chore(version): auto-bump 01.01.02-dev [skip ci] 2026-06-21 17:23:03 -05:00
Jonathan Miller 27505f7501 fix: rename all MOKOJOOMCROSS language keys and events to MOKOSUITECROSS (#128, #138)
Completes the MokoJoomCross → MokoSuiteCross rebrand across all language
string keys, Joomla event names, documentation, and wiki pages.

- 1,151 language key references renamed (COM_, PLG_, PKG_ prefixes)
- Event names renamed (onMokoJoomCross* → onMokoSuiteCross*)
- CLAUDE.md, CHANGELOG.md, wiki docs updated
- Zero mokojoomcross references remaining in codebase

Closes #128, closes #138
2026-06-21 17:23:02 -05:00
Jonathan Miller 28db9a67b6 fix: remove duplicate curl_setopt_array calls in 4 service plugins (#139)
SendGrid and Reddit had a second curl_setopt_array that referenced an
undefined $token variable, silently breaking auth. TikTok and Pinterest
had identical duplicates (no variable bug but dead code).

Removes the duplicate block from each plugin's publish() method.
2026-06-21 17:22:31 -05:00