Stash Android Player

:placard: Summary A native Android companion app for your self-hosted Stash library. Browse, search, queue, swipe through Shorts, and watch your scenes from a phone or tablet with a dark, thumbnail-first Jetpack Compose UI and gesture-friendly Media3 playback.
:link: Repository https://github.com/gomeng-dev/stash-player-android
:package: Latest release https://github.com/gomeng-dev/stash-player-android/releases

Features

Stash Android Player is a mobile-first Android client for Stash.

It connects directly to your own Stash server and is designed for browsing, organizing, and watching your library on a phone or tablet without a hosted backend or third-party sync service.

  • Native Android app built with Kotlin and Jetpack Compose
  • Direct connection to your self-hosted Stash server
  • API key, username/password login, and session-based authentication support
  • Home screen for continuing playback, opening local lists, and jumping back into watching
  • Explore screen that combines browsing and searching in one mobile-first UI
  • Filter browsing by tags, date, duration, rating, watched state, resolution/media quality, file type, random/shuffle, and saved filters
  • Grid/list display options and multi-select actions for common library workflows
  • Shorts feed for vertically swiping through shorter scenes with local feedback
  • Media3/ExoPlayer-based scene playback
  • Gesture-friendly player controls:
    • tap to show/hide controls
    • double-tap seek
    • horizontal scrub
    • side brightness/volume gestures
    • long-press speed hold
    • fullscreen lock mode
    • stream selection
    • subtitle support
    • picture-in-picture support
    • previous/next and playlist navigation
    • orientation and aspect-ratio controls
  • Watch page with video, metadata, tags, rating, actions, similar videos, and recommendations
  • Local Favorites, Watch Later, playback queue, playback history, and Shorts feedback stored on-device
  • Optional integration with Stash Hybrid Recommendations
  • Falls back to Stash recommendation data when the plugin is not available
  • Privacy-focused:
    • your server URL, credentials, session data, and local lists stay on your device
    • debug logs redact sensitive authentication material
    • optional privacy controls such as hiding the app preview from Android recents
    • optional device authentication app lock

Installation

  1. Open the latest release page:

    Releases ยท gomeng-dev/stash-player-android ยท GitHub

  2. Download the APK attached to the latest release.

  3. Install the APK on an Android 10+ device.

  4. Launch Stash Android Player.

  5. Enter your Stash server URL and choose the authentication method used by your server.

For best results, use HTTPS when connecting over networks you do not fully control.

What you need

  • Android 10 or newer
  • A Stash server reachable from your phone
  • One connection method:
    • trusted local server without authentication
    • Stash API key
    • Stash username/password login
  • Optional: Stash Hybrid Recommendations plugin for richer similar-video recommendations

A separate legacy recommendation HTTP server is not required for the default recommendation path.

Screenshots

2 Likes

Changes / ๋ณ€๊ฒฝ ์‚ฌํ•ญ

1.4.0

  • Reworked the player chrome toward a screenshot-style layout with title/tool controls at the top and seek/transport/action controls at the bottom.
  • Moved automatic player orientation control out of Settings and into the player controls while keeping the existing saved preference.
  • Kept compact bar phones locked to portrait outside fullscreen player mode, even when sensor orientation is enabled.
1 Like

Changes / ๋ณ€๊ฒฝ ์‚ฌํ•ญ

1.5.2

  • Fixed device authentication app lock activation when the app uses an in-app language context, so the biometric/device-credential prompt can still open from Settings.

1.5.1

  • Fixed the device authentication app lock option so devices with weak biometric enrollment or device credentials can enable and use app lock.

1.5.0

  • Added the Shorts tab with vertical swipe playback, prewarm, full-surface play/pause gestures, seek controls, long-press speed hold, delete actions, and configurable maximum clip duration.
  • Added Shorts recommendation learning from likes, not-interested feedback, watch outcomes, and liked-anchor Hybrid/GraphQL similarity signals, plus a Settings reset action.
  • Merged Browse and Search into one Explore tab and reserved the center tab for Shorts.
  • Added a Home recommended videos row powered by Shorts likes, Favorites, Hybrid/GraphQL similarity, and a broader whole-library candidate pool.
  • Added in-app update checks with changelist viewing and APK download/install handoff from Support.
  • Preserved password-based Stash sessions across app restarts by storing the login material needed to refresh the session cookie.
  • Refreshed the forum post, README copy, and screenshots for the current app shape.

