diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ad5c9a..39c419c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.0.0] - 2026-09-13 + +### Changed + +- The interface is rebuilt on [Livewire Material](https://gitea.nonameweb.ch/noNameWEB/livewire-material), a Material 3 Expressive component library, replacing Mary UI and DaisyUI. Every page — upload, share created, download, sign-in, settings, admin and the setup wizard — uses its components, in a colour scheme generated from SealShare's indigo. +- The theme follows the system's light or dark setting until a user picks Light, Dark or System in Settings → Appearance, or from the account menu. A theme chosen in 1.x is kept. +- A single top app bar replaces the sidebar and header layouts. Signed-in users reach Upload, the admin pages, Settings and Log out from the account menu. +- Confirmations for deleting a share, removing the logo, clearing the system password and deleting the account are dialogs instead of browser prompts, and "Saved." messages are snackbars. +- The two-factor setup opens full screen on a phone. +- HTTP error pages and Markdown mail (password reset, email verification) use the same Material design and colours. Set `MAIL_MARKDOWN_THEME=default` to get Laravel's mail theme back. +- Signing in now lands on the admin dashboard. The starter kit's placeholder `/dashboard` page is gone. +- The Docker build installs Composer packages before building the frontend, because the stylesheet imports Livewire Material from `vendor/`. +- Removed the dependencies `robsontenorio/mary`, `daisyui` and `alpinejs` (Livewire bundles Alpine). The Bunny Fonts request is gone. + +### Fixed + +- The admin dashboard passed its sort column and direction straight to the query, so a crafted Livewire request could order shares by any column or cause a server error. It now sorts only by the columns it shows and otherwise falls back to newest first. + ## [1.2.0] - 2026-09-10 ### Added @@ -81,7 +99,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Dark themed UI built with Livewire, Alpine.js, Tailwind CSS and DaisyUI. - Docker images published to `ghcr.io/surtic86/sealshare`, served by FrankenPHP via Laravel Octane. -[Unreleased]: https://github.com/surtic86/SealShare/compare/v1.2.0...HEAD +[Unreleased]: https://github.com/surtic86/SealShare/compare/v2.0.0...HEAD +[2.0.0]: https://github.com/surtic86/SealShare/compare/v1.2.0...v2.0.0 [1.2.0]: https://github.com/surtic86/SealShare/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/surtic86/SealShare/compare/v1.0.1...v1.1.0 [1.0.1]: https://github.com/surtic86/SealShare/compare/v1.0.0...v1.0.1 diff --git a/README.md b/README.md index b8e655f..1d464b1 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,9 @@ A simple, self-hosted file sharing solution built with Laravel. Upload files, ge - **Admin Settings** — Configure upload limits, storage quotas, branding, and more - **Site Branding** — Custom logo, title, and description - **System Password** — Optional global password gate to restrict upload access -- **User Authentication** — Login, registration, password reset, email verification +- **User Authentication** — Login, password reset, email verification - **Two-Factor Authentication** — TOTP-based 2FA via Laravel Fortify -- **Dark Mode** — Dark themed UI with DaisyUI components +- **Light and Dark Themes** — Material 3 Expressive design that follows the system theme, or light or dark by choice - **Setup Wizard** — First-run wizard to create the initial admin account ## Tech Stack @@ -27,11 +27,11 @@ A simple, self-hosted file sharing solution built with Laravel. Upload files, ge |-------|-----------| | **Framework** | Laravel 13 | | **Application Server** | FrankenPHP (via Laravel Octane) | -| **Frontend** | Livewire 4, Alpine.js, Tailwind CSS 4, DaisyUI 5, Mary UI | +| **Frontend** | Livewire 4, Tailwind CSS 4, [Livewire Material](https://gitea.nonameweb.ch/noNameWEB/livewire-material) (Material 3 Expressive) | | **Authentication** | Laravel Fortify | | **Encryption** | Chunked AES-256-GCM with PBKDF2-SHA256 key derivation | | **ZIP Downloads** | Native PHP ZipArchive | -| **Testing** | Pest 4 | +| **Testing** | Pest 5 with browser tests (Playwright) | | **Code Style** | Laravel Pint | | **Build Tool** | Vite | diff --git a/docs/plans/livewire-material.md b/docs/plans/livewire-material.md index 7006309..37f47f5 100644 --- a/docs/plans/livewire-material.md +++ b/docs/plans/livewire-material.md @@ -133,8 +133,8 @@ Step numbers continue the original plan's, so references elsewhere stay valid. from `vendor/`, `./material-scheme.css`, `@source '../views'` and the package's views; drop the daisyUI plugin, maryUI and pagination `@source`s and the swap safelist. `resources/js/app.js` imports the package JS. Run - `php artisan material:scheme "#4f46e5" --variant=tonal-spot`; generate Vibrant to a - temporary output, compare on the upload page in both themes, commit the chosen one. + `php artisan material:scheme "#4f46e5" --variant=vibrant` (chosen over Tonal Spot after + comparing both on the upload page in both themes). 38. **Head and theme.** `partials/head`: remove fonts.bunny.net; include `` before `@vite` (it currently sits outside ``). Publish the config with `theme.default = system`, `storage_key = sealshare-theme`, `legacy_keys = ['mary-theme']`.