fix(observability): stamp page URL on screenshot/network; enable capture on --clear (issue #8)
Field report #8: in extension-relay sessions, reads (eval/screenshot/network) could silently run against whatever tab drifted into focus, with no signal, and network capture was intermittently empty. - #8.1: screenshot and `network requests` now print `screenshot @ <url>` / `network @ <url>` to stderr (mirrors the existing `eval @ <url>`), and the responses carry `origin`. A read against the wrong/drifted tab — and the "0 captured" vs "wrong page" ambiguity — is now obvious. - #8.3: `network requests --clear` now enables Network capture immediately instead of lazily on the next read, so requests fired between `--clear` and the following read are tracked (fixes the "No requests captured" on first try, works on retry" race). Extracted enable_request_tracking helper. - #8.2: the daemon version-mismatch restart notice now spells out that in-memory context (active tab, refs, captured requests) is reset and tells the user to re-open the target URL if the next read looks blank/wrong. Verified on a launched browser: coordinate clicks land, screenshot/network stamps appear, and a fetch after --clear is captured on the first read.
This commit is contained in:
@@ -595,6 +595,15 @@ pub fn print_response_with_opts(resp: &Response, action: Option<&str>, opts: &Ou
|
||||
}
|
||||
// Network requests
|
||||
if let Some(requests) = data.get("requests").and_then(|v| v.as_array()) {
|
||||
// Stamp the page these requests were read from, mirroring `eval @ url`,
|
||||
// so a read against a drifted/wrong tab is obvious (issue #8.1).
|
||||
if let Some(o) = data
|
||||
.get("origin")
|
||||
.and_then(|v| v.as_str())
|
||||
.filter(|o| !o.is_empty())
|
||||
{
|
||||
eprintln!("network @ {o}");
|
||||
}
|
||||
if requests.is_empty() {
|
||||
println!("No requests captured");
|
||||
} else {
|
||||
@@ -798,6 +807,15 @@ pub fn print_response_with_opts(resp: &Response, action: Option<&str>, opts: &Ou
|
||||
color::success_indicator(),
|
||||
color::green(path)
|
||||
);
|
||||
// Stamp which page was captured (mirrors `eval @ url`) so a
|
||||
// screenshot of the wrong/drifted tab is obvious (issue #8.1).
|
||||
if let Some(o) = data
|
||||
.get("origin")
|
||||
.and_then(|v| v.as_str())
|
||||
.filter(|o| !o.is_empty())
|
||||
{
|
||||
eprintln!("screenshot @ {o}");
|
||||
}
|
||||
if let Some(annotations) = data.get("annotations").and_then(|v| v.as_array()) {
|
||||
// Cap the printed legend on dense pages (it can be
|
||||
// hundreds of lines and flood the terminal). The image
|
||||
|
||||
Reference in New Issue
Block a user