Repository navigation
feat(theme): apply a theme saved by any process - #103
Merged
Merged
Conversation
An operator runs several windows, one process each, over one configuration directory. The theme is shared by every window, but a saved theme took effect only at the next start, and only in the process that saved it. Every process now watches the app/ section folder. A change is loaded once per quiet burst on the data scheduler and a changed theme is applied on the UI thread, so a theme saved by any window switches all of them within about two seconds. The watch also loads once when it starts, so a save made while a process was still starting reaches it. A buffer overflow reloads; any other watcher error, a refused or missing folder, is reported once and the folder is opened again every 5 s. A failed load reaches the window's message panel and keeps the theme. A theme-only save shows no restart notice, a save that also changes another key says the theme is already applied, and an open settings dialog follows the theme its window applied. Section files are read and copied with FileShare.ReadWrite | Delete, and the save probe shares the same way, so one process reading or saving never blocks another process's File.Replace. The lost update between two simultaneous saves is recorded in the backlog. Claude-Session: https://claude.ai/code/session_01PfZJa7neMMKPzycFR6iuhD
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
An operator runs several windows, one process each, over one configuration directory. A saved theme took effect only at the next start, and only in the process that saved it.
What changed
Group D (Task 8) of
docs/plans/20260929-window-per-process.md.app/. A change is loaded once per quiet burst, and a changed theme is applied on the UI thread: a theme saved by any window switches all of them within about 2 s. The watch also loads once at start, so a save made while a process was still starting reaches it.FileShare.ReadWrite | Delete, so one process reading or saving never blocks another process'sFile.Replace. The lost update between two simultaneous saves is recorded indocs/plans/backlog.md.The plan stays in
docs/plans/; Groups E-G follow. #90 stays open: it is wider than this group.Verification
dotnet test SemiPlot.slnx: 1547 unit and 136 integration tests pass. The affected test classes also pass on Linux (mcr.microsoft.com/dotnet/sdk:10.0, non-root): 154 tests. Every review regression has a test that failed before its fix.Error, a recreated one raises nothing, and a folder renamed away is followed.File.Replacesucceeds against the new share modes and fails against the old ones.Per-task commits before collapse
https://claude.ai/code/session_01PfZJa7neMMKPzycFR6iuhD