From abb11c86b98a1035cdf799c90abb622975ff3cf9 Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Tue, 30 Jun 2026 11:54:16 -0500 Subject: [PATCH] fix(journey): swap skill/memory inks so drillable rows read as clickable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Memories are the only drillable rows, so give them the primary "clickable" ink and demote skills (dead-ends) to the muted complement — previously the non-openable skills wore the link-looking primary color. Flipped in both the TUI and CLI palettes for parity. --- agent/learning_graph_render.py | 6 ++++-- tests/agent/test_learning_graph_render.py | 2 +- ui-tui/src/lib/starmapPalette.ts | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/agent/learning_graph_render.py b/agent/learning_graph_render.py index 9b91d1bd2..ab705f609 100644 --- a/agent/learning_graph_render.py +++ b/agent/learning_graph_render.py @@ -188,8 +188,10 @@ def derive_palette(primary_hex: str, *, dark: bool = True) -> dict[str, str]: bg = (8, 8, 12) if dark else (250, 250, 250) return { "primary": primary_hex, - "skill": rgb_to_hex(mix_rgb(primary, base, 0.12 if dark else 0.18)), - "memory": rgb_to_hex(mix_rgb(_complementary_ink(primary), bg, 0.45)), + # Memories are drillable → primary "clickable" ink; skills are dead-ends + # → muted complement. + "memory": rgb_to_hex(mix_rgb(primary, base, 0.12 if dark else 0.18)), + "skill": rgb_to_hex(mix_rgb(_complementary_ink(primary), bg, 0.45)), "label": rgb_to_hex(mix_rgb(base, bg, 0.35)), "dim": rgb_to_hex(mix_rgb(base, bg, 0.7)), "bg": rgb_to_hex(bg), diff --git a/tests/agent/test_learning_graph_render.py b/tests/agent/test_learning_graph_render.py index 9400779c8..e6fb090d5 100644 --- a/tests/agent/test_learning_graph_render.py +++ b/tests/agent/test_learning_graph_render.py @@ -178,7 +178,7 @@ def test_format_date_handles_missing(): def test_derive_palette_distinct_memory_hue(): pal = render.derive_palette("#FFD700", dark=True) assert pal["skill"].startswith("#") and pal["memory"].startswith("#") - # Memory is a complement of the gold primary → clearly different ink. + # Skills wear the muted complement, memories the primary ink → distinct. assert pal["memory"].lower() != pal["skill"].lower() diff --git a/ui-tui/src/lib/starmapPalette.ts b/ui-tui/src/lib/starmapPalette.ts index 749d5ce64..7eddeae5a 100644 --- a/ui-tui/src/lib/starmapPalette.ts +++ b/ui-tui/src/lib/starmapPalette.ts @@ -112,8 +112,10 @@ export function deriveStarmapPalette(primaryHex: string, fgHex: string): Starmap bg, dim: mix(base, bg, 0.7), label: mix(base, bg, 0.35), - memory: mix(complementaryInk(primary), bg, 0.45), - skill: mix(primary, base, dark ? 0.12 : 0.18) + // Memories are drillable, so they wear the primary "clickable" ink; skills + // are dead-ends and get the muted complement. + memory: mix(primary, base, dark ? 0.12 : 0.18), + skill: mix(complementaryInk(primary), bg, 0.45) } }