Skip to content

feat(web-ui): UI consistency / layout uplifts - #5225

Merged
ReenigneArcher merged 33 commits into
LizardByte:masterfrom
Noklef:ui-style-consistency
Jun 26, 2026
Merged

ReenigneArcher merged 33 commits into
LizardByte:masterfrom
Noklef:ui-style-consistency

Conversation

@Noklef

@Noklef Noklef commented May 31, 2026

Copy link
Copy Markdown
Contributor

Description

Originally this was just a branch to make styling work, but expanded out a bit 😅

General

  • Updated styling across the whole UI to use theme styling instead of bootstrap defaults
  • Moved sunshine.css out of public/assets/css to reliably override the bootstrap defaults for theming correctly

Themes

  • Created new themes drop-down selector, splitting out dark / light themes into 2 columns
  • Added new themes: Dracula, Alucard, Catppuccin Mocha / Latte, Ember Light, Rose Pine / Dawn
  • Updated Nord / Ember theme styling to conform to their online style guide
  • Added a Random theme button
  • Updated themes to use linear gradients across the navbar backgrounds for consistency
  • Added -color-on-XXXX to allow for changing text colour for buttons (contrast fixing)

Page updates

  • Apps: Added a background to the toolbar for the apps page
  • Featured Apps: Added the toolbar to the All / Clients / Tools buttons
  • Logout: Themed the logout page to match the the selected theme
  • Password: Added a description for the password page

Configuration Page

  • Redesigned the configuration page to convert the settings tabs from horizontally wrapping, to a vertical sidebar
  • Moved Save / apply into this vertical sidebar as well
  • Added a page description under the title (for consistency across the pages)

Screenshot

Themes

Dracula / Alucard themes - TwinLens
Catppuccin Mocha / Latte themes - TwinLens
Ember / Ember Light themes - TwinLens
Rose Pine / Rose Pine Dawn themes - TwinLens

image image

Apps page

image

Featured Apps page

image

Logout page

image

Configuration page

image image image

Issues Fixed or Closed

Roadmap Issues

Type of Change

  • feat: New feature (non-breaking change which adds functionality)
  • fix: Bug fix (non-breaking change which fixes an issue)
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semicolons, etc.)
  • refactor: Code change that neither fixes a bug nor adds a feature
  • perf: Code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files
  • revert: Reverts a previous commit
  • BREAKING CHANGE: Introduces a breaking change (can be combined with any type above)

Checklist

  • Code follows the style guidelines of this project
  • Code has been self-reviewed
  • Code has been commented, particularly in hard-to-understand areas
  • Code docstring/documentation-blocks for new or existing methods/components have been added or updated
  • Unit tests have been added or updated for any new or modified functionality

AI Usage

  • None: No AI tools were used in creating this PR
  • Light: AI provided minor assistance (formatting, simple suggestions)
  • Moderate: AI helped with code generation or debugging specific parts
  • Heavy: AI generated most or all of the code changes

@Noklef
Noklef marked this pull request as ready for review May 31, 2026 02:41
@Noklef

Noklef commented May 31, 2026

Copy link
Copy Markdown
Contributor Author

Don't think the security hotspot SonarQube issue is valid tbh, it's literally just flagging Math.random().
Makes sense if it's used for anything sensitive, but this is just for picking a random theme...

@ReenigneArcher ReenigneArcher left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't done a full review yet, but wanted to address your comment.

Comment thread src_assets/common/assets/web/theme.js Outdated
@codecov

codecov Bot commented Jun 2, 2026

Copy link
Copy Markdown

Bundle Report

Changes will decrease total bundle size by 1.53MB (-64.14%) ⬇️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
sunshine-esm 854.54kB 56.51kB (7.08%) ⬆️
rapideye-esm (removed) -788.77kB (-100.0%) ⬇️
Feilida-esm (removed) -795.99kB (-100.0%) ⬇️

Affected Assets, Files, and Routes:

