Skip to content

fix(ui): acknowledge successful remote config open - #138757

Merged
obviyus merged 9 commits into
openclaw:mainfrom
VasuBansal7576:solar/config-open-file-feedback
Sep 5, 2026
Merged

obviyus merged 9 commits into
openclaw:mainfrom
VasuBansal7576:solar/config-open-file-feedback

Conversation

@VasuBansal7576

@VasuBansal7576 VasuBansal7576 commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

Closes #138374.

What Problem This Solves

Fixes an issue where remote Control UI users received no feedback after Memory Wiki How to enable or Config Open successfully opened the configuration file on the Gateway computer.

Why This Change Was Made

Both buttons share one operation, so that operation now shows a translated acknowledgement after a successful Gateway response. The message identifies the Gateway host and excludes its file path. Existing failure guidance, clipboard fallback, and connection checks stay with the same owner.

User Impact

Users can tell that the file opened on the Gateway computer. Repeated actions receive fresh feedback; rejected opens retain the existing error guidance.

Evidence

  • Baseline 46b7ee7c14ce7d12f6c935b9b584353fa6de177b: both real UI clicks opened the task config in a Gateway-side desktop window and returned ok: true, while the remote browser displayed no status.
  • Candidate a81de763274990736b6cd31d70f073452618421b: both real UI clicks opened the file and displayed Configuration file opened on Gateway host. Runtime and UI came from one combined build per commit. This used a separate browser client, real Gateway requests, and the real Linux desktop opener.
  • Browser regression: the success scenario fails on baseline with status count 0; both failure scenarios pass. All three scenarios pass on the candidate. The success test checks host wording, absence of the path, and unchanged clipboard.
  • Independent source-blind acceptance: all eight clauses pass, including both routes, sequential repeats, real opener rejection, pending success/failure across connection replacement, a second config path, and native clipboard copy/paste. No unresolved findings.
  • Config owner tests, focused Oxlint/Stylelint, exact pinned formatting, keyless translation checks, and git diff --check pass. Translation baseline generation leaves its bytes unchanged.

Before and after both config-open actions

Production: +4 lines for the missing outcome and translation; tests: +28 lines. No new setting, protocol, storage, dependency, or operation owner. The shared operation has no duplicate path to remove; failure alone needs clipboard work. Original contribution by @VasuBansal7576; report by @benmillerat. AI-assisted repair and verification.

Separate follow-up: inspect remote-browser success feedback for session workspace Reveal. It uses a different operation and has not been live-verified in this repair.

@clawsweeper

clawsweeper Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

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

ClawSweeper review complete

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

View the workflow run.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: web-ui App: web-ui size: XS triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. labels Sep 5, 2026
@openclaw-barnacle openclaw-barnacle Bot removed docs Improvements or additions to documentation triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. labels Sep 5, 2026
@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. 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. labels Sep 5, 2026
@clawsweeper

clawsweeper Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed September 5, 2026, 1:51 PM ET / 17:51 UTC.

ClawSweeper review

What this changes

The Control UI adds a localized confirmation when the Gateway opens its configuration file, with browser coverage for successful responses.

Merge readiness

✅ Ready for maintainer review

The feedback gap remains on current main and v2026.9.1, and this PR provides a focused, useful repair. No blocking correctness or security findings.

Priority: P2
Reviewed head: a81de763274990736b6cd31d70f073452618421b

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused shared-owner repair with direct visual proof and useful browser regression coverage.
Proof confidence 🦞 diamond lobster (5/6) ✨ media proof bonus Sufficient (screenshot): Inspected before/after screenshots show the running Settings → Raw → Open UI gaining the expected toast after a mocked successful Gateway response, directly demonstrating the changed browser presentation.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (screenshot): Inspected before/after screenshots show the running Settings → Raw → Open UI gaining the expected toast after a mocked successful Gateway response, directly demonstrating the changed browser presentation.
Evidence reviewed 10 items Verified introduced change: The pinned merge-base-to-head diff adds the success notification, its English translation key, and browser regression coverage. It does not change Gateway execution, authorization, persisted settings, or dependencies.
Still necessary on current main: Current main returns after a successful config.openFile response without publishing feedback; only failures produce a toast.
Reported release retains the gap: The v2026.9.1 implementation has the same silent success path. Its tag resolves to the supplied latest-release commit.
Findings None None.
Security None None.

