fix(ui): unify the four navigate views, add Set as target everywhere

Continuing the consistency pass: the four screens that show the
distance/bearing "navigate to a point" view (Nodes, Waypoints, Trail's
Track back, and navigating to a location shared in a message) had drifted
apart in three ways.

Only two of the four passed an EtaTracker to navview::draw(), so only
Nodes and Track back showed the closing-speed/ETA line -- navigating to a
waypoint or a shared location left it off for no reason. All four get one
now. They also left the view on three different key sets (Back alone,
Back+LEFT/RIGHT, Back+Enter); Back is now the only way out of any of them,
so a stray sideways nudge can't drop you out of a running track-back.
Messages' renderNav() also switched from reading node_prefs directly to
the shared useImperial() helper the other three already used.

Set as target -- the row Nodes and Waypoints both offer for a coordinate
-- was missing from the message-location Options menu; added alongside
Navigate and Save waypoint.

Nodes' own Set as target required a full 32-byte public key, which a
name-only live-track entry (someone sharing position on a channel who
isn't a saved contact -- the group-outing case this exists for) never
has. One flag was doing two jobs: "can be pinged" (needs the full key)
and "can be identified" (needs only the 6-byte prefix a person target
actually uses). Split into has_key/has_prefix; Set as target now only
needs a position, resolving to a person target (follows them) when a
prefix is available and a place target (pinned where they were) when it
isn't -- the same distinction Locator's own picker already draws.

Locator's target picker separately still listed the people pinned to the
Favourites Dial as its privileged top tier, which stopped making sense
once pinning and favouriting became separate concepts. It now leads with
favourites instead, matching every other list in the firmware.
This commit is contained in:
Jakub
2026-08-31 19:25:08 +02:00
parent 6d1e71cd3f
commit f40748ba61
7 changed files with 72 additions and 42 deletions
+4
View File
@@ -16,6 +16,10 @@
- **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`.
- **The four navigate views behaved differently from each other.** They all draw the same screen — distance, bearing to target, your heading — but only two of them (Nodes Navigate and Trail Track back) showed the closing-speed/**ETA** line; navigating to a waypoint or to a location shared in a message left it off for no reason. All four show it now. They also left the view on three different key sets — Back, LEFT/RIGHT on some, Enter on another. **Back** is now the only way out of any of them, so a stray sideways nudge can't drop you out of a running track-back.
- **A location shared in a message could be navigated to and saved as a waypoint, but not set as the Locator target** — the one row that Nodes and Waypoints both offer for a coordinate. **Set as target** now joins Navigate and Save waypoint in the message Options menu.
- **Tools Nodes refused to make a Locator target out of a node whose full public key it didn't have**, even with a perfectly good position on screen — the row you get when someone shares their location on a channel and isn't in your contacts, which is exactly the group-outing case the feature is for. One flag was standing in for two different things: "can be pinged" (needs the whole 32-byte key) and "can be identified" (needs only a 6-byte prefix, which is all a person target ever uses). Those are separate now, so **Set as target** is offered whenever the node has a position: with an identity it follows them as they move, and without one — a channel share, matched by name — it pins the place they were last seen, the same way a waypoint or a location out of a message does. **Navigate** was never restricted and is unchanged.
- **Tools Locator's target picker listed the people pinned to the Favourites Dial as its top tier**, which stopped making sense once pinning and favouriting became separate things — pinning puts something on a home page, and has nothing to say about who you'd geofence. The picker now leads with your **favourites** instead (still offered before they have a known position, so you can arm ahead of time); everyone else with a resolvable position follows, as before.
- **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.
---