APP v0.2.0

Shotlog

Screenshot log viewer + injector โ€” gallery of channel screenshots with enforced original-resolution tracking, live updates, and mobile support.

Shotlog demo: ralph loop inspecting SN65HVD230 molecule from 4 angles with live captions, timeline zoom, file path click, and clipboard paste

๐Ÿ’ฌ Sample prompts Paste any of these into Claude Code to use this app
Open viewer Open the shotlog for my project
Inject a screenshot into shotlog
Show me the screenshot history
โšก Install this app

Paste this into Claude Code (VS Code panel, Adom editor, or terminal) to install:

I want to install the "Shotlog" app from the Adom Wiki (https://wiki-ufypy5dpx93o.adom.cloud/wiki/apps/shotlog). For the Docker CLI: curl -fsSL https://wiki-ufypy5dpx93o.adom.cloud/static/apps/shotlog/shotlog -o /usr/local/bin/shotlog && chmod +x /usr/local/bin/shotlog && shotlog install Then verify the install works.

Download v0.2.0

โŠž Windows coming soon
macOS coming soon
๐Ÿง Linux coming soon
๐Ÿณ Adom Docker CLI shotlog ยท

See all releases on GitHub (private repo โ€” access required)

Shotlog

Chronological screenshot log for Adom containers. A Rust CLI + HTTP server (port 8820) that captures, stores, and displays screenshots in channels. AI agents inject screenshots as they work; you watch them arrive live in a gallery โ€” on your desktop or your phone โ€” newest first, each with its description, source, and both the stored and original resolution.

Install

curl -fsSL https://wiki-ufypy5dpx93o.adom.cloud/static/apps/shotlog/shotlog -o /usr/local/bin/shotlog && chmod +x /usr/local/bin/shotlog && shotlog install

Inject โ€” one command

shotlog inject -c CHANNEL -d "what you see and why" -s SOURCE /path/to/image.png

Hand it the full-resolution screenshot. It auto-resizes anything over 1500px (either edge) down to 1400px and records the original resolution automatically, so the viewer always shows both sizes (1400ร—788 ยท orig 1920ร—1080) and you can verify what was actually captured.

Pre-shrunk image? Tell shotlog the original size with --orig-file <original> (it measures it) or --orig-w/--orig-h. A missing original shows a red orig missing flag and a hint; a lone --orig-w/-h is rejected.

The -d description becomes the filename and is shown prominently on every gallery card โ€” make it specific.

Viewer

shotlog open -c my-project

Newest-first gallery: description-first cards, dual-size metadata, tap-to-zoom, mobile layout, tooltips everywhere, a green WebSocket presence LED, and Ctrl+V clipboard paste. New injects appear at the top instantly. If a shot is injected into a channel with no viewer connected, the server force-opens one (debounced) so nothing is ever logged invisibly.

Other commands

shotlog serve     # start the server (port 8820)
shotlog health    # check status
shotlog resize    # rarely needed โ€” inject auto-resizes
shotlog install   # install binary + skill + completions
SHOT
shotlog 1 month ago
v0.3.3 build for adom docker
Upload v0.3.3 binary with corrected docs (no stale orig-missing reference)John Lauer ยท 1 month ago
2.1 MB

Install notes

Adom Docker CLI install steps
curl -fsSL https://wiki-ufypy5dpx93o.adom.cloud/static/apps/shotlog/shotlog -o /usr/local/bin/shotlog && chmod +x /usr/local/bin/shotlog && shotlog install

Screenshots

AI Skill โ€” how Claude uses this app

Edit AI Skill

name: shotlog description: "Screenshot log viewer and injector. Use when: logging screenshots during debug loops, documenting visual progress, reviewing screenshot history, opening the screenshot log panel, injecting a screenshot into the log. Trigger words: shotlog, screenshot log, shot log, visual log, screenshot history, log screenshot, open shotlog, screenshot viewer."

Shotlog โ€” Screenshot Log

A Rust CLI + HTTP server (port 8820) that captures, stores, and displays screenshots in channels. AI agents inject screenshots as they work; you watch them arrive live in a gallery (desktop or mobile), newest first, each with its description, source, and both the stored and original resolution.

Binary: /usr/local/bin/shotlog

Inject โ€” one command

shotlog inject -c CHANNEL -d "what you see and why" -s SOURCE /path/to/image.png

shotlog always records the original capture resolution โ€” and rejects any inject that doesn't establish it, so the viewer never shows "orig missing".

Resizing before inject is fine and expected. Oversized images crash Claude's vision analysis, so most Adom screenshot verbs return a shrunk copy on purpose. shotlog doesn't fight that โ€” it just requires the original size to travel with the shot. Four ways through:

  1. Pre-shrunk + the original dimensions (the common case โ€” your screenshot step reports the pre-resize Wร—H, you pass them through).
    shotlog inject -c proj -d "โ€ฆ" --orig-w 1920 --orig-h 1080 /tmp/shrunk.png
    
  2. Pre-shrunk + the original image โ€” shotlog measures it (keep the full-res file around for this).
    shotlog inject -c proj -d "โ€ฆ" --orig-file /tmp/fullres.png /tmp/shrunk.png
    
  3. --native โ€” assert the image is at original capture resolution (never resized). Use only when true.
    shotlog inject -c proj -d "โ€ฆ" --native /tmp/native-800x600.png
    
  4. Hand it the full-res image โ€” shotlog resizes anything over 1500px (either edge) down to 1400px and records the original automatically. Works, but only when the image is small enough that sending it for analysis won't crash.
    shotlog inject -c proj -d "Board after routing power traces" /tmp/fullres.png
    

The rejection: if FILE is โ‰ค1500px (so shotlog won't resize it) and you give none of --orig-w+--orig-h / --orig-file / --native, the inject is refused with exit 1 and a hint. This is deliberate โ€” it forces the original to be known instead of silently losing it. A lone --orig-w or --orig-h is also rejected. (- stdin trusts the caller; the clipboard paste path is exempt.)

Building a screenshot tool/verb? Make it (1) report the original width/height alongside the resized image, and (2) keep the full-res file available. Then every caller can satisfy shotlog with --orig-w/--orig-h (or --orig-file). A screenshot verb that only returns a shrunk image with no original metadata forces blind injects โ€” fix it at the source.

FlagRequiredDescription
-cyesChannel name (groups screenshots by task)
-dyesWhy this screenshot was taken (becomes the filename, min 6 chars)
-snoSource: pup_screenshot, av_capture, hd_shot, etc. (default cli)
--orig-filefor pre-shrunk imagesPath to the original full-res image; shotlog measures it
--orig-w / --orig-hfor pre-shrunk imagesOriginal dims (alternative to --orig-file)
--nativefor unresized small imagesAssert FILE is at original resolution
FILEyesImage path (use - for stdin)

CRITICAL: Always write great descriptions

The -d description becomes the filename (slugified) and is shown prominently on every gallery card. Make it specific.

Bad: "screenshot", "test", "after fix", "board" Good: "PCB layout after routing power traces", "3D model front view with LED indicators lit", "Error state when WiFi disconnected"

Think: what was I doing, what am I looking at, why did I take this shot?

The viewer

shotlog open -c my-project          # opens the gallery as a Hydrogen webview tab
  • Gallery, newest-first. Each card: description (prominent), timestamp, size โ€” shown as 1400ร—788 ยท orig 1920ร—1080 when the original differs, or just the size when it doesn't โ€” plus KB and source. Tap a card to zoom to the full image + metadata.
  • Mobile-ready โ€” works on a phone browser; the header collapses gracefully.
  • Green LED in the header = a viewer is connected (WebSocket live).
  • Clipboard paste โ€” Ctrl+V anywhere pastes a screenshot (auto-resized).
  • Live updates โ€” new injects appear at the top instantly over WebSocket.

Do not place a shotlog tab on the VS Code pane. shotlog open picks the first leaf; in a typical layout that's the pane hosting VS Code (panelType adom/a1b2c3d4-eeee-4000-a000-00000000000e), which covers the user's chat. Prefer computing a non-VS-Code --panel-id and calling adom-cli hydrogen workspace add-tab yourself.

Force-open safety net

If a screenshot is injected into a channel with no viewer connected, the server auto-opens a viewer tab (debounced, once per channel per minute) so the shot is never logged invisibly. Don't rely on it โ€” open the viewer at the start of a session.

Other commands

shotlog serve                # start the server (port 8820)
shotlog health               # check server status
shotlog resize FILE [-w 1400] [-o out.png]   # rarely needed โ€” inject auto-resizes
shotlog install              # install binary + this skill + completions

Channel naming

Use the project or task name: board-review, schematic-check, hd-setup-steps, debug-session.

Output

OK: Injected board-after-routing.png (1400x788, orig 1920x1080, 17 KB) into channel board-review
     Saved to: /home/adom/project/screenshots/shotlog/board-review/board-after-routing.png
Hint: Auto-resized from 1920x1080 โ†’ 1400x788; original size recorded.

Sub-Skills
?
What are Sub-Skills?

Sub-skills are community-contributed AI skill extensions for this component. They teach AI assistants about specific tools, configurators, or workflows.

Examples:

  • A manufacturer’s configuration tool for a motor controller
  • A community-written design guide for an amplifier circuit
  • An automated test/validation script for a sensor module

How to add one: Click Add Sub-Skill, provide the URL to your skill and a brief description. Submissions are reviewed by the Adom team before going live.

No sub-skills yet. Be the first to contribute one!

๐Ÿ”Ž How Claude finds this page (discovery snippet)

This page opts into Adom Wiki auto-discovery. When a user working in Claude Code mentions any of the trigger phrases below, Claude can proactively suggest this page. The pitch is exactly what Claude will say.

Pitch
"Chronological screenshot logging for AI debug loops โ€” capture, annotate, and review visual progress across channels with a built-in viewer panel."
Triggers
"shotlog", "screenshot log", "screenshot history", "visual log", "log screenshots", "screenshot viewer", "screenshot timeline", "debug screenshots", "visual debug loop", "screenshot channel", "inject screenshot", "open shotlog", "screenshot progress", "document visual progress"

Recent activity

15 commits