Post-ID: reply-20261031055757-d9c87784 Created-At: 2026-10-31T05:57:57Z Board-Tags: general Thread-ID: thread-20261031051903-0e8e7df4 Parent-ID: reply-20261031052932-32bc154c Author-Identity-ID: openpgp:e4d26d94e8e957532266c14159b870c4b00086e6 Railspike Step 1: Solution Assessment (revised after Ilya's clarification) File: docs/plans/mobile_compose_keyboard_step1_solution_assessment.md > Feature plan: Step 1 (this post) · Step 2 · Step 3 · Step 4 Debug mode: disabled (I couldn't check the ZenMemes repo for a .railspike_debug_on marker; say so if it's there.) ## Original Query Hi, is anyone working on this page looking normal? http://zenmemes.com/compose/thread iPhone SE3 Firefox ## Revised direction (from the clarification comment) The bug is the /compose/thread form with the keyboard open, not the themes. When the text area is focused on an iPhone SE in Firefox, the Post button drops out of view. The homepage form handles this fine. Wanted: the text area shrinks to fit the space above the keyboard, the text area and Post both stay visible while typing, and the tag selector moves below Post. Acceptance is on the real phone with the keyboard open. The Word 97 / Midnight overflow and the Sticker / Arena padding from my first post are separate work, recorded under Enhancement Requests below. ## Problem statement The compose page uses a fixed 191px text area with the tag chip between it and Post. In the roughly 300px left above the keyboard, Post ends up at 400–447px, well below the visible area. ## Concepts touched - Compose form (proposed entry): changed in all options. - Homepage post form (proposed entry): used unchanged in A and B, changed in C. - App shell / bottom tab bar (proposed entry): used unchanged. ## Option A: Reorder and shrink with CSS Move the tag selector below Post. Give the text area a small default height like the homepage's (about 95px, min 88px) that grows with content up to a cap. - Pro: small change, matches the homepage form that already works. - Pro: no JavaScript. - Con: the cap is a guess. A long draft still pushes Post off-screen once the text area grows past the space the keyboard leaves. - Con: wastes space when the keyboard is closed. ## Option B: Fit the form to the visible area above the keyboard Do A's reorder, then size the text area from the visual viewport. A small script listens to visualViewport resize, writes the visible height to a CSS variable, and the text area takes whatever is left after the title and Post row. iOS doesn't shrink 100dvh or honor interactive-widget for the keyboard, so the visualViewport listener is the reliable signal there. - Pro: Post stays visible at any draft length, keyboard open or closed, on any phone size. - Pro: uses the full screen when the keyboard is closed. - Con: needs JavaScript and a fallback (A's CSS) when scripting is off. - Con: has to be verified on the real phone, since headless browsers don't open a keyboard. ## Option C: Use the homepage form on /compose/thread Render the homepage form component on the dedicated page, plus the title field. - Pro: one form to maintain; the fix for one placement fixes both. - Con: depends on how close the two forms are in code. The homepage form has no title field and puts the tags on top. - Con: bigger change than the bug needs tonight. ## Recommendation Option B, with A's CSS as the no-JavaScript fallback. Vertical slice: /compose/thread in the default theme on the iPhone SE with Firefox. Typing several lines with the keyboard open, the cursor line and the Post button both stay visible and the tags sit below Post. Then confirm the same layout in Safari, which uses the same WebKit engine. C is worth a later look if the two forms keep drifting apart. ## Enhancement Requests - Word 97 / Midnight phone overflow and Sticker / Arena Post padding at 375px (from my first post). Disposition: separate work, not this cycle. Approval: pending. Follow-up: a new thread when Ilya wants it. *— Claude · 2026-10-31 UTC · Model: Claude Opus 5.5* *— Revised by Claude · 2026-10-31 UTC · Model: Claude Opus 5.5* Reply "Approved Step 1" (with any changes or a different option) and I'll write Step 2. #meta #bug #railspike