Skip to content

Commit 87438a1

Browse files
committed
feat(tweaks): v6.28.0 — Phase 6.4 ScheduledTweakService, Phase 6.5 TweakMigrationService, 5 Office Policy modules
Phase 6.4: ScheduledTweakService — schedule/pending/cancel/executeDue, persisted JSON, 430-line test suite Phase 6.5: TweakMigrationService — TweakEngine.Migrations/ResolveMigration, SnapshotManager auto-migrate, 210-line test suite 5 new Office Policy modules: PowerPoint/Access/Publisher/Visio/Project (+50 tweaks) Updated all SVG graphics, metadata files, CHANGELOG Total: 7,568 tweaks (+50), 180 modules (+5), 127 categories, 3,291 tests (+32)
1 parent e00ff1d commit 87438a1

27 files changed

Lines changed: 1863 additions & 59 deletions

.github/copilot-instructions.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
> Auto-loaded by GitHub Copilot on every chat/agent session in this workspace.
44
> Keep this file accurate — it is the fastest path to project understanding.
5-
> Last verified: 2026-04-09 (v6.27.0, ~7,518 tweaks, 127 categories, 3,259 tests).
5+
> Last verified: 2026-04-09 (v6.28.0, ~7,568 tweaks, 127 categories, 3,291 tests).
66
77
## Companion Instruction Files
88

@@ -79,12 +79,12 @@ Rules:
7979
| -------- | ------------------------------------------------------------------------ |
8080
| Language | C# 13 / .NET 10.0-windows (x64) |
8181
| Build | `dotnet build` / MSBuild via `RegiLattice.sln` |
82-
| Test | xUnit 2.9.3 — 3,259 tests (0 failures) |
82+
| Test | xUnit 2.9.3 — 3,291 tests (0 failures) |
8383
| GUI | WinForms with 11 themes (Catppuccin Mocha/Latte, Nord, Dracula + 7 more) |
84-
| Version | 6.27.0 |
84+
| Version | 6.28.0 |
8585
| Install | `dotnet build RegiLattice.sln -c Release` |
86-
| Tweaks | 7,518 across 127 categories (175 files) |
87-
| Tests | 3,259 passing (0 consistent failures) |
86+
| Tweaks | 7,568 across 127 categories (180 files) |
87+
| Tests | 3,291 passing (0 consistent failures) |
8888
| NuGet | System.Management 10.0.5, Microsoft.NET.Test.Sdk 17.14.1 |
8989

9090
## Build Quality Standards — Non-Negotiable
@@ -94,7 +94,7 @@ Rules:
9494
| Build fatals | **0** — hard CI fail |
9595
| Build errors | **0** — hard CI fail |
9696
| Build warnings | **0**`TreatWarningsAsErrors=true` in `Directory.Build.props` |
97-
| Test failures | **0** — all 3,259+ tests must pass |
97+
| Test failures | **0** — all 3,291+ tests must pass |
9898
| Skipped tests | **0**`[Fact(Skip=...)]` / `[Theory(Skip=...)]` forbidden |
9999
| Warning suppressions | **0**`#pragma warning disable` / `[SuppressMessage]` forbidden; fix at source |
100100
| TODO / FIXME comments | **0** — open a GitHub Issue instead; no inline deferrals |
@@ -143,7 +143,7 @@ git push; git push --tags # ← REQUIRED on every version bump
143143

144144
> Full annotated solution tree: see `.github/instructions/workspace.instructions.md` — Solution Structure section.
145145
146-
Key namespaces: `RegiLattice.Core` (engine + models + registry + tweak modules, 31 files), `RegiLattice.GUI` (WinForms, 11 themes), `RegiLattice.CLI` (25+ commands). Tests live in `tests/` — 3 projects, 3,259 total.
146+
Key namespaces: `RegiLattice.Core` (engine + models + registry + tweak modules, 31 files), `RegiLattice.GUI` (WinForms, 11 themes), `RegiLattice.CLI` (25+ commands). Tests live in `tests/` — 3 projects, 3,291 total.
147147

148148
### TweakDef Model
149149

@@ -392,7 +392,7 @@ Canonical category slugs:
392392

393393
> Full test file inventory and coverage targets: see `.github/instructions/testing.instructions.md` — Test File Structure section.
394394
395-
Projects: `RegiLattice.Core.Tests` (2,462 tests), `RegiLattice.CLI.Tests` (434 tests), `RegiLattice.GUI.Tests` (363 tests). Total: 3,259.
395+
Projects: `RegiLattice.Core.Tests` (2,494 tests), `RegiLattice.CLI.Tests` (434 tests), `RegiLattice.GUI.Tests` (363 tests). Total: 3,291.
396396

397397
## Adding a New Tweak — Checklist
398398

