Repository navigation
Log in with a username and password
- The web UI now uses a username and password (
FLINCH_WEB_USERNAME,FLINCH_WEB_PASSWORD), like Sonarr's and Radarr's login, instead of a token pasted into the browser. The browser keeps no secret. (#20) FLINCH_WEB_TOKENstays as the API key.Authorization: Bearerstill works on every route,POST /v1/systemoneincluded, andX-Api-Keynow does too. Home Assistant, n8n and scripts need no change.- Sessions use an HttpOnly, SameSite=Strict cookie (Secure behind HTTPS) that lasts 30 days, with Log out in the header. Writes need the UI's own header, failed logins pause after 5 tries, and credentials never reach responses or logs.
Safer deletion decisions
-
Adopting a fitted model can no longer widen what may be deleted. The P(safe) the floors and the eviction order read is capped at the hand-set priors. (#14)
-
A movie counts as watched only when Plex counted a view. A
lastViewedAtstamp alone means started, and a started movie or season is never scored as more deletable than a finished one. (#15) -
Nothing unwatched is handed to a delete collection.
- A blank Leaving Soon title now holds unwatched items, and never-played reclaim with them, instead of sending them straight to deletion.
- An unwatched item waiting to enter Leaving Soon is taken out of any delete collection at once.
- An unwatched item in a delete collection FLINCH did not add it to is kept by an exclusion.
The Capacity, Overview and Settings pages say when a hold applies. (#16)
-
A moved eviction keeps its recycle-bin credit, and credit lost to a restart or a bad state file heals, so one gap is never evicted twice. (#17)
-
No watch evidence means keep. An item no watch source reported on is never reclaimed as unplayed. (#18)
-
An unreadable Tautulli percentage counts as unfinished. (#19)
-
The docs say which floors actually gate deletion, and no longer claim a fitted model is running. (#13)
Known limit. One case can still delete without a warning: a season whose watched episodes were deleted outside FLINCH can read as completed. See Known limits in docs/how-it-works.md for the workaround.
Upgrade
Running latest? It now points at 0.2.0, and any restart pulls it. Pin 0.1.1 until you have done steps 1 and 2.
- Add the login to
flinch-secrets. Patch inFLINCH_WEB_USERNAMEandFLINCH_WEB_PASSWORD; Upgrading from the access token shows akubectl patchthat keeps the password out of your shell history. - Apply the 0.2.0 manifests. Update your checkout (
git fetch --tags && git checkout v0.2.0), setnewTag: "0.2.0"in your overlay if you have one, and runkubectl apply -k. The 0.2.0 manifests pass the two new keys toflinch-web. MovingnewTagalone in an overlay of a 0.1.1 checkout runs 0.2.0 on the old manifests, and the UI stays on "No login set". - Log in. Until the Secret has both keys and
flinch-webruns the 0.2.0 manifests, the UI says "No login set". If you added the keys after the rollout, runkubectl -n media rollout restart deploy/flinch-web. Nothing is left open meanwhile, and the API key keeps working.
No state migration. Every behaviour change is toward keeping; these are the ones you may notice on the first cycle:
- With no Leaving Soon collection named, unwatched items and never-played reclaim are held.
- A movie read as watched only from Plex's view stamp, or only from Tautulli streams with no readable percentage, now counts as started: it waits for never-played reclaim and a Leaving Soon warning.
- An item no watch source reported on is kept.
- An unwatched item FLINCH put in a delete collection earlier is taken back out and moves to Leaving Soon. One in a delete collection FLINCH has no record of adding it to gets a FLINCH exclusion until you take it out.
- Adopting a fitted model can no longer make an item eligible that the hand-set priors hold.
POST /v1/systemone: safe is the forecast alone and ignores your keep rules; ask decision for the plan's verdict, and never delete on either. The endpoint changes nothing; only Maintainerr deletes.
docker pull ghcr.io/tobhoster/flinch:0.2.0 # amd64 and arm64