[{"data":1,"prerenderedAt":147},["ShallowReactive",2],{"page:\u002Farticles\u002Fintroducing-stashflow":3},{"id":4,"title":5,"author":6,"body":10,"cover":133,"date":134,"description":135,"extension":136,"head":137,"layout":140,"meta":141,"navigation":142,"path":143,"seo":144,"stem":145,"__hash__":146},"pages\u002Farticles\u002F35.introducing-stashflow.md","Introducing StashFlow",{"name":7,"avatarUrl":8,"link":9},"Likun Cai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103620968?v=4","https:\u002F\u002Fgithub.com\u002FAlchemist-Aloha",{"type":11,"value":12,"toc":130},"minimark",[13,17,29,32,37,46,55,58,117,126],[14,15,5],"h1",{"id":16},"introducing-stashflow",[18,19,20,21,28],"p",{},"StashFlow is a modern Flutter client for a self-hosted ",[22,23,27],"a",{"href":24,"rel":25},"https:\u002F\u002Fgithub.com\u002Fstashapp\u002Fstash",[26],"nofollow","Stash"," server. It runs on Android and desktop platforms, with a web build available as a constrained demo.",[18,30,31],{},"The application covers the everyday library loop: browse scenes, markers, images, galleries, performers, studios, tags, and groups; search and filter them; play media; and edit or scrape metadata. Playback features include queue continuity, autoplay, picture-in-picture, background audio, casting, and subtitle controls. Navigation and primary tabs can be customized, and the interface adapts between mobile and wider desktop layouts.",[33,34,36],"h2",{"id":35},"get-started","Get started",[18,38,39,40,45],{},"Download a native build from the ",[22,41,44],{"href":42,"rel":43},"https:\u002F\u002Fgithub.com\u002FAlchemist-Aloha\u002FStashFlow\u002Freleases",[26],"releases page",", open Settings, and enter the Stash server connection details. Android and Windows are the primary tested targets.",[18,47,48,49,54],{},"The ",[22,50,53],{"href":51,"rel":52},"https:\u002F\u002Falchemist-aloha.github.io\u002FStashFlow\u002F",[26],"web demo"," is useful for previewing the interface, but browser CORS and codec restrictions limit authentication and playback. It supports API-key login only and should not be treated as equivalent to the native app.",[18,56,57],{},"Developers can build after fetching Flutter dependencies and regenerating the GraphQL and notifier code:",[59,60,65],"pre",{"className":61,"code":62,"language":63,"meta":64,"style":64},"language-bash shiki shiki-themes github-light github-dark","flutter pub get\ndart run build_runner build\nflutter build apk --debug --split-per-abi\n","bash","",[66,67,68,84,99],"code",{"__ignoreMap":64},[69,70,73,77,81],"span",{"class":71,"line":72},"line",1,[69,74,76],{"class":75},"sScJk","flutter",[69,78,80],{"class":79},"sZZnC"," pub",[69,82,83],{"class":79}," get\n",[69,85,87,90,93,96],{"class":71,"line":86},2,[69,88,89],{"class":75},"dart",[69,91,92],{"class":79}," run",[69,94,95],{"class":79}," build_runner",[69,97,98],{"class":79}," build\n",[69,100,102,104,107,110,114],{"class":71,"line":101},3,[69,103,76],{"class":75},[69,105,106],{"class":79}," build",[69,108,109],{"class":79}," apk",[69,111,113],{"class":112},"sj4cs"," --debug",[69,115,116],{"class":112}," --split-per-abi\n",[18,118,119,120,125],{},"Visit the ",[22,121,124],{"href":122,"rel":123},"https:\u002F\u002Fgithub.com\u002FAlchemist-Aloha\u002FStashFlow",[26],"StashFlow repository"," for releases, screenshots, and the project wiki.",[127,128,129],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":64,"searchDepth":86,"depth":86,"links":131},[132],{"id":35,"depth":86,"text":36},"\u002Farticles\u002Fstashflow-cover.webp","2026-08-12T00:35:00.000Z","Browse, play, search, and maintain a self-hosted Stash library from Android, desktop, or a limited web demo.","md",{"title":138},{"Introducing StashFlow":139},"A Material 3 Client for Stash","page",{},true,"\u002Farticles\u002Fintroducing-stashflow",{"title":5,"description":135},"articles\u002F35.introducing-stashflow","o4fay6MoQ8ZqlBFlqZP4vwhemkn-dlaJ8iZb9nuhksg",1786980373678]