TaskMan v0.1.8
A reliability and polish release: fixes for LocalSystem broker service stability, disk active time scaling and short-window preservation, and table scroll anchoring when sorting live tables.
Core Service & Broker
- A vanished client no longer terminates the LocalSystem broker service. When an opener connected and dropped its handle before
ConnectNamedPipe, NPFS left the instance inERROR_NO_DATA. This was mapped toErrand propagated out of the accept loop, killing the service (SCM event 7024/7031). Connection errors are now handled per-instance without failing the broker. - Eliminated pipe listener race conditions. The broker now re-arms its next pipe listener before resolving client image identity, eliminating
ERROR_PIPE_BUSYwindows where incoming connection attempts failed. The GUI client also retries a busy pipe up to a 1 s deadline. - Fast broker detection after service start. When the service is installed from Advanced Settings, the broker source is checked every tick (a single cheap
CreateFileW) rather than waiting on the 30 s retry backoff that covers local ETW sessions. Columns begin populating within two ticks of service start.
Processes & Telemetry
- Disk active time is scaled to wall time. Previously computed as
proc_service_time / total_service_time, meaning a single minor I/O request on an idle disk caused a process to report 100% disk activity under a 0% header. Rows are now scaled by the machine total, so rows sum to the header and noise collapses on idle disks. - No blanking after window restore. Restoring a minimized window or probing the disk source creates a brief sample window shorter than
MIN_WINDOW_MS. Instead of blanking the entire column to "—", the previous valid measured reading is carried forward.
Tables & Scrolling
- Scroll anchoring follows the majority of rows rather than a single survivor. Sorting Processes by CPU load previously dragged the viewport downwards as the tracked row traded places with its neighbours on each tick. Anchor offsets now compute the longest run of equal displacements across all remembered rows, following only true inserts/removals (>50% agreement) and ignoring live re-ranking.
- Top-pinned viewports stay at the top. A viewport scrolled to the very top stays at rank 1, keeping the highest CPU consumer visible as processes trade positions.
Verifying a download
Each archive ships a .sha256 beside it:
sha256sum -c taskman-v0.1.8-windows-x86_64.zip.sha256
Full changelog: v0.1.7...v0.1.8