Commit Graph

37 Commits

Author SHA1 Message Date
Moko Consulting 6cba84bde5 fix(workflows): rename remaining old secrets in repo-specific workflows [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
2026-05-28 14:48:22 -05:00
gitea-actions[bot] 5b8aa86357 chore: update development channel 01.00.09-dev [skip ci] 2026-05-28 19:42:06 +00:00
gitea-actions[bot] 9982a4bffd chore: update development channel 01.00.09-dev [skip ci] 2026-05-28 19:41:41 +00:00
gitea-actions[bot] cf7fd55eca chore(version): auto-bump 01.00.09-dev [skip ci] 2026-05-28 19:41:40 +00:00
Jonathan Miller 994cbf2701 fix: filterForm null error + PrepareFormEvent compat + API routes
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update Server (push) Has been cancelled
Fixes three issues found during dev site testing:

1. All 4 list views (Services, Posts, Logs, Templates) missing
   filterForm and activeFilters properties. Joomla searchtools
   layout calls getGroup() on null filterForm. Added get('FilterForm')
   and get('ActiveFilters') to all list HtmlView classes.

2. Content plugin onContentPrepareForm typed as Form but Joomla 5/6
   passes PrepareFormEvent. Now accepts both: extracts Form from
   PrepareFormEvent when available, falls back to legacy Form type.

3. WebServices API routes expanded: added templates and logs CRUD
   endpoints alongside posts and services.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 14:41:24 -05:00
Moko Consulting 4e0c776c70 fix(workflows): GITHUB_TOKEN→GH_MIRROR_TOKEN (reserved name) [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
2026-05-28 14:37:15 -05:00
gitea-actions[bot] 207ad9c2c6 chore: update development channel 01.00.08-dev [skip ci] 2026-05-28 19:33:40 +00:00
gitea-actions[bot] 973f83dc32 chore: update development channel 01.00.08-dev [skip ci] 2026-05-28 19:33:23 +00:00
gitea-actions[bot] 55596a1024 chore(version): auto-bump 01.00.08-dev [skip ci] 2026-05-28 19:33:21 +00:00
Jonathan Miller 73d8425130 fix: remove DEFAULT '' from TEXT column error_message
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update Server (push) Has been cancelled
MySQL strict mode does not allow default values on TEXT/BLOB columns.
Removes DEFAULT '' from error_message in #__mokojoomcross_posts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 14:33:09 -05:00
Moko Consulting 50152524b9 chore(workflows): sync all universal workflows from moko-platform [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
2026-05-28 14:25:15 -05:00
Moko Consulting b4d8ff3336 refactor(workflows): rename secrets MOKOGITEA_TOKEN/GITHUB_TOKEN, use x-access-token [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
2026-05-28 14:23:40 -05:00
Moko Consulting 003bd1624a fix(workflows): proper suffix handling — use version_set_platform instead of sed [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
2026-05-28 14:15:20 -05:00
gitea-actions[bot] 13b6cf2016 chore: update development channel 01.00.07-dev [skip ci] 2026-05-28 19:04:24 +00:00
Jonathan Miller d70acbc35d docs: restructure CHANGELOG by feature area
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Reorganized from chronological bullet dump into structured sections:
Core Engine, Admin Component, Queue Processing, Per-Article Controls,
OAuth, Migration, Service Plugins (34 platforms by category), Plugin
Configuration, Infrastructure.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 14:02:00 -05:00
gitea-actions[bot] 3b089f8d72 chore: update development channel 01.00.07-dev [skip ci] 2026-05-28 19:00:06 +00:00
gitea-actions[bot] fc57c51004 chore(version): auto-bump 01.00.07-dev [skip ci] 2026-05-28 19:00:04 +00:00
Jonathan Miller 3b1b0e8844 feat: 25 expansion service plugins (#23-#47)
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update Server (push) Has been cancelled
Social Media: Threads (Meta), Pinterest, Reddit, Tumblr, TikTok,
Nostr, ActivityPub (generic Fediverse)

Chat/Messaging: Microsoft Teams, Google Chat, WhatsApp Business,
Matrix/Element, Ntfy (push notifications)

Email/Newsletter: SendGrid, Brevo (Sendinblue), ConvertKit,
Constant Contact

Publishing/Blogging: Medium, WordPress, Dev.to, Ghost, Hashnode,
Google Blogger

Business: Google Business Profile

Universal: Generic Webhook (IFTTT/Zapier/n8n/Make/custom endpoints),
RSS Feed (dedicated cross-post feed)

Each plugin implements MokoJoomCrossServiceInterface with publish(),
validateCredentials(), getServiceType(), getServiceName(),
getMaxLength(), supportsMedia(). Teams and Threads have default
MokoWaaS bot modes.

Package now contains 40 sub-extensions (1 component + 5 core
plugins + 34 service plugins). Service type dropdown organized
by category with all 34 platforms.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:59:54 -05:00
gitea-actions[bot] e31552259d chore: update development channel 01.00.06-dev-dev [skip ci] 2026-05-28 18:42:22 +00:00
gitea-actions[bot] 97915d9f30 chore(version): auto-bump 01.00.06-dev-dev [skip ci] 2026-05-28 18:42:20 +00:00
Jonathan Miller 2872ae2b97 feat: low-priority issues #19-#22
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update Server (push) Has been cancelled
#19 Per-article cross-posting: Content plugin injects "Cross-Posting"
    fieldset into article editor via onContentPrepareForm. Dynamic
    checkbox list of all enabled services. Skip toggle. System plugin
    reads article attribs for mokojoomcross_services (array of service
    IDs) and mokojoomcross_skip (boolean). Unchecked = post to all.

#20 Analytics dashboard: Posts-by-service breakdown table with
    success rate column (color-coded). Top cross-posted articles
    list. DashboardModel methods: getServiceBreakdown(),
    getDailyTrend(), getTopArticles().

#21 OAuth flows: OAuthHelper with authorize URL generation (Facebook,
    LinkedIn, Twitter), PKCE for Twitter, code→token exchange, token
    storage in service credentials. OauthController with authorize
    and callback actions. Reads client ID/secret from plugin params.

#22 Wiki documentation: Services guide (all 9 platforms, default vs
    custom mode), REST API reference, Message Templates guide with
    examples per platform, Troubleshooting guide.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:42:07 -05:00
Moko Consulting 3664f547ee feat(workflows): append stability suffix to manifest versions [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
2026-05-28 13:41:34 -05:00
gitea-actions[bot] 6521edaab9 chore: update updates.xml (development: 01.00.05-dev-dev) [skip ci] 2026-05-28 18:36:31 +00:00
gitea-actions[bot] 3f6f286ffe chore(version): auto-bump patch 01.00.05-dev [skip ci] 2026-05-28 18:36:29 +00:00
Jonathan Miller 342f6fa3b8 feat: medium-priority issues #12-#18
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update updates.xml (push) Has been cancelled
#12 LinkedIn: plugin config form (OAuth client ID/secret, redirect URI)
#13 Mastodon: plugin config (default instance, visibility, hashtags)
#14 Bluesky: plugin config (default PDS URL, auto link cards)
#15 Mailchimp: plugin config (sender name/email, auto-send toggle)

#17 Template management: full CRUD with TemplatesController,
    TemplateController, TemplatesModel, TemplateModel, TemplateTable.
    List view with service type badges and body preview. Edit view
    with placeholder reference panel showing all 8 placeholders.
    Filter form with search, published, service_type filters.
    Added Templates submenu item and dashboard quick link.

#18 Logs: added filter form with level and search filters.

#16 WebServices: implementation already in place from scaffold,
    routes registered for posts and services CRUD.

Admin component now has 5 submenu items: Dashboard, Post Queue,
Services, Templates, Activity Logs.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:36:11 -05:00
gitea-actions[bot] 2f60ede713 chore: update updates.xml (development: 01.00.04-dev-dev) [skip ci] 2026-05-28 18:29:39 +00:00
gitea-actions[bot] 8fba003d64 chore(version): auto-bump patch 01.00.04-dev [skip ci] 2026-05-28 18:29:37 +00:00
Jonathan Miller 76dfa177c4 feat: high-priority issues #6-#10 — migration + service plugins
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update updates.xml (push) Has been cancelled
#6 PP Pro migration rewritten to read #__autotweet_channels table
   directly, mapping channeltype names to MokoJoomCross service types.
   Credential extraction per platform (Facebook page tokens, Twitter
   OAuth, Telegram bot tokens, Discord/Slack webhooks). Falls back to
   component params extraction when channel table doesn't exist.

#7 Facebook plugin: config form with default_page_access_token and
   default_page_id. resolveToken() reads from plugin params.

#8 Discord plugin: config form with default_webhook_url and
   embed_color. resolveWebhook() reads from plugin params.

#9 Twitter plugin: implementation already complete from scaffold.

#10 Slack plugin: config form with default_webhook_url.
    resolveWebhook() reads from plugin params.

All service plugins with universal bot support now store default
credentials in their own plugin params (Extensions → Plugins)
rather than component params. This keeps sensitive tokens scoped
to the plugin that uses them.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:29:22 -05:00
gitea-actions[bot] 4edc5a4765 chore: update updates.xml (development: 01.00.03-dev-dev) [skip ci] 2026-05-28 18:19:51 +00:00
gitea-actions[bot] a67a2a3c5d chore(version): auto-bump patch 01.00.03-dev [skip ci] 2026-05-28 18:19:49 +00:00
Jonathan Miller 9bbf2a74fb feat: queue processor — scheduled task + page-load fallback (#11)
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update updates.xml (push) Has been cancelled
Three-pronged queue processing:

1. Joomla Scheduled Task (preferred): New plg_task_mokojoomcross plugin
   registers "MokoJoomCross - Process Queue" task type. Admin creates
   a scheduled task in System → Scheduled Tasks with desired interval.

2. Page-load fallback: System plugin onAfterRender with configurable
   throttle interval. Runs on backend, frontend, or both. Small batch
   size (5) to avoid slowing page loads.

3. Both can run simultaneously — QueueProcessor uses DB-based lock
   to prevent concurrent execution (120s safety timeout).

Shared QueueProcessor helper handles:
- Queued post dispatch to service plugins
- Failed post retry with configurable max retries + delay
- Scheduled post firing (when scheduled_at <= now)
- Log cleanup based on retention period

Dashboard shows warning banner when page-load processing is active,
recommending switch to Joomla Scheduled Tasks for production.

Config options: queue_processing (scheduler/pageload/both),
pageload_client (admin/site/both), pageload_interval (seconds).

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:19:31 -05:00
gitea-actions[bot] 04e7720268 chore: update updates.xml (development: 01.00.02-dev-dev) [skip ci] 2026-05-28 18:11:32 +00:00
gitea-actions[bot] d4c2ff00c3 chore(version): auto-bump patch 01.00.02-dev [skip ci] 2026-05-28 18:11:31 +00:00
Jonathan Miller 559b9ca30c feat: implement critical issues #1-#5
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update updates.xml (push) Has been cancelled
#1 Core engine: System plugin now dispatches to service plugins via
onMokoJoomCrossGetServices event, executes publish() immediately,
handles success/failure, duplicate guard prevents re-posting, listens
to both onContentAfterSave and onContentChangeState events. Template
rendering now resolves {category}, {author}, {date}, {fulltext}.

#3 Services CRUD: Admin list template with service type icons,
default/custom mode badges, publish toggle. Service edit form template.

#4 Post Queue: Admin list template with status badges (color-coded),
article title, service, message preview, platform post ID, error
messages, retry count, timestamps.

#5 Dashboard: Enhanced with recent activity feed from logs table,
migration controller action for PP Pro import, quick links sidebar.

#2 Telegram: Already implemented in scaffold, provider.php fixed.

Also fixes: All 9 service plugin provider.php files had broken
namespace references from bash heredoc escaping.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:11:20 -05:00
gitea-actions[bot] 7e4cce51de chore: update updates.xml (development: 01.00.01-dev-dev) [skip ci] 2026-05-28 17:55:19 +00:00
gitea-actions[bot] a2e2a60dea chore(version): auto-bump patch 01.00.01-dev [skip ci] 2026-05-28 17:55:17 +00:00
Jonathan Miller be3eb9b8e7 feat: initial MokoJoomCross package scaffold
Universal: Cascade Main -> Dev / Cascade main -> branches (push) Has been cancelled
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update updates.xml (push) Has been cancelled
Cross-posting Joomla content to social media, email marketing, and chat
platforms. Plugin-based service architecture with custom mokojoomcross
plugin group.

14 sub-extensions:
- com_mokojoomcross (admin component: dashboard, posts, services, logs)
- plg_system_mokojoomcross (triggers cross-posting on article publish)
- plg_content_mokojoomcross (admin article status badges)
- plg_webservices_mokojoomcross (REST API)
- 9 service plugins: facebook, twitter, linkedin, mastodon, bluesky,
  mailchimp, telegram, discord, slack

Includes Perfect Publisher Pro migration tool, message templates with
placeholders, post queue with retry logic, and default/custom bot modes
for services supporting universal bots.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 12:54:43 -05:00