Commit Graph

24 Commits

Author SHA1 Message Date
Arkadiusz Fal
90c88728c4 Adapt resume action sheet layout for tvOS
Use a NavigationStack/List layout with a centered thumbnail, stacked
title, and card-styled buttons so the focus ring renders with proper
clearance on tvOS.
2026-04-18 20:38:02 +02:00
Arkadiusz Fal
a0015086a2 Use menu picker style for tvOS view options sheets 2026-04-18 20:38:02 +02:00
Arkadiusz Fal
abd432fd0e Show video title placeholder while thumbnails load 2026-04-18 20:38:02 +02:00
Arkadiusz Fal
6090454707 Use segmented picker style for tvOS grid columns count 2026-04-18 20:38:02 +02:00
Arkadiusz Fal
53144293c8 Tune tvOS media browser row layout 2026-04-18 20:38:01 +02:00
Arkadiusz Fal
546ecf632e Fix tvOS view options sheet rendering in History and other views 2026-04-18 20:38:01 +02:00
Arkadiusz Fal
5ef40e24bf Remove channel card background on tvOS and fix grid focus clipping 2026-04-18 20:38:01 +02:00
Arkadiusz Fal
6d3bea7678 Rework tvOS sources list with sidebar and full-screen add flow
Give TVSidebarDetailContainer an optional bottom action slot and use it to
show the Add Source button beside the sources list on tvOS. Switch the
Settings > Sources list from a focus-capturing List to the same
ScrollView+LazyVStack layout MediaSourcesView already uses, drop
.buttonStyle(.card) so row icons no longer clip, and bump the row
icon-to-title spacing to 24pt. Replace the sheet-based Add/Edit flow in
MediaSourcesView with navigationDestinations wrapped in the sidebar
container, and decorate each Add Source form (WebDAV, SMB, remote server,
PeerTube browse) with its own sidebar icon and title.
2026-04-18 20:38:01 +02:00
Arkadiusz Fal
033c93e542 Make Subscriptions view focusable on tvOS
Move the channel-link button and View Options into a top safe-area inset
on tvOS so they are reachable with the remote, mirroring the Continue
Watching pattern. Wrap chrome and content in focus sections with a
default-focus namespace so initial focus lands on the first video. Hide
the duplicate in-content section header on tvOS, and add
scrollClipDisabled to VideoListContainer so focus scaling on rows is
not clipped at the scroll edges.
2026-04-18 20:38:01 +02:00
Arkadiusz Fal
65724ae201 Extract TVSidebarDetailContainer to its own file
Now used by multiple tvOS tabs beyond Settings, so move it out of
SettingsView.swift into Views/Components/ where reusable view primitives
live.
2026-04-18 20:38:01 +02:00
Arkadiusz Fal
58f1b8c1ad Use two-column layout for tvOS playlist detail view 2026-04-18 20:38:01 +02:00
Arkadiusz Fal
9b55ee7127 Add tvOS setting for video click behavior 2026-04-18 20:38:01 +02:00
Arkadiusz Fal
0aac9168cb Use two-column layout for tvOS video info view
Reworks VideoInfoView on tvOS into a persistent 30% left sidebar
(thumbnail, title, channel, Play / Add to Playlist / Bookmark) with a
scrollable right pane for description, stats, comments, related, and
watch history. Reuses the player's TVScrollableDescription (refactored
to self-manage focus) so the description supports click-to-lock
scrolling, and the outer ScrollView is disabled while locked. Comments
full-screen on tvOS, with commenter avatars no longer tappable and
accent-colored link text replaced with the default foreground.
2026-04-18 20:38:01 +02:00
Arkadiusz Fal
e141a168f0 Use video context menu ControlGroup only on iOS 2026-04-18 20:38:01 +02:00
Arkadiusz Fal
84db5d0c42 Use List instead of Form for View Options on tvOS
Form inside a sheet causes clipped rows and invisible text on focused
items due to white-on-white rendering. Use a plain List on tvOS which
handles the focus styling correctly.
2026-04-18 20:38:01 +02:00
Arkadiusz Fal
310869fad8 Add horizontal padding to View Options sheet on tvOS
Prevents form rows from being cut off at the left and right edges
of the narrow tvOS sheet.
2026-04-18 20:38:01 +02:00
Arkadiusz Fal
58c3bdc0b6 Wrap View Options sheet in NavigationStack on tvOS for picker labels
The .pickerStyle(.menu) hid labels. Instead, wrap the Form in a
NavigationStack on tvOS so the default navigation picker style works
and shows both labels and values.
2026-04-18 20:38:01 +02:00
Arkadiusz Fal
338127c692 Fix disabled pickers in View Options sheet on tvOS
Use .pickerStyle(.menu) for Row Size, Columns, and Channel Strip
pickers on tvOS so they work inside a sheet without NavigationStack.
2026-04-18 20:38:01 +02:00
Arkadiusz Fal
d62ba1e143 Hide list row dividers and card clipping on tvOS
Dividers inside rows conflict with the tvOS focus highlight effect.
Remove dividers and the inset card background/clipShape on tvOS so
the focus effect renders cleanly without visual artifacts.
2026-04-18 20:38:01 +02:00
Arkadiusz Fal
a7e5ebb068 Fix 5 TestFlight crash types from builds 250-254
- Fix BGTaskScheduler assertion crash on Mac Catalyst by guarding all
  iOS background task APIs with isMacCatalystApp check
- Fix iPad popover crash in UIPopoverPresentationController by adding
  .presentationCompactAdaptation(.sheet) to all 27 confirmationDialogs
- Fix SwiftData assertion crash when accessing deleted Bookmark model
  properties during SwiftUI hit testing in BookmarkRowView
- Fix UICollectionView invalid item count crash on queue swipe-to-delete
  by using ID-based removal with withAnimation instead of stale index
- Fix Range crash in storyboard download when storyboardCount is zero
2026-04-18 20:38:00 +02:00
Arkadiusz Fal
ef3cddefeb Persist author cache to disk for instant channel info across restarts
Back the in-memory authorCache with a JSON file in ~/Library/Caches/AuthorCache/.
Disk is lazy-loaded on first lookup and saved asynchronously on each cache update.
Capped at 500 entries to prevent unbounded growth.

- Cache author data from video detail API responses (PlayerService, VideoInfoView)
- Replace ChannelView's private CachedChannelHeader with shared CachedChannelData
- Enrich author with cached avatar/subscriber count in VideoChannelRow, TVDetailsPanel, VideoInfoView
2026-04-18 20:37:25 +02:00
Arkadiusz Fal
11a8c79e21 Refactor views 2026-04-18 20:37:25 +02:00
Arkadiusz Fal
425a2c590d Fix locales 2026-04-18 20:37:25 +02:00
Arkadiusz Fal
100df744d9 Yattee v2 rewrite 2026-04-18 20:37:24 +02:00