Commit Graph

301 Commits (dev)

Author SHA1 Message Date
Daniel Supernault de68ab45ea
Update 2026_10_07_000001_normalize_legacy_user_filter_morph_types.php 1 week ago
Ashley 6930073035 Match legacy App\Profile morph type in user_filters block and mute queries
Read and delete paths for user_filters now match both the legacy App\Profile and current App\Models\Profile morph strings, so pre-migration block/mute rows are visible and removable again. Write paths keep the canonical class. Adds a migration that deduplicates then normalizes legacy rows.
1 week ago
Shlee 9bbf212693
Merge pull request #7628 from pixelfed/shleeable-patch-2
migration to retroactively Normalize legacy user language codes
3 weeks ago
Daniel Supernault 1f331ca95f
Fix avatar remote_url column limit, expand to support longer remote avatar urls and also support webp avatars 3 weeks ago
Shlee bc61db4d35
migration to retroactively Normalize legacy user language codes
This migration updates legacy short language codes in the users table.

from `es` to `es-ES` etc
3 weeks ago
Shlee 2034f48cd6
Create NotificationFactory for generating notifications 3 weeks ago
Shlee 57c5f34e6c
Delete database/factories/NotificationFactory.php 3 weeks ago
Ashley 50e36db0ee Add Notification factory 3 weeks ago
Daniel Supernault 5a543eae2f
Add block sync migration 4 weeks ago
Daniel Supernault a562ff2092
Delete 2026_09_25_000003_delete_orphaned_legacy_status_morph_rows.php 1 month ago
Daniel Supernault 3770a3cc24
Remove expensive migration
For instances with 100M+ notifications, this would require too much downtime, a staggered slower scheduled task is more ideal.
1 month ago
Daniel Supernault 2c247e8ecb
Remove deprecated column change 1 month ago
Shlee 2a5c8f45ec
Merge pull request #7514 from pixelfed/fix/nodeinfo-delivery-cooldown-columns
Give Nodeinfo crawler its own cooldown columns, separate from delivery
1 month ago
Shlee 8ee8731bc7
Merge pull request #7481 from pixelfed/fix/notification-dedup-race
Prevent duplicate notifications from concurrent firstOrCreate race
1 month ago
Your Name 8507606247 Give Nodeinfo crawler its own cooldown columns, separate from delivery backoff 1 month ago
Your Name f76a4af620 Clean up legacy App\Status morph rows on status delete 1 month ago
Your Name 9a26e276d5 Prevent duplicate notifications from concurrent firstOrCreate race 1 month ago
Your Name bfc4546be4 Add draft to statuses visibility enum on MariaDB 1 month ago
Daniel Supernault d86ef9ae52
Update 2025_02_10_194847_fix_non_nullable_postgres_errors.php 1 month ago
Lily Cohen c381362b3a Fix Postgres backup connection and statuses nullability 1 month ago
Daniel Supernault 9c81a75ad3
Refactor Direct Messages, add Group Chat support and proper context threading with Mastodon 1 month ago
Daniel Supernault 823efcaad7
Add FEP-044f: Consent-respecting quote posts 1 month ago
Daniel Supernault dedfa67b70
Add FEP-8fcf followers collection synchronization
Sender: followers-only Create deliveries carry a signed
Collection-Synchronization header scoped to the authority of each inbox,
and the partial followers collection is served to authenticated instances
at /users/{username}/followers_synchronization.

Receiver: a signed Collection-Synchronization header whose digest differs
from our copy queues FollowersSyncPipeline, which fetches the partial
collection as the instance actor and reconciles followers, pending follow
requests and unknown follows.

Adds profiles.followers_url for the collectionId check.
1 month ago
Daniel Supernault 493b8de031
Add FeaturedCollections/Starter Kits support 1 month ago
Daniel Supernault 5fc343dd40
Update federation fanout 2 months ago
Your Name cd4d9e5f36 Fix index migrations to support PostgreSQL and MariaDB
The three recent index migrations used raw MySQL-only DDL (backtick
identifiers, ADD INDEX inside ALTER TABLE, ALGORITHM=INPLACE/LOCK=NONE)
guarded only against sqlite, so PostgreSQL instances failed with
SQLSTATE[42601] on migrate (#7177).

Each migration now branches on the driver:
- mysql/mariadb keep the online-DDL fast path (non-blocking on large
  instances)
- other drivers use the portable Schema::table builder

Table names, index names, and columns are unchanged so already-migrated
MySQL instances are unaffected.
2 months ago
Your Name 5a9c235922 Backfill storage_used on upgrade via queued job + data migration
Repair accounts whose storage counter drifted before the self-heal logic
existed (#7169). A data migration dispatches RecalculateAllUserStoragePipeline
to the low queue so the deploy is not blocked while every user is recomputed
from source. The job is unique and idempotent, so re-runs are harmless.

- RecalculateAllUserStoragePipeline: chunked recalc of all active users
- Migration dispatches the job (no inline heavy work during deploy)
- Test covers bulk recalculation from actual media
2 months ago
Your Name 6496904293 Fix account storage limit not freeing on media deletion (#7169)
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 months ago
Daniel Supernault 1281fa3751
Fix tests 2 months ago
Daniel Supernault c07706a415
Lint 2 months ago
Daniel Supernault 764a98437d
Fix media gc 2 months ago
Daniel Supernault d3746bc8ce
Create 2026_09_07_071046_add_deleted_at_profile_idindex_to_notifications_table.php 2 months ago
Shlee ee0876f550
Merge pull request #7060 from pixelfed/chore/remove-factory-model-property
Laravel 13 Prep: Remove unnecessary $model property from factories
2 months ago
Shift e973ddcfa4 Default core files 2 months ago
Your Name 8140ef7b02 Remove unnecessary $model property from factories
Applies patch 3/21 from pixelfed-staging PR #9: removes the redundant
protected $model property from 5 factories (Laravel resolves the model
from the factory name). Unused imports dropped via Pint. Verified
factories still resolve their models and affected tests pass.
2 months ago
Shlee 32bec52edb
Merge pull request #6985 from pixelfed/chore/laravel12-skeleton-uplift-v2
Laravel 12 skeleton uplift v2
2 months ago
Daniel Supernault 8e7b368ea2
Create 2019_12_14_000001_create_personal_access_tokens_table.php 2 months ago
Your Name 80214c5e71 chore: uplift framework skeleton toward Laravel 12 defaults
Modernize artisan and public/index.php to the streamlined bootstrap form,
migrate factories/seeders autoload to PSR-4 (database/seeds -> seeders), and
backfill missing env-driven config keys across app, session, database, queue,
mail, logging, and cache. All changes are additive and preserve existing
Pixelfed behavior and defaults.
2 months ago
Your Name 7aa1f8936d Revert "Merge pull request #6981 from pixelfed/chore/laravel12-skeleton-uplift"
This reverts commit 39384e2f93, reversing
changes made to f76bcfa3f9.
2 months ago
Your Name 4e83eb0867 chore: uplift framework skeleton toward Laravel 12 defaults
Modernize artisan and public/index.php to the streamlined bootstrap form,
migrate factories/seeders autoload to PSR-4 (database/seeds -> seeders), and
backfill missing env-driven config keys across app, session, database, queue,
mail, logging, and cache. All changes are additive and preserve existing
Pixelfed behavior and defaults.
2 months ago
Your Name 40b323bca4 revert: remove emoji local-to-cloud storage changes
Back out all emoji cloud-storage work from staging so it can be reworked and
re-landed separately (the URL resolution flips to cloud on a global config
flag, which created a broken-URL window, and the migration approach needs
revisiting).

Reverts to pre-emoji state:
- CustomEmoji model URL/storage helpers (urlForPath, storageTarget, storeMedia,
  storeMediaFromFile, deleteMedia, url) and callers in ImportEmojis,
  CustomEmojiService, AdminController
- admin custom-emoji blade views back to local /storage URLs
- Remove admin:EmojiMoveStorageLocalToCloud command
- Remove the deploy migration and its scheduler entry

Media (and the already-reverted story) scheduler entries are untouched.
2 months ago
Your Name aa9bb868dd fix: emoji admin URLs and cloud-migration guard
Two issues prevented emoji from serving/migrating correctly on cloud:

- Admin custom-emoji views hardcoded url('storage/'.media_path), so they
  always showed local URLs and bypassed cloud resolution. Use $emoji->url().
- The migration/command guard relied solely on config_cache('pixelfed.cloud_storage'),
  which is DB/12h-cached and can read stale-false right after cloud is
  enabled, causing the migration to silently no-op. Treat cloud as enabled
  when either live config() or config_cache() is true.
2 months ago
Your Name a945efbf74 feat: add migration to move local emoji to cloud on deploy
Runs admin:EmojiMoveStorageLocalToCloud during migrate so existing local
emoji are relocated to cloud as part of the upgrade, shrinking the window
where emoji URLs resolve to cloud before the files are there. No-op unless
cloud storage is enabled.
2 months ago
Your Name 4056747666 Revert hashtags collation migration from #6098
Migration failed with a duplicate entry error: recollating to
utf8mb4_unicode_520_ci causes previously-distinct hashtag names/slugs
to collide on the unique indexes. Reverting until the data is
de-duplicated first.
2 months ago
Shlee 336f5f899f
Merge pull request #6098 from bpeel/hashtags-outside-bmp
Fix hashtags usings scripts outside the BMP on MySQL
2 months ago
Shlee e53e82faf3
Update 2025_07_31_164635_change_hashtags_collation.php 2 months ago
Your Name c0cde2f682 refactor: move 52 legacy models from App\ to App\Models\
Move all Eloquent models from the app/ root directory to app/Models/
for consistency with modern Laravel conventions. The project already had
54 models in App\Models; this migrates the remaining 52 legacy models.

Changes:
- Move 52 model files from app/ to app/Models/
- Update namespace declarations in each model
- Update all ~1000 import references across the codebase
- Add Relation::morphMap() in AppServiceProvider for backward
  compatibility with existing polymorphic database records
- Add missing HasSnowflakePrimary imports for models that relied
  on same-namespace resolution
2 months ago
Daniel Supernault db636ee08a
Pint database/ 2 months ago
Your Name 4ce28d9144 feat: add framework integration tests for Laravel 12→13 upgrade readiness
Framework tests verify core Laravel integration points:
- ServiceProviderTest: app boot, guard resolution, route loading, config_cache
- RoutingTest: named routes, duplicates, api/oauth prefixes, middleware groups
- EloquentTest: User/Profile/Status factories, relationships, casts, soft deletes
- QueueTest: job dispatch, serialization, middleware, unique IDs
- ConfigTest: config loading, env overrides, auth/cache/queue settings
- MiddlewarePipelineTest: CSRF, auth, throttle, password confirm, 2FA, admin

Also:
- Add HasFactory trait to Status model
- Fix StatusFactory: remove non-existent 'place' column, add 'rendered' field
- Add Api/AccountTest for account endpoint coverage (254 total tests)
2 months ago
Your Name edb4368b08 refactor: replace deprecated laravel/helpers with native alternatives
Replace all deprecated helper function calls:
- str_slug() → Str::slug()
- starts_with() → str_starts_with()
- ends_with() → str_ends_with()
- array_first() → Arr::first()
- array_last() → Arr::last()
- array_flatten() → Arr::flatten()

Remove laravel/helpers package from composer.json as it is no longer
needed and will not be maintained for Laravel 13.
2 months ago