Releases: Layellie/StandbyAndTimer
Release list
v2.1.0 — Hotkeys, tray toggle, notification prefs, idle-only purge
What's new
First minor bump under the "batch fixes, don't ship per-commit" cadence — bundles five user-visible features plus a card-layout refresh into one release instead of five interim builds.
Hotkeys
Ctrl+Alt+P— system-wide manual purge.Ctrl+Alt+T— system-wide timer-resolution toggle.- Settings panel shows the active bindings (read-only for v2.1.0; rebind UI is parked for v2.2).
Tray behaviour
- Single left-click toggles the window instead of always showing it. If the window is in the tray it surfaces with proper foreground promotion; if it's already visible it tucks back into the tray. Right-click → "Show" still always surfaces.
Notification preferences
- Three independent checkboxes in Settings: purge balloons, timer-state balloons, game-detected balloons. Defaults stay ON so upgraded installs see no change unless the user opts out.
Idle-only auto-purge
- New "Sadece boştayken / Only when idle" toggle with a minutes input, sitting above the AUTO PURGE master switch. When enabled, threshold-triggered purges fire only after the user has been idle for the configured window (default 5 min). Gaming/typing sessions aren't interrupted anymore.
Single-instance signal
- Re-launching the
.exewhile it's already running no longer pops "already running". The second process signals the live instance via a named EventWaitHandle (withAllowSetForegroundWindow(ASFW_ANY)so the foreground promote isn't muted), then exits silently.
Memory card refresh
- Bottom strip is now Total | Free | Purges, anchored left/center/right of each cell for proper visual rhythm. Purge count moved here from the Standby Purge card's header (
× countchip dropped — it was asymmetric and pushed the title off-centre). - KPI block now sits vertically centred in the slack the sibling Standby Purge card forces on the row, so the box no longer has a dead band at the bottom.
clearablesubtitle font 10 → 14 for legibility next to the 28pt KPI.
Settings panel
- New NOTIFICATIONS and HOTKEYS sections between Theme and Backup. Row layout grew but the
*Logs row absorbs the extra height — no outer scrollbar, version footer stays pinned at the bottom.
Installation
Download StandbyAndTimer_Setup_2.1.0.exe below and run it. Administrator rights are required (UAC will prompt).
Or via winget once the manifest is approved:
winget install Layellie.StandbyAndTimerIntegrity
SHA256: b69bd65d548dd8326fe5628d56daa1f13ef2da602d06d773f70a7669c3b0e5b6
The in-app update checker verifies this hash automatically.
v2.0.11 — No outer scrollbar on Settings panel
What's new
Fixes a regression introduced when the Logs viewer came back in v2.0.10: the Settings panel content was pushed past the available 564 px body area, so the outer ScrollViewer started showing a vertical bar.
Changes
- Outer ScrollViewer removed from the Settings panel. The panel is now a single
Gridthat cannot overflow by design. - Logs viewer row sized
*: it absorbs all leftover vertical space below the static settings rows. The log box keeps its own internal scrollbar for long log content. - Version footer is pinned at the bottom. If the upper rows ever grow (long UpdateStatus wrap, Download Update button visible), the
*log row gives up its space first so the footer is never pushed off the bottom. - Spacers tightened along the column (top margin 16→12, several inter-row spacers shaved 2–8 px) to free ~50 px more for the log section without feeling cramped.
Installation
Download StandbyAndTimer_Setup_2.0.11.exe below and run it. Administrator rights are required (UAC will prompt).
Or via winget once the manifest is approved:
winget install Layellie.StandbyAndTimerIntegrity
SHA256: aff2b02d5e06a7f3ad2519227ec4a26210df635685d183e51074a74c52fecdcc
The in-app update checker verifies this hash automatically.
v2.0.10 — Compact in-panel logs viewer (modular)
⚠️ Superseded by v2.0.11.
v2.0.8, v2.0.9, and v2.0.10 were rapid-iteration interim builds of the same Settings-panel refresh. Install v2.0.11 instead — it bundles every fix below plus the final scrollbar / logs-viewer layout.
What's new
Brings the in-app Logs viewer back, this time as a self-contained LogsViewerCard UserControl backed by a dedicated ILogTailReader service.
User-visible changes
- Compact timestamps in the panel —
HH:mm:ssinstead of2026-06-29 14:32:15.847, freeing 15 columns for the actual message body so it stops clipping off the right edge of the narrow Settings panel. - Word-wrap on long lines so the message stays on screen instead of disappearing past the right.
- On-disk
log.txtunchanged — still uses the fullyyyy-MM-dd HH:mm:ss.fffformat for archival use; Open Log Folder surfaces it untouched.
Under the hood
- New
Core/Interfaces/ILogTailReader.cs(one method, display-ready async tail). - New
Services/Logging/LogTailReader.cs(async file IO, ring-buffer bounded memory, zero-allocation timestamp compaction viastring.Concat(span, span)). - New
Views/Cards/LogsViewerCard.xaml(.cs)— pure view in the establishedCards/pattern. Services/Logger.csis now writer-only; reader concerns moved out.SettingsViewModeluses anInterlockedticket counter for supersession instead of holding aCancellationTokenSourcefield, so the type stays non-Disposable.
Installation
Download StandbyAndTimer_Setup_2.0.10.exe below and run it. Administrator rights are required (UAC will prompt).
Or via winget once the manifest is approved:
winget install Layellie.StandbyAndTimerIntegrity
SHA256: 418348f4fc522c30290745a574fdcb2237149fa16ffb5a940d08e2b6557d55cb
The in-app update checker verifies this hash automatically.
v2.0.9 — Settings panel polish (logs out, dropdown readable, X hitbox)
⚠️ Superseded by v2.0.11.
v2.0.8, v2.0.9, and v2.0.10 were rapid-iteration interim builds of the same Settings-panel refresh. Install v2.0.11 instead — it bundles every fix below plus the final scrollbar / logs-viewer layout.
What's new
Three small Settings-panel quality fixes off the back of v2.0.8 hands-on testing.
Changes
- Recent logs viewer removed — Open Log Folder is sufficient, the in-panel viewer added clutter without much real value over Notepad.
- Theme / Language dropdowns are now readable. They used to fall through to WPF's default Aero ComboBox style, which paints the selection box white and ignores our Foreground setter — making the closed value effectively unreadable on both palettes. They now use a full custom ControlTemplate wired into our InputBg/InputFg/InputBorder brushes.
- Settings ✕ close button hit-area: 26×26 → 30×30, with the header row's spacer trimmed by the same amount so nothing else on the panel shifts.
Installation
Download StandbyAndTimer_Setup_2.0.9.exe below and run it. Administrator rights are required (UAC will prompt).
Or via winget once the manifest is approved:
winget install Layellie.StandbyAndTimerIntegrity
SHA256: 6c4e565cbfc42a074e2f8038e058b21be944715596077d8e8cbd52f9154113ac
The in-app update checker verifies this hash automatically.
v2.0.8 — MainWindow split into 6 UserControls + title bar shift fix
⚠️ Superseded by v2.0.11.
v2.0.8, v2.0.9, and v2.0.10 were rapid-iteration interim builds of the same Settings-panel refresh. Install v2.0.11 instead — it bundles every fix below plus the final scrollbar / logs-viewer layout.
What's new
Phase 2 of the modularization effort, plus a targeted layout fix for the title bar.
Refactor
- MainWindow split into 6 focused UserControls under
Views/Cards/:TitleBar,TimerCard,MemoryStatsCard,StandbyPurgeCard,GameModeCard,StatusBar.MainWindow.xamlis now a ~115-line shell that composes them. - Code-behind is restricted to the two cards that need it (TitleBar for window chrome, GameModeCard for drag-drop); events bubble up to the host so the rest stays pure MVVM.
Fix
- Title bar no longer "grows upward" when the Settings panel opens. The title bar row is now locked to
Height="36"(wasAuto); previously the Settings panel'sRowSpan="2"+VerticalAlignment="Stretch"was bleeding into row 0 and inflating the bar by a few pixels each toggle.
Installation
Download StandbyAndTimer_Setup_2.0.8.exe below and run it. Administrator rights are required (UAC will prompt).
Or via winget once the manifest is approved:
winget install Layellie.StandbyAndTimerIntegrity
SHA256: 75d2b61bbe9ac868a7f8181819bae970cadab0618d014e8cc336baa6d019e8dc
The in-app update checker verifies this hash automatically.
v2.0.7 — Settings panel UI polish
What's fixed
Three reported UI bugs from v2.0.6 are gone:
Logs viewer is readable now
The "Recent logs" box used the same background color as the panel it was on (both SurfaceBg), so the box visually disappeared and the dimmed log text was unreadable. Now the box uses the darkest palette tone (AppBg) for visible contrast, and the text uses full foreground (AppFg) at 10.5 pt.
Refresh button no longer clips
The header row had the label and the Refresh button colliding because they shared a single Grid column. Switched to a proper two-column layout so the button reads clearly even in the narrow 270 px panel.
No more window/card shift on button click
Two layout shifts addressed:
- Window-level: removed
SizeToContent="Height"(which was reflowing the whole window every time inner content changed). FixedHeight=600now. - Card-level: the Timer card's "TIMER LOCKED" success badge was using
Visibility=Collapsedwhen off — appearing/disappearing made the card grow/shrink ~6 px every toggle. Reserved the row's height withMinHeight=24so it stays put.
Plus an audit of every other Visibility=Collapsed binding in the app — all confirmed safe (modals, fixed-size containers, or intentional UX like the "Download & Install" button when an update is available).
Installation
- Download
StandbyAndTimer_Setup_2.0.7.exebelow. - Run it (UAC prompt — Administrator required).
- Launch from the Start Menu.
Self-contained .NET 10 build, 72.2 MB.
Verification
SHA256: 1a2658205df56c0667eeddf706fed291333beb9acc496dd219f04751cfa5c70e
PowerShell:
(Get-FileHash StandbyAndTimer_Setup_2.0.7.exe -Algorithm SHA256).HashFull changelog
v2.0.6 — Onboarding, crash reporter, logs viewer, game auto-detect
What's new
First-run wizard
A 30-second onboarding overlay shown only on the very first launch. Covers the three core moves: the Timer button, AUTO PURGE caveat (off by default for a reason), and the Game Mode drop zone. FirstRunCompleted persists alongside the other settings so it never reappears.
In-app crash reporter
If anything unhandled fires, you now see a real dialog instead of WPF's default fatal popup. The dialog has the full stack trace, a Copy details button, and an Open GitHub issue button that pre-fills the new-issue form with title, environment, and the (truncated) stack — one-click bug report.
Logs viewer in Settings
The Settings panel now shows the last 100 log lines inline. Auto-refreshes when you open the panel. Saves a trip to Explorer + Notepad when triaging.
Fullscreen game auto-detect
A new background service polls the foreground window every 3 seconds. When a window fully covers its monitor (classic or borderless fullscreen) and its process isn't already in your Game Mode list, you get a one-time-per-session tray balloon. Detection only — never auto-adds (could be a video player).
winget manifest
Three-file manifest set under winget-manifests/ for submission to microsoft/winget-pkgs. Once accepted, install via:
winget install Layellie.StandbyAndTimerPlus housekeeping
- README version table updated with v2.0.4 / v2.0.5 / v2.0.6 (some were missing).
NativeMethodsgained the user32 window-query trio +MONITORINFOused by the detection service.- All native calls still funnel through
Services/Native/NativeMethods.cs— no P/Invoke leakage elsewhere.
Installation
- Download
StandbyAndTimer_Setup_2.0.6.exebelow. - Run it (UAC prompt — Administrator required).
- Launch from the Start Menu.
The installer is self-contained (.NET 10 bundled), 72.2 MB.
Verification
SHA256: 9b76742cb78c78df9c916ef7b893b284ee9917b8d2798ee8257bb3adc8d42b56
PowerShell:
(Get-FileHash StandbyAndTimer_Setup_2.0.6.exe -Algorithm SHA256).HashFull changelog
v2.0.5
v2.0.5 — Game Mode actually works now + internal cleanup
Critical fix
- Game Mode now correctly opts game processes out of Win 11 EcoQoS throttling.
SetProcessInformationwas being called with the wrongPROCESS_INFORMATION_CLASSvalue (34 instead of 4), which silently returnedERROR_INVALID_PARAMETERand leftIGNORE_TIMER_RESOLUTIONunset. Games added to Game Mode in v2.0.0–v2.0.4 only got Priority + Affinity boosts; the 0.5 ms timer didn't reach them in the background. Fixed by both replacing the literal AND introducingNativeMethods.ProcessPowerThrottling = 4as a named constant so the typo can't come back.
Quality-of-life improvements
- Import Settings now applies live. No more "restart to apply" — values appear in the UI immediately after importing a JSON snapshot.
- Removed dead code (
MeasureActualResolutionMsand three unused P/Invoke declarations includingtimeBeginPeriod/timeEndPeriod). - Fixed AVRT handle leak in the timer activation path — every Activate/Deactivate cycle previously leaked one MMCSS handle and permanently boosted the dispatcher thread.
- Faster threshold typing. Threshold textbox keystrokes no longer rebuild the GamePaths list.
Download
StandbyAndTimer_Setup_2.0.5.exe (72.2 MB, Windows 10 20H1+ / Windows 11, x64)
SHA256: b323f3346aaef1e6f4afc3b16339eb824c9b91970b4ca91164e27f3b3377f21d
v2.0.4
v2.0.4 — Rock-solid 0.5 ms lock and opt-in AUTO PURGE
Highlights
- Timer now actually stays locked at 0.500 ms. The self-heal watchdog runs on its own dedicated
Thread(not the ThreadPool) registered as AVRT MMCSS "Pro Audio" withThreadPriority.AboveNormal, ticking every 50 ms. Immune to both ThreadPool starvation and Windows 11 EcoQoS throttling — no more brief slips to 1 ms during gameplay. - AUTO PURGE master switch (Game Mode-style ON/OFF toggle) added to the STANDBY PURGE card.
- Default thresholds dropped from 1024 MB → 0 MB. A fresh install no longer touches the standby list until the user explicitly opts in.
Auto-purge now requires three conditions
- AUTO PURGE toggle = ON
- Standby limit > 0 MB
- Free limit > 0 MB
Other
docs/screenshot.pngrefreshed with the new UI- Stale nested
StandbyAndTimer/CLAUDE.mdremoved
Download
StandbyAndTimer_Setup_2.0.4.exe (72.2 MB, Windows 10 20H1+ / Windows 11, x64)
SHA256: 7e615d9bdafad278163c6be0a33a51fe27fa5bc33874af4407e6390e5cbf15f7
v2.0.3 - faster startup + update fix
Faster startup + accurate update checker.
What changed
- Cold start cut from ~5.4 s to ~0.5 s. The 3
PerformanceCounterconstructors used byMemoryMonitorServicewere blocking the UI thread for ~4.8 s during DI resolution. They now build lazily on the monitor loop thread, and the main window shows beforeViewModel.InitializeAsyncruns. - Update checker no longer fires false positives.
ParseVersion(v2.0.2)returnedVersion(2,0,2)withRevision=-1, which compared as less than the matching assembly version2,0,2,0, so the app reported a phantom new version. Normalised. Also added a default<Version>2.0.3</Version>to the csproj so dev/CI builds no longer report themselves as1.0.0.0. - README screenshot refreshed to show the new lime/card UI.
.editorconfigadded for consistent formatting across editors.
Installation
- Download
StandbyAndTimer_Setup_2.0.3.exebelow. - Run the installer (UAC will prompt — Administrator privileges required).
- Launch from the Start Menu. Existing v2.0.x installs are upgraded in place.
SHA-256
SHA256: 8ed6c52dad2ffc0adba76c2b96a4feb3c55ad5335c9b7566aa150e491b27b89d