TypingLine (Composer.tsx:1063-1098) returns null when nobody is typing and a padded row when someone is. It sits above the reply chip, so the composer grows and shrinks and the whole message list shifts each time someone starts or stops typing. The comment at app.css:3331-3336 warns about exactly this, but the line reserves no height.
Discord keeps a fixed-height strip under the input with animated dots.
Fix: a reserved fixed-height strip (below or overlaying the composer edge) that is always present, with an animated "•••" indicator.
Part of the v1.0 UI pass.
`TypingLine` (Composer.tsx:1063-1098) returns `null` when nobody is typing and a padded row when someone is. It sits above the reply chip, so the composer grows and shrinks and the whole message list shifts each time someone starts or stops typing. The comment at app.css:3331-3336 warns about exactly this, but the line reserves no height.
Discord keeps a fixed-height strip under the input with animated dots.
**Fix:** a reserved fixed-height strip (below or overlaying the composer edge) that is always present, with an animated "•••" indicator.
_Part of the v1.0 UI pass._
Salastil
added this to the v1.0 milestone 2026-10-07 20:42:54 -04:00
Salastil
added the bug label 2026-10-07 20:42:54 -04:00
Before (top) and after (bottom), from scripts/ui-shots.mjs:
The cause was a comment saying the line "reserves no height when empty" - which is exactly what shoved the log up and down. The strip is now always one line tall, empty or not, and the text has three animated dots (still, when the system asks for reduced motion).
Finished: [6598043](https://git.salastil.com/Salastil/moho/commit/65980434838a52d1a9ad3ae97b84acae2e367de9).
Before (top) and after (bottom), from `scripts/ui-shots.mjs`:

The cause was a comment saying the line "reserves no height when empty" - which is exactly what shoved the log up and down. The strip is now always one line tall, empty or not, and the text has three animated dots (still, when the system asks for reduced motion).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
TypingLine(Composer.tsx:1063-1098) returnsnullwhen nobody is typing and a padded row when someone is. It sits above the reply chip, so the composer grows and shrinks and the whole message list shifts each time someone starts or stops typing. The comment at app.css:3331-3336 warns about exactly this, but the line reserves no height.Discord keeps a fixed-height strip under the input with animated dots.
Fix: a reserved fixed-height strip (below or overlaying the composer edge) that is always present, with an animated "•••" indicator.
Part of the v1.0 UI pass.
Finished: 6598043.
Before (top) and after (bottom), from
scripts/ui-shots.mjs:The cause was a comment saying the line "reserves no height when empty" - which is exactly what shoved the log up and down. The strip is now always one line tall, empty or not, and the text has three animated dots (still, when the system asks for reduced motion).