From 4f7f2b2259a967179ae3722503bb81fd41aee556 Mon Sep 17 00:00:00 2001 From: Shlee Date: Mon, 9 Feb 2026 23:01:43 +1030 Subject: [PATCH 01/14] Update HashtagFollowService.php --- app/Services/HashtagFollowService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/HashtagFollowService.php b/app/Services/HashtagFollowService.php index cb2d6e737..beedd46f0 100644 --- a/app/Services/HashtagFollowService.php +++ b/app/Services/HashtagFollowService.php @@ -62,7 +62,7 @@ class HashtagFollowService public static function isWarm($hid) { - return Redis::zcount(self::CACHE_KEY.$hid, 0, -1) ?? Redis::zscore(self::CACHE_WARMED, $hid) != null; + return Redis::zcard(self::CACHE_KEY.$hid) > 0 || Redis::zscore(self::CACHE_WARMED, $hid) !== null; } public static function setWarm($hid) From 8d7b090e4c5a21677f3b981c5d060d65b935189f Mon Sep 17 00:00:00 2001 From: Shlee Date: Mon, 9 Feb 2026 23:08:32 +1030 Subject: [PATCH 02/14] Update DeleteRemoteProfilePipeline.php --- app/Jobs/DeletePipeline/DeleteRemoteProfilePipeline.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Jobs/DeletePipeline/DeleteRemoteProfilePipeline.php b/app/Jobs/DeletePipeline/DeleteRemoteProfilePipeline.php index c035fae74..f295bd11a 100644 --- a/app/Jobs/DeletePipeline/DeleteRemoteProfilePipeline.php +++ b/app/Jobs/DeletePipeline/DeleteRemoteProfilePipeline.php @@ -134,7 +134,7 @@ class DeleteRemoteProfilePipeline implements ShouldQueue }); // Delete reports - Report::whereProfileId($profile->id)->orWhere('reported_profile_id')->forceDelete(); + Report::whereProfileId($pid)->orWhere('reported_profile_id', $pid)->forceDelete(); // Delete profile Profile::findOrFail($profile->id)->delete(); From 89c54bbd84e66aa838da2eb1707232172587a2ee Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Feb 2026 01:02:39 +1100 Subject: [PATCH 03/14] bad logic --- app/Jobs/ImageOptimizePipeline/ImageThumbnail.php | 2 ++ app/Util/Media/Image.php | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Jobs/ImageOptimizePipeline/ImageThumbnail.php b/app/Jobs/ImageOptimizePipeline/ImageThumbnail.php index d8cbf7621..ead13df14 100644 --- a/app/Jobs/ImageOptimizePipeline/ImageThumbnail.php +++ b/app/Jobs/ImageOptimizePipeline/ImageThumbnail.php @@ -69,6 +69,8 @@ class ImageThumbnail implements ShouldQueue if (config('app.dev_log')) { Log::error('Thumbnail generation failed: '.$e->getMessage()); } + + return; } $media->processed_at = Carbon::now(); diff --git a/app/Util/Media/Image.php b/app/Util/Media/Image.php index d201ce5ad..8fe72989c 100644 --- a/app/Util/Media/Image.php +++ b/app/Util/Media/Image.php @@ -292,8 +292,6 @@ class Image } } catch (\Exception $e) { - $media->processed_at = now(); - $media->save(); if (config('app.dev_log')) { Log::info('MediaResizeException: '.$e->getMessage().' | Could not process media id: '.$media->id); } From 13d877b832d0eeb0cf3e7aaaf6e68cff65743dd5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Feb 2026 01:05:50 +1100 Subject: [PATCH 04/14] bug --- app/Jobs/VideoPipeline/VideoThumbnail.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/Jobs/VideoPipeline/VideoThumbnail.php b/app/Jobs/VideoPipeline/VideoThumbnail.php index d703cf774..25d603633 100644 --- a/app/Jobs/VideoPipeline/VideoThumbnail.php +++ b/app/Jobs/VideoPipeline/VideoThumbnail.php @@ -9,6 +9,7 @@ use App\Services\StatusService; use App\Util\Media\Blurhash; use Cache; use FFMpeg; +use Log; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldBeUniqueUntilProcessing; use Illuminate\Contracts\Queue\ShouldQueue; @@ -107,7 +108,11 @@ class VideoThumbnail implements ShouldBeUniqueUntilProcessing, ShouldQueue VideoHlsPipeline::dispatch($media)->onQueue('mmo'); } } catch (\Exception $e) { + if (config('app.dev_log')) { + Log::error('Video thumbnail generation failed: '.$e->getMessage()); + } + throw $e; } if ($media->status_id) { From daea5da055ee1a4b979fd6af8732dfe935502b92 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Feb 2026 01:19:33 +1100 Subject: [PATCH 05/14] fix --- app/Jobs/HomeFeedPipeline/FeedInsertPipeline.php | 3 +-- app/Jobs/HomeFeedPipeline/FeedInsertRemotePipeline.php | 3 +-- app/Jobs/HomeFeedPipeline/HashtagInsertFanoutPipeline.php | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/app/Jobs/HomeFeedPipeline/FeedInsertPipeline.php b/app/Jobs/HomeFeedPipeline/FeedInsertPipeline.php index 7786dada5..83bee6b38 100644 --- a/app/Jobs/HomeFeedPipeline/FeedInsertPipeline.php +++ b/app/Jobs/HomeFeedPipeline/FeedInsertPipeline.php @@ -118,8 +118,7 @@ class FeedInsertPipeline implements ShouldBeUniqueUntilProcessing, ShouldQueue $filters = UserFilter::whereFilterableType('App\Profile') ->whereFilterableId($status['account']['id']) ->whereIn('filter_type', ['mute', 'block']) - ->join('profiles', 'user_filters.user_id', '=', 'profiles.user_id') - ->pluck('profiles.id') + ->pluck('user_id') ->toArray(); if ($filters && count($filters)) { diff --git a/app/Jobs/HomeFeedPipeline/FeedInsertRemotePipeline.php b/app/Jobs/HomeFeedPipeline/FeedInsertRemotePipeline.php index ae5eabfc8..de8f102ec 100644 --- a/app/Jobs/HomeFeedPipeline/FeedInsertRemotePipeline.php +++ b/app/Jobs/HomeFeedPipeline/FeedInsertRemotePipeline.php @@ -116,8 +116,7 @@ class FeedInsertRemotePipeline implements ShouldBeUniqueUntilProcessing, ShouldQ $filters = UserFilter::whereFilterableType('App\Profile') ->whereFilterableId($status['account']['id']) ->whereIn('filter_type', ['mute', 'block']) - ->join('profiles', 'user_filters.user_id', '=', 'profiles.user_id') - ->pluck('profiles.id') + ->pluck('user_id') ->toArray(); if ($filters && count($filters)) { diff --git a/app/Jobs/HomeFeedPipeline/HashtagInsertFanoutPipeline.php b/app/Jobs/HomeFeedPipeline/HashtagInsertFanoutPipeline.php index cef73c311..2f957af6e 100644 --- a/app/Jobs/HomeFeedPipeline/HashtagInsertFanoutPipeline.php +++ b/app/Jobs/HomeFeedPipeline/HashtagInsertFanoutPipeline.php @@ -116,8 +116,7 @@ class HashtagInsertFanoutPipeline implements ShouldBeUniqueUntilProcessing, Shou $filters = UserFilter::whereFilterableType('App\Profile') ->whereFilterableId($status['account']['id']) ->whereIn('filter_type', ['mute', 'block']) - ->join('profiles', 'user_filters.user_id', '=', 'profiles.user_id') - ->pluck('profiles.id') + ->pluck('user_id') ->toArray(); if ($filters && count($filters)) { From 995a53b4ef201d643dcef3d7abfa32ac1f540758 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Feb 2026 01:25:08 +1100 Subject: [PATCH 06/14] fix --- app/Services/Status/UpdateStatusService.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/Services/Status/UpdateStatusService.php b/app/Services/Status/UpdateStatusService.php index 7ef4d440c..7685ec69c 100644 --- a/app/Services/Status/UpdateStatusService.php +++ b/app/Services/Status/UpdateStatusService.php @@ -65,8 +65,6 @@ class UpdateStatusService if (isset($attributes['status'])) { $cleaned = Purify::clean($attributes['status']); $status->caption = $cleaned; - } else { - $status->caption = null; } if (isset($attributes['sensitive'])) { if ($status->is_nsfw != (bool) $attributes['sensitive'] && @@ -84,8 +82,6 @@ class UpdateStatusService } if (isset($attributes['spoiler_text'])) { $status->cw_summary = Purify::clean($attributes['spoiler_text']); - } else { - $status->cw_summary = null; } if (isset($attributes['location'])) { if (isset($attributes['location']['id'])) { @@ -119,8 +115,8 @@ class UpdateStatusService public static function createEdit(Status $status, $attributes) { - $cleaned = isset($attributes['status']) ? Purify::clean($attributes['status']) : null; - $spoiler_text = isset($attributes['spoiler_text']) ? Purify::clean($attributes['spoiler_text']) : null; + $cleaned = isset($attributes['status']) ? Purify::clean($attributes['status']) : $status->caption; + $spoiler_text = isset($attributes['spoiler_text']) ? Purify::clean($attributes['spoiler_text']) : $status->cw_summary; $sensitive = isset($attributes['sensitive']) ? $attributes['sensitive'] : null; $mids = $status->media()->count() ? $status->media()->orderBy('order')->pluck('id')->toArray() : null; StatusEdit::create([ From 1a1dc5e096b675eb8dae0ebae807969ea6e78a59 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Feb 2026 01:30:37 +1100 Subject: [PATCH 07/14] fix typo --- app/Http/Controllers/ComposeController.php | 12 +++++------- app/Http/Controllers/DirectMessageController.php | 12 +++++------- .../Controllers/Stories/StoryApiV1Controller.php | 12 +++++------- app/Http/Controllers/StoryComposeController.php | 12 +++++------- 4 files changed, 20 insertions(+), 28 deletions(-) diff --git a/app/Http/Controllers/ComposeController.php b/app/Http/Controllers/ComposeController.php index eb343ce9b..849209988 100644 --- a/app/Http/Controllers/ComposeController.php +++ b/app/Http/Controllers/ComposeController.php @@ -165,13 +165,11 @@ class ComposeController extends Controller { $this->validate($request, [ 'id' => 'required', - 'file' => function () { - return [ - 'required', - 'mimetypes:'.config_cache('pixelfed.media_types'), - 'max:'.config_cache('pixelfed.max_photo_size'), - ]; - }, + 'file' => [ + 'required', + 'mimetypes:'.config_cache('pixelfed.media_types'), + 'max:'.config_cache('pixelfed.max_photo_size'), + ], ]); $user = Auth::user(); diff --git a/app/Http/Controllers/DirectMessageController.php b/app/Http/Controllers/DirectMessageController.php index abbf68ad4..a55bb6546 100644 --- a/app/Http/Controllers/DirectMessageController.php +++ b/app/Http/Controllers/DirectMessageController.php @@ -434,13 +434,11 @@ class DirectMessageController extends Controller public function mediaUpload(Request $request) { $this->validate($request, [ - 'file' => function () { - return [ - 'required', - 'mimetypes:'.config_cache('pixelfed.media_types'), - 'max:'.config_cache('pixelfed.max_photo_size'), - ]; - }, + 'file' => [ + 'required', + 'mimetypes:'.config_cache('pixelfed.media_types'), + 'max:'.config_cache('pixelfed.max_photo_size'), + ], 'to_id' => 'required', ]); diff --git a/app/Http/Controllers/Stories/StoryApiV1Controller.php b/app/Http/Controllers/Stories/StoryApiV1Controller.php index d92b60a59..96e49b454 100644 --- a/app/Http/Controllers/Stories/StoryApiV1Controller.php +++ b/app/Http/Controllers/Stories/StoryApiV1Controller.php @@ -264,13 +264,11 @@ class StoryApiV1Controller extends Controller abort_if(! (bool) config_cache('instance.stories.enabled') || ! $request->user(), 404); $this->validate($request, [ - 'file' => function () { - return [ - 'required', - 'mimetypes:image/jpeg,image/jpg,image/png,video/mp4', - 'max:'.config_cache('pixelfed.max_photo_size'), - ]; - }, + 'file' => [ + 'required', + 'mimetypes:image/jpeg,image/jpg,image/png,video/mp4', + 'max:'.config_cache('pixelfed.max_photo_size'), + ], 'duration' => 'sometimes|integer|min:0|max:30', ]); diff --git a/app/Http/Controllers/StoryComposeController.php b/app/Http/Controllers/StoryComposeController.php index bcf8bb25b..4c03d974e 100644 --- a/app/Http/Controllers/StoryComposeController.php +++ b/app/Http/Controllers/StoryComposeController.php @@ -41,13 +41,11 @@ class StoryComposeController extends Controller abort_if(! (bool) config_cache('instance.stories.enabled') || ! $request->user(), 404); $this->validate($request, [ - 'file' => function () { - return [ - 'required', - 'mimetypes:image/jpeg,image/png,video/mp4,image/jpg', - 'max:'.config_cache('pixelfed.max_photo_size'), - ]; - }, + 'file' => [ + 'required', + 'mimetypes:image/jpeg,image/png,video/mp4,image/jpg', + 'max:'.config_cache('pixelfed.max_photo_size'), + ], ]); $user = $request->user(); From 492e78b95f436387bde08a2a6a923bb49d51b5b6 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Feb 2026 01:34:36 +1100 Subject: [PATCH 08/14] fix --- .../ImportMediaToCloudPipeline.php | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/app/Jobs/ImportPipeline/ImportMediaToCloudPipeline.php b/app/Jobs/ImportPipeline/ImportMediaToCloudPipeline.php index 4460478fb..78aa597fb 100644 --- a/app/Jobs/ImportPipeline/ImportMediaToCloudPipeline.php +++ b/app/Jobs/ImportPipeline/ImportMediaToCloudPipeline.php @@ -93,32 +93,46 @@ class ImportMediaToCloudPipeline implements ShouldBeUniqueUntilProcessing, Shoul return; } + $allSucceeded = true; + foreach ($media as $mediaPart) { - $this->handleMedia($mediaPart); + if (! $this->handleMedia($mediaPart)) { + $allSucceeded = false; + } + } + + if ($allSucceeded) { + $importPost = ImportPost::find($ip->id); + if ($importPost) { + $importPost->uploaded_to_s3 = true; + $importPost->save(); + } } } protected function handleMedia($media) { + // Skip media already uploaded to cloud storage + if ($media->cdn_url) { + return true; + } + $ip = $this->importPost; $importPost = ImportPost::find($ip->id); if (! $importPost) { - return; + return false; } $res = MediaStorageService::move($media); - $importPost->uploaded_to_s3 = true; - $importPost->save(); - if (! $res) { - return; + return false; } if ($res === 'invalid file') { - return; + return false; } if ($res === 'success') { @@ -127,6 +141,10 @@ class ImportMediaToCloudPipeline implements ShouldBeUniqueUntilProcessing, Shoul } else { Storage::disk('local')->delete($media->media_path); } + + return true; } + + return false; } } From 09aba28d887a405a8dc9119840acb7e4da08d6ac Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Feb 2026 01:45:11 +1100 Subject: [PATCH 09/14] fix --- app/Jobs/InboxPipeline/InboxValidator.php | 17 ++++++++--------- app/Jobs/InboxPipeline/InboxWorker.php | 15 +++++++-------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/app/Jobs/InboxPipeline/InboxValidator.php b/app/Jobs/InboxPipeline/InboxValidator.php index 8dce4efac..7d5ced58c 100644 --- a/app/Jobs/InboxPipeline/InboxValidator.php +++ b/app/Jobs/InboxPipeline/InboxValidator.php @@ -59,15 +59,6 @@ class InboxValidator implements ShouldQueue $payload = json_decode($this->payload, true, 8); - if (isset($payload['id'])) { - $lockKey = 'pf:ap:user-inbox:activity:'.hash('sha256', $payload['id']); - if (Cache::get($lockKey) !== null) { - // Job processed already - return 1; - } - Cache::put($lockKey, 1, 3600); - } - $profile = Profile::whereNull('domain')->whereUsername($username)->first(); if (empty($profile) || empty($headers) || empty($payload)) { @@ -79,6 +70,14 @@ class InboxValidator implements ShouldQueue } if ($this->verifySignature($headers, $profile, $payload) == true) { + if (isset($payload['id'])) { + $lockKey = 'pf:ap:user-inbox:activity:'.hash('sha256', $payload['id']); + if (! Cache::add($lockKey, 1, 3600)) { + // Already processed after valid signature check + return 1; + } + } + if (isset($payload['type']) && in_array($payload['type'], ['Follow', 'Accept'])) { ActivityHandler::dispatch($headers, $profile, $payload)->onQueue('follow'); } else { diff --git a/app/Jobs/InboxPipeline/InboxWorker.php b/app/Jobs/InboxPipeline/InboxWorker.php index 3a8a2671d..3e682f015 100644 --- a/app/Jobs/InboxPipeline/InboxWorker.php +++ b/app/Jobs/InboxPipeline/InboxWorker.php @@ -55,16 +55,15 @@ class InboxWorker implements ShouldQueue $payload = json_decode($this->payload, true, 8); - if (isset($payload['id'])) { - $lockKey = 'pf:ap:user-inbox:activity:'.hash('sha256', $payload['id']); - if (Cache::get($lockKey) !== null) { - // Job processed already - return 1; + if ($this->verifySignature($headers, $payload) == true) { + if (isset($payload['id'])) { + $lockKey = 'pf:ap:user-inbox:activity:'.hash('sha256', $payload['id']); + if (! Cache::add($lockKey, 1, 3600)) { + // Already processed after valid signature check + return 1; + } } - Cache::put($lockKey, 1, 3600); - } - if ($this->verifySignature($headers, $payload) == true) { ActivityHandler::dispatch($headers, $profile, $payload)->onQueue('shared'); return; From b014443090976ef6a6cb3a89b85c72ed55d4fbdc Mon Sep 17 00:00:00 2001 From: Severin Date: Tue, 10 Feb 2026 08:20:51 +0100 Subject: [PATCH 10/14] Secure sendmail to disable user commands from mail address See https://www.postfix.org/sendmail.1.html under Security --- config/mail.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/mail.php b/config/mail.php index 423f61736..8848c6a33 100644 --- a/config/mail.php +++ b/config/mail.php @@ -72,7 +72,7 @@ return [ 'sendmail' => [ 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i --'), ], 'log' => [ From 94555a835f3b1cf48f03ad29295c14e51cbcd89a Mon Sep 17 00:00:00 2001 From: dansup Date: Fri, 13 Feb 2026 01:31:13 -0700 Subject: [PATCH 11/14] New translations web.php (German) [ci skip] --- resources/lang/de/web.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/lang/de/web.php b/resources/lang/de/web.php index e344417ee..d16e4cb9a 100644 --- a/resources/lang/de/web.php +++ b/resources/lang/de/web.php @@ -12,7 +12,7 @@ return [ 'share' => 'Teilen', 'shared' => 'Geteilt', 'shares' => 'Geteilt', - 'unshare' => 'Teilen rückgängig machen', + 'unshare' => 'Nicht mehr teilen', 'bookmark' => 'Lesezeichen', 'cancel' => 'Abbrechen', @@ -22,12 +22,12 @@ return [ 'errorMsg' => 'Etwas ist schief gelaufen. Bitter versuch es später nochmal.', 'oops' => 'Hoppla!', 'other' => 'Anderes', - 'readMore' => 'Weiterlesen', + 'readMore' => 'Mehr lesen', 'success' => 'Erfolg', 'proceed' => 'Fortfahren', 'next' => 'Weiter', 'close' => 'Schließen', - 'clickHere' => 'hier klicken', + 'clickHere' => 'Hier klicken', 'sensitive' => 'Sensibel', 'sensitiveContent' => 'Sensibler Inhalt', @@ -60,10 +60,10 @@ return [ 'drive' => 'Festplatte', 'settings' => 'Einstellungen', 'compose' => 'Neu erstellen:', - 'logout' => 'Ausloggen', + 'logout' => 'Abmelden', // Nav footer - 'about' => 'Über uns', + 'about' => 'Über', 'help' => 'Hilfe', 'language' => 'Sprache', 'privacy' => 'Privatsphäre', @@ -93,7 +93,7 @@ return [ 'mentioned' => 'erwähnte', 'you' => 'dir', - 'yourApplication' => 'Deine Bewerbung um beizutreten', + 'yourApplication' => 'Deine Beitrittsanfrage', 'applicationApproved' => 'wurde genehmigt!', 'applicationRejected' => 'wurde abgelehnt. Du kannst dich in 6 Monaten erneut für den Beitritt bewerben.', @@ -109,13 +109,13 @@ return [ 'shareToFollowers' => 'Mit Folgenden teilen', 'shareToOther' => 'Mit anderen teilen', 'noLikes' => 'Gefällt bisher noch niemandem', - 'uploading' => 'Lädt hoch', + 'uploading' => 'Wird hochgeladen', ], 'profile' => [ 'posts' => 'Beiträge', 'followers' => 'Folgende', - 'following' => 'Folgend', + 'following' => 'Folgt', 'admin' => 'Admin', 'collections' => 'Sammlungen', 'follow' => 'Folgen', From 2d64a46eb3fe9a463c8527957052b5ac34e6f785 Mon Sep 17 00:00:00 2001 From: Arnaud Date: Sun, 15 Feb 2026 16:36:43 +0100 Subject: [PATCH 12/14] Add missing french translations (on the auth pages) --- resources/lang/fr/auth.php | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/resources/lang/fr/auth.php b/resources/lang/fr/auth.php index ec695eb65..d48d3011d 100644 --- a/resources/lang/fr/auth.php +++ b/resources/lang/fr/auth.php @@ -12,7 +12,31 @@ return [ | */ - 'failed' => 'Ces informations d\'identification ne correspondent à aucune se trouvant dans notre base de données.', + 'failed' => 'Ces informations d’identification ne correspondent à aucune se trouvant dans notre base de données.', 'throttle' => 'Trop de tentatives de connexion ont été effectuées. Veuillez réessayer dans :seconds secondes.', 'verifyYourEmailAddress' => ' - Vérifiez votre adresse de courrier électronique', + 'loginTitle' => 'Connexion à mon compte', + 'password' => 'Mot de passe' , + 'remember' => 'Se souvenir de moi', + 'forgot' => 'Mot de passe oublié', + 'login' => 'Se connecter', + + 'register' => 'S’inscrire', + 'reset' => 'Réinitialiser le mot de passe', + + 'name' => 'Nom public', + 'username' => 'Identifiant', + 'confirm-password' => 'Confirmer le mot de passe', + + 'age' => 'J’ai 16 ans ou plus', + 'terms' => "En vous inscrivant, vous acceptez nos conditions d’utilisation et politique de confidentialité.", + + 'emailAddress' => "Adresse de courriel", + + 'registerTitle' => 'Créer un nouveau profil', + + 'sendReset' => 'Envoyer le lien de réinitialisation de mot de passe', + 'backLogin' => 'Retour à l’identification', + + 'signInMastodon' => 'S’inscrire avec Mastodon', ]; From 569e475bdffc08b16e0875fed92b854950508705 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 17 Feb 2026 07:02:42 -0700 Subject: [PATCH 13/14] Update changelog --- CHANGELOG.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20e331ae7..403e508c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,20 @@ # Release Notes ## [Unreleased](https://github.com/pixelfed/pixelfed/compare/v0.12.5...dev) +- ([](https://github.com/pixelfed/pixelfed/commit/)) +- ([](https://github.com/pixelfed/pixelfed/commit/)) + +## [v0.12.7 (2026-02-17)](https://github.com/pixelfed/pixelfed/compare/v0.12.7...dev) - Update Status storage, add SanitizerService to fix spacing in html stripped content ([3686c9212](https://github.com/pixelfed/pixelfed/commit/3686c9212)) - Update app config, add description and rule env variables ([0980519a9](https://github.com/pixelfed/pixelfed/commit/0980519a9)) - Update InstanceService, fix total post count when config_cache is disabled ([f0bc9d66e](https://github.com/pixelfed/pixelfed/commit/f0bc9d66e)) - Update media storage pipeline, improve support for non-local filesystems ([2e719bd00](https://github.com/pixelfed/pixelfed/commit/2e719bd00)) -- ([](https://github.com/pixelfed/pixelfed/commit/)) +- Update partial status updates nullify omitted caption/CW causing data loss) ([416c02e](https://github.com/pixelfed/pixelfed/commit/416c02e)) +- Update compose, improve validation ([f1af72e](https://github.com/pixelfed/pixelfed/commit/f1af72e)) +- Update ImportMediaToCloudPipeline to handle multiple files being uploaded ([bff9aae](https://github.com/pixelfed/pixelfed/commit/bff9aae)) +- InboxWorker and InboxValidator moved lock after the signature validation ([4b923ed](https://github.com/pixelfed/pixelfed/commit/4b923ed)) +- Update sendmail security ([5bc768b](https://github.com/pixelfed/pixelfed/commit/5bc768b)) ## [v0.12.6 (2025-09-03)](https://github.com/pixelfed/pixelfed/compare/v0.12.6...dev) From 72fcc173de87b0ee3d6daffe9f6b4c082acd470e Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 17 Feb 2026 07:02:56 -0700 Subject: [PATCH 14/14] Bump version --- config/pixelfed.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/pixelfed.php b/config/pixelfed.php index 52d9aa19d..a9cacf92f 100644 --- a/config/pixelfed.php +++ b/config/pixelfed.php @@ -23,7 +23,7 @@ return [ | This value is the version of your Pixelfed instance. | */ - 'version' => '0.12.6', + 'version' => '0.12.7', /* |--------------------------------------------------------------------------