.github/instructions/lessons-learned.instructions.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ applyTo: "**/*.cs,**/tests/**,**/*Tests/**"
77
> Accumulated hard-won insights from the Python → C# migration, test coverage sprints,
88
> the 453-tweak restoration campaign, and the large-file splitting campaign.
99
> These rules are **as important as the coding standards** — they prevent recurring mistakes.
10-
> Last updated: 2026-04-09 (v6.27.0, C# 13 / .NET 10.0-windows, ~7,518 tweaks, 127 categories, 3,259 tests)
10+
> Last updated: 2026-04-09 (v6.28.0, C# 13 / .NET 10.0-windows, ~7,568 tweaks, 127 categories, 3,291 tests)
1111
1212
---
1313

@@ -1638,7 +1638,8 @@ Version history:
16381638
| v6.25.0 | 5 | +50 | — (Phase 5.4 Energy & Battery Management: BatterySaver/ChargingOptimization/StandbyStates/CPUPowerStates/DisplayPower; 7,479 tweaks, 127 categories, 175 modules) |
16391639
| v6.26.0 | 3 | +39 | Sprint 688 — 3 new Office GP security modules (PolicyOfficeWord/PolicyOfficeExcel/PolicyOfficeOutlook) + PolicyWindowsSearch expanded 1→10 tweaks; deleted 3 empty stubs; 7,518 tweaks, 127 categories, 175 modules |
16401640
| v6.27.0 | 0 | 0 | — (Phase 6.1–6.3: TweakHistory audit logging + ExportCsv, HealthScoreService.CategoryHealthScores, ConflictDetector.DetectRegistryConflicts + ConflictSeverity/RegistryConflict; fix .runsettings HangTimeout warning; +20 tests → 3,259 total) |
1641-
**Current version**: v6.27.0 — 7,518 tweaks, 127 categories, 175 files (31 original + 144 extracted/split). Run full gap analysis on all three phases before creating any new module.
1641+
| v6.28.0 | 5 | +50 | — (Phase 6.4 ScheduledTweakService + Phase 6.5 TweakMigrationService + TweakEngine.Migrations/ResolveMigration + SnapshotManager auto-migrate; 5 new Office Policy modules: PowerPoint/Access/Publisher/Visio/Project; +32 tests → 3,291 total; 7,568 tweaks, 180 modules) |
1642+
**Current version**: v6.28.0 — 7,568 tweaks, 127 categories, 180 files (31 original + 149 extracted/split). Run full gap analysis on all three phases before creating any new module.
16421643

16431644
---
16441645

.github/instructions/testing.instructions.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ applyTo: "**/tests/**,**/*Tests/**,**/*Tests.csproj,**/test_*.py,**/conftest.py"
1515

1616
| Project | Tests | Covers |
1717
| ------------------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
18-
| `RegiLattice.Core.Tests` | 2,442+ | TweakDef, TweakEngine, RegistrySession, Services, Plugins, Locale, SnapshotManager, TweakValidator, DependencyResolver, Favorites, TweakHistory, ConfigExporter, SystemMonitor, BatchImpactEstimator |
18+
| `RegiLattice.Core.Tests` | 2,494+ | TweakDef, TweakEngine, RegistrySession, Services, Plugins, Locale, SnapshotManager, TweakValidator, DependencyResolver, Favorites, TweakHistory, ConfigExporter, SystemMonitor, BatchImpactEstimator |
1919
| `RegiLattice.CLI.Tests` | 434+ | CLI argument parsing (ParseArgs, CliArgs, ConsoleColorizer) |
2020
| `RegiLattice.GUI.Tests` | 363+ | Theme, PackageManagerValidation, PackageNameValidator, AppIcons |
21-
| **Total** | **3,259+**| |
21+
| **Total** | **3,291+**| |
2222

2323
## Running Tests
2424

@@ -237,7 +237,7 @@ Every test run and every CI build must meet these conditions before merging:
237237
| Build fatals | **0** — hard CI fail |
238238
| Build errors | **0** — hard CI fail |
239239
| Build warnings | **0**`TreatWarningsAsErrors=true`; any warning blocks CI |
240-
| Test failures | **0** — all 3,259+ tests must pass |
240+
| Test failures | **0** — all 3,291+ tests must pass |
241241
| Skipped tests | **0**`[Fact(Skip=...)]` and `[Theory(Skip=...)]` are forbidden |
242242
| Inline suppressions | **0**`#pragma warning disable`, `[SuppressMessage]`, `// NOSONAR`, `// NCA`, |
243243
| | `// ReSharper disable`, `// NOLINT` — all forbidden; fix root cause instead |

.github/instructions/workspace.instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ RegiLattice.sln
3737
│ │ │ # Locale, PipManager, Ratings, ShellRunner,
3838
│ │ │ # SystemMonitor, TweakHistory, WinGetManager
3939
│ │ ├── Plugins/ # Tweak Pack system (JSON marketplace)
40-
│ │ └── Tweaks/ # 170 module files (31 original + 139 extracted/split), 7,429 tweaks across 122 categories
40+
│ │ └── Tweaks/ # 180 module files (31 original + 149 extracted/split), 7,568 tweaks across 127 categories
4141
│ ├── RegiLattice.GUI/ # WinForms application
4242
│ │ ├── Program.cs # Entry point
4343
│ │ ├── AppIcons.cs # Programmatic icon/bitmap generation

.vscode/extensions.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
// OSS-first: Continue supports Ollama, LM Studio, any OpenAI-compatible backend
99
"continue.continue",
1010
// Vendor alternative (if GitHub Copilot subscription is active):
11-
"github.copilot",
1211
"github.copilot-chat",
1312
// ── Git & source control (open source: MIT) ─────────────────────
1413
"eamodio.gitlens",

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
For the complete version history, see **[docs/CHANGELOG.md](docs/CHANGELOG.md)**.
44

5-
Latest: **v6.19.0** (2026-04-06) — Phase 2.3 risk confirmation dialog (`ConfirmApplyDialog`), Phase 2.4 batch ETA (`EstimatedApplyTimeMs` / `CalculateBatchEtaMs`). 28 new tests, 3,218 total.
5+
Latest: **v6.28.0** (2026-04-09) — Phase 6.4 ScheduledTweakService, Phase 6.5 TweakMigrationService + SnapshotManager auto-migrate, 5 new Office Policy modules (+50 tweaks). 7,568 tweaks, 180 modules, 3,291 tests.

Directory.Build.props

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,22 @@
1919
Configuration Manager to the x64 platform. Both are required. -->
2020
<Platforms>x64</Platforms>
2121
<PlatformTarget>x64</PlatformTarget>
22-
<Version>6.27.0</Version>
23-
<AssemblyVersion>6.27.0.0</AssemblyVersion>
24-
<FileVersion>6.27.0.0</FileVersion>
25-
<InformationalVersion>6.27.0</InformationalVersion>
22+
<Version>6.28.0</Version>
23+
<AssemblyVersion>6.28.0.0</AssemblyVersion>
24+
<FileVersion>6.28.0.0</FileVersion>
25+
<InformationalVersion>6.28.0</InformationalVersion>
2626
<Deterministic>true</Deterministic>
2727
<ContinuousIntegrationBuild Condition="'$(GITHUB_ACTIONS)' == 'true'">true</ContinuousIntegrationBuild>
2828
<TieredCompilation>true</TieredCompilation>
2929
<TieredPGO>true</TieredPGO>
30-
<!-- Quick JIT for loops: allows tier-0 compilation of loop-bearing methods
30+
<!-- Quick JIT for loops: allows tier-0 compilation of loop-bearing methods
3131
for faster startup. Tiered PGO re-compiles hot methods to optimised
3232
native code after profiling — so initial speed cost is temporary. -->
3333
<TieredCompilation_QuickJitForLoops>true</TieredCompilation_QuickJitForLoops>
34-
<!-- ReadyToRun: ahead-of-time compile during publish for faster cold-start
34+
<!-- ReadyToRun: ahead-of-time compile during publish for faster cold-start
3535
(~200-400ms improvement). Only applies to dotnet publish -r win-x64. -->
3636
<PublishReadyToRun>true</PublishReadyToRun>
37-
<!-- ── Build output redirection (OneDrive lock workaround) ─────────────
37+
<!-- ── Build output redirection (OneDrive lock workaround) ─────────────
3838
Redirect obj/ and bin/ to %TEMP%\RegiLattice-build\<ProjectName> so
3939
MSBuild never touches OneDrive-synced paths during compilation.
4040
This eliminates AssemblyInfoInputs.cache locking, Roslyn server file-
@@ -46,18 +46,18 @@
4646
4747
CI: GITHUB_ACTIONS is always set, so the same env-var expansion works
4848
on both developer machines and GitHub Actions runners automatically. -->
49-
<!-- STRYKER_BUILD=1 disables the temp-path redirect so Stryker's Buildalyzer
49+
<!-- STRYKER_BUILD=1 disables the temp-path redirect so Stryker's Buildalyzer
5050
can analyze the project with standard local bin/obj paths. -->
5151
<RegiLatticeLocalBuildRoot Condition="'$(STRYKER_BUILD)' == ''">$(TEMP)\RegiLattice-build\$(MSBuildProjectName)</RegiLatticeLocalBuildRoot>
5252
<BaseIntermediateOutputPath Condition="'$(STRYKER_BUILD)' == ''">$(RegiLatticeLocalBuildRoot)\obj\</BaseIntermediateOutputPath>
5353
<BaseOutputPath Condition="'$(STRYKER_BUILD)' == ''">$(RegiLatticeLocalBuildRoot)\bin\</BaseOutputPath>
5454

55-
<!-- Keep UseSharedCompilation=false as a belt-and-suspenders guard for
55+
<!-- Keep UseSharedCompilation=false as a belt-and-suspenders guard for
5656
any edge cases where the above redirect does not apply (e.g. custom
5757
project files that override BaseIntermediateOutputPath). -->
5858
<UseSharedCompilation>false</UseSharedCompilation>
5959

60-
<!-- Exclude local obj/ and bin/ directories from compile globs.
60+
<!-- Exclude local obj/ and bin/ directories from compile globs.
6161
The SDK normally excludes $(BaseIntermediateOutputPath)** and
6262
$(BaseOutputPath)** from Compile/Content/None globs. After
6363
redirecting those paths to %TEMP%, the old in-repo obj/ and bin/
@@ -68,50 +68,50 @@
6868
<DefaultItemExcludes>$(DefaultItemExcludes);obj/**;bin/**</DefaultItemExcludes>
6969
</PropertyGroup>
7070

71-
<!-- ── Release publish optimizations ─────────────────────────────────── -->
72-
<!-- These properties only affect `dotnet publish -c Release`. They have
71+
<!-- ── Release publish optimizations ─────────────────────────────────── -->
72+
<!-- These properties only affect `dotnet publish -c Release`. They have
7373
no effect on Debug builds, `dotnet build`, or `dotnet test`. -->
7474
<PropertyGroup Condition="'$(Configuration)' == 'Release' and '$(UsingMicrosoftNETSdk)' == 'true'">
75-
<!-- Embedded PDB: debug info baked into the assembly — no loose .pdb
75+
<!-- Embedded PDB: debug info baked into the assembly — no loose .pdb
7676
files in publish output. Still provides full stack traces. -->
7777
<DebugType>embedded</DebugType>
7878

79-
<!-- NOTE: IL trimming (PublishTrimmed) is set per-project, not here.
79+
<!-- NOTE: IL trimming (PublishTrimmed) is set per-project, not here.
8080
WinForms blocks trimming entirely (NETSDK1175). CLI.csproj enables
8181
it; GUI.csproj does not. -->
8282

83-
<!-- Compress the single-file bundle for ~40% smaller download.
83+
<!-- Compress the single-file bundle for ~40% smaller download.
8484
First launch decompresses to a temp cache (~200ms one-time cost);
8585
subsequent launches use the cached extraction. -->
8686
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
8787

88-
<!-- Strip native debug symbols from ReadyToRun pre-compiled images. -->
88+
<!-- Strip native debug symbols from ReadyToRun pre-compiled images. -->
8989
<StripSymbols>true</StripSymbols>
9090

91-
<!-- ── Feature switches ────────────────────────────────────────────
91+
<!-- ── Feature switches ────────────────────────────────────────────
9292
Disable unused runtime subsystems so the linker can remove them.
9393
Each switch reduces binary size and memory footprint. -->
9494

95-
<!-- Hot reload is a dev-time feature — not needed in release binaries. -->
95+
<!-- Hot reload is a dev-time feature — not needed in release binaries. -->
9696
<MetadataUpdaterSupport>false</MetadataUpdaterSupport>
9797

98-
<!-- Distributed tracing activity propagation — not used. -->
98+
<!-- Distributed tracing activity propagation — not used. -->
9999
<HttpActivityPropagationSupport>false</HttpActivityPropagationSupport>
100100

101-
<!-- BinaryFormatter is deprecated, dangerous, and not used (project
101+
<!-- BinaryFormatter is deprecated, dangerous, and not used (project
102102
uses System.Text.Json). Disabling hardens against deserialization
103103
attacks and lets the linker trim the formatter code. -->
104104
<EnableUnsafeBinaryFormatterSerialization>false</EnableUnsafeBinaryFormatterSerialization>
105105

106-
<!-- Startup hooks are a diagnostic/testing mechanism — not needed in
106+
<!-- Startup hooks are a diagnostic/testing mechanism — not needed in
107107
release binaries. Disabling removes the hook discovery overhead. -->
108108
<StartupHookSupport>false</StartupHookSupport>
109109

110-
<!-- EventSource tracing infrastructure — not used by this project.
110+
<!-- EventSource tracing infrastructure — not used by this project.
111111
Disabling removes ETW event-pipe initialization at startup. -->
112112
<EventSourceSupport>false</EventSourceSupport>
113113

114-
<!-- Optimize for speed over size in Release. Enables aggressive inlining,
114+
<!-- Optimize for speed over size in Release. Enables aggressive inlining,
115115
loop optimizations, and larger method bodies in R2R pre-compilation. -->
116116
<OptimizationPreference>Speed</OptimizationPreference>
117117
</PropertyGroup>

0 commit comments

Comments
 (0)