diff --git a/src/DodoSSH.Client.App/Views/HostsScreen.axaml b/src/DodoSSH.Client.App/Views/HostsScreen.axaml
index c90d250..36ada41 100644
--- a/src/DodoSSH.Client.App/Views/HostsScreen.axaml
+++ b/src/DodoSSH.Client.App/Views/HostsScreen.axaml
@@ -6,34 +6,88 @@
x:DataType="vm:VaultViewModel">
+
+
+
+ True
+
+
+
+
+ False
+
+
+
- ── IT WAS A 268-PIXEL LIST BESIDE A MOSTLY EMPTY COLUMN. ────────────────────────────────────────────
- That list was doing two jobs at two-thirds size. It had to be narrow so the editor beneath it could be
- a column, and being narrow is what made forty machines a scroll rather than a glance: a host row was a
- name, an address and an auth word stacked in 268 pixels, and the column beside it repeated all three
- for the one that happened to be selected.
+
+
- ◆ IT IS ALSO THE WAY OUT OF THE GROUPS. The grid below holds one level of the tree, and typing here
- searches that level and everything under it — every machine in the keychain while nothing is open.
- That is the one thing on this screen that crosses a group boundary, and it has to be: a search that
- looked only where you happen to be standing would say "no host matches that" about a host this
- keychain has got. See VaultViewModel.Matches.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
+
@@ -121,8 +250,7 @@
-
+
@@ -140,700 +268,504 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
- ◆ ABOVE THE GROUPS LABEL, and deliberately not under it as the transfers screen's is. That one
- sits below its heading because it describes the one list beneath it; this one describes two.
- Opening a group narrows the hosts as well as the cards, so a trail drawn under GROUPS would
- read as one more thing about the groups while it is also the reason the grid at the bottom of
- the screen is showing eleven machines instead of forty. First in the section, and both headings
- below belong to it.
- -->
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+ MinHeight rather than a fixed Height, unlike the mock's own 120: this codebase's
+ Border.tile is deliberately a fixed width and a free height (see App.axaml), so a
+ card wearing four tags grows a second line rather than clipping the fourth one — a
+ silent truncation is exactly the kind of thing the honesty rule in
+ HANDOFF-hosts-v5.md exists to catch, and it costs nothing here to avoid.
+ -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -843,7 +775,7 @@
It is a rectangle the pointer is dragging out right now, so it belongs in the viewport's coordinates
and not in the scrolling content's: a band drawn inside the stack would slide away from the pointer
- the moment the grid scrolled under it. Same row as the ScrollViewer and after it, which is what puts
+ the moment the board scrolled under it. Same row as the ScrollViewer and after it, which is what puts
it on top — a Grid cell stacks its children in declaration order.
IsHitTestVisible="False" is the whole of why the gesture works while it is up. The band is under the
@@ -861,7 +793,7 @@