Paths: arrow the TX sweep title, drop dead path_str, hscroll the trophy browser

The sweep table title used ASCII ->, TraceResult.path_str was an unused
ASCII-arrow renderer, and the trophy browser truncated long walks at the
fold — SelectScreen's own hscroll now slides the highlighted row.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jean-Pierre MartineauandClaude Fable 5 committed 2026-07-26 20:31:05 -04:00
1 parent 2c04fb5b96
commit 3b1718fa4d
3 files changed
+2 -9

No files matched your search

-8
View File
@@ -539,14 +539,6 @@ class TraceResult:
return None
return min(h.snr for h in self.hops)
@property
def path_str(self) -> str:
"""A compact ``a -> b -> c`` rendering of the resolved path."""
if not self.hops:
return self.target
nodes = [h.node or f"hop{h.index}" for h in self.hops]
return " -> ".join(nodes)
def edges(self, device_label: str = LOCAL_DEVICE_LABEL) -> list["HopEdge"]:
"""Frame the per-hop SNR as directed ``origin -> destination`` edges.
+1
View File
@@ -680,6 +680,7 @@ async def open_records(ctx: "AppContext") -> dict:
items,
footer_hint="↑↓ move · Enter open · Esc back",
wrap=False,
hscroll=True, # a long walk's row slides under ←→ instead of dying at the fold
)
picked = await session.run_screen(browser)
if picked is CANCEL or picked is None or picked[0] == "back":
+1 -1
View File
@@ -1091,7 +1091,7 @@ def tx_opt_table(result: TxOptResult) -> Table:
A Rich :class:`Table` of TX level, target SNR, success rate, and sample count.
"""
table = Table(
title=f"TX sweep · {result.admin_node} -> {result.target}",
title=f"TX sweep · {result.admin_node} → {result.target}",
border_style="muted",
expand=False,
)