Phase A: NewPipeExtractor + OkHttp Downloader wired in. Search bar +
LazyColumn results. Tap = navigate to detail.
Phase B: VideoDetail screen — StreamInfo metadata + Return YouTube
Dislike chips + description.
Phase C: Media3 ExoPlayer in Compose. Resolves StreamInfo to best
playable: DASH MPD → HLS → combined progressive → merged
videoOnly+audio.
Phase D: SponsorBlock SHA-256 prefix lookup. 250ms position-poll loop
inside PlayerScreen — exoPlayer.seekTo(segment.end) when entering
a sponsor segment. Toast on skip.
Phase E: Verified live on Android 14 emulator. linus tech tips search
returns real results with thumbnails; tapped result opens detail;
hit Play → video plays through ExoPlayer.
Architecture: everything in :strawApp for now (not pushed into :shared
yet — KMP refactor is day-3). Pure-state nav (sealed Screen + stack,
no nav library).
Known polish gaps (day-3): RYD chips render empty on some videos,
description has raw HTML (markdown render needed), no Koin DI yet,
no persistence.
GPL-3.0-or-later per upstream NewPipe.
Initial Sulkta fork of NewPipe with a new :strawApp module that ships a
clean Compose-based Android APK at applicationId com.sulkta.straw.
What's here:
- :strawApp — thin Android application shell, MaterialTheme + StrawHome
Composable. Lives alongside legacy :app so we don't break upstream.
- buildSrc — STRAW_APPLICATION_ID/VERSION constants alongside the existing
NEWPIPE_APPLICATION_ID_OLD/NEW.
- docs/sulkta — RECON.md (NewPipe codebase breakdown) + DECISIONS.md
(stack + scope decisions).
NewPipe's :shared KMP scaffold is at 892 LOC and renders nothing; this
fork picks up there and races ahead. Day-1 ships a hello APK; day-2 wires
NewPipeExtractor + Media3 player + SponsorBlock + Return YouTube Dislike.
GPL-3.0-or-later per upstream.
Currently translated at 55.4% (51 of 92 strings)
Translated using Weblate (Latvian)
Currently translated at 97.8% (759 of 776 strings)
Translated using Weblate (Dutch)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Latvian)
Currently translated at 97.8% (759 of 776 strings)
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 66.3% (61 of 92 strings)
Translated using Weblate (Belarusian)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 65.2% (60 of 92 strings)
Translated using Weblate (Slovak)
Currently translated at 77.1% (71 of 92 strings)
Translated using Weblate (Croatian)
Currently translated at 99.8% (775 of 776 strings)
Translated using Weblate (Serbian)
Currently translated at 99.2% (770 of 776 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Milan <mobrcian@hotmail.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: Nero <guihsalmeida0210@hotmail.com>
Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Co-authored-by: Yauhen <bugomol@users.noreply.hosted.weblate.org>
Co-authored-by: ojppe <ojppe@users.noreply.hosted.weblate.org>
Co-authored-by: Саша Петровић <salepetronije@gmail.com>
Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant/
Translation: NewPipe/Metadata
Move important version properties to buildSrc directory to access between modules
as needed.
Also add a simple task to generate a simple BuildConfig class to access version name.
This is better than adding dependency on a third-party library/plugin.
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Dutch)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Croatian)
Currently translated at 99.7% (774 of 776 strings)
Translated using Weblate (Spanish)
Currently translated at 72.8% (67 of 92 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Romanian)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Portuguese)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Slovak)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Italian)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Latvian)
Currently translated at 97.1% (754 of 776 strings)
Translated using Weblate (Korean)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Greek)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (92 of 92 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (French)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (French)
Currently translated at 100.0% (92 of 92 strings)
Translated using Weblate (Estonian)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Persian)
Currently translated at 98.8% (767 of 776 strings)
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (92 of 92 strings)
Translated using Weblate (German)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Hungarian)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Polish)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (German)
Currently translated at 100.0% (92 of 92 strings)
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (776 of 776 strings)
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 63.7% (58 of 91 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 83.5% (76 of 91 strings)
Translated using Weblate (Spanish)
Currently translated at 72.5% (66 of 91 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (773 of 773 strings)
Translated using Weblate (Polish)
Currently translated at 100.0% (773 of 773 strings)
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (773 of 773 strings)
Co-authored-by: 439JBYL80IGQTF25UXNR0X1BG <439jbyl80igqtf25uxnr0x1bg@users.noreply.hosted.weblate.org>
Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: Femini <nizamismidov4@gmail.com>
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Michalis <michalisntovas@yahoo.gr>
Co-authored-by: Mickaël Binos <mickaelbinos@outlook.com>
Co-authored-by: Milan <mobrcian@hotmail.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: Nicolás Pérez <nicoperez241@proton.me>
Co-authored-by: Olly <pifahif961@cadinr.com>
Co-authored-by: Philip Goto <philip.goto@gmail.com>
Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: Trunars <trunars@abv.bg>
Co-authored-by: UDP <udp@users.noreply.hosted.weblate.org>
Co-authored-by: VfBFan <vfbfan@users.noreply.hosted.weblate.org>
Co-authored-by: delvani <del.cidrak@users.noreply.hosted.weblate.org>
Co-authored-by: justcontributor <kty5663@gmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/en_GB/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant/
Translation: NewPipe/Metadata
Building release builds is still broken on encrypted linux file systems but that's seems
to be not a priority for Google to fix. Upgrade so that developers can avoid suffering from
bugs such as preview rendering failure.
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
Currently translated at 100.0% (773 of 773 strings)
Translated using Weblate (Swedish)
Currently translated at 95.6% (87 of 91 strings)
Translated using Weblate (Hindi)
Currently translated at 100.0% (91 of 91 strings)
Translated using Weblate (Hindi)
Currently translated at 100.0% (773 of 773 strings)
Translated using Weblate (Punjabi)
Currently translated at 100.0% (91 of 91 strings)
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 63.7% (58 of 91 strings)
Translated using Weblate (Polish)
Currently translated at 63.7% (58 of 91 strings)
Translated using Weblate (Swedish)
Currently translated at 95.6% (87 of 91 strings)
Translated using Weblate (Swedish)
Currently translated at 100.0% (773 of 773 strings)
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 63.7% (58 of 91 strings)
Translated using Weblate (Bengali (India))
Currently translated at 2.1% (2 of 91 strings)
Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 63.7% (58 of 91 strings)
Translated using Weblate (Romanian)
Currently translated at 100.0% (773 of 773 strings)
Translated using Weblate (Uzbek (Latin script))
Currently translated at 27.4% (25 of 91 strings)
Translated using Weblate (Turkish)
Currently translated at 35.1% (32 of 91 strings)
Translated using Weblate (Russian)
Currently translated at 100.0% (773 of 773 strings)
Translated using Weblate (German)
Currently translated at 100.0% (91 of 91 strings)
Translated using Weblate (Persian)
Currently translated at 95.6% (739 of 773 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (91 of 91 strings)
Translated using Weblate (German)
Currently translated at 100.0% (773 of 773 strings)
Translated using Weblate (Belarusian)
Currently translated at 98.0% (758 of 773 strings)
Translated using Weblate (French)
Currently translated at 100.0% (91 of 91 strings)
Co-authored-by: 439JBYL80IGQTF25UXNR0X1BG <439jbyl80igqtf25uxnr0x1bg@users.noreply.hosted.weblate.org>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Doniyor Nasriddinov <nasridoninl@gmail.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Erenay <erenaydev@proton.me>
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Gabriel Wirtuwiusz <konstantyd@o2.pl>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: IEEE-754 <253034919+IEEE-754@users.noreply.github.com>
Co-authored-by: Mickaël Binos <mickaelbinos@outlook.com>
Co-authored-by: Mona Lisa <nickwick@users.noreply.hosted.weblate.org>
Co-authored-by: Pavel Miniutka <pavel.miniutka@gmail.com>
Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Co-authored-by: UDP <udp@users.noreply.hosted.weblate.org>
Co-authored-by: VfBFan <vfbfan@users.noreply.hosted.weblate.org>
Co-authored-by: whistlingwoods <72640314+whistlingwoods@users.noreply.github.com>
Co-authored-by: পার্থ ধর <partha.dhar2008@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/bn_IN/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/tr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uz_Latn/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant/
Translation: NewPipe/Metadata
On some phones (e.g. Oppo and Oneplus) the video player enters the STATE_IDLE 10 minutes after being paused. This causes the play button to stop working.
This happens because once a player has become idle, we need to call prepare() before playback can happen again.
But after I added prepare(), it would just skip to the end of the video. So now I'm executing the same code that happens when ERROR_CODE_UNSPECIFIED is done. This causes playback to resume normally.
androidx framework has bumped minSdk requirement to API 23. Most libs dependening
upon the framework as a result require us to bump API level or keep using outdated versions.
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>