trypost/app
Paulo Castellano d336f79059 feat(social): reschedule publish on PlatformUnavailable instead of failing
Before: a scheduled post hitting a platform outage was marked Failed —
user had to manually retry. Now the job reschedules itself for 10
minutes later and the PostPlatform shows status "Retrying". Loops
indefinitely until the platform accepts the post.

- Adds PostPlatformStatus::Retrying (existing string column, no migration)
- PublishToSocialPlatform: PlatformUnavailable catch now calls
  rescheduleForRetry() which (a) updates the row to Retrying with
  retry_count + next_attempt_at in error_context, and (b) dispatches
  itself with a 10-minute delay. updatePostStatus() naturally leaves
  the parent Post in Publishing because Retrying is neither Published
  nor Failed.
- Same treatment for the retry-refresh edge case (publisher throws
  TokenExpired, refresh subsequently fails with PlatformUnavailable).
- i18n + frontend status config updated (en, pt-BR, es) for both
  posts.status.retrying and posts.edit.status.retrying.
- Tests: 3 new tests covering the dispatched job, the edge case path,
  and retry_count increment across attempts.
2026-05-19 10:03:30 -03:00
..
Actions chore: drop redundant fallback on config('cashier.trial_days') 2026-05-14 20:00:24 -03:00
Ai/Agents chore: remove unused Gemini provider extension and debug middleware 2026-05-11 21:24:11 -03:00
Broadcasting refactor: introduce VideoPreview component and standardize media handling across post previews 2026-05-08 18:30:11 -03:00
Concerns refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
Console/Commands fix(social): proactive token refresh actually refreshes (not just verifies) 2026-05-12 19:36:35 -03:00
DataTransferObjects feat: AI image generation pipeline and post creation overhaul 2026-05-08 13:38:30 -03:00
Enums feat(social): reschedule publish on PlatformUnavailable instead of failing 2026-05-19 10:03:30 -03:00
Events refactor: prefer string interpolation over concatenation for channel names 2026-05-08 19:22:01 -03:00
Exceptions refactor(social): TokenRedactor::redact accepts nullable 2026-05-19 09:25:01 -03:00
Features feat: transition AI usage from feature-based limits to a centralized monthly credit system with token tracking. 2026-05-03 19:36:26 -03:00
Helpers fix: correct Upload.php filename case for Linux CI 2026-03-31 12:01:48 -03:00
Http refactor(social): use config for OAuth hosts everywhere 2026-05-19 08:34:35 -03:00
Jobs feat(social): reschedule publish on PlatformUnavailable instead of failing 2026-05-19 10:03:30 -03:00
Listeners feat(billing): clear trial_ends_at on subscription created + add tests 2026-05-14 20:23:35 -03:00
Mail feat: @mentions in comments, AI Action layer + MCP tools, settings tabs 2026-05-01 20:59:03 -03:00
Mcp refactor(media): MediaUploadResource + ws→workspace_id + cleanup 2026-05-15 16:48:09 -03:00
Models feat(media): add upload_token column for MCP signed uploads 2026-05-15 16:02:46 -03:00
Policies refactor: move workspace tenancy check on Post into PostPolicy 2026-05-04 13:20:52 -03:00
Providers chore: remove unused Gemini provider extension and debug middleware 2026-05-11 21:24:11 -03:00
Rules refactor(posts): tighten content-length caps and simplify contentOverflow 2026-05-11 20:06:44 -03:00
Services refactor(social): drop redundant \$account->refresh() after CV refresh 2026-05-19 09:52:49 -03:00
Socialite refactor: centralize social API base URLs into the configuration file to improve maintainability and environment flexibility 2026-05-02 13:49:20 -03:00
Support feat: AI image generation pipeline and post creation overhaul 2026-05-08 13:38:30 -03:00