feat(companion): tasteful motion pass (entrances, send button, tiles) - #419
Merged
Conversation
A polish pass on the app's motion, tuned to feel calm and premium rather than busy, and responsive across phone/tablet/desktop. - theme: add TalonMotion — a shared motion vocabulary (fast/base/slow durations + emphasized/standard curves) so every surface animates with the same rhythm and the whole app can be retuned in one place. - message rows: a one-shot entrance (gentle rise + fade + a whisper of scale; user rows drift in from the right, assistant fades in place). Gated so it plays ONCE per message and only for genuinely fresh messages — never history and never on scroll recycle (tracked via a seen-set + a recency check). Honours the platform "reduce motion" setting (MediaQuery.disableAnimations). - composer send button: springs to full size + colour when there's something to send, dips under the finger on press, and softens to a flat idle state when empty, with an accent glow. - sidebar chat tiles: press-scale, a slim accent bar that slides in on the selected tile, and a fading (not popping) delete affordance. All motion uses fixed, form-factor-safe geometry and proportional scale, and the readable max-width column (already present) keeps it consistent on wide screens. flutter analyze: no issues. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
What
A motion + polish pass, tuned to feel calm and premium, not busy, and responsive across phone / tablet / desktop. (Dylan: "beautymaxx it… don't make it slop… think hard about how it will display on different form factors.")
Changes
TalonMotionin theme):fast/base/slowdurations +emphasized/standardcurves, so every surface animates with the same rhythm and the app can be retuned in one place.MediaQuery.disableAnimations).Form-factor care
Fixed, safe geometry + proportional scale; the existing readable max-width column keeps it consistent on wide screens; reduce-motion respected. Nothing stretches or janks between a phone and a desktop pane.
Test
flutter analyze lib→ No issues found.Independent of the other companion PRs (touches theme + message_bubble + composer + sidebar + chat_view; does not touch
activity_card.dart, so no conflict with the chip-padding PR). Safe to merge in any order.🤖 Generated with Claude Code