Feat/taskmgr windows UI - #25
Merged
Merged
Conversation
The three "untested on Windows" entries existed because nobody had the machine. Running the release binaries for the first time retired one of them and turned up three reproducible defects, none of them fixed here: - every release build demands elevation, including the headless one meant for servers and containers, because the manifest is gated on the profile alone rather than on the gui feature. A non-elevated parent gets ERROR_ELEVATION_REQUIRED with no UAC prompt available - --help, --version and every clap error print nothing, because clap handles them inside Cli::parse() and attach_console() is not called until cli::run(). A mistyped subcommand fails in silence - kill without --force can never succeed, since sysinfo supports no signal but Kill on Windows. This also breaks the Task Manager's default "End process" button And the reason CI stayed green through all three: the headless smoke test runs a debug build, and nothing on any platform ever executes a release binary. What was verified working is listed too, so it is not re-investigated: AttachConsole itself, the windows_subsystem gating, exit codes, stdout/stderr separation, redirection, and the TUI's panic-hook terminal restoration under panic = "abort". The ring/C-compiler entry is settled rather than removed: it builds fine with MSVC, so the requirement moves to the README as a prerequisite. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
More colour, and the layout people already know.
Processes now leads with Name and follows Windows' column order, with the
measured columns heat-shaded — the tint strengthens and shifts amber to red
with the value, so the processes worth looking at are found by glancing
rather than by reading. Each header carries its machine-wide total.
The Disk column needed real data, not just a cell: sysinfo only exposes
cumulative counters, so the collector keeps the previous tick's values and
differences them against the wall clock actually elapsed rather than the
nominal interval, which would overstate every rate on a slow machine. The
rate is None until a baseline exists, exactly as cpu_pct is, and pid reuse
is handled with saturating_sub so a recycled pid cannot report an absurd
rate.
CPU % in the table is now a share of the whole machine, which is what the
column means to anyone reading it — 4 saturated threads of 16 reads 25 %,
not 400 %. The per-thread-summed figure is in the tooltip and is still what
`sensorview ps` prints; the filter bar was showing the summed number beside
the header's share, which read as a contradiction, and now agrees.
Performance gives each device class its own hue — CPU blue, memory purple,
disk green, network rose, GPU teal — used for its card, thumbnail and
graph, so colour identifies the device rather than decorating it. Graphs
fill to the baseline over a fixed grid, and utilisation is pinned to
0-100 % so an idle machine reads as idle instead of auto-scaling noise to
full height.
Sidebar titles are disambiguated in a post-pass, because the rule depends
on a tally no single node knows while the tree is walked. This machine has
two RAM-class nodes and six NICs, which rendered as two cards labelled
"Memory" and six labelled "Network" — the one thing the sidebar must never
do. Distinct device names win over an index ("Wi-Fi 2" beats "Network 5",
and is what Windows shows); numbering stays the fallback for genuinely
identical devices such as two disks reporting the same model string.
format_rate now prints <0.1 MB/s rather than 0 MB/s for small but real
I/O: rounding a measured value to zero contradicts this module's rule that
0 means idle and — means unknown.
Verified on screen in both the Black and Light palettes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.