Notification status hydration compared item_type strictly against Status::class (App\Models\Status). Rows created before the App\ -> App\Models\ namespace migration store the legacy 'App\Status' morph-map alias, so the comparison failed and favourite/comment/mention notifications came back with no attached status. The web UI filters those out client-side but keeps paginating (response never empty), leaving the infinite-scroll loader spinning forever. - NotificationTransformer + Mastodon NotificationTransformer: match both the legacy alias and the current FQCN when hydrating status. - NotificationService::buildNotification: same alias-aware deleted-item guard. - NotificationService::getMaxPage/getMinPage: filter out unrenderable notifications (status-type without a hydrated status) so the endpoint never returns rows the UI discards, fixing pagination termination; warn on unexpected notification types. - Tests for transformer hydration (legacy + current), renderable filtering, the unexpected-type warning, and pagination termination. |
2 weeks ago | |
|---|---|---|
| .ddev | 1 year ago | |
| .github | 2 weeks ago | |
| .vscode | ||
| app | 2 weeks ago | |
| bootstrap | 2 weeks ago | |
| config | 2 weeks ago | |
| database | 2 weeks ago | |
| lang | 3 weeks ago | |
| notes | 4 weeks ago | |
| public | 2 weeks ago | |
| resources | 2 weeks ago | |
| routes | 2 weeks ago | |
| storage | ||
| tests | 2 weeks ago | |
| .dockerignore | 2 weeks ago | |
| .editorconfig | ||
| .env.docker.example | 4 weeks ago | |
| .env.example | 4 weeks ago | |
| .env.testing | 3 weeks ago | |
| .gitattributes | ||
| .gitignore | 4 weeks ago | |
| .markdownlint.json | ||
| .node-version | ||
| .shellcheckrc | ||
| CHANGELOG.md | 2 weeks ago | |
| CODEOWNERS | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | 2 years ago | |
| DOCKER_COMPOSE_SETUP.md | 4 weeks ago | |
| Dockerfile | 1 month ago | |
| LICENSE | ||
| README.md | 2 weeks ago | |
| SECURITY.md | ||
| artisan | 3 weeks ago | |
| composer.json | 2 weeks ago | |
| composer.lock | 2 weeks ago | |
| crowdin.yml | 3 weeks ago | |
| docker-compose.test.yml | 4 weeks ago | |
| docker-compose.yml | 4 weeks ago | |
| funding.json | 2 years ago | |
| package-lock.json | 3 weeks ago | |
| package.json | 3 weeks ago | |
| phpstan.neon | 3 weeks ago | |
| phpunit.xml | 3 weeks ago | |
| pint.json | 4 weeks ago | |
| psalm-baseline.xml | 4 weeks ago | |
| psalm.xml | 4 weeks ago | |
| server.php | ||
| webpack.mix.js | 1 year ago | |
README.md
Introduction
Photo sharing the way it should be. Pixelfed lets your casual shots and creative photography find their audience naturally, without algorithmic barriers. Join millions of people sharing across the fediverse.
Database Support
- MySQL 9+ is officially supported (Strict mode is not default).
- MariaDB 11+ is officially supported (Strict mode is default).
- PostgreSQL 14+ is best effort as of writing. (Please report any regressions).
Notice: We need to improve the ecosystem to test/validate the codebase to be database agnostic, but this will require considerable engineering effort. Thank you for your understanding.
Official Documentation
Documentation for Pixelfed can be found on the Pixelfed documentation website.
Run on YunoHost
Pixelfed app for YunoHost. See the package source code
License
Pixelfed is open-sourced software licensed under the AGPL license.
Communication
The ways you can communicate on the project are below. Before interacting, please read through the Code Of Conduct.
- Mastodon: @pixelfed@mastodon.social
- E-mail: hello@pixelfed.org
Pixelfed Sponsors
We would like to extend our thanks to the following sponsors for funding Pixelfed development. If you are interested in becoming a sponsor, please visit the Pixelfed Patreon Page
- NLnet Foundation and NGI0 Discovery, part of the Next Generation Internet initiative.
This project is supported by:
