# mcol
Terminal browser for an MPD release archive, written in Chez Scheme.
The input directory must contain `all.txt`. Its non-empty lines are
slash-separated release paths, read as:
- `artist/album`
- `label/artist/release` (or a longer label/artist/release path)
Parent paths are not counted as releases. mcol scans the catalog and recognized
dated lists without a date cutoff:
- `YEAR/MONTH/dailies/YYYY-MM-DD.txt`, or historical `DD_MM_YYYY.txt`
- `YEAR/dailies/YYYY-MM-DD.txt` as a fallback when a month-local daily is absent
- `YEAR/dailies/stdin_playlist_YYYYMMDD*.txt` as a fallback when no daily exists
- `YEAR/MONTH/1_..._....txt` through `YEAR/MONTH/4_..._....txt` for weekly lists
`MONTH` is a full English month name. Multiple session playlists for a date are
merged. Weekly and daily totals are compared in the Weeks view, never combined.
Files below `mixes/` or `labels/` are ignored. `--strict` rejects malformed
filenames in recognized daily and weekly locations.
## Run
Requires Chez Scheme 10.4 or newer. Playback requires `mpc`.
```sh
make tui INPUT=/path/to/releases
```
Input is chosen from `--input`, then `MCOL_INPUT`, then the current directory:
```sh
export MCOL_INPUT=~/src/mtmn.name/releases
make tui
```
A small runnable demo is included in [`demo/`](demo/README.md):
```sh
make tui INPUT=demo
```
## Keys
```text
m months w weeks l labels
a artists s search r random play
p play release q queue release
nn next page pp prev page b back
? help / filter
```
Enter a row number to open it. Commands such as `:month 2026-08`,
`:day 2026-08-11`, `:label Warp`, `:artist Autechre`, and `:search Autechre`
are also accepted.
`r` prompts for a random-release count (default: 5). Use `p 4 5 2` to append
visible releases 4, 5, and 2 and start the first one. Use `q 4 5 2` to append
them without changing playback.
## Build and install
```sh
make build
make test INPUT=/path/to/releases
make install # /usr/local
make install PREFIX=~/.local
```
See `mcol(1)` after installation. Set `NO_COLOR=1` to disable colour.