Add member history tracking and enhance process detail view - #3
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR upgrades the process detail view from a single “current value” readout to a time-series experience by retaining per-process history (CPU/memory totals) and per-tick member breakdowns, enabling accurate inspection of grouped processes at any historical tick.
Changes:
- Added “picked” (click) vs “scrubbed” (hover) index behavior so clicking off-data can resume live, while hover continues to clamp.
- Introduced selective sampling and storage of metric histories and per-tick group member breakdowns, with buffering while inspecting a pinned tick.
- Updated process grouping behavior to list system daemons as normal singleton rows (no synthetic “System” bucket), and refreshed UI/graphs to support pinned tick inspection.
Reviewed changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tests/unit/sample-history.test.ts | Adds unit coverage for click-pick vs hover-scrub index mapping. |
| tests/unit/process-list.test.ts | Updates expectations for daemon grouping and adds tests for selective sampling + member breakdown sampling. |
| tests/unit/process-detail.test.ts | Adds tests for ranking/rendering stored historical member breakdowns. |
| src/renderer/index.css | Adds panel pin-in/out animations with reduced-motion support. |
| src/renderer/domain/sample-history.ts | Adds pickedIndexAtFraction to distinguish click picking from hover scrubbing. |
| src/renderer/domain/process-list.ts | Removes synthetic System bucket, adds member breakdown sampling and selective sampling APIs. |
| src/renderer/domain/process-detail.ts | Adds rankMemberSamples for historical per-tick member list rendering; removes System-specific flag. |
| src/renderer/components/processes/use-process-histories.ts | Stores aligned metric + member breakdown trails, buffers ticks while pinned inspection is active. |
| src/renderer/components/processes/use-process-actions.ts | Simplifies action targeting now that there is no synthetic System group. |
| src/renderer/components/processes/process-row.tsx | Removes System-icon special casing in row rendering/equality. |
| src/renderer/components/processes/process-icon.tsx | Removes gear glyph path; uses the neutral fallback glyph consistently. |
| src/renderer/components/processes/process-explorer-view.tsx | Wires inspection state into history freezing; passes member history + icon table to detail view. |
| src/renderer/components/processes/process-detail.tsx | Implements pinned tick inspection UX and overlay members panel backed by historical member samples. |
| src/renderer/components/metrics/memory-graph.tsx | Adds optional click-to-pick behavior and pinned-band styling. |
| src/renderer/components/metrics/cpu-graph.tsx | Adds optional click-to-pick behavior and pinned-band styling. |
| src/renderer/components/metrics/area-layer.tsx | Extends ScrubBand to visually distinguish pinned vs hover scrubs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
vladimir-ikryanov
approved these changes
Jun 18, 2026
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.
Previously, the process detail view showed a single CPU/Memory usage value for the current moment. This PR replaces it with a graph that tracks changes:
This makes the view more useful and easier to understand. When reviewing child processes, users can now see how much each process consumed at a specific tick.
The current implementation reuses existing graph components and data aggregation logic.
P.S. This is the final polish step before the 1.0.0 release.