Skip to content

Conversation

Nerivec
Copy link
Owner

@Nerivec Nerivec commented Aug 17, 2025

  • feat: merge multiple API instances into a single interface
    • use tab design wherever merged does not make sense: Network, Logs, Settings
    • quick identification with a set of dots colored based on the API URL index (static). (Note: the dot also changes in case the underlaying WebSocket has a problem. )
    • Note: this remains mostly hidden in case of single-API use
  • feat: [perf] batch log and device state updates using requestAnimationFrame
  • feat: use notifications drawer instead of toasts for log-derived notifications
    • allows quick checking while remaining problems-free for screen space (especially with new multi-instance)
    • a dot will appear next to the notification icon if an error-level notification was received, as well as if an instance requires restarting (e.g. to apply settings)
  • fix: use toasts only for success/error feedback in user-driven requests (bridge/request, /get & /set)
    • /get & /set errors are parsed to only show the actual error in the toast (full message available in notifications drawer & Logs page)
  • fix: remove log lines in Dev Console in favor of new notifications drawer
  • fix: "removed" navigation dead-end issues due to multi-instances switching with new merged design
  • fix: move Frontend local storage settings into its own page
  • fix: OTA table not using correct data when selecting all after filtering
  • fix: input validation for scene, group
  • fix: add log message on WebSocket error
  • fix: improve handling of bad URLs (redirect as appropriate if missing segments or unknown device/group)
  • feat: add Docker edge version based on last main branch commit.

Important

BREAKING:

  • using multiple API instances in standalone will now be using the merged interface, no longer need switching
  • some URL path changes to accommodate new merged multi-instances support
    • e.g. #/device/0xbc33acfffe17628b is now #/device/0/0xbc33acfffe17628b with the extra path used for API source indexing (as [0-9]+, always 0 in single-API use)
  • toasts no longer used for same purpose (see above)

Pinging some multi-instances users if I can get some in-depth testing on this and feedback on the design 😉
@thk-socal @ams2990 @KoalaWerewolf @thargy

What to lookout for when testing this?

  • any improvements you can fathom on the newly introduced logic or design
  • parts of the UI not updating properly when something should change
  • performance issues (especially with larger multi-instances) => make sure to identify if this affects a specific page, or several

@thargy
Copy link

thargy commented Aug 17, 2025

Is this coming to windfront-edge for testing? It looks like a dream come true!

@Nerivec
Copy link
Owner Author

Nerivec commented Aug 17, 2025

As soon as it is merged yes. I'll add some details in the first post for testers to focus on (at least in the beginning).

@Nerivec Nerivec marked this pull request as ready for review August 17, 2025 21:46
@Nerivec Nerivec merged commit 837fb92 into main Aug 17, 2025
4 checks passed
@KoalaWerewolf
Copy link

I like it. Installed the 2.0.0 Edge Add-on. The first thing I've noticed that I have a suggestion for is the Permit Join selection. For ease of use I think it would make sense to have the "All" option for the different controllers at the top. 99% of my Permit Join is to open the entire network, for the second controller I'll have to scroll through a very long list of devices before I get to the "All" for that controller.

I'd also prefer if the default sort/grouping of the device list was based on name of the device. Right now the list is grouped by controller. To me the real benefit of merging the lists is to be able to see them fully merged. If I need to scroll down to see the devices of the second controller then I can just as easily switch controller. During the short period I've used the new interface my first action is to click the Friendly Name to get all devices sorted by name and not grouped by controller.

@KoalaWerewolf
Copy link

In the Logs tab there is something going on with placement of a couple of selections and buttons. I don't think this is the intended layout:
Screenshot 2025-08-18 at 11 34 32

@Nerivec Nerivec deleted the v2-alpha branch August 18, 2025 10:54
@Nerivec
Copy link
Owner Author

Nerivec commented Aug 18, 2025

@KoalaWerewolf all should be fixed in the latest edge.
Funny enough, there never was any default sorting before, it just used the order as sent by Z2M. I guess with the multi, now it shows. 😁

@KoalaWerewolf
Copy link

My feeling is that the old UI had some sort of default sorting from the config file, last device at the bottom. Windfront seem to have sorted on name by default. I think that now that you added the Source column as the first column it defaulted to a sort on that. The first controller in my Windfront config was on top. I like the new behaviour, and the Permit Join was included in that as well.

@Nerivec
Copy link
Owner Author

Nerivec commented Aug 18, 2025

