data/ was added to .gitignore only after its contents had already been
committed, and an ignore rule never untracks existing files. The live
SQLite database therefore showed up as modified on every commit, made
accidental commits of user history likely, and bloated the repo with
binary churn.
Claude-Session: https://claude.ai/code/session_01QkiLqAtFamcbFXDnCtZSPm
Instagram and TikTok extraction silently breaks whenever yt-dlp falls
behind upstream API changes, and fixing it required a manual image
rebuild each time. Updating at container start ties the fix to the Pi's
weekly reboot instead, so the extractor stays current without operator
intervention. A failed update never blocks startup, because the network
may not be up yet right after boot.
.gitattributes pins LF for shell scripts: a CRLF checkout on Windows
would make the entrypoint unrunnable inside the Linux container.
Claude-Session: https://claude.ai/code/session_01QkiLqAtFamcbFXDnCtZSPm
- Bilder beim Extrahieren lokal cachen (data/images/{id}.ext) und über GET /api/history/{id}/image ausliefern; Löschen bei Verlaufseintrag-Entfernung
- history.db in ./data/ Volume verschoben, damit sie Container-Rebuilds überlebt
- yt-dlp Subprocess-Aufrufe auf Windows gefixt: run_in_executor statt asyncio.create_subprocess_exec (SelectorEventLoop-Kompatibilität)
- ./data:/app/data Docker-Volume für persistente Datenhaltung hinzugefügt