How this fits together

Settings and Memory Wiki send configuration-opening requests through the same Control UI handler. The Gateway opens its host-side file and returns an outcome that the browser presents to the operator.

flowchart LR
  A[Settings Open] --> C[Shared configuration handler]
  B[Memory Wiki enablement] --> C
  C --> D[Gateway host file opener]
  D --> E{Request outcome}
  E -->|Success| F[Browser confirmation]
  E -->|Failure| G[Error and file-path fallback]
Loading

Before merge

None.

Agent review details

Security

None.

PR surface

Source +4, Tests +28. Total +32 across 3 files.

View PR surface stats
Area Files Added Removed Net
Source 2 4 0 +4
Tests 1 28 0 +28
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 3 32 0 +32

Review metrics

Metric Value Why it matters
Production versus test growth Production +4; tests +28 Production growth supplies the missing notification through existing localization and toast owners; no additional abstraction is introduced.

Root-cause cluster

Relationship: fixed_by_candidate
Canonical: #138374
Summary: This PR addresses the linked issue's explicitly accepted host-side acknowledgement behavior.

Members:

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

Technical review

Best possible solution:

All config-opening entry points should acknowledge the Gateway-host outcome through the shared toast and translation machinery.

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

Yes, from source: a successful config.openFile response reaches the end of the current-main handler without browser feedback. The reported host logs and inspected before/after images corroborate that path; this review did not execute it.

Is this the best way to solve the issue?

Yes. Repairing the shared response handler covers Settings and Memory Wiki together; a page-specific toast would duplicate outcome handling, while changing navigation would alter the existing action.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 3e4becea5e2c.

Labels

Label justifications:

  • P2: Repairs confusing remote-browser feedback while the underlying configuration-opening operation already succeeds.
  • 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 (screenshot): Inspected before/after screenshots show the running Settings → Raw → Open UI gaining the expected toast after a mocked successful Gateway response, directly demonstrating the changed browser presentation.
  • proof: sufficient: Contributor real behavior proof is sufficient. Inspected before/after screenshots show the running Settings → Raw → Open UI gaining the expected toast after a mocked successful Gateway response, directly demonstrating the changed browser presentation.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. Inspected before/after screenshots show the running Settings → Raw → Open UI gaining the expected toast after a mocked successful Gateway response, directly demonstrating the changed browser presentation.

Evidence

What I checked:

  • Verified introduced change: The pinned merge-base-to-head diff adds the success notification, its English translation key, and browser regression coverage. It does not change Gateway execution, authorization, persisted settings, or dependencies. (ui/src/lib/config/config-gateway-operations.ts:686, a81de7632749)
  • Still necessary on current main: Current main returns after a successful config.openFile response without publishing feedback; only failures produce a toast. (ui/src/lib/config/config-gateway-operations.ts:646, 3e4becea5e2c)
  • Reported release retains the gap: The v2026.9.1 implementation has the same silent success path. Its tag resolves to the supplied latest-release commit. (ui/src/lib/config/config-gateway-operations.ts:646, ad6fe23aecb9)
  • Shared caller and response boundary: Memory Wiki delegates to runtimeConfig.openFile at memory-panel.ts:540; Settings uses that same capability at config-page.ts:1200. The capability invokes the changed handler, and config.ts:1272–1290 returns the host opener's success or failure. This path has no affirmative Codex dependency signal. (ui/src/lib/config/runtime-config-capability.ts:252, a81de7632749)
  • Regression and failure coverage: The added browser case clicks Settings → Raw → Open and checks the success status without copying or displaying the file path. Existing cases cover unsuccessful responses and rejected requests; the unit suite also covers clipboard fallback. Tests were inspected, not executed in this read-only review. (ui/src/e2e/config-open-file-feedback.e2e.test.ts:81, a81de7632749)
  • Inspected before-and-after browser proof: Both host-prepared images were opened locally. The before image has no acknowledgement; the after image visibly displays “Configuration file opened on Gateway host.” The captured PR body identifies a running Control UI with a deterministic mocked Gateway, matching this presentation-only change. Images are pinned to the linked fork commit; no remote desktop-opener execution is inferred. (docs/pr-evidence/config-open-file-feedback-after.png, 0729634f8746)

