trypost/config
Patrick Schrall 43de7372a6 feat(bluesky): support video upload and embedding
BlueskyPublisher only attached images; posts whose media was a video
published as text-only with no embed. Bluesky videos do not use the PDS
uploadBlob path — they go through the separate video service
(video.bsky.app), which transcodes the file and writes the resulting blob
back to the account's PDS.

Add a video path that runs when no image embed was built (a post carries
either images or one video, never both):

  1. Resolve the account's real PDS host from its DID document (entryway
     accounts store bsky.social as `service`, but the video service-auth
     audience must be the actual *.host.bsky.network PDS).
  2. Mint a com.atproto.server.getServiceAuth token scoped to uploadBlob.
  3. POST the bytes to app.bsky.video.uploadVideo.
  4. Poll app.bsky.video.getJobStatus until the blob is ready, then embed
     it as app.bsky.embed.video.

Failures (download, oversized >100MB, service-auth, transcode) log and
return null so the post still publishes as text rather than crashing the
job — mirroring uploadBlob(). New NSID constants live in BlueskyLexicon
and the video service / PLC directory hosts are configurable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 08:00:33 +02:00
..
ai-credits.php feat: AI image generation pipeline and post creation overhaul 2026-05-08 13:38:30 -03:00
ai.php refactor(mcp): move upload config from trypost.mcp to ai.mcp 2026-05-15 16:25:26 -03:00
app.php Make webhook host configurable via WEBHOOK_URL (sendkit-style domain group) 2026-06-14 09:31:00 -03:00
auth.php feat: migrate custom API token implementation to Laravel Passport for authentication and token management 2026-05-03 18:38:17 -03:00
broadcasting.php refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
cache.php fix: cast cached post count to int and align local cache default to redis 2026-05-07 14:31:07 -03:00
cashier.php fix(billing): update default trial days to 8 in cashier config 2026-05-21 20:04:16 -03:00
chunk-upload.php refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
cors.php refactor: standardize MCP tool responses using API resources and enforce strict structural validation in feature tests 2026-05-03 21:34:20 -03:00
database.php refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
filesystems.php feat(storage): DigitalOcean Spaces disk + env documentation 2026-05-19 12:38:29 -03:00
horizon.php feat(automations): implement automation features and UI enhancements 2026-05-24 09:17:19 -03:00
inertia.php refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
languages.php refactor: auth split layout, subscribe redesign, onboarding, i18n, cookie locale 2026-03-30 11:53:42 -03:00
logging.php refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
mail.php refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
passport.php feat: add Passport configuration file with default authentication settings 2026-05-03 20:06:13 -03:00
queue.php fix: overhaul social publishing — validation, uploads, token refresh 2026-03-31 19:25:19 -03:00
reverb.php refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
services.php feat(channels): add Discord as a social channel 2026-06-16 14:44:00 -03:00
session.php fix: increase OAuth callback close delay to 5s 2026-04-01 14:55:45 -03:00
telescope.php refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
trypost.php feat(bluesky): support video upload and embedding 2026-06-23 08:00:33 +02:00