Skip to content

taxis: artist alias symlink support #162

@forkwright

Description

@forkwright

Context

Artists rename. Mandolin Orange became Watchhouse in 2021. Filesystem and DB need to know both names so that:

  • Files filed under the old name are findable
  • Search by old name resolves to the canonical entity
  • New ingests go to the canonical directory automatically

What

When taxis renames an artist (or detects a known alias on import), create a symlink at the old artist directory pointing to the new canonical directory:

```
/library_root/Mandolin Orange -> Watchhouse
```

The symlink is benign for downstream consumers (Plex sees a separate "artist" with no files; harmonia recognizes it as an alias via `artist.toml`).

Track aliases in `artist.toml [aliases]` section:

```toml
[artist]
name = "Watchhouse"

[aliases]
"Mandolin Orange" = "renamed 2021"
```

Same pattern applies to book/audiobook authors when they're known to publish under multiple names (`author.toml [aliases]`).

What this requires

  1. Sidecar reader/writer (depends on issue: `taxis: TOML sidecar reader/writer`)
  2. `taxis::import` recognizes the `[aliases]` section and creates the symlink during import
  3. Scanner recognizes symlinks at the artist root and skips them (don't double-scan)
  4. `harmonia-db` artist/author tables get an `aliases` JSON column or join table for queryable alias resolution

Files

  • `crates/taxis/src/import/` (symlink creation logic)
  • `crates/taxis/src/scanner/` (skip symlink artists)
  • `harmonia-db` migration for aliases storage
  • Sidecar schema additions

Acceptance

  • Manual rename of an artist directory creates a symlink at the old name pointing to the new name
  • `artist.toml [aliases]` section is read on scan and the symlink is created if missing
  • Scanner does not double-scan files reachable via the symlink
  • Search by old name returns results for the new canonical artist
  • Same behavior for book/audiobook authors

Reference

Real-world examples: Mandolin Orange → Watchhouse (band rename 2021). Hardcoded in the music migration script's `ARTIST_ALIASES` map at `~/menos-ops/scratch/migrate-music-canonical.py`.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requeststorage-canonicalCanonical filesystem storage layout work

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions