diff --git a/.changeset/tidy-codex-shift-arrows.md b/.changeset/tidy-codex-shift-arrows.md index a46d4fce..ff430edf 100644 --- a/.changeset/tidy-codex-shift-arrows.md +++ b/.changeset/tidy-codex-shift-arrows.md @@ -2,4 +2,4 @@ "aicodeman": patch --- -Add Shift+Left and Shift+Right buttons to the default and extended mobile agent keyboard bars, enabling Codex queued-message editing and prompt-stack navigation. Flush locally buffered drafts before navigation and keep terminal focus after taps. +Add Shift+Left and Shift+Right buttons to the default and extended mobile agent keyboard bars, shown only on Codex sessions, enabling Codex queued-message editing and prompt-stack navigation. Flush locally buffered drafts before navigation and keep terminal focus after taps. diff --git a/README.md b/README.md index e53c540f..27ba7db2 100644 --- a/README.md +++ b/README.md @@ -209,7 +209,7 @@ The most responsive AI coding agent experience on any phone. Full xterm.js termi Password typing on phoneQR code scan — instant auth -- **Keyboard accessory bar** — `⇧←` / `⇧→` send Shift+Left / Shift+Right in both default and extended agent layouts (Codex defaults: edit the last queued message / return through the prompt stack); `/init`, `/clear`, `/compact` quick-action buttons above the virtual keyboard; destructive commands require a double-press to confirm, so you never fire one by accident +- **Keyboard accessory bar** — `/init`, `/clear`, `/compact` quick-action buttons above the virtual keyboard; destructive commands require a double-press to confirm, so you never fire one by accident; on Codex sessions the bar also shows `⇧←` / `⇧→` (Shift+Left / Shift+Right: edit the last queued message / return through the prompt stack) - **Dedicated Enter button** — replays the keypress through the terminal, so text buffered by local echo is flushed first rather than stranded - **Swipe navigation & smart keyboard handling** — swipe left/right to switch sessions; toolbar and terminal shift up when the keyboard opens (`visualViewport` API) - **Built for phones** — safe-area insets for notch and home indicator, 44px touch targets, bottom-sheet case picker, native momentum scrolling diff --git a/src/web/public/keyboard-accessory.js b/src/web/public/keyboard-accessory.js index 4215cd35..9e954ff5 100644 --- a/src/web/public/keyboard-accessory.js +++ b/src/web/public/keyboard-accessory.js @@ -4,8 +4,10 @@ * Defines three exports: * * - KeyboardAccessoryBar (singleton object) — Quick action buttons shown above the virtual - * keyboard on mobile: arrow up/down, /init, Tab, Shift+Left/Right, paste, Esc, and dismiss (the extended - * bar adds /clear, /compact, Shift+Tab and more). Tab flushes any locally-buffered + * keyboard on mobile: arrow up/down, /init, Tab, paste, Esc, and dismiss (the extended + * bar adds /clear, /compact, Shift+Tab and more). Shift+Left/Right ship in both agent + * layouts but are revealed only on Codex sessions (`codex-enabled` marker class on the + * bar, synced on every session switch), since they are Codex bindings. Tab flushes any locally-buffered * prompt text to the PTY before sending \t, so completion applies to what was typed. * The paste button opens a dialog that handles both text paste and image attach * (native picker + best-effort image paste, routed through app._uploadAndInsertImages). @@ -661,8 +663,8 @@ const KeyboardAccessoryBar = { - - + +