Skip to content

feat(web): hide the composer while reading history on narrow screens - #17

Open
Antisophy wants to merge 1 commit into
CyberShadow:masterfrom
Antisophy:feat/mobile-hide-composer
Open

feat(web): hide the composer while reading history on narrow screens#17
Antisophy wants to merge 1 commit into
CyberShadow:masterfrom
Antisophy:feat/mobile-hide-composer

Conversation

@Antisophy

Copy link
Copy Markdown
Contributor

iOS pins the composer above the on-screen keyboard, then lets the two drift apart as soon as the page scrolls: the box ends up floating over a gap between itself and the keyboard, and only a drag that starts inside the box puts them back together. The page cannot observe that drift, so there is nothing to correct against from script.

Scrolling up to read is also the moment when neither the composer nor the keyboard is wanted, so this leans into that: leaving the bottom of the message list hides the composer and blurs the field, which is what actually dismisses the keyboard. Returning to the bottom brings the box back.

Details worth knowing:

  • iOS will not raise the keyboard again without a real tap, so returning to the bottom restores only the box; typing needs one tap. That is a platform constraint rather than a choice.
  • Hiding is display: none on a component that stays mounted, so a draft in progress survives being scrolled away from.
  • MessageList gains an onAtBottomChange callback, fired from the scroll listener it already runs for overflow-anchor, with 24px of tolerance so momentum scrolling landing a pixel off zero does not toggle it.
  • Scoped to the same 768px breakpoint as the rest of the mobile layout: wider screens have room for the composer and no keyboard to dismiss, so nothing changes there.

iOS pins the composer above the on-screen keyboard, then lets the two drift
apart as soon as the page scrolls: the box ends up floating over a gap, and
only a drag that starts inside it puts them back together. The page cannot
see that drift, so there is nothing to correct against.

Scrolling up to read is also the moment neither the composer nor the keyboard
is wanted, so leaving the bottom of the message list now hides the composer
and blurs the field, which is what actually dismisses the keyboard. Returning
to the bottom brings the box back; iOS will not raise the keyboard again
without a tap, so that stays manual. Hiding is display:none on a component
that stays mounted, so a draft in progress survives.

Scoped to the same 768px breakpoint the rest of the mobile layout uses:
wider screens have room for the composer and no keyboard to dismiss.
@Antisophy

Antisophy commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

One of five independent changes for using cydo on a phone, split apart so each can be judged on its own:

They touch different code and can merge in any order. #15 and #17 both add rules inside the same @media (max-width: 768px) block, so whichever lands second may need a trivial context rebase; nothing semantic overlaps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant