Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover, interactive-widget=resizes-content"
/>
<meta name="description" content="Parallel agentic development with Electron + React" />
<meta name="theme-color" content="#1e1e1e" />
Expand All @@ -19,7 +19,8 @@
background: var(--color-background, #1e1e1e);
}
#root {
height: 100vh;
height: 100vh; /* fallback for older browsers */
height: 100dvh;
overflow: hidden;
}
</style>
Expand Down
2 changes: 2 additions & 0 deletions src/browser/components/VimTextArea.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,8 @@ export const VimTextArea = React.forwardRef<HTMLTextAreaElement, VimTextAreaProp
autoCorrect="off"
autoCapitalize="none"
autoComplete="off"
// Optimize for iPadOS/iOS keyboard behavior
enterKeyHint="send"
{...rest}
style={{
...(rest.style ?? {}),
Expand Down
38 changes: 38 additions & 0 deletions src/browser/styles/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -584,6 +584,44 @@ body,


/* Tailwind utility extensions for dark theme surfaces */
/*
* iPadOS/iOS keyboard accessory bar fix
*
* On iPadOS with external keyboard (and iOS with software keyboard),
* Safari shows an input accessory bar above the keyboard containing
* language switch, form navigation arrows, and microphone/dictation.
* This bar can cause layout shifts when focusing inputs.
*
* The visual viewport API tracks the actual visible area excluding
* system UI like keyboard accessory bars. We use CSS environment
* variables to handle safe areas and ensure content stays visible.
*/

/* Ensure the app uses the full viewport height accounting for browser chrome */
html,
body,
#root {
/* Use dvh (dynamic viewport height) on supported browsers - this accounts for
mobile browser chrome and keyboard accessory bars */
min-height: 100dvh;
/* Fallback for older browsers */
min-height: 100vh;
}

/* Handle safe areas for notched devices and keyboard accessory bars */
@supports (padding-bottom: env(safe-area-inset-bottom)) {
/* Apply padding to account for iOS safe areas (home indicator, notch) */
#root {
padding-bottom: env(safe-area-inset-bottom, 0);
}
}

/* For PWA mode, ensure the viewport meta tag handles the keyboard properly
Note: This is a CSS-only solution; the actual fix requires the viewport
meta tag to include 'interactive-widget=resizes-content' which is handled
in index.html */


@utility plan-surface {
background: var(--surface-plan-gradient);
border: 1px solid var(--surface-plan-border);
Expand Down