Repository navigation
Replies: 10 comments 5 replies
|
Built this into v4.0.0 as a new always_have rule pattern called "Premiere." Short version: a new
So requesting S3/S4 of a mid-run show, or just letting a 5-season show sit until you're ready, both work the same way — whatever season is current gets dangled, and committing to watch it switches you into normal chronological viewing from there. Docs + example rule are in the README under "Premiere." Thanks for writing this up clearly, it made the design a lot easier to pin down. |
|
Thanks for implementing Premiere so quickly! I checked the v4.0.0 tag One catch-up case seems to be missing:
Running With exactly the same inputs except S4E01 already having a file, the swap Is another scheduled path supposed to monitor and search the newly current |
|
Good catch, and you were right — fixed in v4.0.1. The bug was exactly what you traced: Fixed by having that function proactively monitor and search the newly-current premiere the moment it's detected as current, while still holding off on evicting the old one until the new one is actually confirmed downloaded. Appreciate you actually tracing it against the shipped code instead of just reporting a vague symptom — made this a same-day fix. |
|
Thanks! I reran the catch-up case against the unmodified v4.0.1 tag. It now monitors and searches the new premiere while keeping the old one, then swaps after import. All 106 shipped tests also passed. Before moving to a fully native deployment, could you clarify four related behaviors? These are compatibility requirements from an existing setup, rather than four assumptions that Premiere itself is broken:
Are these covered by other native settings or scheduled paths? If not, would you consider native support for them? I can provide small synthetic reproductions for each behavior. |
|
Good follow-up questions, answering each: 1 & 2 (Jellyfin matching + reconciliation): #1 is now fixed in v4.0.2 — the integration prefers TVDB ID over title matching when available. Jellyfin's session data already carries the playing episode's SeriesId; it's now resolved to the series' TVDB ID (one extra lightweight API call) and passed into the same TVDB-matching path the Sonarr webhook flow already uses, falling back to the exact same title match as before if that's unavailable. Verified live against a real Jellyfin + Sonarr pair before shipping. #2 (periodic reconciliation) I'm leaving as-is for now. The missed-watch-event sweep is deliberately startup-only and always queues to a human to review rather than auto-replaying — every media server's definition of "watched" drifts from Episeerr's own detection threshold slightly differently, and guessing wrong silently seemed worse than asking. That part'''s not changing. Tautulli is the integration path I've actually hardened against in practice; Jellyfin support exists and works, it just gets less real-world mileage here. 3: Confirmed — GET is purely additive. It only ever monitors the episodes in its own window and never unmonitors anything outside it. That'''s intentionally Keep'''s job, not Get'''s. 4: You found a real gap, and we'''re going to fix it — just not the way you suggested. Keep still anchors strictly to the watched position and removes everything before it; that part of the model isn'''t changing. But "Keep 1" should mean what it says: make sure that many episodes actually exist, not just assume whatever'''s at that position is there. So instead of searching backward through history for a different already-downloaded episode to protect, Keep will check whether the episode it'''s supposed to be keeping actually has a file — and if not, fetch it. Same anchor, same "remove everything before it" rule, it just actively closes the gap between "Keep says it'''s keeping something" and that thing really being on disk. |
|
Update on #4: shipped in v4.0.3. When the rule wants the watched episode to stay present ( |
|
Thanks for the quick fixes and explanations! I checked the unmodified v4.0.3 tag: all 106 shipped tests passed, the original Premiere catch-up case still works in isolation, and the parent-series TVDB lookup passed my synthetic checks. I understand you want to preserve the existing model. Before closing this out, would you consider the remaining requirements as explicitly opt-in settings, with defaults unchanged?
Would any of these be acceptable as optional native features, or are they outside the project's scope even as opt-ins? Happy to provide the small synthetic cases. Thanks again for adding Premiere and working through the concrete findings! |
|
Understood — no pressure or expectation of a commitment. Thanks for taking the time to implement Premiere, fix the concrete issues, and explain the remaining design choices. I'll keep the remaining items as requests rather than assume they're on a roadmap. I appreciate your work on the project! |
|
One thought on reducing the implementation work: I already have local implementations and regression tests for watched-state reconciliation, a strict GET window, and retaining the last watched file that actually exists. They would need adapting to the current upstream code; they are not a ready-to-merge PR, and the last-file behavior differs from the delayed-anchor handover I suggested. If useful, I could prepare a small, separately reviewable contribution for whichever part you would actually want, with optional behavior and existing defaults preserved. Would you be interested in seeing one, or would you prefer to leave these outside the project? No expectation that you take them on or commit to maintenance. |
|
Picked one of these back up: the missed-watch-event sweep (which already detects externally-set watched marks correctly - it reads Jellyfin/Emby playstate directly, not webhooks) was only ever running once at startup. It now also re-runs on the normal cleanup cadence, so it eventually surfaces these on a long-running instance without needing a restart. Still only ever queues to Pending Watch Events for human review, never auto-replays. Shipped in v4.0.5. |
Uh oh!
There was an error while loading. Please reload this page.
Could you add an optional season-selection policy that works with GET 1 / KEEP 1?
Is this already possible through existing settings? If not, could it become a native rule option?
All reactions