Commit Graph

636 Commits (f955feba2f5cae305deccea6db78733f96b2b30d)

Author SHA1 Message Date
Your Name 7c964f3b4f fix: replace backslash-prefixed facade calls with imported references
Replace \Cache::, \Log::, \DB:: calls with their imported facade
equivalents. The backslash-prefix relies on global aliases which
PHPStan cannot resolve, causing class.notFound errors.
1 month ago
Your Name e7ba43e2e1 fix: add missing use imports to resolve phpstan class.notFound errors
Add missing imports for Log, Cache, DB, FollowerService, StatusService,
LikeService, ReblogService, UserFilterService, AdminProfile, OauthClient,
and fix StatusTimelineTransformer reference (class didn't exist, replaced
with StatusTransformer).
1 month ago
Your Name c807a8524c refactor: replace short facade aliases with fully-qualified imports
Convert all 273 short facade alias imports (e.g. 'use Cache;') to their
fully-qualified class names (e.g. 'use Illuminate\Support\Facades\Cache;')
across 193 files.

This resolves 643 PHPStan 'class.notFound' errors caused by the static
analyzer being unable to resolve global aliases, and aligns with modern
Laravel conventions. It also unblocks removing the aliases array from
config/app.php in a future change.

All 107 tests pass.
1 month ago
Your Name 98267eb26f refactor: replace deprecated str_random() with Str::random()
str_random() is a deprecated helper from laravel/helpers that was
missed in the initial helpers removal. Replace all 18 call sites
with the modern Str::random() equivalent.
1 month 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.
1 month ago
Daniel Supernault 8f1e475407
Fix typo 1 month ago
Daniel Supernault 7937d91c37
Update ApiV1Controller, add is_suggestable to update_credentials endpoint 1 month ago
Daniel Supernault 4e2e49f843
Update ApiV1Controller, add show_atom support to update_credentials endpoint 1 month ago
Your Name 79541afaa0 Merge origin/staging, resolve conflicts keeping matomo/device-detector over jenssegers/agent 1 month ago
Shlee fb655f1308
Merge pull request #6782 from ashleyhull-versent/shift-179490
Laravel Shift Preshift
1 month ago
Ashley Hull ab07a705e6
Merge branch 'dev' into shift-179490 1 month ago
Shlee 68dca50973
Merge pull request #6774 from pixelfed/fix/oauth-scope-bypass-remove-follower-6643
Fix: OAuth accountRemoveFollowById to check token.
1 month ago
Shlee 20123ff5ba
Merge pull request #6773 from pixelfed/fix/first-follower-pagination-6695
Fix: Show first follower/following record excluded from previous API responses
1 month ago
Daniel Supernault 91645faeee
Lint 1 month ago
Daniel Supernault e1235dfd75
Fix ApiV1Controller, ensure follow notifications have an account 1 month ago
Your Name 822e9c98cb Fix OAuth scope bypass on remove_from_followers endpoint
Fixes #6643

The POST /api/v1/accounts/{id}/remove_from_followers endpoint was missing
the token existence check (! $request->user()->token()). While the
tokenCan('follow') scope check was already present, the missing token
guard meant unauthenticated token-less requests could potentially bypass
the scope enforcement.

Added the standard guard pattern consistent with accountFollowById and
accountUnfollowById endpoints.

Also adds tests verifying:
- Read-only tokens are denied (403)
- Follow-scoped tokens succeed (200)
- Unauthenticated requests are denied (403)
1 month ago
Your Name 396cf2d861 Fix first follower/following record excluded from API responses
Fixes #6695

When no pagination params are provided, the default min_id was set to 1
and the query used 'id > 1', which excluded the very first follower row
(id=1) on fresh instances.

Changed default min_id from 1 to 0 and switched the direction check from
truthy evaluation to !== null, so the query becomes 'id > 0' which
correctly includes all records.
1 month ago
Shift 19880c2ffb
Convert string references to `::class`
PHP 5.5.9 adds the new static `class` property which provides the fully qualified class name. This is preferred over using strings for class names since the `class` property references are checked by PHP.
1 month ago
Your Name 651f0de74f Replace jenssegers/agent with matomo/device-detector
- Remove unmaintained jenssegers/agent package (no releases since 2021)
- Add matomo/device-detector v6.5 as actively maintained replacement
- Create App\Services\UserAgentService wrapper for drop-in compatibility
- Update UserDevice model and ApiV1Dot1Controller to use new service
1 month ago
Daniel Supernault a2be0cb47d
Update CommentController 1 month ago
Daniel Supernault 40aef7a212
Update GroupsFeedController 1 month ago
dansup ca5f83d2d1
Merge pull request #6655 from TowyTowy/fix/timeline-home-nullable-max-id
Fix home timeline rejecting empty max_id/min_id pagination params
1 month ago
dansup 5aae3f46c7
Merge pull request #6691 from pixelfed/shleeable-patch-26
Improve validation
1 month ago
Shlee 1d72f1b437
Update ApiV1Controller.php 2 months ago
Shlee 9966eb50b8
Update ApiV1Controller.php 2 months ago
TowyTowy 795473be55 Fix home timeline rejecting empty max_id/min_id pagination params
`GET /api/v1/timelines/home?max_id=` (empty value) fails validation
because `min_id`/`max_id` use the `sometimes|integer` rule. The global
`ConvertEmptyStringsToNull` middleware turns `?max_id=` into `null`, and
since the field is present, `sometimes` does not skip it while `null`
fails the `integer` rule — returning HTTP 422.

Every other timeline/listing endpoint in this controller (timelinePublic,
accountStatusesById, etc.) uses `nullable|integer` for these params, so
`timelineHome` was the lone outlier. Mastodon-API clients such as Pixelfed
for iOS send `max_id=` on first page load and could not paginate the home
timeline.

Switch `min_id`/`max_id` to `nullable|integer` to match the rest of the
controller.

Fixes #6610

Co-Authored-By: Claude <noreply@anthropic.com>
2 months ago
Your Name b329ee9edc API: Media uploads leak orphaned files when status creation validation fails 6 months ago
Daniel Supernault 695e851026
Fix oauth 7 months ago
Shlee 1b21f83132
Update BaseApiController.php 7 months ago
Daniel Supernault 3140404835
Update ApiV1Controller.php 8 months ago
Daniel Supernault 80a2f4f2b0
Add api/v1/accounts/lookup endpoint 8 months ago
Daniel Supernault f76567f67b
Improve reblog check 8 months ago
Severin 066f8ee309
Pulls user settings for reblogs 8 months ago
samir 9c3130a3c7 Added pagination to the followers/followings API endpoints 8 months ago
Daniel Supernault 374344754e
Lint 9 months ago
Daniel Supernault 4bc1e22121
Refactor LikePipeline and improve Undo Announce handling 11 months ago
Your Name 45a9a3b472 RemoveUnreachableStatementRector 11 months ago
dansup 7881b09c2f
Merge pull request #6304 from pixelfed/classV2
Larastan: Fix Missing classes 2 - Medium risk
11 months ago
dansup 99e89814b4
Merge pull request #6295 from pixelfed/shleeable-patch-20
Dead Code - Delete app/Http/Controllers/Api/InstanceApiController.php - Low Risk
11 months ago
Your Name 15cc07e602 Fix all class.notFound PHPStan issues - 31 fixes 11 months ago
Shlee e297cd0e94
Dead Code - Delete app/Http/Controllers/Api/InstanceApiController.php 11 months ago
Shlee 8d197107e8
Update BaseApiController.php 11 months ago
Daniel Supernault 3686c92122
Update Status storage, add SanitizerService to fix spacing in html stripped content 1 year ago
Daniel Supernault ec21eec508
Update ApiV1Dot1Controller, fix Story report follower check 1 year ago
Daniel Supernault f5dced0f7a
Update ApiV1Dot1Controller, add story report support 1 year ago
Daniel Supernault 4747266b04
Update ApiV1Controller, fix cache invalidation order 1 year ago
Daniel Supernault 4e938a8ffa
Fix heic, avif, webp support and add libvips driver 1 year ago
Daniel Supernault ab9c13fe0d
New supported formats, Preserve ICC Color Profiles, libvips support
Update image pipeline to handle avif, heic and webp and preserve ICC color profiles and added libvips support.
1 year ago
Daniel Supernault 5a3a1cf76c
Update remove_from_followers api endpoint 1 year ago
daniel 92482c24cd
Merge pull request #5895 from eufelipemateus/feat-remove-follow
[Improvement] Add button remove follow
1 year ago
Felipe Mateus fed800acfb
Merge branch 'dev-contrib-origin' into feat-remove-follow 1 year ago
Daniel Supernault 5a32bfe304
Update ApiV1Controller, add Custom Filters to home/public and hashtag feeds 1 year ago
Daniel Supernault b86102823b
Update CustomFilter model and CustomFilterController 1 year ago
Daniel Supernault 437d742ac4
Add custom filters
Add custom filters, compatible with Mastodon `/api/v2/filters`

