github bjoernch/immich-companion v0.8.0
v0.8.0 — One-click API key, instant new tab, location state

4 hours ago

Highlights

One-click API key creation

The welcome page (step 2) and Settings → Connection both gained a Generate key from my session button that mints a scoped API key against your Immich without asking for a password. Works for OAuth, SSO, and password-based Immich logins — the extension piggybacks on the session cookie your browser already has from when you signed into Immich. The cookie value is never read (it's httpOnly); only the resulting API key is stored.

Why this is worth knowing about:

  • OAuth-only users can finally onboard without copy-paste. Click Generate key from my session with an Immich tab signed in, the extension does the rest.
  • Same path doubles as a "rotate the key" button in Settings → Connection — useful if you suspect leakage, after a server reset, or when the recommended-scopes list grows.
  • The key created has exactly the eight scopes the extension actually uses (asset.upload, asset.read, asset.download, asset.update, asset.view, album.read, albumAsset.create, sharedLink.create). Frozen at module import time — no path mints a "full access" key by accident.

SECURITY.md has a new section breaking the security guarantees down per surface.

New tab paints instantly (closes #8)

Every new-tab open now paints from a small pre-fetched cache (Cache API for the image bytes, chrome.storage.local for a 3-entry queue) and immediately fires a message to the background service worker to refill the cache for the next open. Two parts to the speedup:

  • The cache itself. Cold start is the same speed as before — but every new tab after that opens with the photo already there.
  • First-paint snap. The 600 ms opacity fade-in is skipped on first paint (was making cached opens still feel slow). Auto-rotate cycles still get the smooth fade because there it actually transitions between two visible photos.

Storage hygiene:

  • Worst case: 3 × ~500 KB previews ≈ 1.5 MB on disk.
  • 24-hour staleness window — entries older than that get evicted on the next open.
  • FIFO eviction past the 3-entry cap.
  • Cache top-up runs in the background service worker, not the new-tab page, so it survives the page unloading the moment you type a URL or click a result. (This was the bug behind "the cache feels slow" — the page was dying mid-fetch and the queue stayed empty.)

State / region in the location overlay (closes #9)

The new-tab corner used to show "Boulder, United States". It now includes the state when Immich has it from EXIF GPS reverse-geocoding: "Boulder, Colorado, United States". Photos without a state value fall through cleanly — the empty field is filtered out.

"Replace new tab" defaults back to ON

The v0.7.0 default-off ("you have to opt in to the photo new tab") turned out to be more confusing than helpful — users were installing the extension and then asking why their new tab wasn't being replaced. New installs again default to on; existing users keep whatever they explicitly chose (the storage value overrides the default).

Closed issues

  • #8 — Cache images used as new-tab background. Closed by the cache flow above.
  • #9 — Add State to location data when viewing new tab image. Closed by the location-overlay change.
  • #4 — Don't want the extension to control my tabs. Already closed; the README's Customising the new tab (or getting out of it) section documents the platform constraint and the in-extension workarounds.

Compatibility

  • Existing settings persist across the update — server URL, API key, default album, theme, all feature toggles, the saved-uploads list. chrome.storage.local survives the in-place update from every store.
  • The redundant v0.7.0 onInstalled migration that wrote featureNewtab: true for upgraders is removed; the new default does the same job for everyone (storage values still override).
  • Verified untouched in this release: the save-to-immich flow, content script, popup search / video preview / filter pills / Maps / update banner / bug-report consent flow, Safari workflow, manifest permissions. The Chrome and Firefox zips are byte-equal to v0.7.0 in those areas.

Install

  • Chrome Web Store — auto-updates within ~1–2 days. Also covers Edge, Brave, Vivaldi, Arc, Opera and other Chromium browsers.
  • Firefox Add-ons — auto-updates within ~1 day.
  • Safari (macOS, experimental)immich-companion-safari-0.8.0.zip below; follow SAFARI.md for the Xcode build steps.

Full Changelog: v0.7.0...v0.8.0

Don't miss a new immich-companion release

NewReleases is sending notifications on new releases.