Commit Graph

2515 Commits

Author SHA1 Message Date
github-actions[bot]
afa231e68d Bump build number to 256 2.0.0-256 2026-03-28 14:17:43 +00:00
Arkadiusz Fal
d5579d9a46 Fix GitHub release job: use REPO_TOKEN for checkout auth 2026-03-28 15:07:14 +01:00
Arkadiusz Fal
ca895e7346 Update changelog 2026-03-28 14:38:07 +01:00
Arkadiusz Fal
00efe6f42c Update dependencies 2026-03-28 14:37:59 +01:00
Arkadiusz Fal
44f3cbb9f3 Deduplicate time formatting and clean up unused code
Extract shared TimeInterval.formattedAsTimestamp replacing 8 identical
formatTime/formattedTime implementations across player views. Remove
unused currentTime parameter from GestureSeekPreviewView. Consolidate
duplicated geometry math in MacOSControlBar into seekPreviewPosition().
2026-03-28 14:09:25 +01:00
Arkadiusz Fal
e50817c043 Add separate glass capsule for chapter title above seek preview
Extract chapter title from inside the storyboard preview into a
standalone ChapterCapsuleView with its own glass capsule background.
The capsule follows the seek position horizontally but independently
clamps to screen edges using alignmentGuide, allowing it to be wider
than the storyboard thumbnail without going offscreen.
2026-03-28 14:00:48 +01:00
Arkadiusz Fal
3d1974930b Fix missing leading padding on instance content section headers 2026-03-28 13:27:04 +01:00
Arkadiusz Fal
f7fdc314f6 Show seek time preview when no storyboards available
Display a floating time pill above the seek bar during dragging
(iOS) and dragging/hovering (macOS) when video has no storyboard
thumbnails. Includes chapter name when available.
2026-03-28 13:18:02 +01:00
Arkadiusz Fal
3c04b8540f 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-03-27 17:52:08 +01:00
Arkadiusz Fal
2db78c429e Fix HTTP basic auth credentials being stripped from instance URLs
Preserve user:pass credentials in instance URLs so Invidious instances
behind nginx reverse proxies with HTTP basic auth work correctly (#926).
Add displayURL property to mask credentials in the UI.
2026-03-27 17:12:04 +01:00
Arkadiusz Fal
8a54e1ddbb Fix tests 2026-03-21 09:56:25 +01:00
Arkadiusz Fal
fced75fce1 Hide theme and accent color settings on tvOS
These settings don't work well on Apple TV, so exclude the
ThemeSection, AccentColorSection, and the .preferredColorScheme/.tint
modifiers from tvOS builds.
2026-02-25 22:37:01 +01:00
Arkadiusz Fal
0fdac499bb Fix ContentUnavailableView centering on Apple TV
On tvOS, ContentUnavailableView inside a Group doesn't expand to fill
available space — it sizes to content and aligns top-leading. Add
.frame(maxWidth: .infinity, maxHeight: .infinity) to all instances
so they center correctly in their parent containers.
2026-02-25 21:48:59 +01:00
Arkadiusz Fal
f14ed4c2cb Update packages 2026-02-25 21:34:53 +01:00
Arkadiusz Fal
451fb3df26 Fix HomeView data staleness on new watch entries, tab switches, and settings dismissal
Post watchHistoryDidChange notification when a new watch entry is inserted
during local playback progress updates (but not on every progress tick).
Reload Home data when switching back to the Home tab and when the Customize
Home sheet is dismissed.
2026-02-23 17:31:47 +01:00
Arkadiusz Fal
caa19a742b Fix Home view showing zero counts after returning from background
onAppear only fires once when the view first appears, not on foreground
return. Add scenePhase observer to reload data when the app becomes active.
2026-02-23 13:22:31 +01:00
github-actions[bot]
78f0268342 Bump build number to 254 2.0.0-254 2026-02-20 19:46:46 +00:00
Arkadiusz Fal
47ff162735 Update changelog 2026-02-20 20:32:15 +01:00
Arkadiusz Fal
ac0df38191 Migrate localization keys to dotted format
Remove 32 non-dotted keys (16 unused format specifiers, 16 word keys)
and replace with properly namespaced dotted keys following the existing
convention (common.*, player.*, search.*).
2026-02-20 20:29:55 +01:00
Arkadiusz Fal
4f5781bc20 Show toolbar buttons and tab picker during channel loading
Display the view options button, channel menu, and content type tabs
immediately when the cached header is shown, instead of waiting for
the full channel data to load. The spinner now appears only in the
content area below the tabs.
2026-02-20 20:14:01 +01:00
Arkadiusz Fal
13614e7fa0 Fix CFNetwork SIGABRT crash when creating download tasks on invalidated session
The background URLSession could be in an invalid state when downloadTask(with:)
is called, because invalidateAndCancel() is asynchronous internally. This adds
an ObjC exception handler to catch NSExceptions from CFNetwork, nil guards on
the session, and safer session lifecycle management (nil after invalidation,
finishTasksAndInvalidate for cellular toggle).
2026-02-19 17:25:14 +01:00
Arkadiusz Fal
357852fbd9 Fix BGTaskScheduler crash by moving registration to App.init()
Apple requires BGTaskScheduler.register() to be called during the app
launch sequence before the run loop starts. Moving it from .onAppear
(too late) to init() prevents the crash on TestFlight builds.
2026-02-19 15:05:23 +01:00
Arkadiusz Fal
5f304ceb5c Apply Invidious proxy rewriting to download streams
Downloads were using direct YouTube CDN URLs even when proxiesVideos
was enabled. Apply the same proxyStreamsIfNeeded used by the player
to the download code path in ContentService.
2026-02-18 20:59:12 +01:00
Arkadiusz Fal
d8f9d24a82 Fix Piped relatedStreams decoding crash on missing fields
Malformed items in relatedStreams (e.g., missing title) no longer crash
the entire JSON decode. Reuses the existing PipedVideoItem (renamed from
PipedPlaylistItem) graceful-decoding wrapper for all relatedStreams arrays
in PipedStreamResponse, PipedChannelResponse, and PipedNextPageResponse.
2026-02-18 10:29:35 +01:00
Arkadiusz Fal
c8b4ae5422 Add video proxy support with live toggle for Invidious/Piped instances
Adds a "Proxy videos" toggle in instance settings that routes video
streams through the instance instead of connecting directly to YouTube
CDN. Includes auto-detection of 403 blocks and live re-application of
proxy settings without requiring app restart or video reload.
2026-02-16 19:41:22 +01:00
Arkadiusz Fal
1fa6d7a4a5 Remove duplicate navigation titles on tvOS
The sidebarAdaptable TabView already shows tab names in the sidebar
pill, so the large .navigationTitle() was redundant on tvOS.
2026-02-16 19:41:22 +01:00
Arkadiusz Fal
08c544d161 Fix tvOS onboarding background transparency and button styling
Add opaque black background to onboarding on tvOS to prevent Home
screen content from leaking through the fullScreenCover. Replace
toolbar Skip button with plain overlay button to avoid blurred
material style, and add tvOS card button style with default focus
on Continue button.
2026-02-16 19:41:22 +01:00
github-actions[bot]
942f7da090 Bump build number to 253 2.0.0-253 2026-02-13 21:35:55 +00:00
Arkadiusz Fal
35e38a03ba Skip build number commit when already up to date
The release job fails when the build number in the repo already matches
the computed value, causing git commit to exit with code 1 on an empty
changeset. Now we check for staged changes before committing.
2026-02-13 22:22:47 +01:00
Arkadiusz Fal
f973f3cd91 Revert app icon name to Yattee2 for Icon Composer
The Yattee2.icon/ Icon Composer file is the correct source for app
icons. The previous change to AppIcon was incorrect — AppIcon.appiconset
is an empty legacy placeholder with no actual PNGs.
2026-02-13 22:10:59 +01:00
Arkadiusz Fal
e5cc5c6d13 Use macos-26 runner for Xcode 26 SDK support
iOS 26 APIs (matchedTransitionSource on ToolbarContent, etc.) require
the Xcode 26 SDK which is only available on macos-26 runners.
2026-02-13 21:51:45 +01:00
Arkadiusz Fal
71f881a580 Fix app icon name to match asset catalog
ASSETCATALOG_COMPILER_APPICON_NAME was set to "Yattee2" but the
asset catalog only has "AppIcon.appiconset".
2026-02-13 21:43:11 +01:00
Arkadiusz Fal
cd096e6235 Set code_sign_identity in update_code_signing_settings
Without explicit identity, xcodebuild defaults to "iOS Development"
which doesn't exist on CI. Set "Apple Distribution" for App Store
builds and "Developer ID Application" for notarized builds.
2026-02-13 21:37:02 +01:00
Arkadiusz Fal
895aca267a Use fastlane update_code_signing_settings for manual signing
Replaced sed-based CODE_SIGN_STYLE override with fastlane's
update_code_signing_settings which also sets PROVISIONING_PROFILE_SPECIFIER.
This fixes the YatteeShareExtension build failure where it couldn't
find a provisioning profile under manual signing.
2026-02-13 21:19:16 +01:00
Arkadiusz Fal
16609aa649 Skip GitHub release when any build job fails
Adding !failure() check so skipped builds (not selected) still allow
the release, but actual build failures block it.
2026-02-13 20:54:12 +01:00
github-actions[bot]
d1a0adbea0 Bump build number to 252 2.0.0-252 2026-02-13 19:50:41 +00:00
Arkadiusz Fal
02c0b637cb Fix build number file path and remove update_fastlane in CI
- Write latest_build_number.txt to repo root using explicit path
  (fastlane runs from fastlane/ subdir, so relative path was wrong)
- Remove update_fastlane from before_all to avoid CI instability
2026-02-13 20:46:21 +01:00
Arkadiusz Fal
49b8599a67 Fix release workflow by updating Ruby from 3.1 to 3.4
Ruby 3.1 is EOL and bundle install fails with exit code 5 on
latest macOS runners. Updated to match .ruby-version (3.4.8).
2026-02-13 20:40:40 +01:00
Arkadiusz Fal
8379006630 Update CHANGELOG 2026-02-13 20:21:24 +01:00
Arkadiusz Fal
6855210608 Fix release workflow to support non-main branches 2026-02-13 20:16:04 +01:00
Arkadiusz Fal
c339597f8a Add git-cliff based changelog generator
Bash wrapper around git-cliff with cliff.toml config for regex-based
commit parsers handling skip patterns and category matching.
2026-02-13 20:09:49 +01:00
Arkadiusz Fal
79e4a24f75 Auto-increment build number in release workflow
Query App Store Connect for the latest TestFlight build number across
all platforms (iOS, tvOS, macOS) and auto-increment it, eliminating
the need for the separate bump-build workflow.
2026-02-13 19:18:42 +01:00
Arkadiusz Fal
b559886e2e Update localizable 2026-02-13 18:59:47 +01:00
Arkadiusz Fal
9587ab37f8 Add DEV badge on iCloud settings for debug builds
Shows an orange "DEV" capsule next to the iCloud row in Settings and a
development environment notice at the top of iCloud settings, helping
distinguish CloudKit dev environment from production during development.
2026-02-13 18:14:19 +01:00
Arkadiusz Fal
3aadc9be70 Fix deleted playlists resurrecting from iCloud after app restart
Pending deletes were lost across app restarts because
recoverPersistedPendingChanges() never reconstructed CKRecord.ID
objects from persisted record names. Additionally, incoming iCloud
records for deleted playlists were blindly applied, and orphaned
playlist items in CloudKit would recreate placeholder playlists.

- Rebuild pendingDeletes array from UserDefaults on recovery
- Guard applyRemoteRecord against records pending local deletion
- Skip deferred items whose parent playlist is pending deletion
- Queue all playlist item deletions when deleting a playlist
- Clean up placeholder playlists for pending-delete playlists
2026-02-13 18:05:30 +01:00
Arkadiusz Fal
e51ebd7ab2 Fix feed channel filter avatars showing placeholders instead of images
The filter strip was passing the Invidious instance URL as serverURL to
AvatarURLBuilder, which built a Yattee Server-style /avatar/ path that
doesn't exist on Invidious. Now passes the actual Yattee Server URL
(matching SubscriptionsView pattern) and enriches channels from
CachedChannelData as a fallback when the API doesn't return thumbnails.
2026-02-13 07:04:40 +01:00
Arkadiusz Fal
9eb6812fb2 Bump build number to 251 2026-02-13 08:43:58 +01:00
Arkadiusz Fal
089e5842de Fix build number 2026-02-13 08:43:58 +01:00
Arkadiusz Fal
bce72d776c Add Fastlane config and update release workflow for v2
Single unified "Yattee" scheme replaces per-platform schemes.
Release workflow now has toggleable platform inputs instead of
matrix strategy. Standalone mac notarized workflow removed in
favor of the build_mac_notarized toggle. Share extension bundle
ID updated from Open-in-Yattee to ShareExtension.
2026-02-13 08:43:58 +01:00
Arkadiusz Fal
b54e0440ec Change default layout settings 2026-02-12 08:58:44 +01:00