Repository navigation
feat: stable 1.7.7 β EcoQoS, reliable rules and UI refresh (no Game Boost) - #67
Merged
Merged
Conversation
β¦tically - Configuration export now includes persistent process rules (schema 3.0), stays compatible with 2.0 bundles, validates before writing, previews what an import replaces and rolls back on failure. - Matching rules apply broad-to-specific (name, wildcard path, exact path, then most recently edited), shared by the engine and the process summary, which now lists the apply order and flags conflicting values. - Localized the new strings in all seven languages.
- Process details: CPU, memory and I/O priority pickers with an explicit Apply, undo of the last manual priority change (guarded against reused PIDs), adaptive side/bottom details panel. - Manual process control stays available while automation is paused, with a persistent notice instead of an overlay. - Saved-rule editor stages all edits (including the core mask) and saves them together, showing pending changes. - Localized the new strings in all seven languages.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
The rules editor's core mask went through a new update path that reported success without saving when no affinity payload was built, and kept a legacy mask next to a CPU selection. Merge it with the old single-purpose method (now unused), keep its checks, and localize the undo message.
Closes #66. - Native: SetProcessInformation/GetProcessInformation with ProcessPowerThrottling (EXECUTION_SPEED), three states: Windows decides, On (EcoQoS), Off (never throttle / HighQoS). - Process tab: context menu entries, a picker with Apply in the details panel, current state in the summary, undo of the last change, included when saving current settings as a rule (only if explicitly set). - Rules: EfficiencyMode + ApplyEfficiencyModeOnStart, applied by the rules engine, editable in the saved-rule editor, validated on import and part of conflict detection. - The summary flags when the global Power Throttling tweak voids it. CPU priority is left alone, unlike Task Manager's efficiency mode. - Localized in all seven languages.
β¦-mode # Conflicts: # ViewModels/SelectedProcessSummaryViewModel.cs
- Navigation pane open with short labels instead of seven bare icons. - Processes: one toolbar row (search with placeholder, Filters and Columns menus, sort, refresh); details split into Process, Priority, CPU cores and Rule cards; pickers start from the process's current values and stay empty when a value cannot be read; help paragraphs moved into tooltips; core picker always visible. - Rules: process rules first, clearer tab names, localized choices in the saved-rule editor instead of internal enum names. - Shorter page titles and subtitles in all seven languages; removed the strings this made unused. No data format changes.
- Settings: one column of rows (what it is on the left, its switch on the right), most used sections first, Save as the primary action. - Tweaks: one tweak per row with its status dot and switch. - Rule list: 'Applies' and 'Mode' columns use the same localized labels as the editor and refresh on language change. - Removed 76 strings no code referenced, from all seven languages.
- Process counter could show more visible processes than the total
('157 / 151'): the batch total was a snapshot from the first load.
- Narrow windows (or 150% scaling): toolbar buttons move under the search
box instead of squeezing it to a few letters.
- Rules list keeps the 'Applies' column readable when narrow.
- Settings status message gets its own line instead of being cut.
Tested in a Hyper-V Windows 11 VM: clean install, upgrade, uninstall,
light and dark theme, 100% and 150% scaling.
- The navigation pane, window size/position/maximized state, and the process list filters, sort and columns now survive a restart. They live in ui-state.json, apart from settings.json, so they never mark the Settings page as unsaved or travel in exported configurations. A corrupt file falls back to defaults; tests write to a temp file. - Fixes the pane re-opening on every start (it was hard-coded open). - Tweaks use a native-looking Windows 11 switch (40x20 track, sliding thumb) with On/Off written beside it. - New test: every on/off setting survives save and reload.
β¦3 groups The legacy topology treated the lowest EfficiencyClass as the performance core, swapping P- and E-cores on hybrid Intel CPUs. AMD CCDs were guessed as 8 cores each, which split 6+6 parts (7900X3D, 9900X3D) into 8+4; they now come from the L3 groups Windows reports, with the guess kept only as a fallback. The topology snapshot also keeps each L3 group's size.
While a detected game runs, Game Boost sets process default CPU Sets from the CPU topology: on AMD X3D with one larger L3 the game goes to the V-Cache CCD, on Intel hybrid CPUs to the P-cores, and selected background apps (browsers, sync clients, updaters, launchers) to the other cores. On dual-CCD parts with equal L3 only the background moves, unless Isolation mode also keeps the game on CCD0. Single-L3 and unreadable topologies are left to Windows. Above Normal priority for the game is optional; never High. Each change is written to a journal before it is made and undone when the game exits, Game Boost is turned off or ThreadPilot closes, and on the next start after a crash. Only values still exactly as Game Boost set them are restored, never one a user rule or a manual change has taken over since. Persistent rules and Game Boost share one apply gate, and a rule always wins over Game Boost for the setting it covers. The switch, mode and lists are on the Tweaks page, off by default, and take effect without a restart.
The background list compared full-path entries against an empty path, so only bare process names worked. Found by a new integration test that runs the real services on two copies of PING.EXE: CPU Sets and priority are set and read back through Windows, removed when Game Boost is turned off, and undone from the journal after a simulated crash. The topology is simulated from this machine's CPU Set IDs, so the test also runs on CPUs where Game Boost would not act; it skips itself below 8 cores.
Windows Server 2022 build 20348 rejects GetProcessInformation(ProcessPowerThrottling) with ERROR_INVALID_PARAMETER (87), with both limited and full query handles. Windows 11 local tests pass. Use Server 2025 for CI/release tests and smoke testing; keep the real round-trip assertions, remove temporary probes.
feat: Game Boost sessions, CPU topology fixes and Activity diagnostics
feat: clearer navigation, process page and rules editor
feat: per-process efficiency mode (EcoQoS)
feat: clearer process and rule editors
Stable retains the validated EcoQoS/rules/UI stack. Preserve the complete local Game Boost implementation at ef2ec24 for the separate 1.7.8-beta.1 prerelease; no experimental Game Boost/topology changes ship in stable. Keep channel-aware publication and Windows 11-era native CI tests.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stable 1.7.7 β no experimental Game Boost
Closes #66. Integrates the stable EcoQoS, persistent-rule reliability and UI stack from #68β#70. #71 was previously combined into this integration branch, but its experimental Game Boost implementation and extra topology changes have now been explicitly excluded from the final stable tree. They are preserved at ef2ec24 for a separate 1.7.8-beta.1 pre-release.
Validation
Local stable Release suite: 792 tests pass. Explicit self-check confirms no Game Boost service, policy, settings or UI in this stable tree. CI DevSecOps and CodeQL must pass on the final head before the authorized administrator squash merge.
Release notes:
docs/releases/v1.7.7.md. Installer, portable ZIP and SHA256 will be built by the tag workflow. Artifacts unsigned.The repository owner explicitly authorized the administrator merge as PrimeBuild-pc, waiving the external-review requirement after green CI/CodeQL. Repository protections are not modified.