End state of the path C re-flip. strawApp Kotlin is now ~UI + thin
glue to strawcore (Rust). The Rust core does:
- search (rustypipe.search_videos)
- streamInfo (rustypipe.player → pre-signed iOS InnerTube URLs)
- channelInfo + channel videos (rustypipe.channel + channel_videos)
All via UniFFI suspend fns. NewPipeExtractor is zero-import in
straw Kotlin. libstrawcore.so packs rustypipe + reqwest + tokio +
rustls + rquickjs per ABI (~3-7MB each).
Built against the audit-hardened Sulkta-Coop/rustypipe fork
v0.11.5-sulkta.2 — iOS-first default client order, soft-fail sig
deobf, Deobfuscation errors switchable, observability via Reporter.
Verified end-to-end on emulator:
- C-3: search returns Darknet Diaries results
- C-4: VideoDetail loads (title/uploader/views/RYD/description),
inline ExoPlayer plays the iOS-fetched stream URL
- C-5: Channel page (NCS) shows banner + avatar + 34.3M subscribers
+ full video list