srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/DEFAULTS.md8
-rw-r--r--docs/TODO.md37
2 files changed, 44 insertions, 1 deletions
diff --git a/docs/DEFAULTS.md b/docs/DEFAULTS.md
index ded5b03..e0da5ef 100644
--- a/docs/DEFAULTS.md
+++ b/docs/DEFAULTS.md
@@ -868,7 +868,13 @@ checks the config directory's `.lua` modification times once a second and
reloads when one changes. Set it to `false` for a config that does expensive
work at load time. `Mod4+Ctrl+r` still reloads on demand in either case.
-**A hand-made change is not undone by a reload.** A reload rebuilds the
+**The config file wins for anything it states.** A reload drops any live
+`srd set` override for a key the config sets itself, because the file is the
+more deliberate statement and has to be able to correct a runtime change.
+Without that rule a value changed once at runtime can never be fixed by
+editing the config: every reload puts it straight back.
+
+**A hand-made change is not undone by a reload, where the config is silent.** A reload rebuilds the
theme and general settings from the config file, which is right for a file
edit but would also wipe every live `srd set` - and the titlebar
right-click menu's "Customize" rows are all live `srd set`s. Every setting
diff --git a/docs/TODO.md b/docs/TODO.md
index e086889..df0bfae 100644
--- a/docs/TODO.md
+++ b/docs/TODO.md
@@ -1,5 +1,42 @@
# TODO / planned features - master checklist
+## "Why is there still a tint on windows": a live override the config could never take back (2026-08-28)
+
+The tint is the drop shadow. `init.lua:65` sets `general.shadows` to
+`false`, and loading that same config in a fresh compositor reports
+`shadows: false` - but the running session reported `true`. Something had
+turned shadows on at runtime, and the session had no way back.
+
+**That "no way back" is a defect I introduced.** The live-settings replay
+added earlier today re-applies every `srd set` after each config reload, so
+the titlebar menu's own Customize rows survive a save. The unintended half:
+a live override then outranked the config file *permanently*. Editing
+`init.lua` and saving could not fix it, because the reload put the override
+straight back - which is exactly the state the session was found in.
+
+Live-always-wins and config-always-wins are both wrong, in opposite
+directions. The rule now: **the config wins for anything it states, and a
+live override survives only where the config is silent.** That needs a
+distinction `values` alone cannot make, since defaults are seeded before any
+script runs and so every key looks set - the config engine now records
+which keys `srd.set` actually touched during the load, cleared and rebuilt
+each time, and restored with everything else if the reload fails.
+
+Verified end to end, both directions:
+
+ config says shadows=false -> false
+ srd set shadows true -> true
+ save an unrelated config edit -> false (the file wins)
+
+ srd set border_width 9 -> 9 (config never mentions it)
+ save an unrelated config edit -> 9 (override survives)
+
+The running session was also corrected directly with `srd set shadows
+false`, matching what its own config already asked for, so the tint is gone
+without waiting for a restart.
+
+529 tests, clippy clean.
+
## Lock screen: the avatar was never read, and the keyboard could not type most passwords (2026-08-28)
Two questions, both real gaps.