Latest APK: Releases ยท gomeng-dev/stash-player-android ยท GitHub


ํ•œ๊ตญ์–ด ์š”์•ฝ

  • Shorts ํƒญ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ธ๋กœ ์Šค์™€์ดํ”„ ์žฌ์ƒ, prewarm, ์ „์ฒด ํ™”๋ฉด play/pause ์ œ์Šค์ฒ˜, seek controls, ๋กฑํ”„๋ ˆ์Šค ๋ฐฐ์†, ์‚ญ์ œ, ์ตœ๋Œ€ ๊ธธ์ด ์„ค์ •์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • Shorts ์ข‹์•„์š”/๊ด€์‹ฌ์—†์Œ/์‹œ์ฒญ ๊ฒฐ๊ณผ์™€ Hybrid/GraphQL ์œ ์‚ฌ๋„ ์‹ ํ˜ธ๋ฅผ ์ด์šฉํ•œ ์ถ”์ฒœ ํ•™์Šต์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Browse์™€ Search๋ฅผ ํ•˜๋‚˜์˜ Explore ํƒญ์œผ๋กœ ํ†ตํ•ฉํ•˜๊ณ  ์ค‘์•™ ํƒญ์„ Shorts๋กœ ๋ฐฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Home ์ถ”์ฒœ ์˜์ƒ ์„น์…˜, ์•ฑ ๋‚ด ์—…๋ฐ์ดํŠธ ํ™•์ธ, ๋ณ€๊ฒฝ ๋‚ด์—ญ ๋ณด๊ธฐ, APK ๋‹ค์šด๋กœ๋“œ/์„ค์น˜ ์—ฐ๊ฒฐ ํ๋ฆ„์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ID/๋น„๋ฐ€๋ฒˆํ˜ธ ๊ธฐ๋ฐ˜ Stash ์„ธ์…˜์ด ์•ฑ ์žฌ์‹œ์ž‘ ํ›„์—๋„ ๋ณต๊ตฌ๋˜๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๊ธฐ ์ธ์ฆ ์•ฑ ์ž ๊ธˆ ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ 1.5.1/1.5.2์—์„œ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Forum ์†Œ๊ฐœ๊ธ€, README, ์Šคํฌ๋ฆฐ์ƒท์„ ์ตœ์‹  ์•ฑ ๊ตฌ์กฐ์— ๋งž์ถฐ ๊ฐฑ์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Update / ์—…๋ฐ์ดํŠธ: 1.6.0

Stash Android Player 1.6.0 is now available:

Changes

  • Added a native Gallery tab with GraphQL-backed gallery browsing, detail photo grids, full-screen photo viewing, zoom/pan gestures, preloading, and Web-parity toolbar controls.
  • Added a global Image browsing mode with sort/random/page-size/display controls, ImageFilterType GraphQL filtering, saved/recent image filters, and Gallery/Image mode persistence.
  • Expanded photo-viewer controls with slideshow, display mode, rating and O-count actions, linked gallery access, appreciation mode, compact bottom chrome, and detail rows including the image path.
  • Improved Gallery/Image metadata parsing and display fallbacks, including privacy-safe basename titles, decoded filenames, VisualFile field selections, count fields, and retained toolbar/filter preferences.
  • Fixed Stash GraphQL VisualFile selections and preserved user-chosen HTTP Stash auth behavior.

ํ•œ๊ตญ์–ด ์š”์•ฝ

  • GraphQL ๊ธฐ๋ฐ˜ ๋„ค์ดํ‹ฐ๋ธŒ Gallery ํƒญ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐค๋Ÿฌ๋ฆฌ ํƒ์ƒ‰, ์ƒ์„ธ ์‚ฌ์ง„ ๊ทธ๋ฆฌ๋“œ, ์ „์ฒด ํ™”๋ฉด ์‚ฌ์ง„ ๋ทฐ์–ด, ์คŒ/ํŒฌ, ๋‹ค์Œ ์ด๋ฏธ์ง€ preloading, Web parity ํˆด๋ฐ”๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์—ญ Image ํƒ์ƒ‰ ๋ชจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ •๋ ฌ/๋žœ๋ค/ํŽ˜์ด์ง€ ํฌ๊ธฐ/ํ‘œ์‹œ ๋ชจ๋“œ, ImageFilterType ํ•„ํ„ฐ, ์ €์žฅ/์ตœ๊ทผ ์ด๋ฏธ์ง€ ํ•„ํ„ฐ, Gallery/Image ๋ชจ๋“œ ์ €์žฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์ง„ ๋ทฐ์–ด์— ์Šฌ๋ผ์ด๋“œ์‡ผ, ํ‘œ์‹œ ๋ชจ๋“œ, ๋ณ„์ /O-count ์กฐ์ž‘, ์—ฐ๊ฒฐ ๊ฐค๋Ÿฌ๋ฆฌ ์ ‘๊ทผ, ๊ฐ์ƒ ๋ชจ๋“œ, compact ํ•˜๋‹จ ํฌ๋กฌ, ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์ƒ์„ธ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Gallery/Image ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ‘œ์‹œ, ํŒŒ์ผ๋ช… fallback, VisualFile selection, count ํ•„๋“œ, HTTP Stash ์ธ์ฆ ๋™์ž‘์„ ๋‹ค๋“ฌ์—ˆ์Šต๋‹ˆ๋‹ค.

Update / ์—…๋ฐ์ดํŠธ: 1.7.3

Stash Android Player 1.7.3 is now available: GitHub Release

English

Highlights since the previous forum update:

  • Added Simplified Chinese and Traditional Chinese app language options, plus localized README files.
  • Added Settings access to Stashโ€™s โ€œcreate galleries from folders containing imagesโ€ server option, with a guarded library scan action.
  • Refined Gallery/Image browsing around folder-backed galleries: blank gallery titles now fall back to the server folder name, the old custom image-folder grouping mode was removed, and Images display modes are now simpler Grid/Wall options.
  • Fixed a Home tab crash caused by localized quick-action label collisions.
  • Fixed playlist playback when a sceneโ€™s saved resume position is already at the watched threshold, so it restarts from the beginning instead of immediately auto-advancing.
  • Fixed the public release workflow so localized README files are included in the sanitized public source snapshot.

ํ•œ๊ตญ์–ด

์ด์ „ ํฌ๋Ÿผ ์—…๋ฐ์ดํŠธ ์ดํ›„ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

  • ์•ฑ ์–ธ์–ด์— ์ค‘๊ตญ์–ด ๊ฐ„์ฒด/๋ฒˆ์ฒด ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์ค‘๊ตญ์–ด README๋„ ํ•จ๊ป˜ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์„ค์ •์—์„œ Stash ์„œ๋ฒ„์˜ โ€œ์ด๋ฏธ์ง€๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํด๋”๋กœ๋ถ€ํ„ฐ ๊ฐค๋Ÿฌ๋ฆฌ ์ƒ์„ฑโ€ ์˜ต์…˜์„ ํ™•์ธ/๋ณ€๊ฒฝํ•˜๊ณ , ํ™•์ธ ๋ชจ๋‹ฌ ๋’ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์Šค์บ”์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํด๋” ๊ธฐ๋ฐ˜ ๊ฐค๋Ÿฌ๋ฆฌ ํ‘œ์‹œ๋ฅผ ๋‹ค๋“ฌ์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ๋ชฉ์ด ๋น„์–ด ์žˆ์œผ๋ฉด ์„œ๋ฒ„ ํด๋” ์ด๋ฆ„์„ fallback์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ , ๋ณ„๋„ ์ด๋ฏธ์ง€ ํด๋” ๊ทธ๋ฃน ๋ชจ๋“œ๋Š” ์ œ๊ฑฐํ–ˆ์œผ๋ฉฐ, Images ํ‘œ์‹œ ๋ชจ๋“œ๋Š” Grid/Wall๋กœ ๋‹จ์ˆœํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜„์ง€ํ™”๋œ ๋น ๋ฅธ ์‹คํ–‰ ๋ผ๋ฒจ์ด ๊ฒน์น  ๋•Œ Home ํƒญ์ด ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋˜ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์žฌ์ƒ๋ชฉ๋ก์—์„œ ์ €์žฅ๋œ ์ด์–ด๋ณด๊ธฐ ์œ„์น˜๊ฐ€ ์ด๋ฏธ ์‹œ์ฒญ ์™„๋ฃŒ ๊ธฐ์ค€์— ๋„๋‹ฌํ•œ ์˜์ƒ์€ ๋‹ค์Œ ํ•ญ๋ชฉ์œผ๋กœ ๋ฐ”๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์ƒ๋˜๋„๋ก ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณต๊ฐœ ๋ฆด๋ฆฌ์ฆˆ workflow๊ฐ€ ์ •๋ฆฌ๋œ ๊ณต๊ฐœ ์†Œ์Šค ์Šค๋ƒ…์ƒท์— ํ˜„์ง€ํ™” README ํŒŒ์ผ์„ ํฌํ•จํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

Signed APK and SHA256 checksum are available on the release page.

Update / ์—…๋ฐ์ดํŠธ: 1.8.0

Stash Android Player 1.8.0 is now available: GitHub Release

Highlights since the previous forum update (1.7.3 โ†’ 1.8.0):

English

  • Gallery continuity: preserved Gallery detail photo-grid loaded pages and scroll position when returning from the photo viewer, with a reset when switching to another gallery. A follow-up 1.7.5 release aligned the public version metadata and APK assets.
  • Photo viewer polish: appreciation mode now hides the top bar for cleaner image viewing, while the toggle remains available from the compact tools rail. The page-change HUD was also moved to the bottom edge so it covers less of the image.
  • Playback performance and controls: active-video preloading now uses a larger ExoPlayer forward buffer and an app-cache-backed media data source for better repeat/nearby seeks. Playback settings now include configurable long-press fast-forward speed and an option to swap the left/right brightness and volume side-drag gestures.
  • Shorts recommendations: client-side recommendation refresh now downranks recent local interactions and safely reranks only the tail when liked-scene similarity scores arrive, without changing the Settings-owned max-duration filter.
  • Browse/Explore filters: added a Scene O-Count comparator filter across Browse/Explore, saved/recent filters, active chips, and Stash GraphQL scene queries. Also fixed the O-Count clear action label.
  • Docs/release polish: refreshed the public README around the end-user install/viewing experience, added a polished screenshot hero, and updated localized release references.

ํ•œ๊ตญ์–ด

  • ๊ฐค๋Ÿฌ๋ฆฌ ์—ฐ์†์„ฑ: ์‚ฌ์ง„ ๋ทฐ์–ด์—์„œ ๋Œ์•„์˜ฌ ๋•Œ ๊ฐค๋Ÿฌ๋ฆฌ ์ƒ์„ธ ์‚ฌ์ง„ ๊ทธ๋ฆฌ๋“œ์˜ ์ถ”๊ฐ€ ๋กœ๋“œ ํŽ˜์ด์ง€์™€ ์Šคํฌ๋กค ์œ„์น˜๋ฅผ ์œ ์ง€ํ•˜๊ณ , ๋‹ค๋ฅธ ๊ฐค๋Ÿฌ๋ฆฌ๋กœ ์ด๋™ํ•˜๋ฉด ํ•ด๋‹น ์œ„์น˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ›„์† 1.7.5 ๋ฆด๋ฆฌ์ฆˆ์—์„œ๋Š” ๊ณต๊ฐœ ๋ฒ„์ „ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ APK ์ž์‚ฐ์„ ๋งž์ท„์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์ง„ ๋ทฐ์–ด ๊ฐœ์„ : ๊ฐ์ƒ ๋ชจ๋“œ์—์„œ ์ƒ๋‹จ๋ฐ”๋ฅผ ์ˆจ๊ฒจ ์ด๋ฏธ์ง€๋ฅผ ๋” ๊น”๋”ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๊ณ , ๊ฐ์ƒ ๋ชจ๋“œ ํ† ๊ธ€์€ ํ•˜๋‹จ compact tools rail์—์„œ ๊ณ„์† ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ๋ณ€๊ฒฝ HUD๋„ ํ•˜๋‹จ ๊ฐ€์žฅ์ž๋ฆฌ๋กœ ๋‚ด๋ ค ์ด๋ฏธ์ง€ ๊ฐ€๋ฆผ์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

  • ์žฌ์ƒ ์„ฑ๋Šฅ/์ปจํŠธ๋กค: ํ˜„์žฌ ์žฌ์ƒ ์˜์ƒ์— ๋” ํฐ ExoPlayer ์„ ํ–‰ ๋ฒ„ํผ์™€ ์•ฑ ์บ์‹œ ๊ธฐ๋ฐ˜ ๋ฏธ๋””์–ด ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์ ์šฉํ•ด ๋ฐ˜๋ณต/๊ทผ์ ‘ seek ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. ๊ธธ๊ฒŒ ๋ˆ„๋ฅด๊ธฐ ๋นจ๋ฆฌ๊ฐ๊ธฐ ๋ฐฐ์† ์„ค์ •๊ณผ ์ขŒ์šฐ ๊ฐ€์žฅ์ž๋ฆฌ ๋ฐ๊ธฐ/์Œ๋Ÿ‰ ๋“œ๋ž˜๊ทธ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋Š” ์„ค์ •๋„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Shorts ์ถ”์ฒœ: ์ตœ๊ทผ ๋กœ์ปฌ ์ƒํ˜ธ์ž‘์šฉ์€ ์ˆœ์œ„์—์„œ ๋‚ฎ์ถ”๊ณ , ๋น„๋™๊ธฐ๋กœ ๋„์ฐฉํ•œ ์ข‹์•„์š” ๊ธฐ๋ฐ˜ ์œ ์‚ฌ๋„ ์ ์ˆ˜๋Š” ์„ค์ •์˜ ์ตœ๋Œ€ ๊ธธ์ด ํ•„ํ„ฐ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์€ ์ฑ„ ์•ˆ์ „ํ•œ tail๋งŒ ์žฌ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

  • Browse/Explore ํ•„ํ„ฐ: ๋‘˜๋Ÿฌ๋ณด๊ธฐ/ํƒ์ƒ‰, ์ €์žฅ/์ตœ๊ทผ ํ•„ํ„ฐ, ํ™œ์„ฑ ์นฉ, Stash GraphQL ์˜์ƒ ์กฐํšŒ์— Scene O-Count ๋น„๊ต ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. O-Count ํ•ด์ œ ๋ฒ„ํŠผ ๋ฌธ๊ตฌ๋„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์„œ/๋ฆด๋ฆฌ์ฆˆ ์ •๋ฆฌ: ๊ณต๊ฐœ README๋ฅผ ์„ค์น˜/๊ฐ์ƒ ์‚ฌ์šฉ์ž ๊ด€์ ์œผ๋กœ ๋‹ค๋“ฌ๊ณ , ์Šคํฌ๋ฆฐ์ƒท ํžˆ์–ด๋กœ์™€ ํ˜„์ง€ํ™” ๋ฆด๋ฆฌ์ฆˆ ํ‘œ๊ธฐ๋ฅผ ๊ฐฑ์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • APK: https://github.com/gomeng-dev/stash-player-android/releases/download/v1.8.0/stash-player-android-v1.8.0.apk

  • SHA256: b17023dbaf9d7d122edfde2887d72f55a7d747efc9859e99f136f3899664b1ec