tabby-sftp-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 gr0w1ng
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
package/README.md ADDED
@@ -0,0 +1,129 @@
1
+ ## Tabby SFTP UI Plugin
2
+
3
+ ![Demo picture](images/demo.png)
4
+
5
+ This plugin adds a **Termius‑style two‑pane SFTP file manager** to [Tabby](https://tabby.sh).
6
+ It integrates directly with your existing SSH tabs and uses Tabby's native SFTP backend.
7
+
8
+ ### Features
9
+
10
+ - **SFTP‑UI button in terminal toolbar** – opens the SFTP manager for the active SSH session.
11
+ - **Two panes** – local filesystem on the left, remote on the right.
12
+ - **Drag & drop**:
13
+ - Between local and remote for uploads/downloads.
14
+ - Within local pane and within remote pane for moves/renames.
15
+ - From OS file manager into the remote pane for uploads.
16
+ - **Transfer queue** – visual list of active transfers with progress and cancel button.
17
+ - **Navigation & UX**:
18
+ - Clickable folders, `Up` buttons, breadcrumb navigation.
19
+ - Manual path input for local and remote.
20
+ - Filtering by name, sortable columns (Name / Size / Modified).
21
+ - Dynamic size and speed units (B / KB / MB / GB).
22
+ - Optional "Show hidden" toggle for both panes.
23
+ - Multi‑select with Ctrl/Cmd and Shift.
24
+ - **File operations**:
25
+ - Rename, Delete (with in‑UI confirmation dialog), New Folder, Refresh.
26
+ - Edit permissions (chmod style input).
27
+ - On‑demand folder size calculation via context action.
28
+ - **Remote file editing**:
29
+ - Double‑click a remote file to download it to a temp location, open with system default app,
30
+ and automatically upload changes back to the remote when you save.
31
+ - **Local convenience features**:
32
+ - Quick path presets (Home, Desktop, Documents, Downloads).
33
+ - Favorite local paths stored in `localStorage`.
34
+ - Interactive breadcrumbs with context menu to switch between sibling folders/drives.
35
+ - **Profiles integration**:
36
+ - Top bar shows current SSH profile and recent profiles.
37
+ - Clicking a recent profile opens a new SSH terminal tab.
38
+ - **Safe recovery behavior**:
39
+ - SFTP tabs are **not** persisted across Tabby restarts (no stale/blank SFTP tabs).
40
+
41
+ ### Requirements
42
+
43
+ - Tabby desktop (tested around `1.0.163`).
44
+ - Node.js and npm installed on your system.
45
+
46
+ ### Install
47
+
48
+ #### From Tabby Plugin Manager (planned)
49
+
50
+ Once published to the official registry:
51
+
52
+ 1. Open **Settings → Plugins** in Tabby.
53
+ 2. Search for **“tabby-sftp-ui”**.
54
+ 3. Click **Install**, then restart Tabby.
55
+
56
+ #### Manual install (current)
57
+
58
+ 1. Clone this repository:
59
+
60
+ ```bash
61
+ git clone https://github.com/growingupfirst/tabby-sftp-ui
62
+ cd tabby-sftp-ui
63
+ ```
64
+
65
+ 2. Install dependencies:
66
+
67
+ ```bash
68
+ npm install
69
+ ```
70
+
71
+ 3. Build the plugin:
72
+
73
+ ```bash
74
+ npm run build
75
+ ```
76
+
77
+ 4. Install the built plugin into Tabby’s plugins directory:
78
+
79
+ ```bash
80
+ # Windows
81
+ cd "%APPDATA%\tabby\plugins"
82
+ npm install "<path-to>/tabby-sftp-ui" --legacy-peer-deps
83
+
84
+ # macOS / Linux
85
+ cd ~/.config/tabby/plugins
86
+ npm install "/absolute/path/to/tabby-sftp-ui" --legacy-peer-deps
87
+ ```
88
+
89
+ 5. **Restart Tabby completely** (close all windows and start again).
90
+
91
+ ### Usage
92
+
93
+ 1. Open an SSH session in Tabby.
94
+ 2. In the session toolbar, click the **SFTP‑UI** button (next to Reconnect).
95
+ 3. A new tab titled `<session name> + SFTP` will appear with the two‑pane file manager.
96
+ 4. Use drag & drop, context actions, and the action bar to manage files.
97
+
98
+ ### Development
99
+
100
+ - Main plugin module: `src/index.ts`
101
+ - Core UI component: `src/sftp-manager-tab.component.ts`
102
+ - SFTP backend wrapper: `src/sftp.service.ts`
103
+ - Local file transfer adapters: `src/local-transfers.ts`
104
+ - SFTP‑UI tab launcher/service: `src/sftp-ui.service.ts`
105
+
106
+ To rebuild after changes:
107
+
108
+ ```bash
109
+ npm run build
110
+
111
+ # Reinstall into Tabby plugin directory (see paths above)
112
+ cd "%APPDATA%\tabby\plugins" # or ~/.config/tabby/plugins
113
+ npm install "<path-to>/tabby-sftp-ui" --legacy-peer-deps
114
+ ```
115
+
116
+ Then restart Tabby.
117
+
118
+ ### Roadmap
119
+
120
+ - Better integration with Tabby’s plugin manager (one‑click install and updates).
121
+ - More granular progress details for large folder transfers.
122
+ - Optional inline file editor for small text files.
123
+ - Configurable keyboard shortcuts for common actions.
124
+
125
+ ### License
126
+
127
+ MIT — see `LICENSE`.
128
+
129
+
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ hotkeys: {
3
+ 'open-sftp-ui': string[];
4
+ };
5
+ };
6
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import { SftpManagerTabComponent } from './sftp-manager-tab.component';
2
+ import { SftpUiService } from './sftp-ui.service';
3
+ export default class SftpUiModule {
4
+ constructor(_: SftpUiService);
5
+ }
6
+ export { SftpManagerTabComponent };