Pixelfed
Photo sharing the way it should be, without algorithmic barriers
Alternative to: Instagram
About
Versions (44)
v0.12.11
2026-09-14Changes since v0.12.10
Full changelog: v0.12.10…staging
- Fix SoftwareUpdate notices (6ddc803ae)
- Use now() helper instead of Carbon::now() for current-time access (277b8aa97)
- Replace Str::of() fluent chains with static Str::/native calls (a42449342)
- Use LazilyRefreshDatabase instead of plain RefreshDatabase in tests (255bdaa2a)
- Upgrade to Laravel 13 (42620e584)
- Fix Redis queue retry_after being shorter than Horizon’s timeout (582083a7f)
- Update queue.php (4f0610274)
- Split Horizon into priority-based supervisors, add balanceCooldown and notification routing (bbe7cfa8e)
- Update horizon.php (7e468230d)
- Fix dangling DB transactions in CustomFilterController (8fa18ff8c)
- Stop swallowing overlay ValidationException into a generic 500 (62d3bc840)
- Fix tests (888fa1bc3)
- Update dependabot.yml (5b566752e)
- Update README.md (b64c37d7e)
- Fix URL construction for API timeline request (caffc40a4)
- Create .env.full (e8093a28e)
- Change storage size calculation from floor to ceil (ad686571b)
- Delete .env.full (2e4562957)
- Update UserStorageServiceTest.php (07367c4ea)
- Add redirect for Horizon dashboard (815b13862)
- Fix story video upload probe path (#7203)
- Add failure logging to admin:MediaMoveStorageLocalToCloud and enable debug by default (0c68b6a68)
- polish (b2a068b93)
- Make original_sha256 verify opt-in in MediaMoveStorageLocalToCloud (441a94e73)
- Revert debug-by-default in MediaMoveStorageLocalToCloud (438560415)
- Remove sha256 verification from MediaMoveStorageLocalToCloud (341351c47)
- polish (6ffdc53de)
- Fix web notifications not loading (#7195)
- Add notification epoch inline fallback test (#7162)
- Normalize cropped story images to the 1080x1920 canvas (#7215)
- chore(deps-dev): bump laravel/pint from 1.30.5 to 1.31.1 (1ba0535bb)
- chore(deps): bump league/iso3166 from 4.4.0 to 4.5.0 (d1081f2bc)
- chore(deps-dev): bump laravel/telescope from 5.23.0 to 5.24.0 (0388d3e4f)
- chore(deps): bump laravel-notification-channels/webpush (e36d42f66)
- chore(deps): bump laravel/horizon from 5.48.3 to 5.49.0 (e654143a1)
- Update NotificationService (9e69d449d)
- Delete NotificationEpochUpdatePipeline.php (15b46186b)
- Delete NotificationEpochFallbackTest.php (9c39eaaf9)
- Delete NotificationEpochUpdate.php (7a98ebfe5)
- Refactor StatusController (1e6ce226e)
- Fix StatusDelete job, add logging (6e0d8454f)
- Update AP Delivery Service, fix signing and delivery (868e09b64)
- Update HttpSignature, improve signing (ed63be4d4)
- Fix StatusDelete, handle StatusService deletion (f37137678)
- Update PublicApiController, fix getStatus to use database check (a3160cdd2)
- Update federation fanout (5fc343dd4)
- Improve federation handling (fbd52dd8f)
- Fix stale-CSRF login recovery render callback (c9c897c4e)
- Fix missing email verification dispatch on settings email change (9d839f7b5)
- Update AdminApiController and PublicTimelineService (27bc6e792)
- Add new admin routes (cb3da9999)
- Fix NetworkTimelineService (70bab963b)
- Update AdminApiController, fix missing resource (96229868f)
- Update AccountService and AdminApiController (6232d35d9)
- Update AdminApiController, fix typo (b2deebb72)
- Update AdminStatsService, fix reports_monthly stat (6a2208087)
- Fix AdminApiController profiles endpoint, dont include deleted accounts (e0550c441)
- Use absolute path for /horizon dashboard redirect (ac872c12e)
- Invalidate notification cache when deleting a status (f1e4536d1)
- Guard home timeline filter against null account (b13c374f2)
- Escape message in curated register details email to fix reflected XSS (623f03bb6)
- Update in-app registration (1cead5cf6)
- Update unbookmark endpoint (b0ca63202)
- Update StoryComposeController (914ab1196)
- Lint PostImportController (22108f8f1)
- Update ApiV1Controller (d2a45ee4d)
- Update ActivityPub Inbox update handling (13a8a255f)
- Update InboxWorker, improve handling (96acfb3d9)
- Update LoginController (538a11ccc)
- Update LoginController (a27033d2f)
- Update Helpers (fbd0922fd)
- Import Purify facade in ApiV1Controller to fix larastan class.notFound (5ec239404)
- Extend story author-key TTL instead of overwriting so it survives to the longest-lived story (fe382bdb8)
- Validate report object_id as a positive integer to fix 500 on array input (b4bd3c87a)
- Send verification email for admin-invite users that require verification (cfbdabdd6)
- Fix remove-all follower purge chunkById key and gate the route behind dangerzone (7b90bc869)
- Update PrivacySettings.php (7a5626766)
- Purge status_edits on account and status deletion (60284a871)
- Enforce can-post role check on POST /api/v2/media (3a2360657)
- Validate remote update attachments before detaching existing media (9b829ca56)
- Mark OIDC login session password-confirmed to fix dangerzone lockout (fbca487bc)
- Isolate fanout delivery failures from StatusDelete local cleanup (8a4567a5c)
- fix(federation): swallow ConnectionException on synchronous AP delivery (729396302)
- test(federation): run AP delivery tests in production env (7b11b72e1)
- Make the landing page translatable (443962c92)
- Fix last untranslated strings on the login + explore pages (ac790b1d8)
- More translatable strings : landing, privacy policy, terms (6537787c4)
- Update README.md (c517650b5)
- Automate Crowdin sync via GitHub Action (9002d6ea2)
- Remove dead notification.php and timeline.php lang files (0f10ec0a4)
- Use locale_get_display_name for language labels (f4dbddd8b)
- Revert “Remove dead notification.php and timeline.php lang files” (2eaf0eaf3)
- polish (07f7631b8)
- Fix cached-page 500s and flaky smoke/API tests (a14fba166)
- Update README.md (08914ad8b)
- Add experimental DB-matrix test workflow (mysql/mariadb/postgres) (983e51240)
- Modify workflow triggers for staging and unstable branches (d574ddf1f)
- Compile FFmpeg from source in Docker image (484b92138)
- Disable buildx provenance/SBOM attestations for GHCR images (19e4620de)
- Update docker-tag.yml (dfb81a696)
- Fix MariaDB driver detection and reblog caption null inserts (e3b6cebf2)
- Add isMysql/isMariadb split helpers for MySQL-vs-MariaDB divergence (30440c5e0)
- Add db_is_sqlite helper for the test connection (40c95c8aa)
- Update php-laravel-tests-db-matrix.yml (acc827381)
- Isolate Redis keys per DB matrix entry; use mariadb connection (fe289c312)
- Bump DB matrix to PHP 8.5 and mysql 8.5 (5bdc18e47)
- Make DB matrix workflow manual-only (workflow_dispatch) (8eda1d039)
- Replace blocked crowdin/github-action with Crowdin CLI (a3931bb07)
- Build compiled assets (075aa781a)
- Update CHANGELOG.md (4afbca6c1)
- Update CHANGELOG.md (9c2e53018)
- Update crowdin.yml (f49e66033)
- chore(deps): bump intervention/image-driver-vips from 4.1.4 to 4.1.5 (b8ce1b0e5)
- chore(deps-dev): bump larastan/larastan from 3.11.0 to 3.12.0 (a372ff6f8)
- chore(deps-dev): bump laravel/pint from 1.31.1 to 1.32.1 (31022eb79)
- Update CHANGELOG.md (2b057a9e0)
- Upgrade resend/resend-php to ^1.0 (e7e83b96e)
- Update crowdin.yml (516236856)
- Add HasMany return type to CustomFilter::statuses() for Larastan (11d547415)
- Fix mobile_registration attribute (c5f69d6ed)
- Update crowdin.yml (711389a99)
- Change section title to ‘Host your own instance with’ (a005aa485)
- Enable auto approval for imported translations (7a59b80cf)
- Update crowdin.yml (ef13a14b4)
- Delete .github/workflows/crowdin.yml (b1f35c6a1)
- Update crowdin.yml (14d970da6)
- Default image driver to vips (99c3f2f6b)
- Install libvips on CI runners and test on the vips driver (ddc617a8d)
- Add AccountRevocationService (83c9b86ae)
- Update WebfingerService (e67182c9b)
- Update Instagram Imports (68b1a5596)
- Remove deprecated command (31c652427)
- Update ImageThumbnailSupersedeTest.php (79ad66415)
- Update i18n (4053439e7)
- fix(docker): stop caching /sw.js long-term, quiet 200 access logs (b3e56b33e)
- Update docker-compose.yml (a93b28c03)
- Update docker-compose.yml (32c97df68)