users.storage_used only ever grew: uploads incremented it but no deletion path decremented it, so users hit the account size limit even when their real media usage was well below it. - Decrement storage_used in MediaDeletePipeline when media is removed - Add UserStorageService::increaseStorageUsed / decrementStorageUsed as the fast, symmetric hot-path counter updates (floor-based, clamped at zero) - Refactor the 6 upload call sites to use increaseStorageUsed instead of duplicated inline writes (also fixes ceil/floor drift vs the reconciler) - Add (user_id, size) covering index so per-user SUM(size) is not a full table scan (INPLACE/LOCK=NONE, skipped on sqlite) - Add user:storage:recalculate command to repair affected accounts, with a daily --stale=168 scheduled reconciler to correct any drift - Add regression tests for the pipeline and UserStorageService |
2 weeks ago | |
|---|---|---|
| .ddev | ||
| .github | ||
| .vscode | ||
| app | 2 weeks ago | |
| bootstrap | 2 weeks ago | |
| config | ||
| database | 2 weeks ago | |
| lang | ||
| notes | ||
| public | ||
| resources | 2 weeks ago | |
| routes | 2 weeks ago | |
| storage | ||
| tests | 2 weeks ago | |
| .dockerignore | ||
| .editorconfig | ||
| .env.docker.example | ||
| .env.example | ||
| .env.testing | ||
| .gitattributes | ||
| .gitignore | ||
| .markdownlint.json | ||
| .node-version | ||
| .shellcheckrc | ||
| CHANGELOG.md | ||
| CODEOWNERS | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| DOCKER_COMPOSE_SETUP.md | ||
| Dockerfile | ||
| LICENSE | ||
| README.md | ||
| SECURITY.md | ||
| artisan | ||
| composer.json | ||
| composer.lock | ||
| crowdin.yml | ||
| docker-compose.test.yml | ||
| docker-compose.yml | ||
| funding.json | ||
| package-lock.json | ||
| package.json | ||
| phpstan.neon | ||
| phpunit.xml | ||
| pint.json | ||
| psalm-baseline.xml | ||
| psalm.xml | ||
| server.php | ||
| webpack.mix.js | ||
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.
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:
