[Agent] feat(tvOS): retrowave design language consistency wave 2 - #3611
Conversation
|
Robot PR created. AI review starting automatically. |
0c5a3c1 to
ed3a7ce
Compare
|
@claude please do a self-review pass on this PR: Verify all changed files compile (check for unresolved symbols, missing imports, type mismatches) |
Review CompleteSelf-review finished. Found and fixed 3 issues (dead code x2, alert binding anti-pattern). PR is ready for human review. See the full review summary in the PR comments above. |
Self-Review Results — Fixes AppliedIssues Found & FixedCritical — Compile Error
Dead Code Removed
Visual Bug Fixed
Deprecated API Warnings Fixed (iOS 17)
Unnecessary Annotation Removed
Files Not Modified
Multi-Platform CheckAll changes verified safe for iOS, tvOS, and macOS Catalyst. Platform guards ( |
4e77171 to
ebe085d
Compare
|
@claude please do a self-review pass on this PR: Verify all changed files compile (check for unresolved symbols, missing imports, type mismatches) |
Self-Review ResultsReviewed all 4 changed files for compilation correctness, dead code, platform compatibility, and type safety. Found and fixed 3 issues: Fixed Issues1. Dead code — 2. Dead code — 3. Alert binding anti-pattern (BatchArtworkMatchingView.swift) Also Simplified
No Issues Found
|
9f355e9 to
99ea2dd
Compare
3bca7c8 to
d00fd92
Compare
3170a30 to
d56836a
Compare
|
🤖 Merge conflict detected — Claude has been dispatched to resolve the conflicts automatically. If conflicts cannot be resolved cleanly, the workflow will post a comment explaining what needs manual attention. |
✅ Fixes Pushed — Awaiting Re-reviewProgress
Updated: 2026-08-05 01:05 UTC |
d56836a to
f74b624
Compare
Rebase Conflict Resolved ✅Resolved 1 conflict in What happenedThe develop branch gained a Resolution
|
9871654 to
82ab659
Compare
|
👋 Triage pass — this Please react on this comment so I know what to do:
No reaction within 7 days → I'll close as stale. Re-open any time if you change your mind. |
👍 Rebased — ReadyThe branch had no common ancestor with What changed since the original branchThe only develop work that had any overlap potential was the controller-mapping refactor ( PR branch now
CI will re-run automatically against the new base. The PR is still |
There was a problem hiding this comment.
Pull request overview
This PR continues the tvOS retrowave design consistency work by applying the shared RetroSettingsComponents patterns (background, section headers, focus button styling, and tvOS sidebar insets) to additional Settings views in the PVUI SwiftUI layer.
Changes:
- Updates multiple settings views to use
retroFocusButtonStyleon tvOS (replacing.buttonStyle(.card)+.retroThemedFocus) for consistent focus appearance. - Standardizes tvOS section headers and backgrounds using
RetroSettingsSectionHeaderandRetroSettingsBackground. - Introduces/expands use of
tvOSSettingsHorizontalPadding()to keep content clear of the tvOS side-menu bar and improves error alert presentation in Batch Artwork matching.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| PVUI/Sources/PVSwiftUI/Settings/Views/ControllerSettingsView.swift | Switches tvOS section headers/focus styling and updates list background to RetroSettingsBackground with tvOS inset. |
| PVUI/Sources/PVSwiftUI/Settings/Views/BatchArtworkMatchingView.swift | Applies retrowave focus styling to buttons, adds tvOS inset usage, and fixes alert presentation state binding. |
| PVUI/Sources/PVSwiftUI/Settings/Views/BackupRestoreView.swift | Migrates background and action buttons to shared retrowave components and modernizes onChange closures. |
| PVUI/Sources/PVSwiftUI/Settings/RetroAchievementsView.swift | Adds tvOS sidebar inset and migrates focus/toggle styling toward shared retrowave patterns; simplifies client initialization logic. |
| .padding() | ||
| .tvOSSettingsHorizontalPadding() |
| // Filter controls | ||
| filterControls | ||
| .tvOSSettingsHorizontalPadding() | ||
| #if !os(tvOS) | ||
| .padding(.horizontal) | ||
| #endif | ||
|
|
||
| // Action buttons | ||
| actionButtons | ||
| .tvOSSettingsHorizontalPadding() | ||
| #if !os(tvOS) | ||
| .padding(.horizontal) | ||
| #endif |
|
✅ Fixes pushed — addressed all 3 Copilot review comments:
Commit: 85cd691 |
…ler, Backup, BatchArtwork - RetroAchievementsView: tvOS 80pt inset + retroFocusButtonStyle on login/disconnect - ControllerSettingsView: RetroSettingsBackground, RetroSettingsSectionHeader on all sections, retroFocusButtonStyle replaces .card/.retroThemedFocus throughout - BackupRestoreView: RetroSettingsBackground + tvOSSettingsHorizontalPadding; migrate Backup/Restore buttons to RetroSettingsActionButton - BatchArtworkMatchingView: tvOSSettingsHorizontalPadding + retroFocusButtonStyle on all action buttons Part of #3598 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove duplicate ShareSheet definition (already in ShareSheet.swift), which caused an "Invalid redeclaration" compile error - Remove duplicate RetroToggleStyle struct; use RetroTheme.RetroToggleStyle() - Drop unused currentUser variable and unused scanlineOffset @State var - Fix deprecated onChange(of:) single-param closures to two-param form (iOS 17) - Remove redundant @available(iOS 15.0,...) annotation (min target is iOS 17) - Add missing .foregroundColor(.white) on Refresh button in BatchArtworkMatchingView Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove unused @State currentSession in RetroAchievementsView - Simplify initializeClient: remove unnecessary nested Task inside MainActor.run - Remove dead moveTVOSBackup(from:) in BackupRestoreView (never called) - Fix .constant(errorMessage != nil) anti-pattern in BatchArtworkMatchingView with proper @State showErrorAlert so the alert can dismiss correctly Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- RetroAchievementsView: avoid double horizontal inset by making .padding() vertical-only on tvOS since tvOSSettingsHorizontalPadding() already supplies the 80pt side inset. - BatchArtworkMatchingView: move tvOSSettingsHorizontalPadding() to the container VStack so title, list content, and the bottom selection bar all get the inset, not just filterControls/actionButtons. - ControllerSettingsView: replace hardcoded .padding(.horizontal, 80) with the shared tvOSSettingsHorizontalPadding() modifier.
Summary
Continues the retrowave design language consistency work from #3599, applying the shared
RetroSettingsComponentsto the next batch of settings views.Fixed: RetroAchievementsView
tvOSSettingsHorizontalPadding()(80pt) so content clears the side-menu bar on tvOS.buttonStyle(.card)+.retroThemedFocuswith.retroFocusButtonStyleon the login and disconnect buttonsFixed: ControllerSettingsView
Listbackground withRetroSettingsBackground(black + RetroGrid)scrollContentBackground(.hidden)so the grid shows through the list on tvOS.padding(.horizontal, 80)for sidebar inset on tvOSRetroSettingsSectionHeader(Button Remapping, Controller Assignments, Preferred Player Slots, Preferences, Help & Guides).buttonStyle(.card)+.retroThemedFocusreplaced withretroFocusButtonStyleon player-assignment and preference buttonsFixed: BackupRestoreView
Color.black + RetroGrid()ZStack withRetroSettingsBackgroundtvOSSettingsHorizontalPadding()for sidebar inset on tvOSRetroSettingsActionButton— previously had no tvOS focus styling at all; now get consistent retrowave border + built-inretroFocusButtonStyleFixed: BatchArtworkMatchingView
tvOSSettingsHorizontalPadding()on filter controls and action buttons.buttonStyle(.card)+.retroThemedFocususages replaced withretroFocusButtonStyle(Find Artwork, Retry, Refresh, Clear/Apply Selected)Remaining work (follow-up PRs)
Systems, Cores, Theme, Core Language, Core Options, RetroArch Settings, Cloud Sync, Controller Profiles, Import Saves, Rumble/Deadzone sliders — see #3598.
Part of #3598
Test plan
🤖 Generated with Claude Code