Skip to content

fix: keep the login fields above the software keyboard - #55

Merged
LukeGus merged 3 commits into
Termix-SSH:dev-1.5.0from
neooriginal:fix/login-keyboard
Aug 29, 2026
Merged

fix: keep the login fields above the software keyboard#55
LukeGus merged 3 commits into
Termix-SSH:dev-1.5.0from
neooriginal:fix/login-keyboard

Conversation

@neooriginal

@neooriginal neooriginal commented Aug 24, 2026

Copy link
Copy Markdown

Overview

The keyboard covered the input fields in the auth flow. Fixed for every step (server, login, TOTP, signup, reset).

  • Fixed: fields no longer sit behind the software keyboard

Changes Made

KeyboardAvoidingView measures its own frame relative to its parent. The auth flow put the safe-area insets on that parent, so the view under-shot by exactly insets.top + insets.bottom — around 93pt on a notched iPhone — and the keyboard covered the inputs. On Android no behavior was set at all, which stopped working once the app went edge-to-edge: the window no longer resizes under the IME.

  • Safe-area padding moves inside the avoiding view, so its frame spans the whole screen and the displacement equals the keyboard height exactly
  • Android gets behavior="height", matching Dialog and TwoFactorAuth
  • The bottom inset moves to the scroll content
  • The brand mark is dropped while typing so short screens keep the whole form visible, and a swipe now dismisses the keyboard

Checklist

  • Code follows project style guidelines
  • Supports mobile and desktop UI/app (if applicable)
  • Verified on a device build

Notes

The same pattern still exists in QuickConnect (sheet input, no Android behavior) — left out of scope here.

Pre-existing on main (not from this branch): format:check, tsc --noEmit and verify:android-network-security already fail.

🤖 AI assisted code with Claude Code

LukeGus and others added 3 commits August 13, 2026 21:14
KeyboardAvoidingView measures its own frame relative to its parent. The
auth flow put the safe-area insets on that parent, so the view under-shot
by exactly insets.top + insets.bottom — around 93pt on a notched iPhone —
and the keyboard covered the inputs. Android had no behavior set at all,
which stopped working once the app went edge-to-edge: the window no
longer resizes under the IME.

- move the safe-area padding inside the avoiding view, so its frame spans
  the whole screen and the displacement equals the keyboard height
- give Android behavior="height", matching the other screens
- carry the bottom inset on the scroll content instead
- drop the brand mark while typing so short screens keep the whole form
  visible, and allow a swipe to dismiss the keyboard

Applies to every step of the flow (server, login, TOTP, signup, reset).
Copilot AI lite review requested due to automatic review settings August 24, 2026 07:37

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@LukeGus
LukeGus changed the base branch from main to dev-1.5.0 August 29, 2026 22:02
@LukeGus

LukeGus commented Aug 29, 2026

Copy link
Copy Markdown
Member

LGTM, thanks.

@LukeGus
LukeGus merged commit a6bc51a into Termix-SSH:dev-1.5.0 Aug 29, 2026
1 check passed
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.

3 participants