Repository navigation
Immich Swipe now works with Immich v3 (and v2 / v1.116+), installing it no longer requires CORS headers on Immich, and the UI got a light refresh.
Highlights
- Immich v3 support (#30): uses
POST /search/randominstead of the removedGET /assets/random. Hidden Live Photo video parts are no longer offered for review. - Built-in Immich proxy (#22, #28): the Docker image forwards API calls to Immich itself, so the browser never hits CORS. Images built with
.envuseVITE_SERVER_URL; for the prebuilt image setIMMICH_URL. - Clear connection errors: instead of "Failed to fetch", the login screen says whether it's CORS, an unreachable host, HTTP vs. HTTPS, a wrong API key or a missing permission.
- Login fixes (#8): the selected
.envuser survives a reload. Rebuilding with a changedVITE_SERVER_URLor API key takes effect immediately instead of reusing the old login.
Light UI pass
- One consistent look (#5, #21): a single color palette in light and dark mode, and all menus and dialogs share the same sheet style. On phones you can swipe them down to close.
- Settings (#17): a gear button holds review order, the album filter, skip videos, theme, review history and logout / switch user.
- Album marks (#20): each photo shows which albums it's in, and the album picker marks them. Deleting a photo that's in an album asks first. A new filter shows only photos without an album, or only one album.
- Tutorial (#19): a short "How it works" on first start, available again in Settings.
- Better on mobile / as a PWA (#3, #6, #14): app icon and manifest for "Add to Home Screen", correct safe areas on notched phones, no theme flash on start. Photo info no longer covers small pictures, and the layout holds up with large iOS text sizes.
- Open in Immich (#16, #34): opens in a new tab without taking the app with it.
Fixes: chronological mode no longer freezes when swiping fast, random mode no longer shows the same photo twice in a row, a double tap no longer deletes twice, MIT license added (#24).
Install / upgrade
Prebuilt image:
services:
immich-swipe:
image: ghcr.io/dev-nick421/immich-swipe:v1.0
restart: unless-stopped
ports:
- "2293:80"
environment:
- IMMICH_URL=http://192.168.1.10:2283 # your Immich URLBuilt with .env: docker compose up -d --build. API calls now go through the container to your VITE_SERVER_URL. If the container can't reach that address (e.g. a public domain without NAT loopback), set IMMICH_URL to Immich's LAN or Docker-internal address. docker logs immich-swipe shows the proxy target.
Notes:
- Restricted API keys need
user.read,asset.read,asset.view,asset.download,asset.delete,asset.update,album.read,albumAsset.create(see README). - Random mode no longer includes archived photos.
See the README for setup and troubleshooting.
Full Changelog: v0.5...v1.0