Skip to content

Controller mode UX: library grouping, theme settings, brighter XMB - #382

Merged
Jayian1890 merged 16 commits into
devfrom
controller-ux-improvements
May 3, 2026
Merged

Controller mode UX: library grouping, theme settings, brighter XMB#382
Jayian1890 merged 16 commits into
devfrom
controller-ux-improvements

Conversation

@Jayian1890

Copy link
Copy Markdown
Collaborator

Summary

This pull request improves controller-mode navigation and personalization in opennow-stable.

Library (Games)

  • Uses a single primary Games column instead of many top-level genre tabs.
  • Adds nested subcategories under Games (All Games, Favorites, per-genre lists).
  • Favorites badge count matches titles that appear in the current library list (IDs without a matching game no longer inflate the count).
  • All Games sorts by most recently played using persisted playtime timestamps (never-played titles sort after played titles).

Theme (Settings → System → Theme)

  • Persists controllerThemeStyle and controllerThemeColor (Settings / main settings merge + normalization on load).
  • Color: RGB channels with controller-friendly edit mode (square/X to adjust, D-pad left/right, confirm).
  • Style: Five presets (Aurora, Nebula, Grid, Minimal, Pulse) applied via wrapper classes and CSS variables (--xmb-theme-r/g/b).
  • XMB background gradients and overlays were tuned so theme color reads more clearly (lighter base and weaker vignette).

Files touched

  • ControllerLibraryPage.tsx, styles.css, shared gfn.ts, main/settings.ts, App.tsx (pass-through of new settings).

Made with Cursor

Jayian1890 added 5 commits May 2, 2026 11:43
- Introduced new settings for controller theme style and color, allowing users to customize the background visuals in controller mode.
- Added functions to normalize and clamp theme color values.
- Updated the SettingsManager to handle migrations for the new theme settings.
- Enhanced the ControllerLibraryPage to utilize the new theme settings for improved visual consistency.
- Updated styles to reflect the new theme options, including multiple preset styles.

This enhancement improves user experience by providing more personalization options for the controller interface.
- Replaced hardcoded color values with theme-based RGB variables for better customization.
- Simplified CSS selectors by removing unnecessary classes and consolidating animations.
- Enhanced visual elements in the ControllerLibraryPage to align with the new theme settings.

These changes improve the maintainability of the styles and ensure a cohesive look across the application.
- Added new CSS styles for the PS5-themed games hub, including blurred hero art and a horizontal shelf layout.
- Enhanced animations for various components within the XMB wrapper to improve visual transitions.
- Introduced new class selectors for game items, categories, and menu tiles to align with the PS5 aesthetic.

These changes enhance the user interface and provide a more immersive experience for users navigating the game hub.
… and parallax effects

- Added new icons for category labels to improve visual representation.
- Implemented parallax backdrop tiles for a dynamic background experience.
- Enhanced navigation logic to support media browsing alongside games.
- Updated state management to handle media selection and transitions effectively.

These changes enrich the user interface and provide a more engaging experience while navigating the controller library.
…ality

- Introduced state management for PS5 row navigation, allowing transitions between top, main, and detail views.
- Added detail rail items for enhanced media and game interaction, improving user engagement.
- Updated navigation logic to support new detail rail interactions, including cycling through items and activating selections.
- Enhanced CSS styles for PS5 detail cards, improving visual presentation and responsiveness.

These changes provide a more dynamic and immersive experience for users navigating the controller library.
@Jayian1890

Copy link
Copy Markdown
Collaborator Author
Screenshot 2026-05-02 at 12 33 53 PM Screenshot 2026-05-02 at 12 34 23 PM

Jayian1890 added 11 commits May 2, 2026 13:01
- Enhanced PS5 row navigation logic to conditionally allow transitions between detail and top views based on active states.
- Updated CSS styles for improved visual presentation of detail rails and shelf components, including adjustments to opacity and layout.
- Improved responsiveness of shelf track elements to enhance user experience during navigation.

These changes contribute to a more intuitive and visually appealing interface for users interacting with the controller library.
- Modified CSS styles for the PS5 menu, enhancing the visual presentation with new background and overlay effects.
- Improved navigation logic in the ControllerLibraryPage to better handle transitions between top-level and settings submenus.
- Introduced new classes for resume tiles, providing a live snapshot feature for current streaming games.

These changes enhance the user experience by creating a more visually appealing and intuitive interface for navigating the controller library.
…Page

- Introduced library sorting options, allowing users to sort games by recent playtime, alphabetical order, or favorites.
- Updated navigation logic to manage state for spotlight and categories, improving user interaction with the game library.
- Enhanced audio feedback for navigation actions with adjusted sound profiles.
- Refined CSS styles for better visual presentation and responsiveness of the library interface.

These changes improve the overall user experience by providing more intuitive navigation and organization within the controller library.
- Added new properties for lazy-loading shelf art to enhance performance during image rendering.
- Implemented a function to compute shelf translation for centering active tiles, improving user experience in dual-shelf navigation.
- Updated CSS transitions to utilize a variable for consistent timing across components, ensuring a cohesive feel during interactions.

These changes enhance the navigation experience and visual consistency within the ControllerLibraryPage.
…n logic

- Added new CSS styles for the full-screen game hub, enhancing the visual layout and user interaction with game tiles and descriptions.
- Introduced state management for the game hub, allowing for focused navigation and improved user experience when browsing games.
- Updated the ControllerLibraryPage to integrate the game hub functionality, including handling transitions and focus states.

These changes provide a more immersive and visually appealing interface for users navigating the game library.
- Added new CSS styles for the game hub, improving layout and visual presentation of game posters and screenshots.
- Updated the ControllerGameHub component to utilize local screenshot URLs, enhancing the display of game visuals.
- Modified the ControllerLibraryPage to manage and load screenshots dynamically when the game hub is opened.

These changes provide a more engaging and visually appealing experience for users interacting with the game hub.
…style loading visuals

- Implemented a PS5-style resume tile in the ControllerLibraryPage, allowing users to continue cloud sessions seamlessly.
- Added new CSS styles for cloud session visuals, including a resume badge and loading animations.
- Updated the ControllerStreamLoading component to utilize PS5-themed loading indicators, improving the user experience during stream setup.
- Enhanced logging for session recovery and connection processes to aid in debugging and user feedback.

These changes provide a more engaging and visually appealing experience for users resuming cloud sessions and enhance the overall loading experience.
- Introduced a mechanism to deduplicate concurrent claim/resume calls for the same Cloud session, enhancing performance and user experience.
- Added a reference to manage in-flight claim promises, ensuring that multiple requests for the same session are handled efficiently.
- Updated the claimAndConnectSession function to utilize the new deduplication logic, improving error handling and session management.

These changes streamline the session resume process, reducing unnecessary network calls and improving overall responsiveness during session claims.
- Integrated new in-stream menu features, allowing users to toggle microphone and adjust stream volume directly from the overlay.
- Updated the ControllerGameHub and ControllerLibraryPage components to support in-stream navigation and actions, improving user interaction during streaming sessions.
- Added CSS styles for the in-stream overlay, ensuring a visually appealing and functional interface that maintains readability of the underlying game.
- Implemented state management for restoring navigation in the in-stream menu, enhancing user experience by preserving context during gameplay.

These changes provide a more seamless and engaging experience for users interacting with the in-stream features of the application.
…lean up CSS

- Eliminated the handleApplyStreamPreset and handleCycleAspectRatio functions from the App component, streamlining the codebase.
- Removed the associated stream preset props from the ControllerLibraryPage component, enhancing clarity and reducing complexity.
- Cleaned up CSS by removing the .cis-elapsed class, which was no longer in use, contributing to a more maintainable style sheet.

