MySQL/MariaDB's utf8mb4_unicode_ci collation treats all characters outside the Basic Multilingual Plane as equal, conflating distinct same-length hashtags (e.g. Shavian vs cuneiform) on the unique name/slug indexes. Migrate the hashtags name/slug columns to utf8mb4_unicode_520_ci, which differentiates supplementary-plane characters. Improvements over the original PR: - Use an explicit ALTER ... MODIFY, since Laravel's fluent ->change() emits no collation change on MySQL/MariaDB and silently no-ops. - Match both 'mysql' and 'mariadb' drivers (Laravel 11+ reports MariaDB as a distinct driver, so a mysql-only check would skip the fix on MariaDB). - Provide an accurate, reversible down() and preserve NOT NULL + unique keys. Add feature tests covering the no-op path on non-MySQL drivers and, on MySQL/MariaDB, that distinct BMP-outside hashtags coexist while same-slug and case-insensitive dedup still work. |
4 weeks ago | |
|---|---|---|
| .ddev | ||
| .github | ||
| .vscode | ||
| app | 4 weeks ago | |
| bootstrap | 4 weeks ago | |
| config | 4 weeks ago | |
| database | 4 weeks ago | |
| notes | ||
| public | 4 weeks ago | |
| resources | 4 weeks ago | |
| routes | ||
| storage | ||
| tests | 4 weeks ago | |
| .dockerignore | ||
| .editorconfig | ||
| .env.docker.example | ||
| .env.example | ||
| .env.testing | ||
| .gitattributes | ||
| .gitignore | ||
| .markdownlint.json | ||
| .node-version | ||
| .shellcheckrc | ||
| CHANGELOG.md | 4 weeks ago | |
| 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 | ||
| larastan | ||
| package-lock.json | ||
| package.json | ||
| phpstan.neon | ||
| phpunit.xml | ||
| pint.json | ||
| 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:
