-
Type:
New Feature
-
Resolution: Fixed
-
Priority:
Normal
-
Affects Version/s: None
-
Component/s: Plugins API
-
None
Plugins currently have no official way to store volatile per-machine data (window positions, dialog geometry, last-used directory paths, dismissed warning flags, UI state).
Today a plugin must either:
- Use plugin_config — but this participates in profiles and gets synced, which is overkill for transient UI state
- Reach into global_config.persist — undocumented, pollutes the global persist namespace, no isolation between plugins
Proposal:
Add api.plugin_persist to the plugin v3 API — a plain ConfigSection (no profile participation) namespaced under [plugin_persist.<uuid>], with the same register_option() / [] access pattern as plugin_config:
def enable(api): api.plugin_persist.register_option('last_directory', '') api.plugin_persist.register_option('dialog_dismissed', False) api.plugin_persist['last_directory'] = '/home/user/music' last_dir = api.plugin_persist['last_directory']
This gives plugins a clean separation:
- plugin_config: user-configurable settings (profile-aware, synced)
- plugin_persist: volatile per-machine state (no profiles, disposable)
Data in plugin_persist may be cleared during major version upgrades (same semantics as core persist).