view changes for bundle: sunshine-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/createLucideIcon-*.js 673 bytes 358.46kB 0.19%
assets/createLucideIcon-*.css 49.85kB 281.0kB 21.56% ⚠️
assets/config-*.js 198 bytes 69.68kB 0.28%
assets/index-*.js 28 bytes 45.94kB 0.06%
assets/featured-*.js 28 bytes 29.68kB 0.09%
assets/Navbar-*.js 3.57kB 23.18kB 18.19% ⚠️
assets/apps-*.js 28 bytes 13.42kB 0.21%
assets/troubleshooting-*.js 28 bytes 9.07kB 0.31%
assets/theme-*.js (New) 2.01kB 2.01kB 100.0% 🚀
assets/pin-*.js 28 bytes 1.73kB 1.64%
assets/password-*.js 28 bytes 780 bytes 3.72%
assets/logout-*.js 50 bytes 490 bytes 11.36% ⚠️

Files in assets/createLucideIcon-*.js:

  • ./src_assets/common/assets/web/public/assets/locale/en.json → Total Size: 40.85kB

  • ./src_assets/common/assets/web/init.js → Total Size: 209 bytes

  • ./src_assets/common/assets/web/sunshine.css → Total Size: 0 bytes

Files in assets/config-*.js:

  • ./src_assets/common/assets/web/config.html → Total Size: 0 bytes

Files in assets/featured-*.js:

  • ./src_assets/common/assets/web/featured.html → Total Size: 0 bytes

Files in assets/Navbar-*.js:

  • ./src_assets/common/assets/web/ThemeToggle.vue → Total Size: 11.34kB

Files in assets/apps-*.js:

  • ./src_assets/common/assets/web/apps.html → Total Size: 0 bytes

Files in assets/troubleshooting-*.js:

  • ./src_assets/common/assets/web/troubleshooting.html → Total Size: 0 bytes

Files in assets/theme-*.js:

  • ./src_assets/common/assets/web/theme.js → Total Size: 4.17kB

Files in assets/password-*.js:

  • ./src_assets/common/assets/web/password.html → Total Size: 0 bytes

Files in assets/logout-*.js:

  • ./src_assets/common/assets/web/logout.html → Total Size: 0 bytes

@codecov

codecov Bot commented Jun 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 27.52%. Comparing base (cc34eb1) to head (b705b7f).
✅ All tests successful. No failed tests found.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #5225      +/-   ##
==========================================
- Coverage   27.54%   27.52%   -0.02%     
==========================================
  Files         113      113              
  Lines       25596    25596              
  Branches    11239    11239              
==========================================
- Hits         7051     7046       -5     
- Misses      17403    17424      +21     
+ Partials     1142     1126      -16     
Flag Coverage Δ
Archlinux 11.49% <ø> (ø)
FreeBSD-amd64 13.30% <ø> (ø)
Homebrew-macos-14 21.02% <ø> (ø)
Homebrew-macos-15 21.18% <ø> (-0.01%) ⬇️
Homebrew-macos-26 21.30% <ø> (-0.02%) ⬇️
Homebrew-ubuntu-24.04 13.52% <ø> (ø)
Linux-AppImage 12.39% <ø> (ø)
Windows-AMD64 15.26% <ø> (ø)
Windows-ARM64 13.29% <ø> (-0.01%) ⬇️
macOS-arm64 19.25% <ø> (ø)
macOS-x86_64 18.72% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 28 files with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cc34eb1...b705b7f. Read the comment docs.

@Noklef
Noklef requested a review from ReenigneArcher June 8, 2026 01:16
@ReenigneArcher
ReenigneArcher force-pushed the ui-style-consistency branch 3 times, most recently from 9b27a71 to 7e25c42 Compare June 17, 2026 15:37

@ReenigneArcher ReenigneArcher left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Finally got around to testing this and it looks really good! I did notice some issues, not all from your changes though.

  1. Not sure exactly where in the css this is coming from, but the release notes sections for Moonlight, Slate, and Midnight themes is not looking very good. Maybe some additional color tweaking needed here.
  2. This is not be because of your changes, but if you open and close the theme drop down quickly (basically double clicking the "theme" text). It will end up highlighting the text. Can you throw a fix in for this?
  3. Can you add some padding below the settings boxes? If they are taller than the browser window it ends at the exact bottom of the page with no gap below. Might need this on other pages as well.
