- gradle: enable jniLibs.useLegacyPackaging, release apk 43.3 -> 27 MiB, version 1.2.6/30 -> 1.2.7/31
- changelog: add the v1.2.7 section
- notify: set GH_REPO for the release fetch step, gh cannot resolve the repo without a checkout so
the notification used to degrade to a text-only message silently; print the gh error instead of
swallowing it
- release: pass GH_TOKEN to the notify workflow
- player: remove the per-key 500ms click throttle entirely, delete the dead
FastClickCheckUtil; play/pause now drives the kernel without any guard
- player: add zero-ripple press elasticity for all overlay icons (transport,
top bar, side rotate/lock) and a spring-driven seek thumb
- player: add enter/exit animations for bars, hints, side buttons and info OSD,
unified at 120ms; exit really leaves the composition tree
- player: fix the top bar stuck below the top edge by keeping the scrim out of
the content flow (Box instead of Column)
- player(osd): show audio decode kind and the real decoder name, read from
MediaCodecRenderer.getCodecInfo() with a MediaCodecList fallback
- player: unify the hard/soft decode rule into PlayerHelper.decodeKindOf
- records: reduce the gap between the segmented control and the first card
to 12dp (history + collect)
- chore: bump version to 1.2.3-alpha03 (versionCode 26) and add changelog entry
- docs: update the UI spec and the history archive
- replace the VmVar reflection bridge with direct forwarding, drop the epg/channel/settings/scroll counters
- hoist live page state into one StateFlow with per-cluster slices, screens take state plus grouped actions
- compute channel rows and the settings snapshot in the view model, composing reads no kv or config
- narrow the three live controllers to vm plus a small host, collect the state once in setContent
- sync the mobile ui spec (6.2, 4.5) and the feature history, add 38 unit tests, bump to 1.2.3-alpha02
- drop the manual changelog input from the release workflow
- extract the section matching the version from .github/workflows/changelog.md and use it as the release body
- refresh the home screenshots
The A-route playback stack (M7/D12) already replaced xyz.doikki.videoplayer
end to end, so the :player module is dead weight. Remove the module, its
gradle wiring and the dkplayer-ui catalog entry.
Two couplings the removal plan had not listed, both fixed here:
- the app pulled every media3 artifact in transitively through the :player
api(...) block; declare them directly in :app to keep the same runtime
classpath (a plain deletion would have broken compilation).
- WAKE_LOCK was declared only in the player manifest while
PlaybackService acquires a PARTIAL_WAKE_LOCK; move it into the app
manifest (a missing permission only fails at runtime, never at build).
The player jniLibs (libp2p/libxl_stat/libxl_thunder_sdk) move to
app/src/main/jniLibs so P2PClass keeps resolving its native library.
:app:assembleDebug green; :app:testDebugUnitTest 655 tests / 0 failures /
1 skipped, same as the M9 baseline; the debug APK has zero xyz/doikki
symbols across all 29 dex files.