Smooth out tvOS focus, navigation, and readability across the shell - #15
Open
nafields wants to merge 1 commit into
Open
Smooth out tvOS focus, navigation, and readability across the shell#15nafields wants to merge 1 commit into
nafields wants to merge 1 commit into
Conversation
Focus & navigation: - Pass the shell exit-command handler as an optional closure so toggling back-consumption no longer rebuilds the entire shell subtree (this was dropping focus/scroll state whenever the side rail opened on Home) - Make CloudLibraryFocusState.requestTopContentFocus a real generational request, consumed once per generation by Home/Library/Search/Consoles, so focus lands predictably on rail hand-off, back, and stream exit - Claim side-rail focus on the selected tab when the rail is expanded externally (it previously opened unfocused and the engine picked Settings on the next press) - Remove imperative focusedTarget writes from onMoveCommand handlers; they raced the focus engine's own move and made focus jump twice per press. Handlers now only cover true dead-ends (leading-edge rail entry, hero carousel paging) - Restrict rail entry to the leading item of Library tab/chip rows - Drop MediaTileView forcedFocus override (could ring two tiles at once) - Guard console focus restore so background refreshes don't steal focus - Pause the Home carousel auto-advance while the hero is focused - Route the swallowed Menu press in-stream to the overlay toggle so the Siri Remote back button surfaces/hides the stream overlay - Settings sidebar declares a single defaultFocus on the selected pane Transitions & layout: - Shared Motion tokens: 0.22s route crossfade applied to tab/utility/ load-state switches, settings panes, and stream-priority handoff; 0.14s focus curve unifies previously scattered 0.08-0.25s animations - Search: render the browse catalog for an empty query (was blank), apply top content padding, and disable scroll clipping - Consistent min-height status panels on Home/Library/Search Readability: - MediaTileView gains a focus scale and larger, higher-contrast text - Raised sub-TV font sizes across detail hero, settings components, sidebar rows, chips, cards, and profile; textMuted 0.55 -> 0.65 - Settings panes renamed to plain language (Streaming, Controller, Video & Audio, Appearance, Advanced) and Controller added to Basic Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Jerrychenshen
added a commit
to Jerrychenshen/stratix
that referenced
this pull request
Jul 14, 2026
Combine PR nafields#8 language option with PR nafields#15 tvOS fixes
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.
What changed and why
onMoveCommandhandlers — they raced the focus engine's own move, so a single D-pad press moved focus twice.Screenshots or recording
N/A — needs a simulator/device pass; validated via builds and unit tests (see test plan). Reviewers should exercise: side-rail open (Menu or left-edge) highlighting the current tab, D-pad movement through Library header/grid, detail push/pop focus restore, and Menu in-stream toggling the overlay.
Test plan
Tools/dev/run_debug_build.sh— Stratix-Debug builds cleanxcodebuild test(Stratix-Validation,-only-testing:StratixTests) — 134 passed / 0 failed, including new coverage for the generational focus request (CloudLibraryFocusStateTests) and Basic-mode pane visibility (CloudLibrarySettingsPaneTests)🤖 Co-authored with Claude Code