Skip to content

Add SSH jump routes and release Core 2.13.0 - #26

Merged
askac merged 8 commits into
mainfrom
feature/ssh-jump-routes
Sep 14, 2026
Merged

askac merged 8 commits into
mainfrom
feature/ssh-jump-routes

Conversation

@askac

@askac askac commented Sep 14, 2026

Copy link
Copy Markdown
Owner

What changed

  • Add ordered SSH routes with up to three jump hosts, reusable connection nodes, cycle detection and per-node host identity/key authentication. Files and Agent Tunnel use the final connected target.
  • Separate Direct connect from Saved routes and guide connection attempts through per-site login cards with host trust, passwords and progress.
  • Share Use key/public-key/copy controls across Direct and route nodes. Keep new keys temporary until an opted-in profile or route is saved on Connect; retain edits with Done and discard later editor changes with Cancel.
  • Bind temporary signers to their connection attempt and defer history writes during other pending logins. Release Core 2.13.0 and correct Desktop download links to the existing 0.4.3 evaluation; newer Desktop candidates remain local.

Testing

  • Full Core headless smoke suite and six real multi-hop SSH transport tests pass, including downstream Files, Agent Tunnel and forwarding denial.
  • Nine SSH preparation browser scenarios pass, including saved/temporary keys, clipboard copying, multi-hop authentication, history redaction and concurrent/background login handling. Route editing and staged-login regressions also pass.
  • The preceding Windows Desktop candidate passes 95 native unit tests, extracted-package Windows/WSL interaction checks, first-run setup/reuse and browser-key persistence. It contains Core 2.13.0-dev and is not relabeled or published by this Core source release.

## Why
Saved SSH sessions need reusable jump paths while preserving browser key
ownership, host trust, and access to the final terminal.

## What changed
- Store independently referenced route nodes and selectable Entries with
  revision-checked edits, migration, import remapping, and explicit cycle repair.
- Connect through up to three jump hosts and reuse the final SSH transport for
  Terminal, Files, and Agent Tunnel without a direct fallback.
- Bind signing, cancellation, and host-key retry to their connection attempts
  while preserving direct localhost behavior and per-node credential ownership.
- Keep passwords out of settings, exports, and connection diagnostics.

## Testing
- Verify shared editing, cycle repair, migration, concurrent storage writes,
  imported credentials, signing ownership, retry correlation, and redaction in Chromium.
- Exercise real multi-hop SSH, mixed key/password authentication, per-hop trust,
  SFTP, reverse forwarding, Agent Tunnel, failed forwarding, and cancellation.
- Pass the repository headless and 49-case browser regression suites.
## Why
Route connections require users to supply every password in the initial
form, and host-key confirmation restarts already authenticated jumps.

## What changed
- Show per-site login cards with completed, current, and waiting states.
- Pause host verification and password entry on the existing transport.
- Bind replies and setup retries to the initiating tab and connection.
- Preserve browser keys, localhost key setup, and password fallback.

## Testing
Exercise live password routes, browser-signed keys across three jumps,
reverse forwarding, rejected passwords, host-key changes, cancellation,
stale replies, and background tabs. Run the headless smoke suite and
SSH settings, history, keys, route editor, and agent tunnel browser checks.
## Why
SSH preparation shares direct fields with saved routes, making endpoint and authentication selection ambiguous.

## What changed
- Separate Direct connect and Saved routes while retaining per-site login cards.
- Save independent node credentials atomically and expose new public keys only after saving.
- Inspect and forget host fingerprints within bound direct or node contexts.

## Testing
- Cover independent drafts, zero-jump routes, key lifecycle, legacy profiles, and stale fingerprint confirmations.
- Verify three distinct browser credentials after reload, multi-hop SSH, SFTP, reverse forwarding, and headless regressions.
## What changed
- Share compact Use key, public-key and copy controls across Direct and route nodes.
- Keep generated keys temporary until Connect saves the opted-in profile or route atomically.
- Retain route edits with Done and preserve the previous draft when cancelling the editor.
- Bind temporary signers to their connection attempt and defer history writes while other logins are pending.

## Testing
- Exercise real Direct and multi-hop key logins, public-key copying, explicit saving and temporary-key history handling.
- Verify concurrent login history, background authentication failure and private-key exclusion from wire data.
- Check route editing, legacy keys, host trust retries, staged login, related browser behavior and syntax.
@askac
askac merged commit 6a4a835 into main Sep 14, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant