Skip to content

Releases: UtopleMan/Duetto

v1.7.0

Choose a tag to compare

@UtopleMan UtopleMan released this 03 Sep 07:54

Install

macOS (Homebrew):

brew install --cask utopleman/duetto/duetto

Or download a build below.


Features

  • File viewer (F3) — press F3 on the pane cursor or a focused search result to open a reusable viewer window. Text files show with line numbers and a detected encoding label (UTF-8, UTF-8 BOM, UTF-16 LE/BE); binaries show a hex dump; images render inline with their pixel dimensions. Every backend is supported — local, SFTP, SMB, S3 and Azure Blob. Ctrl/Cmd+F opens find-in-file (Enter/n next, Shift+Enter/N previous), W toggles word wrap, Esc closes the find box and then the window. Text and hex previews load the first 4 MB and say so, with an Open in default app action alongside; images are decoded up to 64 MB and fall back to a hex dump above that. Previewing is not blocked by a running copy or delete, and the viewer remembers its own size and position.
  • SVG preview — SVG documents render as vector art, scaled to fit, with the viewBox dimensions in the header. Detection is by content, not extension: an .svg holding HTML is shown as text, and a malformed SVG falls back to its source markup instead of an error.
  • PDF preview — PDF pages render one at a time via PDFium, with Previous page / Next page in the footer and PgDn/PgUp (or the arrow keys) stepping pages. Every page renders with its long edge at 2400 px, so the view stays crisp at any window size. PDFs up to 128 MB are rendered; damaged or password-protected files show a one-line reason next to Open in default app.

Changed

  • Avalonia 12.1.1 — upgraded from 11.3.18. Window chrome moved from the removed ExtendClientAreaChromeHints/SystemDecorations to the new WindowDecorations API, and the test suite moved to xunit.v3.
  • Windows builds shrank by about 27 MB: Avalonia 12's native packages ship Skia and HarfBuzz debug symbols, which are now excluded from published output.

Security

  • SSH.NET 2026.0.0 — fixes the high-severity advisory GHSA-q939-rpr3-3284 present in 2025.1.0.

PDF rendering embeds PDFium (BSD-3-Clause, via Docnet.Core/MIT); SVG rendering uses Svg.Model / Svg.SceneGraph / ShimSkiaSharp (MIT) with Svg.Custom (MS-PL).

macOS builds are unsigned: right-click → Open on first launch, or xattr -dr com.apple.quarantine "/Applications/Duetto.app".

v1.6.0

Choose a tag to compare

@UtopleMan UtopleMan released this 14 Aug 13:19

Features

  • Drag and drop — move or copy files by dragging between the two panes (all backends), from Finder/Explorer into a pane (including upload to a remote pane), and from a pane out to the OS (local files, export-only). Copy is the default; hold Shift to move. A drag-out never deletes the source.
  • Copy path — double-click a pane's path bar to copy its current path to the clipboard.

Install (macOS): brew install --cask utopleman/duetto/duetto

v1.5.1

Choose a tag to compare

@UtopleMan UtopleMan released this 07 Aug 12:43

Fixed

  • Search results keyboard navigation — Tab drops the cursor into the results; while results are open Tab cycles between the left pane and the results, and arrow keys drive whichever list holds focus.
  • Idle CPU — the pane loading spinner kept animating while hidden, redrawing every frame and pinning idle CPU near 17%. It now animates only while a directory is loading.

Install (macOS): brew install --cask utopleman/duetto/duetto

Duetto v1.5.0

Choose a tag to compare

@UtopleMan UtopleMan released this 06 Aug 18:35

Install

macOS (Homebrew):

brew install --cask utopleman/duetto/duetto

Or download a build below.


Features

  • Remote over Azure Blob Storage — connect to Azure Blob Storage and Blob-compatible services (the Azurite emulator) with the Azure.Storage.Blobs SDK, no OS mount. Account-key, connection-string, SAS, or anonymous auth, with an optional custom endpoint for emulators/on-prem; the connection root lists your containers (or a single configured container). Same-account moves are offloaded server-side (Copy Blob). (setup & security)

Fixed

  • Drive-popover spacing (filter box ↔ "THIS MACHINE", centred "Connect…" row labels).
  • Connect dialog: Azure auth-mode radios now wrap instead of overflowing the window.

macOS builds are unsigned: right-click → Open on first launch, or xattr -dr com.apple.quarantine "/Applications/Duetto.app".

Duetto v1.4.0

