Skip to content

v0.20.0

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Nov 22:16
b1bbefe

Added

  • LinkedIn Company Pages: the new LinkedIn Company Page tile signs in with the organization permissions and lets you pick your profile and/or the Pages where you are a Super admin or Content admin; each becomes its own channel publishing text, image, video and article posts as the Page. The regular LinkedIn profile connection is unchanged and works without the Community Management API product. Channels expose metadata.subKind: "organization" in GET /api/v1/channels. See DEPLOY.
  • TikTok photo posts: 1–35 images (WebP/JPEG, ≤ 20 MB each) through TikTok's Photo Post API, in the composer and API, as Direct Post (creator privacy, comments and commercial disclosure with confirmation) or to the TikTok inbox. Photos are pulled from TIKTOK_PULL_URL_PREFIX; a URL outside the verified prefix is rejected before sending. Progress is tracked until TikTok reports the final state and the public post id when available. See DEPLOY.
  • Threads: mixed carousels with 2–20 images/videos, available in the composer and API. Container readiness and publication progress survive worker restarts; an uncertain publish is checked without another publish attempt.
  • Telegram publishing: a connected bot can publish scheduled text, photo, video and 2–10 item albums to a channel or group. Set Publish to (@username or chat id) in the channel settings or with PATCH /api/v1/channels/{id} (publish_target); PostStack checks that the bot is an administrator with permission to post before saving. Captions follow Telegram limits (4096 text, 1024 media), media is fetched by Telegram from its URL (photo ≤ 5 MB, video ≤ 20 MB), rate limits honor retry_after, and a post links to its t.me message for public channels. See Telegram connections.
  • Stories: an Instagram Story video over 60 s (Story format or auto-Story in media mode) is split into consecutive 60 s clips and published as separate Stories in order; a retry never repeats a published clip. The composer shows the number of Stories before publishing, POST /api/v1/posts/{postId}/publish returns storySegments, and the post in Queue shows the split and the auto-Story card-fallback reason. See Stories.

Changed

  • POST /api/v1/posts/{postId}/publish returns storySegmentsPending: true while a Story video from a URL is still being ingested; GET /api/v1/posts/{postId} then reports delivery.storySegments (Instagram) once its length is known.
  • TikTok photo captions allow 4000 characters in the composer (video stays 2200), the carousel label shows the real media limit of the selected channels (TikTok photos 35), and the two TikTok media-URL errors are distinct: outside TIKTOK_PULL_URL_PREFIX vs TikTok's url_ownership_unverified (verify the prefix in the TikTok portal for the app mode in use).
  • Channel connection: an OAuth session that timed out (state cookie gone after 10 min, e.g. a slow provider login) now shows "The connection session expired — please try again" instead of the generic invalid-state message.
  • Auto-Story media mode accepts Facebook Story video up to 120 s (was 90 s), as measured on a live Page.

Fixed

  • Threads: a newly connected channel's ~1 h token is exchanged for a 60-day token (refreshed before expiry), so publishing no longer fails an hour after connecting. A container request that Threads rejects now shows the real error (expired token marks the channel Needs reauth) and can be retried after reconnecting; only a timeout or network failure still asks for a manual check. Channel health checks and the hourly sweep detect an expired Threads token.
  • Publishing distinguishes provider permission, quota and X credit errors from expired tokens, and respects Retry-After and X rate-limit reset headers while preserving uncertain-publication recovery.