github linuxserver/docker-sealskin 0.3.0-ls56

4 hours ago

CI Report:

https://ci-tests.linuxserver.io/linuxserver/sealskin/0.3.0-ls56/index.html

LinuxServer Changes:

Full Changelog: 0.1.39-ls55...0.3.0-ls56

Remote Changes:

SealSkin 0.3.0

The client is now served by your SealSkin server. The browser extension and
the mobile app are thin shells; the launcher, options, file manager, upload
page and collaboration room ship with the server image. A new container env
var, a launcher tweak or an options page change no longer needs a store
submission.

Highlights

  • Served UI. The server hosts the web UI under /ui/ with content-hashed
    assets, so browsers pick up changes without a forced reload.
  • Thin shells. The store packages contain only the connection page, a
    frame host and the privileged pieces: context menus, download interception
    and the E2EE session for the extension; native file open and Custom Tabs for
    mobile. Your private key never leaves the shell.
  • Redesigned interface. Dark only. Deep slate surfaces, the violet end of
    the logo gradient as the single accent, gradient primary buttons, drawn
    checkboxes and tile-style status cards. The launcher draws a blurred backdrop
    from the selected app's icon, cards rise in and tilt on hover, views flip in,
    and modals blur the page behind them. All motion respects
    prefers-reduced-motion.
  • Installed apps follow their store. installed_apps.yml stores a
    reference to the store entry plus your overrides, so store updates apply on
    restart and apps can be edited in place. Existing files migrate on first
    start.
  • YAML files reload on edit. Hand edits to installed apps, stores,
    templates, users and groups are picked up without a restart. Writes are
    atomic.
  • Template settings are server data. The env var definitions for the
    template editor live in server/app/template_schema.yml.
  • One version. VERSION at the repo root drives the server, the served UI
    manifest, both extension manifests, the mobile package and the Android
    version code.

Server

  • One launch spec builder is shared by launches and collaboration, and all
    Docker access goes through the provider.
  • Sessions persist at launch; invalid YAML records are skipped instead of
    clearing the list.
  • PATCH /api/admin/apps/installed/{id} for partial updates.
  • Encrypted routes honour X-Idempotency-Key, so a request retried after a
    network blip runs once.
  • The status call reports the proxy certificate expiry and the dashboard warns
    before it runs out.
  • /internal/* is denied on the public Caddy listener; template and store
    names are validated; uploads are scoped per user; share passwords use salted
    scrypt.
  • python-jose replaced by PyJWT, dependencies pinned, Pydantic v2 API.
  • Small pytest suite, ruff configuration, and a CI workflow that lints, tests
    and builds the client.

Client

  • Single esbuild pipeline in client/ producing the served UI, the extension
    package and the mobile web dir. Font Awesome is vendored; no CDN.
  • Translations are one JSON file per language loaded on demand.
  • The shell retries API calls that fail at the network level and reports
    connection failures with the endpoint and likely cause instead of a bare
    "Failed to fetch".
  • After login the connect page opens the options dashboard.

Upgrading

  • Install the new extension and app builds once. After that, UI changes arrive
    with server updates.
  • Mobile WebViews need a valid TLS certificate to load the served UI.

Don't miss a new docker-sealskin release

NewReleases is sending notifications on new releases.