Skip to content

feat(vision): classify command + smarter optimize defaults#78

Merged
gfargo merged 1 commit into
mainfrom
feat/vision-classify
May 11, 2026
Merged

feat(vision): classify command + smarter optimize defaults#78
gfargo merged 1 commit into
mainfrom
feat/vision-classify

Conversation

@gfargo
Copy link
Copy Markdown
Owner

@gfargo gfargo commented May 11, 2026

Closes #77. See issue for details.

`localpress classify <ids>` detects image type via the Ollama vision
model (screenshot | photo | illustration | diagram) and caches the
result in processing_history. `optimize` then consults the cache when
picking a format default — screenshots/diagrams → PNG, photos/
illustrations → WebP — but only when no explicit --to or profile format
was supplied.

This means once you `classify` your library, plain `optimize` without
flags routes each image to the codec that suits its content type,
rather than producing one-size-fits-all output that often hurts text
clarity on screenshots or wastes bytes on photos kept as PNG.

- New classify command using the 'classify' vision kind (closed-set match)
- Result stored as paramsJson.classification in processing_history
- New getCachedClassification(db, site, wpId) helper
- optimize: per-item check, sets perItemOpts.toFormat when cache hit
  and no explicit/profile format
- MCP tool `classify` exposed

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@gfargo gfargo merged commit 428aa0b into main May 11, 2026
4 checks passed
@gfargo gfargo deleted the feat/vision-classify branch May 11, 2026 20:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(vision): classify command + smarter optimize defaults

1 participant