forked from unom/punktfunk
The fourth slice of the console-UI parity port (design/apple-console-ui-parity.md, PR-4): - `ConsoleContract.swift` (PunktfunkShared): `ConsoleMotion` — the vectors' `motion_spring` numbers (response 0.42, damping 0.88, slide 36, scales 0.985/0.96, reveal 0.4, interruptible) — and `GpSettingsTab`, moved out of the executable target so `ConsoleVectorsTests` can reach both. `testTabNamesMatchTheSharedVectors` (this client's trailing About is its own; the desktop's Input is `desktop_only`) and `testMotionMatchesTheSharedVectors` (the v2 block) join the palette test; the vectors' v1 `$deprecated` note now names Android as the last v1 reader. - `GamepadShellMotion.screen` is `.spring(0.42, 0.88)` — the console's `springs::NAV` — instead of the 0.26 s ease-out-cubic; Reduce Motion crossfades on the desktop's `REDUCED_NAV` (0.22, 1.0) with no slide and no scale, instead of snapping. - Interruptible: while a push is in flight no layer owns the controller, so a zero-size `MidPushBackCatcher` takes B alone and clears the trigger that raised the top screen — the same spring carries it back down, the way the desktop retargets its NAV spring to 0. A and the rest stay dropped until the spring has passed 0.85 of its travel (`inputOpensAfter`, 0.20 s), not until a tween has finished (0.28 s): the wall is gone, the double-tap protection stays. - The library layer's place stack rides the same spring and the same reduce-motion crossfade.