With the addition of multi, it added rows for each source in succession, which resulted in a seemingly "per source" sorting.
Makes more sense to enforce friendly name sorting in tables by default anyway. And it also show that tables can be sorted (shows the icon by default). Should solve the issue that several users appear to have missed the fact it is "sortable".

@ams2990
Copy link

ams2990 commented Aug 19, 2025

Testing on mobile right now. I think it's really great. It gets back the single view that I lost when splitting my network. Thanks! Some area for improvement:

  • The colored circles on the devices page was initially a little confusing, since there was no legend. I figured it out, but maybe something to work on.
  • Performance is not great. There's a 2-3s delay between when I click Dashboard and when it loads. Devices and Groups are in the 1-2s range. Logs and Settings is instantaneous.
  • Switching between Logs tabs changes which instance's logs appear at the bottom as the newest logs, but does not clear already-loaded logs, producing a mishmash of logs from different sources.
  • Switching between instances in the Settings page does not remember which Settings tab was active.
  • I think the Settings pages could be improved by inverting the layering, and have instance tabs be underneath Settings pages.
    • Not every page needs per-instance tabs. For instance, Donate.
    • The device list in Health could be merged, with only per-instance stats.
    • I think other pages could be similarly improved with more invasive changes to fully leverage merged multi-instance.

@thargy
Copy link

thargy commented Aug 19, 2025

Edge AddOn Auto-Update doesn't work, indeed I couldn't get HA to detect an update, instead I had to uninstall and reinstall AddOn.

Love the combined interface! Literally a dream come true! Even if you change nothing, I'd still be happy, but here's my constructive feedback...

API names are much less discoverable. It would be great to add tooltips for desktop use (e.g., on the connection column, allow-join drop-down). Took me a while to figure out what the new notification menu was, and it's the only way to find which colour is for which connection. Can I suggest you add a multi-select dropdown in the connection column header that allows you to filter by collection and simultaneously see which colour is which API (similar to the search boxes in the other headers)? Similarly, perhaps add the API to the details 'About' tab.

In the 'Allow Join' dropdown having a bunch of 'All's at the top is less useful than perhaps 'All Local', 'All Upstairs', 'All Downstairs', 'All Extension', etc. which would again increase visibility of colour<->API correspondence.

The clear filter icon against the column searches isn't immediately obvious. Can I suggest you replace it with a classic 'x' and either disable/hide it when the filter is empty?

It would be useful to have filters for the other columns too. This can be done creatively. For example, multi-selects for connection, LQI (Red <= 74?, 74 < Yellow <= 126, White > 126), Last Seen (Just now, < 1 min, 1 - 10 min, 10min-1hr, 1hr-1day, > 1 day), Availability (Online, Offline, Disabled). If you can find a useful multiselect control it would also make the lining up more visually pleasing.

And it's never gonna happen, but I can't resist asking for my number one remaining feature request, and that's groups of groups (hierarchy) - but that requires Z2m support, and needs it to maintain zigbee groups automatically (i.e. expanding out a child group). With the new merged UI, it would be awesome if it could also handle cross API grouping. I currently have 64 groups across the APIs, like All Downstairs, All Upstairs, etc. which are then grouped in HA to 'All'. But each of those groups has to manually group, the child groups.

@Nerivec
Copy link
Owner Author

Nerivec commented Aug 19, 2025

@ams2990

  1. There is a title but it's a bit harder to see on mobile as always. I've changed the logic to always show names by default (can be disabled in the frontend settings page -display icon-)
  2. I've added some perf improvements in latest edge, let me know if you still see issues (and if so, exactly where & how)
  3. I'm not sure what you meant there?
  4. Fixed
  5. Merging devices health is not really desired, since this kind of data is very specific to a network, and would likely cause more confusion. If you have ideas on how to better merge other pages, feel free to open up a discussion. Note: we should keep in mind non multi-instance users.

@thargy
The edge add-on behaves like Z2M's, so you indeed have to uninstall/reinstall to update it. Otherwise, you'd get a notification every time a commit is pushed to the repo, which would be... unmanageable 😁

See 1. above for the source names.
Fixed the filter stuff.
About the "improved" table filtering, I have to take a closer look at what's doable with the table library current in use.

I've pushed several fixes that should now be available in latest edge. Let me know how that goes. 😉

@KoalaWerewolf
Copy link

