Skip to content

fix(ui): open Activity when clicking an online person - #141459

Merged
roboclaw-bot merged 1 commit into
mainfrom
openclaw/navigate-to-activity-page
Sep 7, 2026
Merged

roboclaw-bot merged 1 commit into
mainfrom
openclaw/navigate-to-activity-page

Conversation

@roboclaw-bot

@roboclaw-bot roboclaw-bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Collaborator

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

  • The direct-row regression failed before the change because navigation was never called.
  • 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.
  • After switching the new request assertion to the existing typed request filter, all three direct-navigation browser cases passed again.
  • Complete node scripts/check-changed.mjs -- <all six changed paths> passed: core-test/UI types, formatting, i18n, export and repository guards, lint, and style checks.
  • Independent autoreview performed; findings are verified against source and browser evidence.

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:

@clawsweeper

clawsweeper Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: web-ui App: web-ui labels Sep 7, 2026
@roboclaw-bot
roboclaw-bot marked this pull request as ready for review September 7, 2026 18:51
@openclaw-barnacle openclaw-barnacle Bot added size: S maintainer Maintainer-authored PR labels Sep 7, 2026
@clawsweeper clawsweeper Bot added P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Sep 7, 2026
@clawsweeper

clawsweeper Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed September 7, 2026, 3:00 PM ET / 19:00 UTC.

ClawSweeper review

What this changes

Makes 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
Reviewed head: df27d7914108fc76fa9334c7fcf38ae8bfbf9912

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused implementation reuses established owners and includes relevant interaction coverage, with no concrete correctness findings.
Proof confidence 🌊 off-meta tidepool Not applicable: The maintainer/bot proof exemption applies. Supplied browser results exercise Online-row navigation and card dismissal through the built UI with a mocked Gateway; they do not establish production deployment behavior.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Not applicable Not applicable: The maintainer/bot proof exemption applies. Supplied browser results exercise Online-row navigation and card dismissal through the built UI with a mocked Gateway; they do not establish production deployment behavior.
Evidence reviewed 6 items Current main still uses card buttons: The inspected main revision renders Online people as buttons without Activity click handlers, establishing that the direct-navigation improvement remains distinct.
Existing routing and dismissal owners reused: The introduced Online links use personActivityLink and personActivityRouting. Their existing navigation predicate preserves modified browser gestures; AppSidebar dismissal calls the people controller, which invalidates pending imports and closes active cards.
Behavioral regression coverage: The new browser cases exercise click, Enter, and touch activation, assert the person Activity pathname, verify card dismissal, and observe the profile-filtered sessions request. Existing cases retain hover/focus, session destinations, and qualified/unqualified identity separation.
Findings None None.
Security None None.

How this fits together

The 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
Loading

Before merge

None.

Agent review details

Security

None.

PR surface

Source +20, Tests +60, Docs +2. Total +82 across 6 files.

View PR surface stats
Area Files Added Removed Net
Source 2 25 5 +20
Tests 3 93 33 +60
Docs 1 3 1 +2
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 6 121 39 +82

Review metrics

None.

Technical review

Best 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.

Labels

Label changes:

  • add P3: This removes an extra navigation step from an already accessible Activity workflow.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: The maintainer/bot proof exemption applies. Supplied browser results exercise Online-row navigation and card dismissal through the built UI with a mocked Gateway; they do not establish production deployment behavior.

Label justifications:

  • P3: This removes an extra navigation step from an already accessible Activity workflow.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: The maintainer/bot proof exemption applies. Supplied browser results exercise Online-row navigation and card dismissal through the built UI with a mocked Gateway; they do not establish production deployment behavior.

Evidence

What I checked:

  • Current main still uses card buttons: The inspected main revision renders Online people as buttons without Activity click handlers, establishing that the direct-navigation improvement remains distinct. (ui/src/components/app-sidebar-render.ts:337, 5580b46d224e)
  • Existing routing and dismissal owners reused: The introduced Online links use personActivityLink and personActivityRouting. Their existing navigation predicate preserves modified browser gestures; AppSidebar dismissal calls the people controller, which invalidates pending imports and closes active cards. (ui/src/components/app-sidebar-render.ts:298, df27d7914108)
  • Behavioral regression coverage: The new browser cases exercise click, Enter, and touch activation, assert the person Activity pathname, verify card dismissal, and observe the profile-filtered sessions request. Existing cases retain hover/focus, session destinations, and qualified/unqualified identity separation. (ui/src/e2e/people-activity-card.e2e.test.ts:122, df27d7914108)
  • Supplied validation and protected context: The captured PR body reports 16 focused tests and 9 browser tests passing against a freshly built UI with a mocked Gateway, followed by three direct-navigation cases passing again. These are contributor-reported results, not reviewer execution. Repository State identifies MEMBER authorship and the discussion context includes the maintainer label; no substantive human review comments were supplied. (df27d7914108)
  • Area history supports routing: Available main history associates Peter Steinberger with Activity identity links and readable person URLs. Older parent/blob retrieval failed, so this supports a routing suggestion without asserting exact source-line introduction. (ui/src/components/person-activity-link.ts, 4c6d67f74397)
  • Inspection limits and checkout integrity: Local current-main and PR source inspection succeeded. GitHub API access and retrieval of unavailable release/history blobs failed because network hosts could not resolve; release inclusion and deeper parent comparisons were therefore not verified. Read-only diff checking passed and the checkout remained clean. (df27d7914108)

Likely related people:

  • Peter Steinberger: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@roboclaw-bot
roboclaw-bot merged commit 19c70a3 into main Sep 7, 2026
187 checks passed
@roboclaw-bot

Copy link
Copy Markdown
Collaborator Author

Merged via squash.

@roboclaw-bot
roboclaw-bot deleted the openclaw/navigate-to-activity-page branch September 7, 2026 19:05
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Sep 8, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui docs Improvements or additions to documentation maintainer Maintainer-authored PR P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: S status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant