• v2.2.0 e051aa1aec

    v2.2.0
    linter / quality (push) Successful in 58s
    tests / ci (8.5) (push) Successful in 3m11s
    docker / build-and-push (push) Successful in 7m10s
    docker / test (8.5) (push) Successful in 3m10s
    docker / release (push) Successful in 3s
    Stable

    gitea-actions released this 2026-09-19 04:13:04 +00:00 | 2 commits to main since this release

    Added

    • The admin dashboard shows the installed SealShare version, with links to its release notes, the SealShare website and noNameWEB.

    Changed

    • docker-compose.example.yml mounts sealshare_database at /app/database/sqlite instead of /app/database, and sets DB_DATABASE: /app/database/sqlite/database.sqlite. Existing compose files keep working. To switch, mount the same volume at the new path and set DB_DATABASE in both services; the database is kept.
    • A share that reaches its download limit is closed at once, but deleted by the hourly cleanup 24 hours after its last download instead of immediately, so downloads still running can finish. Until then its files count towards the storage quota.
    • The download page of a share with a download limit says how many downloads are left, or how long the recipient can still download.
    • The admin dashboard shows downloads as "2 of 3 downloads" and marks shares at their limit as "Download limit reached". These no longer count as active shares.
    • The sort dropdown on the admin dashboard spans the full width of the shares card.
    • PHP reads the Docker image's limits (PHP_UPLOAD_MAX_FILESIZE, PHP_POST_MAX_SIZE, PHP_MAX_EXECUTION_TIME, PHP_MAX_INPUT_TIME, PHP_MEMORY_LIMIT) from the environment itself; the entrypoint no longer writes an ini file on start. The variables and their defaults are unchanged.
    • Updated to Livewire Material 2.2.0.
    • Development: docker-compose.dev.yml extends docker-compose.yml, so the dev stack runs the scheduler and the production image's PHP extensions, plus a Vite dev server with hot reload. It takes its settings from .env, and publishes ports only with docker-compose.ports.yml. docker/dev.Dockerfile became the dev stage of the Dockerfile.

    Fixed

    • Docker installs set up before 2.1.0 answered every upload with "409 Conflict" after the update. The example docker-compose.yml mounted the SQLite volume over all of /app/database, which hid the image's new migrations, so they never ran. The container now adds the migrations the volume is missing before migrating.
    • A share with several files and a download limit was deleted as soon as one file was downloaded, because every file counted as a whole download. Now one recipient's visit counts once, and they have 1 hour to download all the files and the ZIP. Two recipients who start at the same moment can no longer both get the last download.
    • The scheduler container no longer shows as "unhealthy". It inherited the image's healthcheck, which asks the web server that only the app container runs. For an existing install, add healthcheck: { disable: true } to the scheduler service in your docker-compose.yml.
    • The "30 Days" expiration lasted a calendar month; it now lasts 30 days.
    • Admin settings only save a default expiration that is one of the offered options.

    Removed

    • Email verification (/email/verify), which was never enforced: SealShare has a single admin account and no registration.
    • The composer dev script and the packages only it used (concurrently, laravel/pail, laravel/sail, autoprefixer), with the shell-quote override that concurrently needed. Development runs in Docker (docker-compose.dev.yml).
    Downloads