feat(onboarding): replace carousel with iOS-style chat feed - #30
Merged
Merged
Conversation
Replace carousel image fields with user prompts, icons, and orb styles so features can drive the iOS-style conversational onboarding feed.
Add a Canvas-based ThinkingOrbsKit port with procedural frame generation and unit tests for preset resolution and orb state cycling.
Introduce the chat feed, bubbles with pre-measured thinking-to-assistant morph, feature orbs, usage notice, and a softer shimmer for thinking text.
Wire the single-page onboarding to the new chat feed and usage notice, removing the legacy feature card carousel presenter.
Document the carousel-to-chat-feed transition and the ThinkingOrbsKit port.
Move orb frame generation into the Canvas draw scope and drive redraws via view.invalidate() so procedural frame math stays off the composition thread. Add deterministic fingerprint assertions for the orb engine.
Reuse measured assistant width and height across SubcomposeLayout passes so thinking bubbles do not compose assistant content twice every frame.
Extract OnboardingChatFeedScrollPolicy from the chat module, rename isActive to feedActive, use coroutine isActive in feed loops, remove container LazyColumn semantics, and log scroll retry failures.
Delete unused onboarding_feature_*.png assets left over after the carousel presenter was replaced by the chat feed.
Add Compose UI tests for reduce-motion static feed and bubble roles, plus unit tests for the extracted feed scroll policy.
Drop hardcoded golden hashes that differ between macOS and Linux CI; assert repeatability and distinct fingerprints per orb state instead.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
opencore_swiftersexperience (user prompts, thinking orbs, assistant replies).Test plan
./gradlew :app:testDebugUnitTest --tests "io.github.bengidev.opencore.onboarding.*"