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) <noreply@anthropic.com>
Move form wrapper outside x-card so the submit button renders inside
the form DOM, and add w-full to all share page action buttons for
consistent full-width styling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add php zip extension to Dockerfile (required by ZipArchive)
- Remove bootstrap/cache/*.php during build to prevent stale
dev-only service providers (e.g. BoostServiceProvider) from loading
- Default DB_DATABASE to /app/database/database.sqlite in
docker-compose.yml so env() fallback works correctly
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ZipStream writes via fwrite(php://output) which FrankenPHP silently
drops, resulting in 0-byte ZIP downloads. Switch to ZipArchive to build
the ZIP as a temp file on disk, then serve with response()->download().
- Rewrite download() to use ZipArchive + BinaryFileResponse
- Remove decryptFileToCallback() from FileEncryptionService
- Update tests for BinaryFileResponse instead of StreamedResponse
- Remove maennchen/zipstream-php dependency
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>