-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Normal
-
Affects Version/s: 3.0.1
-
Component/s: Plugins API
-
None
In Picard 3.0+, plugins can register custom cover art providers (api.register_cover_art_provider). If a plugin is disabled and options are saved, the disabled provider is purged from config.setting['ca_providers'] and Picard.ini. When the plugin is re-enabled, its user-configured position and enabled state are lost, reverting to fallback defaults (position 666, disabled).
Steps to Reproduce
- Install and enable a plugin that registers a CoverArtProvider (e.g. Pseudo-Releases).
- Open Options > Cover Art > Cover Art Providers, enable the provider, and move it up in the list. Save options (Make It So!).
- In Options > Plugins, uncheck/disable the plugin. Save options.
- In Options > Plugins, re-enable the plugin. Save options.
- Inspect Options > Cover Art > Cover Art Providers.
Expected Result
The provider retains its configured order and enabled checkbox state.
Actual Result
The provider is reset: placed at the bottom of the list and disabled.
Cause
In picard/ui/options/cover.py:
def save(self): ... config.setting['ca_providers'] = list(self._ca_providers())
- self.ui.ca_providers_list is populated from ext_point_cover_art_providers.
- When a plugin is disabled, its provider is unregistered from ext_point_cover_art_providers and therefore omitted from the UI list widget.
- Saving options overwrites ca_providers with only the currently visible providers, discarding entries for inactive plugins from Picard.ini.
- When the plugin is later re-enabled, cover_art_providers() in picard/coverart/providers/{}init{}.py treats it as an unknown provider, assigning position=666 and enabled=False.