| Summary | An optimized single-hand gallery and image viewer for Stash that replaces the default image viewer. | |
| Repository | https://github.com/Servbot91/Deck-Viewer/tree/main/plugins/Deck%20Viewer | |
| Source URL | https://raw.githubusercontent.com/Servbot91/Deck-Viewer/refs/heads/main/plugins/manifest.yml | |
| Install | How to install a plugin? |
Overview
Deck Viewer is a complete rework and reimagination of the original Image-Deck plugin and hijacks the built in stash image viewer. It is meant be used solely over the built in image viewbox and also adds a gallery viewbox. The plugin design is intended to make browsing galleries and images more streamlined and less error prone to accidental clicks\swipes and to futher optimize one hand browsing.
Deck Viewer was written with AI assistance (qwen3-coder:480b, and my local qwen3-coder30b) following general Dev standards and hygeine while also protecting integrity of the plugin with simple A\B testing and versioning.
Screenshots
Improvements
Feature Integration
- Performer page integration
- logic works properly for gallery or images selection
- Added Mouse wheel functionality
- Added zoom functionality for mobile and desktop (buttons respect context ie no zoom on galleries)
- Swipe and pinch gestures on mobile functional
- Added Gallery support and viewbox
- Galleries display performer name and image count and clicking\selecting them will open the respective gallery
- Added keyboard support (strict)
- Supports SFW Plugin
- Default Image Viewer Hijacking
- 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 particles and effects and buttons such as strobe.
- Further reduced code stack (needs further improvement)
- Backend GraphQL is properly using stash schema rather than guessing
QOL Improvements
- Respects filter context
- Note: For the most part, it will not work if you have an exclusion in front of your inclusion meaning the INCLUDE must come before the EXCLUDE or no exclude at all for it to properly function. If an include is after another include, it should work.
- Split up the image-deck.js into a more manageable format
- button.js
- config.js
- context.js
- controls.js
- deck.js
- graphql.js
- main.js
- metadata.js
- styles.css
- swiper.js
- ui.js
- utils.js
- When in a gallery, it will remember where you left off
- Minor disclaimer here, if the ‘remembered item’ is not within the chunk it will default to the first in the list (title sort)
- Focused view over original card view (no more cards behind cards)
- Buttons and text fade out when zoomed in
Release notes
- 3-26-2026 - Full version 1.0 release notes
Installation
- Settings → Plugins → Available Plugins
- Add Source → Name: Deck Viewer
- Source URL: https://github.com/Servbot91/Deck-Viewer/raw/refs/heads/main/plugins/manifest.yml
- Click checkbox, Install
- Reload Plugins
Known issues
- Zoom buttons appear for galleries if swiping on mobile/desktop past the 10th display (doesnt appear if clicking buttons)
- Filter exclusion issue mentioned in QOL Improvements
- When using keyboard keys on desktop, you will get a console error related to the chunk system. This is a minor bug IMO as the safety logic continues to the core functionality without interruption. At worse you dont preload a chunk until you reach the end. Clicking the nav buttons the chunk system works without issue. This does not cause performance overhead, and is technically a performance improvement though it will be addressed.
- CSS stylesheet needs to be cleaned up
- additional code cleanup needs to be performed
- Metadata use and tagging is very barebones for now, will be modified at a later time




