Ubisam-MobileGit/tasks/069-in-app-motion.md
choiminyeong 7368b27c65 TASK-069: bottom tab switches glide the whole width
Agent: main (opus)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:28:44 +09:00

2.9 KiB

TASK-069: In-app motion

Status: implemented; required checks pass; not yet seen on a device Owner: Claude Reviewer: human product owner

Outcome

The app moves where it used to jump, and what moves is the launcher icon's tea cup.

  1. Cold start: the cup on the icon's blue, steaming, for about a second, then it fades.
  2. Loading: lists show grey placeholder rows with a light passing over them; everything else shows the steaming cup in place of the stock spinner.
  3. The favourite star springs when its state changes.
  4. A screen with nothing to list shows the cup bobbing above its message.
  5. Entering and leaving a screen slides it a short way in from the side it was opened towards.
  6. Pull to refresh brings the cup down with the finger; the steam appears near the release point.
  7. A file's diff arrives row by row the first time it is shown.
  8. Added while this was in progress (product owner, 2026-10-12): switching bottom tabs slides the whole screen sideways, the old tab gliding out as the new one glides in, and the tab's icon springs.

Scope

  • Included: Compose's own animation APIs only. No new dependency.
  • Excluded: videos made with Claude Motion; any change to what the screens load or show.

Writable paths

  • app/src/main/java/com/ubisam/ubgitea/ui/components/Motion.kt
  • app/src/main/java/com/ubisam/ubgitea/ui/components/Elements.kt
  • app/src/main/java/com/ubisam/ubgitea/ui/shell/AppShell.kt
  • app/src/main/java/com/ubisam/ubgitea/MainActivity.kt
  • app/src/main/java/com/ubisam/ubgitea/feature/home/HomeScreen.kt
  • app/src/main/java/com/ubisam/ubgitea/feature/repositories/RepositoryListScreen.kt
  • app/src/main/java/com/ubisam/ubgitea/feature/work/WorkScreen.kt
  • app/src/main/java/com/ubisam/ubgitea/feature/notifications/NotificationsScreen.kt
  • app/src/main/java/com/ubisam/ubgitea/feature/workitems/WorkItemsScreen.kt
  • app/src/main/java/com/ubisam/ubgitea/feature/history/HistoryScreen.kt
  • app/src/main/java/com/ubisam/ubgitea/feature/history/FileDiffScreen.kt
  • tasks/069-in-app-motion.md
  • docs/development-log.md

Acceptance criteria

  • Each of the eight items above is in the code and the app builds.
  • The splash covers the app without delaying it: sign-in, loading and the OAuth callback run underneath, and taps do not pass through the cover.
  • Moving between code tabs, or between pages of one screen, does not replay the screen transition.
  • Nothing animates off screen: the pull indicator composes only during a pull, and the diff rows animate once per file, not on scroll.
  • A list's loading message is still what a screen reader says.
  • Seen on the product owner's device.

Security and privacy

No additional concerns. No network, storage or credential code is touched.

Required checks

./gradlew compileDebugKotlin compileDebugUnitTestKotlin testDebugUnitTest assembleDebug lintDebug

Evidence

See the development log entry for TASK-069.

Review findings

None yet.