Skip to content

Add lightweight SFTP file management - #16

Merged
askac merged 2 commits into
mainfrom
feature/sftp-file-manager
Aug 28, 2026
Merged

Add lightweight SFTP file management#16
askac merged 2 commits into
mainfrom
feature/sftp-file-manager

Conversation

@askac

@askac askac commented Aug 28, 2026

Copy link
Copy Markdown
Owner

Why

SSH tabs provide interactive terminal access but no bounded way to move and manage reference files. The main-page context menu is also unavailable while a terminal is in Document Picture-in-Picture. Separately, Windows warm launches repeat a disposable PiP capability probe, and session recovery can reconnect before the previous Socket.IO transport finishes closing.

What changed

  • Add a lightweight direct-endpoint SFTP File Manager with flat directory navigation, drag-and-drop upload, Keep Both or atomic Replace, download, rename, and two-stage permanent deletion.
  • Bind regular-file actions to short-lived opaque references and browser-, socket-, terminal-, and live-bridge-scoped transfer tickets; nested interactive SSH sessions, symbolic links, and non-regular files remain outside the supported boundary.
  • Expose SFTP through the main status bar, context menu, and Terminal PiP, while preserving hidden controls for non-SSH tabs and showing a disabled unavailable state after a typed backend failure.
  • Skip the disposable PiP probe on Windows warm starts and defer session-recovery reconnect to the next event-loop task so the prior transport closes cleanly.

Testing

  • Covered the complete backend suite, including SFTP endpoint scope, atomic replacement, opaque references, ticket binding, single-use downloads, and exact byte streaming.
  • Covered the complete Chromium suite, including main and PiP SFTP entry points, unavailable states, upload conflicts, download dispatch, rename/delete safeguards, and recovered socket sessions.
  • Verified a real HTTPS Edge download from an SSH tab through ticket acceptance to exact completion at 29,996,934 bytes; existing terminal, agent, SSH settings, rendering, and browser-authorization scenarios remain covered.

askac added 2 commits August 28, 2026 07:17
## Why
SSH tabs expose interactive terminal access but do not provide a bounded way to move and manage reference files. Terminal Picture-in-Picture also hides the main-page context menu, making an SFTP-only entry point incomplete.

## What changed
- Add direct-endpoint SFTP browsing, upload, download, rename, and two-stage permanent deletion without following nested SSH sessions.
- Bind regular-file actions to short-lived opaque references and browser-, socket-, terminal-, and bridge-scoped transfer tickets.
- Add SFTP actions to the main status bar, context menu, and Terminal PiP, with a disabled unavailable state and a clean PiP transition.
- Defer session-recovery reconnect until the previous Socket.IO transport closes its current event-loop task.

## Testing
- Covered SFTP bridge boundaries, atomic replacement, opaque references, ticket scope, single-use downloads, and exact byte streaming.
- Covered main and PiP entry points, unavailable states, upload conflicts, downloads, rename/delete safeguards, and session recovery in Chromium.
@askac
askac merged commit e572bd7 into main Aug 28, 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