Skip to content

v0.15.2: ARCH-1 step 2 — extract SettingsStore#43

Merged
NathanNeurotic merged 1 commit into
mainfrom
feature/v0.15.2-settings-store
May 29, 2026
Merged

v0.15.2: ARCH-1 step 2 — extract SettingsStore#43
NathanNeurotic merged 1 commit into
mainfrom
feature/v0.15.2-settings-store

Conversation

@NathanNeurotic
Copy link
Copy Markdown
Owner

Summary

Second collaborator extracted from `TrayContext` per the audit's ARCH-1. No user-visible changes.

Changed

  • New `src/SettingsStore.cs` owns the `settings.json` read / write / in-memory cache / atomic-write / timestamped-backup / prune mechanics. Constructor takes the settings file path plus log callbacks. PERF-3's lock-protected cache lives there unchanged.
  • `TrayContext.Settings.cs` delegates `ReadSettingsRoot`, `WriteSettingsRoot`, `BackupSettingsFile`, and the `BackupsDir` property to a lazily-initialised `SettingsStore` field.
  • Profile-specific shape (the `LoadProfiles` / `SaveProfiles` methods that know which keys live in each profile dict) stays in `TrayContext`.

Test plan

  • `scripts/run-tests.ps1` — 53/53 green
  • FileVersion 0.15.2.0
  • Real-world: settings persistence works identically (changes survive restart; backups appear after destructive ops)

🤖 Generated with Claude Code

Second collaborator extracted from TrayContext partial. No user-
visible changes.

- New src/SettingsStore.cs owns settings.json read/write/cache/
  atomic-write/backup/prune mechanics. Constructor takes the
  settings file path + log callbacks.
- TrayContext.Settings.cs delegates ReadSettingsRoot,
  WriteSettingsRoot, BackupSettingsFile, BackupsDir to a lazy
  SettingsStore field. PERF-3 cache behavior preserved.
- Profile-specific shape logic (LoadProfiles/SaveProfiles) stays in
  TrayContext as before.

53/53 tests green, FileVersion 0.15.2.0.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@gemini-code-assist
Copy link
Copy Markdown

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@NathanNeurotic NathanNeurotic merged commit 57bf5cd into main May 29, 2026
1 check passed
@NathanNeurotic NathanNeurotic deleted the feature/v0.15.2-settings-store branch May 29, 2026 08:27
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.

1 participant