From 7d74172de9f91549af0bca02fcce9ffc59683f9e Mon Sep 17 00:00:00 2001 From: Sven van Ginkel Date: Mon, 12 Jan 2026 18:33:03 +0100 Subject: [PATCH 1/2] chore: improve dev container (#2648) --- .devcontainer/devcontainer.json | 6 +++--- .env.example | 9 +++++++++ compose.yaml | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7ec51536b..04653336d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,8 +1,8 @@ // https://aka.ms/devcontainer.json { - "name": "Existing Docker Compose (Extend)", + "name": "Speedtest Tracker Dev Environment", "dockerComposeFile": [ - "../docker-compose.yml" + "../compose.yaml" ], "service": "laravel.test", "workspaceFolder": "/var/www/html", @@ -20,7 +20,7 @@ } }, "remoteUser": "sail", - "postCreateCommand": "chown -R 1000:1000 /var/www/html 2>/dev/null || true" + "postCreateCommand": "composer install && npm install && npm run build && touch database/database.sqlite && php artisan migrate:fresh --force" // "forwardPorts": [], // "runServices": [], // "shutdownAction": "none", diff --git a/.env.example b/.env.example index 1a762a1ce..b09ac0014 100644 --- a/.env.example +++ b/.env.example @@ -18,6 +18,11 @@ LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug DB_CONNECTION=sqlite +#DB_HOST= +#DB_PORT= +#DB_DATABASE= +#DB_USERNAME= +#DB_PASSWORD= SESSION_DRIVER=cookie SESSION_LIFETIME=10080 @@ -42,3 +47,7 @@ MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_NAME="Speedtest Tracker" VITE_APP_NAME="${APP_NAME}" + +# For the Dev Container +# WWWUSER=1000 +# WWWGROUP=1000 diff --git a/compose.yaml b/compose.yaml index acd813d9b..a4ccb9e57 100644 --- a/compose.yaml +++ b/compose.yaml @@ -25,7 +25,7 @@ services: - mailpit - apprise pgsql: - image: 'postgres:17-alpine' + image: 'postgres:18-alpine' ports: - '${FORWARD_DB_PORT:-5432}:5432' environment: From b7846b0b1d08d7c24073c91ed96bd60267eba140 Mon Sep 17 00:00:00 2001 From: Sven van Ginkel Date: Wed, 21 Jan 2026 15:05:38 +0100 Subject: [PATCH 2/2] chore: update webhook payload (#2636) --- .../Notifications/SendWebhookTestNotification.php | 2 +- app/Jobs/Ookla/BenchmarkSpeedtestJob.php | 10 +++++++--- app/Listeners/ProcessCompletedSpeedtest.php | 7 ++++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/Actions/Notifications/SendWebhookTestNotification.php b/app/Actions/Notifications/SendWebhookTestNotification.php index 9ae6d922d..45aa2abc5 100644 --- a/app/Actions/Notifications/SendWebhookTestNotification.php +++ b/app/Actions/Notifications/SendWebhookTestNotification.php @@ -37,7 +37,7 @@ public function handle(array $webhooks) 'ping' => $fakeResult->ping, 'download' => $fakeResult->download, 'upload' => $fakeResult->upload, - 'packetLoss' => $fakeResult->data['packetLoss'], + 'packet_loss' => $fakeResult->data['packetLoss'], 'speedtest_url' => $fakeResult->data['result']['url'], 'url' => url('/admin/results'), ]) diff --git a/app/Jobs/Ookla/BenchmarkSpeedtestJob.php b/app/Jobs/Ookla/BenchmarkSpeedtestJob.php index 6f6f0751a..683fe395b 100644 --- a/app/Jobs/Ookla/BenchmarkSpeedtestJob.php +++ b/app/Jobs/Ookla/BenchmarkSpeedtestJob.php @@ -7,6 +7,7 @@ use App\Events\SpeedtestBenchmarking; use App\Events\SpeedtestBenchmarkUnhealthy; use App\Helpers\Benchmark; +use App\Helpers\Number; use App\Models\Result; use App\Settings\ThresholdSettings; use Illuminate\Bus\Batchable; @@ -83,7 +84,8 @@ private function benchmark(Result $result, ThresholdSettings $settings): array 'bar' => 'min', 'passed' => Benchmark::bitrate($result->download, ['value' => $settings->absolute_download, 'unit' => 'mbps']), 'type' => 'absolute', - 'value' => $settings->absolute_download, + 'test_value' => Number::bitsToMagnitude(bits: $result->download_bits, precision: 0, magnitude: 'mbit'), + 'benchmark_value' => $settings->absolute_download, 'unit' => 'mbps', ]); @@ -97,7 +99,8 @@ private function benchmark(Result $result, ThresholdSettings $settings): array 'bar' => 'min', 'passed' => filter_var(Benchmark::bitrate($result->upload, ['value' => $settings->absolute_upload, 'unit' => 'mbps']), FILTER_VALIDATE_BOOLEAN), 'type' => 'absolute', - 'value' => $settings->absolute_upload, + 'test_value' => Number::bitsToMagnitude(bits: $result->upload_bits, precision: 0, magnitude: 'mbit'), + 'benchmark_value' => $settings->absolute_upload, 'unit' => 'mbps', ]); @@ -111,7 +114,8 @@ private function benchmark(Result $result, ThresholdSettings $settings): array 'bar' => 'max', 'passed' => Benchmark::ping($result->ping, ['value' => $settings->absolute_ping]), 'type' => 'absolute', - 'value' => $settings->absolute_ping, + 'test_value' => round($result->ping), + 'benchmark_value' => $settings->absolute_ping, 'unit' => 'ms', ]); diff --git a/app/Listeners/ProcessCompletedSpeedtest.php b/app/Listeners/ProcessCompletedSpeedtest.php index ae5d544e1..87b7b7794 100644 --- a/app/Listeners/ProcessCompletedSpeedtest.php +++ b/app/Listeners/ProcessCompletedSpeedtest.php @@ -162,10 +162,11 @@ private function notifyWebhookChannels(Result $result): void 'site_name' => config('app.name'), 'server_name' => Arr::get($result->data, 'server.name'), 'server_id' => Arr::get($result->data, 'server.id'), + 'status' => $result->status, 'isp' => Arr::get($result->data, 'isp'), - 'ping' => $result->ping, - 'download' => $result->downloadBits, - 'upload' => $result->uploadBits, + 'ping' => round($result->ping), + 'download' => Number::bitsToMagnitude(bits: $result->download_bits, precision: 0, magnitude: 'mbit'), + 'upload' => Number::bitsToMagnitude(bits: $result->upload_bits, precision: 0, magnitude: 'mbit'), 'packet_loss' => Arr::get($result->data, 'packetLoss'), 'speedtest_url' => Arr::get($result->data, 'result.url'), 'url' => url('/admin/results'),