Skip to content

Commit 84a62a3

Browse files
committed
feat(policy): Sprint 688 — Office GP security modules + Windows Search hardening, delete 3 dead stubs (v6.26.0)
PolicyWindowsSearch.cs expanded 1→10 tweaks (wsepol-) PolicyOfficeWord.cs new — 10 tweaks (offword-pol-) PolicyOfficeExcel.cs new — 10 tweaks (offxls-pol-) PolicyOfficeOutlook.cs new — 10 tweaks (offolt-pol-) Deleted PolicyAppPrivacy.cs, PolicyEventLogAudit.cs, PolicySyncSettings.cs (empty stubs) Total: 7,518 tweaks, 127 categories, 175 modules, 3,239 tests (0 failures)
1 parent fa93c0f commit 84a62a3

32 files changed

Lines changed: 975 additions & 135 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-07 (v6.25.0, ~7,479 tweaks, 127 categories, 3,230 tests).
5+
> Last verified: 2026-04-09 (v6.26.0, ~7,518 tweaks, 127 categories, 3,239 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,230 tests (0 failures) |
82+
| Test | xUnit 2.9.3 — 3,239 tests (0 failures) |
8383
| GUI | WinForms with 11 themes (Catppuccin Mocha/Latte, Nord, Dracula + 7 more) |
84-
| Version | 6.25.0 |
84+
| Version | 6.26.0 |
8585
| Install | `dotnet build RegiLattice.sln -c Release` |
86-
| Tweaks | 7,479 across 127 categories (175 files) |
87-
| Tests | 3,230 passing (0 consistent failures) |
86+
| Tweaks | 7,518 across 127 categories (175 files) |
87+
| Tests | 3,239 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,230+ tests must pass |
97+
| Test failures | **0** — all 3,239+ 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,230 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,239 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,434 tests), `RegiLattice.CLI.Tests` (434 tests), `RegiLattice.GUI.Tests` (362 tests). Total: 3,230.
395+
Projects: `RegiLattice.Core.Tests` (2,442 tests), `RegiLattice.CLI.Tests` (434 tests), `RegiLattice.GUI.Tests` (363 tests). Total: 3,239.
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-07 (v6.25.0, C# 13 / .NET 10.0-windows, ~7,479 tweaks, 127 categories, 3,230 tests)
10+
> Last updated: 2026-04-09 (v6.26.0, C# 13 / .NET 10.0-windows, ~7,518 tweaks, 127 categories, 3,239 tests)
1111
1212
---
1313

@@ -1636,7 +1636,8 @@ Version history:
16361636
| v6.23.0 | 8 | +80 | 680–687 (GamingDirectStorage/VRR/LatencyTuning/GPUPower/NetworkOpt/AudioOpt/AccessibilityMotor/AccessibilityVisual; CI paths-ignore + weekly mutation tests; fix 3 broken ApplyAction impls; 7,349 tweaks) |
16371637
| v6.24.0 | 8 | +80 | — (Phase 5.3 Accessibility remaining + Phase 5.5 Developer: MagnifierAdvanced/LiveCaptions/EyeControlSettings/VoiceAccessControl/WinDbgSettings/WSLAdvanced/GitCredManager/ContainerRuntime) |
16381638
| v6.25.0 | 5 | +50 | — (Phase 5.4 Energy & Battery Management: BatterySaver/ChargingOptimization/StandbyStates/CPUPowerStates/DisplayPower; 7,479 tweaks, 127 categories, 175 modules) |
1639-
**Current version**: v6.25.0 — 7,479 tweaks, 127 categories, 175 files (31 original + 144 extracted/split). Run full gap analysis on all three phases before creating any new module.
1639+
| 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 |
1640+
**Current version**: v6.26.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.
16401641

16411642
---
16421643

.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,434+ | TweakDef, TweakEngine, RegistrySession, Services, Plugins, Locale, SnapshotManager, TweakValidator, DependencyResolver, Favorites, TweakHistory, ConfigExporter, SystemMonitor, BatchImpactEstimator |
18+
| `RegiLattice.Core.Tests` | 2,442+ | 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,230+**| |
21+
| **Total** | **3,239+**| |
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,230+ tests must pass |
240+
| Test failures | **0** — all 3,239+ 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 |

.vscode/settings.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,12 @@
153153
// Auto-start MCP servers when mcp.json changes (no manual restart needed)
154154
"chat.mcp.autoStart": true,
155155
// Auto-discover MCP configs from Claude Desktop and other MCP-aware apps
156-
"chat.mcp.discovery.enabled": true,
156+
"chat.mcp.discovery.enabled": {
157+
"claude-desktop": true,
158+
"windsurf": true,
159+
"cursor-global": true,
160+
"cursor-workspace": true
161+
},
157162
// Tool-based edit mode: model calls tools to make file edits (same engine as agent mode).
158163
// Enables seamless mode-switching mid-conversation. Requires a tool-calling model.
159164
"chat.edits2.enabled": true,

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.25.0</Version>
23-
<AssemblyVersion>6.25.0.0</AssemblyVersion>
24-
<FileVersion>6.25.0.0</FileVersion>
25-
<InformationalVersion>6.25.0</InformationalVersion>
22+
<Version>6.26.0</Version>
23+
<AssemblyVersion>6.26.0.0</AssemblyVersion>
24+
<FileVersion>6.26.0.0</FileVersion>
25+
<InformationalVersion>6.26.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>

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
FROM mcr.microsoft.com/windows/nanoserver:ltsc2022
1313

1414
LABEL org.opencontainers.image.source="https://github.com/RajwanYair/RegiLattice"
15-
LABEL org.opencontainers.image.description="RegiLattice CLI — Windows registry tweak toolkit (7,429 tweaks across 122 categories)"
15+
LABEL org.opencontainers.image.description="RegiLattice CLI — Windows registry tweak toolkit (7,518 tweaks across 127 categories)"
1616
LABEL org.opencontainers.image.licenses="MIT"
1717
LABEL org.opencontainers.image.vendor="Yair Rajwan"
1818

0 commit comments

Comments
 (0)