Skip to content

feat(chat): open tool details beside native chat - #2048

Merged
bkudiess merged 6 commits into
openclaw:mainfrom
bkudiess:bkudiess-tabbed-chat-side-panel
Nov 12, 2026
Merged

bkudiess merged 6 commits into
openclaw:mainfrom
bkudiess:bkudiess-tabbed-chat-side-panel

Conversation

@bkudiess

@bkudiess bkudiess commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

Related: #2093 (improve(chat): align native conversation and tool activity with web), now merged.

What Problem This Solves

Native chat needs a way to read tool input and output without losing the conversation.

User Impact

Users can open a reusable, closable Tool details tab beside chat, resize the split, and keep their draft and inline tool expansion intact. Narrow windows switch between Details and the conversation.

The open-panel action now sits inside the tool card, matches Copy's 14px glyph, and preserves a usable hit target. Both panes share the existing chat background and have a full-height separator. Generic output uses normal text; command output is slightly muted using native theme resources.

Ready for review, not yet merge-ready: required CI, complete native input/accessibility and real-Gateway profile-race proof remain incomplete. Current main (3f47e838) is now incorporated in merge commit 219d59de. The six resource conflicts are resolved, preserving all 4,280 incoming strings plus the seven Tool details strings in every locale, with no duplicate keys. Files, Canvas and MCP Apps are not included. Details fails closed when the authenticated profile cannot be verified.

Why This Change Was Made

The split host reuses the existing tool renderer and saved-output recovery operation instead of introducing a second renderer, payload cache or RPC. Requests are bound to provider, connection, conversation, history, tool and profile identity. Profile replacement, or an explicit profile invalidation before the first verified baseline, retires Details until reconnect.

Compact navigation keeps Back in the keyboard cycle. Reader selection and scrolling survive temporary action unavailability; empty tools do not expose blank own-details controls. Resize instructions are localized in all six languages. Existing conversation/window backdrops, resize ownership and composer/voice lifecycle remain unchanged.

Evidence

After the November 11 main merge, the x64 Debug candidate passed the full build, 5,843 Shared tests and 6,325 selected Tray tests. Mounted UI proof passed 36 Light, 36 Dark and 35 applicable high-contrast-resource executions on that merged tree. The regressions cover empty wrappers, reader identity/selection/scroll preservation, compact focus traversal, resize HelpText, matching pane backgrounds, geometry and the existing composer/profile boundaries. The earlier pre-merge focused managed selection passed 900 tests.

The earlier pre-merge expanded high-contrast selection retained 35 passed / 1 failed: the pre-existing ProductionRoot_RevealsHostLayerAndUsesCardComposerFill test requires transparent canvas even though HC intentionally uses opaque system window fill. It passes in Light/Dark; the applicable HC selection excludes only that inapplicable case. No product or test assertion was weakened.

The conflict resolution changed no feature additions/deletions: all 33 feature-file deltas are preserved relative to the newly merged main. Initial validation encountered invalid generated FunctionalUI and TestSupport reference assemblies (CS0009); targeted -t:Rebuild regenerated them without source changes, then all required commands were rerun successfully.

Hanselman review of the preceding candidate used Claude Opus 5.5 and GPT-6 Astra, both at high reasoning. Neither found P0-P2 defects. Four Opus-only P3 behavior/accessibility findings and two documentation/naming notes were subsequently addressed. This is not a new dual-model verdict for the fixed candidate.

Pre-merge independent implementation/proof-plan review: an app-native read-only code-review agent examined all six fix dispositions, affected callers, regressions, actual TRX results and retained build/proof logs. It found no actionable P0-P3 defect or necessary simplification in that delta. Its runtime model identity was not exposed. This was not merge approval. The subsequent merge resolution was checked for an exact resource union and unchanged feature additions/deletions, with fresh validation; the independent review was not rerun or relabeled as a review of newer main.

Earlier ARM64 and historical CI results in this PR's previous description are not current-head proof. Historical CI run 42322561958 remains evidence of the original failures, not a result for this update.

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: native split layout, keyboard/focus, accessibility, theme and reader lifetime. Focused mounted tests and isolated synthetic-app observations pass; complete pool coverage is not claimed.
  • windows-wsl-gateway-e2e: retain the profile-qualified Details lifecycle obligation. Real Gateway/account replacement and delayed-response scenarios remain unverified; fixture proof is not a substitute.

Validation

The latest build, Shared/Tray and mounted UI runs used merged index tree 3d2bf047aede1a9024e9ad4512b2c33150d332d6, subsequently committed unchanged as 219d59de36b8c8698a4ced4ea81654ec77628eca. Its parents are 72b7d02d and 3f47e838. The committed tree was checked against the recorded validation tree; these are source-corresponding precommit runs, not newly executed post-commit tests.

$results below denotes each invocation's retained isolated result directory. Runs used OPENCLAW_REPO_ROOT, all three isolated app-data roots, task-owned TEMP/TMP and a process-local tool PATH. Real profiles and shared runtimes were not used.

Command Observed result
.\build.ps1 Passed all five production projects
dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore --logger 'trx;LogFileName=shared-20261111-143415.trx' --results-directory "$results" 5,843 passed, 29 opt-in skips, 0 failed
dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore --filter 'FullyQualifiedName!~SettingsManagerIsolationTests.OpenClawTrayDataDirRedirectsSettingsAwayFromRealAppData' --logger 'trx;LogFileName=tray-20261111-143836.trx' --results-directory "$results" 6,325 passed, 0 failed; one explicitly excluded real-OS-profile reader
dotnet build .\tests\OpenClaw.Tray.UITests\OpenClaw.Tray.UITests.csproj -c Debug -r win-x64 Passed
.\scripts\validate-docs.ps1; git diff --check Passed
Exact focused and mounted UI selections

Historical pre-merge focused managed command at the source subsequently committed as 72b7d02d, 900 passed / 0 failed / 0 skipped:

dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj `
  --filter 'FullyQualifiedName~ChatConversationPanelStateTests|FullyQualifiedName~ChatComposerSessionTests|FullyQualifiedName~ChatToolDetailsProfileTests|FullyQualifiedName~ChatToolOutputOperationTests|FullyQualifiedName~ChatTimelinePresentationTests|FullyQualifiedName~ChatToolActivityPresentationTests|FullyQualifiedName~OpenClawChatDataProviderTests|FullyQualifiedName~FluentIconCatalogTests|FullyQualifiedName~ChatRunCorrelationTests|FullyQualifiedName~ChatCodeSyntaxTests|FullyQualifiedName~ReactorChatMarkdownContractTests' `
  --logger 'trx;LogFileName=focused-20261111-131350.trx' --results-directory "$results"

Native command executed on a task-owned private desktop, once with each theme resource selection:

$filter = 'FullyQualifiedName~ReactorChatLayoutProofTests.DetailsSlot_|FullyQualifiedName~ChatToolInputSyntaxTests|FullyQualifiedName~ReactorToolActivityProofTests.ToolWrapper_OffersOwnDetailsOnlyForDisplayContentOrTruncatedOutput|FullyQualifiedName~ReactorToolActivityProofTests.ToolDetails_UseDividersInsteadOfVisibleSectionHeadings|FullyQualifiedName~ReactorToolActivityProofTests.ToolRow_ExposesTargetAndKeepsOpenOutputWhenInputArrivesAndRunFinishes|FullyQualifiedName~ProductionRoot_RevealsHostLayerAndUsesCardComposerFill|FullyQualifiedName~QueuedMessages_RenderCompactPanelAndPreserveSendLifecycle'
dotnet test .\tests\OpenClaw.Tray.UITests\OpenClaw.Tray.UITests.csproj `
  -c Debug -r win-x64 --no-build --no-restore --filter $filter `
  --logger 'trx;LogFileName=sidebar-ui.trx' --results-directory "$results"

On the merged tree, Light and Dark: 36/36 passed each. The applicable HC run used the same filter with |FullyQualifiedName~ProductionRoot_RevealsHostLayerAndUsesCardComposerFill removed: 35/35 passed. The earlier pre-merge HC failure remains recorded as explained above. These are per-run execution totals, not 107 distinct cases or blanket three-theme coverage: some cases choose their own theme internally. HighContrast here means substituted resources, not changed OS settings.

Real Behavior Proof

  • Environment tested: Windows x64, Debug/unpackaged WinUI, isolated profiles and synthetic loopback Gateway. No real credentials imported.

  • PR head or commit tested: 219d59de36b8c8698a4ced4ea81654ec77628eca, through the exact merged-tree correspondence above; comparison base 3f47e83888db83740660d03c3ecd403550235187.

  • Exact steps or command run: mounted UI command above, exercising wide/compact panel opening, switching tools, focus traversal, reader continuity, geometry, colors and closing. The earlier manual fixture sequence discovered tools with winnode --mcp-url "$fixtureMcpUrl" --list-tools, sent two synthetic exchanges, opened Tool details and used Left/Right/Home/End.

  • Evidence after fix: current merged-tree native results are 36 Light / 36 Dark / 35 HC passed, zero selected failures or skips. Copied manual UI diagnostics below are explicitly from the pre-merge 72b7d02d source, not a new post-merge input replay:

    app.status: overallState=Ready; operatorState=Connected; nodeState=Disabled
    app.chat.snapshot: 12 entries; 4 tool calls; 1 failed synthetic tool
    Open details beside chat: ChatToolDetails_e10
    Tool details: selected tab; fixture.txt input and "Synthetic file contents." output
    Resize details panel Help:
      Use Left and Right arrow keys to resize. Home selects the minimum width;
      End selects the maximum width.
    Observed reader widths after Left/Right/Home/End: 683 / 659 / 419 / 953 device pixels
    
  • Observed result: the merged-tree mounted tests retain the reusable panel, full-height separator, matching pane backgrounds, reader continuity and compact focus traversal. Earlier manual keyboard resize changed actual mounted width as shown above. Real-profile metadata was unchanged during the native runs.

  • Screenshot or artifact links verified? (Yes/No/N/A): N/A. Current local captures/TRX are retained but not uploaded; copied diagnostics above are the public proof item. Historical CI link is separate.

  • Not verified or blocked: new-head CI; full unfiltered Tray suite (one unsafe real-profile reader excluded); complete UI/accessibility suite; real compact keyboard input after the user interrupted that optional live check (mounted focus traversal passes); OS High Contrast; ARM64 and production-shaped Release; real Gateway/profile replacement and delayed-socket races. No complete proof-pool acceptance is claimed.

Security Impact

  • New permissions or capabilities? (Yes/No): No.
  • Secrets or tokens handling changed? (Yes/No): No.
  • New or changed network calls? (Yes/No): Yes, an additional UI entry point reuses existing authenticated read-only saved-output recovery.
  • 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: no new RPC method, credential storage, file access or execution permission. Existing profile verification and canonical result recovery are reused. Connection/profile/history revisions reject stale opens and completions; explicit identity invalidation without a verified baseline fails closed until reconnect.

Compatibility and Migration

  • Backward compatible? (Yes/No): Yes for existing chat behavior; unavailable profile or saved-output capabilities remain explicitly unavailable.
  • Config or environment changes? (Yes/No): No product configuration changes. Test-only isolation variables were scoped to their child processes.
  • 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.

No inline review comments were returned by the prepublication read. No review thread was resolved or bot review requested by this update. The user marked this PR ready for review; the CI and proof gaps above remain open and it has not been merged.

@clawsweeper

clawsweeper Bot commented Nov 6, 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.

@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 security-boundary 🚨 Merging this PR could weaken sandboxing, authorization, credentials, or sensitive data. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Nov 6, 2026
@clawsweeper

clawsweeper Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Codex review: needs real behavior proof before merge.

What this changes

This PR adds a reusable Tool details panel beside native chat while preserving the conversation and composer.

Example: Inspect read_file output in a 1100-pixel chat window.

  • Before: Tool input and output are available only inside the transcript.
  • After: The open-details action displays them in a closable side panel while the draft remains mounted.

Review scores

Measure Result What it means
Overall readiness 🦐 gold shrimp (3/6) Useful, source-correct feature with substantial reported validation, but incomplete final-effect authority and interaction evidence.
Proof confidence 🦐 gold shrimp (3/6) Real behavior proof is necessary before merge. See Before merge.
Patch quality 🦐 gold shrimp (3/6) Security review found an item that needs attention.

Product

