diff --git a/meshterm/tools/chat.py b/meshterm/tools/chat.py index fb48dd1..a0bae5d 100644 --- a/meshterm/tools/chat.py +++ b/meshterm/tools/chat.py @@ -38,7 +38,7 @@ from ..core.models import ( ) from ..services.trace_runner import NameKeyResolver, make_name_key_resolver from ..ui.chat import _MENTION, _split_channel_sender -from ..ui.menus import Lane, column_header, fit_cells, section_heading +from ..ui.menus import Lane, back_rows, column_header, fit_cells, section_heading from ..ui.theme import name_style from ..ui.tui import Choice, DeleteRequest, Separator from ..ui.widgets import _NODE_GLYPHS, channel_glyph @@ -185,8 +185,7 @@ class ChatTool(Tool): else: items.append(Separator(" no contacts yet — receive an advert first")) - items.append(Separator(" ")) - items.append(Choice(title="Back", value="__back__")) + items.extend(back_rows("__back__")) default = next( ( diff --git a/meshterm/tools/tx_optimize.py b/meshterm/tools/tx_optimize.py index bbe4b13..0b65fa5 100644 --- a/meshterm/tools/tx_optimize.py +++ b/meshterm/tools/tx_optimize.py @@ -409,7 +409,8 @@ async def _pick_target( The chosen contact name, or ``None`` if cancelled. With no other contacts, falls back to a free-text prompt so a hex key prefix can be typed. """ - from ..ui.tui import Choice, Separator + from ..ui.menus import back_rows + from ..ui.tui import Choice from ..ui.widgets import _DEFAULT_GLYPH, _NODE_GLYPHS candidates = [c for c in contacts if c.name != admin.name] @@ -435,8 +436,7 @@ async def _pick_target( key=lambda c: -(c.last_seen.timestamp() if c.last_seen else 0.0), ) ] - items.append(Separator(" ")) - items.append(Choice(title="Back", value=None)) + items.extend(back_rows(None)) choice = await ctx.ui.select( "TX optimize — measure at", items,