Commit Graph

680 Commits (d4e7948a2fd41ff04e6dbb3020297bc5bac4ddde)

Author SHA1 Message Date
Your Name d4e7948a2f add type to return 1 week ago
Your Name c57e5d8ed7 adding type 1 week ago
Your Name 8dcdd93e2b RemoveUnusedVariableInCatchRector 1 week ago
Your Name 4547b1fc11 StrStartsWithRector 1 week ago
Your Name dc7cf910fa get_class to ::class 1 week ago
Your Name f1d4c87391 const types 1 week ago
Your Name 0dbd78ca8e Lint 1 week ago
Your Name f3b6487451 BATCH 2 1 week ago
Your Name 5ebc1af91e BATCH 1 1 week ago
Daniel Supernault 493b8de031
Add FeaturedCollections/Starter Kits support 1 week ago
Daniel Supernault 83c9b86ae3
Add AccountRevocationService 2 weeks ago
Your Name e3b6cebf27 Fix MariaDB driver detection and reblog caption null inserts
Laravel 11 exposes MariaDB as a dedicated 'mariadb' driver, so
config('database.default') === 'mysql' checks silently misclassified
MariaDB as the non-mysql (postgres) branch.

- Add App\Util\Database\DatabaseDriver with isMysqlLike()/isPgsql()
  plus db_is_mysql_like()/db_is_pgsql() global helpers.
- Route all database.default driver checks through the helpers so
  MySQL and MariaDB are treated as one group.
- Use '' (not null) for share/compose caption+rendered, valid whether
  the column is nullable or NOT NULL (it is NOT NULL on MySQL/MariaDB).
- Guard pgsql strtolower() in registration against missing fields.
- Scope CustomEmoji::duplicateShortcodes to the grouped column for
  Postgres GROUP BY validity.
- Remove stale Postgres guard in status:dedup; use havingRaw for
  cross-driver HAVING.
2 weeks ago
Your Name 8a4567a5c2 Isolate fanout delivery failures from StatusDelete local cleanup 2 weeks ago
Shlee 78447646b8
Merge pull request #7253 from pixelfed/fix/remote-update-media-validate-before-orphan
Validate remote update attachments before detaching existing media
2 weeks ago
Your Name 9b829ca56e Validate remote update attachments before detaching existing media 2 weeks ago
Your Name 60284a871e Purge status_edits on account and status deletion 2 weeks ago
Daniel Supernault 96acfb3d91
Update InboxWorker, improve handling 2 weeks ago
Your Name f1e4536d19 Invalidate notification cache when deleting a status 2 weeks ago
Daniel Supernault fbd52dd8fc
Improve federation handling 2 weeks ago
Daniel Supernault f371376789
Fix StatusDelete, handle StatusService deletion 2 weeks ago
Daniel Supernault 6e0d8454fd
Fix StatusDelete job, add logging 2 weeks ago
Daniel Supernault 15b46186b4
Delete NotificationEpochUpdatePipeline.php 2 weeks ago
Shlee 140221fe90
Merge pull request #7192 from pixelfed/refactor/str-of-to-native
Laravel 13 Prep: Replace Str::of() fluent chains with static Str::/native calls
2 weeks ago
Your Name a424493420 Replace Str::of() fluent chains with static Str::/native calls
Aligns with the app's dominant convention (171 static Str:: calls vs
24 Str::of() chains). Uses Str::afterLast() for the repeated
"segment after last slash" pattern, Str::matchAll() where a
Collection return is needed, and native explode()/substr() where a
plain array/string suffices.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2 weeks ago
Your Name 277b8aa970 Use now() helper instead of Carbon::now() for current-time access
Aligns with the app's dominant convention (413 now()/today() call
sites vs 12 Carbon::now()). Carbon::parse() calls are untouched since
they parse arbitrary date strings, not current-time access.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2 weeks 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 weeks 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 weeks ago
Your Name 9e14151228 Deliver posts regardless of profile no_autolink flag 3 weeks ago
Your Name 444c796bac Trigger StatusHashtag observer on deletion to keep cached_count accurate 3 weeks ago
Your Name 1ffda3eba9 Federate unlike before deleting Like so retries can deliver 3 weeks ago
Shlee 0fc121b685
Merge pull request #7134 from shleeable/fix/storyfetch-ssrf
Route StoryFetch outbound requests through SSRF-hardened fetch service
3 weeks ago
Shlee 58c83a2c6b
Merge pull request #7141 from shleeable/fix/import-instagram-missing-profile
Drop Instagram import job when profile is missing instead of crashing
3 weeks ago
Your Name 922d7f766e Drop Instagram import job when profile is missing instead of crashing 3 weeks ago
Your Name 9850aac676 Invalidate latest-story cache on remote story expiry and null-guard latest() 3 weeks ago
Your Name 9e84ad261d Route StoryFetch outbound requests through SSRF-hardened fetch service 3 weeks ago
Shlee aa152372c9
Merge pull request #7121 from shleeable/fix/status-remote-update-ssrf
Harden remote status update media fetch against SSRF
3 weeks ago
Shlee 1cb56f0ba0
Merge pull request #7120 from shleeable/fix/inbox-keyid-host-validation
Validate publicKey.id host on inbox actor ingest
3 weeks ago
Your Name 856f2f8f2d Harden remote status update media fetch against SSRF 3 weeks ago
Your Name 1905da723d Validate publicKey.id host on inbox actor ingest to prevent key_id poisoning 3 weeks ago
Your Name 6e7419bb96 Fix StatusDelete crashing on soft-deleted owning profile 3 weeks ago
Shlee 4acc0dd528
Update DeleteWorker.php 3 weeks ago
Shlee 56251cb05f
Update InboxValidator.php 3 weeks ago
Shlee 767c6ec201
Remove blindKeyRotation method from InboxWorker
Removed the blindKeyRotation method and its associated logic.
3 weeks ago
Daniel Supernault 40fedfca4f
Fix DeleteAccountPipeline 3 weeks ago
Shlee 8d375aed8a
Update DeleteAccountPipeline.php 3 weeks ago
Your Name 95e316e86f Apply staged formatting and session config changes 3 weeks ago
Shlee f51f1ef0db
Update DeleteAccountPipeline.php 3 weeks ago
Your Name 042ab0a6e4 Convert optional() to nullsafe operator
Applies patch 2/21 from pixelfed-staging PR #9: replaces optional($x)->y
with $x?->y across 16 files. Pint-clean.
4 weeks ago
Shlee 003953eb3e
Merge pull request #7045 from pixelfed/perf/follower-service-following-ids
Deduplocation: add FollowerService::getFollowingIds for common function
4 weeks ago
Your Name 667f6e2fc9 Extract following-ids lookup into FollowerService::getFollowingIds
The Cache::remember('profile:following:'.$pid, ...) block that plucks
following_id and appends the caller's own id was copy-pasted across four
call sites, with inconsistent TTLs (1440 minutes vs 1209600 seconds).

Add FollowerService::getFollowingIds($pid), which owns the cache key that
add()/remove() already invalidate, and use it from InternalApiController,
PublicApiController, ApiV1Controller and HashtagUnfollowPipeline. Removes
the now-unused Follower/Cache imports left behind.

Adds a test covering the followed-ids-plus-self result and the
follows-nobody case.
4 weeks ago