Create, edit and revoke shared links from the album header, the selection bar and the Sharing panel. Password, expiry, and the three flags that decide what the person opening it can do. The panel showed a bare key because this plugin never learned the instance's public address. It does not need to store one: Immich has `externalDomain` in its own admin settings, `/server/config` already returns it, and it is the same field Immich's own copy-link button reads, so the two cannot disagree. Empty is a real state and the UI says so rather than inventing a host. Payload shapes came from the live instance's spec.json, not from memory. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
54 lines
2.7 KiB
Markdown
54 lines
2.7 KiB
Markdown
# Photos
|
|
|
|
Your Immich library, reached through Officer.
|
|
|
|
Photos does not store photographs and does not install Immich. You point it at an instance you already
|
|
run; it forwards to it and holds the API key server-side, so no device ever carries one. Your library,
|
|
your originals and every thumbnail stay exactly where they are.
|
|
|
|
## What you get
|
|
|
|
- **The whole library** — timeline, albums, people, places, sharing and search, as panels inside Officer.
|
|
- **A map** of everything with coordinates, clustered.
|
|
- **Upload from the phone**, through Officer rather than to Immich directly.
|
|
- **More than one instance.** Accounts are a per-user registry with a label, a URL and a key; one is
|
|
active and you switch between them in the app.
|
|
|
|
## Sharing
|
|
|
|
Make a public link to an album, or to any selection of photos — from the album header, the selection bar,
|
|
or the Sharing panel. A link can carry a password and an expiry, and you choose whether the people who open
|
|
it may download originals, add photos of their own, or see where and when each shot was taken. Revoking one
|
|
closes it for everybody holding it.
|
|
|
|
The link opens on **your Immich**, not on Officer — that is the only way somebody with no Officer account
|
|
can see it. So Officer needs to know your instance's public address, and it deliberately stores no copy of
|
|
one: it reads **External Domain** from Immich's own admin settings, the same field Immich's own copy-link
|
|
button uses, so the two can never disagree. Leave that field empty and the panel shows share keys instead of
|
|
URLs, and says so.
|
|
|
|
## What you need
|
|
|
|
**An Immich you already run**, and an API key from it (Immich → Account Settings → API Keys).
|
|
|
|
Create the key with **all permissions**. A scoped key returns 403 per route, which does not read as a
|
|
permissions problem — it reads as a broken feature, one screen at a time.
|
|
|
|
Nothing else. No system packages, no host binaries.
|
|
|
|
## Setup
|
|
|
|
1. Install the plugin.
|
|
2. Open **/photos → Connection** and add an instance: a label, its URL, and the API key.
|
|
3. It probes the server, records its version, and marks the account active.
|
|
|
|
## What it deliberately does not do yet
|
|
|
|
- **It is a client, not a backup.** Nothing is copied to Officer. If your Immich goes away, so does the
|
|
library — this plugin never held it.
|
|
- **The key is write-only across the boundary.** The account list reports label, URL and which is active,
|
|
and has no field that could carry a key, masked or otherwise. The only way to change one is to replace
|
|
it. That is deliberate, and it means the app cannot show you a key you have forgotten.
|
|
- **Editing lives in Immich.** This browses, searches, uploads and organises into albums; it is not a
|
|
photo editor and will not become one.
|