Skip to content

fix(ui): show primary user in multi-agent profile hero - #136736

Merged
steipete merged 10 commits into
openclaw:mainfrom
jjjhenriksen:fix/profile-primary-user
Sep 5, 2026
Merged

steipete merged 10 commits into
openclaw:mainfrom
jjjhenriksen:fix/profile-primary-user

Conversation

@jjjhenriksen

@jjjhenriksen jjjhenriksen commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

Related: #138670

What Problem This Solves

Fixes an issue where users opening Settings → Profile on a multi-agent Gateway see the default assistant instead of the connected person. It also fixes stale names after another client clears a profile name and clipped email titles for unnamed people on narrow screens.

Why This Change Was Made

Live Gateway identity owns the header, including an absent name after a remote clear. Fetched profile data stays with the editor and its unsaved drafts. The extracted profile-hero.ts renders the person through the shared viewer avatar, and profile-page.ts uses the existing IdentityAvatarController for authenticated image ownership. Unidentified connections retain the agent preview and its image/text/mascot fallbacks. Unnamed owners without email use the existing localized Owner label.

A second hero template and a page-owned credential cache duplicate existing owners. Synchronizing editor fields from presence would couple live identity updates to in-progress editing. The repair removes those alternatives and reuses the canonical agent-summary type.

User Impact

The header shows the connected person's name, email, and avatar independently of the agent roster. Remote renames and name clears update the header while local drafts remain intact. Long names and email fallbacks wrap within the card. Existing connected-account controls and identity permissions retain their behavior.

Evidence

Head: 5b2f4232c9ef388817ef647f662e0d964f4844a1.

  • node scripts/run-vitest.mjs ui/src/pages/profile/profile-hero.test.ts: 2 tests pass, covering identified/unidentified rendering, live rename/clear, stale editor data, and the localized owner fallback. Before repair, the name-clear case returned Ada instead of the email, and the unnamed-owner case returned the internal ID instead of Owner. The original multi-agent regression returned Clipper instead of Ada on main.
  • Synthetic browser proof at 1280px and 360px is inspected below. For a valid unbroken email, the title measured 838px inside a 334px card before, and 302px after. These are isolated fixtures, not the operator's browser.
  • node scripts/run-vitest.mjs test/vitest-ui-e2e-config.test.ts: 43 tests pass after preserving both the new Profile and main's device-alias real-Gateway registrations.
  • node scripts/run-vitest.mjs test/scripts/ci-workflow-guards.test.ts -t 'selects the complete real-Gateway command': 5 cases pass.
  • Independent Codex review of the integrated candidate: no accepted/actionable P0–P2 findings. git diff --check passes. The final full changed-file check passed. Exact-head CI passed in run 33997290487, attempt 2; the unchanged browser-route-handoff timeout passed on rerun without source changes.
  • The isolated real-Gateway Profile test passed on the preceding head (job evidence). Its synthetic identity now travels through a loopback reverse proxy because Chromium did not apply browser extra HTTP headers to the WebSocket upgrade. A direct Chromium-to-WebSocket probe verified the forwarded headers. The extended second-tab rename/clear/draft flow passed on this exact head (job evidence). The final test-only correction consolidates title/handle checks into full viewport visibility plus horizontal text fit; its owned browser probe fails with old CSS and passes with fixed CSS. The Profile proof and required CI gate are green on this exact head.
  • ClawSweeper's live-clear and unnamed-email findings are addressed by the regressions and captures. Its earlier integration finding is resolved in the extracted hero owner. No production authentication or test assertions were weakened.

Named profile before:

Profile header incorrectly showing Clipper

Named profile after:

Profile header showing the authenticated person Ada

Unnamed email before:

Unnamed email title clipped outside the phone-width card

Unnamed email after:

Unnamed email title fully wraps inside the card

Production: +52/-58 (net -6). Tests/support, including the CI test-selection line: +490/-106 (net +384). Documentation: +2/-2. Contributor delta: production +53/-1 (net +52), tests/support +233/-21 (net +212). Maintainer delta excluding unrelated main integration: production net -58, tests/support net +172.

Credit: Jacqueline Henriksen (@jjjhenriksen). Original contributor commits and authorship remain in the branch ancestry.

Co-authored-by: Jacqueline Henriksen 179184921+jjjhenriksen@users.noreply.github.com

The latest ClawSweeper review has no remaining code findings. Its attachment-fetch limitation is resolved by maintainer inspection of the exact uploaded synthetic captures plus the executable before/after and real-Gateway evidence (resolution).

@clawsweeper

clawsweeper Bot commented Sep 2, 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.

@jjjhenriksen

Copy link
Copy Markdown
Contributor Author

Runtime screenshot

This screenshot is from the production-built Control UI browser proof. The authenticated user is Test Person while the configured default agent is Clipper; the hero shows the user identity, not the agent.

Authenticated primary user shown in Profile hero while Clipper is the default agent

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ded15303a2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/pages/profile/profile-page.ts Outdated
Comment thread ui/src/pages/profile/profile-page.ts Outdated
@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Sep 3, 2026
@clawsweeper

clawsweeper Bot commented Sep 3, 2026 •

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed September 5, 2026, 7:21 PM ET / 23:21 UTC.

ClawSweeper review

What this changes

The Profile header displays the connected person's live identity, preserves unidentified agent previews, and wraps long names and emails, with regression coverage and CI registration.

Merge readiness

✅ Ready for maintainer review

The repair remains necessary: current main and the latest release still show the agent in the Profile header. Earlier findings are resolved, and the updated proof resolution supports proceeding without another contributor follow-up.

Priority: P2
Reviewed head: 5b2f4232c9ef388817ef647f662e0d964f4844a1

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused repair with resolved prior findings, shared ownership, and sufficient recorded real-Gateway and visual evidence.
Proof confidence 🦞 diamond lobster (5/6) ✨ media proof bonus Sufficient (linked_artifact): The recorded exact-head browser flow exercises the Profile page through a real Gateway, showing the connected person and remote rename/clear updates while preserving a local draft. Inspected before/after captures and measured text containment are explicitly confirmed in the supplied resolution comment; fresh media retrieval was unavailable to this reviewer.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (linked_artifact): The recorded exact-head browser flow exercises the Profile page through a real Gateway, showing the connected person and remote rename/clear updates while preserving a local draft. Inspected before/after captures and measured text containment are explicitly confirmed in the supplied resolution comment; fresh media retrieval was unavailable to this reviewer.
Evidence reviewed 9 items Current main still needs the repair: The fetched main revision renders the hero name, handle, and avatar from agent identity; it has no connected-user input.
Latest release comparison: The supplied latest release, v2026.9.2, also contains the agent-only Profile hero.
Prior identity findings resolved: The header receives selfUser directly and uses its live name, email, or localized Owner fallback. Cached editor data cannot restore a remotely cleared name.
Findings None None.
Security None None.

How this fits together

The Control UI Profile page receives identity updates from the Gateway and displays account information alongside profile-editing controls. Its header now uses that live identity while leaving unsaved editor fields independent.

flowchart TD
  A[Gateway identity updates] --> B[Profile page]
  C[Agent roster] --> B
  B --> D{Identified connection?}
  D -->|Yes| E[Person name and shared avatar]
  D -->|No| F[Default agent preview]
  E --> G[Responsive Profile header]
  F --> G
Loading

Before merge

None.

Agent review details

Security

None.

PR surface

Source -6, Tests +383, Docs 0, Config +1. Total +378 across 12 files.

View PR surface stats
Area Files Added Removed Net
Source 3 52 58 -6
Tests 7 489 106 +383
Docs 1 2 2 0
Config 1 1 0 +1
Generated 0 0 0 0
Other 0 0 0 0
Total 12 544 166 +378

Review metrics

None.

Technical review

Best possible solution:

Keep live Gateway identity authoritative for the header, reuse shared avatar ownership, and preserve editor drafts and unidentified previews.

Do we have a high-confidence way to reproduce the issue?

Yes: current main selects the default agent for the Profile header even when a different person is connected. Source inspection establishes the path; this review did not execute it.

Is this the best way to solve the issue?

Yes: the patch repairs the existing header owner and reuses established identity and avatar components without changing stored preferences or authorization.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against d3f01d9851f4.

Labels

Label changes:

  • remove proof: 📸 screenshot: Current real behavior proof evidence kind is linked_artifact.

Label justifications:

  • P2: This fixes misleading Profile identity and clipped text without blocking the broader agent workflow.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (linked_artifact): The recorded exact-head browser flow exercises the Profile page through a real Gateway, showing the connected person and remote rename/clear updates while preserving a local draft. Inspected before/after captures and measured text containment are explicitly confirmed in the supplied resolution comment; fresh media retrieval was unavailable to this reviewer.
  • proof: sufficient: Contributor real behavior proof is sufficient. The recorded exact-head browser flow exercises the Profile page through a real Gateway, showing the connected person and remote rename/clear updates while preserving a local draft. Inspected before/after captures and measured text containment are explicitly confirmed in the supplied resolution comment; fresh media retrieval was unavailable to this reviewer.

Evidence

What I checked:

  • Current main still needs the repair: The fetched main revision renders the hero name, handle, and avatar from agent identity; it has no connected-user input. (ui/src/pages/profile/profile-hero.ts:47, d3f01d9851f4)
  • Latest release comparison: The supplied latest release, v2026.9.2, also contains the agent-only Profile hero. (ui/src/pages/profile/profile-hero.ts:47, 3928bad9badf)
  • Prior identity findings resolved: The header receives selfUser directly and uses its live name, email, or localized Owner fallback. Cached editor data cannot restore a remotely cleared name. (ui/src/pages/profile/profile-hero.ts:46, 5b2f4232c9ef)
  • Layout and integration corrections: The introduced CSS bounds and wraps both header fields; the browser regression checks full viewport visibility and horizontal fit. The real-Gateway fixture is registered in both the serial inventory and CI command. (ui/src/e2e/profile-page.e2e.test.ts:139, 5b2f4232c9ef)
  • Existing avatar ownership preserved: Gateway connection setup supplies the existing ordered credentials and resource base path to the shared avatar context. The shared loader restricts requests to the connected Gateway, aborts replaced contexts, and rejects stale image results. (ui/src/app/gateway-store.ts:417, 5b2f4232c9ef)
  • Recorded real behavior and visual proof resolution: The supplied body and fix(ui): show primary user in multi-agent profile hero #136736 (comment) record inspection of the exact uploaded before/after captures, an email-title reduction from 838px to 302px within a 334px card, and an exact-head real-Gateway two-tab rename/clear run that preserves the first tab's draft. The fixture exercises the changed Profile owner through browser navigation and real Gateway transport. Fresh attachment and job retrieval failed in this reviewer environment; the previously accepted proof and explicit inspection resolution are preserved. (ui/src/e2e/profile-page.real-gateway.e2e.test.ts:123, 5b2f4232c9ef)

Likely related people:

  • steipete: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)
  • scoootscooob: 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.

History

Review history (7 earlier review cycles)
  • reviewed 2026-09-03T00:30:37.227Z sha ded1530 :: needs real behavior proof before merge. :: [P2] Prefer the live self-user name after presence updates | [P2] Make the email and badge fit narrow Profile pages
  • reviewed 2026-09-03T02:20:45.139Z sha 0b9a246 :: blocked before merge. :: none
  • reviewed 2026-09-04T04:05:48.858Z sha 0b9a246 :: blocked before merge. :: none
  • reviewed 2026-09-05T21:44:56.877Z sha ffa680d :: blocked before merge. :: [P2] [P2] Preserve an authoritative remote display-name clear | [P2] [P2] Bound the email fallback rendered as the hero name
  • reviewed 2026-09-05T21:52:44.418Z sha ffa680d :: blocked before merge. :: [P2] [P2] Preserve an authoritative remote display-name clear | [P2] [P2] Bound the email fallback rendered as the hero name
  • reviewed 2026-09-05T22:43:26.955Z sha f4ec3d3 :: blocked before merge. :: none
  • reviewed 2026-09-05T23:04:37.587Z sha 5b2f423 :: blocked before merge. :: none

@jjjhenriksen

Copy link
Copy Markdown
Contributor Author

Runtime screenshot

This screenshot is from the production-built Control UI browser proof. The authenticated user is Test Person while the configured default agent is Clipper; the hero shows the user identity, not the agent.

Authenticated primary user shown in Profile hero while Clipper is the default agent

@jjjhenriksen

Copy link
Copy Markdown
Contributor Author

Real Gateway runtime proof

This screenshot is from the production-built Control UI connected to an isolated real Gateway. The Gateway authenticated primary.user@example.test, resolved its durable profile as Test Person, and exposed Clipper as a separate configured agent; the Profile hero shows Test Person.

Real Gateway proof showing Test Person in Profile hero with Clipper configured separately

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Sep 3, 2026 •

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. 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. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Sep 3, 2026
@roboclaw-bot roboclaw-bot added the clawtributor-review Clawtributor pull request awaiting prioritized maintainer review label Sep 4, 2026
@roboclaw-bot

Copy link
Copy Markdown
Collaborator

Maintainer-requested review/landing follow-up for head 0b9a2461d0d52d81d9bbb81faee85d3b2c2f5abc:

The authenticated-user hero is the right behavior, but review found four items to repair before landing:

  • Clearing the display name in another client removes selfUser.name while ownProfile remains cached; the new fallback at profile-page.ts:423 restores the old name. The live absence must remain authoritative.
  • The new real-Gateway suite is excluded from ordinary E2E shards but missing from CI’s explicit real-Gateway command; workflow/inventory guards fail.
  • The long-email fixture at profile-page.e2e.test.ts:124 fails TS2322 under noUncheckedIndexedAccess.
  • Duplicating the OpenClaw badge literal changes the raw-copy baseline count and fails i18n/lint checks.

Exact-head evidence: https://github.com/openclaw/openclaw/actions/runs/33706658094 . UI unit shards passed; the real-Gateway job stopped at its build-budget gate before tests.

I am adapting the fix to current main’s extracted profile-hero.ts, preserving the newer model-account behavior and adding name-clear coverage. Because this requires replacing ancestry, I will use a credited maintainer replacement rather than rewrite/squash this contributor branch. This PR will stay open until the replacement is verified and landed.

Work is tracked in https://team.openclaw.ai/chat/roboclaw/clawtributor-review-pr-136736 .

Integrate the existing hero owner and shared authenticated avatar lifecycle while retaining unidentified agent previews. Preserve live user name updates and wrap long profile emails on narrow screens.

Co-authored-by: Jacqueline Henriksen <179184921+jjjhenriksen@users.noreply.github.com>
@clawsweeper

clawsweeper Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Keep the Profile real-Gateway test in the explicit CI command and serial inventory. Extract the connected page fixture without removing coverage so the Profile unit suite stays within the file-size limit.
Chromium did not attach browser extra HTTP headers to its WebSocket upgrade in CI. Use a loopback reverse proxy rooted in the isolated test workspace so the existing trusted-proxy authentication receives its required headers.
@steipete

steipete commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

The final candidate preserves the reviewed production repair at net -1. Local changed-file checks, the regression, inspected desktop/phone captures, and independent review pass. CI integration now includes the real-Gateway fixture; its Chromium WebSocket header issue was repaired with a loopback reverse proxy and verified through an actual browser-to-WebSocket probe. Exact-head CI is rerunning. The two historical review threads are resolved with evidence in the body.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed 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 5, 2026
steipete and others added 2 commits September 5, 2026 15:17
Use the live identity for the Profile header, including cleared names and the localized owner label. Keep editor drafts separate and wrap unnamed email titles within the card. Reuse the canonical agent summary type.

Co-authored-by: Jacqueline Henriksen <179184921+jjjhenriksen@users.noreply.github.com>
Keep both Profile and device-alias proofs in the CI command and independent serial inventory while preserving contributor ancestry.

Co-authored-by: Jacqueline Henriksen <179184921+jjjhenriksen@users.noreply.github.com>
@steipete

steipete commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Both new P2 findings are repaired on the current head. The live name-clear regression failed with stale Ada and now passes; unnamed owners use the localized Owner label. A valid unbroken email reproduced an 838px title in a 334px card and now fits at 302px, with inspected before/after captures in the body. Production is net -6. Main's new real-Gateway registration is preserved alongside Profile, and all 50 focused unit/inventory/workflow cases pass. The real-Gateway test now covers a second-tab rename and clear while keeping the first tab's draft. Exact-head CI is running.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@clawsweeper clawsweeper Bot added 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. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Sep 5, 2026
Check full viewport visibility and horizontal text fit for both hero fields in one loop, retaining the unnamed-email regression while keeping the suite under the file-size limit.

Co-authored-by: Jacqueline Henriksen <179184921+jjjhenriksen@users.noreply.github.com>
@steipete

steipete commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Maintainer resolution for the remaining review note: the reviewer environment could not fetch the linked screenshots. I generated and inspected the exact attached synthetic PNGs before upload. The unnamed-title reproduction measured 838px inside a 334px card before repair and 302px after; the viewport containment probe also fails before and passes after. This resolves the media-retrieval limitation through retained maintainer inspection and executable evidence.

The two-tab real-Gateway rename/clear/draft test passed on the exact current head: https://github.com/openclaw/openclaw/actions/runs/33997290487/job/101390016134 . The code findings are addressed in the body and regression tests. CI's remaining failure is an unchanged browser-route-handoff timeout, now receiving a failed-jobs rerun.

@clawsweeper clawsweeper Bot removed the proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. label Sep 5, 2026
@steipete
steipete merged commit b938c5c into openclaw:main Sep 5, 2026
344 of 346 checks passed
@steipete

steipete commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Merged via squash.

vincentkoc added a commit that referenced this pull request Sep 5, 2026
* origin/main: (95 commits)
  perf(build): avoid unrelated gateway artifact scans (#127757)
  fix(update): deliver terminal progress after long updates (#139289)
  fix(ui): show session hover cards for local chat URLs (#139384)
  perf(ui): reuse unchanged transcript key snapshots (#139400)
  fix(ui): make subagent sessions view-only (#139381)
  fix: open agent state on SQLite builds without extensions (#139487)
  perf(skills): detach cached metadata from source strings (#139478)
  fix(ui): show primary user in multi-agent profile hero (#136736)
  perf(sessions): stop decoding the session row four times per SQLite entry patch (#136361)
  refactor(exec): share package-manager option scans (#139482)
  fix(ci): authorize frozen mobile release candidates (#139441)
  fix: avoid session deletion slowdown in large session stores (#139467)
  perf(gateway): reuse node invocation idle timers (#139354)
  fix(auth): preserve selected profiles across plugin scopes (#139413)
  fix(discord): retain voice input until transcription completes (#139484)
  fix(agents): name Gateway storage failures in run-failure copy (#139409)
  fix: keep subagent checks responsive in large session stores (#139450)
  fix(memory): index notes when optional embeddings cannot start (#139463)
  fix: refresh pending approvals when reopening chat (#139457)
  fix(tooling): preserve Git hook choices during install (#139461)
  ...
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Sep 6, 2026
* fix(ui): show primary user in profile hero

* test(ui): exercise profile hero with multi-agent fixture

* fix(ui): cover live profile identity behavior

* test(ui): preserve complete profile presence fixtures

* test(ui): register profile Gateway proof in CI

Keep the Profile real-Gateway test in the explicit CI command and serial inventory. Extract the connected page fixture without removing coverage so the Profile unit suite stays within the file-size limit.

* test(ui): forward profile proof identity through a real proxy

Chromium did not attach browser extra HTTP headers to its WebSocket upgrade in CI. Use a loopback reverse proxy rooted in the isolated test workspace so the existing trusted-proxy authentication receives its required headers.

* fix(ui): honor cleared profile names and bound hero titles

Use the live identity for the Profile header, including cleared names and the localized owner label. Keep editor drafts separate and wrap unnamed email titles within the card. Reuse the canonical agent summary type.

Co-authored-by: Jacqueline Henriksen <179184921+jjjhenriksen@users.noreply.github.com>

* test(ui): share profile text containment assertions

Check full viewport visibility and horizontal text fit for both hero fields in one loop, retaining the unnamed-email regression while keeping the suite under the file-size limit.

Co-authored-by: Jacqueline Henriksen <179184921+jjjhenriksen@users.noreply.github.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Jacqueline Henriksen <179184921+jjjhenriksen@users.noreply.github.com>
@jjjhenriksen
jjjhenriksen deleted the fix/profile-primary-user branch September 27, 2026 16:04
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 clawtributor-review Clawtributor pull request awaiting prioritized maintainer review docs Improvements or additions to documentation P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: L 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.

4 participants