Skip to content

fix(config): preserve unknown config keys on save - #1675

Merged
soramanew merged 2 commits into
caelestia-dots:mainfrom
dxnnv:fix/config-preserve
Jul 15, 2026
Merged

fix(config): preserve unknown config keys on save#1675
soramanew merged 2 commits into
caelestia-dots:mainfrom
dxnnv:fix/config-preserve

Conversation

@dxnnv

@dxnnv dxnnv commented Jul 6, 2026

Copy link
Copy Markdown
Member

Summary

Preserve unknown keys from the loaded shell.json when saving config, then merge unknown keys back into the serialized output. This prevents the shell from removing unknown keys in the config, which can be an issue when keys for features that are in development are present, or for configurations designed for forks that are loaded during a build of the upstream shell. Known Qt-meta properties are still authoritative, so normal edits and resets continue to work as expected.

Testing

  • Tested behavior with versus without the patch. Upstream removes unknown keys from the config, while the version present in this PR preserves them.
  • Key sorting and loading of known properties continues to work the same as previously.
  • Clang formatting passes without errors.

dxnnv and others added 2 commits July 6, 2026 19:25
Keep a copy of the last loaded config JSON and merge unknown keys back into
the serialized output before writing it to disk. This prevents the config save
workflow from pruning unsupported or future options while still allowing known
config properties to be updated normally.

@soramanew soramanew left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@soramanew
soramanew merged commit 6e57008 into caelestia-dots:main Jul 15, 2026
3 checks passed
@dxnnv
dxnnv deleted the fix/config-preserve branch July 15, 2026 08:18
YashMahawa pushed a commit to YashMahawa/shell that referenced this pull request Jul 23, 2026
Keep a copy of the last loaded config JSON and merge unknown keys back into
the serialized output before writing it to disk. This prevents the config save
workflow from pruning unsupported or future options while still allowing known
config properties to be updated normally.

Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
DaveLewis360 added a commit to DaveLewis360/shell that referenced this pull request Jul 30, 2026
* upstream/main:
  fix: use GNUInstallDirs for install dirs (caelestia-dots#1762)
  fix: fp precision for nexus
  fix: nominatim compliance (caelestia-dots#1752)
  [CI] chore: update flake
  fix: repeated low battery warnings (caelestia-dots#1477)
  refactor: change IP-lookup API + handle retry on rate limited (caelestia-dots#1734)
  fix: eager load certain services (caelestia-dots#1733)
  feat: add utilities panel confs to nexus (caelestia-dots#1725)
  [CI] chore: update flake
  fix: file system model sorting
  fix: fully round toggled network filter chips
  feat: add saved networks sub page to nexus (caelestia-dots#1722)
  feat: cap networks shown in nexus (caelestia-dots#1719)
  fix: nexus network null warnings
  fix: battery time calc
  feat: nexus VPN section with provider management (caelestia-dots#1605)
  fix: add qtimageformats to nix qs dep (caelestia-dots#1716)
  ci: add nix build workflow (caelestia-dots#1715)
  fix: handle > INT_MAX player lengths overflowing in lyrics (caelestia-dots#1648)
  feat: hidden networks, per-network settings and IPv4 config (caelestia-dots#1604)
  fix: key ZFS filesystems by pool in storage service (caelestia-dots#1673)
  fix: support delayed "xesam:artist" for now playing toast (caelestia-dots#1700)
  fix: preserve unknown config keys on save (caelestia-dots#1675)
  fix: populate pipewire nodes immediately (caelestia-dots#1699)
  fix: launcher action searching (caelestia-dots#1695)
  chore: fix lint warnings (caelestia-dots#1705)
  [CI] chore: update flake
  [CI] chore: update flake
  fix: improve compact tray styling
  refactor: use Item instead of Loader for bar entries (caelestia-dots#1663)
  refactor: improve state handling & add component hooks (caelestia-dots#1661)
  fix: ethernet devices incorrect end rounding
  fix: text field outline outside of widget bounds
  feat: add lock howdy support (caelestia-dots#1515)
  fix: don't animate calendar today indicator
  chore: remove unused Tooltip component
  fix: menu/popup overlays overriding cursor shape
  feat: improve text controls (caelestia-dots#1647)

# Conflicts:
#	modules/bar/Bar.qml
#	modules/bar/BarWrapper.qml
#	modules/bar/components/Tray.qml
#	modules/drawers/ContentWindow.qml
#	modules/drawers/Interactions.qml
#	modules/drawers/Panels.qml
#	modules/lock/NotifGroup.qml
#	services/Players.qml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants