Skip to content

feat(mobile): add measured cold-start home transitions - #3223

Merged
wgqqqqq merged 1 commit into
GCWing:mainfrom
wgqqqqq:wgq/mobile-cold-start-transition
Sep 24, 2026
Merged

wgqqqqq merged 1 commit into
GCWing:mainfrom
wgqqqqq:wgq/mobile-cold-start-transition

Conversation

@wgqqqqq

@wgqqqqq wgqqqqq commented Sep 24, 2026

Copy link
Copy Markdown
Collaborator

Summary

Authenticated cold process launches previously went straight to the mobile shell. Add a 2.4-second native transition on Android, iOS, and HarmonyOS: a small contour logo moves to the actual measured home-logo bounds, then the cover fades to reveal the page.

Keep the existing first-install reveal and signed-out welcome experience. Background resume, activity/root recreation, and later manual login do not replay the short transition. No per-version animation variant is introduced.

Type and Areas

Type: UI/UX, feature

Areas: Native mobile Android/Compose, iOS/SwiftUI, HarmonyOS/ArkUI, mobile design-system contracts

Motivation / Impact

The measured anchor follows native safe areas and home layout rather than a fixed target coordinate. The home stays mounted so remote restoration can continue underneath; the animation does not wait for remote network readiness. Missing anchors fall back to a centered fade. Reduced motion skips playback, and the covered shell is hidden from accessibility. Android cover/home sweep phases are synchronized for the handoff.

Verification

Completed in the implementation checkout before applying the changes cleanly onto current upstream/main:

  • Android: ./gradlew :app:assembleDebug passed; ./gradlew :app:compileDebugKotlin passed again after the sweep synchronization change.
  • HarmonyOS: hvigorw --mode module -p product=default -p module=entry@default assembleHap --no-daemon passed; debug HAP installed on a connected phone.
  • HarmonyOS isolated cold-start-home / cold-start-home-dark previews: compact phone screenshots checked for logo landing and home fade in both themes; normal EntryAbility restored afterward. The fixture uses the production transition and recent-home component without account or remote requests.
  • iOS: ./Testing/run-pure-swift-tests.sh passed. Swift syntax parsing passed for the changed app/animation entry points. This does not compile SwiftUI; full Xcode is unavailable on the test machine.
  • pnpm run mobile:ui:check, pnpm run harmony:architecture, and git diff --check passed in the implementation checkout.

On the PR worktree based on updated upstream/main, generated mobile contract consistency, HarmonyOS architecture, and diff whitespace checks pass. The full preview asset check cannot complete in this fresh worktree because the canonical design-token CSS build and workspace dependencies are absent.

Known limitations:

  • pnpm run mobile:architecture reports existing violations in unchanged shared-layer files: ClientBuildContractTest, AccountUiState, RemoteSidebarPresentation, and ConversationModels.
  • iOS native build/device, wide/foldable postures, and the full authenticated/background lifecycle matrix remain unverified.
  • No real remote-control, remote-workspace, peer-device, or detached-dispatch scenario was exercised; device checks are isolated presentation coverage only.

Reviewer Notes

Existing installation-local reveal preferences and account/transport payloads are retained. New process eligibility and measured geometry are presentation state. The HarmonyOS preview launch commands are documented in its local AGENTS.md.

Checklist

  • This PR is focused and does not include secrets, temporary prompts, generated scratch files, or unrelated artifacts.
  • Relevant verification is recorded above, or skipped checks are explained.
  • User-facing strings, docs, and locales are updated where applicable.

@wgqqqqq
wgqqqqq merged commit c4448d4 into GCWing:main Sep 24, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant