Skip to content

[Feature] Rich SSH connection screen with live logs #82

Description

@thangnm93

Problem Statement

While an SSH session is establishing, the tab shows only a bare orange "Connecting to host…" spinner. There is no host context, no visibility into what the connection is doing, and on failure the user gets a one-line error with no way to retry from the tab. When a connect hangs or fails (host-key prompt, auth, jump-host tunnel), there is nothing to inspect.

Proposed Solution

Replace the plain connecting/error/disconnected status view (inside the session tab) with a richer connection screen:

  • A host card: OS icon avatar, host label, and SSH host:port subtitle.
  • An animated node → line → terminal connection graphic (spinning while connecting; red/grey for error/disconnected).
  • A Show logs panel backed by a per-session connection log that records each step (resolve, auth method, jump-host tunnel, host-key verify, established / failed, reconnect countdown).
  • Close always, plus Retry on error/disconnected (manual retry reuses the same tab/terminal and starts a fresh log).

Applies to SSH terminal sessions. Local shells connect instantly; RDP/VNC already have their own workspaces.

Alternatives Considered

  • Keeping the minimal spinner — rejected: no diagnostics, no retry, poor UX on failure.
  • A modal overlay over the whole app — rejected: heavier and inconsistent with how SSH/RDP currently render connection state inside the tab.
  • Capturing dartssh2 printDebug output — rejected: too noisy and hard to scope per-session across jump chains; provider-level step logging is cleaner.

Additional Context

Desktop (macOS / Windows / Linux). The connection-log capture is implemented at the SessionProvider level (no change to the widely-used SshService.connect signature).

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions