Public Access
Start port forwards on the phone, listed in a sheet off its terminal
The Android head skipped a host's forwards because it had nowhere to show what was listening. Its terminal bar now draws a ⇄ for a tab that has forwards, carrying the listening count in green and turning the danger colour when one failed, and it raises a sheet over the same rows the desktop sidebar lists: notation, route, state, failure reason and a tap to switch each off or on. MainWindowViewModel.StartForwards no longer returns early on Android. The sheet is shell state like the connect sheet: it collapses the renderer while up, is lowered by leaving the terminal, and the back gesture closes it first. Forwards ride the shell's keep-alive rather than holding the foreground service themselves, since a forward cannot outlive its shell. They only change the notification, which now counts ports forwarded beside shells connected, fed by a new ForwardsChanged event and ListeningForwardCount. The phone still has no editor for forwards; the More screen card, README and design-import-gaps now say they run here and are edited on the desktop.
This commit is contained in:
1 parent
f05deb4fbc
commit
c3dfa42108
13 files changed
+415
-56
No files matched your search
@@ -432,8 +432,9 @@ A host can carry **port forwards**, added under PORT FORWARDS in its editor, in
|
||||
**local** (`-L`, a port here reaching a machine the remote can see), **remote** (`-R`, a port on the remote
|
||||
reaching back to one this machine can see) and **dynamic** (`-D`, a SOCKS proxy here whose connections leave
|
||||
from the remote). They are saved in the host's encrypted payload, so they sync, merge and are shared with the
|
||||
host, and they start with every terminal opened to it. The session sidebar lists them under FORWARDS with the
|
||||
state of each, and the status bar counts the ones listening.
|
||||
host, and they start with every terminal opened to it, on either head. The session sidebar lists them under
|
||||
FORWARDS with the state of each, and the status bar counts the ones listening; on the phone the same list is a
|
||||
sheet off the terminal's bar.
|
||||
|
||||
Three things about them are worth expecting rather than discovering.
|
||||
|
||||
@@ -448,8 +449,8 @@ second tab to the same host runs the same forwards, and they fail there because
|
||||
says so, and the terminal is unaffected. Any row can be switched off and on while its session is up.
|
||||
|
||||
**No byte counts**, which the design draws: SSH.NET keeps none, so a number there would be invented. The
|
||||
phone does not start forwards yet, because it has nowhere to show you they are running; its More screen says
|
||||
so.
|
||||
phone runs forwards too, listed behind a `⇄` in its terminal's bar, but cannot edit them yet; see
|
||||
[The Android head](#the-android-head).
|
||||
|
||||
### Sharing a vault
|
||||
|
||||
@@ -666,8 +667,9 @@ its host if it has one and back into the box if it does not.
|
||||
**A connected phone shows one bar and then the terminal.** The header, the session strip and the bottom
|
||||
bar are collapsed while a shell is up, and a single 35-pixel row replaces them: back on the left, the
|
||||
sessions as pills, and a `+` on the right offering the three connections this application can make — a
|
||||
shell, a host's files over SFTP, or a bucket. The system back gesture does what the arrow does, and lowers
|
||||
that menu first if it is open.
|
||||
shell, a host's files over SFTP, or a bucket. Beside the `+`, for a tab whose host has port forwards, a `⇄`
|
||||
opens them; see below. The system back gesture does what the arrow does, and lowers either sheet first if
|
||||
one is open.
|
||||
|
||||
Widening the rail moved the desktop window's minimum from `880x560` to `1016x574`, which leaves every
|
||||
screen exactly the width it was designed against.
|
||||
@@ -735,10 +737,24 @@ What it does *not* yet do is use the extra width inside a screen: the host list
|
||||
size. Two columns needs the row model to change — the list is headings and hosts in one sequence, and a
|
||||
heading has to span — which is shared with the desktop and is its own piece of work.
|
||||
|
||||
**Port forwarding runs on the desktop and not here yet**, and the phone's More screen says so in a paragraph
|
||||
rather than leaving a gap. The v2 design draws a whole screen for it. The forwarding itself is shared code and
|
||||
would run here unchanged, but this head has no surface that lists what is listening, and a phone opening
|
||||
listeners it never shows you is worse than one that opens none. See
|
||||
**Port forwarding runs here too, and is edited on the desktop.** A host's forwards start with every
|
||||
terminal the phone opens to it, as they do on the desktop. The terminal's bar grows a `⇄` for a tab that has
|
||||
any, carrying the number listening in green, or turning red when one could not start; it opens a sheet
|
||||
listing the tab's forwards with their route, their state, the reason a failed one gave, and a tap on each to
|
||||
switch it off or on — the desktop sidebar's FORWARDS section, over the same rows. The v2 design's whole
|
||||
FORWARDING screen is not drawn, for the reason the desktop has none: a forward belongs to a host and runs
|
||||
with a session, and both already have a place. What the phone has not got is an editor for them — its host
|
||||
form has no PORT FORWARDS section — so they are added on the desktop and arrive with the host; the More
|
||||
screen says so in a paragraph.
|
||||
|
||||
Forwards ride the **keep-alive** a shell already has. A forward runs over its tab's connection, so the
|
||||
foreground service that holds a shell open in the background is holding its forwards open too, and nothing
|
||||
else needs to: the service is never started for a forward alone, because there is never a listening forward
|
||||
without a live shell. What forwards change is the notification, which counts them beside the shells —
|
||||
`1 shell connected · 2 ports forwarded` — because a phone in a pocket holding ports open is something its
|
||||
owner should be able to see. Local and SOCKS forwards listen on the phone's own loopback, which every app on
|
||||
the phone can reach; that is what makes one useful here — a database client on the phone reaching a server
|
||||
behind the remote — and it is the same exposure the desktop's localhost has to its own processes. See
|
||||
[Forwarding ports](#forwarding-ports) and [`docs/design-import-gaps.md`](docs/design-import-gaps.md).
|
||||
|
||||
It is deliberately **not** in `DodoSSH.slnx`. Putting it there would make the `android` workload and a full
|
||||
|
||||
Reference in new issue
Block a user