Repository navigation
Replies: 1 comment
|
Confirmed this issue on The symptom was exactly:
Environment:
I confirmed that the problem was not filesystem permissions or a stale The problematic validation was effectively comparing:
against For volatile fields such as I patched
After rebuilding the Docker image with this patch and restarting the container:
ui-onboarding:
welcomeNoticeVersion: "2026-08-13.1"So the document-faithful read-back validation appears to resolve the issue on Thanks for documenting the root cause here. This also provides a useful regression case for volatile settings persistence. |
Uh oh!
There was an error while loading. Please reload this page.
Draft issue 2: config-editor edit() read-back validation permanently fails for entries that declare volatile fields
Version: dsh-v0.1.7-rc.2 (commit 477b4f4)
Summary.
edit()validates a write by reading the entry back through plugin composition("take the first row with the same id / compose via plugins") and comparing it to the intended
nextconfig. For entries that declare volatile fields (e.g. ui-settings-general'swelcomeNoticeVersion), composition strips or rewraps the volatile fields, so the composed valuecan never equal a
nextthat contains them. Every such edit is rejected as"overridden by home patch" — silently, because the protocol returns
ok:falseby design withoutraising. Non-volatile fields in the same namespace (e.g. font size) fail along with them.
Related observation.
SettingsForms.writeis volatile-only by design (entries withoutvolatile fields throw "has no volatile fields"), which confirms volatile handling is special
cased — but the edit() read-back comparison was never adjusted for it.
Reproduction elements.
welcomeNoticeVersionis the shipped example (dsh-client-ui-settings-models client bundle,settings-general section).
edit()on that entry to set the volatile field (e.g. acknowledging the welcomenotice sets
welcomeNoticeVersion).fields stripped/wrapped) against
next(volatile fields present); equality never holds;the write is reported as overridden and effectively refused/rolled back at the settings
layer. No error is surfaced.
Suggested direction (what we did locally). Make the read-back validation
document-faithful: after writing,
yaml.load(document), merge rows with the same id from thedocument itself, and compare that merged config against
next. This compares what was actuallypersisted instead of a composed projection, and is insensitive to volatile wrapping. Patch:
patches/dsh-config-editor@0.1.7-rc.2.patch(20 lines). After the patch: welcome-noticeacknowledgement both disappears and persists (the
welcomeNoticeVersionrow lands in theprofile patch), and font-size changes (14→15, ui-theme/fontSize) apply and persist; full chain
verified with zero console errors.
All reactions