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.8
8 files changed
+24−6
Cargo.lock+1−1@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "adom-shotlog"-version = "0.23.7"+version = "0.23.8" dependencies = [ "axum", "base64",
Cargo.toml+1−1@@ -1,6 +1,6 @@ [package] name = "adom-shotlog"-version = "0.23.7"+version = "0.23.8" edition = "2021" description = "Screenshot log viewer and CLI for Adom" license = "MIT"
VERSION+1−1@@ -1 +1 @@-0.23.7+0.23.8
bin/adom-shotlog⋯ 1 unchanged line ⋯
dev-skills/adom-shotlog-dev/SKILL.md+8@@ -273,3 +273,11 @@ A ghost = OS window exists but registry has 0 tabs and broker has 0 pup viewers - a stale page silently showing old shots. Detect by cross-checking all three; kill ghosts with desktop_find_control {hwnd, name:"Close"} -> desktop_ui_click (background UIA, no focus steal). Never process_kill chrome.++## Deploys MUST refresh surfaces (John, 2026-07-18: "always do that")+NEVER hand-roll the deploy cycle - run tools/deploy.sh. It builds, installs,+restarts, verifies the served stamp, and refreshes every live surface. The+handshake stamp is version+boot-epoch precisely because same-version redeploys+(0.23.5b/c/d) once shipped invisible changes: the human stared at a stale UI.+A deploy is NOT done until the human's open surfaces are re-verified live on+the new stamp (browser_evaluate the page's APP_VERSION - read it, don't assume).
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-shotlog",- "version": "0.23.7",+ "version": "0.23.8", "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.7",+ "version": "0.23.8", "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/html/index.html+11−1@@ -286,8 +286,18 @@ header { .cdown { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); z-index: 210; background: var(--elevated); border: 1px solid rgba(0,184,176,.5); border-radius: 12px; padding: 12px 16px; display: flex; align-items: center; gap: 12px;- max-width: min(460px, calc(100vw - 24px)); box-shadow: 0 8px 30px rgba(0,0,0,.5);+ width: max-content; max-width: min(460px, calc(100vw - 24px));+ box-shadow: 0 8px 30px rgba(0,0,0,.5); font: 13px/1.45 'Satoshi', sans-serif; color: var(--text); }+/* The message must NEVER collapse to min-content (one word per line) when the+ no-shrink cancel button competes for width. */+.cdown .cd-msg { flex: 1 1 auto; min-width: 0; }+/* Skinny: stack message over the button instead of squeezing side-by-side */+@media (max-width: 520px) {+ .cdown { flex-direction: column; align-items: stretch; gap: 10px;+ width: auto; left: 12px; right: 12px; transform: none; max-width: none; }+ .cdown .cd-cancel { align-self: flex-end; }+} .cdown .cd-n { display: inline-block; min-width: 1.2em; text-align: center; color: var(--accent); font: 700 18px/1 'JetBrains Mono', monospace; } .cdown .cd-cancel { flex-shrink: 0; background: none; border: 1px solid var(--border); border-radius: 8px;