Motion pass: hovers, folds, popups, messages, reactions #283

Closed
opened 2026-10-07 20:43:01 -04:00 by Salastil · 1 comment
Owner

Almost nothing animates. Only the rail face/pill (120ms) and a few spinners do. Missing, compared with Discord/Slack/Element:

  • hover fades on rows, buttons, menu items
  • category fold/unfold (chevron is swapped, not rotated; rows don't animate)
  • entry/exit for context menus, popovers, modals, toasts, the lightbox
  • new messages fading in (when at the bottom), reactions popping, reaction counts animating
  • the jump-to-message highlight fading out (it snaps off: transition is only on .message-row.found, app.css:5198-5201)
  • "Jump to present" sliding in/out
  • typing dots

All durations from the new motion tokens; everything respects prefers-reduced-motion (and the Appearance page's Reduce motion switch).

Before/after captured as short videos with the screenshot harness.

Part of the v1.0 UI pass.

Almost nothing animates. Only the rail face/pill (120ms) and a few spinners do. Missing, compared with Discord/Slack/Element: - hover fades on rows, buttons, menu items - category fold/unfold (chevron is swapped, not rotated; rows don't animate) - entry/exit for context menus, popovers, modals, toasts, the lightbox - new messages fading in (when at the bottom), reactions popping, reaction counts animating - the jump-to-message highlight fading out (it snaps off: `transition` is only on `.message-row.found`, app.css:5198-5201) - "Jump to present" sliding in/out - typing dots All durations from the new motion tokens; everything respects `prefers-reduced-motion` (and the Appearance page's Reduce motion switch). Before/after captured as short videos with the screenshot harness. _Part of the v1.0 UI pass._
Salastil added this to the v1.0 milestone 2026-10-07 20:43:01 -04:00
Salastil added the feature label 2026-10-07 20:43:01 -04:00
Author
Owner

Finished: 6d8a050.

Recordings from the isolated test copy (videos are attached as files; click to play). Before / after:

  • Folding and unfolding a category: before / after - the arrow turns instead of being swapped for a different one.
  • A message arriving, then a reaction going up: before / after - the new line fades and rises into place and the reaction pill pops; before, both just changed.
  • The pointer moving over channels and messages: after - the hover fill fades in and out.

What now moves, all on the shared durations (--motion-fast / --motion) and all still under reduced motion (prefers-reduced-motion): hover and pressed fills on rows, buttons, menu items, reactions and the settings rail; the fold arrow; messages said in the last few seconds arrive (history scrolled into view does not); reactions that are new or have gone up pop; popovers, the emoji picker, the profile card, dialogs and the switcher grow in; scrims fade; the jump-to-present pill slides up. Earlier in this series: context menus, toasts, the unread strip (#317, #318, #301), typing dots (#271) and the jump highlight's fade-out (#296).

Not done: rows animating their height when a category folds (they leave the page when folded, so there is nothing to animate without keeping them mounted) and the modal exit animation (they unmount at once) - the shared Modal in #315 is the place for both.

Finished: [6d8a050](https://git.salastil.com/Salastil/moho/commit/6d8a0502718067cbb44ca11b4348ed33fd628dcd). Recordings from the isolated test copy (videos are attached as files; click to play). Before / after: - Folding and unfolding a category: [before](https://git.salastil.com/attachments/90da4086-4096-4b89-9751-cd3fb2581851) / [after](https://git.salastil.com/attachments/d75c7710-4007-4db8-81aa-0c05ff2e292d) - the arrow turns instead of being swapped for a different one. - A message arriving, then a reaction going up: [before](https://git.salastil.com/attachments/34343330-b957-4e6f-a6da-ab9bcd929f09) / [after](https://git.salastil.com/attachments/aa1211cf-4e8d-4962-ba77-10bde7323f96) - the new line fades and rises into place and the reaction pill pops; before, both just changed. - The pointer moving over channels and messages: [after](https://git.salastil.com/attachments/7e194a77-5b5c-4a8f-9fe3-f3852641a53d) - the hover fill fades in and out. What now moves, all on the shared durations (`--motion-fast` / `--motion`) and all still under reduced motion (`prefers-reduced-motion`): hover and pressed fills on rows, buttons, menu items, reactions and the settings rail; the fold arrow; **messages said in the last few seconds arrive** (history scrolled into view does not); **reactions that are new or have gone up pop**; popovers, the emoji picker, the profile card, dialogs and the switcher **grow in**; scrims fade; the jump-to-present pill slides up. Earlier in this series: context menus, toasts, the unread strip (#317, #318, #301), typing dots (#271) and the jump highlight's fade-out (#296). Not done: rows animating their height when a category folds (they leave the page when folded, so there is nothing to animate without keeping them mounted) and the modal exit animation (they unmount at once) - the shared Modal in #315 is the place for both.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Salastil/moho#283