diff --git a/app/scheduler/source_stats.py b/app/scheduler/source_stats.py index 817b4a6..9fbb01b 100644 --- a/app/scheduler/source_stats.py +++ b/app/scheduler/source_stats.py @@ -215,6 +215,9 @@ def run_source_stats() -> dict: FILTER (WHERE status='success' AND ttff_ms IS NOT NULL) AS p50_ttff FROM playback_events WHERE created_at > :win + -- cichy resolver w apce (np. DoodStream) pada, a WebView moze jeszcze + -- zagrac, wiec to nie jest porazka zrodla + AND error_kind IS DISTINCT FROM 'resolver' GROUP BY origin """ ), diff --git a/mobile/src/changelog.ts b/mobile/src/changelog.ts index 1ddaf4a..dc87f51 100644 --- a/mobile/src/changelog.ts +++ b/mobile/src/changelog.ts @@ -35,6 +35,16 @@ export type ChangelogEntry = { }; export const CHANGELOG: ChangelogEntry[] = [ + { + id: '2026-10-02a', + date: 'October 2026', + items: [ + 'Favorites: performers and studios with something new are listed first, and the badge says how many new scenes and how many new movies there are, instead of one number for both.', + 'Edge: a clip its creator deleted no longer leaves you on a black screen. The app skips to the next one and the clip is taken out of the feed for everyone. On a creator page the grid loads smaller previews, so it fills in faster.', + 'Movies on myvidplay, playmogo and doply: the app took every one of them for a deleted video, because the host page always carries a hidden "not found" block. It now tries the direct stream first and only falls back to the web page when that fails.', + 'A certificate error from a host is no longer reported as a deleted video, and the app no longer gets stuck when the phone fails to save its device key.', + ], + }, { id: '2026-09-17b', date: 'September 2026', diff --git a/mobile/src/lib/doodstream.ts b/mobile/src/lib/doodstream.ts index 0494333..b4ea3f1 100644 --- a/mobile/src/lib/doodstream.ts +++ b/mobile/src/lib/doodstream.ts @@ -174,13 +174,23 @@ async function _continueAfterFetch( // pass_md5, a CDN oddaje jakiś plik, więc bez tej detekcji resolver uznaje usunięte // wideo za sukces i user dostaje placeholder albo "Source error" z ExoPlayera. // `no_video_` to obrazek-zaślepka (i.doodcdn.io/img/no_video_3.svg), najpewniejszy marker. + // + // 2026-10-02: szablon playera playmogo ma ten sam blok „Not Found" ZAWSZE, tylko ukryty + // klasa `d-none` (