Skip to content

Expandable process groups in the Processes tab - #2

Merged
Danil-Didkovskiy merged 16 commits into
mainfrom
expanded-list
Jun 17, 2026
Merged

Expandable process groups in the Processes tab#2
Danil-Didkovskiy merged 16 commits into
mainfrom
expanded-list

Conversation

@Danil-Didkovskiy

@Danil-Didkovskiy Danil-Didkovskiy commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Grouped rows in the Processes tab now have an inline expand chevron. Clicking it reveals the group's member processes indented beneath the row, ranked by the active metric.

Screenshot 2026-06-16 at 22 08 15

@Danil-Didkovskiy Danil-Didkovskiy self-assigned this Jun 16, 2026
Copilot AI review requested due to automatic review settings June 16, 2026 16:53

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds inline expand/collapse for grouped rows in the Processes tab, showing member processes indented under the group and keeping list/member ordering stable during pointer/keyboard interactions.

Changes:

  • Introduces a generic order-pinning utility (pinOrder) plus a reusable React hook (useOrderPin) for pinned lists (groups, detail members, inline expanded children).
  • Adds inline disclosure UI to grouped process rows and factors member rendering into a shared MemberRow component; centralizes member ranking via rankMembers.
  • Tightens process-action disabling to treat MoStats direct child helpers as “self” and hardens formatStartTime against out-of-range dates.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tests/unit/process-list.test.ts Removes old pinGroupOrder tests; needs new coverage for pinOrder.
tests/unit/process-action-service.test.ts Adds coverage for blocking quit/force-quit on MoStats helper child processes.
tests/unit/format.test.ts Adds test for out-of-range epoch handling in formatStartTime.
src/renderer/lib/format.ts Returns UNAVAILABLE for invalid/out-of-range Date conversions.
src/renderer/domain/process-list.ts Replaces pinGroupOrder with generic pinOrder; adds groupKey.
src/renderer/domain/process-detail.ts Exports buildMember; adds rankMembers and memberPid.
src/renderer/components/processes/use-order-pin.ts New hook to hold row identity order steady while active.
src/renderer/components/processes/process-row.tsx Adds inline expand chevron and renders ranked member children via MemberRow.
src/renderer/components/processes/process-list.tsx Uses useOrderPin, tracks expanded group keys, updates keyboard navigation targeting row buttons.
src/renderer/components/processes/process-explorer-view.tsx Passes sort and icons into ProcessList; updates focus-first-row selector.
src/renderer/components/processes/process-detail.tsx Uses shared MemberRow; pins member order while interacting; adds resetKey.
src/renderer/components/processes/member-row.tsx New shared member row component for detail + inline expanded children.
src/main/processes/process-action-service.ts Adds isSelfProcess and uses it in disabledReasonFor.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/renderer/components/processes/process-row.tsx Outdated
Comment thread tests/unit/process-list.test.ts
Comment thread tests/unit/process-list.test.ts
Comment thread src/renderer/components/processes/process-detail.tsx Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.

Comment thread src/renderer/components/processes/use-order-pin.ts Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 13 out of 13 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

src/renderer/components/processes/process-detail.tsx:405

  • Using only pid as the React key can cause incorrect component reuse if a PID is recycled while the detail view is open. DetailMember includes startedAtUnixMs; incorporate it into the key to avoid collisions across process lifetimes.
          {members.map((member) => (
            <li key={member.pid}>
              <MemberRow member={member} onOpen={onOpenMember} />
            </li>

Comment thread src/renderer/components/processes/use-order-pin.ts Outdated
Comment thread src/renderer/components/processes/process-list.tsx
Comment thread src/renderer/components/processes/process-row.tsx
Comment thread src/renderer/components/processes/process-row.tsx

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.

Comment thread src/renderer/components/processes/use-order-pin.ts Outdated
Comment thread src/renderer/components/processes/process-row.tsx Outdated
@Danil-Didkovskiy
Danil-Didkovskiy merged commit a8c52c5 into main Jun 17, 2026
3 checks passed
@Danil-Didkovskiy
Danil-Didkovskiy deleted the expanded-list branch June 17, 2026 13:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants