You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Runtime: report leftover root-owned Browser host access as structured status for the launcher #429
Follow-up to #418 (decision Q3: the launcher shows this notice in plain language, through structured status, not by parsing stdout).
Today
On Linux, elastos setup calls earlier_linux_host_access from retire_host (elastos/crates/elastos-server/src/setup/browser_config.rs:356-360, function at :384, on #418's branch fix/browser-helper-leftover-notice). It finds Browser host access that an earlier release set up as root for this account (helper copy /usr/local/lib/elastos/browser-vm-linux-network.py, /etc/systemd/system/elastos-browser-network-<uid>.service, /etc/udev/rules.d/70-elastos-browser-kvm-<uid>.rules, /var/lib/elastos-browser/<uid>.json; written by scripts/browser-vm-linux-network.pyconfigure, installed by scripts/install.shprepare_browser_linux_host). The result is only a println! on stdout. The launcher runs elastos setup (elastos-launcher src/main/targets/runtimeInstall.ts:379, windowsRuntime.ts:353) and has no structured way to see it.
Why the Runtime first
The detection, including the trust checks #418 adds (lstat, root-owned, no group/other write, no links in any folder of the path, /usr/bin/python3 resolved through root-owned links), lives in the Runtime. The launcher must not copy those checks (one source of truth) and must not parse the English text (it changes, and parsing it is fragile). So the Runtime must emit the status before the launcher can show it.
Ask
Runtime:
Expose the result as a structured field, for example in elastos home --status --json (HomeSnapshot, elastos/crates/elastos-server/src/home_cmd.rs:147; JSON output at home_cmd.rs:620-629), or a setup JSON result. Suggested shape: {"earlierBrowserHostAccess": {"present": true, "removable": true|false, "files": [...]}}. removable is true only when every check in fix(setup): Linux setup names the removal command for an earlier release's Browser host access #418 passes.
No sudo command string in the structured field. The text and the command stay in one place (the CLI notice).
Launcher (elastos-launcher, after the field exists):
Read the field, never stdout. Show one plain-language line, for example: "An earlier version of ElastOS set up Browser access on this computer. It is not in use. An administrator can remove it." When removable is true, offer a "Show how to remove" action that shows the Runtime's command. The launcher does not run sudo itself.
Linux only. Not shown on macOS or in WSL2 unless the field says so.
Out of scope
Removing the access automatically (needs root; P: least privilege).
Activity