Polish picker identity changes, navigation cuts and Home playback #80
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fm/polish-lane-c"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Picker, identity, navigation and Home playback polish
Lane C: P07 picker loading, P08 committed person switching, E01 navigation cuts, E04 Home Play/Resume, revision-7 spec and capture notes. Base:
74b737fb52bfbb2cc7afa0b0288ae59e67232320; targetfm/tv-round2. This lane merges last because it changes person identity and navigation.Behaviour and owned files
WhosWatching.ktapplies the shared skeleton pulse only to placeholders. Recovery buttons stay static; Ready removes the pulse.PickerPolishTestobserves native pixels and recomposer idleness.PersonCommit.kt,WhosWatching.kt,WolfskinApp.ktfreeze the approved picker, fade the other people, then cover the whole picker; hold opaque background until the authenticated replacement is ready. Keys, pointer and system Back are ignored during the commit. PIN/requireLogin checks remain beforechangeUser; failed/protected switches reveal setup only after the timeline completes. Session-owned frame origin survives app replacement. Phase-one masks paint last so the opaque background does not acquire one-channel alpha-rounding noise in phase two.WolfskinApp.kt,MainContent.ktdisable enter/pop/predictive whole-screen transitions. Deleteupdate/UpdateNavigation.ktand its redundant per-route metadata. Existing saveable-state/ViewModel decorators and active-entry Back ownership remain.HomeHeader.kt,WhosWatching.kt,HomeDestination.kt,WolfskinApp.ktshow exactlyStarting…at the original button width, ignore repeat starts, fade black before the actual fullscreen playback destination and retain item/position. Cancellation and stale identity/results cannot launch or toast later.data/tv-spec/spec.mdcontains the exact approved revision-7 block;docker/README.mdlists the named native capture tests and paths.The real-NavDisplay probe reproduced a full old-Home flash one frame after the veil reached black (normal: black at 192 ms, Home at 208 ms; reduced: black at 112 ms, Home at 128 ms).
WolfskinAppnow keeps opaque black through incoming-player entry composition and uncovers it on the following composition. Input stays blocked across the same gap. The player entry also owns its black background: upstream error/external-player loading components can be transparent. Both regression variants now remain black through a deliberately delayed renderer, then uncover only the incoming scene; no old Home frame.The optional fullscreen renderer follows the existing Home/title injection pattern. Production defaults to the real
DestinationContent; the native test uses a controlled opaque-blue player surface after a transparent loading phase. This proves the real NavDisplay/veil boundary, not video decoding.Decisions and observation criteria
ContentTransform.targetContentZIndex = 1ftrial did not reduce Back's 64 ms paint latency in either motion mode, so it was reverted as authorized. Every frame from 0 through 320 ms is captured in 16 ms steps without warming the clock. The combined reviewer should check this interpretation against the strips. No Nav3 fork, reflection, entry-decorator replacement or lifecycle workaround.lane-C.md:241-249/spec.md:671-679. Failure crossfades the label back; return from the player has no veil and the normal reset label. The Home test first paints the completed handoff and verifies Home was disposed, then tests the first native Home frame after Back. It does not pop an unrendered player in the same turn or change the motion token.Existing tests edited
ConductarrHomeSurfaceTest,HomeRecoveryTest,HomeSeeAllNavigationTest,PersonSwitchThreadingTest,WatchReadTest,WatchReturnTest: supply the new session dependency; existing behavioural assertions retained.PlayerHandoffTest: supply the session and compose Home plus the handoff veil; verify navigation stays Home before the fade completes, then preserve the real item/position/fullscreen/Back assertions. These seven additional files were authorized in steering 002.Exercised neighbouring verification
Final result: 88 app cases passed, 0 failures/errors/skips, including all 70 named auth/Back/identity/playback neighbours and all 18 new native cases. 20 design cases passed across
PickerPolishTest,PickerNavigationTest,ShellCaptureTestandScreenEntryNavigationTest. App run: 4m36s. XML evidence:data/polish-lane-c/validation/{final-app,final-design}/.Design command:
New native regression command:
Development run history (the command blocks here identify the exact selected classes):
Compile-only app attempts corrected a required DTO type, unsupported inline-value-class varargs, an unsupported named key-duration argument and a missing test-tag import. One baseline attempt timed out waiting/building before an app result; its queued retry produced the baseline captures. The first full-root fixture used a relaxed generic backdrop flow and failed with
Object→BackdropResult; it now supplies a typedBackdropResult.NONEflow. No production exception was suppressed. Native flash reproduction XML and frames are retained underdata/polish-lane-c/validation/handoff-before/; the discarded z-order trial is undervalidation/z-order-attempt/.Full targeted app command (new cases plus every named neighbour; no other test classes):
New auth, identity and Back regressions
PersonCommitTest:NavigationCutTest:HomeHeroStartingTest:Native proof locations
Root:
/root/.treehouse/firstmate-7bab20/2/firstmate/data/ui-polish-build/lane-c/.P07/{before,after}/{normal,reduced}/(0–1400 ms / 100 ms).P08/before/normal/andP08/after/{normal,reduced}/(0–480 ms / 16 ms; picked Home and reduced-motion toggle hold included).E01/before/normal/,E04/before/normal/.E01/after/{normal,reduced,setup-normal,setup-reduced}/; open-title, Back and tab each run 0–320 ms / 16 ms.E04/after/{normal,reduced}/includes preparation, black fade and the first Home frame after returning; it excludes the empty test-harness player surface.E04/{before,after}/{root-normal,root-reduced}/. The incoming solid-blue scene is a test renderer, not a screenshot of a decoded player; before captures stop at the demonstrated old-Home flash.Only Docker-targeted unit/native scenarios were run. No full suite, APK build, emulator, m3 walk, TV, ADB, install or device launch. Player decoding/playback itself was not exercised by the native Home-to-destination harness.
Exact auth, Back, identity and playback neighbour cases exercised
The following 70 cases all passed; suffixed names are retained exactly from the XML.
ConductarrHomeSurfaceTest
FirstSignInNavigationTest
HomeRecoveryTest
HomeSeeAllNavigationTest
NavBandOcclusionTest
PersonPickerSessionTest
PersonSwitchThreadingTest
PlayerHandoffTest
SavedPeoplePickerTest
TitleEntryBackTest
TitlePlaybackNavigationTest
UpstreamContentFocusTest
WatchReadTest
WatchReturnTest
WolfskinBackStackTest
WolfskinRootExitTest
update.UpdatesKeysTest
Landed through the round 2 candidate #82 (merged into fm/tv-round2 as
c21d17df). Closing as superseded; nothing from this branch is lost.Pull request closed