Repository navigation
fix(ui): open Activity when clicking an online person - #141459
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs maintainer review before merge. Reviewed September 7, 2026, 3:00 PM ET / 19:00 UTC. ClawSweeper reviewWhat this changesMakes qualified people in the Control UI’s Online sidebar open Activity directly on click, tap, or Enter, while retaining hover/focus details and updating documentation and tests. Merge readiness✅ Ready for maintainer review This remains a useful, focused navigation improvement absent from inspected current main. No actionable patch defect was found, and the maintainer-protected PR should remain open for normal landing. Priority: P3 Review scores
Verification
How this fits togetherThe Control UI sidebar displays people from Gateway presence data. Person links feed the existing Activity route, which requests sessions involving the selected profile. flowchart LR
A[Gateway presence] --> B[Online people]
B --> C{Qualified profile?}
C -->|Yes, activate link| D[Person Activity route]
D --> E[Visible session feed]
C -->|No, click button| F[Details card]
B -->|Hover or focus| F
Before mergeNone. Agent review detailsSecurityNone. PR surfaceSource +20, Tests +60, Docs +2. Total +82 across 6 files. View PR surface stats
Review metricsNone. Technical reviewBest possible solution: Keep one canonical person Activity route, with direct Online-row navigation and independently accessible details cards. Do we have a high-confidence way to reproduce the issue? Not applicable as a broken-contract reproduction: existing documentation describes click-to-card behavior, and this PR deliberately introduces direct navigation. Is this the best way to solve the issue? Yes. Reusing the existing Activity link and dismissal owners is a narrow solution that avoids a competing routing implementation. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 5580b46d224e. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
|
|
Merged via squash.
|
Open a qualified person’s Activity page directly when their Online sidebar row is clicked, tapped, or activated with Enter. Preserve hover/focus details, unqualified-viewer buttons, and grouped owner cards. Reuse the existing person Activity route and dismissal owners, preventing delegated card activation from replaying a navigation click. Validation: focused presence and Chromium/mock-Gateway tests, production UI build, changed-surface type/lint checks, independent review, and exact-head hosted CI passed. Worked on by: - @steipete Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
What Problem This Solves
Fixes an issue where clicking a person in the Control UI sidebar’s Online section only opened their details card instead of opening their Activity page.
Why This Change Was Made
Qualified profile rows now use the existing person Activity link and routing helpers. Clicks are kept out of the hover-card activation path, including while its code is loading; navigating dismisses any pending or visible card. Hover/focus details, unqualified-viewer buttons, and Group by Person card controls remain available.
User Impact
Click, tap, or press Enter on an online person to open their Activity feed directly. Hover or focus the row for connection details and visible sessions. Native modified-link gestures retain browser behavior.
Evidence
node scripts/run-vitest.mjs ui/src/components/app-sidebar.test.ts -t "AppSidebar viewer presence" --reporter=dot: 16 passed.node scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner ui/src/e2e/people-activity-card.e2e.test.ts ui/src/e2e/session-person-grouping-presence.e2e.test.ts --reporter=dot: 9 passed against a freshly built UI and mocked Gateway. Covers mouse, keyboard, touch, hover/focus updates, saved session destinations, and qualified/unqualified identity collisions.node scripts/check-changed.mjs -- <all six changed paths>passed: core-test/UI types, formatting, i18n, export and repository guards, lint, and style checks.No Gateway/API, authorization, storage, or CSS changes. Production deployment is outside this PR’s proof.
Hosted CI passed for head
df27d7914108fc76fa9334c7fcf38ae8bfbf9912(run 34153337040). ClawSweeper completed its exact-head review with no actionable findings.Worked on by: