Version 1.x was about making your library beautiful. Scan it, convert it, tag it, dress it in real cover scans, split the vinyl rips, push it to the iPod. That work was done, and it worked well.

But there was an honest gap in the app. CrateDigger was a workshop. You opened it when you had a job to do, you did the job, and you closed it. What it could not be was the app you open on a Tuesday night because you want to hear something. Version 2.0 was about closing that gap, and it has shipped.

What 2.0 fixed

You can search your own library. One field, one keystroke to reach it, results as you type, across the crate you are in or every crate you own. The crate list tells you which crates the results are in, so it doubles as a map.

The browser is no longer welded to Artist, Album and Track. Each column shows whatever category you point it at, genre, year, decade, format, rating, and every crate remembers its own arrangement.

CrateDigger keeps a record of what you play. Play count, skip count, last played, date added, rating. The STATS screen on the display reads it back: your most played record, artist and track for the month, the year, or all time.

It comes back where you left it. Paused on the same track at the same second, with the same queue. Up Next can be dragged into order. An album recorded in one piece plays without a seam between tracks. Artwork you fetch is staged and written only when you say so. And the console has a new face, with theming that finally reaches the parts that light up.

What 2.1 added SHIPPED

CrateDigger reaches the desktop. A native widget, small or medium, shows the cover and the track while a record plays, and can turn the album's booklet pages one a minute. With nothing playing it becomes a slideshow of covers from your library, the last album you played, or a line to get you digging.

The queue moves the way you expect. Up Next reorders by click, hold and drag, in the Inspector and in a rebuilt mini player whose deck now matches the main window's. And the Prep Crate empties from the browser with one key.

Phase 0: the foundations SHIPPED

Unglamorous, and everything else depended on it. Listening data moved into the shared track store: play count, skip count, last played, date added, rating. A small change to the model that unlocked a disproportionate amount of what followed.

At the same time, browser state (selection, sort and filtering) moved out of the view model and into the tested core library. That view model is the largest file in the project, and every feature got cheaper once it stopped being the place where all behaviour lived.

Phase 1: find anything SHIPPED

The search field, the sortable columns, and SEARCH as a view on the OLED display the way CNVRT and SCAN already were. A tuner sweeping for a station turned out to be exactly the right metaphor, and the hardware already had the shape for it.

Phase 4: the listening room SHIPPED

A queue you can actually edit. Resume where you left off. A stats view on the glass. Cheap to build, genuinely fun, and precisely the sort of thing an OLED panel on a piece of imaginary hardware should be doing.

Audio fingerprinting for untitled rips shipped alongside it as DEEP SCAN, in the Fix Tags window. Split a vinyl side with Record Divider and you are left holding eight files with no titles; DEEP SCAN identifies each one by what it sounds like and pairs it to the right slot on the record, which is exactly the case where reading the tags cannot help.

Next, in 2.x

macOS native notifications. A scan finishing, a conversion batch landing, a device sync done: told to you the way the system tells you things, in Notification Centre, instead of only inside a window you may have put behind something.

Extended library management. A better way of moving more files. Move Library and Consolidate exist and work, one library at a time. Moving a lot of records between folders, volumes and structures needs to be a first-class job with a plan you can read before it runs, not a menu item you brace for.

Vinyl and cassette rips, organised and tagged properly. Record Divider splits a side into tracks and DEEP SCAN names them. What is still manual is everything around that: which side, which pressing, a K7 tape's A and B, the rip's own provenance. The next pass makes organising and tagging a needle drop or a cassette transfer as quick as importing a CD.

Support for a mobile companion. This page used to say an iOS companion was a second product wearing the same name. That is still true, which is why it is a companion and not a port: it does not replace the console, it reaches it. It starts small and useful, seeing what is playing and what is up next, and grows from there.

Loudness normalisation. A shelf of records ripped across twenty years plays back at twenty different volumes. FFmpeg already ships the analysis, so this is mostly a question of where the numbers get stored and how the player applies them.

Crates that fill themselves, deferred. Phase 2 on the old plan, and the one piece of it that did not ship. It is deferred on purpose, until there has been more time to think about how it should work. The idea has not changed: a crate that is a rule set instead of a list of paths, sitting where every other crate sits, staying current on its own. What needs thought is the rule language and how a rule crate and a hand-built crate live side by side. It will not be rushed into a point release. Library health in one place, Phase 3, leaned on it (every row in that panel was going to be a smart crate), so it waits with it.

Version 3

A library for the gear. Headphones, IEMs, DACs and amps: the same care 1.x gave records, given to the hardware you listen on. What you own, what you paired it with, what you thought of it. Not measurements, not a review site. A crate for the kit.

DJ, party and mixing tools. This page also used to say CrateDigger is for the crate, not the booth, and it is still not going to try to be Rekordbox. But there is a way of playing records for a room that is closer to a party than a performance: a queue that knows the room, a crossfade that does not embarrass you, a way to hand the next pick to someone else. That is a version 3 conversation, and it starts once the library is finished being a library.

No dates

Phases are ordered by what unblocks what, not by calendar. 1.x shipped nineteen releases in seven weeks by shipping what was ready, 2.0 went through nine betas and a release candidate the same way, and that is not going to change now.

If something here is wrong, or something you need is missing, the issue tracker is open and this plan is not carved into anything. The best argument wins.