Route system Back through the current navigation owner
This commit is contained in:
parent
b51dced5fe
commit
a268cdd7b8
27 changed files with 196 additions and 77 deletions
|
|
@ -258,12 +258,19 @@ fall through to the older setup/user UI.
|
|||
Source — Justin: “pressing back enough times should close wolfskin, currently
|
||||
there is no way to go back to projectivity apart from weird methods via the old ui”.
|
||||
|
||||
`rememberWolfskinBackHandler` owns Android Back at the app root, including a
|
||||
single-entry `NavDisplay`; full-screen hand-offs use the same `NavigationManager`
|
||||
exit event rather than exposing the parent setup stack. `WolfskinRootExitTest`
|
||||
mounts actual Wolfskin Home/Discover/library surfaces and covers picker,
|
||||
hardware Back and Coming-in sheet precedence. `WolfskinBackStackTest` mounts
|
||||
the real Updates and Home Settings pages to cover parent pops and unsaved edits.
|
||||
The activity's `OnBackPressedDispatcher` owns native `KEYCODE_BACK`. It is not
|
||||
mapped by `readShellKey`: a Compose key-down cannot navigate before the system
|
||||
Back callback commits. Escape remains the local keyboard Back shortcut.
|
||||
`rememberWolfskinBackHandler` resolves the live navigation entry and synchronizes
|
||||
the shell route before the root nav/exit ladder. A title/person callback retained
|
||||
during exit forwards to that live entry instead of popping its old title again;
|
||||
correctness does not depend on a recomposed enabled flag.
|
||||
`TitleEntryBackTest` mounts real `NavDisplay`, Home and loaded title/person
|
||||
surfaces; `WolfskinRootExitTest` mounts actual Home/Discover/library surfaces.
|
||||
Both run on SDK 34 and 36, including system/predictive callbacks, native key
|
||||
ownership, immediate successive Back before recomposition, picker and Coming-in
|
||||
precedence. `WolfskinBackStackTest` keeps the real Updates/Home Settings parent
|
||||
pops and unsaved-edit protection.
|
||||
|
||||
Saved Jellyfin identities use the existing upstream session. Conductarr supplies
|
||||
household labels, requester capabilities and library audiences after sign-in.
|
||||
|
|
@ -373,21 +380,26 @@ the actual host's suspended fixture load and presses Android OK: it must open th
|
|||
hero rather than activate the nav. Fixture completion does not steal a different
|
||||
destination or nav selection.
|
||||
|
||||
Native Roborazzi captures use Robolectric SDK 34 and
|
||||
`w960dp-h540dp-xhdpi` (1920×1080 at density 2.0). `make test` writes capture PNGs and
|
||||
the sampled Compose nav-spring curve to `build/wolfskin-captures/`.
|
||||
Native Roborazzi captures normally use Robolectric SDK 34 and
|
||||
`w960dp-h540dp-xhdpi` (1920×1080 at density 2.0). System-Back smokes also run SDK 36.
|
||||
`make test` writes capture PNGs and the sampled Compose nav-spring curve to
|
||||
`build/wolfskin-captures/`.
|
||||
Home, Library and Discover captures use `home/`, `library/` and `discover/`
|
||||
subdirectories so shared spec state numbers cannot overwrite another renderer's image.
|
||||
Key replays exercise the Android event adapter, including the 6/8/10/11-press shell paths.
|
||||
The profile hand-off capture targets the real `HomeSettingsPage`; Playback is a
|
||||
separate press-count path.
|
||||
|
||||
Robolectric SDK 28/30/34 runtimes resolve through Gradle's existing persistent
|
||||
Robolectric SDK 28/30/34/36 runtimes resolve through Gradle's existing persistent
|
||||
dependency cache, then copy to `wolfskin-design/build/robolectric-sdk/`. Test workers
|
||||
use that local directory in offline mode instead of downloading Android JARs into
|
||||
the container's ephemeral home. A cache miss still needs Maven Central; rate-limited
|
||||
hosts can seed the existing cache from SHA512-verified local Maven artifacts without
|
||||
changing the wrapper or adding volumes.
|
||||
SDK 36 Back tests use the pinned Android 16 runtime and a test-worker-only
|
||||
`--add-exports=java.base/jdk.internal.access=ALL-UNNAMED` for Robolectric's
|
||||
`ApplicationSharedMemory` / JDK FileDescriptor bridge. Other capture suites
|
||||
retain their existing SDK selection.
|
||||
|
||||
Default-flavour launcher artwork and English, Hungarian and Polish string overrides
|
||||
live in `app/src/default/res/`. Legacy Wolfskin strings in 25 translated
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue