Skip to content

Release 1.0.0-beta.7 - #54

Merged
Two-Play merged 41 commits into
mainfrom
develop
Oct 27, 2026
Merged

Two-Play merged 41 commits into
mainfrom
develop

Conversation

@Two-Play

Copy link
Copy Markdown
Owner

Release 1.0.0-beta.7 (no label: next beta after v1.0.0-beta.6).

Merging this pushes to main and runs the release pipeline (GitHub release with APKs/AAB/FOSS APK/IPA, TestFlight, AltStore source).

Highlights

  • New navigation: Home · Shorts · Search · Library · You
  • Loops: scene markers as repeating shorts, switchable in the Shorts tab
  • New watch page with one action bar (rating, O-counter, watch later, marker, more); own player panel instead of miniplayer
  • Search suggestions while typing
  • YouTube-style cumulative double-tap seeking (configurable)
  • Back/forward through opened videos; tablet player layout
  • Performer/studio pages with tabs (videos, shorts, markers, images, galleries, about), ratings and favorites
  • Favorites tab, "new since your last visit", server tasks, preview check, notifications
  • Phones stay portrait; tilting with a wide video enters fullscreen (black fade)
  • Edit/delete markers with a long press; marker ranges on newer Stash
  • What's new sheet after updates and an app tour after the first login

The in-app "What's new" entry (id 1) covers all of this.

Checked on develop (c178487)

  • dart analyze: no issues
  • flutter test: 883 passed
  • l10n and GraphQL codegen up to date

🤖 Generated with Claude Code

claude and others added 30 commits October 21, 2026 09:52
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>
Two-Play and others added 11 commits October 25, 2026 21:39
- 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
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@Two-Play
Two-Play merged commit 74c94d9 into main Oct 27, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants