From 82eeacea28876e95a4dbeb4d1781e5f60452a2ac Mon Sep 17 00:00:00 2001 From: surtic86 Date: Fri, 18 Sep 2026 21:13:19 +0200 Subject: [PATCH] Show the SealShare version and links on the admin dashboard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A quiet line under the shares card reads "SealShare 2.1.0 · Release notes · Website · Made by noNameWEB": the release notes link goes to the installed version's Gitea release, the others to sealshare.nonameweb.ch and nonameweb.ch, each in a new tab. It is page chrome, not content, so it is a footer line rather than a card. The image has neither .git nor CHANGELOG.md, so the version is a constant in config/app.php, bumped with each release. AppVersionTest fails while it differs from the newest released heading in CHANGELOG.md, so a forgotten bump stops CI before the tag's image is built. CHANGELOG (Unreleased) notes it. The dashboard screenshots are unchanged: the line sits below their fold. Co-Authored-By: Claude Opus 5 (1M context) --- CHANGELOG.md | 4 ++++ app/Livewire/Admin/AdminDashboard.php | 1 + config/app.php | 13 +++++++++++++ .../views/livewire/admin/admin-dashboard.blade.php | 8 ++++++++ tests/Feature/Admin/AdminDashboardTest.php | 12 ++++++++++++ tests/Feature/AppVersionTest.php | 12 ++++++++++++ 6 files changed, 50 insertions(+) create mode 100644 tests/Feature/AppVersionTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index ef0f4fc..c455c4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- The admin dashboard shows the installed SealShare version, with links to its release notes, the SealShare website and noNameWEB. + ### Fixed - Docker installs updated from 2.0 answered every upload with "409 Conflict". The example `docker-compose.yml` mounted the SQLite volume over all of `/app/database`, which hid the image's new migration, so it never ran. The container now adds the migrations the volume is missing before migrating, so existing compose files keep working. diff --git a/app/Livewire/Admin/AdminDashboard.php b/app/Livewire/Admin/AdminDashboard.php index af0e804..aa5d15d 100644 --- a/app/Livewire/Admin/AdminDashboard.php +++ b/app/Livewire/Admin/AdminDashboard.php @@ -77,6 +77,7 @@ class AdminDashboard extends Component 'totalFiles' => ShareFile::query()->whereHas('share', fn ($query) => $query->whereNotNull('completed_at'))->count(), 'usedSpace' => $shareService->getTotalUsedSpace(), 'maxQuota' => $shareService->getMaxStorageQuota(), + 'version' => config('app.version'), ]); } } diff --git a/config/app.php b/config/app.php index ba7f372..aa7fb98 100644 --- a/config/app.php +++ b/config/app.php @@ -15,6 +15,19 @@ return [ 'name' => env('APP_NAME', 'SealShare'), + /* + |-------------------------------------------------------------------------- + | SealShare Version + |-------------------------------------------------------------------------- + | + | The release this code is, shown on the admin dashboard. Bump it together + | with the release's heading in CHANGELOG.md: tests/Feature/AppVersionTest + | fails while the two differ. + | + */ + + 'version' => '2.1.0', + /* |-------------------------------------------------------------------------- | Application Environment diff --git a/resources/views/livewire/admin/admin-dashboard.blade.php b/resources/views/livewire/admin/admin-dashboard.blade.php index 5d9ac91..2f780e6 100644 --- a/resources/views/livewire/admin/admin-dashboard.blade.php +++ b/resources/views/livewire/admin/admin-dashboard.blade.php @@ -63,6 +63,14 @@ + {{-- Page chrome, not content, so a quiet line instead of a card: the installed version, its release notes and who makes SealShare. --}} + + {{ __('Are you sure you want to delete this share?') }} diff --git a/tests/Feature/Admin/AdminDashboardTest.php b/tests/Feature/Admin/AdminDashboardTest.php index ae19b7f..c8fa545 100644 --- a/tests/Feature/Admin/AdminDashboardTest.php +++ b/tests/Feature/Admin/AdminDashboardTest.php @@ -44,6 +44,18 @@ test('admin dashboard shows stats', function () { $response->assertSee('Disk Usage'); }); +test('admin dashboard shows the installed version with its release notes and links to the website and noNameWEB', function () { + $admin = User::query()->where('is_admin', true)->first(); + config(['app.version' => '9.8.7']); + + $response = $this->actingAs($admin)->get(route('admin.dashboard')); + + $response->assertSee('SealShare 9.8.7'); + $response->assertSee('href="https://gitea.nonameweb.ch/noNameWEB/SealShare/releases/tag/v9.8.7"', false); + $response->assertSee('href="https://sealshare.nonameweb.ch"', false); + $response->assertSee('href="https://nonameweb.ch"', false); +}); + test('admin can delete share', function () { Storage::fake('shares'); diff --git a/tests/Feature/AppVersionTest.php b/tests/Feature/AppVersionTest.php new file mode 100644 index 0000000..937a663 --- /dev/null +++ b/tests/Feature/AppVersionTest.php @@ -0,0 +1,12 @@ +toBe($release[1]); +});