Skip to content

Comments

Feature/new UI#826

Open
iminsandiego wants to merge 16 commits intoiBicha:mainfrom
iminsandiego:feature/New-UI
Open

Feature/new UI#826
iminsandiego wants to merge 16 commits intoiBicha:mainfrom
iminsandiego:feature/New-UI

Conversation

@iminsandiego
Copy link

Add redesigned dev player UI with playback controls and toggles

  • A rebuilt player with separate playback and feature control rows.
  • New controls: skip back/forward, quality selector, CC toggle, Stats for Nerds toggle, bookmark toggle, and PiP/minimize.
  • Updated player button components/styles and a new high-res player icon set.
  • Debounced skip seeking for rapid button presses (batched ±10s seeks).
  • Native trickplay integration with tuned intervals (10s scrub, 10/30/60 FF/RW) plus proper thumbnail/speed overlay handling.
  • Trickplay UI/focus guardrails to prevent hidden-focus bugs, duplicate title overlays, and premature UI hide while seeking.
  • In-player quality switching that reloads the stream while preserving playback position and paused/playing intent.
  • Stats for Nerds overlay component (state, time, resolution/fps, codecs, bitrate, container) with preference-backed enable/disable.
  • SponsorBlock integration in VideoPlayerDev: segment fetch, seekbar/chapter labeling, auto/manual skip flow, and skip event reporting.
  • Lounge state/now-playing message wiring and bookmark service actions from player controls.
  • Enhanced trickplay bar visuals with position/duration labels and anti-aliased handle assets.

- Added stats overlay UI to VideoPlayer showing playback information
- Displays state, container, quality, video/audio format, codecs
- Shows resolution, FPS, bitrate, position/duration, and source URL
- Added 'Stats for Nerds' toggle in Playback preferences
- Stats overlay only visible in fullscreen mode when enabled
- Added new buttons for quality selection, speed adjustment, closed captions, stats, bookmarks, and comments.
- Implemented view count display in the VideoPlayer UI.
- Introduced a new TrickPlayBar with position and duration labels.
- Included new icons for player controls and updated existing assets.
- Removed stats for nerds toggle from preferences and moved to player bar.
- Enhanced time formatting utility to handle integer conversion for video positions.

- Added TODO documentation for quality button bugs
- Separate playback controls (centered) from feature controls (right-aligned)
- Add active state to VideoPlayerButton with red accent color (#FF1C30)
- CC and Stats buttons now show red icon when enabled
- Remove baked-in circle backgrounds from SVGs for consistent highlighting
- Quality button now cycles through options (Auto/1080p/720p/etc) instead of opening popup dialog that caused focus issues
- Increased player icon resolution from 42x42 to 126x126 for sharper display
- Shortened PIP icon arrow for better visual balance
- Removed redundant minimize icon (pip icon is used)
- Removed unimplemented speed and comments buttons
- Added focus management: player bar now usable immediately on video start
- Reset hide timer when pressing any button to keep UI visible during interaction
- Updated navigation for simplified button layout
- Add SkipSeekTimer (500ms) to debounce skip button presses
- Accumulate skip amounts for rapid consecutive presses
- Show pending position on progress bar immediately
- Execute single seek after user stops pressing
- Fix navigation loop when Previous button is disabled
- Prevent progress timer from overwriting pending position display
- Move new UI components from VideoPlayerDev to VideoPlayer folder
- Merge new player UI features with existing production functionality
- Preserve Lounge, SponsorBlock, and error handling from original VideoPlayer
- Set USE_DEV_PLAYER = false to use the main VideoPlayer
- Remove VideoPlayerDev folder (VideoContentDevJob, VideoPlayerDev.bs/xml)

Components moved:
- VideoPlayerButton, VideoPlayerTextButton (custom button components)
- TrickPlayBar (progress bar with position/duration labels)
- PlayerUi (UI fade state management)
- PictureInPicture (minimize/maximize animations)

Bug fixes:
- Fix ternary operator usage for BrightScript compatibility
- Fix ambiguous comparison in SetupQualityButton
- Fix OnActiveChange to respect disabled state
…erStyle

- Restore VideoPlayerDev folder from upstream/main with new UI features
- Rename VideoPlayerDev components to avoid conflicts (TrickPlayBarDev,
  VideoPlayerButtonDev, VideoPlayerTextButtonDev)
- Add USE_DEV_PLAYER conditional flag to VideoQueue.bs for switching
  between VideoPlayer and VideoPlayerDev
- Re-integrate VideoPlayerStyle.bs into VideoPlayer to style stock Video
  node elements (trickPlayBar, bufferingBar, retrievingBar, BusySpinner)

- Fixed 1080 text in quality selector to display all 4 characters
…/3 speed arrows and D-pad scrubbing can display thumbnails.

Known issue: skip speed is currently 5/15/30, but upstream is 10/30/60
- Configure native trickplay: 10s D-pad scrub, 10/30/60s FF/RW speeds
- Prevent custom and native trickplay UI from hiding while actively seeking
- Make D-pad Left/Right context-aware: seek when UI is hidden, navigate
  player bar when UI is visible
- Always reset hide timer on trickplay key presses to fix bug where UI
  would hide during seeking when key pressed during FadingIn state
Hide custom TopUi when native trickplay UI is visible to prevent
duplicate title displays. The titleAndTime: false setting in showUI
does not work reliably on all devices/firmware versions.

Changes:
- Add m.topUi reference in PlayerUi.bs for both VideoPlayer and
  VideoPlayerDev
- Always hide custom TopUi in ShowNativeTrickplayUi() regardless of
  showUI support
- Restore custom TopUi visibility in HideNativeTrickplayUi()
-Add AA circle assets and update player UI to use them
-Round trickplay seek-handle position to avoid sub-pixel aliasing
-Regenerate image outputs/meta hashes via convert-images
- Revert VideoPlayerDev UI files to upstream versions to reduce
  maintenance burden from duplicated Dev-only components
- Remove VideoPlayerTextButton.bs/xml (Dev-only files)
- Add fullscreen guard in PlayerUi to prevent full-size overlay
  from appearing in PiP/minimized mode
- Set videoUi.visible=false when UI is hidden to prevent invisible
  buttons from capturing focus
- Document OK button behavior (shows UI rather than toggling playback)
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	playlet-lib/src/components/VideoPlayer/VideoPlayer.bs
- Update player controls and XML wiring for new dev component structure
- Refresh icon set (including new CC/stats states), regenerate png/meta outputs, and bump several icon sizes
- Tweak nav/profile visuals (icon blend behavior, updated default user avatar asset)
- Adjust resolution toggle behavior to restart video from current position
- Fix UI playerbar performance when stats for nerds is active
- Introduced a new function to manage focus on the play button when the UI is shown.
- Refactored focus handling in player control events to streamline focus restoration.
- Updated SVG icons for closed captions.
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