/
/
/
# What does this implement/fix? When a music provider is removed, its items are stripped from the library one by one. The provider mapping rows were deleted *before* the library item itself, so if removing the item then failed, the item stayed behind with no provider attached to it. Such an item can never be played and is not picked up by the retry, because that retry only looks at the (already deleted) mapping rows. On top of that, the daily cleanup that removes these leftovers never covered podcasts and audiobooks, so those stayed in the library forever. Opening one resulted in a confusing internal error instead of a clear "not found" message. **Related issue (if applicable):** - n/a ## Types of changes - [ ] Bugfix (non-breaking change which fixes an issue) — `bugfix` - [ ] New feature (non-breaking change which adds functionality) — `new-feature` - [ ] Enhancement to an existing feature — `enhancement` - [ ] New music/player/metadata/plugin provider — `new-provider` - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) — `breaking-change` - [ ] Refactor (no behaviour change) — `refactor` - [ ] Documentation only — `documentation` - [x] Maintenance / chore — `maintenance` - [ ] CI / workflow change — `ci` - [ ] Dependencies bump — `dependencies` Changes: - Remove the library item first and let that clear its provider mappings, so a failed removal leaves the item intact and can simply be retried. - Include podcasts and audiobooks in the periodic cleanup of leftover library items. - Report a clear "not found" error for a library item that has no provider left, instead of an internal error. - As a side effect, play history and audio analysis records belonging to the removed provider are now properly cleaned up too. ## Checklist - [x] The code change is tested and works locally. - [x] `pre-commit run --all-files` passes. - [x] `pytest` passes, and tests have been added/updated under `tests/` where applicable. - [ ] For changes to shared models, the companion PR in `music-assistant/models` is linked. - [ ] For changes affecting the UI, the companion PR in `music-assistant/frontend` is linked. - [x] I have read and complied with the project's [AI Policy](https://github.com/music-assistant/.github/blob/main/AI_POLICY.md) for any AI-assisted contributions. - [ ] I have [raised a PR against the documentation repository](https://github.com/music-assistant/music-assistant.io/blob/main/CONTRIBUTING.md) targeting the main or beta branch as appropriate.