Releases: MeowIce/LidDock
Releases · MeowIce/LidDock
Release list
LidDock v1.0.1
1.0.1-DEV-1
Added installer/uninstaller using Inno Setup.
LidDock v1.0.0
This is the first release of LidDock, version 1.0.0
Changes after DEV-2:
- Added app icon. Special thanks to @aprlnnf for designing the LidDock app icon :)
- Accent Color support
LidDock v1.0.0 DEV-2
Release Notes - LidDock v1.0.0 DEV-2
Highlights
- Massive Memory Reduction: WPF App UI physical RAM (Working Set) reduced from ~121.5 MB down to ~6.4 MB (over 94% reduction). Background Daemon stabilized at an ultralight footprint of ~340 KB Working Set and 0.00% idle CPU.
- Critical Safety Sleep Fix: Resolved an issue where abrupt dock disconnection while the lid was closed only turned off the screen instead of putting the laptop to sleep. The system now properly invokes native Win32
SetSuspendState. - Concurrency & Display Fixes: Fixed a timer cancellation race condition during the safety grace period and corrected display detection logic for Miracast wireless monitors.
- Full Code Cleanup: Eliminated dead Win32 P/Invoke declarations, unused structs, obsolete interface methods, and unused events across the solution.
What's Changed
1. Memory & Performance Optimizations
- Post-Render Memory Purge: Integrated automated working set trimming 800ms after XAML visual tree layout renders, purging transient parser caches and dropping UI memory from ~121.5 MB to ~6.4 MB.
- Software Rendering Mode: Configured WPF render pipeline to software-only mode to prevent unnecessary DirectX 3D virtual address commitments while preserving smooth Fluent Mica and Acrylic backdrops via DWM.
- Workstation GC & Runtime Trim Flags: Added runtime configuration flags (
ServerGarbageCollection=false,TieredCompilation=false,GarbageCollectionAdaptationMode=0) to restrict virtual memory expansion. - Static HICON Caching: Cached all 6 tray state icons inside
daemonTrayManager, eliminating GDI bitmap churn, memory DC re-allocations, and handle churn on every display/power status update. - Debounced Working Set Trimming: Implemented a 3-second debounced background trimmer in the Daemon to automatically reclaim working set memory back to the ~340 KB floor after docking, power events, or tray menu interactions.
- Win32 Window Lookup: Replaced process table enumeration (
Process.GetProcessesByName) with native Win32FindWindowWinnativeTrayMenu, preventing memory spikes in the Daemon when opening Settings. - Zero-Allocation Diagnostics Logger: Converted
diagnosticsLoggerfrom a node-allocatingLinkedListto a static circular array buffer (logEntry[128]), eliminating GC pressure during logging. - Redundant Power Scheme Filtering: Added cache guards in
powerSchemeManagerto skip redundant Win32 registry writes and kernel notifications when the target power action already matches active settings.
2. Critical Bug Fixes & Reliability
- Safety Sleep Enforcement: Fixed
triggerImmediateSleepinpowerSchemeManagerto invokepowrprof.dll!SetSuspendState(false, false, false)instead of posting monitor power-off commands (SC_MONITORPOWER), preventing closed laptops from overheating in backpacks when undocked. - Grace Period Timer Race Condition: Fixed an
ObjectDisposedExceptionrace condition inclamshellStateMachinewhere canceling the grace period timer could still trigger system sleep if the task faulted during cancellation. - Miracast Display Filtering: Decoupled
displayTechnology.miracastfrom theisVirtualflag indisplayWatcher, ensuring thatignoreVirtualDisplaysno longer overrides the independentignoreWirelessDisplayssetting.
3. Code Cleanup & Architectural Hygiene
- Removed Unused Win32 P/Invokes: Removed dead
createProcessandcloseHandledeclarations, as well as unusedstartupInfoandprocessInformationstructs fromnativeMethods. - Removed Dead Methods & Events: Removed uncalled
forceReevaluate()fromiClamshellStateMachineandclamshellStateMachine, unreferencedcmdProfileCustommenu constant fromnativeTrayMenu, and unsubscribedonSettingsChangedevent fromsettingsManager. - Preserved Backward Compatibility: Maintained
AppSettingsschema fields to ensure existing user configuration files (settings.json) remain fully compatible without schema corruption.
4. Documentation & UX
- Accurate Tray Icon Status Colors: Documented all tray icon indicator colors in README (Blue: Docked Lid Open; Green: Clamshell Active; Orange: Disconnect Grace Period Countdown; Gray: Standard Sleep Mode).
- How to Use Guide: Added a comprehensive user guide covering first-time setup, daily docking workflows, and accidental disconnect protections.
- Streamlined Profiles: Removed all references to the obsolete Custom profile from documentation and codebase.
First DEV release of LidDock. Yay !
Brought macOS clamshell experience to Windows 11.