fix(journey): swap skill/memory inks so drillable rows read as clickable

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.
This commit is contained in:
Brooklyn Nicholson 2026-06-30 11:54:16 -05:00
parent 2f7b6cf298
commit abb11c86b9
3 changed files with 9 additions and 5 deletions

View file

@ -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),

View file

@ -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()

View file

@ -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)
}
}