diff --git a/README.md b/README.md index 30c9ad19..f49f67b3 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,9 @@ All firmware files are published on the [releases page](https://github.com/Marek - **GPS compass** — heading derived from course-over-ground (no magnetometer needed), shown as a clear scrolling heading tape with a large degrees + cardinal readout - **Navigate to anything** — a saved waypoint, a node straight from Nearby Nodes, or a location someone shares with you in a message - **Share & save locations** — send a waypoint to a contact or channel; on the other end, navigate to or save any shared location with one menu - - **GPS trail** — background route recording with an auto-fit map (waypoints + live position), summary stats, and [GPX export](#solo-tools) + - **Live location sharing** — broadcast your position over the mesh as you move (movement-gated, to a channel or contact) and see others who share theirs as pins on the map and live distance/bearing in Nearby + - **Locator** — arm a geofence around a target — a saved waypoint *or* a person (their live/last-known position) — and get an alert when you arrive/leave or they get near/far, with an optional homing beeper that ticks faster the closer you get. Set it from the Locator screen or straight from Nearby Nodes / Waypoints, and see the target as a flag on the map + - **GPS trail** — background route recording with an auto-fit map (waypoints + live position), summary stats, auto-pause on stops, and [GPX export](#solo-tools) - **Metric or imperial** — one global Units setting drives every distance and speed across the UI - [Messages Screen](./docs/solo_features/message_screen/message_screen.md) — view and send messages, open message details, reply with quick messages or custom text, navigate to / save locations shared in a message, per-channel notification and melody overrides @@ -49,7 +51,7 @@ All firmware files are published on the [releases page](https://github.com/Marek - [Screen Lock](./docs/solo_features/screen_lock/screen_lock.md) — lock the device to prevent accidental keypresses, with a lock screen showing time and sensor data -- [Tools Screen](./docs/solo_features/tools_screen/tools_screen.md) — GPS trail & waypoints, compass, nearby nodes (with ping & navigate), ringtone editor, auto-reply bot, auto-advert, diagnostics, repeater +- [Tools Screen](./docs/solo_features/tools_screen/tools_screen.md) — GPS trail & waypoints, compass, nearby nodes (with ping & navigate), ringtone editor, auto-reply bot, auto-advert, live location sharing, locator, diagnostics, repeater - **Battery saving (radio)** — two optional, independent toggles under Settings › Radio: - **Pwr save** — hardware duty-cycle receive (SX126x `SetRxDutyCycle`): the radio cycles RX↔sleep on its own and wakes on a preamble, cutting average RX current with only a little added receive latency @@ -97,7 +99,7 @@ Updating to a newer version usually does not require erasing flash unless the re | [Clock Screen](./docs/solo_features/clock_screen/clock_screen.md) | Clock page, date, configurable data fields | | [Settings Screen](./docs/solo_features/settings_screen/settings_screen.md) | All settings sections with values and interactions | | [Screen Lock](./docs/solo_features/screen_lock/screen_lock.md) | Lock/unlock sequence, lock screen, auto-lock | -| [Tools Screen](./docs/solo_features/tools_screen/tools_screen.md) | GPS trail & waypoints, compass, navigation, nearby nodes, ringtone editor, auto-reply bot, auto-advert, diagnostics, repeater | +| [Tools Screen](./docs/solo_features/tools_screen/tools_screen.md) | GPS trail & waypoints, compass, navigation, nearby nodes, ringtone editor, auto-reply bot, auto-advert, live location sharing, locator, diagnostics, repeater | ### Upstream MeshCore diff --git a/docs/solo_features/clock_screen/clock_screen.md b/docs/solo_features/clock_screen/clock_screen.md index 790191d3..06c54502 100644 --- a/docs/solo_features/clock_screen/clock_screen.md +++ b/docs/solo_features/clock_screen/clock_screen.md @@ -6,7 +6,7 @@ | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./clk_scr_1_oled.png) | ![](./clk_scr_1_eink.png) | +| ![](./overview_oled.png) | ![](./overview_eink.png) | A full-screen clock page on the home screen. Shows the current time and date, with up to three configurable data fields below. @@ -27,7 +27,7 @@ If no time source is available, the screen shows _"! No time sync"_ with a hint | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./clk_scr_2_oled.png) | ![](./clk_scr_2_eink.png) | +| ![](./fields_oled.png) | ![](./fields_eink.png) | Up to three data fields are shown below the date separator. Each field displays a label and a value on the same line. @@ -52,4 +52,10 @@ Sensor fields show `--` when the sensor is not connected or has no data. ### Configuring fields +| OLED | E-Ink | +| :-----------------------: | :-----------------------: | +| ![](./config_oled.png) | ![](./config_eink.png) | + + + **Hold Enter** (or press the **Context menu** key) on the Clock page to open the Dashboard Config screen, where each of the three field slots can be cycled with **LEFT/RIGHT**. diff --git a/docs/solo_features/clock_screen/clk_scr_2_eink.png b/docs/solo_features/clock_screen/fields_eink.png similarity index 100% rename from docs/solo_features/clock_screen/clk_scr_2_eink.png rename to docs/solo_features/clock_screen/fields_eink.png diff --git a/docs/solo_features/clock_screen/clk_scr_2_oled.png b/docs/solo_features/clock_screen/fields_oled.png similarity index 100% rename from docs/solo_features/clock_screen/clk_scr_2_oled.png rename to docs/solo_features/clock_screen/fields_oled.png diff --git a/docs/solo_features/clock_screen/clk_scr_1_eink.png b/docs/solo_features/clock_screen/overview_eink.png similarity index 100% rename from docs/solo_features/clock_screen/clk_scr_1_eink.png rename to docs/solo_features/clock_screen/overview_eink.png diff --git a/docs/solo_features/clock_screen/clk_scr_1_oled.png b/docs/solo_features/clock_screen/overview_oled.png similarity index 100% rename from docs/solo_features/clock_screen/clk_scr_1_oled.png rename to docs/solo_features/clock_screen/overview_oled.png diff --git a/docs/solo_features/favourites_dial/favourites_dial.md b/docs/solo_features/favourites_dial/favourites_dial.md index ee55a4a6..e71b2815 100644 --- a/docs/solo_features/favourites_dial/favourites_dial.md +++ b/docs/solo_features/favourites_dial/favourites_dial.md @@ -6,7 +6,7 @@ | OLED | E-Ink | | :------------------------: | :------------------------: | -| ![](./fav_dial_1_oled.png) | ![](./fav_dial_1_eink.png) | +| ![](./overview_oled.png) | ![](./overview_eink.png) | A dedicated home page showing a grid of up to 6 pinned contacts for quick access. The layout adapts to the display orientation: @@ -41,6 +41,12 @@ If a pinned contact has been removed from the contacts list, the tile shows `(go 2. Recent DM contacts — listed after 3. All remaining chat contacts — fallback when the first two tiers are empty (e.g. fresh install before any DMs) +| OLED | E-Ink | +| :------------------------: | :------------------------: | +| ![](./picker_oled.png) | ![](./picker_eink.png) | + + + Select a contact to pin it to that slot. **From a DM conversation** — **Hold Enter** › context menu › **Pin to dial**, then choose a slot from the slot picker (Slot 1–6, showing the current occupant name or "empty"). diff --git a/docs/solo_features/favourites_dial/fav_dial_1_eink.png b/docs/solo_features/favourites_dial/overview_eink.png similarity index 100% rename from docs/solo_features/favourites_dial/fav_dial_1_eink.png rename to docs/solo_features/favourites_dial/overview_eink.png diff --git a/docs/solo_features/favourites_dial/fav_dial_1_oled.png b/docs/solo_features/favourites_dial/overview_oled.png similarity index 100% rename from docs/solo_features/favourites_dial/fav_dial_1_oled.png rename to docs/solo_features/favourites_dial/overview_oled.png diff --git a/docs/solo_features/message_screen/mes_scr_2_eink.png b/docs/solo_features/message_screen/compose_eink.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_2_eink.png rename to docs/solo_features/message_screen/compose_eink.png diff --git a/docs/solo_features/message_screen/mes_scr_2_oled.png b/docs/solo_features/message_screen/compose_oled.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_2_oled.png rename to docs/solo_features/message_screen/compose_oled.png diff --git a/docs/solo_features/message_screen/mes_scr_7_eink.png b/docs/solo_features/message_screen/ctx_channel_eink.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_7_eink.png rename to docs/solo_features/message_screen/ctx_channel_eink.png diff --git a/docs/solo_features/message_screen/mes_scr_7_oled.png b/docs/solo_features/message_screen/ctx_channel_oled.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_7_oled.png rename to docs/solo_features/message_screen/ctx_channel_oled.png diff --git a/docs/solo_features/message_screen/mes_scr_6_eink.png b/docs/solo_features/message_screen/ctx_contact_eink.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_6_eink.png rename to docs/solo_features/message_screen/ctx_contact_eink.png diff --git a/docs/solo_features/message_screen/mes_scr_6_oled.png b/docs/solo_features/message_screen/ctx_contact_oled.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_6_oled.png rename to docs/solo_features/message_screen/ctx_contact_oled.png diff --git a/docs/solo_features/message_screen/mes_scr_4_eink.png b/docs/solo_features/message_screen/fullscreen_eink.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_4_eink.png rename to docs/solo_features/message_screen/fullscreen_eink.png diff --git a/docs/solo_features/message_screen/mes_scr_5_eink.png b/docs/solo_features/message_screen/fullscreen_menu_eink.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_5_eink.png rename to docs/solo_features/message_screen/fullscreen_menu_eink.png diff --git a/docs/solo_features/message_screen/mes_scr_5_oled.png b/docs/solo_features/message_screen/fullscreen_menu_oled.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_5_oled.png rename to docs/solo_features/message_screen/fullscreen_menu_oled.png diff --git a/docs/solo_features/message_screen/mes_scr_4_oled.png b/docs/solo_features/message_screen/fullscreen_oled.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_4_oled.png rename to docs/solo_features/message_screen/fullscreen_oled.png diff --git a/docs/solo_features/message_screen/mes_scr_3_eink.png b/docs/solo_features/message_screen/history_eink.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_3_eink.png rename to docs/solo_features/message_screen/history_eink.png diff --git a/docs/solo_features/message_screen/mes_scr_3_oled.png b/docs/solo_features/message_screen/history_oled.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_3_oled.png rename to docs/solo_features/message_screen/history_oled.png diff --git a/docs/solo_features/message_screen/message_screen.md b/docs/solo_features/message_screen/message_screen.md index b3d07e5a..31362f2f 100644 --- a/docs/solo_features/message_screen/message_screen.md +++ b/docs/solo_features/message_screen/message_screen.md @@ -6,7 +6,7 @@ | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./mes_scr_1_oled.png) | ![](./mes_scr_1_eink.png) | +| ![](./overview_oled.png) | ![](./overview_eink.png) | The Messages screen is split into three modes — **DMs**, **Channels**, and **Rooms** — selectable with UP/DOWN on the mode-select screen. Each mode shows the corresponding list of conversations with unread counters. @@ -16,7 +16,7 @@ The Messages screen is split into three modes — **DMs**, **Channels**, and **R | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./mes_scr_2_oled.png) | ![](./mes_scr_2_eink.png) | +| ![](./compose_oled.png) | ![](./compose_eink.png) | Press **Enter** on a contact or channel to open its history, then press **Enter** again (or select an empty send row) to compose a message. Choose between: @@ -44,7 +44,7 @@ Sensor placeholders appear automatically in the placeholder picker when the corr | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./mes_scr_3_oled.png) | ![](./mes_scr_3_eink.png) | +| ![](./history_oled.png) | ![](./history_eink.png) | Each entry in the history list shows the sender name and a compact age indicator (`3m`, `2h`, `>1d`) in the top-right corner. @@ -56,7 +56,7 @@ Each entry in the history list shows the sender name and a compact age indicator | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./mes_scr_4_oled.png) | ![](./mes_scr_4_eink.png) | +| ![](./fullscreen_oled.png) | ![](./fullscreen_eink.png) | Navigate between messages with **LEFT** (newer) and **RIGHT** (older). Long messages scroll with **UP/DOWN**. @@ -64,7 +64,7 @@ If the message is a reply addressed to someone (`@[nick]`), a **To: nick** bar i | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./mes_scr_5_oled.png) | ![](./mes_scr_5_eink.png) | +| ![](./fullscreen_menu_oled.png) | ![](./fullscreen_menu_eink.png) | **Hold Enter** in fullscreen opens the options menu. It always offers **Reply** for an incoming message, and when the message contains a **location** it adds two more: @@ -81,7 +81,7 @@ A location is any `lat,lon` pair in the text — exactly what the `{loc}` placeh | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./mes_scr_6_oled.png) | ![](./mes_scr_6_eink.png) | +| ![](./ctx_contact_oled.png) | ![](./ctx_contact_eink.png) | | Item | Action | | ---------------------------- | ------------------------------------------------------------------------------ | @@ -98,7 +98,7 @@ When **Pin to dial** is selected, a slot picker opens (Slot 1–6 showing curren | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./mes_scr_7_oled.png) | ![](./mes_scr_7_eink.png) | +| ![](./ctx_channel_oled.png) | ![](./ctx_channel_eink.png) | **Hold Enter** on a channel entry opens a context menu: diff --git a/docs/solo_features/message_screen/mes_scr_1_eink.png b/docs/solo_features/message_screen/overview_eink.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_1_eink.png rename to docs/solo_features/message_screen/overview_eink.png diff --git a/docs/solo_features/message_screen/mes_scr_1_oled.png b/docs/solo_features/message_screen/overview_oled.png similarity index 100% rename from docs/solo_features/message_screen/mes_scr_1_oled.png rename to docs/solo_features/message_screen/overview_oled.png diff --git a/docs/solo_features/screen_lock/lck_scr_1_eink.png b/docs/solo_features/screen_lock/overview_eink.png similarity index 100% rename from docs/solo_features/screen_lock/lck_scr_1_eink.png rename to docs/solo_features/screen_lock/overview_eink.png diff --git a/docs/solo_features/screen_lock/lck_scr_1_oled.png b/docs/solo_features/screen_lock/overview_oled.png similarity index 100% rename from docs/solo_features/screen_lock/lck_scr_1_oled.png rename to docs/solo_features/screen_lock/overview_oled.png diff --git a/docs/solo_features/screen_lock/lck_scr_2_eink.png b/docs/solo_features/screen_lock/screen_eink.png similarity index 100% rename from docs/solo_features/screen_lock/lck_scr_2_eink.png rename to docs/solo_features/screen_lock/screen_eink.png diff --git a/docs/solo_features/screen_lock/screen_lock.md b/docs/solo_features/screen_lock/screen_lock.md index c06340d3..398f3d5d 100644 --- a/docs/solo_features/screen_lock/screen_lock.md +++ b/docs/solo_features/screen_lock/screen_lock.md @@ -6,7 +6,7 @@ | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./lck_scr_1_oled.png) | ![](./lck_scr_1_eink.png) | +| ![](./overview_oled.png) | ![](./overview_eink.png) | Screen lock prevents accidental keypresses. While locked the display turns off and all input is ignored. @@ -34,7 +34,7 @@ If no press is made for 3 seconds, the counter resets. | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./lck_scr_2_oled.png) | ![](./lck_scr_2_eink.png) | +| ![](./screen_oled.png) | ![](./screen_eink.png) | A brief press of any button wakes the display and shows the lock screen. It displays: diff --git a/docs/solo_features/screen_lock/lck_scr_2_oled.png b/docs/solo_features/screen_lock/screen_oled.png similarity index 100% rename from docs/solo_features/screen_lock/lck_scr_2_oled.png rename to docs/solo_features/screen_lock/screen_oled.png diff --git a/docs/solo_features/settings_screen/set_scr_2_eink.png b/docs/solo_features/settings_screen/homepages_eink.png similarity index 100% rename from docs/solo_features/settings_screen/set_scr_2_eink.png rename to docs/solo_features/settings_screen/homepages_eink.png diff --git a/docs/solo_features/settings_screen/set_scr_2_oled.png b/docs/solo_features/settings_screen/homepages_oled.png similarity index 100% rename from docs/solo_features/settings_screen/set_scr_2_oled.png rename to docs/solo_features/settings_screen/homepages_oled.png diff --git a/docs/solo_features/settings_screen/set_scr_1_eink.png b/docs/solo_features/settings_screen/overview_eink.png similarity index 100% rename from docs/solo_features/settings_screen/set_scr_1_eink.png rename to docs/solo_features/settings_screen/overview_eink.png diff --git a/docs/solo_features/settings_screen/set_scr_1_oled.png b/docs/solo_features/settings_screen/overview_oled.png similarity index 100% rename from docs/solo_features/settings_screen/set_scr_1_oled.png rename to docs/solo_features/settings_screen/overview_oled.png diff --git a/docs/solo_features/settings_screen/settings_screen.md b/docs/solo_features/settings_screen/settings_screen.md index e23298af..bd8c36d9 100644 --- a/docs/solo_features/settings_screen/settings_screen.md +++ b/docs/solo_features/settings_screen/settings_screen.md @@ -6,7 +6,7 @@ | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./set_scr_1_oled.png) | ![](./set_scr_1_eink.png) | +| ![](./overview_oled.png) | ![](./overview_eink.png) | All settings are saved to flash and restored on next boot. Settings are organised into collapsible sections. Press **Enter** on a section header to expand or collapse it — all sections start collapsed for faster navigation. Press **LEFT/RIGHT** to change a value, or **Enter** for toggle items. @@ -50,7 +50,7 @@ Melody 1 and Melody 2 are custom sequences editable in **Tools › Ringtone Edit | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./set_scr_2_oled.png) | ![](./set_scr_2_eink.png) | +| ![](./homepages_oled.png) | ![](./homepages_eink.png) | Lists all available home screen pages. For each entry: @@ -74,6 +74,12 @@ Lists all available home screen pages. For each entry: | Pwr save | ON / OFF | **Battery saver.** Hardware duty-cycle receive: the SX126x cycles RX↔sleep on its own and wakes on a preamble, cutting average RX current. Trades a little receive latency; leave OFF for lowest-latency reception. Requires an SX126x radio (otherwise stays on continuous RX). **Forced off (shown as `--`) while the repeater is on** — a repeater must listen continuously; your setting is restored when the repeater is switched off. | | Auto pwr | ON / OFF | **Adaptive Power Control.** Lowers actual TX power on strong links to save energy, ramping back up — to the **TX Pwr** ceiling — on weak or lost links. Link quality comes from direct-message ACK SNR and, for channel messages (no ACK), from hearing a repeater rebroadcast your packet. The radio page / name bar shows the live power. Default OFF (fixed TX power). **Suppressed (shown as `--`) while the repeater is on** — a repeater holds full TX power for consistent relay reach; your setting is restored when the repeater is switched off. | +| OLED | E-Ink | +| :-----------------------: | :-----------------------: | +| ![](./radio_oled.png) | ![](./radio_eink.png) | + + + The **repeater** mode and its flood filters live on their own screen — see **Tools › Repeater**. --- diff --git a/docs/solo_features/tools_screen/tls_scr_7_eink.png b/docs/solo_features/tools_screen/autoreply_eink.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_7_eink.png rename to docs/solo_features/tools_screen/autoreply_eink.png diff --git a/docs/solo_features/tools_screen/tls_scr_7_oled.png b/docs/solo_features/tools_screen/autoreply_oled.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_7_oled.png rename to docs/solo_features/tools_screen/autoreply_oled.png diff --git a/docs/solo_features/tools_screen/tls_scr_2_eink.png b/docs/solo_features/tools_screen/nearby_eink.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_2_eink.png rename to docs/solo_features/tools_screen/nearby_eink.png diff --git a/docs/solo_features/tools_screen/tls_scr_2_oled.png b/docs/solo_features/tools_screen/nearby_oled.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_2_oled.png rename to docs/solo_features/tools_screen/nearby_oled.png diff --git a/docs/solo_features/tools_screen/tls_scr_2_ping_eink.png b/docs/solo_features/tools_screen/nearby_ping_eink.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_2_ping_eink.png rename to docs/solo_features/tools_screen/nearby_ping_eink.png diff --git a/docs/solo_features/tools_screen/tls_scr_2_ping_oled.png b/docs/solo_features/tools_screen/nearby_ping_oled.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_2_ping_oled.png rename to docs/solo_features/tools_screen/nearby_ping_oled.png diff --git a/docs/solo_features/tools_screen/tls_scr_3_eink.png b/docs/solo_features/tools_screen/nearby_scan_eink.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_3_eink.png rename to docs/solo_features/tools_screen/nearby_scan_eink.png diff --git a/docs/solo_features/tools_screen/tls_scr_3_oled.png b/docs/solo_features/tools_screen/nearby_scan_oled.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_3_oled.png rename to docs/solo_features/tools_screen/nearby_scan_oled.png diff --git a/docs/solo_features/tools_screen/tls_scr_1_eink.png b/docs/solo_features/tools_screen/overview_eink.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_1_eink.png rename to docs/solo_features/tools_screen/overview_eink.png diff --git a/docs/solo_features/tools_screen/tls_scr_1_oled.png b/docs/solo_features/tools_screen/overview_oled.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_1_oled.png rename to docs/solo_features/tools_screen/overview_oled.png diff --git a/docs/solo_features/tools_screen/tls_scr_6_eink.png b/docs/solo_features/tools_screen/ringtone_eink.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_6_eink.png rename to docs/solo_features/tools_screen/ringtone_eink.png diff --git a/docs/solo_features/tools_screen/tls_scr_6_oled.png b/docs/solo_features/tools_screen/ringtone_oled.png similarity index 100% rename from docs/solo_features/tools_screen/tls_scr_6_oled.png rename to docs/solo_features/tools_screen/ringtone_oled.png diff --git a/docs/solo_features/tools_screen/tools_screen.md b/docs/solo_features/tools_screen/tools_screen.md index 28aa3683..dbb6a483 100644 --- a/docs/solo_features/tools_screen/tools_screen.md +++ b/docs/solo_features/tools_screen/tools_screen.md @@ -6,9 +6,9 @@ | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./tls_scr_1_oled.png) | ![](./tls_scr_1_eink.png) | +| ![](./overview_oled.png) | ![](./overview_eink.png) | -The Tools screen is a hub for GPS trail recording, nearby node browsing, ringtone editing, auto-reply bot, auto-advert, compass, device diagnostics, and repeater mode. Navigate the tool list with **UP/DOWN** and press **Enter** to open a tool. +The Tools screen is a hub for GPS trail recording, nearby node browsing, ringtone editing, auto-reply bot, auto-advert, live location sharing, locator, compass, device diagnostics, and repeater mode. Tools are grouped into collapsible **Location** / **Comms** / **System** sections — the same fold-in-place model as Settings; Tools always opens folded back to the section list. Navigate with **UP/DOWN**, press **Enter** on a section header to expand or collapse it, or on a tool to open it. --- @@ -16,7 +16,7 @@ The Tools screen is a hub for GPS trail recording, nearby node browsing, rington | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./tls_scr_2_oled.png) | ![](./tls_scr_2_eink.png) | +| ![](./nearby_oled.png) | ![](./nearby_eink.png) | Browse nodes that have recently advertised on the mesh. **Filter** (which nodes) and **sort** (in what order) are independent axes and combine freely. @@ -31,15 +31,16 @@ Filter by category with **LEFT/RIGHT** (one coherent axis — type only): | Room | Room servers | | Snsr | Sensors | -Select a node to see its coordinates, distance, bearing with cardinal direction, type, and last-heard time. +Select a node to see its coordinates, distance, bearing with cardinal direction, type, and last-heard time. A node that is **broadcasting its position** via Live Share is marked with a **♦ diamond** beside its name in the list (the same marker the map uses), and its detail shows `Sharing pos:` with the share age and whether it's DM-verified or channel-only. **Hold Enter** opens the same **Options** menu everywhere (list and detail), in a fixed order — only the actions that apply appear: | Action | Available when | | ---------------------- | -------------------------------------------------------------------------------------- | -| Navigate | selected node has GPS | +| Navigate | selected node has GPS — for a node sharing live position, the view follows it as it moves and adds an ETA line | | Ping | a public key is known for the node | | Save waypoint | selected node has GPS | +| Set as target | selected node has GPS **and** a public key — pins it as the active **Locator/Nav target** right away (see **Locator**) | | Sort: Dist/Recent | browsing stored nodes — **LEFT/RIGHT** on the row flips distance ↔ last-heard in place | | Discover scan / Rescan | always (live `NODE_DISCOVER_REQ` scan) | @@ -49,7 +50,7 @@ Selecting **Ping** opens the Ping popup: | OLED | E-Ink | | :----------------------------: | :----------------------------: | -| ![](./tls_scr_2_ping_oled.png) | ![](./tls_scr_2_ping_eink.png) | +| ![](./nearby_ping_oled.png) | ![](./nearby_ping_eink.png) | Use **Enter** on the popup’s `Ping` row to send a direct mesh ping to that node. The popup then shows the RTT and SNR values on the next lines, and can be used again immediately for another ping. @@ -62,7 +63,7 @@ Use **Enter** on the popup’s `Ping` row to send a direct mesh ping to that nod | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./tls_scr_3_oled.png) | ![](./tls_scr_3_eink.png) | +| ![](./nearby_scan_oled.png) | ![](./nearby_scan_eink.png) | **Options → Discover scan** sends a `NODE_DISCOVER_REQ`. Repeaters, sensors and room servers within zero-hop range respond immediately with name, type and signal data. This is not a separate screen — it is the **same list switched to a live-scan source**: the right-hand column shows **RSSI** instead of distance, and node detail shows the public key, signal data and contact status. @@ -76,21 +77,26 @@ Because it is the same list, all the same keys apply — **UP/DOWN** to navigate | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./tls_scr_4_oled.png) | ![](./tls_scr_4_eink.png) | +| ![](./trail_summary_oled.png) | ![](./trail_summary_eink.png) | -Records your route in a RAM ring buffer (up to 512 points, sampled every 1 s). Tracking runs in the background — a blinking **G** appears in the status bar. The trail survives display auto-off but is lost on reboot unless saved to flash first. +Records your route in a RAM ring buffer (up to 512 points, sampled every 1 s). The track is **simplified as it's recorded** — a long straight stretch is kept as just its two endpoints while curves keep their detail (bounded to within the **Min dist** tolerance of the real path), so the buffer covers a far longer route than a flat point budget would suggest. Tracking runs in the background — a blinking **G** appears in the status bar. The trail survives display auto-off but is lost on reboot unless saved to flash first. + +> [!TIP] +> The **Map** view is also reachable directly from the home carousel — the **Map** page shows a live mini-preview (your position, trail, and tracked contacts) with a **north marker** and a bottom-left **scale tick**. The status line below reads `Track:N` (tracked-node count) and, when you have a fix and at least one tracked contact, an **arrow + distance** to the **nearest** one (e.g. `Track:3 →120m`). If a **Locator/Nav target** is set it's drawn as a **flag marker** (see **Locator**). Press **Enter** to open the full Trail Map; **Hold Enter** shares your position (see **Live Share**); **Back** returns home. + +A GPS fix indicator also sits in the top status bar, alongside the trail/auto-advert/repeater icons — boxed (lit) once the receiver has a valid fix, a plain glyph while still searching. It only appears on boards with GPS hardware and while **GPS** is turned on in Settings; it's hidden the rest of the time rather than sitting there empty. Cycle views with **LEFT / RIGHT**: | View | Content | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Summary** | Distance, elapsed time, avg speed or pace, point count, tracking status | -| **Map** | Auto-fit dot-and-line plot with cos(lat) aspect correction; segment breaks marked; north arrow; square scale grid fitted to the map frame (toggle under **Hold Enter → Settings → Grid**, Map view only). Your **current GPS position** and all **waypoints** are always drawn — even with no trail recording — so the map is useful standalone | +| **Map** | Auto-fit dot-and-line plot with cos(lat) aspect correction; segment breaks marked; north arrow; square scale grid fitted to the map frame (toggle under **Hold Enter → Settings → Grid**, Map view only). Your **current GPS position**, all **waypoints**, and any **live-tracked contacts** (positions shared via Live Share) are always drawn — even with no trail recording — so the map is useful standalone. The active **Locator/Nav target**, if set, is drawn as a **flag** on top (folded into the frame so it's never off-screen). Point labels are auto-placed to avoid overlapping (a crowded cluster drops some labels rather than smearing them) | | **List** | Per-point rows showing local time (HH:MM) and delta distance from the previous point; segment-start rows show `start`; scroll with **UP/DOWN** | | OLED | E-Ink | | :-----------------------: | :-----------------------: | -| ![](./tls_scr_5_oled.png) | ![](./tls_scr_5_eink.png) | +| ![](./trail_map_oled.png) | ![](./trail_map_eink.png) | **Hold Enter** opens the **action menu**. It is two-level — a short main menu, plus **Trail file…** and **Settings…** submenus. **Cancel/Back** in a submenu returns to the main menu. @@ -101,6 +107,7 @@ Cycle views with **LEFT / RIGHT**: | Start / Stop tracking | Begin or end a recording session | | Mark here | Drop a waypoint at the current GPS fix (see below) | | Waypoints… | Open the waypoint list / navigation / add-by-coords | +| Share my pos | Send your current position as a one-shot `[LOC]` message — pick a contact or channel (see **Live Share**) | | Trail file… | Open the file submenu (below) | | Settings… | Open the settings submenu (below) | @@ -116,14 +123,17 @@ Cycle views with **LEFT / RIGHT**: **Settings…** (values cycle with **LEFT/RIGHT** or **Enter**; shown only where they apply): -| Item | Available | Action | -| -------- | --------- | ------------------------------------------------------- | -| Min dist | always | Sample gate, 4 levels — metric: 5/10/25/100 m, imperial: 15/30/75/300 ft | -| Readout | Summary view | Summary shows Speed or Pace (in the global unit system) | -| Grid | Map view | Toggle scale grid on the map | +| Item | Available | Action | +| ---------- | --------- | ------------------------------------------------------- | +| Min dist | always | Sample gate, 4 levels — metric: 5/10/25/100 m, imperial: 15/30/75/300 ft | +| Auto-pause | always | Off / 1 / 2 / 5 min — auto-freeze the trail after a stop, resume on movement (see below) | +| Readout | Summary view | Summary shows Speed or Pace (in the global unit system) | +| Grid | Map view | Toggle scale grid on the map | (Trail file… appears only when a live or saved trail exists. Mark here needs a GPS fix; Waypoints is always available.) +**Auto-pause** — when set, a recording trail automatically **pauses** after the device has stayed within ~15 m of one spot for the chosen delay: the elapsed timer and point sampling both freeze, and the map line breaks across the idle gap. It **resumes on its own** as soon as you move again. This keeps a stop (a break, a meal, parking) out of your distance and average-speed stats without you having to remember to stop and restart tracking. A paused trail is still "on" (the **G** marker keeps blinking) — the Summary **Status** row shows `paused`. The stop is detected with its own coarse movement gate, independent of **Min dist**, so GPS jitter while you're parked doesn't keep it awake. + ### Waypoints A waypoint is a saved spot — your car, camp, a water source — that you can navigate back to later. Waypoints are **independent of the trail**: they live in their own flash file (`/waypoints`), survive a reboot, and are **not** cleared by *Reset trail*. Up to 16 can be stored — the Waypoints list header shows how many are in use (e.g. `WAYPOINTS 3/16`). @@ -132,7 +142,14 @@ A waypoint is a saved spot — your car, camp, a water source — that you can n **Adding by coordinates** — open **Hold Enter → Waypoints** and select the **+ Add by coords** row (always the last entry in the list). This creates a waypoint without being there — no GPS fix required (handy for a meeting point or a spot read off a map). It opens a small form with three editable rows plus **Save**: -- **Lat** / **Lon** — **Enter** opens the keyboard to type the value in decimal degrees (magnitude only; the keyboard has no minus sign), and **LEFT/RIGHT** toggles the hemisphere — N/S for latitude, E/W for longitude. +| OLED | E-Ink | +| :------------------------: | :------------------------: | +| ![](./waypoint_add_oled.png) | ![](./waypoint_add_eink.png) | + + + + +- **Lat** / **Lon** — **Enter** opens the digit-by-digit scroll editor (the same widget as the radio frequency field): **LEFT/RIGHT** move the cursor between decimal places, **UP/DOWN** change the digit under it, **Enter** confirms. With the editor closed, **LEFT/RIGHT** on the row toggles the hemisphere — N/S for latitude, E/W for longitude. - **Label** — **Enter** to type a name (blank → auto `WP`). - **Save** — validates the range and stores the waypoint. Missing or out-of-range values report a brief error. @@ -147,9 +164,15 @@ A waypoint is a saved spot — your car, camp, a water source — that you can n Hdg: 090° E ← your current course over ground (-- when stationary) ``` +| OLED | E-Ink | +| :------------------------: | :------------------------: | +| ![](./waypoint_nav_oled.png) | ![](./waypoint_nav_eink.png) | + + + There is no magnetometer, so the screen shows two *absolute* bearings and you compare them: target at 145°, travelling at 90° → bear right. The **Hdg** line is derived from GPS movement (see Compass) and reads `--` until you move. -**Managing** — **Hold Enter** on a waypoint row offers **Rename** / **Delete** / **Send** (the *Trail start* row is navigate-only). Delete removes one at a time; there is no bulk clear. +**Managing** — **Hold Enter** on a waypoint row offers **Rename** / **Delete** / **Send** / **Set as target** (the *Trail start* row is navigate-only). **Set as target** pins the waypoint as the active **Locator/Nav target** in one step (see **Locator**). Delete removes one at a time; there is no bulk clear. **Sharing** — **Send** hands the waypoint to the Messages screen: pick a contact or channel, and the message is pre-filled as `[WAY],