Skip to content

Own player panel instead of miniplayer, smoother player and shorts - #49

Merged
Two-Play merged 1 commit into
developfrom
feature/own-miniplayer
Oct 25, 2026
Merged

Two-Play merged 1 commit into
developfrom
feature/own-miniplayer

Conversation

@Two-Play

Copy link
Copy Markdown
Owner

Summary

  • Own SlidingPanel (lib/features/player/sliding_panel.dart) replaces the unmaintained miniplayer package (last release 2021): tap/drag on the collapsed bar, dismiss by dragging it down, no own gestures while expanded (so PanelTapGuard is gone), back collapses the open player (AppShell's PopScope instead of the deprecated scoped will-pop callback), stays expanded when the window height changes, honors reduced motion.
  • Crash fix: the video controls' raw pointer handlers ignore events after the controls were removed mid-gesture (swipe down → "This widget has been unmounted").
  • Less jank expanding/collapsing: the details ("Up next") are built while the panel rests and kept while collapsed, laid out at their expanded height and reused during the transition.
  • Less jank in the shorts and the player: the seek bar repaints from a ValueNotifier instead of rebuilding on every mpv position update; hidden tabs and the tab behind the open player get TickerMode off; cheaper text shadows over the shorts.
  • Stash's placeholder images (default=true URLs) are no longer fetched (removes the Android "Failed to decode image" spam).
  • List previews play Stash's MP4 preview by default (hardware-decoded); the WebP previews (640×1136, 3–5 MB, decoded frame by frame) caused raster jank. Markers keep the WebP.

Tests

  • New: sliding_panel_test.dart (19 cases), back/ticker tests in shell_layout_test.dart, seek bar repaint test, controls-removed-mid-gesture test, placeholder URL tests, preview default test.
  • dart analyze clean, flutter test 837 passing. Checked on a Pixel 6 by hand (less jank; shorts only slightly better, likely the full-resolution source files).

🤖 Generated with Claude Code

- SlidingPanel replaces the unmaintained miniplayer package: tap and drag
  on the collapsed bar, no gestures of its own while expanded (no more
  PanelTapGuard), back collapses the player, stays expanded on rotation.
- Video controls ignore pointer events after they were removed mid-gesture.
- Player details are built while the panel rests, kept while collapsed,
  laid out at their expanded height and reused during the transition.
- Seek bar repaints from a ValueNotifier and rebuilds once a second.
- Hidden tabs and the tab behind the open player stop their tickers.
- Cheaper text shadows over the shorts.
- Stash's placeholder images (default=true) are not fetched.
- List previews play the MP4 preview by default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 3 duplication

Metric Results
Duplication 3

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@Two-Play
Two-Play merged commit a9ab365 into develop Oct 25, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant