Repository navigation
Conversation
Stash generates only MP4 previews by default; the list and marker previews play the animated WebP ones, so without them nothing plays (#43). The hint under the preview switches says where to generate them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SrEMBYJG4y8EjSt16ZWcod
Blank issues are off; config.yml links private security reports and the Stash project for server bugs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Issue forms for bug reports and feature requests
Shorts settings get "Markers": off (default), with videos (taking turns) or only markers. A marker plays its scene's stream in original resolution from the marker and loops to its end (20 s without an end time) through mpv's A-B loop. With preferred tags only markers with one of them come up (Stash's marker tags criterion). Length and orientation don't apply to markers; a performer's shorts stay without them. The feed's items become Shorts (a video or a marker), keyed so a scene and its markers can both appear; "full video" opens a marker's scene at the marker. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SrEMBYJG4y8EjSt16ZWcod
Settings → Server tasks starts Stash's scan, generate, auto tag and clean, shows the job queue with progress and a stop button, and checks a random sample of scenes and markers for their WebP and MP4 previews. When the animated previews are missing it explains why and generates them. The lists' previews can now play Stash's MP4 preview instead of the WebP (Preview format), with a hint about the extra data, battery and memory. Refs #43, replaces #44. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Server tasks, preview check and MP4 video previews
Settings: hint that previews need Stash's animated WebP previews
docs/UX_REVIEW.md: UX/UI review with prioritized proposals. Quick wins from it: - Playback errors show an overlay with retry and other quality; failed casts show a snack bar - One screen reader node per tile; play/pause in the mini bar labeled - Menu button on grid tiles and shelf cards - Channel avatars show the initial instead of a person icon - Channel pages show their name in the app bar only after scrolling - Rating color as a theme token per mode; O-counter labeled - Watch later says it is stored on this device Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Home: shorts as a horizontal row, sticky sort and filter chips, skeletons instead of spinners, empty library points to server tasks - Player: rating as one accessible control with 48 dp stars, previous and next with a queue, details grow with the text size - Search: suggestions while typing, other scopes and clear filters when nothing matches - Settings: a page of categories with sub-pages - Login: URL first, credentials only when the server asks for them - Banner when the server can't be reached, reloading lists once it answers again Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Spacing, radius and overlay text tokens; scrim and badge colors in AppColors; buttons, chips, sheets, snack bars and cards styled in the theme - Tests for the main pages at 1.0, 1.5 and 2.0 text scale; shelves, tag tiles and settings dropdowns no longer overflow with large text - Lists keep their items when a reload fails because the server can't be reached - openSettings can open a sub-page (server tasks from the empty home); the search's empty state uses EmptyView's action Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Search: real completions while typing (recent searches, then ranked performer, tag, studio and scene names, typed part bold, fill-in arrow), results keep the last searched term while typing; back and Escape close the list first - Login: optional name already in the first step; first login and "Add server" show the logo, a heading and an intro - Playback errors also show in fullscreen - Lock screen and notification offer previous/next with a queue; on iOS the skip buttons give way to them - Text scale tests also in German and on a 320 dp phone; search headers wrap "see all" instead of overflowing Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Navigation: Home, Shorts, Search, Library and a new You tab (history, watch later, groups, markers, more views, settings) replacing "All"; stored bars move "All" to "You". The library holds only media. A server avatar opens an account sheet instead of the gear - Watch page: title and meta open a description sheet; channel row, one action bar (rating, O-counter, watch later, marker, more), performers, chapters, then up next - Channel pages: collapsing header with Videos, Shorts, Images, Galleries and About tabs; studio shorts and media filtered by performer or studio, also in the demo - Tablets and landscape phones get a navigation rail (extended from 1240 dp); the expanded player covers it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ge info - Rating sheet spans the full width; the O-counter opens a sheet with - and + instead of counting up with an undo snack bar - The watch page shows one line of tags with "+N" opening the description - Performer and studio pages get a Markers tab - The image viewer's info button shows the image's details Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Player: one-time gesture tips, touch lock in fullscreen, chapter thumbnails, favorite in the channel row, "Open in Stash" - Add scenes to groups or a new group from the scene menu and the player - Subscriptions view, "new since your last visit" on home, a notice when a started server task ends, and a dice for a random scene - Watch history chart (plays per week or day) in the stats - Error views explain the problem with details on demand; a blocked local network on iOS gets its own message - Previews optionally only on Wi-Fi (connectivity_plus); links open in the browser (url_launcher) - Channel tabs switch by swiping, an unzoomed image closes by swiping down, arrow keys move through the search completions - The demo filters by creation date ios/Podfile.lock still needs a pod install on macOS for the new plugins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- "Subscriptions" is now "Favorites"; the markers under the video are called markers, not chapters - "See all" sits at the end of shelf and search headers - Markers with an end (newer Stash) show as ranges in the seek bar, the marker list and grid, and new markers can get an end - Double-tap seeking adds up like YouTube: 5, 10, 20, 30, 40 s - Picture-in-picture opens in the video's shape, also for portrait videos (Android aspect updates, iOS waits for the video size) - Optional, discreet system notifications when a started server task ends in the background (flutter_local_notifications) ios/Podfile.lock still needs a pod install on macOS for the new plugins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflicts resolved: MarkerQuery keeps the channel filters and gains the shorts' tag filter; the home shelf's horizontal row picks Shorts by key; the demo filters markers by ids, performer, studio and tag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The shorts' seek bar covers only a marker's clip (relative times, seeking clamped inside, sprite frames from the absolute time) and playback that leaves the clip jumps back to its start - The seek bar is a slider for screen readers - One ShortTile for the home shelf and the channel tab, with a marker badge - Shorts settings: markers mode as a segmented button; the shorts and scene filter sheets stack their buttons with large text - Ranged markers show their range in the shorts overlay Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Shorts: the marker mode is "Content" (videos only / videos & markers / markers only); "portrait only" applies to markers too; a server that rejects the marker query leaves the videos playing - The markers grid (library and channel tab) plays its markers as shorts, from the start or from a tile's menu - Double-tap seeking can be switched off, its step set (5/10/15/30 s) and the adding up of further taps turned off - Returning from Android picture-in-picture no longer throws: the controls read fullscreen from their own context, and the PiP window no longer counts as turning the phone Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
UX review: navigation, watch page, channels, shorts markers and more
- SlidingPanel replaces the unmaintained miniplayer package: tap and drag on the collapsed bar, no gestures of its own while expanded (no more PanelTapGuard), back collapses the player, stays expanded on rotation. - Video controls ignore pointer events after they were removed mid-gesture. - Player details are built while the panel rests, kept while collapsed, laid out at their expanded height and reused during the transition. - Seek bar repaints from a ValueNotifier and rebuilds once a second. - Hidden tabs and the tab behind the open player stop their tickers. - Cheaper text shadows over the shorts. - Stash's placeholder images (default=true) are not fetched. - List previews play the MP4 preview by default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Own player panel instead of miniplayer, smoother player and shorts
…ities - Player: a scene picked in the open player remembers the one it replaces (position included); back and a new arrow in the controls' top bar return to it like on YouTube, back collapses only once the history is empty (playerHistoryProvider, NowPlayingNotifier.goBack). - Performer and studio pages: stars next to the favorite button (performerUpdate/studioUpdate rating100, the studio's through an optional query), and a favorite button on studio pages; the star picker is shared with scenes (showStarsSheet). - "New performer", "New studio" and "New group" on their lists through one create dialog (also used for tags); the new page opens afterwards. - Demo server supports the new mutations and studio ratings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The player history works like a browser's: back and forward, a newly picked video drops the way forward. Without a queue, the controls show back/forward arrows beside the play button when there is somewhere to go (the top-bar arrow is gone). - From 840 dp width the expanded video takes the left half with the scene's info below it, "Up next" or the queue on the right. Tablets no longer enter fullscreen by rotation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Back to the previous video, channel ratings and favorites, create performers/studios/groups
- The shorts tab switches between "Shorts" (videos only) and "Loops" (scene markers with the preferred tags and orientation), stored for all servers; the feed swaps in place. The former "Content" setting that mixed markers into the shorts is gone. - A marker plays an mpv EDL of only its clip, which mpv loops as a file of its own from 0; the A-B loop and the clip correction are gone. The seek bar maps the player's clip times onto the window (windowRelative). - Shorts and their tiles cover the screen only when that crops at most 30 %, else they show whole (portrait videos on landscape tablets, landscape scenes in 9:16 tiles). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The shorts/loops switch's column took the screen's height, which pulled the whole top bar to the middle. - 16:9 scene thumbnails, their previews and the markers grid's tiles show a portrait scene whole on black instead of zoomed to the width (pictureFit, shared with the shorts). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Settings → Previews & cards → Thumbnails: "Show whole" (default, the 30 % rule) or "Fill (crop)", for scene cards with their previews, marker tiles and short tiles. - A six-step tour (welcome, player, shorts vs loops, library and You, favorites and ratings, settings) follows the theme picker after the first login and opens again from Settings → About. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…side - "Full video" opens the scene where the short (or the loop's clip, from the marker's start) is, instead of the resume point or marker start. - A new seek sequence (the other side) counts from the last seek's target for 2 s, since mpv and cast devices still report the position from before it; it starts from one step again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A "What's new" sheet shows the announcements newer than the last one seen, once after an update (not after the first login, where the tour explains the app); all of them under Settings → About. Entries carry an id, not the version, which the pipeline picks only when it releases. The first entry covers everything since 1.0.0-beta.6. - README: iOS is available (TestFlight, AltStore/SideStore), the new features, and the release process as the pipeline runs it (version and build number set by CI, not by pubspec.yaml). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Loops, thumbnail fit setting, app tour
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…how more" - Eight highlights sorted by relevance up front; the other changes since 1.0.0-beta.6 behind "Show N more" (an icon per line in both lists). - Loops replace the former shorts content setting in the texts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…shorts Only the expanded player with a wide video turns on phones (AppOrientation); fullscreen fades to black, turns, then grows the video in; a playing short shows only its main actions, the rest slide in while paused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
They show again with every swipe and while the short is paused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Phones stay portrait; the player hears turns from the system (rotation lock respected), carries its video into the fullscreen pose turned with the phone and only then turns the screen (Android crossfade, iOS without animation). Turns settle for 350 ms, are ignored while locked or away, and only one fullscreen opens; leaving it sideways no longer jumps back in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…on return A long press on a chapter or a markers-grid tile offers edit (the add-marker sheet, filled, sending only changes) and delete (after asking); the demo handles both. The shorts/loops switch and info show again for a moment when the shorts page becomes visible. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What's new, fullscreen by tilting, calmer shorts, marker editing
The app fades to black, turns underneath and fades back in (the moving video turned in view on iOS; it stays available behind curtainOnlyOverride). Shorter fades and settle time, two frames instead of a fixed 200 ms after the turn, and Android cuts without its own rotation animation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fullscreen: plain black fade on both platforms, quicker
Up to standards ✅🟢 Issues
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 1.0.0-beta.7 (no label: next beta after v1.0.0-beta.6).
Merging this pushes to
mainand runs the release pipeline (GitHub release with APKs/AAB/FOSS APK/IPA, TestFlight, AltStore source).Highlights
miniplayerThe in-app "What's new" entry (id 1) covers all of this.
Checked on develop (c178487)
dart analyze: no issuesflutter test: 883 passed🤖 Generated with Claude Code