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
:shortcodetypeahead (#73) - compose:
Shift+Entersoft 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/mcpto 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=submitto 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
windowis 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
windowis 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/amd64andlinux/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-uploadsscheduled 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 ↗fix cloud Stripe redirect
Full Changelog: https://github.com/coollabsio/shoutrrr/compare/v1.3.0-rc.2...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
:shortcodetypeahead (#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
:shortcodetypeahead (#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
/mcpendpoint (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_COUNTto 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