Public Access
Android: type user@host into the hosts search to open a terminal on a machine without saving it
The phone's only unsaved way in was the box on the terminal screen, which is drawn only while nothing is open, so a second machine could not be reached that way while a first one's session was up. The search well at the top of HOSTS is always there and the design already calls it "Search or connect...", so it now reads an address the way the desktop palette does: with an @ in it, a NOT SAVED card above the list offers a password box and CONNECT. It connects through VaultViewModel.ConnectToEndpointAsync, the same path as the manual box and the desktop palette, so nothing is written to the keychain. The search box and the password are cleared once it dials, the password goes whenever the address changes, and an address the manual parser refuses gets its sentence under the box. Covered by six new ShellFlowTests cases; manual check 8.20 covers the card on a device.
This commit is contained in:
1 parent
988248fa57
commit
5b2e3f3651
4 files changed
+285
-2
No files matched your search
@@ -72,7 +72,7 @@
|
||||
<Grid ColumnDefinitions="Auto,*">
|
||||
<TextBlock Grid.Column="0" Classes="icon" Text="" Foreground="{StaticResource TextFaint}"
|
||||
FontSize="20" Margin="12,0,0,0" />
|
||||
<TextBox Grid.Column="1" Text="{Binding HostFilter}" PlaceholderText="Search hosts"
|
||||
<TextBox Grid.Column="1" Text="{Binding HostFilter}" PlaceholderText="Search hosts, or type user@host"
|
||||
Padding="9,0" VerticalContentAlignment="Center"
|
||||
Background="Transparent" BorderThickness="0"
|
||||
Foreground="{StaticResource Text}" FontSize="14" />
|
||||
@@ -82,6 +82,42 @@
|
||||
<!-- ============ sync + conflicts ============ -->
|
||||
<StackPanel Grid.Row="1" Margin="16,4,16,0" Spacing="7">
|
||||
|
||||
<!--
|
||||
◆ A MACHINE THAT IS NOT SAVED. When the search box holds user@host, this card offers to connect to it
|
||||
with a password, and nothing is written to the keychain — the desktop palette's typed-address row, in
|
||||
this screen's shape. The terminal screen's own box does the same but is drawn only while nothing is
|
||||
open; this one is here whatever is running. See VaultViewModel.FilterAddress.
|
||||
|
||||
Above the list rather than over it, like the panels below: the hosts that also match what was typed
|
||||
stay in view, and one of them may be the same machine with a key already bound to it.
|
||||
|
||||
Classes="field secret" on the password for the reason the terminal screen's box gives: the class is
|
||||
what keeps the password out of the software keyboard's dictionary, not only off the screen.
|
||||
-->
|
||||
<Border IsVisible="{Binding HasFilterAddress}" Background="{StaticResource Panel}"
|
||||
BorderBrush="{StaticResource BorderMid}" BorderThickness="1" CornerRadius="12" Padding="13,11">
|
||||
<StackPanel Spacing="9">
|
||||
<Grid ColumnDefinitions="*,Auto">
|
||||
<TextBlock Grid.Column="0" Classes="mono" Text="{Binding FilterAddressText}" FontSize="13"
|
||||
Foreground="{StaticResource Text}" TextTrimming="CharacterEllipsis"
|
||||
VerticalAlignment="Center" />
|
||||
<TextBlock Grid.Column="1" Classes="label" Text="NOT SAVED" Margin="10,0,0,0"
|
||||
VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
<TextBox Classes="field secret" Text="{Binding FilterAddressPassword}" PlaceholderText="password">
|
||||
<TextBox.KeyBindings>
|
||||
<KeyBinding Gesture="Enter" Command="{Binding ConnectToFilterAddressCommand}" />
|
||||
</TextBox.KeyBindings>
|
||||
</TextBox>
|
||||
<Button Classes="primary" Height="44" Content="CONNECT"
|
||||
Command="{Binding ConnectToFilterAddressCommand}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- Why what was typed is not an address yet, or why CONNECT refused — a sentence about the box. -->
|
||||
<TextBlock Classes="detail" TextWrapping="Wrap" Foreground="{StaticResource WarnText}"
|
||||
Text="{Binding FilterAddressRefusal}" IsVisible="{Binding HasFilterAddressRefusal}" />
|
||||
|
||||
<TextBlock Classes="detail" Text="{Binding Status}" TextWrapping="Wrap" />
|
||||
|
||||
<!--
|
||||
|
||||
Reference in new issue
Block a user