Tideline

A tidy Downloads folder, every morning

Without hiding what you just downloaded. Today's files stay loose in the root where you expect them. Everything older is filed into a folder named for the day it arrived — when the day rolls over, yesterday's files move on their own.

macOS 14 or later. Free, open source, no account, no telemetry.

~/Downloads/
├── 2026-08-17/
│   └── invoice.pdf
├── 2026-08-18/
│   ├── slides.key
│   └── screenshot.png
├── report.pdf          ← today
└── archive.zip         ← today
The same Downloads folder before and after Tideline: on the left nineteen loose files in one heap, including four artifact zips you cannot tell apart; on the right today's three still loose under their real names, and everything older filed into folders named for the day it arrived

Why

Download the same build artifact from GitHub twice and the second one lands as artifact-1.zip, the third as artifact-2.zip, and the name no longer tells you anything. So you make a folder, drag the new file into it, rename it back to what it was meant to be, and only then start working with it.

Making the folder, dragging the file in, renaming it back — none of that takes long. It is just cumbersome, every single time. Tideline is that folder, made for you every day.

Hence the idea: what if the Downloads folder were always clean? Not empty — clean. Everything that came before sits in its own folder, so the moment you download something it is the only thing in the root, under its real name, ready to work with.

What it does

Filing is the whole of it. Everything else is there because a folder that files itself still grows, and because nothing here should ever be a surprise.

Files by the day

One folder per day, or per month. Today's downloads stay loose — or the last three days, or the week, whichever you pick.

Type folders

Send every .dmg to Installers/ whatever day it arrived on. Nine to choose from, all off until you turn one on.

Preview mode

A sweep that touches nothing and then tells you exactly what it would have moved. Every destructive feature honours it.

Puts it all back

One sheet lists everything Tideline ever filed and moves it back into the root. The way out is a button, not a restore from backup.

Reclaim space

Filing tidies a folder, it never shrinks one. Duplicates, big files and old dated folders are found and shown in one place.

Nothing is deleted

Removals go to the Trash, never to unlink. A setting you regret is a drag back out.

Nothing is overwritten

A name that is already taken counts up: report.pdf, report-1.pdf, report-2.pdf.

Runs when you say

As soon as the folder changes, once a day at a time you pick, when the app starts, or any combination of the three.

Ninety seconds, every screen

The first run, a sweep, all six settings panes, Reclaim space, the activity log and the menu bar. No sound — it is a silent tour, so nothing is missed by watching it anywhere.

Every screen in the app, in the order you would meet them. The written version is the documentation.

Why it is an app and not a script

The obvious way to build this is a script on a timer. The problem is permissions: a script runs as whatever launched it, so macOS asks that process for access. In practice that means granting Full Disk Access to bash, your terminal or launchd — a blunt, all-or-nothing switch that is awkward to explain and easy to get wrong.

An app bundle has its own identity, so macOS asks a single, specific question:

“Tideline” would like to access files in your Downloads folder.

One click, scoped to one folder, revocable in System Settings. Nothing else on the disk becomes reachable.

And it stays small

Native Swift with no dependencies at all: about 3 MB to download, 9.6 MB on disk because it ships for both Apple silicon and Intel. No Electron, no bundled runtime, no helper process quietly installed beside it — one menu bar app that schedules itself, and quitting it really is the end of it.

Install

With Homebrew:

brew install --cask estruyf/tap/tideline

Or open the disk image from the latest release and drag Tideline.app onto the Applications folder beside it. Then see First launch — nothing is filed until you say so.

On Windows? There is a Windows build, in beta — the same filing rules rewritten in Rust behind a Tauri window and tray icon. Filing, type folders, the schedule and preview mode all work. Clearing, duplicates, the big-file review and putting everything back do not yet, and it starts filing without asking first. The macOS app is unaffected by any of it. What the Windows beta does →