Todo:
- [ ] fix routes
- [ ] finish other context filtering
1 year ago
daniel 0158941fb6
API improvements + test fixes (#5925)
* migrate PHPUnit configuration

* replace @test annotations with #[Test] attributes, and add it where it was missing

* remove test prefix from test method names

* add PHPUnit cache to .gitignore

* Update ApiV1Controller, fix notifications favourited/reblogged/bookmarked state. Fixes #5901

* Update ApiV1Controller, fix relationship fields. Fixes #5900

* Update instance config, return proper matrix limits. Fixes #4780

* Update SearchApiV2Service, fix offset bug. Fixes #5875

* Update ApiV1Controller, add better direct error message. Fixes #4789

* Update changelog

---------

Co-authored-by: Daniel Simon <daniel.simon.dev@proton.me>
1 year ago
Daniel Supernault 658fe6898e
Update ApiV1Controller, add better direct error message. Fixes #4789 1 year ago
Daniel Supernault 4732019087
Update instance config, return proper matrix limits. Fixes #4780 1 year ago
Daniel Supernault 8a86808a06
Update ApiV1Controller, fix notifications favourited/reblogged/bookmarked state. Fixes #5901 1 year ago
daniel e5c577054b
Add Pinned Posts + WebUI profile fixes (#5914)
* translate notifications

* translate  profile

* fix translate privacy

* add missing keys

* pinned posts

* fix key  settings

* fix key

Co-Authored-By: daniel <danielsupernault@gmail.com>

* Update AccountImport, improve webp support

* Update GroupSettings, add missing avatar/header deletion

* Update i18n

* Update compiled assets

* Update 2025_03_19_022553_add_pinned_columns_statuses_table.php

* Fix pinned posts implementation

* Update docker readme, closes #5909

* Update post pinning, and dispatch Notification cache warming to a job, and fix reblogged state on some endpoints

* Refactor following check

* Fix ProfileFeed bookmark, likes and shares. Closes #5879

* Update PublicApiController, use pixelfed entities for /api/pixelfed/v1/accounts/id/statuses with bookmarked state

* Update changelog

* Update compiled assets

* Update i18n

---------

Co-authored-by: Felipe Mateus <eu@felipemateus.com>
2 years ago
Daniel Supernault 0f1819125c
Update post pinning, and dispatch Notification cache warming to a job, and fix reblogged state on some endpoints 2 years ago
Daniel Supernault 2f655d0008
Fix pinned posts implementation 2 years ago
daniel c9a0fe0026
Merge pull request #5884 from eufelipemateus/pinned-posts
[Improvement] Pinned posts
2 years ago
Felipe Mateus 128533b5d8
Update ApiV1Controller.php
Co-Authored-By: Mathieu <385764+Casmo@users.noreply.github.com>
2 years ago
Felipe Mateus 456f96d574
add remove follow 2 years ago
Daniel Supernault aa6f95b1cf
Update ApiV1Controller, improve query 2 years ago
Felipe Mateus cce4c41d97
pinned posts 2 years ago
Daniel Supernault 2cf3011816
Update ApiV1Controller, send UndoFollow when cancelling a follow request on remote accounts 2 years ago
Daniel Supernault 976a1873e1
Update ApiV1Controller, improve follower handling 2 years ago
Daniel Supernault c4af4d9921
Update ApiV1Controller.php 2 years ago
Daniel Supernault 244e86bad7
Update ApiV1Controller, add pagination to conversations endpoint with min/max/since id pagination and link header support 2 years ago
Daniel Supernault cce657d9c8
Update ApiV1Controller, return empty statuses feed for private accounts instead of 403 response 2 years ago
Daniel Supernault 38e17a06e0
Update ApiV1Controller, fix max_id pagination on home and public timeline feeds 2 years ago
Daniel Supernault c36cc07b2c
Update avif support, and fix reply permalinks 2 years ago
daniel 622116b0cf
Merge pull request #5694 from maco/5645-domain-block
[Bug Fix] accept bare domains without http scheme in domain block controller
2 years ago
Daniel Supernault 4ec9f990ed
Update DirectMessageController, fix performance issue 2 years ago
Mackenzie Morgan 1f7a1bd72b accept bare domains without http scheme in domain block controller
Fixes #5645
2 years ago
Daniel Supernault 42173245fc
Update ApiV1Controller.php 2 years ago
Daniel Supernault c8ba73f11b
Update ApiV1Controller.php 2 years ago
Daniel Supernault 67f3951e9a
Update ApiV1Controller, add mobile_registration attribute 2 years ago
Daniel Supernault 8fad89543f
DM 2 years ago
Daniel Supernault 207bb36c89
Increase username length limit from 15 to 30 2 years ago
Anil Kulkarni 4d0cb32f79
Fix notifications not being delivered by directly checking the state from the database 2 years ago
daniel 3dd515006c
Merge branch 'staging' into dev 2 years ago
Daniel Supernault 57ede29175
Fix oauth endpoint 2 years ago
Daniel Supernault 56f17b9957
Update ApiV1Dot1Controller, fix in-app registration 2 years ago
root (Deneir) 370f09495a resolve merge conflicts 2 years ago
Daniel Supernault 85124aa642
Fix rendered caption 2 years ago
Daniel Supernault 1d2f76c8e5
Postgres fixes 2 years ago
Daniel Supernault 8ed8305f5d
Update ApiV1Controller.php 2 years ago
Daniel Supernault 9eeb7b6741
Update Status caption logic, stop storing duplicate html caption in db and defer to cached StatusService rendering 2 years ago
Daniel Supernault 9f7cc52c24
Update ApiV1Controller, fix bookmark bug. Closes #5216 2 years ago
Daniel Supernault 7820b506d8
Update ApiV1Dot1Controller, allow upto 5 similar push tokens 2 years ago
Daniel Supernault 424f0271c3
Update ApiV1Controller, fix null caption on media bug 2 years ago
Daniel Supernault 78d2783db8
Fix push token for php8.2 2 years ago
Daniel Supernault 078ea326c6
Update ApiV1Dot1Controller 2 years ago
Daniel Supernault df5a9f2659
Update nag endpoint 2 years ago
Daniel Supernault 33621dd680
Add Notify App Gateway support 2 years ago
Daniel Supernault 6c48a12423
Update ApiV1Controller, handle Moved accounts 2 years ago
Daniel Supernault dcd95d687c
Update ApiV1Controller, fix v1/instance stats, force cast to int 2 years ago
daniel 1dbcdee289
Merge branch 'staging' into feat/implement-admin-domain-blocks-api 2 years ago