Add Mosaic Poster plugin#743
Conversation
Replaces the pre-playback scene poster with an N x N contact sheet of the whole video. Toggle cover art / mosaic, selectable grid size (3-8), and tap a cell to seek to that point. Daemon-free: sheets are generated on demand via runPluginOperation and served by Stash. Localized for all Stash UI languages. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Any particular reason for not using scene sprites and instead adding additional generation overhead? |
|
@DogmaDragon
That said, the overhead is a fair point, and I tried to keep it bounded: generation is on demand (only the scene you open), one ffmpeg at a time, viewport pre-generation, and an LRU cache. If a lighter footprint is preferred, I'm happy to add a "use sprites" mode that builds the sheet from the existing sprite/VTT entirely client-side (no generation) — either as an option, or as the default with ffmpeg hi-res as opt-in. Happy to go whichever direction the project prefers. |
I can merge the plugin as is, but your LLM seems to have made the plugin based on false assumptions either by lack of direction or pure stupidity. |
Reuse the existing scene sprite + WebVTT to build the mosaic client-side (instant, no ffmpeg, no extra storage). Tap-to-seek uses the sprite's real VTT timestamps. ffmpeg generation is now an optional "High-res upgrade" setting, off by default, that renders a higher-resolution sheet from the video and swaps it in over the sprite when enabled. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
@DogmaDragon By default the sheet is now built entirely in the browser from the existing scene sprite + VTT: the frames are spliced into the N×N grid on a canvas, using each thumbnail's real VTT timestamp for tap-to-seek. No ffmpeg and no extra storage — it's instant and reuses what Stash already generates. The ffmpeg path is still available but is now an optional High-res upgrade setting, off by default, for a sharper sheet on large / hi-DPI displays; when enabled it just swaps a generated sheet in over the sprite. Appreciate the details on the sprite config/layout — that's what made the sprite-first approach straightforward. |
| @@ -0,0 +1,51 @@ | |||
| name: Mosaic Poster | |||
| description: Replaces the pre-playback poster on the scene detail page with a 5x5 contact sheet (a whole-video overview) sampled evenly across the video. A button at the top-right of the poster toggles cover art <-> mosaic in one click (the choice is remembered). List and card cover art is untouched. | |||
There was a problem hiding this comment.
Description is too verbose.
There was a problem hiding this comment.
Please reformat to remove mid-sentence line breaks.
Description
Adds Mosaic Poster, a UI plugin that replaces the pre-playback scene poster with an N×N contact sheet — a whole-video overview sampled evenly across the file.
Features
Design
runPluginOperation, and served by Stash from the plugin'sui.assetsfolder — no standalone service, no fixed port. ffmpeg/ffprobe and the generated-files path are read from Stash's own configuration, so it works on any OS.Validation
node ./validate.js --ci— Validation passed.python3 (standard library only) and ffmpeg/ffprobe (Stash's bundled binaries are used automatically).LLM-assisted contribution disclosure
Per the repository's LLM policy: this plugin was written with LLM assistance (Claude). The code was human-reviewed and human-tested/validated on a live instance, and I take full responsibility for it (including license compliance).