From 40eca53bcbc4204d547bbe909712918ef757d2d0 Mon Sep 17 00:00:00 2001 From: Sven van Ginkel Date: Tue, 3 Feb 2026 14:42:14 +0100 Subject: [PATCH 1/6] Chore: Add missing translations (#2669) --- app/Filament/Widgets/Concerns/HasChartFilters.php | 6 +++--- lang/en/general.php | 2 ++ resources/views/filament/pages/dashboard.blade.php | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/Filament/Widgets/Concerns/HasChartFilters.php b/app/Filament/Widgets/Concerns/HasChartFilters.php index ce12d9384..a792e07c9 100644 --- a/app/Filament/Widgets/Concerns/HasChartFilters.php +++ b/app/Filament/Widgets/Concerns/HasChartFilters.php @@ -7,9 +7,9 @@ trait HasChartFilters protected function getFilters(): ?array { return [ - '24h' => 'Last 24 hours', - 'week' => 'Last 7 days', - 'month' => 'Last 30 days', + '24h' => __('general.last_24h'), + 'week' => __('general.last_week'), + 'month' => __('general.last_month'), ]; } } diff --git a/lang/en/general.php b/lang/en/general.php index 2d39844c2..65ffa88ee 100644 --- a/lang/en/general.php +++ b/lang/en/general.php @@ -48,10 +48,12 @@ 'settings' => 'Settings', 'users' => 'Users', 'documentation' => 'Documentation', + 'documentation_description' => 'Need help getting started or configuring your speedtests?', 'view_documentation' => 'View documentation', 'links' => 'Links', 'donate' => 'Donate', 'donations' => 'Donations', + 'donations_description' => 'Support the development and maintenance of Speedtest Tracker by making a donation.', // Roles 'admin' => 'Admin', diff --git a/resources/views/filament/pages/dashboard.blade.php b/resources/views/filament/pages/dashboard.blade.php index 2d9d68211..4dd7514ee 100644 --- a/resources/views/filament/pages/dashboard.blade.php +++ b/resources/views/filament/pages/dashboard.blade.php @@ -20,7 +20,7 @@ class="col-span-1"
-

Need help getting started or configuring your speedtests?

+

{{ __('general.documentation_description') }}

@@ -45,7 +45,7 @@ class="col-span-1"
-

Support the development and maintenance of Speedtest Tracker by making a donation.

+

{{ __('general.donations_description') }}

From 3fa025d19f6c773f5726168ffde4b4551c354ba0 Mon Sep 17 00:00:00 2001 From: Sven van Ginkel Date: Tue, 3 Feb 2026 14:50:33 +0100 Subject: [PATCH 2/6] Chore: add webhook logging (#2647) Co-authored-by: Alex Justesen --- .../SendWebhookTestNotification.php | 2 +- app/Listeners/LogWebhookFailure.php | 21 +++++++++++++++++++ lang/en/settings/notifications.php | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 app/Listeners/LogWebhookFailure.php diff --git a/app/Actions/Notifications/SendWebhookTestNotification.php b/app/Actions/Notifications/SendWebhookTestNotification.php index 45aa2abc5..e34dcce0a 100644 --- a/app/Actions/Notifications/SendWebhookTestNotification.php +++ b/app/Actions/Notifications/SendWebhookTestNotification.php @@ -42,7 +42,7 @@ public function handle(array $webhooks) 'url' => url('/admin/results'), ]) ->doNotSign() - ->dispatch(); + ->dispatchSync(); } Notification::make() diff --git a/app/Listeners/LogWebhookFailure.php b/app/Listeners/LogWebhookFailure.php new file mode 100644 index 000000000..d9884b873 --- /dev/null +++ b/app/Listeners/LogWebhookFailure.php @@ -0,0 +1,21 @@ + $event->webhookUrl, + 'error_type' => $event->errorType, + 'error_message' => $event->errorMessage, + ]); + } +} diff --git a/lang/en/settings/notifications.php b/lang/en/settings/notifications.php index 8c3145532..8ccd940a2 100644 --- a/lang/en/settings/notifications.php +++ b/lang/en/settings/notifications.php @@ -56,6 +56,7 @@ 'webhook' => [ 'add' => 'Add webhook URLs!', 'sent' => 'Test webhook notification sent.', + 'failed' => 'Webhook notification failed.', 'payload' => 'Testing webhook notification', ], ], From c3bf5e5ed23c519618981d7657d40bbab9c11ea7 Mon Sep 17 00:00:00 2001 From: Sven van Ginkel Date: Tue, 3 Feb 2026 14:53:12 +0100 Subject: [PATCH 3/6] Chore: Add debug logs for apprise (#2654) Co-authored-by: Alex Justesen --- app/Notifications/AppriseChannel.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/Notifications/AppriseChannel.php b/app/Notifications/AppriseChannel.php index c6fe6a1c3..b5885202b 100644 --- a/app/Notifications/AppriseChannel.php +++ b/app/Notifications/AppriseChannel.php @@ -32,6 +32,11 @@ public function send(object $notifiable, Notification $notification): void return; } + Log::debug('Attempting to send Apprise notification', [ + 'channel' => $message->urls, + 'instance' => $appriseUrl, + ]); + try { $request = Http::timeout(30) ->withHeaders([ @@ -57,7 +62,7 @@ public function send(object $notifiable, Notification $notification): void throw new Exception('Apprise returned an error, please check Apprise logs for details'); } - Log::info('Apprise notification sent', [ + Log::debug('Apprise notification sent', [ 'channel' => $message->urls, 'instance' => $appriseUrl, ]); From d5ebe7ca57876451d5835e2631272729eaa4ccbb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 08:55:11 -0500 Subject: [PATCH 4/6] gh actions: bump klaasnicolaas/action-inactivity-lock from 1.1.3 to 2.0.1 (#2677) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alex Justesen --- .github/workflows/inactivity-actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/inactivity-actions.yml b/.github/workflows/inactivity-actions.yml index e4f4ab5b9..8cf93b3c6 100644 --- a/.github/workflows/inactivity-actions.yml +++ b/.github/workflows/inactivity-actions.yml @@ -14,7 +14,7 @@ jobs: name: Lock Inactive Issues runs-on: ubuntu-24.04 steps: - - uses: klaasnicolaas/action-inactivity-lock@v1.1.3 + - uses: klaasnicolaas/action-inactivity-lock@v2.0.1 id: lock with: days-inactive-issues: 14 From edff46859c781630b42498f3167f8f5a63d3990c Mon Sep 17 00:00:00 2001 From: Sven van Ginkel Date: Tue, 3 Feb 2026 15:19:17 +0100 Subject: [PATCH 5/6] Bug: fix packet loss rounding in notifications (#2670) --- app/Listeners/ProcessCompletedSpeedtest.php | 2 +- app/Mail/CompletedSpeedtestMail.php | 2 +- resources/views/apprise/speedtest-completed.blade.php | 2 ++ resources/views/mail/speedtest/completed.blade.php | 2 ++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/Listeners/ProcessCompletedSpeedtest.php b/app/Listeners/ProcessCompletedSpeedtest.php index 87b7b7794..c1399c076 100644 --- a/app/Listeners/ProcessCompletedSpeedtest.php +++ b/app/Listeners/ProcessCompletedSpeedtest.php @@ -72,7 +72,7 @@ private function notifyAppriseChannels(Result $result): void 'ping' => round($result->ping).' ms', 'download' => Number::toBitRate(bits: $result->download_bits, precision: 2), 'upload' => Number::toBitRate(bits: $result->upload_bits, precision: 2), - 'packetLoss' => $result->packet_loss, + 'packetLoss' => $result->packet_loss ? round($result->packet_loss, precision: 2) : '', 'speedtest_url' => $result->result_url, 'url' => url('/admin/results'), ])->render(); diff --git a/app/Mail/CompletedSpeedtestMail.php b/app/Mail/CompletedSpeedtestMail.php index 109d95360..cfd7cecf6 100644 --- a/app/Mail/CompletedSpeedtestMail.php +++ b/app/Mail/CompletedSpeedtestMail.php @@ -51,7 +51,7 @@ public function content(): Content 'ping' => round($this->result->ping, 2).' ms', 'download' => Number::toBitRate(bits: $this->result->download_bits, precision: 2), 'upload' => Number::toBitRate(bits: $this->result->upload_bits, precision: 2), - 'packetLoss' => is_numeric($this->result->packet_loss) ? $this->result->packet_loss : 'n/a', + 'packetLoss' => $result->packet_loss ? round($result->packet_loss, precision: 2) : '', 'speedtest_url' => $this->result->result_url, 'url' => url('/admin/results'), ], diff --git a/resources/views/apprise/speedtest-completed.blade.php b/resources/views/apprise/speedtest-completed.blade.php index 2efca5492..13a29162b 100644 --- a/resources/views/apprise/speedtest-completed.blade.php +++ b/resources/views/apprise/speedtest-completed.blade.php @@ -6,7 +6,9 @@ - **Ping:** {{ $ping }} - **Download:** {{ $download }} - **Upload:** {{ $upload }} +@filled($packetLoss) - **Packet Loss:** {{ $packetLoss }}% +@endfilled ### Links - [View Ookla Results]({{ $speedtest_url }}) diff --git a/resources/views/mail/speedtest/completed.blade.php b/resources/views/mail/speedtest/completed.blade.php index ac40c0e0f..cb0413e47 100644 --- a/resources/views/mail/speedtest/completed.blade.php +++ b/resources/views/mail/speedtest/completed.blade.php @@ -12,7 +12,9 @@ | Ping | {{ $ping }} | | Download | {{ $download }} | | Upload | {{ $upload }} | +@filled($packetLoss) | Packet Loss | {{ $packetLoss }} **%** | +@endfilled From 1ada95c4f9085530ee5aeff2a0c79fc389ddccb7 Mon Sep 17 00:00:00 2001 From: Sven van Ginkel Date: Tue, 3 Feb 2026 15:21:29 +0100 Subject: [PATCH 6/6] bug: add server name and id to test wehbook (#2676) Co-authored-by: Alex Justesen --- .../Notifications/SendWebhookTestNotification.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Actions/Notifications/SendWebhookTestNotification.php b/app/Actions/Notifications/SendWebhookTestNotification.php index e34dcce0a..7842c6ba7 100644 --- a/app/Actions/Notifications/SendWebhookTestNotification.php +++ b/app/Actions/Notifications/SendWebhookTestNotification.php @@ -2,6 +2,7 @@ namespace App\Actions\Notifications; +use App\Helpers\Number; use App\Models\Result; use App\Services\SpeedtestFakeResultGenerator; use Filament\Notifications\Notification; @@ -33,10 +34,12 @@ public function handle(array $webhooks) ->payload([ 'result_id' => Str::uuid(), 'site_name' => __('settings/notifications.test_notifications.webhook.payload'), + 'server_name' => $fakeResult->data['server']['name'], + 'server_id' => $fakeResult->data['server']['id'], 'isp' => $fakeResult->data['isp'], - 'ping' => $fakeResult->ping, - 'download' => $fakeResult->download, - 'upload' => $fakeResult->upload, + 'ping' => round($fakeResult->ping), + 'download' => Number::bitsToMagnitude(bits: $fakeResult->upload, precision: 0, magnitude: 'mbit'), + 'upload' => Number::bitsToMagnitude(bits: $fakeResult->download, precision: 0, magnitude: 'mbit'), 'packet_loss' => $fakeResult->data['packetLoss'], 'speedtest_url' => $fakeResult->data['result']['url'], 'url' => url('/admin/results'),