Replies: 6 comments 11 replies
-
|
TUI for AeroFile is a cool idea. This definitely should go in #285. Before we continue, I noticed that you didn't specify what's in scope for this post. So I'd like to ask what's in scope here: Open questions for the community1, 3 & 7) Shape & Must-have first:It's difficult to envision these and make an informed opinion without first testing out some drafts. You might wish to draft these first, 2) Entry point:
4) Keybindings:I've heard of VIM being an IDE with complex hotkeys, but I haven't used it, so I'm not familiar with it. 5) Layout:It's easy to check the terminal's width. 6) Naming:Please don't spend these terms now as aliases. 8) Mouse:Mouse would be fantastic to add, but it can wait if it's too much effort. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
|
Currently in v4.0.4,
An important philosophical question here for both of us that will affect any TUI design is: The way I designed my TUI demo would allow selecting actions with TUI controls, but the profiles will still be typed, and so will the new index when re-indexing, etc. The question is whether everything should be a TUI like it currently is in At any rate, wherever possible, I prefer to not have a window take over my entire terminal tab, |
Beta Was this translation helpful? Give feedback.
-
|
Thank you very much! Your first 2 screenshots look exactly like I wanted the TUI to look like, By the way, your fullscreen TUI was impressive, and I didn't know that it was even possible, but I just think we can both agree that it's not ideal for Profiles because the users should be able to scroll up to see past command lines and the table evolving. As for the 3rd screenshot: so, I envisioned the white highlight staying after selecting an option, Regarding your table:
One important note you might've missed: I thought about each action in |
Beta Was this translation helpful? Give feedback.
-
|
I just had another TUI-related thought: In #276 (comment) I wrote "So the user won't just tap Enter on the default setting, I thought about it, and the most common option in any program is to quit or exit. It's available in various forms under various names nearly all the time. E.g. N in Y/N when about to install an app in the terminal. Exiting is also typically the safe option. Therefore, This can be adopted in general, especially where there is risk. If you think about it, Regarding #276, which is what I started this comment with, when selecting the Crypt setting, |
Beta Was this translation helpful? Give feedback.
-
|
Another thought: You can see how I'm grouping |
Beta Was this translation helpful? Give feedback.






Uh oh!
There was an error while loading. Please reload this page.
-
RFC: from
profiles -ito a fullaeroftp-cliTUIThis one starts with @EhudKirsh. In the v4+ wishlist (#270) he asked us to turn
aeroftp-cli profiles -iinto a proper raw-mode terminal UI, even linking his own demo of the technique (NodeJS-Unbuffered-Input-Raw-Mode-TUI) and saying it would "revolutionize the interactivity and accessibility ofaeroftp-cli profiles -iwell beyond what it andrclone configcurrently have."We shipped that navigator (the arrow-key
profiles -i, commit96b90fe7). This RFC is about taking the idea all the way: from a single picker to a full-screen, keyboard-driven file manager over the same provider stack the line-mode CLI already uses. Thinklazygit/ranger, but for 32 storage backends. The dual-panel ergonomics Ehud already likes in AeroFile, brought to the terminal.Full circle. There is a nice symmetry here. AeroFTP began life as PhantomFTP, a Rust dual-panel TUI FTP client (local and remote panes side by side, async transfers, the "ghost in your terminal"). It grew into the desktop app and the big
aeroftp-cliyou use today. A TUI foraeroftp-cliis not new territory, it is AeroFTP coming home to the form it was born in, now with 32 backends behind it instead of three.This is a request for comments before any code lands. Ehud, this is your idea, so you get first word. Everyone who lives in the terminal: please tear it apart.
(Mockup, not a screenshot yet. Layout and keybindings are exactly what is up for discussion.)
Why this is cheap to do well
We are not starting from scratch.
aeroftp-clialready:ratatuiandcrossterm, andprofiles -inavigator Ehud asked for (arrow-key picker, inline edit/rename/delete), andncdudisk explorer (aeroftp ncduopens a full alternate-screen, drill-down disk-usage browser).So the foundation, terminal lifecycle, event loop, rendering, and safe restore-on-exit, is already proven in production. The full TUI is the same machinery, widened.
The one principle we will not break
The
profiles -inavigator is built as a pure input front-end: it renders, lets you move and pick an action, then hands the equivalent line-mode command to the existing, tested command handlers, which do the actual work.We want the whole TUI to follow that same contract:
That keeps the ~100 existing command handlers as the single source of truth, keeps every destructive-op safety gate (confirmations, exit codes) in one place, and keeps the line-mode CLI fully scriptable and
--json-friendly. The TUI is strictly additive, nothing you script today changes.What it would actually do
A dual-pane browser (remote on the left, local on the right), connect from a saved profile, navigate, transfer across panes, plus the power features reachable without retyping URLs and flags:
get/put/mv/cpacross panes, with a live transfer panel,profilesnavigator,ncdu,versions,df, and vault views embedded as panels,:command palette that accepts any existing line-mode command, so power users get 100% feature parity from day one while the visual panes cover the common 90%.One of Ehud's specific points in #270 was direct manipulation: when you want to change something, you click (or select) the thing itself rather than hunting for a separate menu. That principle carries straight into the browser: highlight an entry, act on it in place. Question 3 below is where we pin down how far to take it.
Three possible shapes (this is the main thing to discuss)
A. Picker, widened. Small modal pickers that return a line-mode command, exactly like
profiles -itoday. Lowest risk, reuses everything, but feels more like a menu than a file manager.B. Stateful browser. A real app: one held connection, a dual-pane browser, async transfers with live progress. The product people actually picture. Needs a small new session + worker layer so the screen never freezes on a slow network call.
C. Embedded line-shell. A TUI frame whose main pane is the existing interactive shell, with side panels. Instant power-user parity, but the muddiest UX.
Our leaning: ship a thin A first (it directly continues the
profiles -iwork and validates the shared scaffold), then grow it into B as the headline, with C's "run any command" idea folded into B as the:palette rather than as the architecture.Open questions for the community
aeroftp tui(oraero tui, using Ehud's alias from [DOCUMENTATION] I managed to make an `aero` alias for `aeroftp-cli` #273) only, or also bareaeroon an interactive terminal, with a config opt-in so scripts are never surprised?profiles -imodel), an inline edit mode, or both?hjkl(matching whatncdualready uses here) as the default, with arrows always working? Any bindings you consider non-negotiable?tui,browse,nav, or something else? (shell/replalready exist underagent.)A full design note (current-state inventory, architecture, phased plan, risk register) backs this and will land in the repo under
docs/dev/roadmap/APPENDIX-CLI-TUI/.Thanks @EhudKirsh for planting this one. Let's build it in the open.
Beta Was this translation helpful? Give feedback.
All reactions