← Commit history
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;