These changes improve code readability and maintainability by removing obsolete features and associated styles.
…and associated styles

- Eliminated the formatRemainingPlaytimeFromSubscription function from the App component, simplifying the codebase.
- Removed the remainingPlaytimeText prop from the ControllerInStreamShell component, enhancing clarity and reducing complexity.
- Cleaned up CSS by deleting the .cis-remaining class, which was no longer in use, contributing to a more maintainable style sheet.

These changes improve code readability and maintainability by removing obsolete features and associated styles.
@Jayian1890
Jayian1890 merged commit 5ce9fc9 into dev May 3, 2026
9 checks passed
@zortos293
zortos293 deleted the controller-ux-improvements branch May 5, 2026 11:21
Jayian1890 added a commit that referenced this pull request May 16, 2026
)

* feat(settings): add controller theme customization options

- Introduced new settings for controller theme style and color, allowing users to customize the background visuals in controller mode.
- Added functions to normalize and clamp theme color values.
- Updated the SettingsManager to handle migrations for the new theme settings.
- Enhanced the ControllerLibraryPage to utilize the new theme settings for improved visual consistency.
- Updated styles to reflect the new theme options, including multiple preset styles.

This enhancement improves user experience by providing more personalization options for the controller interface.

* refactor(styles): update theme colors in CSS for improved consistency

- Replaced hardcoded color values with theme-based RGB variables for better customization.
- Simplified CSS selectors by removing unnecessary classes and consolidating animations.
- Enhanced visual elements in the ControllerLibraryPage to align with the new theme settings.

These changes improve the maintainability of the styles and ensure a cohesive look across the application.

* feat(styles): implement PS5-style layout and animations for game hub

- Added new CSS styles for the PS5-themed games hub, including blurred hero art and a horizontal shelf layout.
- Enhanced animations for various components within the XMB wrapper to improve visual transitions.
- Introduced new class selectors for game items, categories, and menu tiles to align with the PS5 aesthetic.

These changes enhance the user interface and provide a more immersive experience for users navigating the game hub.

* feat(controller): enhance ControllerLibraryPage with media navigation and parallax effects

- Added new icons for category labels to improve visual representation.
- Implemented parallax backdrop tiles for a dynamic background experience.
- Enhanced navigation logic to support media browsing alongside games.
- Updated state management to handle media selection and transitions effectively.

These changes enrich the user interface and provide a more engaging experience while navigating the controller library.

* feat(controller): enhance PS5 row navigation and detail rail functionality

- Introduced state management for PS5 row navigation, allowing transitions between top, main, and detail views.
- Added detail rail items for enhanced media and game interaction, improving user engagement.
- Updated navigation logic to support new detail rail interactions, including cycling through items and activating selections.
- Enhanced CSS styles for PS5 detail cards, improving visual presentation and responsiveness.

These changes provide a more dynamic and immersive experience for users navigating the controller library.

* feat(controller): refine PS5 row navigation and CSS styles

- Enhanced PS5 row navigation logic to conditionally allow transitions between detail and top views based on active states.
- Updated CSS styles for improved visual presentation of detail rails and shelf components, including adjustments to opacity and layout.
- Improved responsiveness of shelf track elements to enhance user experience during navigation.

These changes contribute to a more intuitive and visually appealing interface for users interacting with the controller library.

* feat(controller): update PS5 menu styles and navigation logic

- Modified CSS styles for the PS5 menu, enhancing the visual presentation with new background and overlay effects.
- Improved navigation logic in the ControllerLibraryPage to better handle transitions between top-level and settings submenus.
- Introduced new classes for resume tiles, providing a live snapshot feature for current streaming games.

These changes enhance the user experience by creating a more visually appealing and intuitive interface for navigating the controller library.

* feat(controller): enhance navigation and sorting in ControllerLibraryPage

