Documentation menu

Changelog

Shoutrrr releases, pulled from GitHub.

v1.3.1

v1.3.1 ↗

A focused follow-up to v1.3.0: an analytics summary redesign, a per-request/external-lookup caching pass, and a handful of publishing and composer fixes across Meta, Threads, and the post editor.

✨ Features

  • analytics: summary stat tiles and redesigned follower chart (#116)

⚡ Performance

  • perf: cache expensive per-request and external lookups (#111)

🐛 Fixes

  • meta: handle duplicate OAuth callbacks (471bd8e)
  • threads: fail deletes rejected by the Graph API (ce2766c)
  • posts: proxy media through a same-origin endpoint for editors (#113)
  • feedback: prevent screenshot capture failure on cross-origin images (#112)

Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.3.0...v1.3.1

v1.3.0

v1.3.0 ↗

The largest release yet: full Meta platform support (Facebook, Instagram, Threads), Discord webhooks, a public HTTP API, an engagement inbox with reply triage, workspace subscriptions with usage metering and X cost budgets, and a Radix → Base UI rewrite — plus a long tail of publishing, security, and Postgres-compatibility fixes.

✨ Features

Platforms & publishing

  • meta: Facebook, Instagram & Threads publishing, metrics and engagement (#75)
  • discord: integration via channel webhooks (#84)
  • publishing: Reels and Stories publishing with a per-account format picker (#106)
  • compose: Facebook, Instagram & Threads compose previews (#108)
  • publishing: Instagram/Threads image conversion and fixes (#101)
  • x: opt-in quote tweets from a pasted status link (#71)
  • compose: accept more video formats via in-browser conversion (#88)

Composer & engagement

  • compose: emoji browser — Frimousse picker + inline :shortcode typeahead (#73)
  • compose: Shift+Enter soft newline + platform-accurate blank-line preview (#72)
  • compose: show both mention modes and keep cleared handles blank (#105)
  • compose: properly refresh recent post + show media in the post list (#103)
  • engagement: emoji picker and mentions in the quick reply box (#93)
  • engagement: keyboard triage and dummy inbox seeder (df3940c)
  • engagement: persist reply conversation roots (52c7cb6)
  • mentions: resolve LinkedIn org URNs for mention tagging (#98)

Billing, usage & metrics

  • billing: workspace subscriptions and publish gates (f77690b)
  • usage: usage metering base (#63)
  • usage: track X API cost budgets (65fb01b)
  • usage: per-workspace X budgets and reworked instance usage page (#110)
  • usage: instance usage reporting (8c75f01)
  • billing: promotion codes and tax ID collection (2c2bbf7)
  • metrics: age-banded polling with unchanged-streak backoff (#95)
  • engagement: fix X replies not loading + scale reply-fetch (#91)
  • analytics: seed demo metrics and toggle chart series (7b823fc)

Instance & workspace administration

  • instance: enable/disable platforms in instance settings (#78)
  • workspace: enable/disable connected accounts per workspace (#79)
  • engagement: gate LinkedIn reply fetching behind a capability scope (#102)
  • settings: move workspace and instance nav into the sidebar (cb90806)
  • settings: per-platform polling controls (8f618c0)
  • sidebar: billing-aware footer + hoisted workspace settings + update indicator (#89)
  • feedback: in-app feedback widget with Discord delivery (#109)

Platform, API & infrastructure

  • api: public HTTP API (#74)
  • ui: migrate UI from Radix to Base UI (#81)
  • mcp: add laravel/mcp to enhance server capabilities (04a55f7)
  • storage: configurable file storage + public images disk (ce4f0de, bbb4843)
  • ci: build and publish multi-platform (amd64/arm64) images (947e307)
  • auth: self-provision Passport encryption keys (#87)
  • session: extend default session lifetime to seven days (aba1128)
  • observability: opt-in Sentry error & performance monitoring (a92dc55)

🐛 Fixes

  • publishing: close precheck and connector gaps across every platform (#100)
  • linkedin: escape little-text-format reserved chars (#99)
  • db: make the schema and queries PostgreSQL-compatible (#85)
  • security: allow form redirects to any HTTPS service, incl. Stripe billing (2b08da3, 8bd2a3a)
  • engagement: stop like/unlike and reply actions from silently failing (#92)
  • engagement: only treat pasted images as images (#94)
  • engagement: fix author name truncation in reply views (#97)
  • compose: resolve 422 on edited-video upload + allow media host in CSP (#70)
  • bluesky: enforce one-GIF/no-mix rule before posting (#69)
  • workspace: prevent workspace logo distortion in the selector (3cd75d7)
  • ui: show selected label not raw value in Base UI selects (a154981)
  • ui: add type=submit to inert form buttons after the Base UI migration (a2996a9)
  • auth: repair email verification link and resend button (2173b31)
  • accounts: repair Discord reconnect button (dc63d27)
  • sentry: skip initialization when window is undefined (#96)
  • x: align publish limits and usage reporting (0adf185)
  • workspaces: enforce billing and publishing invariants (c0755ee)
  • media: survive S3 listing errors in the prune-uploads job (11ba652)
  • docker: copy generated emoji data into the production image (d90b678)
  • ci: correct jq filter for manifest digest extraction (e074645)

Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.2.0...v1.3.0

🎉 New Contributors

  • @kwstasna made their first contribution in #108

v1.3.0-rc.8

Pre-release v1.3.0-rc.8 ↗

Features

  • Post list refresh & media — the recent-post list now refreshes properly and shows attached media inline (#103).
  • LinkedIn org mentions — mention tagging resolves LinkedIn organization URNs so org mentions render as real tags (#98).
  • Age-banded metrics polling — metrics polling is age-banded with an unchanged-streak backoff to cut redundant fetches (#95).
  • LinkedIn reply capability gate — LinkedIn reply fetching is gated behind an opt-in Community Management capability scope (#102).
  • Instagram/Threads image conversion — image conversion and related publishing fixes for Instagram and Threads (#101).

Fixes

  • Closed publish-precheck and connector gaps across every platform (#100).
  • Escaped LinkedIn Little Text Format reserved characters so post bodies are no longer silently truncated (#99).
  • Fixed author-name truncation in reply views (#97).
  • Skipped Sentry initialization when window is undefined (#96).

Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.3.0-rc.7...v1.3.0-rc.8

v1.3.0-rc.7

Pre-release v1.3.0-rc.7 ↗

Features

  • Quick reply upgrades — the engagement inbox reply box now has an emoji picker and @-mention support.
  • Keyboard triage — the engagement inbox supports keyboard-driven triage for faster review.
  • Sidebar settings — workspace and instance settings now live directly in the sidebar, with the settings nav flattened into direct destinations.
  • Analytics chart series — analytics charts let you toggle individual series on and off.
  • Public images disk & compose polling — added a public images storage disk and status polling while a post is composing/publishing.

Fixes

  • Like/unlike and reply actions no longer fail silently when they hit an error.
  • Pasted content is only treated as an image when it actually is one.
  • Metrics and reply fetches are now skipped for disabled accounts.

Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.3.0-rc.6...v1.3.0-rc.7

v1.3.0-rc.6

Pre-release v1.3.0-rc.6 ↗

Features

  • Multi-platform Docker images — production images are now built and published for both linux/amd64 and linux/arm64.
  • Configurable file storage — uploads can now be pointed at a configurable storage disk (e.g. an S3-compatible bucket).
  • X replies now load reliably — fixed X engagement replies failing to load, and scaled reply fetching with an adaptive polling cadence, per-account rate-limit handling, and batched conversation lookups paginated via next_token.
  • Billing-aware sidebar — new sidebar footer (plan chip on cloud, community card when self-hosted), hoisted workspace settings, and an update-available indicator on the version badge.
  • Longer sessions — the default session lifetime is now seven days.
  • Engagement poll interval in settings is now labeled as a minimum floor.
  • The media editor's apply button is relabeled when the media is left unedited.

Fixes

  • Repaired the Discord account reconnect button.
  • Bundled the generated emoji-picker data into the production image so the picker works when self-hosted.
  • The prune-uploads scheduled job now survives S3 listing errors instead of failing the run.

Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.3.0-rc.5...v1.3.0-rc.6

v1.3.0-rc.5

Pre-release v1.3.0-rc.5 ↗

Features

  • Added Stripe promotion code support, tax ID collection, and automatic tax calculation for billing.

Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.3.0-rc.4...v1.3.0-rc.5

v1.3.0-rc.3

Pre-release v1.3.0-rc.3 ↗

v1.3.0-rc.2

Pre-release v1.3.0-rc.2 ↗

A feature-packed release: two new platforms (Meta & Discord), a public HTTP API, workspace subscriptions & usage metering, opt-in Sentry monitoring, and a full UI framework migration.

🔁 Changes since v1.3.0-rc.1

  • feat: opt-in Sentry error & performance monitoring (backend + browser)
  • fix(auth): email-verification links no longer 403 when an email provider appends tracking params to the link
  • fix(auth): the "Resend verification email" button works again (regressed in the Base UI migration) and now confirms with a toast

✨ Features

New platforms

  • meta: Facebook, Instagram & Threads — publishing, metrics and engagement (#75)
  • discord: publish via channel webhooks (#84)

Platform & API

  • api: HTTP API for programmatic posting (#74)
  • billing: workspace subscriptions with publish gates and X usage limits (#58)
  • usage: per-workspace platform-API usage metering (#63)
  • settings: enable/disable platforms instance-wide (#78)
  • workspaces: enable/disable connected accounts per workspace (#79)
  • settings: per-platform polling controls and instance usage reporting (8f618c0, 8c75f01)

Observability

  • sentry: opt-in error & performance monitoring for the backend and browser — disabled unless a DSN is configured (a92dc55)

Composer & X

  • compose: emoji browser — Frimousse picker + inline :shortcode typeahead (#73)
  • compose: Shift+Enter soft newline with platform-accurate blank-line preview (#72)
  • compose: accept more video formats via in-browser conversion (#88)
  • x: opt-in quote tweets from a pasted status link (#71)

UI

  • ui: migrate from Radix to Base UI (#81)

🐛 Fixes

  • auth: keep email-verification links valid when an ESP appends click-tracking params to them (2173b31)
  • auth: fix the inert "Resend verification email" button and confirm the resend with a toast (2173b31)
  • db: make the schema and queries PostgreSQL-compatible (#85)
  • compose: resolve 422 on edited-video upload + allow media storage host in CSP (#70)
  • bluesky: block one-GIF/no-mix rule before posting (#69)
  • compose: restore clicks on the tab strip and wire up the "+N more" menu (8691c76)
  • sidebar: center collapsed icon rail (1d83e7f)
  • engagement: block replies from disabled accounts, avoid stamping failed reply fetches (08df0d3, 79f7970)

🔧 Self-hosting / Infra

  • passport: self-provision encryption keys (#87)
  • deps: bump the github-actions group (#77) and attest-build-provenance (#67)

Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.2.0...v1.3.0-rc.2

v1.3.0-rc.1

Pre-release v1.3.0-rc.1 ↗

A feature-packed release: two new platforms (Meta & Discord), a public HTTP API, workspace subscriptions & usage metering, and a full UI framework migration.

✨ Features

New platforms

  • meta: Facebook, Instagram & Threads — publishing, metrics and engagement (#75)
  • discord: publish via channel webhooks (#84)

Platform & API

  • api: HTTP API for programmatic posting (#74)
  • billing: workspace subscriptions with publish gates and X usage limits (#58)
  • usage: per-workspace platform-API usage metering (#63)
  • settings: enable/disable platforms instance-wide (#78)
  • workspaces: enable/disable connected accounts per workspace (#79)
  • settings: per-platform polling controls and instance usage reporting (8f618c0, 8c75f01)

Composer & X

  • compose: emoji browser — Frimousse picker + inline :shortcode typeahead (#73)
  • compose: Shift+Enter soft newline with platform-accurate blank-line preview (#72)
  • compose: accept more video formats via in-browser conversion (#88)
  • x: opt-in quote tweets from a pasted status link (#71)

UI

  • ui: migrate from Radix to Base UI (#81)

🐛 Fixes

  • db: make the schema and queries PostgreSQL-compatible (#85)
  • compose: resolve 422 on edited-video upload + allow media storage host in CSP (#70)
  • bluesky: block one-GIF/no-mix rule before posting (#69)
  • compose: restore clicks on the tab strip and wire up the "+N more" menu (8691c76)
  • sidebar: center collapsed icon rail (1d83e7f)
  • engagement: block replies from disabled accounts, avoid stamping failed reply fetches (08df0d3, 79f7970)

🔧 Self-hosting / Infra

  • passport: self-provision encryption keys (#87)
  • deps: bump the github-actions group (#77) and attest-build-provenance (#67)

Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.2.0...v1.3.0-rc.1

v1.2.0

v1.2.0 ↗

A release centered on Bluesky OAuth support, composer workflow improvements, and MCP endpoint hardening.

✨ Features

  • bluesky: OAuth integration with enhancements and alt text support (#64)
  • bluesky: OAuth account connections (#62)
  • bluesky: custom instance selection (31ab09f)
  • compose: show timezone settings in the time picker (6a473ec)
  • compose: block publishing to disconnected accounts (6c0464c)
  • compose: keyboard shortcut for submitting posts (#60)
  • mcp: friendly browser landing page for the /mcp endpoint (1d19e57)

🐛 Fixes

  • bluesky: serialize OAuth token refresh to avoid a rotation race (6b9b036)
  • bluesky: validate OAuth service discovery URLs (4f0edbb)
  • gif: fix GIF publishing on X and Bluesky (#65)
  • linkedin: publish all text segments (deaf09b)
  • composer: improved highlight regex and tests (#57)
  • mcp: never serve the landing page to SSE/GET protocol clients (9dedb3e)
  • accounts: normalize Bluesky handles with @ prefix (#59)

Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.1.0...v1.2.0

🎉 New Contributors

  • @scanash00 made their first contribution in #64
  • @laborin made their first contribution in #65

v1.1.0

v1.1.0 ↗

A release focused on self-hosting hardening, security patches, and composer/settings improvements.

✨ Features

  • compose: link URLs in post previews (c8f94b1)
  • compose: improved mention picker (#47)
  • settings: profile and workspace photo uploads (437b6b6)

🐛 Fixes

  • notifications: correct unread notification position (#56)
  • cmd+k: fix global search filtering (#48)
  • cache: prevent stale Inertia page state (bfedb37)

🚀 Self-hosting / Deployment

  • pass env file through compose files for missing configurations (#55)
  • trust reverse-proxy headers via TRUSTED_PROXIES (#53)
  • handle TLS mixed-content issues behind proxies (#54)
  • default QUEUE_WORKER_COUNT to 1 so supervisord starts (#52)

🔒 Security / CI

  • update Guzzle to patch security advisories (0b57b8f)
  • add supply-chain security scanning to CI (682a707)

Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.0.0...v1.1.0

🎉 New Contributors

  • @raulpopadineti made their first contribution in #47
  • @CyrisXD made their first contribution in #52

v1.0.0

v1.0.0 ↗

init 🌮 release