Choose a tag to compare

@UtopleMan UtopleMan released this 05 Aug 20:16

Install

macOS (Homebrew):

brew install --cask utopleman/duetto/duetto

Or download a build below.


Features

  • Dark mode — a Dark theme alongside Light, selectable in settings and persisted to settings.json. Applied at startup (restart to switch). Palette split into parity-checked Light/Dark dictionaries; every chrome — marks, popovers, transfer strips, desk background, selection — follows the active theme.

Fixed

  • Search bar polish — removed the dead "Names" filter chip, and gave the scoped search field symmetric inner spacing so the query text no longer touches the ⌘F hint.

macOS: unsigned build. First launch: right-click → Open, or xattr -dr com.apple.quarantine /Applications/Duetto.app. Apple Silicon → arm64, Intel → x64.

Duetto v1.2.1

Choose a tag to compare

@UtopleMan UtopleMan released this 03 Aug 15:24

Fixed

  • S3 connect no longer crashes on a bad endpoint — entering an endpoint without a scheme (e.g. minio.example.ts.net) made the AWS SDK throw at client construction, which escaped the connect dialog's error handling and crashed the app. Scheme-less endpoints now default to https://, and any connect failure is surfaced as an inline dialog error instead of crashing.

Full changelog: v1.2.0...v1.2.1

Duetto v1.2.0

Choose a tag to compare

@UtopleMan UtopleMan released this 03 Aug 06:56

Features

  • S3 / S3-compatible remote backend — connect to Amazon S3 and any S3-compatible store (MinIO, Cloudflare R2, Wasabi, Backblaze B2) with the AWS SDK for .NET, no OS mount. Access-key, AWS-profile, or anonymous auth (with optional STS session token); custom endpoint + region + path-style for non-AWS servers. The connection root lists your buckets (or a single configured bucket); each bucket browses like a folder. Full read/write support (browse, upload/download, copy/move, rename, delete, recursive search), empty folders via zero-byte prefix markers, and multipart uploads for large objects. Separate S3 protocol in the Connect dialog and s3-connections.json; the drive popover merges SFTP, SMB, and S3 connections. (docs)
  • Server-side copy / move (S3) — transfers between two panes on the same S3 connection are offloaded to the server via CopyObject instead of streaming through the client, including cross-bucket copies within the connection.

Full changelog: v1.1.0...v1.2.0

Duetto v1.1.0

Choose a tag to compare

@UtopleMan UtopleMan released this 02 Aug 13:18

Features

  • SMB / Samba remote backend — connect to SMB 2/3 shares (Windows shares, Samba, NAS) with a pure-managed client (SMBLibrary), no OS mount. User/password/domain or guest auth; the connection root lists the server's shares. Full read/write parity with SFTP (browse, copy/move, rename, delete, recursive search, atomic .part writes). Separate Connect SMB… dialog and smb-connections.json; the drive popover merges SFTP and SMB shares. (docs)
  • Server-side copy / move — transfers between two panes on the same SMB host and share are offloaded to the server instead of streaming through the client, avoiding a full download/upload round-trip.

Full changelog: v1.0.0...v1.1.0

Duetto v1.0.0

Choose a tag to compare

@UtopleMan UtopleMan released this 31 Jul 18:06

First public release of Duetto — a dual-pane, keyboard-driven file manager built with Avalonia.

Features

  • Dual-pane, keyboard-driven file browsing with per-OS window chrome (Windows, macOS, and GNOME styles).
  • SFTP remote backends — save connections, browse and transfer files over SSH, with TOFU host-key verification.
  • Live recursive search scoped to the active pane or a remote share.
  • Copy / move / delete with progress, and cross-platform Trash: Windows Recycle Bin, the FreeDesktop trash spec on Linux, and the native macOS trash API (with "Put Back" support and correct handling of other volumes).
  • Inline rename and new file / folder creation.
  • Command line: duetto [folder] opens a folder in the left pane; the app installs a duetto launcher on your PATH automatically.
  • Remembers your workspace — window position, size, and maximized state, plus each pane's last folder, restored on the next launch.

Downloads

Self-contained, single-file builds (no .NET runtime needed):

Platform Asset
macOS (Apple Silicon) duetto-1.0.0-osx-arm64.zip
macOS (Intel) duetto-1.0.0-osx-x64.zip
Windows (x64) duetto-1.0.0-win-x64.zip
Linux (x64) duetto-1.0.0-linux-x64.zip