← Commit history
Cargo.lock+1−1
@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"  [[package]] name = "adom-shotlog"-version = "0.23.0"+version = "0.23.2" dependencies = [  "axum",  "base64",
Cargo.toml+1−1
@@ -1,6 +1,6 @@ [package] name = "adom-shotlog"-version = "0.23.0"+version = "0.23.2" edition = "2021" description = "Screenshot log viewer and CLI for Adom" license = "MIT"
VERSION+1−1
@@ -1 +1 @@-0.23.0+0.23.2
bin/adom-shotlog
⋯ 1 unchanged line ⋯
hooks/shotlog-on-read.sh+4−2
@@ -81,8 +81,10 @@ fi ORIG_ARGS="--native" case "$f" in   *.safe.png)-    full="${f%.safe.png}.full.png"-    [ -f "$full" ] && ORIG_ARGS="--orig-file $full"+    # full sibling naming differs by bucket: screen saves <stem>.full.png, window saves <stem>.png+    for full in "${f%.safe.png}.full.png" "${f%.safe.png}.png"; do+      [ -f "$full" ] && { ORIG_ARGS="--orig-file $full"; break; }+    done     ;; esac 
package.json+4−3
@@ -1,6 +1,6 @@ {   "slug": "adom-shotlog",-  "version": "0.23.0",+  "version": "0.23.2",   "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.",@@ -56,7 +56,6 @@   ],   "discovery_pitch": "Your AI screenshots its work into channels and you review it live anywhere, even your phone. Every shot records its original capture resolution, and Adom Desktop child-window arrays come through with their coordMap.",   "visibility": "public",-  "bundled": true,   "tags": [     "cli",     "screenshot",@@ -67,5 +66,7 @@   ],   "hero": {     "path": "screenshots/hero.png"-  }+  },+  "org": "adom",+  "platform": "any" }\ No newline at end of file
page.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-shotlog",-  "version": "0.23.0",+  "version": "0.23.2",   "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+21−5
@@ -701,10 +701,24 @@ header {    function card(e) {     const c=document.createElement('div'); c.className='shot-card'; c.dataset.id=e.id;-    const desc=document.createElement('div');-    if (e.description) { desc.className='shot-card-desc'; desc.textContent=e.description; }-    else { desc.className='shot-card-desc no-desc'; desc.textContent='⚠ No description — inject with -d "what and why"'; }-    c.appendChild(desc);+    // For auto-captures the WHY is the headline: show the prompt the thread+    // was serving, and demote the generic "auto-captured: file.png" to a+    // small mono sub-line. Deliberate injects keep their description first.+    const isAuto=(e.source||'').startsWith('read-hook');+    if (isAuto && e.context) {+      const why=document.createElement('div'); why.className='shot-card-why';+      why.innerHTML='<span class="q">"</span>'+esc(e.context)+'<span class="q">"</span>';+      why.setAttribute('data-tooltip','The prompt this AI thread was working on when it read the image - the REASON this capture exists.');+      c.appendChild(why);+      const sub=document.createElement('div'); sub.className='shot-card-sub';+      sub.textContent='auto-captured: '+(e.filename||'').replace(/^auto-captured-screenshot-claude-read-for-analysis-/,'');+      c.appendChild(sub);+    } else {+      const desc=document.createElement('div');+      if (e.description) { desc.className='shot-card-desc'; desc.textContent=e.description; }+      else { desc.className='shot-card-desc no-desc'; desc.textContent='⚠ No description — inject with -d "what and why"'; }+      c.appendChild(desc);+    }     const meta=document.createElement('div'); meta.className='shot-card-meta';     const ts=document.createElement('span'); ts.className='ts'; ts.textContent=fmtDate(e.timestamp);     ts.setAttribute('data-tooltip', new Date(e.timestamp).toLocaleString()); meta.appendChild(ts);@@ -762,7 +776,9 @@ header {    function openModal(e) {     mImg.src=imgUrl(e); mImg.alt=e.description||e.filename;-    mDesc.textContent=e.description||''; mDesc.style.display=e.description?'':'none';+    const isAutoM=(e.source||'').startsWith('read-hook');+    mDesc.textContent=(isAutoM&&e.context)?('"'+e.context+'"'):(e.description||'');+    mDesc.style.display=(mDesc.textContent)?'':'none';     let why=document.getElementById('mWhy');     if(!why){ why=document.createElement('div'); why.id='mWhy'; why.className='m-why'; mDesc.after(why); }     if(e.context){ why.innerHTML='<span class="k">while working on</span>'+esc('"'+e.context+'"'); why.style.display=''; }