Repository navigation
Phone app bar for Tabs and ⋮, and an input bar below the output - #438
Merged
Merged
Conversation
IvoryHeart
force-pushed
the
mobile-app-bar
branch
from
October 16, 2026 21:12
b3b529e to
890008e
Compare
On phones, three floating capsules (views, Ranger/Tabs/Workspaces, and Terminal/Files/Changes) and a collapse toggle sat over the terminal output. The app bar now holds Tabs, with the workspace's tab count turning red when another agent is blocked on the user, and a ⋮ button. ⋮ opens a menu that shows the same controls as labelled 48px rows; choosing one, the backdrop or Close dismisses it. The capsules no longer float, and the brand name and version yield their space to the app bar. The initial JS budget rises from 802 to 804 KiB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AWodzpMyqdBcX25EE9HhDG
On phones, the floating Type button sat over the bottom-right of the terminal output and opened the dock without the keyboard. It becomes a messaging-style bar in the terminal's layout, below the output: a full- width Message field opens Composer with its draft focused, so one tap raises the keyboard, and a terminal button beside it opens Direct. The bar never covers output, names an unsent draft (Continue draft...), and during a long-press selection it stays hidden but keeps its height, so xterm does not resize and drop the selection. Its targets are 48px and scale with the UI. The other floating controls are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AWodzpMyqdBcX25EE9HhDG
The ⋮ menu is a popup layer like the tab sheet, so the phone's Back closes it before the input dock or a mobile view. Combined with the system Back hook, the initial JS budget rises to 805 KiB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AWodzpMyqdBcX25EE9HhDG
IvoryHeart
force-pushed
the
mobile-app-bar
branch
from
October 17, 2026 23:21
5968180 to
fd41d01
Compare
Keep one Message editor in the global bottom bar with Direct, Tabs and More. Preserve pane-scoped drafts and caret, explicit input authorization, IME and upload locks, one-touch Insert/Send, and guarded Direct upload destinations. Match the Tabs and More popups, hide input tools on secondary pages without resetting them, and fill the mobile Commits page without duplicating bottom safe-area space. Retain desktop layout and honest non-Git diagnostics. Migrate the legacy floating-row test to the unified editor's outside-pointer blur contract while checking draft, caret and IME-lock preservation. Manual validation: Chrome against the isolated backend, narrow/landscape and 80-150% UI scales, modeled safe area and short viewport; the preview was accepted by the user. Native iOS keyboard, IME and picker acceptance was not independently completed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #435. This PR now includes the input bar from #437, which it supersedes, so the proposal lands as one change.
Summary
On phones, three floating capsules and the floating Type button sit over the terminal output. This PR moves the controls into an app bar and puts input in a bar below the output, following Android and iOS conventions.
App bar (first commit)
Input bar (second commit)
.terminal-mainbecomes a column on phones, so the bar never covers terminal text.data-reserved,visibility: hidden). Without that, xterm resizes and the selection is lost.--ui-scale, like the existing touch targets.App.tsxloses the floating Type button and the draft state that only it used;mobile-nav.cssloses its styles. The desktop coarse-pointer keyboard button is unchanged.Back (third commit)
The ⋮ menu is a popup layer for the system Back hook from #433, like the tab sheet: the phone's Back closes it first.
The initial JS budget goes from 804 to 805 KiB (804.3 KiB with this change).
FEATURES.mddescribes both bars and the Back order.Follow-ups if you take this: the collapse toggle and its drag placement have no role on phones any more, and could be removed in a separate PR.
Tests
TerminalView.inputMode.test.ts, new test "the phone input bar opens Composer with its draft focused, or Direct". It checks:The app bar has no new automated tests; per CONTRIBUTING, UI was checked in a browser.
Validation
bun run format:check,bun run lint,bun run typecheck,bun run typecheck:bunandbun run build:sitepass.bun run test:quick: 3731 pass, 0 fail.🤖 Generated with Claude Code
https://claude.ai/code/session_01AWodzpMyqdBcX25EE9HhDG