feat(diagnose): detect and inform about @homebridge/ciao cmd popup bug#250
Merged
1186258278 merged 2 commits intomainfrom Apr 24, 2026
Merged
feat(diagnose): detect and inform about @homebridge/ciao cmd popup bug#2501186258278 merged 2 commits intomainfrom
1186258278 merged 2 commits intomainfrom
Conversation
On Windows, OpenClaw's transitive dependency @homebridge/ciao (<=1.3.6)
calls child_process.exec('arp -a ...') every 15-30 seconds without
passing windowsHide:true, causing a cmd.exe popup to flash.
This is an upstream library bug:
- Issue: homebridge/ciao#64
- PR: homebridge/ciao#65 (open, not merged)
ClawPanel deliberately chooses 'detect and inform' rather than silently
patching the user's node_modules. We respect the user's control over
their own machine.
Changes:
- src-tauri/src/commands/diagnose.rs: new check_ciao_windowshide_bug
command; scans openclaw's @homebridge/ciao/lib/NetworkManager.js and
reports whether the buggy exec pattern is present
- src-tauri/src/lib.rs: register the new command
- scripts/dev-api.js: Web-mode stub (returns affected:false since the
bug does not manifest off-Windows)
- src/lib/tauri-api.js: add api.checkCiaoWindowsHideBug
- src/lib/ciao-bug-warning.js: new module with toast + modal flow,
version-scoped dismiss (localStorage)
- src/locales/modules/ciaoBug.js: translations in 5 primary languages
- src/locales/index.js: register the ciaoBug module
- src/main.js: call checker 3s after splash hides
Non-Windows users see nothing; Windows users see a single warning toast
(version-dismissible) linking to three fix paths: wait for upstream,
apply patch-package, or edit NetworkManager.js manually.
CI failures on Linux + macOS:
- openclaw_module_root was dead code when target_os != windows
since the only caller is the #[cfg(target_os = "windows")] block
inside check_ciao_windowshide_bug
- Explicit `return CiaoCheckResult {...};` in the non-Windows branch
triggered clippy::needless_return
Fix:
- Add #[cfg(target_os = "windows")] to openclaw_module_root so it
is not compiled on other platforms
- Convert the non-Windows early exit to a tail expression
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
On Windows, OpenClaws transitive dependency
@homebridge/ciao(<=1.3.6) callschild_process.exec("arp -a ...")every 15-30 seconds without passingwindowsHide: true. Acmd.exe/conhost.exewindow flashes briefly on each call, causing visible UI noise for the entire time Gateway is running.This is an upstream library bug, not a ClawPanel or OpenClaw issue:
Approach — detect and inform, not silently patch
ClawPanel deliberately chooses "detect and inform" over "auto-patch user node_modules". Users retain full control over their local software; we only surface a clear explanation of what is happening and three possible fix paths.
Changes
Backend
src-tauri/src/commands/diagnose.rs— newcheck_ciao_windowshide_bugTauri command. Resolves the openclaw module root from the detected CLI path, scans@homebridge/ciao/lib/NetworkManager.js, and reports whether the buggyexec("arp -apattern is present.src-tauri/src/lib.rs— register the command ininvoke_handler!.Frontend
src/lib/tauri-api.js— addapi.checkCiaoWindowsHideBug.src/lib/ciao-bug-warning.js— new module with toast + modal flow and version-scopedlocalStoragedismissal so users are not nagged after acknowledging the issue for a given ciao version.src/locales/modules/ciaoBug.js— translations in 5 primary languages (zh-CN / en / zh-TW / ja / ko).src/locales/index.js— register theciaoBugmodule.src/main.js— call the checker 3 seconds after splash hides so the toast does not collide with startup animations.Web mode
scripts/dev-api.js— minimal stub returningaffected: falsefor non-Windows runs (the Web mode is primarily deployed on Linux servers, where this bug does not manifest).UX
patch-packageon the openclaw install.NetworkManager.js(simplest, breaks on next openclaw upgrade).Verification
npm run buildpassescargo checkpassescargo fmt --checkpassescargo clippy -D warningspassesRefs
Relates to (not "closes" — the bug is upstream): homebridge/ciao#64