Splash, cup loader, list skeleton, empty-screen cup, pull to refresh indicator, star and tab icon spring, screen and tab transitions, and a row by row diff intro. Compose animation APIs only. Agent: main (opus) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.9 KiB
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.
- Cold start: the cup on the icon's blue, steaming, for about a second, then it fades.
- Loading: lists show grey placeholder rows with a light passing over them; everything else shows the steaming cup in place of the stock spinner.
- The favourite star springs when its state changes.
- A screen with nothing to list shows the cup bobbing above its message.
- Entering and leaving a screen slides it a short way in from the side it was opened towards.
- Pull to refresh brings the cup down with the finger; the steam appears near the release point.
- A file's diff arrives row by row the first time it is shown.
- Added while this was in progress (product owner, 2026-10-12): switching bottom tabs slides the screen in from the side that tab sits on, 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.ktapp/src/main/java/com/ubisam/ubgitea/ui/components/Elements.ktapp/src/main/java/com/ubisam/ubgitea/ui/shell/AppShell.ktapp/src/main/java/com/ubisam/ubgitea/MainActivity.ktapp/src/main/java/com/ubisam/ubgitea/feature/home/HomeScreen.ktapp/src/main/java/com/ubisam/ubgitea/feature/repositories/RepositoryListScreen.ktapp/src/main/java/com/ubisam/ubgitea/feature/work/WorkScreen.ktapp/src/main/java/com/ubisam/ubgitea/feature/notifications/NotificationsScreen.ktapp/src/main/java/com/ubisam/ubgitea/feature/workitems/WorkItemsScreen.ktapp/src/main/java/com/ubisam/ubgitea/feature/history/HistoryScreen.ktapp/src/main/java/com/ubisam/ubgitea/feature/history/FileDiffScreen.kttasks/069-in-app-motion.mddocs/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.