Skip to content

fix(chat): prevent bubble text truncation - #1400

Merged
shanselman merged 1 commit into
mainfrom
karkarl-bump-reactor-preview-15
Sep 11, 2026
Merged

shanselman merged 1 commit into
mainfrom
karkarl-bump-reactor-preview-15

Conversation

@karkarl

@karkarl karkarl commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

Closes #1362

What Problem This Solves

Fixes an issue where users reading chat bubbles could see text lines cut off mid-display.

Why This Change Was Made

Updates both Microsoft.UI.Reactor and Microsoft.UI.Reactor.Advanced from 0.1.0-preview.14 to 0.1.0-preview.15. This Reactor release contains Barbara's upstream fix for the chat bubble text truncation reported in #1362.

User Impact

Chat bubble text can use the corrected Reactor text layout behavior instead of truncating lines during display.

Evidence

dotnet list .\src\OpenClaw.Tray.WinUI\OpenClaw.Tray.WinUI.csproj package --include-transitive resolves both Reactor packages to 0.1.0-preview.15. The full WinUI build and required shared and tray test suites pass on the current commit.

Change Type

  • Bug fix
  • Feature
  • Refactor
  • Docs or instructions
  • Tests or validation
  • Security hardening
  • Chore or infrastructure

Scope

  • Tray or WinUI UX
  • Windows node capability
  • Local MCP or winnode
  • Gateway, connection, or pairing
  • Setup or onboarding
  • Permissions, privacy, or security
  • Tests, CI, or docs

Required proof pools

  • windows-winui-interactive: confirm the upstream Reactor layout fix against the original chat bubble truncation reproduction.

Validation

  • ./build.ps1: passed, all 5 projects built successfully for win-arm64.
  • dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore: passed, 3,989 passed, 34 skipped, 0 failed.
  • dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore: passed, 2,898 passed, 0 skipped, 0 failed.
  • dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore --filter "FullyQualifiedName=OpenClaw.Shared.Tests.McpHttpServerTests.Dispose_DuringInFlightHandler_DoesNotSurfaceObjectDisposedException": passed, 1 passed, 0 failed after a transient failure in an earlier full-suite run.

Real Behavior Proof

  • Environment tested: Windows 11 ARM64, .NET SDK 10.0.400.
  • PR head or commit tested: c43c1dbd.
  • Exact steps or command run: resolved the tray project's package graph with dotnet list ... package --include-transitive, then ran the required build and test suite.
  • Evidence after fix: Microsoft.UI.Reactor and Microsoft.UI.Reactor.Advanced both resolve to 0.1.0-preview.15; the WinUI project builds successfully.
  • Observed result: the application compiles against the Reactor release containing Barbara's fix.
  • Screenshot or artifact links verified? (Yes/No/N/A): N/A.
  • Not verified or blocked: the original issue's live chat reproduction state was not available in this isolated worktree, so current-head visual confirmation remains scheduled through windows-winui-interactive.

Security Impact

  • New permissions or capabilities? (Yes/No): No
  • Secrets or tokens handling changed? (Yes/No): No
  • New or changed network calls? (Yes/No): No
  • Command or tool execution surface changed? (Yes/No): No
  • Data access scope changed? (Yes/No): No
  • If any answer is Yes, explain the risk and mitigation: N/A

Compatibility and Migration

  • Backward compatible? (Yes/No): Yes
  • Config or environment changes? (Yes/No): No
  • Migration needed? (Yes/No): No
  • If yes, list the exact upgrade steps: N/A

Review Conversations

  • I replied to or resolved every bot review conversation addressed by this PR.
  • I left unresolved only conversations that still need maintainer judgment.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: f00eb87d-ce22-474b-93e8-f1328eb30afb
@clawsweeper

clawsweeper Bot commented Sep 11, 2026 •

Copy link
Copy Markdown

🦞👀
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.

@karkarl karkarl added the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Sep 11, 2026
@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. 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 11, 2026
@clawsweeper

clawsweeper Bot commented Sep 11, 2026

Copy link
Copy Markdown

Codex review: blocked before merge. Reviewed September 11, 2026, 12:29 PM ET / 16:29 UTC.

ClawSweeper review

What this changes

Updates both Reactor UI packages to preview.15 so native chat bubbles use the corrected Markdown list wrapping.

Merge readiness

⛔ Blocked before merge - 2 items remain

Keep open: this remains a useful integration of the upstream fix, and current main still uses the affected dependency version. No introduced correctness defect was found.

Priority: P2
Reviewed head: c43c1dbdf3fa8410d053471e15bf6d71a0af0b3d

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused, compatible upstream adoption with reported passing validation and no identified patch defect.
Proof confidence 🌊 off-meta tidepool Not applicable: The collaborator-authored PR is exempt from the external-contributor proof gate. Its reported package resolution and builds do not demonstrate Reactor list wrapping inside Companion; the body explicitly records that interactive proof as blocked and scheduled.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Not applicable Not applicable: The collaborator-authored PR is exempt from the external-contributor proof gate. Its reported package resolution and builds do not demonstrate Reactor list wrapping inside Companion; the body explicitly records that interactive proof as blocked and scheduled.
Evidence reviewed 8 items Verified introduced change: The pinned base-to-head diff changes only the two Reactor package references from preview.14 to preview.15; package sources and build logic are unchanged.
Direct dependency contract and compatibility: Assistant bubbles call Reactor Advanced’s Markdown factory with a maximum bubble width of 720. The options do not override ListItem, so the upstream change from a default StackElement to GridElement does not invalidate an application callback cast. HTML and link safeguards remain unchanged.
Merged upstream repair: microsoft/microsoft-ui-reactor#1197 (Fix Markdown list content wrapping) explicitly references the Companion report. Its merged patch replaces unbounded horizontal list measurement with Auto/Star Grid columns; the body reports native before/after final-character geometry and resize checks.
Findings None None.
Security None None.

How this fits together

Companion sends assistant message text through Reactor’s Markdown renderer into native Windows chat bubbles. The dependency controls how list text is measured and wrapped within the bubble.

flowchart LR
  A[Assistant message] --> B[Chat timeline]
  B --> C[Sanitize Markdown]
  C --> D[Reactor list layout]
  E[Available bubble width] --> D
  D --> F[Wrapped native chat text]
Loading

Before merge

  • Resolve merge risk (P1) - The upstream native checks establish the renderer fix, but complete wrapping inside Companion’s current chat layout remains visually unverified.
  • Complete next step (P2) - Complete the declared windows-winui-interactive confirmation of long Markdown list wrapping in Companion and attach redacted current-head results.
Agent review details

Security

None.

Review metrics

None.

Root-cause cluster

Relationship: fixed_by_candidate
Canonical: #1362
Summary: This PR explicitly proposes the dependency adoption for the open Companion truncation report; the issue should remain open until its fix lands.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge-risk options

Maintainer options:

  1. Decide the mitigation before merge
    Keep the shared upstream renderer repair and confirm complete list text remains visible within Companion’s constrained and resized chat bubbles.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Technical review

Best possible solution:

Keep the shared upstream renderer repair and confirm complete list text remains visible within Companion’s constrained and resized chat bubbles.

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

Yes: long plain or bold Markdown list items at constrained width exercise the affected renderer, supported by the reporter’s account and upstream native reproduction. This review did not execute current main.

Is this the best way to solve the issue?

Yes: adopting the released upstream measurement fix is narrower and more maintainable than introducing a parallel application renderer; the application does not use the affected concrete-type callback.

AGENTS.md: found and applied where relevant.

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

Labels

Label changes:

  • add P2: Repairs clipped native chat content with a focused dependency update; the Console remains an available reading surface.
  • 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 collaborator-authored PR is exempt from the external-contributor proof gate. Its reported package resolution and builds do not demonstrate Reactor list wrapping inside Companion; the body explicitly records that interactive proof as blocked and scheduled.

Label justifications:

  • P2: Repairs clipped native chat content with a focused dependency update; the Console remains an available reading surface.
  • 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 collaborator-authored PR is exempt from the external-contributor proof gate. Its reported package resolution and builds do not demonstrate Reactor list wrapping inside Companion; the body explicitly records that interactive proof as blocked and scheduled.

Evidence

What I checked:

Likely related people:

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

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Complete the declared Windows interactive proof to confirm long list items wrap fully in Companion at the reviewed head.

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.

@karkarl

karkarl commented Sep 11, 2026 •

Copy link
Copy Markdown
Collaborator Author
image Screenshot as proof

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. 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.

Companion App: Chat bubble text truncation — lines cut off mid-display

2 participants