Image

@Noklef

Noklef commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

@ReenigneArcher Fixed up your points with some small tweaks:

  • Since Moonlight, Slate and Midnight all shared colour themes from tailwind, i opted to making them a little more unique.
    • Slate stayed the same, but Moonlight / Midnight have been updated
    • It only looked a little odd because we're not specifying markdown-specific colouring, so table th looks the same as the table th does throughout the solution

I also fixed up an issue i found with the Apps commands truncating the command icon / not showing.
image

Also, I've got an update to the App cards i was working on while doing this, which moves the command / info to appear when you hover over the App card, and tightens up the spacing around the edit / delete buttons:
image
Happy to include it as well if you'd like, or can create another PR with the update

@ReenigneArcher

Copy link
Copy Markdown
Member

Thanks! You can include the hover change here as well.

@Noklef
Noklef requested a review from ReenigneArcher June 20, 2026 05:11
Noklef added 16 commits June 26, 2026 15:56
… / loading

- Moved `sunshine.css` from `src_assets/common/assets/web/public/assets/css/sunshine.cs` to `src_assets/common/assets/web/sunshine.css`
- MOved link refeences for styles from `template_header` to `init.js`
- Fixed `.btn-info` / `.btn-outline-primary` to use theme styling
- Fixed `.btn-primary` being blue when clicking in (now themed)
- Updated the hover for dropdown items to actually style properly
- Updated `ThemeToggle.vue` to implement it as a 2-column wide dropdown (left dark, right light)
- Added translation for `theme_group_light` and `theme_group_dark`
- Dropdown arrow rotates now + button is highlighted when open
- Allowing for overrides when themes are not contrasting enough between bg and text
…oper palette from `ember`

- Moved some of the theme buttons to be in-line with eachother
- Apparently `color-mix` is widely available to use now, so used this instead of setting keyframes
Noklef and others added 17 commits June 26, 2026 15:56
- Felt odd not having any text on this page like the others...
…tead of headers

- Created column-based layout, including a split out for General / Encoder tabs
- Shortened in-line search to display count
- Prefer `.dataset` over `getAttribute(…)`
- `ENCODER_TAB_IDS` should be a `Set`, and use `ENCODER_TAB_IDS.has()` to check existence or non-existence.
Co-authored-by: David Lane <42013603+ReenigneArcher@users.noreply.github.com>
- Fixed missing `id` on the `container` div, to make the padding consistent across the pages
- Made the `--color-warning-light` styling unique across Moonlight, Slate, and Midnight
- Fixed clicking on the theme button highlighting the text
…lient (instead of just a tailwind clone of `Slate` and `Midnight`)
- Set the icon to not be truncated if the cmd is too long
- Truncates it now with `...` (still triple-clickable to select whole command)
- Added `:title` to allow for hovering over to show it as a browser tooltip
- Moved App Command + Working directory to a hover state infront of the App's Image
- Added badges onto the card to specify specific states of the app (running as elevated, including command prep / detached commands, etc.)
- Using `color-mixin` since we use other modern css functionality
- Opted to not colouring the command / working dir text for compatibility
@ReenigneArcher
ReenigneArcher merged commit 3266c34 into LizardByte:master Jun 26, 2026
71 checks passed
@sonarqubecloud

Copy link
Copy Markdown

vindeckyy pushed a commit to vindeckyy/Solar-Flare that referenced this pull request Jun 27, 2026
Co-authored-by: David Lane <42013603+ReenigneArcher@users.noreply.github.com>
(cherry picked from commit 3266c34)
@Noklef
Noklef deleted the ui-style-consistency branch June 30, 2026 02:19
@ReenigneArcher

Copy link
Copy Markdown
Member

@Noklef could you have a look at this issue? The Welcome screen seems to be missing a bunch of css.

image

@Noklef

Noklef commented Aug 1, 2026

Copy link
Copy Markdown
Contributor Author

@Noklef could you have a look at this issue? The Welcome screen seems to be missing a bunch of css.

Fixed up in this PR: #5466
Forgot about this window as my instance of Sunshine always had credentials

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.

2 participants