Plugin: drop login, logout, isrc-backfill, isrc-submit (out of scope per SPEC) #22

Closed
opened 2026-08-19 18:32:55 +00:00 by hermes · 3 comments
Owner

Context

SPEC.md §2 (out of scope), §5, and §12 remove these features from the first release. They are currently implemented in beetsplug/appleplaylists/__init__.py (_login, _logout, _backfill, _submit), isrc.py, and parts of sync.py.

Task

  • Remove the login and logout subcommands: the plugin must not open browsers, poll the login flow, or clear the Apple session. Apple-session management belongs to the gateway's browser UI.
  • Remove isrc-backfill and isrc-submit and delete beetsplug/appleplaylists/isrc.py (MusicBrainz client, IsrcSubmission).
  • Remove backfill_isrcs and the --write-tags option from sync.py — the plugin never writes audio-file tags.
  • Remove the isrc.* and playlist_database config blocks that only served these commands.
  • Update usage text, tests, README, and AGENTS.md accordingly.

Note: the ISRC write rule (fill empty local isrc on association) survives — it moves into the matching/match work, not this issue.

Acceptance criteria

  • beet apple offers only the SPEC command set.
  • No MusicBrainz code, --write-tags, or login-polling remains.
  • Tests updated; suite green.

Ref: SPEC.md §2, §12.

## Context SPEC.md §2 (out of scope), §5, and §12 remove these features from the first release. They are currently implemented in `beetsplug/appleplaylists/__init__.py` (`_login`, `_logout`, `_backfill`, `_submit`), `isrc.py`, and parts of `sync.py`. ## Task - Remove the `login` and `logout` subcommands: the plugin must not open browsers, poll the login flow, or clear the Apple session. Apple-session management belongs to the gateway's browser UI. - Remove `isrc-backfill` and `isrc-submit` and delete `beetsplug/appleplaylists/isrc.py` (MusicBrainz client, `IsrcSubmission`). - Remove `backfill_isrcs` and the `--write-tags` option from `sync.py` — the plugin never writes audio-file tags. - Remove the `isrc.*` and `playlist_database` config blocks that only served these commands. - Update usage text, tests, README, and AGENTS.md accordingly. Note: the ISRC *write rule* (fill empty local `isrc` on association) survives — it moves into the matching/`match` work, not this issue. ## Acceptance criteria - [ ] `beet apple` offers only the SPEC command set. - [ ] No MusicBrainz code, `--write-tags`, or login-polling remains. - [ ] Tests updated; suite green. Ref: SPEC.md §2, §12.
Author
Owner

Implemented in coop/beets-appleplaylists on main:

  • 4937fad — removed the login, logout, isrc-backfill, and isrc-submit command paths, browser polling, MusicBrainz client, audio-tag backfill helper, related options, and isrc.py.
  • d2d69a5 — removed the obsolete playlist_database plugin configuration and documented playlistmanager configuration as the sole database source.
  • Updated gateway auth errors to direct users to the gateway login page, and updated README/tests.

Verification:

  • pytest -q: 20 passed
  • python -m compileall -q beetsplug tests: passed
  • no removed-command, MusicBrainz, --write-tags, or backfill references remain in plugin code.

The full beet CLI smoke check was blocked by the host missing libstdc++.so.6; plugin-level tests and compilation pass.

Implemented in `coop/beets-appleplaylists` on `main`: - `4937fad` — removed the `login`, `logout`, `isrc-backfill`, and `isrc-submit` command paths, browser polling, MusicBrainz client, audio-tag backfill helper, related options, and `isrc.py`. - `d2d69a5` — removed the obsolete `playlist_database` plugin configuration and documented playlistmanager configuration as the sole database source. - Updated gateway auth errors to direct users to the gateway login page, and updated README/tests. Verification: - `pytest -q`: 20 passed - `python -m compileall -q beetsplug tests`: passed - no removed-command, MusicBrainz, `--write-tags`, or backfill references remain in plugin code. The full `beet` CLI smoke check was blocked by the host missing `libstdc++.so.6`; plugin-level tests and compilation pass.
Author
Owner

Implementation is pushed in 4937fad and d2d69a5, but issue 22 is reopened because AGENTS.md could not be updated: Hermes protects agent-instruction files and the edit approval prompt timed out. The file still mentions beet apple login and beetsplug/appleplaylists/isrc.py; no such references remain in plugin code or the README. A user-approved/manual edit of AGENTS.md is still required to satisfy the documentation acceptance item.

Implementation is pushed in `4937fad` and `d2d69a5`, but issue 22 is reopened because `AGENTS.md` could not be updated: Hermes protects agent-instruction files and the edit approval prompt timed out. The file still mentions `beet apple login` and `beetsplug/appleplaylists/isrc.py`; no such references remain in plugin code or the README. A user-approved/manual edit of `AGENTS.md` is still required to satisfy the documentation acceptance item.
hermes reopened this issue 2026-08-20 19:00:22 +00:00
Author
Owner

Delivered in merged PR #36 (cb442af). Issue-specific implementation commits:

  • #22: 4937fad (completed by the SPEC-aligned documentation in 02d5954)
  • #30: 1e245f2
  • #31: 9186be5
  • #32: 0a8ae97
  • #33: 02d5954

Verification: 95 tests passed; focused Ruff checks, compileall, diff checks, isolated-BEETSDIR command smoke testing, and package build all passed. Issue #34 remains open by maintainer request for the deferred real-library acceptance run.

Delivered in merged PR #36 (`cb442af`). Issue-specific implementation commits: - #22: `4937fad` (completed by the SPEC-aligned documentation in `02d5954`) - #30: `1e245f2` - #31: `9186be5` - #32: `0a8ae97` - #33: `02d5954` Verification: 95 tests passed; focused Ruff checks, compileall, diff checks, isolated-`BEETSDIR` command smoke testing, and package build all passed. Issue #34 remains open by maintainer request for the deferred real-library acceptance run.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coop/beets-appleplaylists#22
No description provided.