Viewer surface: browse generated images by date / backend / style / tag (Tailscale-internal) #6
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Idea (m, PWA-Voice 2026-05-09 11:25)
Concept
A simple viewer surface for the local image-output folder (
~/Pictures/imagen/per ImaGen#1's output spec). m wants to scroll through everything that was generated, see it visually, filter by date / tag, jump back to a specific run.Not a public product, not a polished web app — m's words: "muss nicht mal eine richtige Webseite sein, kann sein dass es auf mRiver irgendwie läuft und dann durchgeroutet wird". Tailscale-internal, single-user, low effort, high signal.
Surface options
python -m http.serverstyle) on mRiver. Simplest. Zero customisation, but works in 5 minutes.index.htmlwhenever a new image lands (e.g., a small inotify watcher writes a Hugo / Eleventy / hand-rolled HTML index). Better visual, no live runtime.imagen serve --port 8189frominternal/server/, which is already stubbed in the bootstrap from #1). Ships alongside the framework, accessible wherever ImaGen runs.Recommendation pre-design: start with D (lowest setup, leverages the framework that already exists) — and route via Tailscale (
http://mriver:8189) so m hits it from any of his machines.Folder structure (input)
ImaGen#1's output writer already does:
{date}-{slug}-{seed}.pngViewer reads both — image grid plus structured metadata available for filter / search.
Filter dimensions (initial set)
flux-schnell-local,flux-schnell-replicate, …photo,illustration,diagram,sketch,blog-headerOpen questions for design phase
tags.yamlindex, or a SQLite-let on the side? Tags should survive the image being moved or the sidecar being regenerated.Cross-link
This shares concept-DNA with two recently-parked issues:
If a "user-curates-AI-outputs" abstraction proves out across all three projects (chat outputs, judgment notes, generated images), there might be a shared storage / tag model worth lifting out. Premature to design that now — but worth noting that three independent issues are gravitating towards similar shape.
Out of scope (this issue)
Workflow
Park-only. When m wants to pursue:
Refs
Superseded by joint flexsiebels integration
After m's voice note here on 2026-05-09 (Tailscale-internal viewer on mRiver), m re-framed the surface on 2026-05-11: the viewer lives inside flexsiebels.de instead of as a standalone service. flexsiebels is m's owner-side personal-web umbrella, already has the SvelteKit + Bun + Supabase + Dokploy stack + auth, and the schema-helper pattern (
mb()/flex()/mh()) makes adding animagen()reader cheap.Decisions captured in the head-to-head thread (mai messages 1612/1613/1614/1615 between imagen/head and flexsiebels/head):
imagen.*schema with animagestable (NOT extendingflexsiebels.images— different semantics).mai.imagen_usagestays as-is for cost-billing; join onprompt_hashwhen needed.imagen-generated. Signed URLs for owner-mode rendering.requireAuth. No public surface (m confirmed 2026-05-11 01:35).imagen.images→flexsiebels.imageswith stripped semantics, exposing the curated image like any other public-eligible upload.Replaced by
imagen.*schema migration, Supabase Storage upload, DB insert after each generation,--no-cloudflag for offline runs.imagen()schema helper,/imaginelist + detail routes, owner-mode nav, requireAuth, disabled "Promote to gallery" stub for the future v2.Both being scoped now. paul (flexsiebels/head) is starting #64 today in parallel — scaffolding against an empty
imagen.imagestable while head delivers #7's upload-side. Schema shape is the contract.Leaving this issue open for m to close once #7 and #64 both merge.