- Introduced library sorting options, allowing users to sort games by recent playtime, alphabetical order, or favorites.
- Updated navigation logic to manage state for spotlight and categories, improving user interaction with the game library.
- Enhanced audio feedback for navigation actions with adjusted sound profiles.
- Refined CSS styles for better visual presentation and responsiveness of the library interface.

These changes improve the overall user experience by providing more intuitive navigation and organization within the controller library.

* feat(controller): improve shelf navigation and CSS transitions

- Added new properties for lazy-loading shelf art to enhance performance during image rendering.
- Implemented a function to compute shelf translation for centering active tiles, improving user experience in dual-shelf navigation.
- Updated CSS transitions to utilize a variable for consistent timing across components, ensuring a cohesive feel during interactions.

These changes enhance the navigation experience and visual consistency within the ControllerLibraryPage.

* feat(controller): implement full-screen game hub styles and navigation logic

- Added new CSS styles for the full-screen game hub, enhancing the visual layout and user interaction with game tiles and descriptions.
- Introduced state management for the game hub, allowing for focused navigation and improved user experience when browsing games.
- Updated the ControllerLibraryPage to integrate the game hub functionality, including handling transitions and focus states.

These changes provide a more immersive and visually appealing interface for users navigating the game library.

* feat(controller): enhance game hub visuals and screenshot handling

- Added new CSS styles for the game hub, improving layout and visual presentation of game posters and screenshots.
- Updated the ControllerGameHub component to utilize local screenshot URLs, enhancing the display of game visuals.
- Modified the ControllerLibraryPage to manage and load screenshots dynamically when the game hub is opened.

These changes provide a more engaging and visually appealing experience for users interacting with the game hub.

* feat(controller): enhance cloud session resume functionality and PS5-style loading visuals

- Implemented a PS5-style resume tile in the ControllerLibraryPage, allowing users to continue cloud sessions seamlessly.
- Added new CSS styles for cloud session visuals, including a resume badge and loading animations.
- Updated the ControllerStreamLoading component to utilize PS5-themed loading indicators, improving the user experience during stream setup.
- Enhanced logging for session recovery and connection processes to aid in debugging and user feedback.

These changes provide a more engaging and visually appealing experience for users resuming cloud sessions and enhance the overall loading experience.

* feat(controller): improve session claim handling and deduplication

- Introduced a mechanism to deduplicate concurrent claim/resume calls for the same Cloud session, enhancing performance and user experience.
- Added a reference to manage in-flight claim promises, ensuring that multiple requests for the same session are handled efficiently.
- Updated the claimAndConnectSession function to utilize the new deduplication logic, improving error handling and session management.

These changes streamline the session resume process, reducing unnecessary network calls and improving overall responsiveness during session claims.

* feat(controller): enhance in-stream menu functionality and visuals

- Integrated new in-stream menu features, allowing users to toggle microphone and adjust stream volume directly from the overlay.
- Updated the ControllerGameHub and ControllerLibraryPage components to support in-stream navigation and actions, improving user interaction during streaming sessions.
- Added CSS styles for the in-stream overlay, ensuring a visually appealing and functional interface that maintains readability of the underlying game.
- Implemented state management for restoring navigation in the in-stream menu, enhancing user experience by preserving context during gameplay.

These changes provide a more seamless and engaging experience for users interacting with the in-stream features of the application.

* refactor(controller): remove unused stream preset functionality and clean up CSS

- Eliminated the handleApplyStreamPreset and handleCycleAspectRatio functions from the App component, streamlining the codebase.
- Removed the associated stream preset props from the ControllerLibraryPage component, enhancing clarity and reducing complexity.
- Cleaned up CSS by removing the .cis-elapsed class, which was no longer in use, contributing to a more maintainable style sheet.

These changes improve code readability and maintainability by removing obsolete features and associated styles.

* refactor(controller): remove unused remaining playtime functionality and associated styles

- Eliminated the formatRemainingPlaytimeFromSubscription function from the App component, simplifying the codebase.
- Removed the remainingPlaytimeText prop from the ControllerInStreamShell component, enhancing clarity and reducing complexity.
- Cleaned up CSS by deleting the .cis-remaining class, which was no longer in use, contributing to a more maintainable style sheet.

These changes improve code readability and maintainability by removing obsolete features and associated styles.
Chizuui pushed a commit to Chizuui/OpenNOW-Modified that referenced this pull request Aug 11, 2026
…penCloudGaming#382)

* feat(settings): add controller theme customization options

- Introduced new settings for controller theme style and color, allowing users to customize the background visuals in controller mode.
- Added functions to normalize and clamp theme color values.
- Updated the SettingsManager to handle migrations for the new theme settings.
- Enhanced the ControllerLibraryPage to utilize the new theme settings for improved visual consistency.
- Updated styles to reflect the new theme options, including multiple preset styles.

This enhancement improves user experience by providing more personalization options for the controller interface.

* refactor(styles): update theme colors in CSS for improved consistency

- Replaced hardcoded color values with theme-based RGB variables for better customization.
- Simplified CSS selectors by removing unnecessary classes and consolidating animations.
- Enhanced visual elements in the ControllerLibraryPage to align with the new theme settings.

These changes improve the maintainability of the styles and ensure a cohesive look across the application.

* feat(styles): implement PS5-style layout and animations for game hub

- Added new CSS styles for the PS5-themed games hub, including blurred hero art and a horizontal shelf layout.
- Enhanced animations for various components within the XMB wrapper to improve visual transitions.
- Introduced new class selectors for game items, categories, and menu tiles to align with the PS5 aesthetic.

These changes enhance the user interface and provide a more immersive experience for users navigating the game hub.

* feat(controller): enhance ControllerLibraryPage with media navigation and parallax effects

- Added new icons for category labels to improve visual representation.
- Implemented parallax backdrop tiles for a dynamic background experience.
- Enhanced navigation logic to support media browsing alongside games.
- Updated state management to handle media selection and transitions effectively.

These changes enrich the user interface and provide a more engaging experience while navigating the controller library.

* feat(controller): enhance PS5 row navigation and detail rail functionality

- Introduced state management for PS5 row navigation, allowing transitions between top, main, and detail views.
- Added detail rail items for enhanced media and game interaction, improving user engagement.
- Updated navigation logic to support new detail rail interactions, including cycling through items and activating selections.
- Enhanced CSS styles for PS5 detail cards, improving visual presentation and responsiveness.

These changes provide a more dynamic and immersive experience for users navigating the controller library.

* feat(controller): refine PS5 row navigation and CSS styles

- Enhanced PS5 row navigation logic to conditionally allow transitions between detail and top views based on active states.
- Updated CSS styles for improved visual presentation of detail rails and shelf components, including adjustments to opacity and layout.
- Improved responsiveness of shelf track elements to enhance user experience during navigation.

These changes contribute to a more intuitive and visually appealing interface for users interacting with the controller library.

* feat(controller): update PS5 menu styles and navigation logic

- Modified CSS styles for the PS5 menu, enhancing the visual presentation with new background and overlay effects.
- Improved navigation logic in the ControllerLibraryPage to better handle transitions between top-level and settings submenus.
- Introduced new classes for resume tiles, providing a live snapshot feature for current streaming games.

These changes enhance the user experience by creating a more visually appealing and intuitive interface for navigating the controller library.

* feat(controller): enhance navigation and sorting in ControllerLibraryPage

- Introduced library sorting options, allowing users to sort games by recent playtime, alphabetical order, or favorites.
- Updated navigation logic to manage state for spotlight and categories, improving user interaction with the game library.
- Enhanced audio feedback for navigation actions with adjusted sound profiles.
- Refined CSS styles for better visual presentation and responsiveness of the library interface.

These changes improve the overall user experience by providing more intuitive navigation and organization within the controller library.

* feat(controller): improve shelf navigation and CSS transitions

- Added new properties for lazy-loading shelf art to enhance performance during image rendering.
- Implemented a function to compute shelf translation for centering active tiles, improving user experience in dual-shelf navigation.
- Updated CSS transitions to utilize a variable for consistent timing across components, ensuring a cohesive feel during interactions.

These changes enhance the navigation experience and visual consistency within the ControllerLibraryPage.

* feat(controller): implement full-screen game hub styles and navigation logic

- Added new CSS styles for the full-screen game hub, enhancing the visual layout and user interaction with game tiles and descriptions.
- Introduced state management for the game hub, allowing for focused navigation and improved user experience when browsing games.
- Updated the ControllerLibraryPage to integrate the game hub functionality, including handling transitions and focus states.

These changes provide a more immersive and visually appealing interface for users navigating the game library.

* feat(controller): enhance game hub visuals and screenshot handling

- Added new CSS styles for the game hub, improving layout and visual presentation of game posters and screenshots.
- Updated the ControllerGameHub component to utilize local screenshot URLs, enhancing the display of game visuals.
- Modified the ControllerLibraryPage to manage and load screenshots dynamically when the game hub is opened.

These changes provide a more engaging and visually appealing experience for users interacting with the game hub.

* feat(controller): enhance cloud session resume functionality and PS5-style loading visuals

- Implemented a PS5-style resume tile in the ControllerLibraryPage, allowing users to continue cloud sessions seamlessly.
- Added new CSS styles for cloud session visuals, including a resume badge and loading animations.
- Updated the ControllerStreamLoading component to utilize PS5-themed loading indicators, improving the user experience during stream setup.
- Enhanced logging for session recovery and connection processes to aid in debugging and user feedback.

These changes provide a more engaging and visually appealing experience for users resuming cloud sessions and enhance the overall loading experience.

* feat(controller): improve session claim handling and deduplication

- Introduced a mechanism to deduplicate concurrent claim/resume calls for the same Cloud session, enhancing performance and user experience.
- Added a reference to manage in-flight claim promises, ensuring that multiple requests for the same session are handled efficiently.
- Updated the claimAndConnectSession function to utilize the new deduplication logic, improving error handling and session management.

These changes streamline the session resume process, reducing unnecessary network calls and improving overall responsiveness during session claims.

* feat(controller): enhance in-stream menu functionality and visuals

- Integrated new in-stream menu features, allowing users to toggle microphone and adjust stream volume directly from the overlay.
- Updated the ControllerGameHub and ControllerLibraryPage components to support in-stream navigation and actions, improving user interaction during streaming sessions.
- Added CSS styles for the in-stream overlay, ensuring a visually appealing and functional interface that maintains readability of the underlying game.
- Implemented state management for restoring navigation in the in-stream menu, enhancing user experience by preserving context during gameplay.

These changes provide a more seamless and engaging experience for users interacting with the in-stream features of the application.

* refactor(controller): remove unused stream preset functionality and clean up CSS

- Eliminated the handleApplyStreamPreset and handleCycleAspectRatio functions from the App component, streamlining the codebase.
- Removed the associated stream preset props from the ControllerLibraryPage component, enhancing clarity and reducing complexity.
- Cleaned up CSS by removing the .cis-elapsed class, which was no longer in use, contributing to a more maintainable style sheet.

These changes improve code readability and maintainability by removing obsolete features and associated styles.

* refactor(controller): remove unused remaining playtime functionality and associated styles

- Eliminated the formatRemainingPlaytimeFromSubscription function from the App component, simplifying the codebase.
- Removed the remainingPlaytimeText prop from the ControllerInStreamShell component, enhancing clarity and reducing complexity.
- Cleaned up CSS by deleting the .cis-remaining class, which was no longer in use, contributing to a more maintainable style sheet.

These changes improve code readability and maintainability by removing obsolete features and associated styles.
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