You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: refresh README + wiki to current state (v0.1.58)
Bring the living docs in line with this release cycle's changes:
- Three one-click presets (Reset all to defaults / Apply recommended /
Apply extreme) replace the single "Apply recommended" everywhere they
were described (README, Home, Installation, STAGED-APPLY-ARCHITECTURE).
- Two-tier monitoring cadence documented: only display settings poll
every 30s; the ~40 set-and-forget settings re-check at startup, on
resume/unlock/display-change events, and a 10-min backstop (README,
Home, Architecture-rationale, Source-file-reference).
- Auto-apply circuit breaker + the [CIRCUIT] (and [EXTRESET]/[SESSION]/
[SNAPSHOT]/[MEM]) log line types documented; Logging.md examples
converted to the current bracketed line-type format.
- Richer Learn more (per-choice pros/cons + verify/apply/reverse
PowerShell block) reflected in README + Source-file-reference.
- Source-file-reference: added ~25 missing Services/Models/Monitor rows
(MonitorVolatility, AutoApplyCircuitBreaker, RecommendedPreset, the 9
Windows-AI monitors, DrrInterop caching, ChoiceTradeoff, etc.).
- Home/README tab count nine -> ten (added Debloat); Architecture
"why not events" + "no DRR yet" sections rewritten to match reality.
- Fixes: CONTRIBUTING fixedMonitors array name; Security/Scorecard
de-staled (real disclosure channel, Signed-Releases now 10/10,
non-numeric test/action counts).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ It's also paranoid about not making your gaming worse. Polling pauses entirely d
31
31
## Highlights
32
32
33
33
- 🎯 **29+ monitored settings** spanning display, security, performance, capture, input, privacy/telemetry, network latency, system tuning, and Windows services
34
-
- ⚙️ **One-click Recommended preset**-- General tab button stages the gaming-optimized configuration across every setting (Want + Monitor + Auto-apply). Idempotent, so re-running it after a future update picks up only the new settings.
34
+
- ⚙️ **Three one-click presets**on the General tab -- **Apply recommended** (safe gaming preset: keeps Memory Integrity / VBS on, leaves contested network tweaks to you), **Apply extreme** (every gaming tweak on, including Memory Integrity / VBS off and the contested Nagle / NIC tweaks, with Monitor + Auto-apply on for every setting — confirms first), and **Reset all to defaults** (stages everything back to Windows defaults). The recommended preset is idempotent, so re-running it after a future update picks up only the new settings.
35
35
- 🎮 **Pauses during gameplay** — fullscreen, borderless, *and* during benchmark runs (3DMark, Cinebench, Geekbench, etc.)
36
36
- ⚡ **One-click apply** with a per-setting auto-apply opt-in
37
37
- 🪟 **Native Win11 Fluent design** with light / dark / system themes
@@ -44,18 +44,18 @@ It's also paranoid about not making your gaming worse. Polling pauses entirely d
44
44
45
45
<imgsrc="docs/screenshots/settings-global-gaming.png"width="780"alt="GamerGuardian Settings — Global gaming tab" />
46
46
47
-
*Settings → Global gaming tab. Each card shows the setting name, a short description, current value, Windows default, and per-setting Monitor / Want / Auto-apply controls. Reboot-required settings get a yellow badge. The other tabs cover General preferences, **Privacy** (Advertising ID, Activity History, Cross-Device Platform, Tailored experiences), **Network** (Nagle's algorithm, NIC power management), Windows services, Windows AI, per-display Display settings (HDR / refresh / DRR), and CPU / Power.*
47
+
*Settings → Global gaming tab. Each card shows the setting name, a short description, current value, Windows default, and per-setting Monitor / Want / Auto-apply controls. Reboot-required settings get a yellow badge. The other tabs cover General preferences (three one-click presets), **Privacy** (Advertising ID, Activity History, Cross-Device Platform, Tailored experiences, speech, inking), **Debloat** (ads / nags / suggested content), **Network** (Nagle's algorithm, NIC power management), Windows services, Windows AI, per-display Display settings (HDR / refresh / DRR), and CPU / Power.*
48
48
49
49
</div>
50
50
51
51
## What it watches
52
52
53
53
For each setting you choose three things: **Monitor** (watch it or not), the **desired value** (**Want** — shown as Enabled/Disabled, or Gaming/Default where the registry meaning is inverted), and whether to **auto-apply silently** when it drifts. Changes are staged until you click **Apply**, every change is reversible, and each one is recorded in `changes.log`.
54
54
55
-
Settings live across **nine tabs**. The lists below cover the monitored settings; for a complete walkthrough of every tab and what each setting means, see the **[Settings & tabs guide](https://github.com/carterscode/GamerGuardian/wiki/Settings-and-tabs)** (and [SETTINGS-REFERENCE.md](docs/SETTINGS-REFERENCE.md) for the full per-setting reference).
55
+
Settings live across **ten tabs**. The lists below cover the monitored settings; for a complete walkthrough of every tab and what each setting means, see the **[Settings & tabs guide](https://github.com/carterscode/GamerGuardian/wiki/Settings-and-tabs)** (and [SETTINGS-REFERENCE.md](docs/SETTINGS-REFERENCE.md) for the full per-setting reference).
56
56
57
-
-**General** — theme, launch-at-startup, polling interval, update check, change log, and the **one-click Recommended setup**button that stages the gaming-optimized config across every tab.
-**General** — theme, launch-at-startup, polling interval, update check, change log, and the **three one-click preset buttons**(Apply recommended / Apply extreme / Reset all to defaults) that stage a whole-app config across every tab.
-**CPU / Power** — detected CPU, **Power Throttling**, a CPU-aware custom gaming **power plan** (Balanced clone tuned for your CPU — e.g. X3D core-parking), and dual-CCD routing prerequisites. See [CPU-aware power plans](https://github.com/carterscode/GamerGuardian/wiki/CPU-Power-Plans).
60
60
-**Recommended BIOS** — a firmware checklist (Resizable BAR, XMP/EXPO, CPPC mode, etc.); guidance only, nothing is changed.
-**~23 MB working set** at idle, **~10 ms** per polling tick (default 30 s interval).
111
+
-**~23 MB working set** at idle, **~10 ms** per polling tick. Only the four display settings (HDR, refresh rate, resolution, DRR) are polled on the fast interval (default 30 s); the ~40 set-and-forget registry / policy / service settings are re-checked at startup, on resume / unlock / display-change events, and on a slow 10-minute backstop instead — so the fast tick does almost nothing most of the time.
112
112
-**Pauses entirely** during fullscreen games, borderless-fullscreen games, and known benchmarks (3DMark, Cinebench, Geekbench, AIDA64, Unigine, OCCT, etc.).
113
113
-**No process spawning** for reads. Power plan reads/writes go through `powrprof.dll` directly.
114
114
-**No kernel hooks, no drivers, no admin** — only HKLM writes need elevation, which prompts UAC.
@@ -139,14 +139,14 @@ GamerGuardian doesn't ask you to take its word for it. Independent ways to confi
139
139
2. The Apply Results window shows before / target / after for each setting
140
140
3. The footer **Verify all** button re-reads every monitored setting and writes a `[SNAPSHOT]` to `changes.log` -- nothing is applied
141
141
4. Every change writes a copy-pasteable PowerShell **apply** and **verify** command to [`changes.log`](https://github.com/carterscode/GamerGuardian/wiki/Logging)
142
-
5. Verbose log lines include `[SESSION]` (version + OS + elevation), `[APPLY-START]` / per-change record / `[APPLY-END]`, `[EXTRESET]` (Windows reverted a value we'd applied), and `[PREF-STAGE]` (a draft toggle, not yet applied)
142
+
5. Verbose log lines include `[SESSION]` (version + OS + elevation), `[APPLY-START]` / per-change record / `[APPLY-END]`, `[EXTRESET]` (Windows reverted a value we'd applied), `[CIRCUIT]` (the auto-apply circuit breaker stopped re-applying a setting Windows keeps reverting, so a stubborn GPO-managed value can't trigger a UAC prompt every cycle), and `[PREF-STAGE]` (a draft toggle, not yet applied)
143
143
6.`GamerGuardian.exe --test` dumps every monitor's current readout to `%TEMP%`
144
144
7. Every Release ships with a [`SHA256SUMS.txt`](https://github.com/carterscode/GamerGuardian/wiki/Security#reproducibility) you can verify against your local download
145
145
8. Every monitor is one ~30-line file in [`src/GamerGuardian/Monitors/`](src/GamerGuardian/Monitors/)
146
146
147
147
## Documentation
148
148
149
-
-[**Settings reference**](docs/SETTINGS-REFERENCE.md) -- per-setting What / Why / How-it-helps / Per-scenario recommendation / Risks / Reversal. Generated from [`SettingDocsCatalog.cs`](src/GamerGuardian/Services/SettingDocsCatalog.cs); a unit test asserts they can't drift.
149
+
-[**Settings reference**](docs/SETTINGS-REFERENCE.md) -- per-setting What / Why / plain-English pro-con of each choice / Per-scenario recommendation / Risks / Reversal, plus a **Command line (PowerShell)** block with copy-paste verify, apply-gaming, and reverse-to-default commands. Generated from [`SettingDocsCatalog.cs`](src/GamerGuardian/Services/SettingDocsCatalog.cs); a unit test asserts they can't drift.
150
150
-[**Staged-apply + verbose logging architecture**](docs/STAGED-APPLY-ARCHITECTURE.md) -- how the draft config, MonitorService, ChangeLogger, and EXTRESET detection fit together.
Copy file name to clipboardExpand all lines: docs/STAGED-APPLY-ARCHITECTURE.md
+23-1Lines changed: 23 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -117,6 +117,25 @@ Long-form documentation per setting. Populated in `Services/SettingDocsCatalog`.
117
117
4. Each gets its own session id. Corrective applies log as `source=auto-revert` with `ExternalResetDetected = true` and the current stickiness count, so a single `grep '\[EXTRESET'` / `grep 'auto-revert'` answers "what does Windows keep undoing, and what's GamerGuardian doing about it?"
118
118
5. Verification failures move the setting into the 15-minute backoff so a stubborn setting doesn't pop UAC every 30 seconds.
119
119
120
+
### User clicks one of the three General-tab preset buttons
121
+
122
+
The General tab has three one-click preset buttons. **All three stage into the draft only** -- they never touch the live `_config` or `config.json`. Like every other staged change, they commit only when the user later clicks **Apply** or **Save & close**. All three route through the shared `RunPreset(presetName, apply)` helper in `SettingsWindow.xaml.cs`:
123
+
124
+
1. The button's click handler calls `RunPreset("…", () => RecommendedPreset.<Builder>(_draft))`.
125
+
2. The builder mutates `_draft` directly (no per-row `PropertyChanged` fires) and returns a `RecommendedPreset.Result(SettingsChanged, SettingsAlreadyCorrect, ChangeDescriptions)`. Each per-setting delta it stages is logged as an ordinary `[PREF-STAGE]` line with `field=preset` (see below) -- **no new line type**.
126
+
3.`RunPreset` bumps `_pendingCount += result.SettingsChanged` (so Save & close doesn't short-circuit), calls `UpdatePendingStatus()`, then rebuilds **every** row collection (`LoadGlobals` / `LoadDisplays` / `LoadServices` / `LoadWindowsAi` / `LoadPrivacy` / `LoadDebloat` / `LoadNetwork` / `LoadCpuTabs`) so the UI reflects the mutated draft. The row setters short-circuit on equality, so rebinding doesn't double-log.
127
+
4.`RunPreset` updates `RecommendedStatusText` and pops an informational summary MessageBox ("Staged N change(s)… Click Apply or Save & close to commit").
128
+
129
+
The three buttons (`Services/RecommendedPreset.cs`):
130
+
131
+
| Button | Builder | What it stages | Confirmation? |
132
+
|---|---|---|---|
133
+
| Apply recommended |`RecommendedPreset.ApplyToDraft`| Conservative gaming preset: the hand-picked subset of toggles at their recommended gaming value, plus services / displays / the CPU-aware power plan. **Memory Integrity / VBS and UWP AI-app removal are deliberately excluded** (security tradeoff + irreversible). Monitor + Auto-apply turned **on** for each touched setting. | none |
134
+
| Apply extreme |`RecommendedPreset.ApplyExtremeToDraft`| Every managed toggle at its most-aggressive gaming value -- including **Memory Integrity / VBS off** and the contested **Nagle / NIC** tweaks -- plus services, displays and the CPU-aware power plan. Monitor + Auto-apply **on**. Still excludes irreversible UWP AI-app removal. | yes -- a warning `MessageBox` (kernel-driver protection / anti-cheat / reboot) before `RunPreset` is called |
135
+
| Reset all to defaults |`RecommendedPreset.ResetToDefaultsToDraft`| Every managed setting back to its Windows out-of-box value, with Monitor + Auto-apply turned **off** so a subsequent Apply restores defaults and GamerGuardian stops re-asserting. Displays are only un-monitored (their Want is hardware-specific). UWP AI-app removals are not touched. | yes -- a warning `MessageBox` before `RunPreset` is called |
136
+
137
+
All three are **idempotent**: each per-setting helper compares the draft's `(DesiredOn/Want, Monitor, AutoApply)` triple to the target and stages (and logs) only the deltas; a second click when everything already matches stages zero changes and reports "already correct". The `[PREF-STAGE]``settingName` carries a `[Recommended]` / `[Extreme]` / `[Reset]` tag prefix so the log shows which preset staged each delta.
138
+
120
139
## Log schema (`changes.log`)
121
140
122
141
| Marker | Written by | Meaning |
@@ -127,6 +146,7 @@ Long-form documentation per setting. Populated in `Services/SettingDocsCatalog`.
127
146
|`[manual ]` etc. per-record |`LogApplyResults`| One verbose entry per change. Multi-line: settingId, location, before/desired/after, applyCmd, verifyCmd, elapsedMs, status. |
128
147
|`[APPLY-END ]`|`LogApplyResults`| Same session id. Includes `verified=N/M` summary and total elapsed ms. |
129
148
|`[EXTRESET ]`|`LogExternalReset`| Windows or another tool changed a value we'd previously applied. Includes how long the previous applied value held and the current stickiness count. |
149
+
|`[CIRCUIT ]`|`LogCircuitBreaker`| The auto-apply circuit breaker tripped: Windows kept reverting a setting, so GamerGuardian suspended re-applying it for a cooldown (avoids spawning a UAC prompt / display reconfig every poll). Multi-line: `settingId`, `reason` (revert count -- "Windows reverted this N time(s) in a row"), `cooldown` (not auto-applied for D; retries once after), `action` (leave it notify-only, or untick Auto-apply). |
130
150
|`[PAUSE ]`|`LogPauseEvent`| MonitorService entered or left a paused state (fullscreen, benchmark, user manual). |
131
151
|`[MEM ]`|`LogMemorySnapshot`| Periodic process memory snapshot. |
132
152
@@ -161,5 +181,7 @@ A unit test in `tests/GamerGuardian.Tests/SettingsReferenceGenTests.cs` asserts
0 commit comments