EXIF:ModifyDate dropped, SubSec promoted, path-guess fallback added,
manual edits now preserved on rescan. backfill_taken_at sweep firing
across all non-manual photos.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
After the hard-remove SourceRoot endpoint shipped, two real-world FK
issues surfaced (parent_id self-FK and cross-source-root children) and
one tz-aware datetime issue on PATCH /photos/{id}. All three fixed in
the same session. Trash icon also picks up a spinner during the multi-
second cascade.
Deploy.sh's --force-recreate flag isn't actually recreating reliably;
flagged as open infra question.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Trash icon is now an actual hard delete (SourceRoot + Folders +
Photos, Nextcloud files untouched). Watcher's 5-minute soft-time-
limit kill is fixed. Beat schedule fires discard_missing_photos
every 30 min as a safety net for events the real-time watcher
might miss.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
LoginPage now bounces straight through Authentik when OIDC is on,
with skipAutoSso escape hatches for logout / error / explicit
password use. Also flagging that the first deploy.sh --force-recreate
run raced with a manual --no-deps recreate and broke the stack;
recovery via docker compose down && up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
/opt/mule-deploy/deploy.sh now runs docker compose up -d --build
--force-recreate. Eliminates the recurring 'image rebuilt but
container not restarted' issue we hit three times during the
perf-sweep session.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Heap card stays pinned at the top, editable form + readonly metadata
share a single scroll area, and the four readonly sections are now
wrapped in one outer Metadata collapsible.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Five fixes this session: backend out of dev mode, PIL fallback for
iPhone Apple ProRAW Linear DNG, source root state classification so
prune-missing handles renamed folders, smaller initial page size +
idle polling backoff, and a partial index on photos that takes the
list query from 25ms seq-scan to 0.1ms index-only scan.
Also flags the deploy.sh --force-recreate gap that bit twice this
session and the outstanding data-drift (4,154 orphan rows + one
unregistered folder).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Backend was running --reload single-worker in production. Switched to
--workers 2 --proxy-headers. Also note the deploy.sh quirk where a
runtime-only command change needed --force-recreate to take effect.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Initial documentation of the hubris Proxmox homelab as a cross-linked
markdown wiki. Per-node pages, cross-cutting infrastructure pages, an
investigation log, and an operations cheatsheet. Each node and topic
ends with a Changelog section so changes can be tracked in-place going
forward.
Refreshed against live state on 2026-04-28 — 14 active LXCs (109
syncthing currently stopped) + 1 VM (108 haos). Reflects post-A/B-test
state of the 2026-04-21 hubris crash-loop investigation.