doc/planning/awake.md
The build ID can be found in Core\Constants.cs in the BuildId variable - it is a unique identifier for the current builds that allows better diagnostics (we can look up the build ID from the logs) and offers a way to triage Awake-specific issues faster independent of the PowerToys version. The build ID does not carry any significance beyond that within the PowerToys code base.
The build ID moniker is made up of two components - a reference to a Halo character, and the date when the work on the specific build started in the format of MMDDYYYY.
| Build ID | Build Date |
|---|---|
DIDACT_01182026 | January 18, 2026 |
TILLSON_11272024 | November 27, 2024 |
PROMETHEAN_09082024 | September 8, 2024 |
VISEGRADRELAY_08152024 | August 15, 2024 |
DAISY023_04102024 | April 10, 2024 |
ATRIOX_04132023 | April 13, 2023 |
LIBRARIAN_03202022 | March 20, 2022 |
ARBITER_01312022 | January 31, 2022 |
DIDACT_01182026 (January 18, 2026)[!NOTE] See pull request: Awake -
DIDACT_01182026
WM_POWERBROADCAST handling to detect system resume events (PBT_APMRESUMEAUTOMATIC, PBT_APMRESUMESUSPEND) and re-apply SetThreadExecutionState to restore the awake state.PBT_APMPOWERSTATUSCHANGE handling to re-apply SetThreadExecutionState when the power source changes (AC/battery transitions).WM_COMMAND message processing flaw in TrayHelper.WndProc that incorrectly compared enum values against enum count. Added proper bounds checking for custom tray time entries.ES_DISPLAY_REQUIRED (used when "Keep display on" is enabled) blocks Task Scheduler idle detection, preventing scheduled maintenance tasks like SSD TRIM. Workaround: disable "Keep display on" or manually run Optimize-Volume -DriveLetter C -ReTrim. Additional investigation needed for potential "idle window" feature.--display-on CLI flag default from true to false to align with documentation and PowerToys settings behavior. This is a breaking change for scripts relying on the undocumented default.SetThreadExecutionState fails. The monitor thread now handles the return value, logs an error, and reverts to passive mode with updated tray icon.SetShellIcon function was incorrectly requiring an icon for Delete operations, causing the NIM_DELETE message to never be sent.TILLSON_11272024 (November 27, 2024)[!NOTE] See pull request: Awake -
TILLSON_11272024
explorer.exe crash.PROMETHEAN_09082024 (September 8, 2024)[!NOTE] See pull request: Awake -
PROMETHEAN_09082024
VISEGRADRELAY_08152024 (August 15, 2024)[!NOTE] See pull request: Awake -
VISEGRADRELAY_08152024
DAISY023_04102024 (April 10, 2024)[!NOTE] See pull request: Awake Update -
DAISY023_04102024
0 as hours and 0 as minutes in TIMED awake mode, the UI becomes non-responsive whenever you try to get back to timed after it rolls back to PASSIVE.System.Windows.Forms and instead uses native Windows APIs to create the tray icon.Microsoft.Windows.CsWinRT and System.Reactive).ATRIOX_04132023 (April 13, 2023)Task.Run to spin up threads to actually using a blocking queue that properly sets thread parameters on the same thread.System.CommandLine and System.Reactive to the latest preview versions of the package.LIBRARIAN_03202022 (March 20, 2022)settings.json file for awake, through the tray_times property. The property values are representative of a Dictionary<string, int> and can be in the form of "YOUR_NAME": LENGTH_IN_SECONDS:{
"properties": {
"awake_keep_display_on": true,
"awake_mode": 2,
"awake_hours": 0,
"awake_minutes": 3,
"tray_times": {
"Custom length": 1800,
"Another custom length": 3600
}
},
"name": "Awake",
"version": "1.0"
}
System.Diagnostics.Process.GetCurrentProcess().CloseMainWindow(). This likely can help with the Awake process that is left hanging after PowerToys itself closes.