processlist UX refinements after observing the v5 layout live:
- ``compute_level_categorical`` now returns ``None`` (was ``"ok"``) when
the value matches no configured bucket. ``base_v5`` skips emitting
a ``_levels`` entry in that case → the renderer keeps the DEFAULT
colour (white/gray) instead of painting "S" / nice=0 in the OK
green. Mirrors v4 ``get_alert`` returning ``'DEFAULT'`` for
unmatched categorical values. The alert pipeline still sees no
event (semantically equivalent to "ok" for alerts).
- Command rendering drops the ``/usr/bin/`` path prefix from the
default view. Now: bold cmd + plain args only. The full-path mode
(toggled by ``/`` in v4) is deferred to G5+ along with the rest of
the hotkey plumbing.
Tests updated accordingly. Suite v5: 1370 green, lint clean.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Last MCP gap closure. Both plugins reuse the v4 glances_processes
singleton (no engine rewrite — strategy two-phase): processcount calls
engine.update() + get_count() each cycle, processlist consumes the
pre-sorted list via get_list(). KNOWN_V5_MISSING_PLUGINS shrinks to ().
- processcount: scalar with total / running / sleeping / thread /
pid_max; TUI mirrors v4's "TASKS N (M thr), R run, S slp, O oth"
header.
- processlist: collection PK=pid; minimal column set CPU% / MEM% / PID /
USER / THR / NI / S / Command, top-20 rows. cpu_percent and
memory_percent are watched (50/70/90, prominent=False — parity fs).
- Engine-internal fields (memory_info, cpu_times, io_counters, gids,
time_since_update, key) flagged internal=True so MCP/export keep
them but the generic TUI skips them.
- Out of scope (deferred to G5 with args/config plumbing): extended
view, programs aggregation, filter UI, interactive sort.
41 new tests (14 model + 27 renderer), v4 catalogue updated, MCP gap
log + adapter docstring updated.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>