Tried the latest edge release. The device page is ”jerky” and reloads when scrolling. It is difficult to manage to scroll to the bottom of the page. Let me know if you need any diagnostics from me. This is when testing on a mobile device, iPhone.

@ams2990
Copy link

ams2990 commented Aug 19, 2025

There is a title but it's a bit harder to see on mobile as always. I've changed the logic to always show names by default (can be disabled in the frontend settings page -display icon-)

I'm not observing the icon change you mention, or the new option in settings.

I've added some perf improvements in latest edge, let me know if you still see issues (and if so, exactly where & how)

I'm also observing the jank that @KoalaWerewolf is reporting on the new version. Looks like devices are being lazily loaded, but not fast enough. That said, tab switching speed is much improved. Opening Devices and Groups is ~500ms, but Dashboard is still more like 2s.

I'm not sure what you meant there?

Here's what I've observing with the logs:
image
I started with logs from A and switched to logs from B, but observe I have logs from both zigbee2mqtt-a and zigbee2mqtt-b on screen.

Fixed

Confirmed.

@Nerivec
Copy link
Owner Author

Nerivec commented Aug 19, 2025

@KoalaWerewolf
Tables and the Dashboard page are now lazy-loaded to allow for better performance (multi-instance can easily reach 300+ devices now, so, we had to do something to prevent rendering a boatload of items at once that created far too long page load times).
This does change the scrolling behavior from before a bit, as items are added when the page's bottom is near-reached.

Can you elaborate on what you mean by "difficult", is it the behavior change that caught you off-guard, or do you see actual problems with the scrolling (not loading properly, etc.)?

@Nerivec
Copy link
Owner Author

Nerivec commented Aug 19, 2025

@ams2990

I'm not observing the icon change you mention, or the new option in settings.

That's in the frontend-specific settings (the display icon next to Settings in the navbar). There's a new "Multi-Instance" at the bottom.
It should show the names next to the colored dots by default, which can be changed there (note: some places have overrides to make more sense).

@ams2990
Copy link

ams2990 commented Aug 19, 2025

That's in the frontend-specific settings (the display icon next to Settings in the navbar). There's a new "Multi-Instance" at the bottom.

Ah hah, I see it now, yes. I was looking in Settings > Settings > Frontend, not the other frontend setings 🙂

It should show the names next to the colored dots by default, which can be changed there (note: some places have overrides to make more sense).

I see that now, but that's not what I was actually reporting originally. In the devices page on my phone, every device has an unlabeled colored dot next to it, indicating what instance it belongs to. On desktop, it's labelled, but not on mobile. When I first opened Windfront Edge, I had no idea what the colors meant. Even now, though, the colored dots on the Devices page don't really help my understanding on mobile because I have no idea which instance corresponds to which color. I can of course go look that up by looking on another page, opening the "permit join" drop-down, etc, but that's not a great UX. I'm extremely unlikely to remember than my A instance is yellow and my C instance is blue.

@KoalaWerewolf
Copy link

Can you elaborate on what you mean by "difficult", is it the behavior change that caught you off-guard, or do you see actual problems with the scrolling (not loading properly, etc.)?

The loading of devices seems to trigger a reload of the page and the scrolling starts from the beginning again.

I recorded the behavior but I haven’t got the file below 10MB yet.

@thargy
Copy link

thargy commented Aug 20, 2025

Works great

Show source name is great!
'x' for clear filter (with disable) is way clearer.

I've split my feedback into numbered subheadings to make it easier for you to reference.

Issues

1 - Lazy load

I am on the latest release. I have 264 devices testing on desktop. The devices load, but it begins flickering between page loaded (scrollbar) to just 16 devices and back again repeatedly for a few seconds (~10s, but sometimes much shorter/longer) before settling on only showing the first 16 devices. On refresh, it sometimes only shows 16 devices, no scrolling.

If I try to scroll on each flicker (approx. every 300ms, but random), it jumps back to the start.

On mobile (HA app), the flickering starts when I scroll to the end of the first page.

As such the Devices page is unusable.

I haven't noticed a similar issue on groups, which seems to lazy load correctly (more testing needed).

I have noticed that only the first 16 items load on OTA (without flickering).

In each case, changing the sort changed the 16 items shown as expected.

2 - Logs

Logs, I am also seeing weird and inconsistent behaviour when switching between tabs. When I have a tab with relatively high churn, switching to another doesn't clear the logs from the previous tab.

Suggestions

3 - Commit

There's no prominent place to discover which commit the edge version is we're using, I'd suggest adding a commit link under the frontend version in Settings->About, as exists for Z2m version (though tbf that usually says 'unknown' too!). That would help us submit a review more effectively, especially during rapid development.

4 - Numbering/Count

With the loss of the numbering column and the inability to filter based on API, there is no longer an easy way to see the device count per coordinator, from the devices tab.

Pairing has been flaky in the past particularly on large networks or when devices require an esoteric pairing methodology. My previous practice was to see the device count on the coordinator (by looking at the numbering) and ensure it increased. The global count would also increase, but for maximise reassurance seeing the coordinator count would be helpful. I appreciate there are other methodologies, just want to explain how the change affects my usage.

5 - API Info

Would still like to see source details in 'info' tab of device (when multi-source), there's space there to show colour, API_NAME and API_URL. These should also be added to the Settings->About tab (at least the API_URL).

6 - API Config

Auto API_NAME, as we're using the name in more places on the UI, creating a name automatically when one isn't supplied would be a good idea. The easiest way would be to take just the hostname from the URL. Where duplicates are found, you can continue to add components until they are distinguished (e.g. port, and step along the path).

An alternative is to enforce naming, for example by changing the config to accept key-value pairs, e.g Local="192.168.86.48:8123/api/hassio_ingress/i3LureG_jqGveD6qvlUs23KxUWnEa5j-TKsGwPCKEoU/api",Upstairs="192.168.86.42:8099/api". This would work well as a dictionary in a YAML config.

Enforce API URLs wrapped in double quotes " as they are not valid URL characters, unlike ,, which is valid in a URL and so not a good separator. See Section 2 of RFC 3986, which allows the following 84 characters:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=

Network map

7 - Circles

I struggle to understand the map logic, in particular the circles. Sometimes the circles have a device name, other times it's the device name + 'Children', sometimes both exist for a device. The circles have one or more devices inside them, so they appear to be a grouping; however, that doesn't work when you switch to 3D mode (presumably they should be spheres in 3D, but they are circles on a single plane).

8 - Colours

It appears Routers are in blue, endpoint devices (I only have a couple!) are in green, and yellow is the coordinator, but a key would help.

9 -Edges

Some parent edges appear to have arrows at both ends. What does that mean?

When changing which edges are shown the node sizes can increase and overlap the arrow heads.

What does the arrowhead indicate? I would expect one of the following (in preference order):

  1. Parent edge, arrow head at parent (only)
  2. Child edge, arrow head at parent (only)
  3. Sibling edge, arrowhead at both ends/no arrowhead.

or

  1. Parent edge, arrow head at child (only)
  2. Child edge, arrow head at parent (only)
  3. Sibling edge, arrowhead at both ends/no arrowhead.

or

  1. Parent edge, arrow head at parent (only)
  2. Child edge, arrow head at child (only)
  3. Sibling edge, arrowhead at both ends/no arrowhead.

I can't tell which is true, and so a legend would help.

Addendum

10 - IEEE

The IEEE address is not that useful to the 'average' non-technical user. I would not have the column displayed by default on the devices page. Similarly, I wouldn't put it in the header/dropdown or the About title in the device details. That's particularly important for the About title, as it has a rename button next to it, which has nothing to do with the IEEE. Instead, I'd move the IEEE to its own detail section on the About tab.

The OTA page includes the IEEE in the name, which is inconsistent with the devices page. Again, I would put it in its own column and not display it by default. Notably, it's not present at all in the dashboard (which is fine).

11 - Dashboard Search

The Dashboard search has a big 'X' clear filter outside the box, and one that appears inside the box. This needs to be made consistent with the Devices filter style.

The dashboard search only searches by friendly name. It could also search IEEE and model (as in devices). It would be nice to utilise that space with more filters (again like devices), this could be done with an 'advance search' popup.

@Nerivec
Copy link
Owner Author

Nerivec commented Aug 20, 2025

Fantastic 😃
I'll go over these after I'm done with the perf issues (I've changed the method for the dashboard & co, now need to do the tables, as previous logic appeared to cause problems with some devices/browsers).

PS: there's a small legend already, above the network map. For the arrows, e.g. "[child] EndDevice -> Coordinator", as in "EndDevice is child of Coordinator", e.g. "[parent] Coordinator -> Router", as in "Coordinator is parent of Router". The big problem is, this data relies of what devices report, and often enough, that data can be stale, or even plain wrong (Tuya...), so connections sometimes don't make sense... There isn't much we can do about that though, as "correcting" these would raise the issue of "which is right".

@KoalaWerewolf
Copy link

Here's a recording of scrolling in Firefox on Mac OS. I've removed Friendly Name for privacy, you can still easily see that the page resets to the top continually. I updated the Add-on earlier today, AFAIK this is the latest code.

Screen.Recording.Windfront.mov

@thargy
Copy link

thargy commented Aug 20, 2025

I added a few more observations to my initial feedback

@Nerivec
Copy link
Owner Author

Nerivec commented Aug 21, 2025

If I can get some quick feedback on the scrolling issues with latest edge before I move on to other points. I changed the technique, used a well-established library, hopefully should fix both scrolling and performance issues. Bonus, the Dashboard gets a real masonry layout, which better fits with the varying content caused by devices with small/large feature amounts.

@ams2990
Copy link

ams2990 commented Aug 21, 2025

Two thumbs up from me. Buttery smooth scrolling, plus page load time is now less than 500ms. New dashboard layout is a nice improvement too -- my lights are small and most of my switches are huge, and the layout looks great.

@thargy
Copy link

thargy commented Aug 21, 2025

If I can get some quick feedback on the scrolling issues with latest edge before I move on to other points. I changed the technique, used a well-established library, hopefully should fix both scrolling and performance issues. Bonus, the Dashboard gets a real masonry layout, which better fits with the varying content caused by devices with small/large feature amounts.

Nailed it. Tested on edge, and HA iOS app. Scrolling is excellent on both. There is a barely perceptible delay as it loads data on edge whilst scrolling quickly, but it is hardly noticeable, on iOS it is invisible. Performance is stunning. Love the new masonry layout on the dashboard too.

This is going to be a real game-changer when it goes to prod!

@KoalaWerewolf
Copy link

Works great!

@Nerivec
Copy link
Owner Author

Nerivec commented Aug 21, 2025

@thargy
3. this is trickier here since it uses a static site. I'll see if there's a way to do this uniformly across platforms. Note: in Z2M it shows "unknown" for release, but should show the proper commit for dev/edge (except for specific cases where git isn't available)
4. should be mostly fixed with the new filtering abilities
5. fixed
6. similar problem as 3, quite limited in what's doable & presentable across platforms.
7. in force layouts, the devices are clustered by their parents, which I believe is what you meant by circles. In 3d, the cluster renders as a sort of "tunnel". It determines the parent for clustering from either parent or child relationships. In the latter, it indicates "children".
8. this is in the legend as mentioned above (PS; you can also swap to icons now)
10. for detailed views (tables), I think it's best to keep the IEEE visible by default, users can remove it if they want
11.

  • some browsers show their own "clear" version independently of the design (with input type "search"). I can't remove the "actual clear" since some browsers don't show one. And using "text" type instead of "search" would lose the ability to clear it with ESC (that is supported in most browsers afaik), and whatever other mechanisms users of specific devices might be used to.
  • just added more filters to provide alternatives to what is doable in the Devices page

@thargy
Copy link

thargy commented Aug 21, 2025

Great work! Here's my feedback which I hope you find constructive.

@thargy 3. this is trickier here since it uses a static site. I'll see if there's a way to do this uniformly across platforms. Note: in Z2M it shows "unknown" for release, but should show the proper commit for dev/edge (except for specific cases where git isn't available)

👍🏻

  1. should be mostly fixed with the new filtering abilities

I looked for the connection filter in the column header, where it would make most sense, but I'm guessing the library you have doesn't support a listbox in headers? At least it's available though.

  1. fixed

Nice update

  1. similar problem as 3, quite limited in what's doable & presentable across platforms.

Understood, though the use of the comma separator is a potential problem due to the URL spec. collision. It is unlikely to happen for most use cases though.

  1. in force layouts, the devices are clustered by their parents, which I believe is what you meant by circles. In 3d, the cluster renders as a sort of "tunnel". It determines the parent for clustering from either parent or child relationships. In the latter, it indicates "children".

It draws a circle around groups in forceDirect2D and forceDirect3D. However, in forceDirect3D those circles are actually drawn on a plane, and as soon as you rotate the map they no longer make any sense., hence I suggested they should be a sphere in such a scenario (which I appreciate is easier said than done). Arguably, you can't use the circles in forceDirect3D, as the whole point of 3D is the rotation ability.

image

Here's an example of the 3D view on rotation, note these 'circles' even disappear when you get them edge-on!

  1. this is in the legend as mentioned above (PS; you can also swap to icons now)

Yes, I've switched to icons by default.

  1. Note that icons suffer the same problem as the circular nodes; they expand when you remove some arrows, and the size would be better remaining consistent if you can do that in the library. It looks like you've adjusted the arrow heads so that they are a little further from the centre, so they are usually at least partially visible now, though that has the effect that there can be quite a gap when the nodes are small. What I notice is that as soon as you move a node, it corrects all the lines and arrowheads so they touch the boundary. This may be a library bug where it's calculating the lines before laying out the icon/node.
  1. for detailed views (tables), I think it's best to keep the IEEE visible by default, users can remove it if they want

Fair enough for the paginating table column, however, in the device details page, you still include the IEEE in the actual title, both of the tab and in the editable title field, even though you can't edit the IEEE. It strikes me that the IEEE should be just another detail in the table below.
image

Note: the title's edit button appears immediately after the IEEE, which cannot be edited.

  • some browsers show their own "clear" version independently of the design (with input type "search"). I can't remove the "actual clear" since some browsers don't show one. And using "text" type instead of "search" would lose the ability to clear it with ESC (that is supported in most browsers afaik), and whatever other mechanisms users of specific devices might be used to.

Yeah, I noticed the same thing in the filter boxes now.

Have you tried something like:

/* Hides the 'x' in search inputs on WebKit-based browsers (Chrome, Safari, Edge, Opera) */
input[type="search"]::-webkit-search-cancel-button {
  -webkit-appearance: none;
  appearance: none;
  display: none;
}

/* Hides the 'x' in text inputs on Internet Explorer 10+ */
input[type="text"]::-ms-clear {
  display: none;
  width : 0;
  height: 0;
}

Which I believe hides the browser's x for all the common browsers (Firefox doesn't have a clear button I think). That means you can rely on your own

  • just added more filters to provide alternatives to what is doable in the Devices page

Yeah, these are great.

Suggestion

Filtering of devices is a common problem that applies to Devices, the Dashboard and OTA. Although you choose different filters for each view, that isn't strictly necessary; for example, searching by available firmware version may be most useful in OTA, but it's not useless in any of the other views.

The column header form of filtering is currently mainly limited to text filters, with some checkboxes and buttons, and isn't available for everything. The UX style of these filters differs from that of, say, the Dashboard filters.

The column filters produce fat headers. This reduces screen real estate on mobile.

It may be better to have a single devices filter pop-up that is shared across each page (Devices, Dashboard, OTA). This filter could also apply across all the pages, meaning if I'm currently viewing 'Sensors', switching between the pages would not remove the filters. The filter pop-up can be opened by a button from the master header, again, reducing screen space, and can be highlighted when any filters are active.

This would provide a consistent filtering experience across pages, reduce screen real estate, allow filtering to persist across views, and allow for richer filtering (e.g last update filters, more use of multi-selects (e.g. for sources, routers/end-point, features, properties, etc.)

I feel like the ideal solution is to have a simple search text box that searches all text fields, and then have an advanced filters button next to that, that opens the pop-up. That pop-up would That is a commonly recognised pattern.

Consider Outlook:
image

The filter icon (which is consistent in Windows and iOS/Mac) opens the pop-up:
image

Where you can search text fields explicitly as well as access some other useful filters.

I have included a fully worked up input of type search example with the CSS, JS and HTML in a single file here. This hides the browsers 'x' (tested on Safari, Edge, Chrome) has it's own clear button, as well as a 'filters' button for opening a popup. This could be added to the primary header.

image image

@Nerivec
Copy link
Owner Author

Nerivec commented Aug 21, 2025

@thargy
7 - If you align the view correctly, it shows as a "tunnel" (which I found quite amusing...), but I agree there could be better ways to render this (this is all done by the library though, so, at the moment I guess the alternative would be to remove them).
9 - The nodes are sized according to centrality, which should be kept. The problem with removing arrows is that you change the "actual map" of the network, so that centrality loses its meaning for sure. The algorithm used to determine siblings should allow to keep all arrows shown (compared to previous frontend that made it unreadable for most networks). I've tested it with a network of over 180 nodes (radial layout) without problems. I added back the toggles by popular demand though.
10 - Forgot to do that, back on the todo list 😅
11 - Don't want to customize the design library unless absolutely necessary. With mobile browsers often taking control of some of the design for forms, I'd rather keep to what the well-tested design library uses, avoid breaking any common patterns users may be used to on specific platforms. I'll see if I can maybe hide the manual clear buttons based on browser features instead.

About the unified filtering, this is not currently doable as the tables use a specific method of filtering. It's a pretty big refactor.
About the unified filters, showing all possible filters in every location, even in a hidden popup, would make for a massive popup. Also would require loading extra data that is not needed for some pages, which would cause more re-rendering (perf issues).
I've been wanting to switch to a better approach for filters (like the popup idea), but have to refactor the base first. I've blown my Open Source time-budget this month by a large margin. 😬

@thargy
Copy link

thargy commented Aug 22, 2025

7 - at the moment I guess the alternative would be to remove them).

That would be my recommendation for fixed3D

10 - Forgot to do that, back on the todo list 😅

👍

11 - Don't want to customize the design layout unless absolutely necessary. With mobile browsers often taking control of some of the design for forms, I'd rather keep to what the well-tested design library uses, avoid breaking any common patterns users may be used to on specific platforms. I'll see if I can maybe hide the manual clear buttons based on browser features instead.

Fair enough, the CSS I provided works in my testing to do that.

About the unified filtering, this is not currently doable as the tables use a specific method of filtering. It's a pretty big refactor.

About the unified filters, showing all possible filters in every location, even in a hidden popup, would make for a massive popup. Also would require loading extra data that is not needed for some pages, which would cause more re-rendering (perf issues).

I suspected that might be the issue.

I've been wanting to switch to a better approach for filters (like the popup idea), but have to refactor the base first. I've blown my Open Source time-budget this month by a large margin. 😬

I've certainly been there!! I suggest we move the suggestion to an issue and put it on the backlog? I do believe it's a worthwhile enhancement, but appreciate it needs to be pushed to a major revision, as it would change the UX substantially for existing users. Putting in an issue and opening it for discussion/debate would allow the community time to feedback on a design prior to implementation, and build support, whilst reducing churn and wasted dev time.

Overall, we're onto relatively minor feedback (i.e. this is polish, though the work in implementing some elements might be significant). This PR represents a huge step forward, particularly for multi-instance systems, which are required for larger networks. In my own testing the sweet-spot for devices per controller/frequency is around 70-90.

The lazy loading, performance improvements and filtering will provide a win for single instance users as well. As such, we've kind of hit the limit of what a small user base is going to find in user acceptance and are probably ready for general release (maybe after implementing 10?)

This is a real step forward for Z2m users and you should be applauded!

@Nerivec
Copy link
Owner Author

Nerivec commented Aug 22, 2025

@0rsa I saw you were using multi-instance. A lot has happened in that area since last release, if you want to give current edge a try (not sure which method you are using, but both Docker & HA add-on have an edge version) and provide some quick feedback here with the rest. 👍

@0rsa
Copy link

0rsa commented Aug 23, 2025

Installed using Docker
I have close to 200 devices on 2 coordinators.

It's night and day in terms of performance compared to the 1.8, the UI is completely smooth, even with a large list, amazing!

About the main nav: I spent some time to understand that there are 2 actions on a single item (you can click directly on the item, or click on the arrow to display a dropdown of your coordinators). The hover effect of the item does not help to understand because there is a single hover for both actions. I would say that you should at least separate the hover effect (one on the label, one on the arrow, as is done for the dropdown at the top right which allows pairing)

Dropdowns do not close when you click outside and you can stack multiple dropdowns at the same time (especially when you didn't understand how the nav dropdowns work at the beginning ahah)

I had an issue regarding the logs clear buttons (both: clear & clear all ; besides, I'm not sure I understand the difference between the two buttons), the UI was not refreshing but I'm currently not able to reproduce it. I will pay attention to this point to try to find the exact scenario. (update: I found a reproducible case: if you open the logs page and stay on the page during some time - few minutes -, the buttons are not working anymore without error in console)

@ams2990
Copy link

ams2990 commented Aug 24, 2025

Switching between Logs tabs changes which instance's logs appear at the bottom as the newest logs, but does not clear already-loaded logs, producing a mishmash of logs from different sources.

I just updated to the latest edge, and I'm no longer able to reproduce this. When switching log sources, all of the log lines are replaced as expected, rather than getting some from one source and some from another.

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.

5 participants