Commit Graph

2127 Commits (ec6827bae2f49f1ddaefaf7a4abb84480e3577f9)

Author SHA1 Message Date
Your Name ec6827bae2 Check media blocklist before storing uploads to prevent orphaned files 2 weeks ago
Shlee a5cbea834f
Merge pull request #7138 from shleeable/fix/oob-authorize-omitted-redirect-uri
Detect OOB oauth client when redirect_uri omitted on authorize
2 weeks ago
Shlee ae31ed8e66
Merge pull request #7137 from shleeable/fix/story-remote-expiry-cache
Invalidate latest-story cache on remote story expiry and null-guard l…
2 weeks ago
Your Name 53ad34b321 Ignore own row when validating email update uniqueness 2 weeks ago
Your Name 462b4bc0da Detect OOB oauth client when redirect_uri omitted on authorize 2 weeks ago
Your Name 9850aac676 Invalidate latest-story cache on remote story expiry and null-guard latest() 2 weeks ago
Shlee 9c5be0e271
Merge pull request #7136 from shleeable/fix/custom-filter-rate-limit-ttl
Fix custom filter rate-limit counter never expiring
2 weeks ago
Your Name 63e3c95fae Fix custom filter rate-limit counter never expiring 2 weeks ago
Your Name afcb68c183 Fix registration form redirecting when max_users is falsy 2 weeks ago
Shlee daf83fd564
Merge pull request #7132 from shleeable/fix/pat-renew-kill-switch
Enforce pat_enabled kill-switch on personal access token renew
2 weeks ago
Your Name d2b11a71b3 Enforce pat_enabled kill-switch on personal access token renew 2 weeks ago
Shlee 13a441af93
Merge pull request #7131 from shleeable/fix/login-activity-groupby
Fix login activity groupBy returning stale rows and 500 on strict DBs
2 weeks ago
Your Name 3cb5b6e1ff Fix login activity groupBy returning stale rows and 500 on strict DBs 2 weeks ago
Your Name fe70cd1155 Fix directory listing reporting oauth and activitypub flags always true 2 weeks ago
Shlee 18ba2dc932
Merge pull request #7119 from shleeable/fix/hashtag-follow-null-profile
Guard hashtag follow against null profile for soft-deleted accounts
2 weeks ago
Shlee 3b8d7b8d1f
Merge pull request #7123 from shleeable/fix/poll-vote-scope-authz
Enforce poll scope authorization on vote endpoint
2 weeks ago
Shlee 0900509c27
Merge pull request #7124 from shleeable/fix/collection-store-visibility-required
Require visibility on collection store to match NOT NULL schema
2 weeks ago
Shlee 3f63b245bc
Merge pull request #7126 from shleeable/fix/admin-instance-stats-postgres-guard
Fix admin instance stats endpoint 404 on Postgres via strict is_admin boolean check
2 weeks ago
Shlee fe8c53ddd7
Merge pull request #7127 from shleeable/fix/favourites-pagination-off-by-one
Fix favourites pagination skipping one favourite per page
2 weeks ago
Shlee 602e498f0a
Update ApiV1Controller.php 2 weeks ago
Your Name a286509622 Require visibility on collection store to match NOT NULL schema 2 weeks ago
Your Name a8a7a430d7 Enforce poll scope authorization on vote endpoint 2 weeks ago
Your Name e79135a771 Fix favourites pagination skipping one favourite per page boundary 2 weeks ago
Your Name 8258a5a5f8 Guard hashtag follow against null profile for soft-deleted accounts 2 weeks ago
Your Name df1e771f93 Fix admin instance stats endpoint 404 on Postgres via strict is_admin check 2 weeks ago
Your Name 3b951d41d8 Fix accounts statuses max_id pagination returning duplicate boundary status 2 weeks ago
Daniel Supernault 7376a007a5
Update ApiV1Controller.php 2 weeks ago
Daniel Supernault 085eabccf9
Update account statuses endpoint 2 weeks ago
Daniel Supernault c558724e47
Update AP Helpers 3 weeks ago
Your Name 8b4a7d4e3c fix: correct SiteController view return types, drop ViewContract alias
An automated return-type pass aliased the view contract as ViewContract
to avoid clashing with the imported View facade, but left four methods
(curatedOnboarding, language, redirectUrl, followIntent) typed against
the facade instead of the contract. That threw a TypeError on
/auth/sign_up.

Convert the four View::make() calls to the view() helper, drop the
facade import, and use a single Illuminate\Contracts\View\View import
for all return types.
3 weeks ago
Shlee 3673cf30e4
Update SiteController.php 3 weeks ago
Shlee 99a013accc
Update SiteController.php 3 weeks ago
dansup 4c2ccc7ee7
Merge pull request #7088 from pixelfed/shleeable-patch-4
Change 2FA code validation to require 6 digits
3 weeks ago
dansup bbe27e8de4
Merge pull request #7087 from pixelfed/shleeable-patch-3
Update password validation rule to include string and min length
3 weeks ago
Shlee 76d4e1ab23
Change 2FA code validation to require 6 digits 3 weeks ago
Shlee c2a568a5cc
Update password validation rule to include string and min length 3 weeks ago
Shlee 0a39ccef98
Update redirect route for 2FA setup 3 weeks ago
Daniel Supernault d7cfd07204
Fix PostEditModal. Closes #7084 3 weeks ago
Shlee c86a82b857
Merge pull request #7059 from pixelfed/chore/convert-string-refs-to-class
Laravel 13 Prep: Convert string class references to ::class
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.
3 weeks ago
Your Name 6d8ad3885a Convert string class references to ::class
Applies the ::class conversion from pixelfed-staging PR #9 (patch 1/21),
formatted with Pint (short imported ::class form). Excludes the
ModelNamespaceMigrationTest namespace assertions, which intentionally
compare against literal namespace strings.
3 weeks ago
Your Name 9db2218ca6 chore: move resources/lang to top-level lang/ per Laravel 9+ convention
- Relocate translation files from resources/lang to lang/ via git mv
- Update PHP references to use the lang_path() helper
- Update crowdin.yml source/translation paths
- Update phpstan.neon translationDirectories
3 weeks ago
Shlee 003953eb3e
Merge pull request #7045 from pixelfed/perf/follower-service-following-ids
Deduplocation: add FollowerService::getFollowingIds for common function
3 weeks ago
Daniel Supernault c9b0ee3bdd
Refactor NotificationService 3 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.
3 weeks ago
Your Name 661b841428 Remove dead debug methods that echoed the raw request
CollectionController::index and StoryComposeController::createPoll had no
route mapping and simply returned $request->all(). Both are unreachable
debug leftovers; remove them. The live poll route maps to
ComposeController::createPoll, which is unaffected.
3 weeks ago
Your Name e4e12fad7c Extract duplicated blocked-id and duplicate-shortcode query patterns
Two query patterns were copy-pasted across several call sites:

- The 'users who blocked me, plus myself' list used to filter profile
  search (UserFilter::whereFilterableId($pid)->pluck('user_id')->push($pid))
  appeared in ComposeController (x2) and DirectMessageController. Extracted
  to UserFilterService::searchExcludedProfileIds(). Note this is the
  inverse of blocks() (who I blocked), so it is a distinct method.

- CustomEmoji duplicate detection (groupBy('shortcode')->havingRaw(
  'count(*) > 1')) appeared three times in AdminController. Extracted to a
  CustomEmoji::duplicateShortcodes() query scope.

Adds tests for both. No behaviour change.
3 weeks ago
Shlee 7ad550d2f7
Merge pull request #7037 from pixelfed/perf/seasonal-sql-aggregation
Compute Year-in-Review averages in SQL instead of in PHP
3 weeks ago
Your Name cd873c8976 Compute Year-in-Review averages in SQL instead of in PHP
SeasonalController::getData computed the average posts/likes per profile
by grouping in SQL, then pulling every grouped row into a collection and
calling ->pluck('count')->avg() in PHP. This loaded one row per profile
into memory just to average.

Wrap the grouped per-profile counts in a subquery and let the database
compute AVG(count), returning a single value. Also drops the invalid
SELECT * with GROUP BY (ONLY_FULL_GROUP_BY) by selecting count(*) only.

Adds a test verifying the average-of-per-profile-counts and its
exclusions (remote, wrong type, out-of-range date), plus the empty case.
3 weeks ago
Shlee 660880eac7
Merge pull request #7036 from pixelfed/fix/remote-auth-http-timeout
Add timeout, retry and error handling to remote auth HTTP calls
3 weeks ago