Skip to content

Conversation

@pkendall64
Copy link
Collaborator

This is an upgrade Web UI for 4.0.

This is a complete rewrite using Lit components for the UI which makes each page a nicely separated chunk, so theres no massive scan.js file like we use to have. So maintenance and new feature work should be easier to do.

There are a couple of minor fixes I need to do before removing "draft" status.

Theres a couple of open questions...

  1. Should we hide the Advanced section unless theres an ?advanced query parameter?
  2. What else would be nice to have on the main information screen for support?
  3. anything else that people can suggest
Screen.Recording.2025-10-31.at.12.11.20.PM.mp4

@pkendall64 pkendall64 added enhancement 🪄 New feature or request V4.0 🍔 labels Oct 31, 2025
@ot0tot
Copy link
Contributor

ot0tot commented Oct 31, 2025

Could the main information screen also indicate whether non-standard parameters have been changed? E.g. modified serial baud rate, airport serial device enabled, etc? And/or hide those options behind the Advanced flag? Currently, we have to ask for multiple screenshots from the WebUI to verify no other options have been changed.

@pkendall64
Copy link
Collaborator Author

Could the main information screen also indicate whether non-standard parameters have been changed? E.g. modified serial baud rate, airport serial device enabled, etc? And/or hide those options behind the Advanced flag? Currently, we have to ask for multiple screenshots from the WebUI to verify no other options have been changed.

Yes, good idea. This is exactly the stuff I'm after.

@pkendall64 pkendall64 force-pushed the upgraded-web-ui branch 8 times, most recently from 5b2b45d to a29f9e6 Compare November 1, 2025 00:57
@pkendall64
Copy link
Collaborator Author

Added a custom setting detected area in the main info screen to help with supporting users. Different things appear in the list if they are NOT set to their usual defaults, as these may be a cause for a user having difficulty.

Screenshot 2025-11-02 at 7 38 42 PM

@pkendall64 pkendall64 marked this pull request as ready for review November 2, 2025 06:40
Copy link
Contributor

@mha1 mha1 left a comment

Choose a reason for hiding this comment

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

Configurator PR build (BetaFPV SuperP RX) fails with missing file.

image

@CapnBry
Copy link
Member

CapnBry commented Nov 10, 2025

This looks so good! Really moved us from the tabs era to the sidebar era :-D

Serial tab: Selecting any item SUMD or below makes the list pop up too high so some options go below the header
image

