9b9b08473487a2ed1f7cf332a9a58c961330fe39
Receiving users:list updated an in-memory array and did nothing else, so a person added to Officer next month reached Photos only if somebody remembered to re-run provisioning by hand. The platform already broadcasts on every create and delete, and re-sends on every sidecar registration — nothing was listening. Now it acts on it. A restart is therefore also a reconciliation, which is the cheap way to recover from any push that was missed while the sidecar was down. An automatic run is NOT allowed to key an adopted account. Keying one means resetting its password, because that is the only way Immich issues a key, and for an account that pre-dated Officer that takes away a login somebody is using — most likely in Immich's own app. Doing that unattended, to a person who did not know it was at stake, is not the same act as the owner choosing it: so the account is linked, left keyless, and named in `pending`. The deliberate /provision route still does the whole job. Tested against the case this is for: jrg.conceicao has an Immich library and no Officer account today. When that account exists, the plan adopts the library rather than building a second one beside it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
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
- Install the plugin.
- Open /photos → Connection and add an instance: a label, its URL, and the API key.
- 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.
Languages
TypeScript
100%