Peek - Stash Browser

I’ll take a look at the transcoding stuff. Higher Res transcoding than the source (upscaling) IS possible, it just won’t look very good probably for most scenes. Maybe I’ll limit the options to current quality or lower. Also, I have lots of low res videos on mine, and they work with Direct Play just fine. The issue is more likely that those videos you’re trying to play use a codec not supported by your device. For instance, on my Windows machine using any browser, I cannot Direct Play HEVC videos. Stash handles the transcode a bit more seamlessly than Peek, so when Stash sees my HEVC videos, it’s a bit more “invisible” that it switched to transcoding mode, but it does. In short, yeah, there’s some things I need to adjust for transcoding, but I don’t think the nature of the issue is what you’re thinking it is.

Performer O Count is working for me. The ones that were in Scenes I had increased the count on have the totals I expect still, and increasing the count on a Scene seems to be increasing that Performer’s count as well. Are you expecting it to be pre-populated with values from your Stash? If so you’ll want to use the “Sync from Stash” feature in the Server Settings to “download” those values from your Stash

GIF images is cool, I’ll play around with that. And the Reels feature along with the other things I listed there are upcoming features, still remaining on my To-Do list.

Transcoding experience is fixed, much cleaner now. And all of the updates that were accumulating in those beta versions have been tested as well as I could, seems pretty stable, so I released alpha v1.5.0

The new UI is awesome! The auto-play is working now, but still no luck with the user content restriction.

In addition to the rating, o-counter, and favorite status, I would also add the playlists count on the scene cards.

It would also be nice to have a “hide/ignore” button on the content details. Given that the user can’t control what content is shown in their catalog, it would be nice to let them set this toggle on any entity so it is no longer recommended or shown in any query. This flagged content would only appear on a separate tab in case they need to undo the flag.

Talking about transcoding, is there any chance that we could set a GPU for that? In Stash, I was using this image: ghcr. io/feederbox826/stash-s6:hwaccel I didn’t realize that Peek was doing its own transcoding.

1 Like

Hey Polo, glad you like the new UI! I am actually working on all of those things you listed, except I hadn’t thought of the Hide/Ignore feature. That’s a really great idea. Let me get my list together, organize it by priority, and put a bit of a feature roadmap up in the original post so you can get an idea of what to expect when

1 Like

Thank you for the update!

When I tested I still have an issue with 480p or lower res video playback. when I try to play a 480p video (HEVC) on Stash it plays it smoothly and directly as it should. but with Peek it gets super slow and I assume It’s trying to transcode. in Peek all other resolutions (720p or higher) play smoothly in my experience.

Another Issue I have is - when I go to a performer page, I set the the scenes to sort by Date and in order to make this a default sorting for all performers, I click save preset and give it a name. then when I open other performer pages, the scenes I see is the other performer where I originally set the filter on. I dont know if this should behave like that ?

Okay so working backwards here, I think you’ve discovered a bug if I’m following correctly. You’re saying the Scene Grid that shows up on a Performer page like “Scenes featuring …” you’re trying to apply a default filter/sort and it’s not working. It doesn’t distinguish this Scene grid from the main Scenes page, so good find - I’ll make it distinct so that if you set a default sort/filter for the Scene Grid on a Performer page, all Performer page Scene Grids get that filter/sort.
EDIT: I just added this in 1.5.1-beta.1, seemed to work under my testing

Can you give me a bit more info about the transcode issue so I can reproduce it on my end? What kind of device and browser are you using? Apple devices with Safari can usually play HEVC directly, and some Windows installations with the codecs manually installed can play HEVC - my Windows machine cannot. Stash does its transcoding so seamlessly I didn’t even know it was doing transcoding for the longest time. And are you saying that 720p transcodes seem to be faster/smoother than 480p ones? Or just that 480p transcoding is super slow but 720p direct works fine? Looking forward to getting this working as expected for you

Yes so that bug seems to be fixed. Thanks!

I found a new bug - when you open a scene through a performer page. sometimes it wont show the correct UP Next videos and just show the Recommended videos. Also when You press Back to Scenes, It opens the same page again and then If you press Back to Scene again it goes back to performer page. so that back button acts a bit buggy for me.

In regards to the playback issue. for more context, I’m testing it on Brave Browser using Windows 11 64-bit. Same issue persists on Google Chrome. So the thing is Stash plays all my videos from 4K to 240p very smoothly in this setup without needing to transcode anything (direct stream/play) but in Peek when I play lower res videos such as 480p it gets stuck loading the video for a very long time. most of the videos I test on are HEVC codec.
So in a nutshell, I’m curious why direct play is slow in Peek in my setup.

Thanks for the helpful info, I’ll take a deep look into the performance issue you’re experiencing. That Back button issue is so annoying! I tried to fix it the other day, ended up with a lot of file changes and it was still happening, so I got frustrated and switched tasks. It’s annoying the heck out of me though so it’ll be fixed soon. I had thought I noticed sometimes an auto-generated playlist wasn’t showing up when I expected it to but wasn’t sure. Thanks as always for the feedback!

I just had a hell of a time with Github’s tag deduplication logic that resulted in an absolute mess for the latest versions of the 1.5.x series. I already had a beta version of 1.6.0 ready that enforces the Content Restrictions better, and it seemed to be an improvement during smoke testing, so I was forced to optimistically push 1.6.0 so people wouldn’t get the wonky 1.5.3 or 1.5.4 versions

Anyway, many of the things asked for in this thread and in the Github issues have been addressed, and the Upcoming Features items are accurate. I’m working on adding the “Hide Item” part of 1.6 and will publish it as 1.6.1

TLDR: 1.6.0 has been released, has a ton of improvements and should be safe to use, but the Content Restriction updates weren’t tested as thoroughly as I’d like. I will continue to work on the 1.6 series until Restricting and Hiding items is working well @discreetpolo

1 Like

Nice work! Digging the theme and overall responsiveness. I have a couple of requests specific for watching Japanese AV - 1) would love to see subtitles/captions supported in the video player, and 2) would like to display the “Studio Code” (if it exists) in the details view, and the scene cards

Great suggestions, thank you! I’ll add it to the list. I’m thrilled with every new user, because everyone has such different Stash configurations and preferences, different content, etc, so there’s a lot I don’t notice by myself!

1 Like

Yeah, captions would be great. I could never get them to work in Stash, so I had to burn them in.

Btw, the content restrictions are working now. The main problem, though, is that Collection and Galleries for the “include” filter are working as “it has all of.” So naturally, I had to unrestrict galleries because scenes do not have them.

Peek v2.0 Beta - Looking for Testers!

Hey everyone,
I’ve been working on some significant improvements to Peek and I’m looking for folks to help test before the official release. This version includes some under-the-hood changes that affect how Peek connects to your Stash server, so I want to make sure everything works smoothly across different setups.

What’s New

Setup Wizard for Stash Connection

  • First-time users now get a guided setup wizard to connect to their Stash server
  • No more manually editing environment variables for basic setup
  • Stash connection details are now stored securely in the database
  • Volume mappings to your media library is no longer required

Subtitle/Caption Support

  • VTT captions now work just like they do in Stash
  • If your scenes have captions in Stash, they’ll show up in Peek too

Video Player Improvements

  • Refactored video streaming to proxy through Peek (no more exposed API keys in browser)
  • Fixed playlist autoplay issues
  • Various stability improvements

UI Polish

  • Studio Codes now display on scene cards and scene details (when available)
  • Captions button hidden when no captions are available

How to Test

New Users:

  1. Pull the latest beta image: docker pull carrotwaxr/peek-stash-browser:beta
  2. Start Peek following the README instructions
  3. You’ll see a setup wizard - follow the steps to create your admin account and connect to Stash
  4. Let me know if you hit any snags!

Existing Users:

  1. Back up your database first (the peek-db.db file in your data directory)
  2. Pull the latest: docker pull carrotwaxr/peek-stash-browser:beta
  3. Restart your container
  4. Your existing STASH_URL and STASH_API_KEY environment variables will automatically migrate to the database
  5. Everything should work exactly as before - but let me know if it doesn’t!

What I’m Looking For

  • Does the setup wizard work smoothly for new installations?
  • Do existing installations migrate properly without issues?
  • Any problems with video playback or the new caption support?
  • General bugs or weirdness

Drop any feedback here or open an issue on GitHub. Thanks for helping test!

1 Like

Thanks for the update - I havent had time to test it much but noticed a bug in playback:
the volume bar when I press it to change the volume overlaps with the timeline and its impossible to change volume.
the timeline also when hovered has this gray low opacity background which looks a bit off.

I’ll let you know if I noticed anything else. the playback performance issues I had earlier is seemingly fixed by the way!

Thanks! I found and fixed those 2 issues pretty easily, and decided the version was working solidly in my testing last night so 2.0.0 is being released right now with these fixes!

Version 2.0.1 released! Please update to this version and not 2.0.0 which contained a breaking bug for 2.0.0-beta-* users.

Recovery Instructions for v2.0.0 Beta Testers

Who is affected: Users who installed a 2.0.0-beta version and then upgraded to v2.0.0. A bug in v2.0.0 caused the Stash server configuration to be lost during the upgrade. Your user accounts, watch history, ratings, and playlists are preserved - only the Stash connection was lost.

Symptoms: After upgrading to v2.0.0, the setup wizard appears asking you to create an admin user, even though you already have users.

Solution: Update to v2.0.1 and manually restore your Stash connection:

  1. Update to v2.0.1:

    docker pull carrotwaxr/peek-stash-browser:latest

2. Start the container (or restart if already running)

3. Open a shell inside the container:

docker exec -it <container_name> /bin/bash

4. Run this command (replace the URL and API key with your Stash server details):

sqlite3 /app/data/peek-stash-browser.db “INSERT INTO StashInstance (id, name, url, apiKey, enabled, priority, createdAt, updatedAt) VALUES (‘default’, ‘Stash’, ‘http://YOUR_STASH_IP:9999/graphql’, ‘YOUR_API_KEY’, 1, 0, datetime(‘now’), datetime(‘now’));”

5. Restart the container

docker restart <container_name>

You should now be able to log in with your existing credentials and access your Stash library.

1 Like

User-defined Carousels and Open in External Player features are available in 2.1.0-beta.2! Probably the last update until I come back from a 5-day weekend but I think it’s working pretty nicely!

1 Like

Calling all existing Peek users, and preferably at least one new one!

Beta 12 is out and I’m hoping this could be the release candidate for 3.0 proper if no major issues surface. Would really appreciate some testing before I push it as stable.

What’s New in 3.0

The big change is moving from in-memory caching to SQLite storage for your Stash library data:

  • Scalability - Tested up to 100k+ scenes without memory issues
  • Speed - Initial sync dropped from ~3.6 hours to ~3 minutes for 22k scenes
  • Persistence - Library data survives container restarts
  • Query performance - Sub-100ms response times with proper indexing

Other changes:

  • Recommendations system improvements
  • Imperial / Metric user preference for stats display and filtering (display only, DB uses metric)
  • FFmpeg transcoding system removed (was unused - Stash handles all streaming)
  • New sync progress banner in the UI
  • Incremental sync support for faster updates
  • Various filter and carousel improvements

Before You Upgrade - Back Up Your Database

Your Peek database is a single SQLite file. Back it up first:

Linux/Docker Compose:

bash
docker-compose stop peek-server
cp ./data/peek.db ./data/peek.db.backup
docker-compose start peek-server

Windows:

powershell
docker stop peek-stash-browser
copy .\data\peek.db .\data\peek.db.backup
docker start peek-stash-browser

unRAID:

Navigate to /mnt/cache/appdata/peek-stash-browser/ (or wherever your appdata lives) and copy peek.db somewhere safe.

Installing the Beta

Pull the latest beta tag:

bash
docker pull carrotwaxr/peek-stash-browser:beta

Then restart your container with this tag instead of latest.

For docker-compose users, update your image tag and run:

bash
docker-compose down
docker-compose up -d

What to Test

  • Initial sync - Watch the progress in the server logs, note any errors in logs
  • Browse your library - Scenes, performers, studios, tags, galleries
  • Filters - Try various filter combinations
  • Playback - Stream some content, check resume works
  • Performance - Does it feel snappy? Any slowdowns?

Reporting Issues

Found something broken? Please report on GitHub: GitHub · Where software is built

Include:

  • Your library size (scene count)
  • Steps to reproduce
  • Any relevant log output (`docker-compose logs peek-server`)

Thanks for testing!

1 Like

Peek v3.0.0 Released - SQLite Entity Cache

After 13 beta versions, Peek 3.0.0 is now stable!

What’s New

Version 3.0.0 is a major architectural change: your Stash library data is now stored in SQLite tables instead of in-memory. This provides:

Improvement Before After
Library size limit ~50k scenes (memory) 100k+ scenes (disk)
Sync time (22k scenes) ~3.6 hours ~3 minutes
Data persistence Lost on restart Survives restarts
Query speed Slow on large libs Sub-100ms

New Features in 3.0

  • Unit Preference - Choose metric or imperial for performer measurements
  • Comprehensive Filters - All performer attributes now filterable (career length, ethnicity, eye color, etc.)
  • Filter Chip Interactions - Click filter chips to highlight the corresponding control
  • Improved Gallery Display - Better fallback titles for unnamed galleries
  • Filename Search - Scene search now includes filepath/filename
  • Tag Alias Search - Tag search now includes aliases

Upgrading

From any previous version:

  1. Back up your database (copy peek.db from your data volume)
  2. Pull the new image: docker pull carrotwaxr/peek-stash-browser:latest
  3. Restart your container
  4. Wait for the automatic sync to complete

Your user data is fully preserved:

  • User accounts
  • Watch history & resume positions
  • Playlists
  • All ratings and favorites
  • Filter presets
  • Hidden entities

From 3.0.0 beta versions:

We recommend running a full sync after upgrading to ensure new fields are populated:

  1. Settings > Server Settings
  2. Click “Sync from Stash”
  3. Select “Full Sync”

This populates fileBasename (gallery display) and fakeTits (performer filtering) for existing data.

Breaking Changes from 2.x

  • Initial sync is required after upgrade (automatic)
  • Sync time depends on library size (see table in upgrade guide)

Documentation

Issues

Please report bugs on GitHub Issues with:

  • Your Peek version
  • Your Stash version
  • Library size
  • Steps to reproduce

Thanks to everyone who tested the beta versions!

Version 3.0.1 had a Stash sync issue involving timezones that has been fixed in 3.0.2. Users should please install this version as soon as possible. Note that it will do a full sync on first startup to bring everything up to date and have a clean start with the bug resolved