From dc61642419a975156a18d6fc73aab9fd76ed0698 Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Tue, 30 Jun 2026 11:15:35 -0500 Subject: [PATCH] fix(journey): only drill into items that have detail MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Skill nodes carry no body in the learning_graph payload, so opening one dead-ended on "No additional detail recorded yet." Gate Enter/→ to nodes with body (memories), mark those rows with a › affordance, and only show the "open" hint when the selected row is drillable. --- ui-tui/src/components/journey.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ui-tui/src/components/journey.tsx b/ui-tui/src/components/journey.tsx index fd4b8368262..2f325993761 100644 --- a/ui-tui/src/components/journey.tsx +++ b/ui-tui/src/components/journey.tsx @@ -205,7 +205,9 @@ export function Journey({ gw, onClose, t }: JourneyProps) { return setMode('timeline') } - if ((key.return || key.rightArrow || ch === 'l') && nodes.length) { + // Only memories carry body text; a skill row is already its own full + // detail, so don't let it drill into an empty page. + if ((key.return || key.rightArrow || ch === 'l') && activeNode?.body) { return setMode('item') } @@ -357,7 +359,7 @@ export function Journey({ gw, onClose, t }: JourneyProps) { cells={[ { color: t.color.muted, text: ` ${String(idx + 1).padStart(2, ' ')} ` }, { color: fadeInk(palette, node.style, 1), text: `${node.glyph} ${node.fullLabel || node.label}` }, - { color: t.color.muted, text: ` ${node.meta}` } + { color: t.color.muted, text: ` ${node.meta}${node.body ? ' ›' : ''}` } ]} key={`${node.label}:${idx}`} t={t} @@ -371,8 +373,8 @@ export function Journey({ gw, onClose, t }: JourneyProps) {