Repository navigation
Add per-profile landscape orbit layouts and an animated mini player dock - #365
Merged
Merged
Conversation
Move the song key from SongCard to its Stack parent and retain the built card face across orbit ticks, so surviving cards keep their State and decoded artwork instead of being rebuilt each frame.
Give each orientation its own persisted geometry, sizing, and depth settings, surfaced through a profile selector in orbit settings and used by the orbit renderer. Shared visuals like art resolution and path/glow toggles remain common across both profiles.
Persist landscape-specific geometry, sizing, depth, and spacing settings alongside the existing portrait values, with per-orientation reset support in the preferences notifier and service.
Cover card count, depth, selected scale, radius, spacing, width, and focal position from the landscape profile, and verify the selected card stays within the stage at extreme sizes and scales.
Use the landscape orbit geometry, sizing, and depth values when the viewport is wide, and expose the layout profile in settings search.
Replace the generic orbital reset strings with profile-specific portrait/landscape labels, hints, reset confirmations, and shared visuals section headers.
Show artwork above a scrollable one-line footer instead of collapsing to a text overlay on short stages, and use a smaller accent-aware selection indicator.
Keep tab pages full-height so the landscape ribbon can extend behind the mini player and navigation bar, absorbing input in the exposed strip and reserving side space for safe areas and the mini player.
Verify cards and the ribbon paint through gesture gutters, the mini player reservation, and the portrait shell bottom inset, plus optional screenshot output for visual inspection.
Mount the dock across all tabs and animate the mini player between the bottom bar and orbit strip only for short landscape windows, leaving the static bottom player for larger layouts.
Introduce a shared dock that glides the mini player between the bottom bar and the compact orbit strip for short landscape windows. Both player layouts stay mounted during the transition so only translation and opacity animate, with the inactive side muted, ignoring input, and skipped by heroes and semantics. Respect reduced motion and the app-wide animations switch by snapping instead of animating, keep a single tutorial anchor registered across handoffs, and cover the behavior with widget tests.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
AbsorbPointerstrip preventing the exposed inset from paging the view.Tests
Related issue
none
Checklist
flutter analyzepassesflutter testpassescargo test --manifest-path rust/Cargo.tomlpassesflutter run --flavor full)CHANGELOG.mdupdated for user-facing changes