fix(clients): flatten scoped remote output
- Render explicit --remote clients results with profile-only labels. - Suppress remote host group headers for scoped client queries. - Keep global and mixed client listings grouped by host. - Update client and CLI tests for scoped remote rendering. - Bump browser-cli and extension versions to 0.16.5.
This commit is contained in:
@@ -151,21 +151,25 @@ def active_browser_targets(*, include_remotes: bool = True, key=None, suppress_p
|
||||
targets.extend(_remote_browser_targets(key=key, suppress_pq_warning=suppress_pq_warning))
|
||||
return targets
|
||||
|
||||
def _cached_client_row(target: BrowserTarget) -> dict | None:
|
||||
def _cached_client_row(target: BrowserTarget, *, scoped: bool = False) -> dict | None:
|
||||
"""Build a clients row from a target's discovery data, skipping a roundtrip.
|
||||
|
||||
Returns None when the remote didn't advertise its version (older serve), so
|
||||
callers fall back to an explicit ``clients.list`` query.
|
||||
callers fall back to an explicit ``clients.list`` query. When *scoped* is
|
||||
true, the caller already selected one remote host, so render profile-only
|
||||
labels instead of adding a host group header.
|
||||
"""
|
||||
if target.version is None and target.extension_version is None:
|
||||
return None
|
||||
return {
|
||||
"profile": target.display_name,
|
||||
"profileGroup": target.display_group,
|
||||
row = {
|
||||
"profile": target.profile if scoped else target.display_name,
|
||||
"name": target.browser_name or "",
|
||||
"version": target.version or "",
|
||||
"extensionVersion": target.extension_version or "",
|
||||
}
|
||||
if target.display_group and not scoped:
|
||||
row["profileGroup"] = target.display_group
|
||||
return row
|
||||
|
||||
def _rows_from_result(result, label: str, profile_group: str | None) -> list[dict]:
|
||||
rows = []
|
||||
@@ -249,18 +253,17 @@ def collect_browser_clients(
|
||||
if targets:
|
||||
uncached = []
|
||||
for target in targets:
|
||||
cached = _cached_client_row(target)
|
||||
cached = _cached_client_row(target, scoped=True)
|
||||
if cached is not None:
|
||||
rows.append(cached)
|
||||
else:
|
||||
uncached.append(target)
|
||||
results = _run_concurrent([
|
||||
(lambda t=t: _client_rows_async(
|
||||
t.display_name,
|
||||
t.profile,
|
||||
profile=t.profile,
|
||||
remote=remote,
|
||||
key=key,
|
||||
profile_group=t.display_group,
|
||||
))
|
||||
for t in uncached
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user