mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-09-16 16:16:37 +00:00
fix(ui): one rule for value rows, one meaning for Hold Enter
Three interaction inconsistencies found while auditing the favourites work, all of the same shape: the same gesture meaning different things depending on which screen you were on. Value rows in popup menus. Rows like "Notif: ON" or "Sort: Dist" show a value the user steps through with LEFT/RIGHT, but Enter treated them as ordinary menu picks and closed the popup, so changing two of them meant reopening the menu in between. Trail's settings submenu was the lone exception, working around it by rebuilding and re-selecting after each Enter. PopupMenu now knows the difference: addValueItem() marks a row, and Enter on it returns the new VALUE_NEXT instead of SELECTED, leaving the menu open. Only Back closes a menu now. Applied to the Messages contact/room/channel menus, Nodes, the Ringtone editor and Trail, which drops its reopenSettingsAt() workaround. The LEFT/RIGHT cycling bodies moved into one helper per menu, since Enter and RIGHT now share them. Nodes' Fav row was the worst case: LEFT/RIGHT did nothing there at all, so the only way to toggle a favourite was an Enter that dismissed the menu on every flip. Its label moved to a member buffer (as the Pin row already had) so it can be retitled in place. Settings rows Auto-off, Low battery, GPS pwr and Battery ignored Enter, though their options wrap exactly like the melody/keyboard/clock rows beside them, where Enter has always stepped forward. They accept it now. Rows that ramp between fixed ends (Brightness, Volume, TX Pwr, Timezone, SF/BW/CR) stay LEFT/RIGHT-only -- there is nothing to wrap to. Hold Enter no longer doubles as Back. It quietly meant "go back" on Tools, Locator, Live Share, Repeater, Bot, Auto-Advert, GPIO, Compass, the Dashboard config and the Messages navigate view, while elsewhere the same long press opens a context menu. It now only ever opens a menu, or does nothing where there is none. Same for dismissing an open popup, which it used to do. Checked that this strands nobody: every board that can reach these screens has a real Back key (back_btn on joystick boards, Esc on CardKB/TCA8418/T-Deck). Single-button boards produce no KEY_ENTER at all, so they never leave the home pages in the first place.
This commit is contained in:
+5
-1
@@ -5,7 +5,7 @@
|
||||
- **Long names and labels scroll into view when selected instead of staying stuck behind an ellipsis.** Any selected row that would otherwise truncate — contacts, channels, messages, settings values, and more — now pauses, scrolls to reveal the full text, then swings back to the start and repeats, for as long as it stays selected; unselected rows keep the plain static ellipsis. E-ink gets its own slower cadence to suit the panel.
|
||||
- **Messages sent from the phone app now show up in the device's own chat history**, not just on the phone — open a DM, room, or channel on the device and a message you just sent from the app is right there, with the same delivery-confirmation markers (pending/delivered for DMs, pending/relayed for channels) a message composed on the device itself gets.
|
||||
- **The Favourites Dial takes channels and room servers, not just contacts.** Pinning an empty tile now opens the Messages screen's own Direct/Channels/Rooms browse — the same list you already use to open a conversation — instead of a picker built on the dial, and the tile opens the right thing: a DM, a channel history, or a room (running its login handshake first, which the dial used to skip). Channel tiles are marked with a leading `#` and carry their own unread badge. You can also pin straight from the Messages context menus, which every kind now has, and the dial itself gained **Unpin** / **Replace** under Hold Enter on a filled tile.
|
||||
- **Favourites now behave the same on every list.** A favourite is marked with a ★ on its row and sorted above everything else — in Messages (contacts, rooms, channels) and in Tools › Nodes alike. New **Settings › Contacts › Favs top** turns the sorting off if you'd rather keep the natural order; it's on by default. On Nodes, the old `Favourite` menu row actually pinned to the dial despite its name — it's now split into a real `Fav: ON/OFF` and a separate `Pin to dial`.
|
||||
- **Favourites now behave the same on every list.** A favourite is marked with a ★ on its row and sorted above everything else — in Messages (contacts, rooms, channels) and in Tools › Nodes alike, and the Locator target picker marks them too. New **Settings › Contacts › Favs top** turns the sorting off if you'd rather keep the natural order; it's on by default. On Nodes, the old `Favourite` menu row actually pinned to the dial despite its name — it's now split into a real `Fav: ON/OFF` and a separate `Pin to dial`.
|
||||
- **Contacts and rooms can be marked as favourites from the device.** `Fav: ON/OFF` joins the contact and room context menus, alongside the one channels already had. It's the same starred flag the phone app shows, so it syncs both ways — and it's what the Settings › Contacts › `DMs`/`Rooms` = `Fav` list filters read, which previously could only be satisfied by starring someone in the app.
|
||||
- **"Path" / "Relayed by" — see which repeaters actually carried a message.** Hold Enter on a message (list or fullscreen) and, when the data is available, the Options menu gains a new row: **Path (N hops)** on a received message lists the repeaters it actually travelled through, in order; **Relayed by (N)** on your own channel post lists every distinct repeater heard echoing it back into the mesh. Each hop resolves to a contact's name where known, or a short hex tag otherwise.
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
|
||||
- **A room server could end up pinned to the Favourites Dial and then never be removed.** The pin picker's "recent conversations" tier didn't filter by contact type, and room posts share the DM history, so a room could appear there; opening it from the dial then skipped the login handshake, and Unpin only existed in the chat contact list, which rooms never appear in. Rooms are now pinned deliberately (and open correctly), and any tile can be unpinned from the dial itself.
|
||||
- **Bluetooth connect/disconnect/reconnect cycles (e.g. a phone drifting in and out of range) could make the device nearly unresponsive for a few seconds at a time**, including briefly after turning BLE off. A failed BLE notify was retried on a fixed short interval, repeatedly hitting a blocking wait deep in the BLE stack while the link stayed marginal. Failed sends now back off exponentially (capped at 2s) instead of hammering the same blocking call.
|
||||
- **Enter on a `Notif:` / `Melody:` / `Fav:` / `Sort:` row in a context menu now changes the value instead of closing the menu.** Those rows show a value you step through with LEFT/RIGHT, but Enter treated them as ordinary menu picks and dismissed the popup, so changing two of them meant reopening the menu in between. Enter now advances the value and the menu stays open — only Back closes it — across the Messages contact/room/channel menus, Tools › Nodes, and the Ringtone editor, matching what Trail › Settings already did. The Nodes `Fav` row was the worst of it: LEFT/RIGHT did nothing there at all, so the only way to toggle a favourite was an Enter that closed the menu on every flip.
|
||||
- **Settings rows Auto-off, Low battery, GPS pwr and Battery ignored Enter**, even though their options wrap around exactly like the melody, keyboard and clock rows next to them, where Enter has always stepped to the next value. They now accept Enter too. Rows that ramp between fixed ends instead of wrapping — Brightness, Volume, TX Pwr, Timezone, SF/BW/CR — stay LEFT/RIGHT-only, since there is nothing to wrap to.
|
||||
- **The Settings › Contacts filter rows read `DM`, `all` and `fav` in three different casings** from each other and from the rest of the screen. Now `DMs`, `All` and `Fav`.
|
||||
- **Hold Enter no longer doubles as a second Back key.** On Tools, Locator, Live Share, Repeater, Remote Bot, Auto-Advert, GPIO, Compass, the Dashboard config and the Messages navigate view it quietly meant "go back", while on other screens the same gesture opens a context menu — so the same long press did two unrelated things depending on where you were. It now only ever opens a menu (or does nothing where there is none), and Back is the single way back. This also applies inside an open popup, which Hold Enter used to dismiss.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user