vc=84 — rename launcher to 'Straw' + move stream picker into Rust
Two changes: 1. Launcher name is now just 'Straw', not 'Straw debug' — past the debug-branding phase. Kept the .debug applicationId suffix (package stays com.sulkta.straw.debug) on purpose so fdroid updates install in place and the in-app auto-updater keeps working; dropping the suffix would change the package id and force a reinstall that wipes everyone's subs/history. That's a separate, deliberate release-track cutover. 2. Stream-selection logic moved out of Kotlin (resolveStreamPlayback) into the Rust strawcore wrapper as resolve_playback(StreamInfo, max_height) -> ResolvedStreams. The app keeps a thin shim that supplies the resolution cap (Settings.maxResolution) and attaches SponsorBlock segments. Byte-for-byte behavior parity with the old Kotlin picker: highest-bitrate stream at/under the cap, lowest-height fallback when nothing fits, first-element-wins on ties (matching Kotlin maxByOrNull/minByOrNull, not Rust's last-on-ties max_by_key), and isNotBlank() handling for the DASH/HLS URLs. First step of moving all backend logic to Rust; the picking lives at the FFI boundary because it depends on an app setting, keeping strawcore-core a pure extractor. Wrapper cargo check + clippy clean (no new warnings); FFI surface adds ResolvedStreams + resolvePlayback, bindings regen at build.
This commit is contained in:
parent
1531d41742
commit
4affa1e739
5 changed files with 127 additions and 20 deletions
|
|
@ -9,6 +9,20 @@ const val STRAW_SDK_TARGET = 35
|
|||
|
||||
// Sulkta fork — Straw
|
||||
//
|
||||
// vc=84 / 0.1.0-CR — name + stream-picker → Rust:
|
||||
// * The app is now just "Straw" in the launcher, not "Straw debug" —
|
||||
// we're past the debug-branding phase. (The package id stays
|
||||
// com.sulkta.straw.debug under the hood so updates install in place
|
||||
// and nobody loses their subscriptions/history; dropping the suffix
|
||||
// for real is a separate release-track cutover.)
|
||||
// * The stream-selection logic (pick the playable video/audio/combined
|
||||
// URLs from an extraction, honoring the resolution cap) moved out of
|
||||
// Kotlin into the Rust strawcore layer (resolvePlayback). The Kotlin
|
||||
// side is now a thin shim that supplies the cap and attaches
|
||||
// SponsorBlock segments. Behavior is identical — same URLs picked,
|
||||
// same data-saver fallback — it's just backend logic living in Rust
|
||||
// where it belongs. First step of moving all backend logic to Rust.
|
||||
//
|
||||
// vc=83 / 0.1.0-CQ — fix: swapping videos from the minibar kept playing
|
||||
// the old one:
|
||||
// * With a video minimized to the bottom minibar, picking a different
|
||||
|
|
@ -164,6 +178,6 @@ const val STRAW_SDK_TARGET = 35
|
|||
// vc=19 / 0.1.0-AE — rust pipeline cutover. Extraction via
|
||||
// strawcore-core (Sulkta-OSS/strawcore) via the UniFFI wrapper; no
|
||||
// NewPipeExtractor in the runtime path.
|
||||
const val STRAW_VERSION_CODE = 83
|
||||
const val STRAW_VERSION_NAME = "0.1.0-CQ"
|
||||
const val STRAW_VERSION_CODE = 84
|
||||
const val STRAW_VERSION_NAME = "0.1.0-CR"
|
||||
const val STRAW_APPLICATION_ID = "com.sulkta.straw"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue