v1.2.2
[1.2.2] - 2026-05-24
Added
- Tab Underline Navigation: Implemented a unified borderless tab navigation system across all tab controls (main navigation, nested telemetry details, and advanced tools sub-tabs) using sliding/resizing 2px
$BrandPurpleunderline indicators. - Action Button Outline Style & Hovers: Redesigned primary action buttons (like
$btnInstallwith bold text) and secondary buttons to use an outline-only flat style. Added a custom border hover hook that transitions button borders to$BrandCyan(Brandblue) and applies a soft gray background fill (FromArgb(230, 230, 230)) while keeping text color static to avoid flashing. - Unified Read-Only lavender-gray background: Styled all read-only display controls (
statusBox,listBlockers,listOverrides,listAutomated,txtLastWake,txtWakeTimers, andlistArmedDevices) with a soft lavender-gray background (FromArgb(245, 245, 250)) to cleanly separate editable inputs from informational outputs. - Context-Aware Diagnostics Test Tooltips: Implemented dynamic, state-aware tooltips for the four test buttons in the Operating Mode Tests panel (
Test Sleep/Hibernate,Test Wake/Resume,Test Graceful Close, andTest Force Close) on Page 2 (Diagnostics). Tooltips now prepend the current target's status (e.g.,[Available - Target is running],[Unavailable - Target is not running]) and append context-specific warnings or launch instructions (e.g., warning the user about unsaved work before closing, or displaying the executable path that will be used for launch). - Persistent Enablement for Tooltip Access: Configured the four test buttons to remain enabled at all times instead of using WinForms
.Enabled = $false(which completely disables hover events and hides tooltips in Windows). The click handlers now perform runtime state verification and alert the user via the Status box if an action cannot be run (e.g., trying to stop a process that is not running). - Scan Label Color Persistence Exclusion: Excluded the
lblDiagDetailstatus label at the bottom of Page 2 (Diagnostics) from the recursive form styling reset functionReset-MainFormChildControls. Previously, the reset loop overwrote the label'sForeColorfromDimGray(light gray) to the defaultControlText(black) on startup. Setting the control's.Name = "lblDiagDetail"and adding it to the exclusion check ensures it maintains its light gray resting color. - Dedicated Textbox Name Identifiers: Added explicit
.Nameassignments for the main setup status box (statusBox), telemetry wake source textbox (txtLastWake), and wake timers textbox (txtWakeTimers) so they are correctly identified and skipped during child control layout resets. - Tri-List Selection Sync: Added synchronized selection behavior across the Active Blockers, Ignored Blockers, and Automated Apps lists. Selecting an item in one list clears selections in the others, ensuring context-specific actions (like "Remove from Automation" and "Open Installation Folder") are only enabled when appropriate.
- Blocker Discovery Tip & Tooltip: Updated the blocker hint label text to
"Tip: To discover and automate..."and added a comprehensive step-by-step hover tooltip explaining how to open media apps, play audio to register wake-locks, scan, and automate them. - Device Profile Tooltips: Added detailed hover tooltips for BEACN and Demo Device profiles in the Device Settings panel. The BEACN tooltip guides users through the recommended configuration path, and the Demo Device tooltip outlines its use as a simulated test bed and developer template for custom modules.
Changed
- General Settings Grid Alignment: Shifted custom logging (
tbLogCustom) and custom hotkey (tbCustomKey) textboxes to X=230 and widened them to 75px, removed the redundantCustom:label (lblCustomKey), and moved the logging seconds label (lblLogCustom) to X=310. - GroupBox Renaming: Renamed the bottom-middle Operating Mode GroupBox on Page 2 to
"App Override Settings"to clarify its function. - Live Log Dark Accent Color: Shifted the real-time background console color of the live log console (
txtLiveLog) to a modern, slate-gray dark background (FromArgb(40, 44, 52)) with a cyan text foreground. - System Sleep & Wake Analysis & Grid Layout Alignment:
- Grid Alignment (Horizontal & Vertical): Enforced a completely unified grid system across both pages. Both columns now use a width of
370pxseparated by a15pxgutter gap (Left Column:X = 10..380; Right/Middle Column:X = 395..765). This stabilizes the interface and prevents horizontal layout jump when toggling between tabs. - Bottom Action Button & Spacing Unification: Resolved sizing and spacing inconsistencies of bottom button rows. Expanded Page 1's
$btnInstalland$btnUninstalland Page 2's$btnDiagScanand$btnDiagIgnoreto span the full width of the left/diagnostics column (X = 10..380), unified the horizontal gap between adjacent buttons on both pages to exactly10px, and widened Page 1's$btnToolsAdvancedto370px(shifting its location toX = 395) to align perfectly with the Status box and Page 2's diagnostics button. - Pop-out Drawer Gutter Alignment: Aligned the visual boundaries of the pop-out drawers on both pages. Shifted the Page 2 drawer child GroupBoxes (
grpTestandgrpTelemetry) from relativeX=10to relativeX=0(absoluteX=790) and expanded their widths to360px(absoluteX=1150). This makes the drawer borders line up perfectly with Page 1's$grpAdvancedToolsdrawer border. - Symmetric Vertical Separator Lines: Extended the bottom of the brand color vertical separator lines (
toolsDrawerSepon Page 1,diagDrawerSepon Page 2) from ending flush with the bottom of the main content column to ending atY=453(7px below the bottom edge of the bottom action buttons). This matches the visual overhang of the lines at the top (Y=10, which is 7px above the top border of the GroupBoxes) for perfect top/bottom visual symmetry. - Page 1 (Setup): Shrunk
$deviceGroupheight to 180px and shifted$detailsPanelup to Y=90, aligning the bottom boundary with$opGroupat Y=190. Shifted$statusGroupup to Y=200 and expanded$statusBoxto 160px in height, allowing 2 additional lines of setup activity logs to be visible and establishing a clean horizontal grid split at Y=190/200. - Page 2 (Diagnostics): Expanded
$grpAutomatedheight to 200px to enlarge the automated apps list box to 130px (displaying more apps without scrolling), and aligned its bottom boundary with$grpBlockersat Y=210. Shifted$grpOperatingModeto Y=220, shrinking its height to 175px, and compressed its wake options (Y=118 and Y=138) to fit perfectly. Widened Left column panels to370px(making list boxes and buttons350px) and shifted Middle column panels to370pxwide. - Telemetry Box & Control Refinements: Shrunk
$grpTestto 150px (shifting test buttons to Y=60 and Y=105), shifted$grpTelemetryup to Y=160, and expanded its height to 225px. Shifted child controls to match the new 360px width: dropdown and textbox widths increased to 330px, test button widths increased to 158px (shifting right-hand buttons to relative X=187), and tab page contents widened to 312px. Centered the bottom telemetry refresh button at relative X=15 and shrunk it to 330px to align visually with the inputs inside the GroupBoxes above.
- Grid Alignment (Horizontal & Vertical): Enforced a completely unified grid system across both pages. Both columns now use a width of
- Scan Status Wording: Changed the scan completion status line text from
"Scan complete - HH:mm:ss."to"Last scan completed at HH:mm:ss."for a more descriptive and professional user interface presentation. - DPI-Safe Tooltip Wrapping Sync: Verified and ensured that the newly added dynamic status descriptions fully integrate with the tooltip word-wrapping proxy to prevent truncation or overflow on high-DPI scaling configurations.
Fixed
- Diagnostics Selection State Bug: Fixed a bug where buttons (e.g. "Remove from Automation") and description labels remained enabled when shifting selections between list boxes. The selection mutex now only wraps the list clearing operations, allowing state and layout updates to run unconditionally on selection change.
- System Overrides Parsing Bug: Fixed a parsing bug where power request overrides containing spaces (e.g.,
"BECAN Mic","Legacy Kernel Caller","USB Audio 2.0") had their names truncated to the first word and requests corrupted. Refactored the parser to use a right-to-left scanning strategy, ensuring name tokens and request keywords are correctly separated. - Active Blockers Filtering: Filtered out already-automated idle apps from the discovered Active Blockers list to prevent visual clutter and redundant UI prompts.
SHA256 56E6F3A7B84E9D109DF4B3BFEA8A00699F3D21CE03013F3016F99E1758FAB8FB