Core Shift shift-v2.3.3
Core Shift v2.3.3 — Hardening
versionName 2.3.3 · versionCode 9 · minSdk 26 · targetSdk 34
What changed
- Media3 preview — ExoPlayer + MediaSession + PlayerView replaces VideoView. TV transport controls, looping, lifecycle-gated playback.
- Download integrity — progress callback, StatFs free-space check (8 MB margin), ftyp magic-byte MP4 validation, atomic .part writes, MAX_VIDEO_BYTES (256 MB) / MIN_VIDEO_BYTES (20 KB) bounds, MediaStore IS_PENDING publish result validation with orphan cleanup.
- Focus preservation — hasActionableFocus() guard, bounded postDelayed retry (120 ms, max 10), refreshContent() only re-requests focus when none exists.
- Adapter quality sync — restored 4K preference now propagated to LiveAdapter on creation, preventing silent 1080p fallback on download.
- Lifecycle gating — PreviewActivity gates playWhenReady on resumed state, preventing playback starting while paused.
- SharedPreferences persistence — quality, speed, length UI state survives app restart.
- Accessibility — contentDescription on procedural stage views.
- Prequel tooling — sequential retrying uploader, shader updates, bundle/motion script cleanup.
Build
cd shift && ./gradlew :app:assembleDebug # JDK 17 + Android SDK
## What's Changed
* fix(shift): library visibility, D-pad navigation and download reachability by @brevityA in https://github.com/brevityA/CoreBuildsApps/pull/42
* feat(shift): v2.3.3 hardening — Media3, download integrity, focus by @brevityA in https://github.com/brevityA/CoreBuildsApps/pull/43
**Full Changelog**: https://github.com/brevityA/CoreBuildsApps/compare/shift-v2.3.1...shift-v2.3.3
## What's Changed
* fix(shift): library visibility, D-pad navigation and download reachability by @brevityA in https://github.com/brevityA/CoreBuildsApps/pull/42
* feat(shift): v2.3.3 hardening — Media3, download integrity, focus by @brevityA in https://github.com/brevityA/CoreBuildsApps/pull/43
**Full Changelog**: https://github.com/brevityA/CoreBuildsApps/compare/shift-v2.3.1...shift-v2.3.3