tests\logic.test.ts: (pass) paths under the session directory show relative, others stay [2.00ms] (pass) times read like Claude Code writes them [0.39ms] (pass) a seed always picks the same word, and an empty list picks none [0.79ms] (pass) long output keeps its head and tail and counts the rest [0.43ms] (pass) a patch counts its added and removed lines, anything else counts nothing [0.83ms] (pass) only the tools a skin can draw faithfully get a kind [0.35ms] (pass) a call summarises to the one thing worth a glance [0.70ms] (pass) tables and closed code fences are split out of a reply, and a fence keeps its table as code [1.05ms] (pass) columns narrow from the widest until the table fits, and cells pad to their side [0.43ms] (pass) a made skin lays its slots over its base, and bad drafts are refused with a reason [0.89ms] (pass) painting a slot on a built-in skin forks it into my- [0.29ms] (pass) the design tool saves, applies, changes settings and deletes [0.66ms] (pass) /skin names a skin, switches parts, and refuses what it does not know [0.48ms] (pass) stored prefs that are stale or hand-edited fall back to defaults [0.26ms] (pass) cells are read as colours, diffs, numbers, code or text [0.38ms] (pass) a vector table stays within its width and escapes what it draws [5.51ms] (pass) a patch numbers its lines on each side and marks the gap between hunks [0.40ms] (pass) a new file with an empty patch shows its content as added lines [0.59ms] (pass) shell output loses its colour codes, keeps stderr apart and folds the middle [0.64ms] (pass) code is split into comments, strings, numbers and keywords by language [0.59ms] (pass) plan limits read as 5h and 7d, and a meter warns as it fills [0.37ms] (pass) a long cell wraps on its words, breaks a word too long for the column, and caps its lines [0.59ms] (pass) short columns keep their width and long ones share the rest [0.21ms] (pass) a light palette is derived with dark text, light bands and deepened colours [0.36ms] tests\rows.test.tsx: (pass) a Bash call is a node on the terminal’s rail and an icon row on the desktop [157.32ms] (pass) an edit shows its added and removed lines [60.98ms] (pass) a failed call shows the error mark, a running one the running mark [66.67ms] (pass) tools a skin cannot redraw faithfully keep their own row [48.72ms] (pass) a folded group is one node, an expanded one keeps its rows [57.10ms] (pass) a typed prompt sits in an outline sized to its text, other senders keep their row [60.77ms] (pass) a reply with a table draws the table, a reply without one keeps its own drawing [59.55ms] (pass) the terminal spinner shimmers, the desktop one is an animated icon beside its step [63.29ms] (pass) the turn footer names the time in the skin’s words [47.78ms] (pass) the question dialog keeps Claude Code’s drawing under a band naming its topics [48.12ms] (pass) the settings pane picks a skin, switches the rail and paints a slot [84.29ms] (pass) the agent’s design tool saves a skin and it applies at once [54.31ms] (pass) /skin with no argument opens the settings pane [49.00ms] (pass) a table wider than its share spans the column instead of running off it [53.07ms] (pass) the desktop draws a table as an animated vector card, with a tooltip on a cut cell [62.29ms] (pass) on the desktop an edit is a diff card and a shell command a terminal card [58.90ms] (pass) a code fence is a card on the desktop and stays markdown in the terminal [65.63ms] (pass) the band offers Compact, nudges at 70% context, and compacts on a press [69.97ms] (pass) cards draw no background of their own [54.72ms] (pass) /skin gallery opens a pane with every element, numbered, on both surfaces [66.25ms] (pass) on a light Claude Code theme the skin draws dark text for a light background [74.57ms] (pass) code blocks, tables and shell output get a Copy button that copies their text [66.85ms] (pass) on the desktop the Copy button is laid over the card, in the corner the card leaves free [61.12ms] 47 pass 0 fail Ran 47 tests across 2 files. [1.68s]