github binaricat/Netcatty v1.1.71

5 hours ago

✨ Release Highlights

Netcatty v1.1.71 is a large transfer-and-platform release. The headline is a global SFTP transfer center modeled after dedicated multi-connection clients: transfers keep running when you close a panel, can pause and resume across reconnects, and show up from a single top-bar control. Alongside that, the plugin host grows real permission, UI, and terminal-provider surfaces; terminals pick up Kitty keyboard completion, smarter exit behavior, and TUI redraw fixes; and AI agents gain Cursor subscription login plus silent MCP sessions.

📦 Global SFTP transfer center

SFTP transfers no longer live only inside the side panel you opened. A new global transfer center in the top bar lists active, queued, completed, and failed work across hosts, with badges for count and attention states.

Under the hood this is a full transfer lifecycle redesign, not a cosmetic queue:

  • Dedicated transfer connections with a connection pool, so browsing and bulk transfer do not starve each other the way a single shared session often does.
  • Pause / resume / prioritize / cancel for top-level jobs, including directory trees, with checkpoints retained so large downloads and uploads can continue after interrupt, app restart, or temporary network loss.
  • Conflict handling (skip / replace / stop) that stays consistent when you resolve in the same moment a job is pausing or canceling, including batch “Stop” that cancels the remaining unfinished set cleanly.
  • Directory jobs that rehome child tasks correctly, keep cancelled children out of the failed bucket, and avoid poisoned cancel latches when you resume.
  • Open-folder / open-file UX and controls refined so you can jump from a finished row back to the right place without hunting through panels.

Closing an SFTP panel no longer means losing track of in-flight work: transfers stay visible and controllable from the global center until you dismiss them.

🧩 Plugin platform: permissions, UI, and terminals

The plugin foundation from recent builds expands into surfaces plugins can actually use:

  • A permission and security boundary with capability authorization, safer activation, companion trust checks, and session-grant revocation when a worker exits.
  • Native UI contributions so plugins can present views and lifecycle-owned UI without fighting the host’s tab and context refresh rules.
  • A terminal provider API for ordinary providers: host state, transport identity, command completion, and lifecycle hardening so providers do not leak listeners, double-submit, or return stale results.
  • A reviewed privileged terminal data pipeline for the cases that need deeper terminal I/O under explicit policy.

Plugin work remains gated for development where appropriate, but the contracts are substantially closer to something installable and reviewable.

⌨️ Terminal: Kitty keyboard, exit policy, and TUI stability

Terminal sessions behave more predictably for modern TUIs and long-lived tabs:

  • Kitty keyboard protocol support is completed and key-release handling is preserved for broadcast paths, so tools that rely on rich key reporting work more reliably.
  • New exit auto-close setting, plus fixes so non-zero shell exits no longer drop tabs unexpectedly—you choose when a session should disappear.
  • Claude Code / Codex-style DEC 2026 full redraws no longer stack ghost frames (#2291); delayed full clears keep the right context.
  • Ctrl+C with scroll-on-input scrolls to the bottom again so interrupt feedback is visible; hidden log output is batched to cut unnecessary work.
  • Session startup commands run after restore, and search highlights clear when the search field is emptied.

🤖 AI agents: Cursor login and silent MCP sessions

  • Cursor CLI login is supported so subscription quota can be used without forcing only API-key mode.
  • MCP silent sessions can run without hijacking your visible tab set; when you need to inspect them, they open in an attach terminal popup instead of stealing focus from the workspace.
  • External MCP settings layout and a top-bar External MCP quick toggle make turning agent integration on and off faster during daily use.

📁 SFTP reliability beyond the transfer center

Even outside the new center, everyday SFTP is sturdier:

  • Opening SFTP can reuse the already-authenticated terminal SSH session.
  • High-latency download throughput is restored, with safer bounds and concurrent progress preservation.
  • SFTP follows the terminal cwd more correctly on macOS/BSD remotes and on first open; copied tabs keep distinct cwd state.
  • Recursive directory deletion is more reliable; active transfers remain reachable after the panel is closed.

🧭 Hosts, vault, and top-bar controls

Day-to-day host management is smoother: add and edit hosts from the terminal host list, improved keychain identity layout, CSV import/export of key authentication, FreeBSD host icons, and a dedicated top-bar quick controls panel for theme, opacity, and related toggles. Windows gains a portable data directory option. SSH MFA prefers keyboard-interactive when appropriate (including jump hosts), and port forwarding recovers OTP auth routing plus auto-start after network recovery.

Also in this release: Russian UI localization completion, host picker keyboard navigation, host-details resize and row-height polish, tray session close buttons, and assorted lint/UI color consistency fixes for the new transfer and quick-control controls.

Download based on your OS:

OS Download
Windows Setup x64
macOS DMG Apple Silicon DMG Intel X64
Linux AppImage x64 DebPackage x64 RpmPackage x64 ArchPackage x64
AppImage arm64 DebPackage arm64 RpmPackage arm64 ArchPackage arm64

What's Changed

  • chore(nix): update release metadata for v1.1.70 by @binaricat in #2318
  • fix: complete Russian UI localization by @pyroch in #2323
  • feat(plugins): add permission and security boundary by @ryan-wong-coder in #2315
  • fix: forget remembered passphrase when deleting a key by @binaricat in #2333
  • feat(windows): support portable data directory by @binaricat in #2336
  • feat(plugins): add native UI contributions by @ryan-wong-coder in #2324
  • fix(terminal): clear search highlights when search input is emptied by @tces1 in #2334
  • fix(ssh): prefer keyboard-interactive for MFA hosts by @RainGoal in #2331
  • [codex] Fix keyboard navigation in host pickers by @mam15mon in #2344
  • feat(plugins): add terminal provider API by @ryan-wong-coder in #2338
  • feat(ai): 新增 MCP 会话静默运行开关 by @ice616 in #2345
  • fix(sftp): restore high-latency download throughput by @binaricat in #2351
  • fix(sftp): reuse authenticated SSH session for SFTP by @myderr in #2350
  • fix(port-forward): restore OTP authentication by @binaricat in #2352
  • feat: add FreeBSD host icon by @binaricat in #2358
  • fix(terminal): run host startup command after restore by @binaricat in #2360
  • fix(sftp): keep copied tab cwd distinct by @binaricat in #2356
  • fix(port-forwarding): restart auto-start rules after network recovery by @binaricat in #2361
  • fix(tray): 托盘面板会话条目新增关闭按钮 by @ice616 in #2362
  • feat: 在终端主机列表中新增和编辑主机 by @Ryanisgood in #2363
  • Support key authentication in host CSV import/export by @binaricat in #2354
  • Improve external MCP settings layout by @binaricat in #2368
  • Fix quick switcher selection and workspace creation UX by @binaricat in #2369
  • fix(sftp): keep active transfers accessible after closing the panel by @binaricat in #2370
  • fix(sftp): make recursive directory deletion reliable by @binaricat in #2371
  • feat: add External MCP quick toggle by @Ryanisgood in #2355
  • feat: add a dedicated top-bar quick controls panel by @binaricat in #2374
  • polish host auth method UI and clear lint warnings by @binaricat in #2375
  • polish quick connect protocol picker presentation by @binaricat in #2377
  • align SFTP host picker rows with quick switcher by @binaricat in #2376
  • fix(ui): unify HostDetails setting row heights by @binaricat in #2378
  • fix(ui): enable host details panel resize from host tree by @binaricat in #2379
  • fix(terminal): disable incomplete Kitty keyboard negotiation by default by @zopenb in #2382
  • fix(ui): open AI silent sessions in an attach terminal popup by @binaricat in #2380
  • [codex] complete Kitty keyboard protocol by @binaricat in #2389
  • fix(sftp): follow terminal cwd on macOS/BSD remotes and first open by @tces1 in #2388
  • [codex] preserve Kitty broadcast key releases by @binaricat in #2391
  • fix(terminal): preserve tabs after non-zero shell exits by @RoryChou-flux in #2390
  • feat(terminal): add exit auto-close setting by @binaricat in #2394
  • feat(plugins): add reviewed privileged terminal data pipeline by @binaricat in #2402
  • fix(plugin): revoke session grants after worker exit by @binaricat in #2404
  • Improve keychain identity discoverability and layout by @binaricat in #2406
  • fix(terminal): batch hidden log output by @binaricat in #2399
  • feat(ai): support Cursor CLI login for subscription quota by @itzhang89 in #2412
  • fix(terminal): stop stacking Claude Code DEC 2026 full redraws (#2291) by @binaricat in #2415
  • fix(ui): keep quick controls trigger color static by @binaricat in #2416
  • fix(terminal): scroll to bottom on Ctrl+C with scroll-on-input by @binaricat in #2417
  • feat(sftp): global transfer center with FileZilla-style dedicated connections by @binaricat in #2410
  • fix(lint): clear react-hooks and unused-import warnings by @binaricat in #2419
  • fix(ui): match global transfer toggle to top-tab muted icons by @binaricat in #2420

New Contributors

Full Changelog: v1.1.70...v1.1.71

Don't miss a new Netcatty release

NewReleases is sending notifications on new releases.