app
Shotlog - Screenshot Log
Public Made by Adomby adom
See the shots your AI never showed you, and know it actually SAW them. adom-shotlog streams every screenshot the AI gathers into a live gallery (webview/pup/browser/phone), reports whether a human is really watching and on which surface, and ingests Adom Bridge child-window arrays via --meta.
← Commit history
Publish 0.23.10
7 files changed
+23−6
Cargo.lock+1−1@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "adom-shotlog"-version = "0.23.9"+version = "0.23.10" dependencies = [ "axum", "base64",
Cargo.toml+1−1@@ -1,6 +1,6 @@ [package] name = "adom-shotlog"-version = "0.23.9"+version = "0.23.10" edition = "2021" description = "Screenshot log viewer and CLI for Adom" license = "MIT"
VERSION+1−1@@ -1 +1 @@-0.23.9+0.23.10
bin/adom-shotlog⋯ 1 unchanged line ⋯
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-shotlog",- "version": "0.23.9",+ "version": "0.23.10", "type": "app", "title": "Adom Shotlog", "description": "See the shots your AI never showed you, and know it actually SAW them. adom-shotlog streams every screenshot the AI gathers into a live gallery (webview/pup/browser/phone), reports whether a human is really watching and on which surface, and ingests Adom Desktop child-window arrays via --meta.",
page.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-shotlog",- "version": "0.23.9",+ "version": "0.23.10", "type": "app", "title": "Adom Shotlog", "description": "See the shots your AI never showed you, and know it actually SAW them. adom-shotlog streams every screenshot the AI gathers into a live gallery (webview/pup/browser/phone), reports whether a human is really watching and on which surface, and ingests Adom Desktop child-window arrays via --meta.",
src/open.rs+18−1@@ -219,7 +219,24 @@ pub fn open_pup(channel: &str, port: u16, swap: bool) { // falls through to browser_open_window, which revives a dead session. let open_window = |ad: &dyn Fn(&[&str]) -> (bool, String)| -> bool { let win_json = format!("{{\"sessionId\":\"shotlog\",\"profile\":\"shotlog\",\"url\":\"{url}\"}}");- ad(&["browser_open_window", &win_json]).0+ let (mut ok, mut out) = ad(&["browser_open_window", &win_json]);+ // A COLD BRIDGE is not a failure: AD auto-starts Puppeteer+Chrome on+ // demand (10-15s, sometimes more after a reboot). The response says+ // status:"bridge_starting"/pending:true - WAIT and retry instead of+ // surrendering (this misread stranded humans on the webview fallback+ // for a whole day while pup was one warm-up away).+ let mut waited = 0u32;+ while !ok && waited < 9+ && (out.contains("bridge_starting") || out.contains("\"pending\":true") || out.contains("\"pending\": true"))+ {+ eprintln!("Hint: pup bridge is cold - Adom Desktop is auto-starting Chrome, waiting 10s (attempt {}/9)...", waited + 1);+ std::thread::sleep(std::time::Duration::from_secs(10));+ waited += 1;+ let r = ad(&["browser_open_window", &win_json]);+ ok = r.0;+ out = r.1;+ }+ ok }; let (listed, list_out) = ad(&["browser_list_tabs", "{\"sessionId\":\"shotlog\"}"]); let mut opened = false;