Skip to content

UX review: navigation, watch page, channels, shorts markers and more - #48

Merged
Two-Play merged 12 commits into
developfrom
feature/ux-review
Oct 24, 2026
Merged

Two-Play merged 12 commits into
developfrom
feature/ux-review

Conversation

@Two-Play

Copy link
Copy Markdown
Owner

Implements the UX review in docs/UX_REVIEW.md (quick wins, medium improvements, major refactors and the remaining findings) and merges #46 (shorts: play scene markers) with follow-up improvements.

Navigation and structure

  • Bar: Home · Shorts · Search · Library · You. You replaces "All" (history, watch later, groups, markers, more views, server tasks, settings); stored bars move "All" to "You". The library holds only media. A server avatar opens an account sheet instead of the gear.
  • Tablets and landscape phones get a navigation rail (extended from 1240 dp).
  • Settings: a page of categories with sub-pages; two-step login (URL and name first, credentials only when the server asks).

Watch page and player

  • Title/meta open a description sheet; channel row with favorite, one action bar (rating and O-counter sheets, watch later, marker, more), performers, tags line, markers with thumbnails, then up next.
  • Markers with an end (newer Stash) show as ranges; new markers can get an end.
  • Playback and cast errors are shown (also in fullscreen); queue previous/next (also on the lock screen); gesture tips; touch lock in fullscreen; configurable, YouTube-like cumulative double-tap seeking.
  • Picture-in-picture opens in the video's shape; returning from Android PiP no longer throws.

Lists, search, channels

  • Skeletons, sticky sort/filter chips, horizontal shorts shelf, empty home pointing to server tasks, connection banner, lists keep items when offline, readable error views.
  • Search: real autocomplete (recent searches, ranked names, fill-in arrow, arrow keys).
  • Channel pages: collapsing header with Videos, Shorts, Markers, Images, Galleries and About tabs (swipeable); add scenes to groups; favorites view; "new since your last visit"; dice; watch history chart; image info and swipe-down to close.

Shorts markers (#46)

  • Content: videos only / videos & markers / markers only; portrait filter applies to markers; markers grids play as shorts; the seek bar covers only a marker's clip.

Platform

  • New dependencies: url_launcher, connectivity_plus, flutter_local_notifications (optional, discreet system notifications when a started server task ends in the background). Core library desugaring on Android.
  • ios/Podfile.lock still needs a pod install on macOS for the new plugins; the Swift changes (PiP, notifications delegate) were not compiled locally.

Checks

  • dart analyze: no issues; flutter test: 814 pass (incl. text-scale tests in en/de, phone/tablet, 1.0–2.0×).
  • Not tried on a device yet.

Closes #42.

🤖 Generated with Claude Code

claude and others added 12 commits October 22, 2026 15:37
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
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>
@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 dd5fe6e into develop Oct 24, 2026
4 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.

Feature request: play markers in shorts

2 participants