Skip to content

Commit fe9aca0

Browse files
authored
Merge pull request #48 from carterscode/docs/release-notes
docs(release): curated user-facing release notes via CHANGELOG.md
2 parents 3257d62 + 7948263 commit fe9aca0

3 files changed

Lines changed: 389 additions & 6 deletions

File tree

.github/workflows/release.yml

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,27 @@ jobs:
119119
run: |
120120
Get-ChildItem -Recurse installer\Output, publish | Select-Object FullName, Length
121121
122-
- name: Initialize extra release notes
122+
- name: Build release notes from CHANGELOG
123123
shell: pwsh
124-
run: New-Item -ItemType File -Path release-notes-extra.md -Force | Out-Null
124+
run: |
125+
# Pull the section for this version out of CHANGELOG.md so the GitHub
126+
# release shows curated, user-facing notes. Falls back to the
127+
# [Unreleased] section (newest work not yet version-stamped), then to a
128+
# generic line. GitHub's auto-generated "What's Changed" PR list is
129+
# still appended after this (generate_release_notes: true).
130+
$version = '${{ steps.ver.outputs.version }}'
131+
$cl = Get-Content -Raw CHANGELOG.md
132+
function Get-Section($text, $header) {
133+
$pattern = "(?ms)^##\s*\[" + [regex]::Escape($header) + "\][^\n]*\n(.*?)(?=^##\s*\[|\z)"
134+
$m = [regex]::Match($text, $pattern)
135+
if ($m.Success) { return $m.Groups[1].Value.Trim() } else { return $null }
136+
}
137+
$body = Get-Section $cl $version
138+
if (-not $body) { $body = Get-Section $cl 'Unreleased' }
139+
if (-not $body) { $body = "See the commits in this release for details." }
140+
"## What's new in $version`n`n$body`n" | Set-Content -Path release-notes.md -Encoding utf8
141+
Write-Host "----- release-notes.md -----"
142+
Write-Host (Get-Content release-notes.md -Raw)
125143
126144
# Optional: scan with VirusTotal and surface the per-engine result URLs
127145
# in the run summary. Skips silently unless both the repository variable
@@ -152,7 +170,7 @@ jobs:
152170
$body += "- [``$name``]($($parts[1]))`n"
153171
}
154172
}
155-
$body | Out-File -FilePath release-notes-extra.md -Encoding utf8 -Append
173+
$body | Out-File -FilePath release-notes.md -Encoding utf8 -Append
156174
Write-Host $body
157175
158176
- name: Upload installer artifact
@@ -185,10 +203,11 @@ jobs:
185203
with:
186204
tag_name: v${{ steps.ver.outputs.version }}
187205
name: GamerGuardian ${{ steps.ver.outputs.version }}
206+
# Curated CHANGELOG section (+ any VirusTotal URLs) becomes the body;
207+
# generate_release_notes appends GitHub's "What's Changed" PR list and
208+
# the Full Changelog link after it.
188209
generate_release_notes: true
189-
# If VirusTotal ran, append its URLs after the auto-generated notes.
190-
body_path: release-notes-extra.md
191-
append_body: true
210+
body_path: release-notes.md
192211
target_commitish: ${{ github.sha }}
193212
files: |
194213
installer/Output/GamerGuardian-Setup-${{ steps.ver.outputs.version }}.exe

CHANGELOG.md

Lines changed: 281 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,281 @@
1+
# Changelog
2+
3+
All notable, user-facing changes to GamerGuardian. Newest first. This file is
4+
the source of the notes attached to each [GitHub Release](https://github.com/carterscode/GamerGuardian/releases);
5+
the release workflow pulls the matching version section into the release body.
6+
7+
The format is loosely based on [Keep a Changelog](https://keepachangelog.com/).
8+
Versions before 1.0.0 are pre-release: features and defaults may still change.
9+
10+
## [Unreleased]
11+
12+
### Changed
13+
- Release notes are now **curated and user-facing**: each GitHub Release shows a
14+
hand-written summary of what changed (from `CHANGELOG.md`) instead of a raw
15+
list of pull requests.
16+
17+
## [0.1.52]
18+
19+
### Changed
20+
- **Recommendations now speak each setting's own language.** The green
21+
**Recommended** hint next to Current/Default is shown in the row's actual
22+
wording — *Enabled/Disabled*, *Gaming/Default*, *On/Off*, or a service's
23+
*Default/Manual/Disabled* — instead of a generic "On/Off" that didn't match
24+
the buttons.
25+
- **Recommendation values tuned for the typical desktop gamer** and validated
26+
against current best practice: clear performance wins are recommended; the
27+
Memory Integrity / VBS security toggles are recommended to stay **on** (some
28+
anti-cheat requires them); genuinely contested tweaks (Nagle, NIC power
29+
management) are recommended to stay at the Windows default; Privacy and Debloat
30+
settings lean toward the privacy-respecting / clutter-free value (shown for
31+
guidance — they remain opt-in). The power-plan recommendation is CPU-aware
32+
(Balanced on modern CPUs). The one-click setup and the per-row hint now share
33+
one source of truth, so they can never disagree.
34+
35+
## [0.1.51] - 2026-06-19
36+
### Added
37+
- A **Recommended** value now appears next to *Current* and *Default* on every
38+
setting, so you can see GamerGuardian's suggested choice at a glance.
39+
40+
## [0.1.50] - 2026-06-15
41+
### Added
42+
- New **Debloat** tab: switch off Windows 11 ads, nags, suggested content,
43+
widgets, lock-screen "fun facts", File Explorer upsell banners, and Edge
44+
background processes — plus privacy data toggles.
45+
- Optional removal of the **Microsoft 365 Copilot** app and six device-feature
46+
services.
47+
### Fixed
48+
- The updater now always upgrades to the highest stable version.
49+
50+
## [0.1.49] - 2026-06-14
51+
### Changed
52+
- The manual **Power plan** selector moved to the **CPU / Power** tab, next to
53+
the CPU-aware plan tools.
54+
55+
## [0.1.48] - 2026-06-12
56+
### Fixed
57+
- "Reboot now" now triggers the restart immediately.
58+
59+
## [0.1.47] - 2026-06-12
60+
### Added
61+
- Complete **Virtualization-Based Security (VBS) disable** — the full stack, not
62+
just Memory Integrity — with hardened state handling and honest risk docs.
63+
(Note: disabling VBS breaks Valorant; Vanguard requires Memory Integrity.)
64+
65+
## [0.1.46] - 2026-06-05
66+
### Changed
67+
- Moved **Network Throttling** onto the Network tab and tidied the tab layout.
68+
69+
## [0.1.45] - 2026-06-05
70+
### Added
71+
- New **Privacy** tab with telemetry/activity toggles, a **Network** tab with
72+
per-adapter Nagle and NIC power-management tweaks, per-display **Dynamic
73+
Refresh Rate**, **Visual Effects (best performance)**, **Power Throttling**,
74+
and **Fast Startup** controls.
75+
- Game DVR lockdown now also sets the machine-wide policy so it sticks.
76+
77+
## [0.1.44] - 2026-06-05
78+
### Added
79+
- **CPU / Power** tab with CPU-aware power plans: GamerGuardian detects your CPU
80+
and either suggests the best prebuilt plan or builds a custom optimized plan
81+
(with a dual-CCD X3D guardrail). Plus an advisory **BIOS** recommendations tab.
82+
83+
## [0.1.43] - 2026-06-05
84+
### Fixed
85+
- Stopped a recurring "search-box AI" drift popup by using reliable Windows 11
86+
registry keys.
87+
88+
## [0.1.42] - 2026-06-05
89+
### Maintenance
90+
- Dependency and CI updates.
91+
92+
## [0.1.41] - 2026-06-05
93+
### Fixed
94+
- Per-display preferences (refresh rate, HDR, resolution) now use stable display
95+
keys, so they no longer reset.
96+
97+
## [0.1.40] - 2026-06-03
98+
### Added
99+
- One-click **Recommended** gaming preset on the General tab.
100+
- Closer parity with community Windows-AI removal tooling (safe additions only).
101+
### Fixed
102+
- Removed a spurious silent-apply popup and a notification-header glitch.
103+
104+
## [0.1.39] - 2026-06-03
105+
### Maintenance
106+
- CI dependency updates.
107+
108+
## [0.1.38] - 2026-05-19
109+
### Added
110+
- Per-setting documentation with a **Learn more** expander, a **Verify all**
111+
button, and a system state snapshot.
112+
- New **Windows AI** tab to lock down Copilot, Recall, and related features,
113+
including optional UWP app removal.
114+
### Changed
115+
- Settings changes are now **staged** and only committed when you click Apply or
116+
Save & close.
117+
118+
## [0.1.37] - 2026-05-08
119+
### Changed
120+
- Minimizing the Settings window now sends it to the tray.
121+
### Fixed
122+
- `sync-wiki` tooling now works on PowerShell 5.1.
123+
124+
## [0.1.36] - 2026-05-08
125+
### Added
126+
- Clear feedback when **Apply** has nothing to change, and policy-state display
127+
for policy-managed services.
128+
129+
## [0.1.35] - 2026-05-07
130+
### Maintenance
131+
- Security/code-quality fixes and CI dependency bumps.
132+
133+
## [0.1.34] - 2026-05-07
134+
### Fixed
135+
- **Delivery Optimization** is now disabled via Group Policy, so Windows stops
136+
reverting it.
137+
138+
## [0.1.33] - 2026-05-07
139+
### Maintenance
140+
- Added a test project and turned on warnings-as-errors for a cleaner build.
141+
142+
## [0.1.32] - 2026-05-07
143+
### Fixed
144+
- No more repeated UAC prompts when Windows reverts a service change.
145+
146+
## [0.1.31] - 2026-05-07
147+
### Security
148+
- Tightened CI permissions and added SLSA build provenance to releases.
149+
150+
## [0.1.30] - 2026-05-07
151+
### Added
152+
- **Windows services** tab: tri-state control (Default / Manual / Disabled) plus
153+
eight more services.
154+
### Changed
155+
- Layout polish so long service/setting names fit; added a no-data-collection
156+
privacy policy.
157+
158+
## [0.1.29] - 2026-05-07
159+
### Fixed
160+
- Power-plan dropdown is now actually populated from all installed plans.
161+
162+
## [0.1.28] - 2026-05-07
163+
### Fixed
164+
- Power-plan dropdown now lists every installed plan (custom + Windows defaults).
165+
166+
## [0.1.27] - 2026-05-07
167+
### Performance
168+
- Lower memory use via large-object-heap compaction and window content release.
169+
170+
## [0.1.26] - 2026-05-06
171+
### Added
172+
- Pause/resume events are logged with the reason and the foreground game.
173+
174+
## [0.1.25] - 2026-05-06
175+
### Fixed
176+
- Preference toggles now persist and are recorded in the change log.
177+
178+
## [0.1.24] - 2026-05-06
179+
### Fixed
180+
- VRR monitor now reads the correct registry value.
181+
182+
## [0.1.23] - 2026-05-06
183+
### Changed
184+
- Clarified that VRR is not the same as Dynamic Refresh Rate (DRR).
185+
186+
## [0.1.22] - 2026-05-06
187+
### Added
188+
- Detailed change log capturing raw before/after registry values.
189+
190+
## [0.1.21] - 2026-05-06
191+
### Fixed
192+
- Fixed a critical settings-display binding bug and temp-file cleanup.
193+
194+
## [0.1.20] - 2026-05-06
195+
### Added
196+
- A persistent **change log** of every setting GamerGuardian applies.
197+
198+
## [0.1.19] - 2026-05-06
199+
### Added
200+
- **Apply results** window showing per-setting before/after with a copy-paste
201+
verify command.
202+
203+
## [0.1.18] - 2026-05-06
204+
### Fixed
205+
- **Apply** now applies regardless of the Monitor checkbox; Want syncs to the
206+
current value on load.
207+
208+
## [0.1.17] - 2026-05-06
209+
### Added
210+
- A **Check now** button for manual update checks.
211+
212+
## [0.1.16] - 2026-05-06
213+
### Docs
214+
- Professional README with setting references.
215+
216+
## [0.1.15] - 2026-05-06
217+
### Changed
218+
- Renamed "Check interval" to "Polling interval" to avoid confusion with the
219+
update check.
220+
221+
## [0.1.14] - 2026-05-06
222+
### Added
223+
- Update check on startup with one-click download and install.
224+
225+
## [0.1.13] - 2026-05-06
226+
### Added
227+
- Non-modal reboot popup for auto-applied settings; clearer Enabled/Disabled
228+
labels.
229+
230+
## [0.1.12] - 2026-05-06
231+
### Fixed
232+
- Apply button, reboot prompt, and clearer radio-button labels.
233+
234+
## [0.1.11] - 2026-05-06
235+
### Changed
236+
- Cleaner per-setting row layout with **Current** and **Default** status lines.
237+
238+
## [0.1.10] - 2026-05-06
239+
### Added
240+
- Tier 1 performance tweaks (four new monitored settings).
241+
242+
## [0.1.9] - 2026-05-06
243+
### Added
244+
- Monitor **Memory Integrity / VBS** (Core Isolation).
245+
246+
## [0.1.8] - 2026-05-06
247+
### Added
248+
- Automatic benchmark detection, manual pause, and a new app icon.
249+
250+
## [0.1.7] - 2026-05-06
251+
### Fixed
252+
- Dev builds are now clearly distinguished from releases in the version label.
253+
254+
## [0.1.6] - 2026-05-06
255+
### Added
256+
- Polling also pauses for borderless-fullscreen games.
257+
258+
## [0.1.5] - 2026-05-06
259+
### Added
260+
- App version shown in Settings.
261+
262+
## [0.1.4] - 2026-05-06
263+
### Performance
264+
- Gaming-friendly polling and a large reduction in memory use.
265+
266+
## [0.1.3] - 2026-05-06
267+
### Added
268+
- WPF-UI theming with a Light / Dark / System toggle.
269+
270+
## [0.1.2] - 2026-05-06
271+
### Added
272+
- Eight more monitored settings and the global settings UI.
273+
274+
## [0.1.1] - 2026-05-06
275+
### Maintenance
276+
- Release automation.
277+
278+
## [0.1.0] - 2026-05-06
279+
### Added
280+
- Initial release: a Windows 11 tray app that watches gaming-related settings and
281+
prompts on drift or silently re-applies your chosen value.

0 commit comments

Comments
 (0)