Deck Viewer

:placard: Summary An optimized single-hand gallery and image viewer for Stash that replaces the default image viewer.
:link: Repository https://github.com/Servbot91/Sakotos-Stash-Repo/tree/main/plugins/Deck%20Viewer/plugins/Deck%20Viewer
:information_source: Source URL https://raw.githubusercontent.com/Servbot91/Sakotos-Stash-Repo/main/plugins/manifest.yml
:open_book: Install How to install a plugin?

Overview

Deck Viewer is the Sakoto fork and complete re imagination of the original Image-Deck plugin. It hijacks the built in stash image viewer. It is meant to further enhance gallery and image content consumption, streamlining one handed use while providing necessary functionality for cataloging and reducing accidental clicks\swipes.

Deck Viewer was written with AI assistance (qwen3-coder:480b, and my local qwen3-coder30b) following general Dev standards and hygiene while also protecting integrity of the plugin with simple A\B testing and versioning.


Screenshots

Click to expand

Screenshot 2026-03-26 164724


Improvements

Feature Integration

  • Performer page integration. Switch Between Gallery Mode and Image Mode anytime regardless of where you are in stash even on performer pages!
  • Added Mouse wheel functionality
  • Tag images\galleries with studios, update titles, details, performer gallery tags
  • Added zoom functionality for mobile and desktop (buttons respect context ie no zoom on galleries)
  • Full mobile integration and optimization
  • One Handed browsing
  • Added Gallery support
  • Added keyboard support (strict)
  • Supports SFW Plugin
  • Integrated with default stash buttons
  • Filter your galleries\images in real time. Add exclusions, or filter for performers. It all happens server side with minimal client side stress.
  • Default Stash Image Viewer Hijacking
  • Localstorage utilized to remember states and places, persists.
  • Infinite Scroll
    • For as long as you have content. It will scroll as long as content exists, it however does not loop around.

Performance

  • Optimized for large datasets (in the millions)
  • Added ‘Chunk’ system
    • Images are locked to 50 on load for performance. Once you are nearing the end of a chunk, the next chunk is loaded. You also have the option to preload multiple chunks ahead by pressing the load next chunk feature.
    • Chunk system has a safety check to prevent backend query spam and will skip if a chunk load is in progress
    • Can manually load the next chunk via button
  • Removed bloat effects
  • Backend GraphQL is properly using stash schema

QOL Improvements

  • Server Side Filtering
  • Focused view over original card view
  • Buttons and text fade out when zoomed in
  • Single hand optimizations

Release notes


Installation

  1. Settings → Plugins → Available Plugins
  2. Add Source → Name: Sakotos Stash Repo
  3. Source URL: https://raw.githubusercontent.com/Servbot91/Sakotos-Stash-Repo/refs/heads/main/plugins/manifest.yml
  4. Click checkbox, Install
  5. Reload Plugins
1 Like

Amazing update really improved the smoothness and presentation of image viewing. I can’t wait for the metadata and tagging changes in the future :star_struck:

1 Like

Really glad you like it!

Dear Sakoto,

first of all, this is a great plugin. It’s a real pleasure to use on mobile.

However, I’m experiencing an issue:
In which resolution are the images supposed to load? In my instance, the displayed pictures are extremely low resolution, even when the source image is 6K.

Hey thanks man I appreciate that!

This is an interesting issue. It should allow the max resolution. Are you viewing an image directly by clicking the image title link? Viewing from /images? Galleries, or gallery images?

This will help me understand any possible logic issues.

When I navigate to a performer → open a gallery → and tap on an image (specifically the magnifying glass icon), only the thumbnail is being loaded instead of the full-resolution image, i guess.

This is weird I dont have the same issue.

It pulls the full reso image. Can you screenshot it and provide a plugin list? Also what happens when you try to zoom in?

Its probably best you disable all plugins besides deck viewer and see if issue persists. If it doesnt, its your plugins.

Dev Notes

This was mainly an update to flesh out features such as the Gallery Mode and metadata\taggers as well as some under the hood tweaks for better performance and consistency. Admittedly there is still a ton of work to be done under the hood as there is logic operating in places that should be consolidated into more reasonable areas. However users can expect a more responsive UI, more features, and a smoother
experience.


Features

Better UI Response

Users can expect a way smoother UI response from the previous version

Omnipotent button

No more contextual launch button, it now persists across all pages

Gallery Mode and Image Mode

You can now switch between gallery mode and image mode by clicking the text in the top left. It will switch to either content showing the newest items first.

Gallery Mode and Image Mode (Performer Page)

When on a performer page that has either galleries and images or both, you can now switch between modes and the context will update accordingly for that specific performer

Filtering

Filtering has been added and now happens server side rather than client side. This fixes the bug in the previous version that would give users a hard time when sorting and it hardly working at all. If you switch modes, your selected filters will persist from Gallery Mode to Image Mode, a bubble will appear indicating your filter that can be closed to restore the default view. Closing and reopening the Deck Viewer button your filters will persist.

When searching tags or performers in the filter screen it will fuzzy find.

You can currently filter by the following:

  • Included Tags
  • Excluded Tags
  • Included Performers
  • Excluded Perfomers

Gallery Details (Metadata)

By clicking the :information_source: emoji in gallery mode you can now expect to see a tagger. You can update a gallery title, details, Studio, performer, and its tags. Additional details such as Image count, Created Date, Updated Date, and Organized meta data is also available. The ‘view in Stash’ button now works and takes you to the gallery. Fuzzy find is enabled in this window.

Image Details (Metadata)

This button is functional now though it does not have all the options that Gallery has. To be honest, it took a long time getting gallery mode to where it is and with the mode switching plus context it became too much to do in one update. So this metadata option will remain a bit more bare-bones until the next update, but it is functional.

Going forward all release notes will be posted on the github releases → Full Release notes can be found here

Screenshots

1 Like

the deck viewer button is not showing on the menu bar in performer details page. also can you add an option to delete the photo

Works fine across 3 different systems for me.

i found the issue, as of now it loads at the last after every other plugin loads on the performer details page. can you make it load faster

Minor issue. Probably next update.

Lovely plugin. One issue I’ve noticed is upon first opening using left/right arrows to navigate you naturally progress 1 image. If you exit out and reopen an image use the arrow keys to navigate you progress from 1 to 3 to 5 to 7. Skipping every other image. If you exit again and reopen you go from image 1 to 4 to 7 to 10.

This continues to compound seemingly ad nauseum and requires a refresh of the page to reset.

1 Like

Additionally I can confirm as with another user above that across the board lower res images seem to load as opposed to the full scale image. Disabled all other plugins and the issue persists.

Interesting find. I have none of these issues on the latest build. Can you try to provide recreation steps or provide additional environment info?

I also do not have the low res issue. Thus hard for me to determine what is wrong

I think I found the issue. It has to do with the zoom level handling. I hope to finish up with Ascension next week and will start the next update for this plugin.

Really cool plugin. Just curious if you’re aware the gallery and image controls are covered up by the url bar on mobile.

Just your mobile really. What browser are you using and what device is this?

Just basic stock safari on iOS. iPhone 17 Pro Running iOS 26.3.1. Either way viewport height should be accounted for when developing, right? Even just a simple height: 100dvh; would work for this.

Maybe. Its tested within an android environment as I do not use nor test with apple products. I doubt its less so view port height and more so some legacy css cross wiring happening here.