Keep the phone's nav under Connections when nothing is running

The chrome stands down for a shell, and it was standing down for the whole
terminal surface. Those parted company when that surface gained a connect page:
with no tabs open it draws a box, a CONNECT button and the machines connected to
before, which is a page in everything but which enum it is in. A third of the
display is worth giving to a shell and is not worth giving to that. Worse, it is
the one screen somebody arrives at by closing their last tab — so the state the
collapsed bar was most likely to be seen in was the state where it left the
system back gesture as the only route to Hosts or Settings.

So RefreshChrome reads one more question. IsTerminalSurface with no tabs joins
the pages in both flags, which keeps the rail and the bar in step: above 600dp
the rail is the bar, and fixing only the narrow layout would leave an unfolded
device on the same screen with the same nothing. The vault header is deliberately
not part of it. The surface draws its own bar with back and the +, and a header
above that is the second row of chrome this head exists to avoid.

The Connections entry lights for the first time, on IsTerminalSurface. It was
left unbound on the argument that the bar was never drawn while that surface was
up, so a lit state was unreachable — that argument is now false, and the flag is
unambiguous on a control that is only drawn in two situations: false on every
page, true on the connect page, and never read while a shell is showing. A bar
sitting under a screen it does not point at is the entry looking broken instead.

Nothing here is testable on this head — the phone's rectangles have no coverage,
for the reasons Phase 8 of manual-checks records — so 11.7 gains the check that
the bar is there with Connections lit, and 11.1 keeps the one that it is gone
with a shell up, which is the half that pays for the arrangement.
This commit is contained in:
2026-08-06 07:38:31 +02:00
parent 174ef7c420
commit cddfeb1f55
6 changed files with 81 additions and 23 deletions
+10 -3
View File
@@ -568,9 +568,16 @@ go at 360dp:
believing they typed an `l`.
**The surface has since taken the whole screen.** `PhoneShell` collapses the header, the session strip
and the bottom bar while a terminal is showing — one binding on `IsShowingPages` each — and the screen
draws a 35-pixel bar in their place: back, the session pills, and a `+` raising a sheet with the three
connections there are. That sheet is the head's first control that could be drawn over the renderer, so
and the bottom bar while a shell is showing, and the screen draws a 35-pixel bar in their place: back,
the session pills, and a `+` raising a sheet with the three connections there are.
*A shell rather than the surface, and the two parted company once that surface gained a connect page.*
With nothing running, Connections is a box, a CONNECT button and the machines connected to before — a
page in everything but which enum it is in — so `RefreshChrome` keeps the bar (and, wide, the rail) under
it and the Connections entry lights for the first time. It is the one screen reachable by closing your
last tab, and collapsing the nav there left the system back gesture as the only route to Hosts or
Settings. The header is not part of that: the surface draws its own bar, and a vault header above it is
the second row of chrome this head exists to avoid. That sheet is the head's first control that could be drawn over the renderer, so
it collapses it rather than covering it, exactly as the desktop's palette does; whether Android's
WebView actually composites above Avalonia content is still the unverified question recorded below, and
collapsing is correct under either answer.