diff --git a/mobile/src/changelog.ts b/mobile/src/changelog.ts index 5215ae7..39d190e 100644 --- a/mobile/src/changelog.ts +++ b/mobile/src/changelog.ts @@ -16,6 +16,13 @@ export type ChangelogEntry = { }; export const CHANGELOG: ChangelogEntry[] = [ + { + id: '2026-07-05', + date: 'July 2026', + items: [ + 'If a video source cannot play in the built-in player, the app now falls back to the site page so it still plays (helps watchporn and similar).', + ], + }, { id: '2026-07-03', date: 'July 2026', diff --git a/mobile/src/screens/SceneDetailScreen.tsx b/mobile/src/screens/SceneDetailScreen.tsx index d0dd186..8ae4ae9 100644 --- a/mobile/src/screens/SceneDetailScreen.tsx +++ b/mobile/src/screens/SceneDetailScreen.tsx @@ -688,8 +688,13 @@ function PlaybackButton({ // Fallback embed do Playera — gdy ExoPlayer dostanie 403 (IP-bound CDN), apka // przełączy się na WebView z tym embed URL'em. Bierzemy pierwszy embed jaki - // jest, niezależnie od kolejności w `links`. - const fallbackEmbedUrl = embedLinks[0]?.embed_url || res.best?.embed_url || undefined; + // jest, niezależnie od kolejności w `links`. Gdy źródło jest natywne-mp4 bez embedu + // (KVS: watchporn/porn00 itd.) i mimo to native+proxy padną na telefonie (report + // watchporn: „resolver nie dziala, a scena dziala w diagnostyce"), spadamy na + // page_url w WebView — strona tube gra po stronie telefonu (residential IP, 0 VPS + // bandwidth), tak jak diagnostyczny browser. Native/proxy dalej sa probowane pierwsze. + const fallbackEmbedUrl = + embedLinks[0]?.embed_url || res.best?.embed_url || source.page_url || undefined; const autoPick = pickAuto(directLinks); if (autoPick) {