fix(ui): add opt-in mobile keyboard resize mode and stabilize touch terminal input (#1107)

* fix(ui): add opt-in mobile keyboard resize mode

* fix(ui): stabilize touch terminal input and tab layout

* fix(ui): narrow touch terminal handling to mobile and tablet

* fix(ui): refine touch terminal input handling

* fix(ui): re-key terminal viewport on session id

* fix(ui): avoid touch-laptop terminal overlay regression

* fix(ui): hide ghostty system caret surfaces

* fix(settings): normalize mobile keyboard mode sanitization

* fix(ui): honor terminal quick keys toggle on mobile

* fix(ui): gate mobile keyboard resize mode on iOS

---------

Co-authored-by: vhqtvn <8930337+vhqtvn@users.noreply.github.com>
Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
vhqtvn
2026-05-05 12:26:34 +03:00
committed by GitHub
co-authored by vhqtvn Bohdan Triapitsyn
parent 63b4a5b996
commit 962ee41bba
25 changed files with 604 additions and 128 deletions
@@ -1384,6 +1384,11 @@ export const settingsDict = {
'settings.openchamber.visual.field.pwaInstallOrientationAria': 'PWA install orientation',
'settings.openchamber.visual.field.selectOrientationPlaceholder': 'Select orientation',
'settings.openchamber.visual.actions.resetInstallOrientationAria': 'Reset install orientation',
'settings.openchamber.visual.field.mobileKeyboardMode': 'Mobile Keyboard Behavior',
'settings.openchamber.visual.field.mobileKeyboardModeHint': 'Default browser behavior is safest. Resize content asks supported browsers to shrink the app when the on-screen keyboard opens.',
'settings.openchamber.visual.field.mobileKeyboardModeAria': 'Mobile keyboard behavior',
'settings.openchamber.visual.field.selectMobileKeyboardModePlaceholder': 'Select keyboard behavior',
'settings.openchamber.visual.actions.resetMobileKeyboardModeAria': 'Reset mobile keyboard behavior',
'settings.openchamber.visual.field.interfaceFontSize': 'Interface Font Size',
'settings.openchamber.visual.field.interfaceFont': 'Interface Font',
'settings.openchamber.visual.field.selectInterfaceFontAria': 'Select interface font',
@@ -1460,6 +1465,10 @@ export const settingsDict = {
'settings.openchamber.visual.option.pwaOrientation.portrait.description': 'Install the app locked to portrait.',
'settings.openchamber.visual.option.pwaOrientation.landscape.label': 'Landscape lock',
'settings.openchamber.visual.option.pwaOrientation.landscape.description': 'Install the app locked to landscape.',
'settings.openchamber.visual.option.mobileKeyboardMode.native.label': 'Follow browser',
'settings.openchamber.visual.option.mobileKeyboardMode.native.description': 'Use the browser default for panning and viewport changes when the keyboard opens.',
'settings.openchamber.visual.option.mobileKeyboardMode.resizeContent.label': 'Resize content',
'settings.openchamber.visual.option.mobileKeyboardMode.resizeContent.description': 'Ask supported browsers to shrink the app layout instead of relying only on panning.',
'settings.openchamber.visual.option.userMessageRendering.markdown.label': 'Markdown',
'settings.openchamber.visual.option.userMessageRendering.markdown.description': 'Render user text with markdown formatting.',
'settings.openchamber.visual.option.userMessageRendering.plain.label': 'Plain text',