Kind: Feature · Worth it: Yes · Fix scope: Complete
User problem: Reading expanded tool input and output inside the transcript competes with the surrounding conversation.
Reason: Maintainer-authored direction authorizes a focused read-only panel; existing inline inspection remains available and Files/Canvas scope is explicitly excluded.

Merge readiness

⛔ Blocked before merge - 4 items remain

Keep this maintainer-authored draft open. The initial-profile race is repaired in source, no definite introduced bug was found, and the feature remains absent from main.

Priority: P2
Reviewed head: 9171a985fed1b1120c9890b1e682d22434bdab45

Before merge

  • Add real behavior proof - Authority-chain proof required: the author reports current-source Windows ARM64 Debug application proof through the production socket client, bridge, provider and mounted reader for first-profile output, same-profile refresh, replacement retirement, stale UIA invocation and second-profile recovery. The new unknown-baseline guard has owner regressions, but controlled delayed users.self replies and queued callbacks across replacement/reconnect have not been exercised at final rendering. Provide redacted runtime output for those cases and visible divider/keyboard and compact focus recovery, followed by the outstanding accessibility and Release acceptance; redact credentials, IPs and non-public endpoints. The inspected downloaded images belong to the earlier inline renderer. After adding proof, update the PR body, then request a new review with @clawsweeper re-review. The PR author or someone with repository write access can request it.
  • Resolve security review attention item - No concrete leak or supply-chain regression was found; profile-qualified final-render timing still requires validation.
  • Resolve merge risk - The PR author must establish that profile reassignment cannot expose previous-profile content through delayed identity replies or queued opens at the mounted reader's final render boundary.
  • Complete next step - Resolve the reported merge conflict against main.

Findings

None.

Tests

  • Missing end-to-end proof: The author reports base-fail/head-pass owner regressions, but delayed-socket and queued-open final-render rejection plus actual divider/keyboard, compact focus, accessibility and Release interaction acceptance remain incomplete.
Agent review details

How this fits together

The native chat root binds Gateway-backed timeline snapshots to an identity-only panel selection; authenticated profile, connection and history checks gate the tool content rendered by the existing renderer.

flowchart LR
Gateway[Gateway client] --> Profile[Profile admission]
Gateway --> Provider[Chat provider]
Provider --> Root[Native chat root]
Profile --> Root
Root --> Selection[Details selection]
Selection --> Renderer[Tool details renderer]
Root --> Composer[Mounted composer]
Loading

Technical review

Best possible solution:

Keep one identity-only Details slot, reuse ToolCallCardRenderer, and preserve the mounted composer with live profile and history admission.

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

Main source confirms the missing side-panel capability; this review ran no target code or tests.

Is this the best way to solve the issue?

The scoped panel is a reasonable implementation: it preserves inline inspection, reuses the existing renderer and composer owners, and separates UI lifetime from authenticated reader admission.

AGENTS.md: found and applied where relevant.

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

Merge-risk options

Maintainer options:

  1. Complete profile-boundary validation (recommended)
    The PR author demonstrates allowed content and rejection of previous-profile delayed work through the production client, bridge, provider and mounted reader.
  2. Keep the feature parked
    Maintain the draft hold until the profile-boundary scenarios can be exercised.

Provenance checked

  • Tool-detail rendering keeps the original intent (aac07ab: Compact activity disclosures preserve chronology and permit bounded, selectable inspection without overwhelming chat.)
  • Composer visibility keeps the original intent (4e31031: Retain chat and drafts while host navigation hides the surface; hidden capture must not continue.)
  • Native test resource lifetime changes intended behavior with a stated reason (5164faa: Use production theme resources for native-chat layout proof; this PR documents a combined-case lifetime crash and retains resources for the serial class.)
  • Existing native layout assertions keeps the original intent (5164faa: Protect native composer and layout presentation; traversal changes locate the new stable conversation wrapper while preserving behavioral assertions.)

Testing

Proof path: shipped entry point.

Security

Needs attention: No concrete leak or supply-chain regression was found; profile-qualified final-render timing still requires validation.

Evidence

What I checked:

  • Pinned introduction reviewed: The introduced diff adds the panel, identity request and profile-admission owners; current main retains inline tool details without this side panel. (src/OpenClaw.Tray.WinUI/Chat/ToolCallCardRenderer.cs:78, 9171a985fed1)
  • Initial-profile race repair: Explicit profile invalidation without a verified baseline now retires Details until reconnect; delayed-initial-read and failed-initial-read regressions accompany a bootstrap positive control. (src/OpenClaw.Tray.WinUI/Chat/ChatToolDetailsProfile.cs:61, 9171a985fed1)
  • Final-render admission: The root compares captured profile state with live provider state and checks connection, current history and timeline revisions before resolving panel content. (src/OpenClaw.Tray.WinUI/Chat/OpenClawReactorChatRoot.cs:284, 9171a985fed1)
  • Maintainer direction and validation report: The full PR body and author comments were read through REST, completing the supplied excerpt whose captured SHA256 is 1e951784aa69f996631007848218011cd0b9ae8e88779fce1537b7c45e510984. The author reports required build/tests and eight native/application checks passing on unchanged precommit source, explicitly accepts early same-profile retirement without a baseline, and keeps delayed-socket, input, accessibility and Release acceptance open. (9171a985fed1)
  • Current merge and check state: GitHub reports this head as draft and dirty with mergeable=false; its listed checks contain dispatch and Socket results, not completed required build/native CI. (9171a985fed1)
  • Earlier renderer and media provenance: The two downloaded screenshots were inspected and belong to improve(chat): make tool activity compact and fully inspectable #1092 (improve(chat): make tool activity compact and fully inspectable); they show existing inline activity, not this panel. (src/OpenClaw.Tray.WinUI/Chat/ToolCallCardRenderer.cs:198, aac07abb1fbd)

Likely related people:

  • Caleb Eden: Raw commit aac07ab adds src/OpenClaw.Tray.WinUI/Chat/ToolCallCardRenderer.cs:145 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: aac07abb1fbd; files: src/OpenClaw.Tray.WinUI/Chat/ToolCallCardRenderer.cs)

Preflight source

Source unknown. Source comparison at the observed PR snapshot only. Completion is self-reported; body, policy, tests, execution, and report bytes are not verified.

Review metrics

Metric Value Why it matters
Introduced diff Production +863/-41; tests/project wiring +831/-11; docs +66/-0 Growth primarily implements native panel interaction and distinct profile, lifecycle and rendering coverage; no definite redundant production owner was identified.

Labels

Label changes:

No label changes.

Label justifications:

  • P2: This is a useful native-chat inspection feature with limited scope and no established urgent runtime regression.
  • merge-risk: 🚨 security-boundary: Authenticated profile identity gates retained tool content, and delayed-work rejection at the final rendering boundary remains unproven.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🦐 gold shrimp.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Rank-up moves

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

  • Prove delayed profile replies and queued opens cannot restore previous-profile content in the mounted reader, including invalidation before the initial identity baseline.
  • Show actual divider pointer/keyboard interaction and compact focus recovery on the candidate build.

Rating scale

6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior.

Workflow

ClawSweeper edits this one comment on every review. Comment @clawsweeper re-review for a fresh review only. Repair and merge execution lanes are retired.

History

Review history (2 earlier review cycles)
  • reviewed 2026-11-06T21:24:01.916Z sha 89c0ee6 :: needs real behavior proof before merge. :: none
  • reviewed 2026-11-07T03:46:58.948Z sha ee91ec6 :: needs real behavior proof before merge. :: none

Reviewed November 7, 2026, 1:01 AM ET / 06:01 UTC (Revision 3).

@bkudiess bkudiess added status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. and removed status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. labels Nov 7, 2026
@bkudiess

bkudiess commented Nov 7, 2026

Copy link
Copy Markdown
Collaborator Author

@clawsweeper re-review

Proof update for head ee91ec63649d4ee5f5feaa5cd745716fe33b8f7d. Please reassess the native-sequence and mounted-provider concerns from the review of 89c0ee61.

Native CI repair: the new head changes only native-test traversal to find the stable ChatConversation wrapper. No production code changed. Both queued-message widths and the composer-background test now preserve all original behavioral assertions; the latter also checks the conversation wrapper remains transparent.

On native Windows ARM64, Debug:

