Swap shows only the new media, no guessed endings, quieter screen

- A swap stops the previous media at once; buffer counts only for the
  media the player holds (client) and the current mediaId (server), so
  the old video can no longer start the new one.
- The automatic frozen-picture reload is gone (false alarms on still
  scenes); Reload video stays.
- The "Next episode" pill shows only from a known ending.
- A web link's thumbnail is its cover, under the video's own name.
- While playing, the unread chip stays off the picture; chat pop-ups
  can be All / Only when paused / Off.
- Server fetch failures say when the server has no cookies.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
foxyzandClaude Opus 5.5 committed 2026-10-11 04:31:14 +03:00
1 parent ab133dd82f
commit 27b4ec2c96
25 files changed
+274 -485

No files matched your search

+7 -7
View File
@@ -154,14 +154,14 @@ void main() {
});
group('next episode prompt', () {
test('at the ED start when known, else the last two minutes', () {
test('at the ED start when known, else none (never a guessed time)', () {
expect(nextPromptStart(null, m(24), endingStart: m(20)), m(20));
expect(nextPromptStart(null, m(24)), m(22));
expect(nextPromptStart(null, m(24), endingStart: null), m(22));
// Nonsense ending starts fall back.
expect(nextPromptStart(null, m(24), endingStart: m(25)), m(22));
expect(nextPromptStart(null, m(24), endingStart: Duration.zero), m(22));
expect(nextPromptStart(null, s(90)), Duration.zero);
expect(nextPromptStart(null, m(24)), isNull);
expect(nextPromptStart(null, m(24), endingStart: null), isNull);
// Nonsense ending starts count as unknown.
expect(nextPromptStart(null, m(24), endingStart: m(25)), isNull);
expect(nextPromptStart(null, m(24), endingStart: Duration.zero), isNull);
expect(nextPromptStart(null, s(90)), isNull);
});
});