Redo connection manager: Stacks, More options, drag & drop, WinSCP import

Folders become Stacks (connections.json v2, no v1 migration): collapsible
stack-first list, open-stack-in-tabs (first reuses a pristine tab), drag
connections between stacks. More... reveals a per-connection Local
directory applied to the other panel when local and untouched. Import
reads a WinSCP.ini export incl. deobfuscated passwords.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 18:28:30 +02:00
co-authored by Claude Fable 5
parent 9a4420fdc2
commit e2f3737656
13 changed files with 533 additions and 125 deletions
+9 -4
View File
@@ -27,13 +27,18 @@ export interface ConnectionConfig {
export interface SavedConnection extends ConnectionConfig {
id: string;
folderId: string | null;
stackId: string | null;
name: string;
/** Other-panel local dir applied when that panel is local and untouched. */
localDir?: string | null;
}
export interface ConnFolder {
/** A named group of connections that can be opened together as tabs. */
export interface Stack {
id: string;
name: string;
/** Collapsed in the connection-manager list (UI state, persisted). */
collapsed?: boolean;
}
/** A concrete host alias resolved from ~/.ssh/config (read-only). */
@@ -47,8 +52,8 @@ export interface SshConfigHost {
}
export interface ConnectionsFile {
version: 1;
folders: ConnFolder[];
version: 2;
stacks: Stack[];
connections: SavedConnection[];
}