Executed check Result
.\build.ps1 Passed
dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore (with TRX logger/results directory) 4,951 passed, 24 skipped, 0 failed
dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore (with TRX logger/results directory) 5,272 passed, 0 skipped/failed
UI project, -c Debug -r win-arm64 -p:Platform=ARM64 --no-build --no-restore --filter "FullyQualifiedName~ReactorChatLayoutProofTests|FullyQualifiedName~NativeSharedFlowTests" 162 passed, 2 skipped, 0 failed; native exit 0

The affected-class run includes all seven DetailsSlot_ cases and all four original hosted CI failures. Earlier baseline replay reproduced the three root-shape failures. The Wizard More timeout passed alone with isolated roots, with its full class, and in the broader native selection; it remains an unclassified prior CI failure, not a claimed fixed defect.

Mounted production-provider proof: before this test-only commit, DetailsProof_RealProviderRetiresReplacedProfileAndReloadsOnReconnect passed 1/1 with no skips on exact head 89eef79961532fc6a4ace2d0b20b8afe7e8c1383. It drove the actual app process, Gateway socket/client, chat bridge, production provider and mounted Details reader against an owned synthetic Gateway. It did not use the layout suite's ProofProvider or mock production admission.

Observed assertions and inspected captures:

  1. First-profile output rendered in the Details reader.
  2. Same-profile refresh recovered the existing reader.
  3. Benign reconnect allowed a current Details action.
  4. Profile replacement removed old-profile Details content and its opener.
  5. A retained stale UIA opener did not restore old content.
  6. Reconnect allowed only second-profile output in Details.

The final synthetic request log contained 95 requests with no errors or unexpected entries. An independent rubber-duck review inspected the harness, TRX, request log and three captures and accepted this as faithful application-boundary proof. Its model identity was not verified.

Provenance: the new commit is exactly the tested uncommitted two-location traversal repair; manually recorded source SHA256 C32B146AF2AF83F76E1214434E9074F45952B87D82B16A1D4F03DAAA38C737B9, native test assembly SHA256 23001369287A8F3D9662885866BE217E88DFD2A5F792D1E51F236B3A04EDFCF3. Production source is unchanged from the app-proof head. That earlier execution is source-corresponding evidence, not a new app-proof run on ee91ec63. The original reports, harness and captures are retained locally, not uploaded/public artifacts.

Remaining limits, still draft: a stale UIA opener does not prove controlled delayed socket replies or queued callbacks. Synthetic Gateway proof is not live account/WSL pairing proof. Actual divider pointer/keyboard, full contrast/accessibility and production-shaped Release Details proof remain open. Shared autoreview tooling was unavailable.

The CI-equivalent native selection was also executed locally: 637 passed, 13 failed, 7 skipped. All four original CI failures passed there. Twelve failures involved workspace private-desktop foreground/input/capture or control discovery; one was a separate animation teardown assertion that passed in isolation. The unsuccessful broad run remains recorded and is not presented as a green full-suite result. Hosted CI on the newly pushed head must still pass.

@clawsweeper

clawsweeper Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Nov 7, 2026
@bkudiess

bkudiess commented Nov 7, 2026

Copy link
Copy Markdown
Collaborator Author

@clawsweeper re-review

Pushed 9171a985fed1b1120c9890b1e682d22434bdab45 and refreshed the PR description. This resolves the MEDIUM initial-profile admission race confirmed by both Hanselman reviewers on ee91ec63.

An explicit profile event before a verified baseline now retires Details until reconnect. Ordinary bootstrap retries and verified same-profile refreshes retain recovery. Added delayed-initial-read and failed-initial-read regressions (both failed before the guard, then passed), plus a bootstrap positive control. Updated the contract/ledger. A new independent rubber-duck review accepted the source fix with no blocking findings.

Validated exact precommit source, committed unchanged: full ARM64 build passed; Shared 4,951 passed/24 skipped; Tray 5,275 passed/0 skipped; focused admission/state 34/34; native Details plus actual-app synthetic-Gateway profile replacement/reconnect 8/8, no skips. No new run is claimed merely from committing. Reports and captures are local; exact commands and retained failures are in the updated description.

Limits remain explicit: initial unknown-baseline ordering is owner-tested, not yet a delayed-socket mounted-reader test. Existing actual-app proof uses the production bridge/provider against a synthetic Gateway, not live accounts/WSL. Full input/accessibility/contrast/Release proof and required CI on the new head are not claimed complete. Keep draft while those gates remain open.

@clawsweeper

clawsweeper Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@roboclaw-bot

Copy link
Copy Markdown
Contributor

PR cleanup review

Reviewed head: 9171a985fed1b1120c9890b1e682d22434bdab45. Main comparison: e59374c064f43d68f5c72d070d4c89ef2d20ec3b.

This still looks worth keeping open. I checked all 27 changed files against main at e59374c…: the native Details panel is not on main, so this is not superseded.

#2093 has since landed most of the shared profile verifier and substantially updated tool rendering/full-output recovery. Please reconcile this branch with those owners rather than restoring the older renderer. One important remaining delta is the explicit profile-invalidation-before-baseline guard in 9171a985…; main does not contain that repair.

Keeping this draft is appropriate. The collected head checks do not include completed required build/native CI, and delayed-socket/queued-open final-render proof, real divider/keyboard and compact-focus interaction, accessibility and Release acceptance remain open. The existing proof report is useful and candid about those limits. Once the integrated head and that evidence are ready, it should receive a fresh independent review.

Action in this cleanup pass: leaving this PR open. No branch changes or runtime-proof waiver. The findings above come from source, discussion and recorded-CI review; Windows validation was not rerun in this pass.

@bkudiess
bkudiess force-pushed the bkudiess-tabbed-chat-side-panel branch from 9171a98 to 72b7d02 Compare November 11, 2026 22:07
@bkudiess
bkudiess marked this pull request as ready for review November 11, 2026 22:09
bkudiess added a commit to bkudiess/openclaw-windows-node that referenced this pull request Nov 12, 2026
The Settings chrome proof invoked SettingsSearch with an immediate UIA lookup and failed intermittently in Dark theme. Use the existing InvokeWhenEnabledAsync readiness helper, matching the pending openclaw#2048 change.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@bkudiess
bkudiess force-pushed the bkudiess-tabbed-chat-side-panel branch from a393312 to e984b3f Compare November 12, 2026 12:04
bkudiess added a commit that referenced this pull request Nov 12, 2026
* fix: Dashboard loses the selected chat on newer Gateways

Use the released full-session-key query contract for chat handoff and remove web-routing release allowlists. Preserve search admission and credential safeguards, and route Systems to its matching web page.

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

* fix: drop orphaned search compatibility copy and clarify Systems route doc

Remove Search_Compatibility from all locales now that its last reader is gone, and state that /systems matches the native Open in web action only when the Gateway reports environments; older Gateways open their default view for routes they lack.

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

* fix(tests): wait for SettingsSearch before invoking it

The Settings chrome proof invoked SettingsSearch with an immediate UIA lookup and failed intermittently in Dark theme. Use the existing InvokeWhenEnabledAsync readiness helper, matching the pending #2048 change.

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

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
bkudiess and others added 6 commits November 12, 2026 04:55
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Locate the mounted conversation by its stable automation ID instead of assuming the former root shape. Preserve queued-message and composer color checks and assert the conversation wrapper remains transparent.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Distinguish explicit identity events from bootstrap refreshes. Retire Details until reconnect when identity changes before the first verified baseline. Cover delayed and failed initial reads, bootstrap recovery and same-profile revalidation; document the fail-closed tradeoff.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the open-details action inside tool cards and match the Copy glyph size.
Align pane backgrounds with a full-height separator and theme-aware output.
Preserve reader state through availability changes, avoid empty details, and
include compact navigation and localized resize instructions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep reading-column, scrolling, divider, and nested-tool assertions while discovering sections through the action layout. Assert the reserved command-input inset independently.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use semantic theme-aware picker text, reject tail overshoot, and preserve native test readiness and capture identity. Usage pagination is already supplied by main through openclaw#2124.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@bkudiess
bkudiess force-pushed the bkudiess-tabbed-chat-side-panel branch from e984b3f to 919e32c Compare November 12, 2026 13:02
@bkudiess
bkudiess merged commit 0bd9348 into openclaw:main Nov 12, 2026
46 of 50 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 security-boundary 🚨 Merging this PR could weaken sandboxing, authorization, credentials, or sensitive data. P2 Normal priority bug or improvement with limited blast radius. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants