Every release since Upstream arrived on the Mac App Store — what changed, and why. Upstream is actively developed: version 1.3 shipped on 25 August 2026.
Upstream 1.3 is the release you notice before you use it. The app was never short on features — it was short on air. Every surface has been rebuilt around one idea: an interface you read at a glance instead of squinting at.
A look that breathes
Bigger text everywhere. Nothing on screen is smaller than 11 points any more, and the protocol and date on a server card are no longer 9-point grey.
Real depth instead of borders. Cards lift off the background with a soft shadow in light mode and a clear tonal step in dark, so the app stops looking like a grid of fences.
The home shows fewer, wider server cards — each one readable from across the desk, with the protocol in a pill that turns amber when the connection is not encrypted.
A sidebar that reads like a list
Taller rows with the site badge, the address underneath, and a hover state that tells you which row will answer the click. It was missing before.
Selected, connected and hovered now look different from each other, because each carries a different kind of signal instead of three shades of the same colour.
A toolbar that says where you are
The connected site now sits in the toolbar: badge, name and the remote folder you are actually in — the one thing up there that changes while you work.
Every action has its name next to the symbol. No more hovering over nine mute icons to find out what they do.
The four FULL tools are grouped together under a single lock instead of four tiny badges scattered among the free ones.
Tabs that behave like tabs
Right-click a tab for Close Other Tabs, Close Tabs to the Left, Close Tabs to the Right and Close All Tabs. Entries that would close nothing are disabled rather than sitting there doing nothing.
Tabs are taller and now join the panel below them instead of floating above it, with the site colour running edge to edge along the top.
Comfortable or compact — your choice
New in Settings: row density. Comfortable gives the file lists room; compact fits more files on screen for anyone comparing two long trees.
Text size stays the same in both. Compact means more rows, not harder reading.
Stability: nothing waits forever
A server that accepts the connection and then goes quiet no longer hangs the app. Every reply now has a deadline — a short one for commands, a long one for the reply that ends a transfer, so a big upload is never failed just as it succeeds.
Folder Sync can no longer get stuck waiting for a queue that will never empty, and cancelling it actually stops it. If the wait is cut short, modification times are not applied: a file that never arrived should not look like it did.
Closing the window no longer kills your transfers. The app stays in the menu bar and the queue keeps running, which is what the menu bar item promised in 1.2 and could not deliver.
Fixed a crash when opening Folder Sync, another when downloading a folder as a zip after changing the local directory, and a case where reopening the window could replace live tabs with yesterday’s saved session.
Version 1.2
A home for a hundred servers
Upstream 1.2 is about the moment before the transfer: finding the right server, picking up where you left off, and trusting that the app will still be there tomorrow.
A home instead of an empty pane
Opening Upstream now shows a home: the servers you actually worked on last, the ones you pinned, and the full list — with the count of what does not fit on screen, so nothing disappears in silence.
Search finds servers by name, host, user and tag, the same fuzzy way as the command palette: type “prd” and “production” comes up.
Pin the three servers you live on. They stay at the top, in the order you pinned them.
Tags and saved views
Tags are now a real list, not a line of text: add them, remove them, and see how many servers use each one.
Save a tag filter under a name — “Clients”, “Production” — and it becomes a single entry in the sidebar and a chip on the home.
Everything you tagged in 1.1 keeps working, on this Mac and on the other one through iCloud, even if it is still running the previous version.
Pick up where you left off
Tabs reopen on launch: the same servers, the same folders, the same active tab. They come back disconnected on purpose — Upstream will not ask for a string of passwords the moment you open it.
A reopened tab shows the server you were on and the remote folder you were in, with a Reconnect button that takes you straight back there.
The window remembers its size and position again. It used to forget them at every launch, and this release explains why: it was saving them under a name that changed every time.
Menu bar
A new menu bar item: pinned and recent servers, the state of the queue, pause and resume everything, and a way back to the window. Its symbol changes with the queue — idle, working, paused.
Notifications when transfers finish or fail, only while Upstream is in the background. With the window in front you can already see everything, and a notification you do not need is a notification you turn off.
Light, dark, and 21 themes that stay readable
Light and dark are now a choice of yours, not just the system’s.
The 21 accent themes are all still here — and all of them now keep enough contrast to be read on both backgrounds. Most of the catalogue did not, and nobody had measured it before.
VoiceOver: a server in the sidebar now says its name, whether it is connected, which protocol it uses and — first of all — whether the traffic is in the clear. Before it said a name and nothing else.
It will be there tomorrow
A damaged data file no longer means an app that crashes at every launch. It starts anyway, says so, and never touches the file on disk: your servers stay where they are while you make a copy.
The storage now has a versioned schema, so this update and the next ones can add fields without losing what you saved.
Turning iCloud sync on or off now moves your saved passwords and keys between the local keychain and the iCloud one. Before, they seemed to vanish.
Version 1.1
Take control of the transfer queue
Pause, resume and reorder transfers — and find your queue still there after a restart. Plus a transfer history, server-wide search and SSH bastion support.
Transfer queue
Pause, resume and cancel any transfer, individually or all at once. Resuming continues from the exact byte it stopped at, not from the beginning.
Reorder what is waiting by dragging, or send an urgent file straight to the top.
The queue now survives quitting the app. Reconnect and Upstream offers to resume what was interrupted — it never restarts transfers on its own.
Transfer history
A new window (⇧⌘Y) records every transfer, successful or failed, with speed, duration and the exact error message.
Grouped by day, searchable, filterable by server and outcome. Export to CSV with Upstream FULL.
The history stays on your Mac and is never synced to iCloud.
On the server
Calculate the size of a remote folder, with a live count and a Stop button.
Copy the public web URL of a remote file, once you map your site’s web root in the site settings.
Copy the SSH command for a server, ready to paste into Terminal.
Search the whole server (FULL): find a file anywhere in the remote tree by name or pattern, filter by extension, and limit how deep to look.
Jump hosts (FULL): reach servers that are only accessible through an SSH bastion. ProxyJump entries are imported from your ssh config and wired up automatically.
Fixes that matter
Upload progress was wrong. On some connections the progress bar lagged far behind what had actually been sent, so a transfer could look half-finished when it was already complete — which then made pausing and resuming behave strangely. Progress now reflects what the server has really received.
Hidden files were invisible on FTP servers. “Show Hidden Files” had no effect on the remote pane, and folder sync never saw dotfiles such as .htaccess. They now appear correctly.
Fixed a crash when pausing an SFTP transfer.
Importing ~/.ssh/config now follows OpenSSH rules properly: the first value wins, and IdentityFile, ProxyJump, Match and Include are all understood.
The transfer panel separates failed transfers from completed ones, so an error can no longer be mistaken for a success.
Version 1.0.3
Faster, smarter folder sync
Synchronization compares files by size, walks the whole folder tree, and shows an interactive preview before anything moves.
Synchronization
Files are compared by size, so identical files are never re-uploaded — only what actually changed gets transferred.
Synchronization now walks the entire folder tree, including nested subfolders.
System and hidden folders are excluded by default, removing unnecessary noise.
Tree preview with cascading selection: review exactly what will be transferred before you start.
Fixes
More reliable overwrite prompts with multiple selections and hidden files.
The file panes refresh automatically after a transfer completes.
Windows and IIS servers: DOS-style directory listings are now read correctly, instead of showing up as empty folders.
Version 1.0.1
First public refinements
Stability and interface polish following the initial release.
Improvements
Interface refinements across the dual-pane browser and the transfer queue.
Connection reliability improvements on FTPS and SFTP.
Version 1.0
Upstream arrives on the Mac App Store
The first release: FTP, FTPS and SFTP in one native Swift app, with a concurrent transfer queue and Keychain security.
Highlights
FTP, FTPS (explicit and implicit) and SFTP over SSH in a single native app.
Dual-pane browser with drag & drop, Quick Look and a live protocol console.
Concurrent transfer queue with automatic resume and retry.
Credentials in the macOS Keychain, App Sandbox compliant.
Built for people who move files all day
Upstream is a native macOS client for FTP, FTPS and SFTP: a concurrent transfer queue you can pause and reorder, folder synchronization with a dry-run preview, live remote editing, and credentials kept in the macOS Keychain.