In Firefox (linux) the hamburger menu is too high for some reason, but it is fine on mobile. Chrome on the right it looks ok. If I add the mui--align-middle class to the SVG, then firefox makes it come out too low for some reason. The A tag is centered in firefox but the svg just floats above it. I hate web ui :(
image

  • Page title is "ExpressLRS App". This is probably just a placeholder but I think we should avoid the use of the word "App" due to confusion. It would be great if this would include the type too, receiver vs transmitter
  • Options screen: "Permanently arm DJI air units" is only relevant if serial protocol selected is DisplayPort, and should be grouped with that. I realize internally this is an "option" but it belongs in a panel with the DisplayPort serial settings
  • The first time I went into the webui it showed "Custom Settings Detected" but with nothing in it, which confused me, but every time after that it was fine, despite me not flashing the RX again :/
  • I think starting the Information page is awesome but there's nothing to do on this page so I think it is more helpful to start on any other page so on mobile you don't have to load the page, click the menu, go to the binding screen
  • The socials section on the bottom of the page is huge and it really dominates the display on mobile. I think it should be smaller than the title, as this is the least important thing on the page
  • Options -> Model Match - I think I wrote the text here but it is a mess. Maybe instead? "Model Match is used to prevent accidentally selecting the wrong model in the handset and flying with an unexpected handset or ELRS configuration. When enabled, Model Match restricts this receiver to only connect fully with the specific Receiver ID below. Set the transmitter's Receiver ID in EdgeTX's model settings, and enable Model Match in the ExpressLRS lua." Also rename model ID to "Receiver ID" for the edit box, and can we get a validator on the field to make sure it is only between 0-63 inclusive?
  • Update screen: Don't we generate firmware.bin only now for everyone, even though it is compressed? The 8285 page requires me to upload a bin.gz extension. I feel like we gotta take the opportunity to change this clunky text here too, but I have no suggestion unless we decide to change it :-D
  • Connections screen: I made a bunch of changes, didn't save, but wanted to go check and see if the Serial screen updated to allow me to change serial2 without rebooting. However, because I didn't save, when I went back to the connections screen, I lost all my changes. I guess this is true of every screen. Do we have to lose the changes just because we switch between them? Or warn someone? I know this is a lot of work so I would say this is something that could be added later.

Functionality-wise though, everything I could think of to test worked apart from like one issue above. Incredible glow up!

@pkendall64
Copy link
Collaborator Author

I've made most of the changes suggested except the following ones and the Connection screen.
w.r.t the Information page, I wanted it to be the first page for user support, but maybe it would be better to go to the binding page and rename the "Information" page to a "support" page?

The socials section on the bottom of the page is huge and it really dominates the display on mobile. I think it should be smaller than the title, as this is the least important thing on the page

Can you show me? On all my devices and in the browser they are all good.

  • Update screen: Don't we generate firmware.bin only now for everyone, even though it is compressed? The 8285 page requires me to upload a bin.gz extension. I feel like we gotta take the opportunity to change this clunky text here too, but I have no suggestion unless we decide to change it :-D

Nope, it's been .bin.gz on the 8285 for a very long time. It actually accepts both, but the .bin always fails because it's too large. The JS code has not materially changed in this.
I'm open to suggestions for text as well 😄

@Johanl1964
Copy link

I use WebUI extremely much, and think it looks good (Chromium/Linux) Nice work! But a thought, we "nerds" usually have dual connections, both Wifi and LAN in our computers, so the dream would also be to connect/add "Web flasher" to WebUI, that would really be an optimal solution!?

@CapnBry
Copy link
Member

CapnBry commented Nov 11, 2025

Nope, it's been .bin.gz on the 8285 for a very long time. It actually accepts both, but the .bin always fails because it's too large. The JS code has not materially changed in this.

Yeah that's been my impression as well, but the build process builds a .bin file.
image

def compressFirmware(source, target, env):
    """ Compress ESP8266 firmware using gzip for 'compressed OTA upload' """
    if FIRMWARE_PACKING_ENABLED:
        build_dir = env.subst("$BUILD_DIR")
        image_name = env.subst("$PROGNAME")
        source_file = os.path.join(build_dir, image_name + ".bin")
        target_file = source_file + ".gz"
        binary_compress(target_file, source_file)
        os.remove(source_file)
        os.rename(target_file, source_file) # renames .bin.gz to .bin

Thus my confusion about the lack of a .bin.gz and wondering if we had changed this to always use a renamed .bin file to avoid confusion. Where does the .gz come from?

I say "dominates" regarding the socials, but that's hyperbole on my part. I mean they are far my prominent than I think they should be, being the thing here that is trying hardest to get your attention. Why so big? It should be tucked away like an unobtrusive footnote, not appearing like it's trying to be a GDPR consent banner. The text can squish up to the icon and then the whole bar be half that size.
image

@CapnBry
Copy link
Member

CapnBry commented Nov 12, 2025

Looks great! I just see one problem which is on Firefox mobile the socials size is too small. It is fine on Chrome and desktop Firefox (even in devtools as mobile).
Screenshot_20251111_224423_Firefox

Copy link
Member

@CapnBry CapnBry left a comment

Choose a reason for hiding this comment

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

Chef's kiss emoji

@pkendall64 pkendall64 force-pushed the upgraded-web-ui branch 3 times, most recently from 59e3ee9 to a390456 Compare November 14, 2025 22:50
@pkendall64 pkendall64 merged commit 0b75433 into ExpressLRS:master Nov 16, 2025
26 checks passed
@pkendall64 pkendall64 deleted the upgraded-web-ui branch November 16, 2025 00:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement 🪄 New feature or request V4.0 🍔

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants