mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-10-05 06:45:09 +00:00
fix(web): auto_update and other core settings are not orphaned plugins (#589)
v3.4.0 shows "Plugin Config Warning - In config but not installed: auto_update. Reinstall via the Plugin Store, or remove these entries from config.json." auto_update is the core weekly-update setting from #581. Reconciliation treated every top-level dict not in its private _SYSTEM_CONFIG_KEYS list as a plugin id, and #581 could not know to extend that list. - Move core top-level keys into src/core_config_keys.py (CORE_CONFIG_KEYS) and use it in reconciliation. Tests fail if a config.template.json key or a key written by the general-settings save is missing from it. - A secrets-file key only counts as a non-plugin when no installed plugin has that id. Plugin secrets are namespaced by id, so installed plugins with secrets were reported as missing from config on every run. - still_unresolved() drops "not on disk" findings whose id is no longer a plugin entry in config, so a stored verdict clears without a restart. - A plugin whose id is a core key is skipped with a warning, and the fix never writes a plugin stub over or in place of a core setting. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
"""Top-level config.json keys that belong to the LEDMatrix core, not to plugins.
|
||||
|
||||
config.json mixes two kinds of top-level section: core settings (``display``,
|
||||
``schedule``, ``auto_update``, ...) and one section per plugin, keyed by plugin
|
||||
id. Anything that needs to tell them apart -- plugin-state reconciliation above
|
||||
all -- must use this list, not a private copy of it.
|
||||
|
||||
A private copy is what went wrong: #581 added a top-level ``auto_update``
|
||||
section, reconciliation's own list did not know about it, and every device with
|
||||
the new setting was told "In config but not installed: auto_update. Reinstall
|
||||
via the Plugin Store, or remove these entries from config.json" -- advice that
|
||||
deletes a real core setting.
|
||||
|
||||
When you add a top-level core setting, add its key here. The tests in
|
||||
``test/test_core_config_keys.py`` fail if a top-level key in
|
||||
``config/config.template.json``, or one written by the general-settings save
|
||||
endpoint, is missing from this list.
|
||||
"""
|
||||
|
||||
CORE_CONFIG_KEYS = frozenset({
|
||||
# config/config.template.json
|
||||
'web_display_autostart',
|
||||
'auto_update',
|
||||
'schedule',
|
||||
'dim_schedule',
|
||||
'timezone',
|
||||
'target_fps',
|
||||
'location',
|
||||
'display',
|
||||
'sync',
|
||||
'plugin_system',
|
||||
# Older or optional core sections still found in existing config files.
|
||||
'logging',
|
||||
'network',
|
||||
'system',
|
||||
'vegas_scroll_speed',
|
||||
'vegas_separator_width',
|
||||
'vegas_target_fps',
|
||||
'vegas_buffer_ahead',
|
||||
'vegas_plugin_order',
|
||||
'vegas_excluded_plugins',
|
||||
'vegas_scroll_enabled',
|
||||
})
|
||||
Reference in New Issue
Block a user