Skip to content

improve(chat): mirror dashboard welcome and recent chats - #1705

Merged
bkudiess merged 6 commits into
mainfrom
karkarl-reactor-recent-chats
Oct 17, 2026
Merged

bkudiess merged 6 commits into
mainfrom
karkarl-reactor-recent-chats

Conversation

@karkarl

@karkarl karkarl commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

Related Gateway PR: openclaw/openclaw#172644 (feat(gateway): share localized welcome content with native clients).

What Problem This Solves

Native new chats should offer the same agent-centered welcome, location choices, and recent conversations as the connected web dashboard.

User Impact

User impact: new chats show the selected agent's avatar, centered name and guidance, computer/folder picker icons, and up to five recent same-agent chats with left-aligned titles and localized last-used times. Opening a recent chat preserves the draft and synchronizes Workspace navigation. Interrupted location preparation retains the selected destination and reports possible side effects rather than silently returning to Local/default. A delayed /new completion no longer overrides newer navigation.

Draft dependency: shared welcome copy requires the Gateway implementation of controlUi.welcome.get in openclaw/openclaw#172644 (feat(gateway): share localized welcome content with native clients). That accompanying PR owns generation, packaging, and authenticated serving of the web-derived welcome catalog; this PR is the native consumer. Released Gateways without that method display an explicit unavailable message; the composer and recent-chat navigation remain usable. This PR does not bundle a second prompt catalog. The upstream PR is currently draft and is not a released Gateway dependency.

Why This Change Was Made

Reuse the existing agent image loader and native controls, keep the composer mounted through the first message, and obtain welcome copy asynchronously once per Gateway connection. Environment/workspace selections remain local intent until first send. Loss of empty-session eligibility cancels subsequent preparation requests, while already admitted Gateway mutations drain without a false rollback claim. Per-session intent, outstanding work, and uncertainty survive navigation; disconnect alone never clears the required placement preflight. Newer navigation invalidates delayed lifecycle selection before deferred chat rendering.

Ownership: the former timeline welcome renderer is replaced by ReactorChatWelcome, the composer-owned identity/header, and root-owned centered layout. ChatPlacementController owns host-local per-session placement intent; ChatComposerController owns lifecycle-selection fencing. Workspace and ChatPage forward navigation/unload invalidation. Existing provider send admission and Workspace navigation remain authoritative. The preserved invariants are draft/input continuity, original-session navigation without sending, and no placement mutation on merely opening a picker.

Evidence

Current-source interrupted-placement proof (4f3c0509). Native WinUI fixture: select Windows host and Repository, pause preparation, navigate away, finish the interrupted request, and return. The destination and draft remain visible with an explicit uncertainty warning; the test asserts no message was sent and preflight is still required. All names, paths, and model data are synthetic. This is native rendering/behavior proof, not a real remote-node execution claim.

Returning to interrupted placement retains Windows host and Repository with the draft and an explicit uncertainty warning

Earlier installed-Gateway new-session proof (0c6831b8). User-authored session titles are redacted. The agent has no configured custom avatar, so its initial matches the Workspace agent picker. The layout is unchanged by the race fixes; this older image does not prove their new behavior.

Live Reactor welcome with centered agent identity, location icons, and recent-chat last-used time

Earlier responsive recent-list fixture, 320 logical pixels. Synthetic titles and model data, not a user's conversations. This fixture isolates recents without a placement gateway.

Narrow recent-chat layout with left-aligned titles and trailing timestamps

Earlier native dropdown fixtures. Device labels and Gateway paths below are synthetic test data. Their regression tests also pass on the current source.

Computer icons in environment choices Folder icons in workspace choices
Environment picker fixture Workspace picker fixture

The earlier live native client read the installed welcome RPC successfully for en-US -> en, fr-FR -> fr, and zh-TW -> zh-TW. Ten warmed loopback calls measured median 0.708 ms (0.414-1.198 ms); this is an observation, not a cold-start guarantee. The app does not poll or make a request per render.

Hanselman review used Claude Opus 5.5 and GPT-6 Astra at f1facec5, focusing on the post-review navigation delta and high-risk placement/cache paths. The three verified findings are addressed: delayed /new navigation, history arriving during preparation, and lost location intent after navigation. Astra's implementation follow-up found a disconnect/emptiness conflation; that was fixed and tested too. The final narrow follow-up found no remaining blocking issues in those fixes. Source review does not close the runtime-proof gaps below.

Earlier rubber-duck findings were also addressed: ordinary-send epoch gating, duplicate welcome rendering, localized relative ages, and restored-versus-explicit selection. Earlier live proof found and fixed Workspace sidebar drift after recent-chat navigation.

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: centered native welcome, avatar, responsive pickers, recent navigation, interrupted-placement warning, and accessibility semantics.
  • windows-11-arm64: native ARM64 build, launch, and installed-Gateway integration on the proof host.

These declarations do not claim every command in either pool has run. The completed subset and remaining gaps are below.

Validation

Final local validation, with source matching 4f3c05099d12a6144df57737d0e4e5f80cd631d0:

Exact command Result
.\build.ps1 Passed, full repository build
dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore 4,301 passed, 35 skipped, 0 failed
dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore 4,049 passed, 0 skipped, 0 failed
dotnet test .\tests\OpenClaw.Tray.UITests\OpenClaw.Tray.UITests.csproj --no-restore -r win-arm64 --filter 'FullyQualifiedName~ReactorChatLayoutProofTests' 113 passed, 2 skipped, 0 failed
.\scripts\validate-docs.ps1 Passed, 58 Markdown files plus proof-pool schemas and documentation flow regression
git diff --check Passed

Used isolated tray settings and OPENCLAW_REPO_ROOT set to the worktree. Reused the documented GitVersion-lock workaround: pinned development-version metadata with DisableGitVersionTask=true; all project references still compiled. The source was validated before committing it, so build informational metadata identifies the pre-commit base rather than claiming release provenance.

The two UI skips are opt-in native keyboard and pointer-capture proofs. The new race tests cover cancellation before subsequent create/dispatch calls, blocking repeated sends until an admitted request drains, navigation away/back before and after drain, retained completed choices, offline completion followed by reconnect, and delayed /new with newer navigation/draft edits.

During this fix round, a malformed architecture-ledger guard reference and the new UI test's missing settled-welcome precondition were corrected. One existing queued-send acknowledgment timing test failed in an earlier full run, then passed in focused reruns and both subsequent full Tray runs without changes to that test or provider. All required build/Shared/Tray commands were rerun after the final test correction; the entire UI class also passed. Earlier avatar/layout/composition-brush test corrections remain covered by that class.

Real Behavior Proof

  • Environment tested: Windows ARM64, .NET SDK 10.0.401, isolated settings and native WinUI test windows with synthetic Gateway/provider data. Earlier live integration used isolated unpackaged Companion and the isolated native source-Gateway slot on loopback port 18889; normal Store Gateway untouched.
  • PR head or commit tested: current-source tests and interrupted-placement capture match 4f3c05099d12a6144df57737d0e4e5f80cd631d0. Earlier installed-Gateway screenshots and RPC observations match 0c6831b8e8062e11e935bf56180262966be20afa.
  • Exact steps or command run: the UI command above executes PlacementInterruptedNavigation_RestoresChoiceAndVisibleUncertainty: wait for settled empty chat, select Windows host/Repository, start delayed preparation, navigate to another session, finish the interrupted preparation, and return. Unit tests separately pause production projects.add, cancel it, drain its response, and assert no subsequent sessions.create or sessions.dispatch. Controller tests exercise delayed /new navigation fencing and offline completion/reconnect.
  • Evidence after fix: current native capture shows the retained Windows host/Repository, unsent draft, and explicit possible-side-effect warning. The passing UI test verifies zero sent messages and required preflight on return. Controller tests verify no second send during drain, retained destination after reconnect, and no stale lifecycle selection notification.
  • Observed result: no silent Local/default fallback after interrupted navigation, no later preparation RPC after cancellation, and no delayed /new navigation overriding newer user intent. Already admitted mutations are not claimed to be rolled back. The native image/emoji/initials, responsive layout, picker actions, timestamps, and draft continuity regressions also pass.
  • Screenshot or artifact links verified? (Yes/No/N/A): Yes, the four earlier GitHub-hosted images returned HTTP 200; the new image returned authenticated HTTP 200 before submission and is rechecked after attachment.
  • Not verified or blocked: full proof-pool command sets, native keyboard/pointer opt-in cases, actual remote-node first-send/interruption, repository cloning against a real Gateway, delayed /new through the live Notifications page, and paid provider inference were not exercised. Provider sign-in is a separate unresolved prerequisite. Current-source fixture proof is not an installed-current-upstream-head claim. The earlier preview Gateway once timed out a session-create request before eventually materializing the session; proof used the confirmed existing session rather than claiming clean creation latency. Initial inventory refresh also required visiting Sessions.

Earlier installed proof used .\run-app-local.ps1 -NoBuild -AllowNonMain -RuntimeIdentifier win-arm64 -DataDir <isolated-profile> -Wait, local MCP tools/list and app.connection.reconnect, Sessions inventory refresh, recent-chat selection and sidebar return, plus production OpenClawGatewayClient.GetChatWelcomeCatalogAsync for the three locales above. It verified that the real recent chat and Workspace sidebar selected the same session and returning restored the centered welcome.

Installed unpublished Gateway package provenance: base openclaw/openclaw HEAD cb9bdcd6e78f4e6ffbce8f712de47012dbdc8681, dirty source tree 05a07f32cdfa6317287397398fbca7487415bc31, archive SHA-256 b701bc7b2704637e47cc68564e338447ca17b203a607dcd00a2be1e320989d47. The base commit alone does not contain the welcome implementation. Upstream focused tests/typechecks/lint/package integrity passed; its full suites were not run, one existing method-list preparation was blocked by filesystem metadata instability, and the UI startup gzip warning was 49 bytes over budget. This installed-package proof predates publication of the accompanying upstream PR and does not claim that its current head was installed or tested here.

Security Impact

  • New permissions or capabilities? (Yes/No) No new Windows node capability or permission toggle.
  • Secrets or tokens handling changed? (Yes/No) No.
  • New or changed network calls? (Yes/No) Yes.
  • Command or tool execution surface changed? (Yes/No) Yes, first-send placement can target an existing eligible environment.
  • Data access scope changed? (Yes/No) Yes, the native picker exposes authorized Gateway workspace/project/folder choices.
  • If any answer is Yes, explain the risk and mitigation: use the connected authenticated Gateway and its existing authorization; the new welcome RPC is read-only. Placement is deferred until an explicit send, retains the selected session key, revalidates selection/epoch, and surfaces failures without dropping drafts. Cancellation stops later requests but does not imply rollback; retained per-session intent prevents retry from silently bypassing placement preflight. Avatar loading reuses the existing bounded media policy. No credential files, conversation contents, private paths, or raw logs are attached.

Compatibility and Migration

  • Backward compatible? (Yes/No) Yes for existing chat and recent navigation; shared welcome prompts require the companion Gateway method.
  • Config or environment changes? (Yes/No) No product configuration change.
  • Migration needed? (Yes/No) No data migration.
  • If yes, list the exact upgrade steps: to enable shared welcome copy, install a Gateway build containing and advertising controlUi.welcome.get, then reconnect Companion. Do not treat the preview's nominal 2026.9.9 version as evidence that released 2026.9.9 contains it.

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.

@clawsweeper

clawsweeper Bot commented Oct 12, 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 Oct 12, 2026
@karkarl

karkarl commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Post-publication proof verification: all four embedded screenshots are publicly accessible (HTTP 200 without authentication), and downloaded image bytes exactly match the captured PNG SHA-256 hashes. The live screenshot is from the final source tree at 0c6831b8e8062e11e935bf56180262966be20afa; synthetic fixture captures are labeled separately. GitHub does not allow the fork-collaboration flag on this same-repository PR (API: "Fork collab can only be enabled on cross-repo pull requests"); repository maintainers retain normal write access to the head branch.

@karkarl karkarl removed the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Oct 12, 2026
@clawsweeper

clawsweeper Bot commented Oct 12, 2026

Copy link
Copy Markdown

Codex review: needs real behavior proof before merge.

What this changes

This PR adds an agent-centered chat welcome, recent conversations, Gateway-supplied suggestions, and first-send environment and workspace selection.

Example: Open an empty conversation for agent main with a conversation last used two days ago.

  • Before: The welcome shows generic OpenClaw branding and bundled starter suggestions.
  • After: The welcome shows main's identity, location pickers, and the recent conversation with a localized last-used time.

Review scores

Measure Result What it means
Overall readiness 🦪 silver shellfish (2/6) Useful presentation work has direct visual evidence, but a concrete placement defect blocks merge and execution-boundary proof remains incomplete.
Proof confidence 🦐 gold shrimp (3/6) Real behavior proof is necessary before merge. See Before merge.
Patch quality 🦪 silver shellfish (2/6) Security review found an item that needs attention.

Product

Kind: Feature · Worth it: Yes · Fix scope: Complete
User problem: Native new chats lack the connected dashboard's agent identity, location selection, and convenient recent conversations.
Reason: The native workflow has clear value and collaborator-approved direction; the unavailable welcome content on older Gateways is explicitly documented as an intentional tradeoff.

Merge readiness

⛔ Blocked before merge - 5 items remain

Keep this maintainer-authored PR open: it adds useful native chat functionality absent from main, but placement preparation can mutate a session after incoming history invalidates the selection.

Priority: P2
Reviewed head: 0c6831b8e8062e11e935bf56180262966be20afa

Before merge

  • Add real behavior proof - Authority-chain proof required: the inspected current-head screenshots and reported installed Windows ARM64 app flow support welcome rendering and recent navigation, but remote first-send execution and cloning are explicitly untested; demonstrate allowed placement and rejection of a read-only operator plus revoked session/device authority before filesystem or execution effects, with sensitive endpoints and credentials redacted. A latest-stable upgrade run preserving settings and transcripts is also absent. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • Cancel preparation when incoming history invalidates placement (P2) - If placement is awaiting agents.list, environments.list, or repository cloning when another client completes a turn, ApplyInputs sets _targetEmpty to false but leaves the operation token active. GatewayChatPlacementClient then continues to sessions.create and potentially sessions.dispatch; its describe check only examines placement, and the Gateway permits workspace adoption for an idle session with history. The post-PrepareAsync check consequently reports cancellation only after the session's location has changed. Cancel the pending preparation when eligibility is lost and prevent subsequent mutation requests; cover the sequence through the production placement client rather than a fake PrepareAsync that only verifies chat.send was withheld.
  • Resolve security review attention item - The new placement execution path needs final-effect authorization evidence before merge.
  • Resolve merge risk - Before merge, establish that the new placement path rejects a read-only operator and revoked session or device authority before repository cloning, workspace mutation, and device execution.
  • Improve patch quality - Add final-effect proof that a read-only operator cannot place a session and that revoking session or device authority during preparation prevents subsequent filesystem and execution effects.

Findings

  • [P2] Cancel preparation when incoming history invalidates placement — src/OpenClaw.Tray.WinUI/Chat/ChatPlacementController.cs:61-62

Tests

  • Missing end-to-end proof: Missing scenarios are invalidated preparation before mutation, real first-send placement with allowed and forbidden or revoked authority, and latest-stable upgrade preservation; supplied tests were not run during this read-only review.
Agent review details

How this fits together

The native Reactor chat surface consumes provider snapshots and authenticated Gateway catalogs; explicit placement choices flow through the composer into project, session, and device-placement mutations before chat.send.

flowchart TD
  A[Native chat welcome] --> B[Composer session]
  B --> C[Placement controller]
  C --> D[Gateway placement client]
  D --> E[Authenticated Gateway]
  E --> F[Workspace and device placement]
  B --> G[Existing chat send owner]
Loading

Technical review

Best possible solution:

Cancel invalidated placement before further mutations and retain the existing Gateway owners for session changes and execution authorization.

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

Source establishes the failure: delay placement discovery, let another client complete a turn in the selected session, apply the resulting nonempty inputs, then resume discovery; preparation continues to sessions.create before the controller checks emptiness again.

Is this the best way to solve the issue?

The focused presentation owners and shared Gateway catalog are appropriate, but checking emptiness after preparation protects chat.send without protecting the earlier session mutations.

Full review comments:

  • [P2] Cancel preparation when incoming history invalidates placement — src/OpenClaw.Tray.WinUI/Chat/ChatPlacementController.cs:61-62
    If placement is awaiting agents.list, environments.list, or repository cloning when another client completes a turn, ApplyInputs sets _targetEmpty to false but leaves the operation token active. GatewayChatPlacementClient then continues to sessions.create and potentially sessions.dispatch; its describe check only examines placement, and the Gateway permits workspace adoption for an idle session with history. The post-PrepareAsync check consequently reports cancellation only after the session's location has changed. Cancel the pending preparation when eligibility is lost and prevent subsequent mutation requests; cover the sequence through the production placement client rather than a fake PrepareAsync that only verifies chat.send was withheld.
    Confidence: 0.95

Overall correctness: patch is incorrect
Overall confidence: 0.94

AGENTS.md: found and applied where relevant.

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

Merge-risk options

Maintainer options:

  1. Keep placement in draft until its authority boundary is demonstrated (recommended)
    Retain the useful UI work while obtaining allowed, forbidden, and revoked-authority evidence through the actual placement owners.
  2. Separate placement mutations from the welcome and recents change
    Remove first-send placement from this PR and review its execution boundary in a focused follow-up.

Provenance checked

  • Welcome rendering and content changes intended behavior with a stated reason (9acafa6: The Reactor migration preserved the native welcome and suggestion surface; later presentation work modernized it.)
  • Composer ownership and lifetime keeps the original intent (686afdc: refactor(chat): extract composer ownership #1098 separated host-local drafts and workflows from the root's provider subscription and selection ownership.)
  • Connection-scoped provider projection keeps the original intent (f8a8825: The runtime-state extraction established ChatConversationState as the atomic owner with focused presentation and snapshot projection.)
  • Workspace identity and navigation keeps the original intent (3a58bf3: feat(workspace): add native Home and Sessions workspace #1541 established native Workspace navigation and retained chat drafts.)

Testing

Proof path: shipped entry point.

Security

Needs attention: The new placement execution path needs final-effect authorization evidence before merge.

Evidence

What I checked:

  • Protected authorship and reviewed revision: The author is a COLLABORATOR. The live PR remains draft at the pinned head, with mergeable true; fast-validation passed and broader checks were still running. (0c6831b8e806)
  • Main lacks the central feature: Current main still renders the generic welcome and three bundled suggestions in ReactorChatTimeline.BuildEmpty; the introduced diff replaces that renderer and adds recents and placement. (src/OpenClaw.Tray.WinUI/Chat/ReactorChatTimeline.cs:331, 16299381a4df)
  • History invalidation does not cancel preparation: ApplyInputs changes _targetEmpty without cancelling the preparation token. The next emptiness check occurs only after gateway.PrepareAsync has completed its mutations. (src/OpenClaw.Tray.WinUI/Chat/ChatPlacementController.cs:62, 0c6831b8e806)
  • Mutation sequence and dependency boundary: GatewayChatPlacementClient executes projects.add, sessions.create and sessions.dispatch through the authenticated production client. These protocol calls make the Gateway implementation and its authority contract applicable dependency evidence. (src/OpenClaw.Shared/Sessions/ChatPlacement.cs:138, 0c6831b8e806)
  • Existing-session adoption permits the failing outcome: At the Gateway base identified by the PR, readSessionCreateTarget rejects active work and changed session identity, but does not require an empty transcript. Consequently a completed turn does not prevent later workspace adoption. The pinned root and Gateway AGENTS.md files were read. (src/gateway/session-create-target.ts:57, cb9bdcd6e78f)
  • Supplied proof and accepted compatibility tradeoff: All four downloaded screenshots were inspected. The full PR body identifies current-head Windows ARM64 app navigation and live welcome RPC calls, explicitly excludes remote first-send execution and cloning, and intentionally accepts unavailable shared suggestions on released Gateways without controlUi.welcome.get. (0c6831b8e806)

Labels

Label changes:

  • add P2: This is a useful chat improvement with a bounded placement correctness defect, rather than an established widespread runtime outage.
  • add merge-risk: 🚨 session-state: An invalidated first-turn selection can still change the workspace of a conversation that has acquired history.
  • add merge-risk: 🚨 security-boundary: The new native path can clone repositories and place sessions on another device, while final-effect rejection of forbidden or revoked authority is not demonstrated.
  • add proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence.
  • add rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦐 gold shrimp and patch quality is 🦪 silver shellfish.
  • add status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Label justifications:

  • P2: This is a useful chat improvement with a bounded placement correctness defect, rather than an established widespread runtime outage.
  • merge-risk: 🚨 session-state: An invalidated first-turn selection can still change the workspace of a conversation that has acquired history.
  • merge-risk: 🚨 security-boundary: The new native path can clone repositories and place sessions on another device, while final-effect rejection of forbidden or revoked authority is not demonstrated.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦐 gold shrimp and patch quality is 🦪 silver shellfish.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence.

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.

Reviewed October 12, 2026, 3:12 AM ET / 07:12 UTC.

@karkarl karkarl added the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Oct 14, 2026
@karkarl

karkarl commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator Author

Documentation-only follow-up f1facec adds shared-copy ownership guidance to AGENTS.md. .\scripts\validate-docs.ps1 passed (58 Markdown files, both proof-pool schema paths); git diff --check passed. Application code is unchanged from the previously validated and captured 0c6831b source. The upstream Gateway catalog implementation remains unpublished and is still required.

@karkarl karkarl removed the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Oct 14, 2026
@karkarl karkarl 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 Oct 15, 2026
@karkarl
karkarl marked this pull request as ready for review October 15, 2026 02:58
@clawsweeper

clawsweeper Bot commented Oct 15, 2026

Copy link
Copy Markdown

ClawSweeper reviews are opt-in for maintainers. If a review is required, finish the work and validation first, then comment @clawsweeper review. Please avoid repeated requests while a review is queued or running; agents should not request reviews automatically.

@karkarl

karkarl commented Oct 15, 2026

Copy link
Copy Markdown
Collaborator Author

Global repo triage

Decision: HOLD_FOR_AUTHOR
Take confidence: 0%
Recommendation confidence: 100%
Effort: Large
Risk: High

Reviewed exact head 4f3c05099d12a6144df57737d0e4e5f80cd631d0. The PR is open and non-draft, but it is currently CONFLICTING / DIRTY. Its four reported successful checks are ClawSweeper dispatch jobs, not build or test CI.

Blocking findings

  1. P2: uncertain placement mutations can be retried as ordinary failures. projects.add, sessions.create, or sessions.dispatch can time out or complete just before a connection-epoch change. Those non-cancellation exceptions only set intent.Error; they do not mark the outcome uncertain. A later send can repeat repository cloning or session placement even though the Gateway may have accepted the first mutation. Treat post-admission timeouts and connection changes as uncertain, block automatic retry, and test disconnect/timeout after each mutation.
  2. P2: navigating away can leave hidden placement and send work running. ChatPage.OnUnloaded retains the composer and only invalidates session-selection navigation. The normal placement/send branch does not fence on that revision or cancel the placement operation. A slow first send can therefore create or dispatch a session, then send after the user has left Chat. Cancel/fence the continuation when another destination commits, while still draining any already-admitted mutation safely.
  3. P2: reconnect can admit placement from stale emptiness state. Placement eligibility is derived from the projected empty timeline without a separate unknown-history state. After reconnect, an intent can run before current-generation history authoritatively confirms that the session is still empty. Block placement until the current connection generation has loaded history.
  4. P2: displayed default placement can disagree with an existing empty session. Catalog loading initializes local/default selections without reading the selected session's authoritative placement. Explicitly clicking the displayed defaults may compare equal to those invented defaults, create no dirty intent, and let send use the session's prior hidden workspace or remote host. Initialize from authoritative session placement or display an unresolved state until it is known.

The two adversarial reviewers found different failure paths. Each blocking path above was checked against the exact-head source. Canonical P0-P3 autoreview was unavailable because its engine returned HTTP 401, so that attempt is not counted as a clean review.

Required next action

Resolve the merge conflicts, fix the placement admission/retry/navigation state machine, and add production-path tests for timeout, disconnect, page navigation, reconnect with stale history, and preconfigured empty sessions. Then run exact-head build/test CI and current-head windows-winui-interactive plus real Gateway placement/authorization proof. The current live installed-Gateway screenshots are from older head 0c6831b8; the current-head capture is a synthetic fixture and does not exercise these paths.

No fixes, commits, branch changes, or pushes were made during this triage.

@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 Oct 16, 2026
karkarl and others added 5 commits October 16, 2026 15:20
Center the selected agent identity, keep a stable native composer, add session placement pickers and recent-chat timestamps, and load shared welcome content from the connected Gateway.

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

Copilot-Session: a5312918-718f-4dfa-b80f-e23a21b064b0
Keep sidebar selection and back history aligned when opening a recent chat through the native composer.

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

Copilot-Session: a5312918-718f-4dfa-b80f-e23a21b064b0
Record the build-generated welcome catalog as a reusable pattern while keeping native-only copy in resources and avoiding unnecessary cross-service APIs.

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

Copilot-Session: a5312918-718f-4dfa-b80f-e23a21b064b0
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: a5312918-718f-4dfa-b80f-e23a21b064b0
Keep existing-session locations unverified until explicitly selected, require current-connection history for placement, and preserve uncertainty after admitted mutations. Localize recovery states and cover the failure and materialization paths.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4a8948f6-7890-41ca-a89d-c115b5a56579
@bkudiess
bkudiess force-pushed the karkarl-reactor-recent-chats branch from 4f3c050 to a2b2120 Compare October 16, 2026 22:36
@bkudiess bkudiess removed the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Oct 16, 2026
Wait for current history before subsequent placement mutations and sending, while preserving cancellation and a bounded recovery deadline. Keep valid folder selection available alongside preparation warnings, reject stale directory results, and retire obsolete history-wait notices.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4a8948f6-7890-41ca-a89d-c115b5a56579
@bkudiess bkudiess added the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Oct 17, 2026
@bkudiess
bkudiess merged commit 61979d6 into main Oct 17, 2026
26 checks passed
@bkudiess
bkudiess deleted the karkarl-reactor-recent-chats branch October 17, 2026 22:55
@bkudiess bkudiess removed the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Oct 17, 2026
larroy pushed a commit to larroy/openclaw-windows-node that referenced this pull request Oct 20, 2026
Bring native chat welcome, agent identity, location choices, and recent conversations in line with the connected dashboard.

Preserve drafts and placement intent across session materialization. For first-send placement, require current history before later mutations and sending, bound failed-history waits, and keep valid folder recovery available alongside uncertainty warnings.

Co-authored-by: Karen Lai <7976322+karkarl@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4a8948f6-7890-41ca-a89d-c115b5a56579
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants