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: v1.2.0...v1.3.0