This commit is contained in:
MarekZegare4
2026-06-25 17:07:00 +00:00
parent 72c641725d
commit c84d8f64cc
53 changed files with 426 additions and 73 deletions

File diff suppressed because one or more lines are too long

View File

@@ -2,86 +2,86 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://meshcore-dev.github.io/meshcore/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/cli_commands/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/companion_protocol/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/docs/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/faq/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/kiss_modem_protocol/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/nrf52_power_management/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/number_allocations/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/packet_format/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/payloads/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/qr_codes/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/stats_binary_frames/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/terminal_chat_cli/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/design/nearby_redesign/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/design/trail_redesign/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/solo_features/clock_screen/clock_screen/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/solo_features/favourites_dial/favourites_dial/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/solo_features/message_screen/message_screen/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/solo_features/screen_lock/screen_lock/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/solo_features/settings_screen/settings_screen/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
<url>
<loc>https://meshcore-dev.github.io/meshcore/solo_features/tools_screen/tools_screen/</loc>
<lastmod>2026-06-23</lastmod>
<lastmod>2026-06-25</lastmod>
</url>
</urlset>

Binary file not shown.

View File

@@ -1464,8 +1464,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../clk_scr_1_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../clk_scr_1_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1489,8 +1489,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../clk_scr_2_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../clk_scr_2_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../fields_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../fields_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1569,6 +1569,22 @@
<p>Sensor fields show <code>--</code> when the sensor is not connected or has no data.</p>
<hr />
<h3 id="configuring-fields">Configuring fields</h3>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./config_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./config_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Dashboard Config — three field slots cycled with LEFT/RIGHT -->
<p><strong>Hold Enter</strong> (or press the <strong>Context menu</strong> key) on the Clock page to open the Dashboard Config screen, where each of the three field slots can be cycled with <strong>LEFT/RIGHT</strong>.</p>

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1508,8 +1508,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../fav_dial_1_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../fav_dial_1_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1535,6 +1535,22 @@
<li>Recent DM contacts — listed after</li>
<li>All remaining chat contacts — fallback when the first two tiers are empty (e.g. fresh install before any DMs)</li>
</ol>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./picker_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./picker_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Pin-to-dial contact picker (favourites first, then recent DMs, then all contacts) -->
<p>Select a contact to pin it to that slot.</p>
<p><strong>From a DM conversation</strong><strong>Hold Enter</strong> context menu <strong>Pin to dial</strong>, then choose a slot from the slot picker (Slot 16, showing the current occupant name or "empty").</p>
<p>If the selected contact is already pinned in another slot, it is moved to the new slot automatically.</p>

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -1530,8 +1530,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../mes_scr_1_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../mes_scr_1_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1547,8 +1547,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../mes_scr_2_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../mes_scr_2_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../compose_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../compose_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1621,8 +1621,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../mes_scr_3_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../mes_scr_3_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../history_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../history_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1639,8 +1639,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../mes_scr_4_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../mes_scr_4_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../fullscreen_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../fullscreen_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1655,8 +1655,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../mes_scr_5_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../mes_scr_5_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../fullscreen_menu_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../fullscreen_menu_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1678,8 +1678,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../mes_scr_6_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../mes_scr_6_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../ctx_contact_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../ctx_contact_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1721,8 +1721,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../mes_scr_7_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../mes_scr_7_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../ctx_channel_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../ctx_channel_eink.png" /></td>
</tr>
</tbody>
</table>

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -1464,8 +1464,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../lck_scr_1_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../lck_scr_1_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1509,8 +1509,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../lck_scr_2_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../lck_scr_2_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../screen_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../screen_eink.png" /></td>
</tr>
</tbody>
</table>

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1552,8 +1552,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../set_scr_1_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../set_scr_1_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1677,8 +1677,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../set_scr_2_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../set_scr_2_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../homepages_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../homepages_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1741,6 +1741,22 @@
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./radio_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./radio_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Radio — preset popup (pick/save/delete) and/or the digit-by-digit frequency editor -->
<p>The <strong>repeater</strong> mode and its flood filters live on their own screen — see <strong>Tools Repeater</strong>.</p>
<hr />
<h3 id="system">System</h3>

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1357,6 +1357,28 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#live-share" class="md-nav__link">
<span class="md-ellipsis">
Live Share
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#locator" class="md-nav__link">
<span class="md-ellipsis">
Locator
</span>
</a>
</li>
<li class="md-nav__item">
@@ -1583,6 +1605,28 @@
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#live-share" class="md-nav__link">
<span class="md-ellipsis">
Live Share
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#locator" class="md-nav__link">
<span class="md-ellipsis">
Locator
</span>
</a>
</li>
<li class="md-nav__item">
@@ -1696,12 +1740,12 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../tls_scr_1_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../tls_scr_1_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../overview_eink.png" /></td>
</tr>
</tbody>
</table>
<p>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 <strong>UP/DOWN</strong> and press <strong>Enter</strong> to open a tool.</p>
<p>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 <strong>Location</strong> / <strong>Comms</strong> / <strong>System</strong> sections — the same fold-in-place model as Settings; Tools always opens folded back to the section list. Navigate with <strong>UP/DOWN</strong>, press <strong>Enter</strong> on a section header to expand or collapse it, or on a tool to open it.</p>
<hr />
<h2 id="nearby-nodes">Nearby Nodes</h2>
<table>
@@ -1713,8 +1757,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../tls_scr_2_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../tls_scr_2_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../nearby_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../nearby_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1754,7 +1798,7 @@
</tr>
</tbody>
</table>
<p>Select a node to see its coordinates, distance, bearing with cardinal direction, type, and last-heard time.</p>
<p>Select a node to see its coordinates, distance, bearing with cardinal direction, type, and last-heard time. A node that is <strong>broadcasting its position</strong> via Live Share is marked with a <strong>♦ diamond</strong> beside its name in the list (the same marker the map uses), and its detail shows <code>Sharing pos:</code> with the share age and whether it's DM-verified or channel-only.</p>
<p><strong>Hold Enter</strong> opens the same <strong>Options</strong> menu everywhere (list and detail), in a fixed order — only the actions that apply appear:</p>
<table>
<thead>
@@ -1766,7 +1810,7 @@
<tbody>
<tr>
<td>Navigate</td>
<td>selected node has GPS</td>
<td>selected node has GPS — for a node sharing live position, the view follows it as it moves and adds an ETA line</td>
</tr>
<tr>
<td>Ping</td>
@@ -1777,6 +1821,10 @@
<td>selected node has GPS</td>
</tr>
<tr>
<td>Set as target</td>
<td>selected node has GPS <strong>and</strong> a public key — pins it as the active <strong>Locator/Nav target</strong> right away (see <strong>Locator</strong>)</td>
</tr>
<tr>
<td>Sort: Dist/Recent</td>
<td>browsing stored nodes — <strong>LEFT/RIGHT</strong> on the row flips distance ↔ last-heard in place</td>
</tr>
@@ -1797,8 +1845,8 @@
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../tls_scr_2_ping_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../tls_scr_2_ping_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../nearby_ping_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../nearby_ping_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1818,8 +1866,8 @@ Combined with <strong>Auto-Advert</strong> on the other device, Nearby Nodes bec
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../tls_scr_3_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../tls_scr_3_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../nearby_scan_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../nearby_scan_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1839,12 +1887,17 @@ Combined with <strong>Auto-Advert</strong> on the other device, Nearby Nodes bec
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../tls_scr_4_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../tls_scr_4_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../trail_summary_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../trail_summary_eink.png" /></td>
</tr>
</tbody>
</table>
<p>Records your route in a RAM ring buffer (up to 512 points, sampled every 1 s). Tracking runs in the background — a blinking <strong>G</strong> appears in the status bar. The trail survives display auto-off but is lost on reboot unless saved to flash first.</p>
<p>Records your route in a RAM ring buffer (up to 512 points, sampled every 1 s). The track is <strong>simplified as it's recorded</strong> — a long straight stretch is kept as just its two endpoints while curves keep their detail (bounded to within the <strong>Min dist</strong> 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 <strong>G</strong> appears in the status bar. The trail survives display auto-off but is lost on reboot unless saved to flash first.</p>
<blockquote>
<p>[!TIP]
The <strong>Map</strong> view is also reachable directly from the home carousel — the <strong>Map</strong> page shows a live mini-preview (your position, trail, and tracked contacts) with a <strong>north marker</strong> and a bottom-left <strong>scale tick</strong>. The status line below reads <code>Track:N</code> (tracked-node count) and, when you have a fix and at least one tracked contact, an <strong>arrow + distance</strong> to the <strong>nearest</strong> one (e.g. <code>Track:3 →120m</code>). If a <strong>Locator/Nav target</strong> is set it's drawn as a <strong>flag marker</strong> (see <strong>Locator</strong>). Press <strong>Enter</strong> to open the full Trail Map; <strong>Hold Enter</strong> shares your position (see <strong>Live Share</strong>); <strong>Back</strong> returns home.</p>
</blockquote>
<p>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 <strong>GPS</strong> is turned on in Settings; it's hidden the rest of the time rather than sitting there empty.</p>
<p>Cycle views with <strong>LEFT / RIGHT</strong>:</p>
<table>
<thead>
@@ -1860,7 +1913,7 @@ Combined with <strong>Auto-Advert</strong> on the other device, Nearby Nodes bec
</tr>
<tr>
<td><strong>Map</strong></td>
<td>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 <strong>Hold Enter → Settings → Grid</strong>, Map view only). Your <strong>current GPS position</strong> and all <strong>waypoints</strong> are always drawn — even with no trail recording — so the map is useful standalone</td>
<td>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 <strong>Hold Enter → Settings → Grid</strong>, Map view only). Your <strong>current GPS position</strong>, all <strong>waypoints</strong>, and any <strong>live-tracked contacts</strong> (positions shared via Live Share) are always drawn — even with no trail recording — so the map is useful standalone. The active <strong>Locator/Nav target</strong>, if set, is drawn as a <strong>flag</strong> 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)</td>
</tr>
<tr>
<td><strong>List</strong></td>
@@ -1877,8 +1930,8 @@ Combined with <strong>Auto-Advert</strong> on the other device, Nearby Nodes bec
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../tls_scr_5_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../tls_scr_5_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../trail_map_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../trail_map_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -1905,6 +1958,10 @@ Combined with <strong>Auto-Advert</strong> on the other device, Nearby Nodes bec
<td>Open the waypoint list / navigation / add-by-coords</td>
</tr>
<tr>
<td>Share my pos</td>
<td>Send your current position as a one-shot <code>[LOC]</code> message — pick a contact or channel (see <strong>Live Share</strong>)</td>
</tr>
<tr>
<td>Trail file…</td>
<td>Open the file submenu (below)</td>
</tr>
@@ -1961,6 +2018,11 @@ Combined with <strong>Auto-Advert</strong> on the other device, Nearby Nodes bec
<td>Sample gate, 4 levels — metric: 5/10/25/100 m, imperial: 15/30/75/300 ft</td>
</tr>
<tr>
<td>Auto-pause</td>
<td>always</td>
<td>Off / 1 / 2 / 5 min — auto-freeze the trail after a stop, resume on movement (see below)</td>
</tr>
<tr>
<td>Readout</td>
<td>Summary view</td>
<td>Summary shows Speed or Pace (in the global unit system)</td>
@@ -1973,12 +2035,29 @@ Combined with <strong>Auto-Advert</strong> on the other device, Nearby Nodes bec
</tbody>
</table>
<p>(Trail file… appears only when a live or saved trail exists. Mark here needs a GPS fix; Waypoints is always available.)</p>
<p><strong>Auto-pause</strong> — when set, a recording trail automatically <strong>pauses</strong> 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 <strong>resumes on its own</strong> 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 <strong>G</strong> marker keeps blinking) — the Summary <strong>Status</strong> row shows <code>paused</code>. The stop is detected with its own coarse movement gate, independent of <strong>Min dist</strong>, so GPS jitter while you're parked doesn't keep it awake.</p>
<h3 id="waypoints">Waypoints</h3>
<p>A waypoint is a saved spot — your car, camp, a water source — that you can navigate back to later. Waypoints are <strong>independent of the trail</strong>: they live in their own flash file (<code>/waypoints</code>), survive a reboot, and are <strong>not</strong> cleared by <em>Reset trail</em>. Up to 16 can be stored — the Waypoints list header shows how many are in use (e.g. <code>WAYPOINTS 3/16</code>).</p>
<p><strong>Dropping a waypoint</strong><strong>Hold Enter → Mark here</strong>. This captures the current GPS fix and opens the on-screen keyboard for a short label (up to 11 characters — e.g. <code>CAR</code>, <code>CAMP</code>, <code>H2O</code>). Leaving it blank auto-names it <code>WP1</code>, <code>WP2</code>, … Marking works whether or not the trail is being recorded; it needs a GPS fix (otherwise it reports <em>No GPS fix</em>).</p>
<p><strong>Adding by coordinates</strong> — open <strong>Hold Enter → Waypoints</strong> and select the <strong>+ Add by coords</strong> 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 <strong>Save</strong>:</p>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./waypoint_add_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./waypoint_add_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Add-by-coords form — Lat/Lon scroll editor, hemisphere toggle, Label, Save -->
<ul>
<li><strong>Lat</strong> / <strong>Lon</strong><strong>Enter</strong> opens the keyboard to type the value in decimal degrees (magnitude only; the keyboard has no minus sign), and <strong>LEFT/RIGHT</strong> toggles the hemisphere — N/S for latitude, E/W for longitude.</li>
<li><strong>Lat</strong> / <strong>Lon</strong><strong>Enter</strong> opens the digit-by-digit scroll editor (the same widget as the radio frequency field): <strong>LEFT/RIGHT</strong> move the cursor between decimal places, <strong>UP/DOWN</strong> change the digit under it, <strong>Enter</strong> confirms. With the editor closed, <strong>LEFT/RIGHT</strong> on the row toggles the hemisphere — N/S for latitude, E/W for longitude.</li>
<li><strong>Label</strong><strong>Enter</strong> to type a name (blank → auto <code>WP&lt;n&gt;</code>).</li>
<li><strong>Save</strong> — validates the range and stores the waypoint. Missing or out-of-range values report a brief error.</li>
</ul>
@@ -1989,8 +2068,24 @@ Combined with <strong>Auto-Advert</strong> on the other device, Nearby Nodes bec
To: 145° SE ← absolute bearing to the target
Hdg: 090° E ← your current course over ground (-- when stationary)
</code></pre>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./waypoint_nav_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./waypoint_nav_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Waypoints navigation view — target label, distance, To/Hdg bearings (shared with Nearby/message Navigate) -->
<p>There is no magnetometer, so the screen shows two <em>absolute</em> bearings and you compare them: target at 145°, travelling at 90° → bear right. The <strong>Hdg</strong> line is derived from GPS movement (see Compass) and reads <code>--</code> until you move.</p>
<p><strong>Managing</strong><strong>Hold Enter</strong> on a waypoint row offers <strong>Rename</strong> / <strong>Delete</strong> / <strong>Send</strong> (the <em>Trail start</em> row is navigate-only). Delete removes one at a time; there is no bulk clear.</p>
<p><strong>Managing</strong><strong>Hold Enter</strong> on a waypoint row offers <strong>Rename</strong> / <strong>Delete</strong> / <strong>Send</strong> / <strong>Set as target</strong> (the <em>Trail start</em> row is navigate-only). <strong>Set as target</strong> pins the waypoint as the active <strong>Locator/Nav target</strong> in one step (see <strong>Locator</strong>). Delete removes one at a time; there is no bulk clear.</p>
<p><strong>Sharing</strong><strong>Send</strong> hands the waypoint to the Messages screen: pick a contact or channel, and the message is pre-filled as <code>[WAY]&lt;lat&gt;,&lt;lon&gt; &lt;label&gt;</code> (e.g. <code>[WAY]37.42123,-122.08456 CAR</code>) for you to confirm or edit before sending. On the receiving device, opening that message and <strong>Hold Enter → Navigate / Save waypoint</strong> turns it back into a navigable point (see <em>Messages Fullscreen message view</em>). The format is plain text, so it stays readable on other firmware and the phone app.</p>
<h3 id="downloading-gpx">Downloading GPX</h3>
<p><strong>Easiest — <a href="https://marekzegare4.github.io/solo-tools/">Solo GPX Downloader</a></strong> (browser-based, no install):</p>
@@ -2022,7 +2117,185 @@ If the companion app is connected via <strong>BLE</strong>, the export is safe
<strong>Audible connection heartbeat</strong> — the device chirps each time it <em>receives</em> an advert from any node (sound chosen in <strong>Settings Sound AD sound</strong>). With Auto-Advert running on both ends (e.g. two people on a hike), each hearing the other's periodic advert becomes a hands-free "in range" beep — no need to look at the screen. It fires for <strong>every</strong> received advert, so in a busy mesh it can get chatty; choose <code>None</code> in <strong>Settings Sound AD sound</strong> to silence just this event, or set <strong>Settings Sound Advert scope</strong> to <code>Zero-hop</code> to limit it to local adverts only. You can also set <strong>Settings Sound Buzzer</strong> to <em>Off</em> (or <em>Auto</em>, which mutes while a companion app is connected) to silence all buzzer output.</p>
</blockquote>
<hr />
<h2 id="live-share">Live Share</h2>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./liveshare_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./liveshare_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Live Share screen — Track loc / Auto share / To / Move / Min gap / Heartbeat rows -->
<p>Share your live position over the mesh <strong>as ordinary chat messages</strong>, and put other people who do the same on your map. A position is sent as a <code>[LOC]&lt;lat&gt;,&lt;lon&gt;</code> message — the same coordinate format waypoints use, so it stays readable on other firmware and the phone app (it just looks like a coordinate to anything that doesn't know the tag).</p>
<p>This is <strong>independent of Auto-Advert</strong> and runs alongside it: Auto-Advert announces your <em>presence</em> as a 0-hop beacon for Nearby Nodes, while Live Share sends your <em>position</em> to a specific channel or contact you choose.</p>
<p>The tool holds both directions of sharing in one flat list. Navigate with <strong>UP/DOWN</strong>, change a value with <strong>LEFT/RIGHT</strong> (or <strong>Enter</strong>); <strong>Cancel/Back</strong> saves and returns to Tools.</p>
<table>
<thead>
<tr>
<th>Setting</th>
<th>Options</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Track loc</td>
<td>ON / OFF</td>
<td>Receive incoming <code>[LOC]</code> shares (DM, monitored channels, and room-server posts) and pin those senders on the map / in Nearby. Off by default.</td>
</tr>
<tr>
<td>Auto share</td>
<td>ON / OFF</td>
<td>Periodically broadcast <strong>your own</strong> position to the target below while you move.</td>
</tr>
<tr>
<td>To</td>
<td>channel or contact</td>
<td><strong>Enter</strong> opens the Messages recipient chooser to pick the target channel or DM contact.</td>
</tr>
<tr>
<td>Move</td>
<td>50 / 100 / 250 / 500 m</td>
<td>Movement gate — only send after you've moved at least this far since the last share.</td>
</tr>
<tr>
<td>Min gap</td>
<td>30 s / 1 / 2 / 5 min</td>
<td>Minimum time between sends, so fast movement can't flood the channel.</td>
</tr>
<tr>
<td>Heartbeat</td>
<td>Off / 5 / 15 min</td>
<td>Optional keep-alive: re-send even while stationary, so the other end knows you're still there.</td>
</tr>
</tbody>
</table>
<p><strong>How auto-share decides to send.</strong> With <strong>Auto share</strong> on, the device checks a few times a minute: it transmits when you've moved at least <strong>Move</strong> metres <em>and</em> at least <strong>Min gap</strong> has passed since the last send — so a stationary device stays silent unless a <strong>Heartbeat</strong> is set. It also sends once immediately when you enable sharing (or change the target), so the other end gets a fresh fix right away.</p>
<p><strong>Receiving.</strong> With <strong>Track loc</strong> on, incoming <code>[LOC]</code> messages update a small live table (up to 16 nodes, entries expire ~20 min after the last update). DM shares are keyed by the sender's public key (reliable); channel and room-server shares are keyed by name (best-effort, since channel names are unsigned and a room post only carries a short sender prefix). Tracked nodes appear on the <strong>Trail Map</strong> as a filled diamond with the first two characters of their name, and in <strong>Nearby Nodes</strong> with their live distance/bearing.</p>
<p><strong>One-shot share.</strong> To send your position once without enabling auto-share, use <strong>Tools Trail → Hold Enter → Share my pos</strong> — it builds a <code>[LOC]</code> message and hands it to the Messages screen to pick a recipient. There's also a shortcut from the home <strong>Map</strong> page: <strong>Hold Enter</strong> sends an immediate position update to your Live Share target while auto-sharing is on (toast <code>Position shared</code>), or opens the recipient picker if it isn't — so you never broadcast to a default channel by accident.</p>
<hr />
<h2 id="locator">Locator</h2>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./locator_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./locator_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Locator screen with a target set (e.g. "@Bob (5m)"), radius/mode/beeper rows -->
<p>A single <strong>geofence</strong> that beeps and shows an alert when you cross <strong>into</strong> or <strong>out of</strong> a radius. The target can be a <strong>saved waypoint</strong> (a fixed place — "tell me when I'm back at camp") or a <strong>live contact</strong> (a person sharing their position via Live Share — "alert me when my friend gets near / falls behind"). A waypoint target is a <strong>snapshot</strong> (coordinate + label copied), so it keeps working even if you later edit or delete that waypoint; a contact target follows the person's latest shared position.</p>
<p>Navigate with <strong>UP/DOWN</strong>, change a value with <strong>LEFT/RIGHT</strong> (or <strong>Enter</strong>); <strong>Cancel/Back</strong> saves and returns to Tools.</p>
<table>
<thead>
<tr>
<th>Setting</th>
<th>Options</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Alert</td>
<td>ON / OFF</td>
<td>Master switch. Enabling without a target prompts you to pick one.</td>
</tr>
<tr>
<td>Target</td>
<td>none / person / waypoint</td>
<td><strong>Enter</strong> opens a picker — <strong>None</strong> first (clears the target), then <strong>favourites</strong> (offered even with no known position yet, so you can arm ahead of time), then any other contact with a currently-resolvable position (live-sharing <em>or</em> just last-advertised, e.g. a repeater), then waypoints; <strong>UP/DOWN</strong> + <strong>Enter</strong> to choose. <strong>LEFT/RIGHT</strong> quick-cycles the same set in place, including back to <strong>None</strong>. A person is shown with an <code>@</code> prefix, plus a compact <strong>age tag</strong> (e.g. <code>@Bob (5m)</code>) when the position is last-advertised rather than a live share. Shows <code>none</code> until set.</td>
</tr>
<tr>
<td>Radius</td>
<td>50 / 100 / 250 / 500 m / 1 km</td>
<td>Geofence size.</td>
</tr>
<tr>
<td>Mode</td>
<td>Arrive / Leave / Both</td>
<td>Which crossing fires the alert — entering the radius, leaving it, or both.</td>
</tr>
<tr>
<td>Beeper</td>
<td>ON / OFF</td>
<td>Optional homing tone — shown only in <strong>Arrive</strong> / <strong>Both</strong> modes (see below).</td>
</tr>
</tbody>
</table>
<p><strong>Crossing alert.</strong> When armed with a target, the device watches its own GPS fix and fires the alert (a short melody plus an on-screen message) the moment you cross the radius, according to <strong>Mode</strong>. The wording adapts to the target — <code>Arrived</code> / <code>Left</code> for a waypoint, <code>Near</code> / <code>Away</code> for a person. The edge has a little hysteresis so a fix hovering right on the boundary doesn't chatter, and the first reading after arming only seeds the in/out state — it won't fire spuriously just because you armed it while already inside.</p>
<p><strong>Following a person.</strong> Pick a <strong>favourite</strong> (or any contact with a known position) as the target and the geofence tracks the distance <em>between you and them</em>, so it works even while both of you move. The position is resolved with a fixed precedence: an <strong>active live <code>[LOC]</code> share</strong> wins, and with no current share it <strong>falls back to the contact's last-advertised GPS position</strong> — so a rarely-updating but stationary node (a repeater, or someone who shared a fix once) still works as a target. You can arm it <strong>ahead of time</strong> — choosing a favourite locks onto their identity (pubkey), and the alert starts working as soon as a position is known. Live following requires a <strong>DM</strong> share (a channel share carries no stable identity to lock onto); the last-advertised fallback works for any contact regardless.</p>
<p><strong>Proximity beeper.</strong> With <strong>Beeper</strong> on, the device also ticks while you're inside the radius and <strong>shortens the gap between ticks the closer you get to the target</strong> — slow near the edge, rapid near the centre — like a homing beeper guiding you to the exact spot. It's silent outside the radius. Because the beeper is its own opt-in toggle, turning it on <strong>overrides the global buzzer mute</strong> (<strong>Settings Sound Buzzer</strong>) — it's an explicit "I want to hear this". Since homing only makes sense while you're approaching a target, the <strong>Beeper</strong> row appears only in <strong>Arrive</strong> or <strong>Both</strong> mode — it's hidden in <strong>Leave</strong>-only mode, and stays silent there even if it was switched on earlier. Otherwise it's independent of the crossing alert (which does follow the mute), so you can use either or both.</p>
<p><strong>Setting the target from anywhere.</strong> Besides this screen's picker, the <em>same</em> active target can be set in one step with <strong>Set as target</strong> from <strong>Nearby Nodes</strong>' or <strong>Waypoints</strong>' own <strong>Hold Enter</strong> menu — handy so you don't need a detour through Tools. Picking from this screen's picker saves on exit (so <strong>LEFT/RIGHT</strong> cycling stays cheap); the per-item shortcuts save immediately and confirm with a <code>Target set</code> toast.</p>
<p><strong>On the map.</strong> Whatever the active target is — person or waypoint — it's drawn as a <strong>flag marker</strong> on both the home <strong>Map</strong> preview and the full <strong>Trail Map</strong>, on top of any waypoint/contact it overlaps and folded into the frame so it never sits off-screen. This shows even when the <strong>Alert</strong> master switch is off, so a target you set purely to navigate to still appears.</p>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./locator_picker_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./locator_picker_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: PICK TARGET picker — None, favourites, a last-advertised contact with age tag (e.g. "@Bob (5m)"), and waypoints -->
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./map_target_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./map_target_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Trail Map (or home Map preview) with the active-target flag marker visible -->
<blockquote>
<p>[!TIP]
Mark the spot first with <strong>Tools Trail → Hold Enter → Mark here</strong> (or <strong>+ Add by coords</strong>), then set it as the Locator target.</p>
</blockquote>
<hr />
<h2 id="compass">Compass</h2>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./compass_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./compass_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Compass — scrolling heading tape with centre pointer + large degrees/cardinal readout -->
<p>A heads-up GPS compass. The L1 has no magnetometer, so the heading is the <strong>course over ground</strong> — derived from how your GPS position moves over the last few seconds. The display is a horizontal <strong>heading tape</strong>: a fixed travel-direction pointer sits at the centre and the N..E..S..W scale scrolls underneath it as you turn, so whatever is under the pointer is your current course. A large numeric readout below shows that course in degrees and cardinal (e.g. <code>145° SE</code>).</p>
<p>Because the heading comes from movement, it only updates while you are actually moving: standing still shows <em>move to set heading</em> (and navigation's <strong>Hdg</strong> line reads <code>--</code>). Gross GPS jumps are rejected so a single bad fix can't swing the heading. The heading source runs whenever there's a GPS fix — recording a trail is <strong>not</strong> required.</p>
<hr />
@@ -2036,8 +2309,8 @@ If the companion app is connected via <strong>BLE</strong>, the export is safe
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../tls_scr_6_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../tls_scr_6_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../ringtone_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../ringtone_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -2140,8 +2413,8 @@ If the companion app is connected via <strong>BLE</strong>, the export is safe
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="../tls_scr_7_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../tls_scr_7_eink.png" /></td>
<td style="text-align: center;"><img alt="" src="../autoreply_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="../autoreply_eink.png" /></td>
</tr>
</tbody>
</table>
@@ -2241,6 +2514,22 @@ If the companion app is connected via <strong>BLE</strong>, the export is safe
<p>Commands also work on the <strong>monitored channel</strong> (the one selected for channel mode) — anyone there can query the node. Channel replies are broadcast to everyone, so unlike DM commands they respect quiet hours and use the shared per-channel cooldown. DM commands use the per-contact throttle.</p>
<hr />
<h2 id="diagnostics">Diagnostics</h2>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./diagnostics_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./diagnostics_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Diagnostics — live device/mesh stats rows (uptime, rx/tx counters, heap, RSSI/SNR, queue, errors) -->
<p>A single read-only screen of live device and mesh stats, refreshed once a second. On a small OLED the rows scroll with <strong>UP/DOWN</strong>; on a larger e-ink display they all fit at once.</p>
<table>
<thead>
@@ -2312,6 +2601,22 @@ If the companion app is connected via <strong>BLE</strong>, the export is safe
<p>The counters make the repeater behaviour observable: <strong>Forwarded</strong> confirms the node is actually relaying (not just configured to), and <strong>Pool free</strong> / <strong>Queue</strong> show whether forwarding is exhausting the packet pool. See <strong>Tools Repeater</strong> for the relaying options.</p>
<hr />
<h2 id="repeater">Repeater</h2>
<table>
<thead>
<tr>
<th style="text-align: center;">OLED</th>
<th style="text-align: center;">E-Ink</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;"><img alt="" src="./repeater_oled.png" /></td>
<td style="text-align: center;"><img alt="" src="./repeater_eink.png" /></td>
</tr>
</tbody>
</table>
<!-- screenshot pending: Repeater — toggle + Network/profile + flood-filter rows -->
<p>Turns the companion into a packet <strong>repeater</strong> while it keeps working as a normal companion — no separate firmware. By default, enabling it switches the radio to a dedicated repeater profile rather than relaying on whatever network you're chatting on (see <strong>Network</strong> below) — that matches the MeshCore community norm of repeaters sitting on a standard channel, not a private one. Loop-detection and an advert flood-depth cap are always applied. This screen keeps the toggle, the network/profile, and its flood-filter options together; live forwarding stats are on <strong>Tools Diagnostics</strong>.</p>
<p>Navigate with <strong>UP/DOWN</strong>; change a value with <strong>LEFT/RIGHT</strong> (or <strong>Enter</strong> for toggles). <strong>Cancel/Back</strong> saves and returns to Tools.</p>
<table>

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB