A stash plugin source — install any
plugin below directly from Settings → Plugins → Sources, or clone the
one you want and symlink it into your plugins/ folder for development.
Add this URL under Settings → Plugins → Sources:
https://org0ne.github.io/stash-plugins/stable/index.yml
Stash will list every plugin in this repo, ready to install with one click.
| Plugin | Description |
|---|---|
| collection-colors | Adds an identifying "Pill" to the scene cards and scene details. Uses the parent Library folder, which is auto-discovered — no hardcoded paths. Useful if you have Censored, Uncensored, Decensored, etc parent folders in your JAV Library |
| copy-buttons | Click-to-copy buttons for performer names, performer disambiguations, and studio codes. |
| jasna-switch | Adds a JASNA ON/OFF toggle to the scene player that swaps playback to a live Jasna restored HLS stream and back, preserving position. Stash stays stock; Jasna can run on another host. |
| jav-nfo-refresh | Refreshes Japanese-source metadata for tagged scenes from javstash.org, libredmm.com and jav321.com: original title/description into custom fields, optional English translation, scraped genres as tags, and the same data mirrored into the .nfo sidecar next to the video file. |
| jav-layout | Full Stash layout modification based on Dracula color scheme. Cards, buttons, layouts, etc are all touched and massaged into a more coherent layout. Additional nicities for JAV collectors include promoting performer names, studio codes and original titles to a more visible and prominent location whenever possible. |
| title-scrubber | Strips performer name and bracketed identifiers from scene titles. This is a very me-specific need, but it is provided as a plugin if you happen to structure your titles as {Performer name} - {[Uncensored,Censored,Decensored,etc]} Title {[Studio Code]} |
plugins/
<plugin-id>/
<plugin-id>.yml <- manifest; filename (minus .yml) IS the plugin id
<plugin-id>.js
<plugin-id>.css
README.md
LICENSE
Each plugin is self-contained and independently zipped — nothing here
requires another plugin in this repo, unless its manifest's ui.requires
says otherwise.
build_site.py scans plugins/*/, and for each plugins/<id>/<id>.yml
it finds:
- reads
name/description/versionfrom the manifest, - zips every file in that plugin's directory,
- records the zip's sha256 and the last git commit touching that directory (for the build-suffixed version and date),
- writes one
index.ymlcovering every plugin found.
.github/workflows/deploy.yml runs that on every push to main and
publishes the result to GitHub Pages — same index schema
stashapp/CommunityScripts
uses, so any stash instance that already has a source like that configured
can add this one the same way.
mkdir plugins/<new-id>and put<new-id>.yml(+.js/.cssas needed) in it — the manifest filename must match the directory name.- Add a row to the table above.
- Push to
main. The Actions workflow rebuilds and republishes the index automatically — nothing else to do.
Symlink a plugin's folder into your stash instance's plugins directory so edits land without reinstalling:
ln -s /path/to/stash-plugins/plugins/collection-colors /path/to/stash/config/plugins/collection-colorsThen in stash: Settings → Plugins → Reload Plugins after adding or renaming a file; a browser refresh alone picks up CSS/JS edits.