Fleet pill opens a per-machine panel; TUI leader shows ⌘X on macOS - #66
Merged
Merged
Conversation
… ⌘X on macOS Adopted from another session's uncommitted work in the shared iris-code checkout, rebased onto current iris/1.18.23 (applied cleanly on 1243af2). One bug fixed on the way in; everything else is theirs. FLEET PANEL. The titlebar's "2/5" pill had a one-line tooltip, so the question a fleet count exists to answer — WHICH machine is down — needed someone to ask. It now opens a panel on hover, focus or click listing each node with its own state. The dot is a three-state verdict matching fleetLabel's three facts: grey while loading, danger when the fleet itself is unreachable, green only when measured with something up. Measured-but-all-down is muted, NOT danger — reachable and dead are different facts. TUI LEADER. On macOS the default leader is now ["super+x", "ctrl+x"]. THE BUG, in the adopted keymap change: LeaderDefault went from a string constant to a function that returns an ARRAY on macOS, and the one caller did `LeaderDefault() as string`. The cast silenced tsc and changed nothing at runtime, so the TUI's leader hint would have printed the array's toString — "super+x,ctrl+x". Typecheck was green on it; typecheck cannot see through `as`. Now takes the first binding, the same `[0]` rule the configured path already uses, and stringifies a KeyStroke element the same way rather than via String(), which would give "[object Object]". WORTH KNOWING ABOUT THESE TESTS: under plain `bun test` this file cannot run at all — solid-js/web resolves to its SERVER build and throws `Export named 'use' not found` before a single test executes. That is pre-existing (identical on the base commit) and it means the three new fleetDotClass tests had never actually run when written. Under CI's real invocation (`--conditions=solid --preload ./happydom.ts`) all 11 pass. Mutation-verified: a loading fleet wearing green fails 1, all-down reading as danger fails 1. app + tui typecheck clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JwiqN8M84qimu1TjZGSsdQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adopted from another session's uncommitted work in the shared
iris-codecheckout, rebased onto currentiris/1.18.23(applied cleanly). One bug fixed on the way in.What it does
2/5pill had a one-line tooltip, so which machine is down was invisible. It now opens a panel on hover, focus or click, listing each node's state. The dot is a three-state verdict: grey while loading, danger when the fleet is unreachable, green only when measured with something up. Measured-but-all-down is muted, not danger, because reachable-and-dead is a different fact from unreachable.["super+x", "ctrl+x"]on macOS.The bug fixed on adoption
LeaderDefaultchanged from a string to a function that returns an array on macOS, and its one caller didLeaderDefault() as string. The cast silenced tsc and changed nothing at runtime: the TUI leader hint would have printedsuper+x,ctrl+x. It now takes the first binding, using the same[0]rule the configured path already applies.Tests
Under plain
bun testthis file can't run at all (solid-js/webresolves to its server build). That's pre-existing, identical on base, and means the new tests had never executed. Under CI's real invocation (--conditions=solid --preload ./happydom.ts): 11 pass. Mutation-verified: a loading fleet wearing green fails, and all-down reading as danger fails. App + TUI typecheck clean.CI note: Blacksmith runners are wedged, so
unit/e2enever run. Local verification is the gate.🤖 Generated with Claude Code
https://claude.ai/code/session_01JwiqN8M84qimu1TjZGSsdQ