Likely related people:

  • Peter Steinberger: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)
  • Vincent Koc: 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 (3 earlier review cycles)
  • reviewed 2026-09-05T01:58:22.204Z sha 612c0f1 :: needs maintainer review before merge. :: none
  • reviewed 2026-09-05T02:45:45.677Z sha bd95880 :: needs maintainer review before merge. :: none
  • reviewed 2026-09-05T03:47:51.281Z sha eabb36f :: needs maintainer review before merge. :: none

@VasuBansal7576

Copy link
Copy Markdown
Contributor Author

CI triage on head 612c0f106bc02f8f747484b5f32af59c9944bfe8: checks-ui-e2e (10/13) fails in dashboard-gallery.e2e.test.ts:183 waiting for .board-session-surface. I ran the identical ui-e2e-bundled focused harness on both candidate 612c0f106bc02f8f747484b5f32af59c9944bfe8 and base 4db554f4cb3aaab69c1be4931244ce36376e4906; both reproduce the same timeout. This failure predates the PR and is outside its changed files. The config feedback regression E2E passes 3/3 on the candidate. Please track the dashboard timeout separately; this PR does not broaden scope to mask it.

@VasuBansal7576

Copy link
Copy Markdown
Contributor Author

CI repair pushed in bd95880e929c: the dashboard-gallery fixture advertised sessions.resolve but had no response. The trace showed the deep link falling back to /dashboard/main/12345678 and rendering Session not found; it never mounted .board-session-surface. The fixture now returns the selected dashboard session for that method. Local ui-e2e-bundled focused run passes 1/1. The refreshed GitHub shard is currently running.

@obviyus obviyus self-assigned this Sep 5, 2026
@obviyus

obviyus commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

Thanks @VasuBansal7576. The shared fix now uses the existing translation catalog, and its browser test checks the full host explanation and clipboard privacy.

Real before/after proof is in the PR body. Both Memory Wiki How to enable and Config Open were driven from a separate browser against a real Gateway desktop. Baseline 46b7ee7c14ce7d12f6c935b9b584353fa6de177b opened the file with no browser acknowledgement. Candidate a81de763274990736b6cd31d70f073452618421b opened the file and acknowledged the Gateway host without showing the path.

Focused validation commands:

node scripts/run-vitest.mjs ui/src/lib/config/config-gateway-operations.test.ts
node scripts/run-vitest.mjs ui/src/lib/toast.test.ts ui/src/pages/agents/memory/view.test.ts src/gateway/server-methods/open-path.test.ts
node scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner ui/src/e2e/config-open-file-feedback.e2e.test.ts
pnpm ui:i18n:baseline
pnpm ui:i18n:verify

Independent source-blind acceptance passes all eight behavior clauses, including native clipboard contents and pending success/failure across connection replacement. All 58 focused tests pass on the candidate. The success regression fails on baseline while both existing failure cases pass. Focused lint, style checks, pinned formatting, and the combined runtime/UI build pass. CI: https://github.com/openclaw/openclaw/actions/runs/33981907550.

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

@clawsweeper

clawsweeper Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
Exact review queued.

Re-review progress:

@obviyus
obviyus merged commit 7af054e into openclaw:main Sep 5, 2026
169 checks passed
@obviyus

obviyus commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

Thanks @VasuBansal7576! Merged in 7af054e.

Proof: Both Memory Wiki How to enable and Config Open now acknowledge a real configuration-file open on the Gateway host, from a separate browser. Success stays path-free and leaves the clipboard unchanged. Rejection retains the exact copied path, and closed connections produce no stale result.

Reviewed source: a81de76. Real before/after screenshots and commands are in the PR body and proof comment. No CI exception was used.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Sep 6, 2026
Show a translated, path-free acknowledgement when Memory Wiki or Config opens the configuration file on the Gateway host. Keep failure guidance and stale-connection suppression in the shared operation.

Verified both real UI actions against a separate Gateway desktop, including repeated opens, rejection and connection loss. Fixes openclaw#138374.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
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 P2 Normal backlog priority with limited blast radius. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: XS 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.

[Bug]: Memory Wiki "How to enable" has no visible effect in remote Control UI sessions

2 participants