You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The "Bottom navigation" setting (Settings → General, general.mobileTitlebarPosition) only applies below 767px. It is implemented with createMediaQuery("(max-width: 767px)") in:
packages/app/src/settings/general/general.tsx — the settings row is wrapped in <Show when={mobile()}>
packages/app/src/shell/titlebar/titlebar.tsx — bottom = mobile() && position === "bottom"
packages/app/src/shell/shell.tsx — bottomTitlebar = mobile() && position === "bottom"
On an iPad the viewport is 744–1032 CSS px, so the row is hidden and the title bar with session tabs stays at the top. The same happens in any browser window wider than 767px.
Proposal: let the setting apply to any web viewport (platform === "web"), keeping the phone layout and leaving the desktop app unchanged.
Alternative: add a third tabs layout option (Horizontal / Vertical / Bottom) instead of overloading the mobile toggle.
packages/app/src/session/screen.tsx already reads the setting without a width gate, so the session mobile view tabs follow it; only the title bar and the settings row are gated.
Happy to send a PR with a Playwright regression spec at iPad width if the approach is acceptable.
Thanks for the detailed write-up and for offering a PR, @Mattheinrichs!
To restate the request: let the Bottom navigation setting (general.mobileTitlebarPosition) apply above 767px, so tablets like the iPad and wider browser windows can have the title bar and session tabs at the bottom. One way is to widen the gate to web viewports. The other is a separate Horizontal / Vertical / Bottom tabs layout option.
You're right about the code. The width check is in shell/shell.tsx, shell/titlebar/titlebar.tsx and the settings row in settings/general/general.tsx, while session/screen.tsx already reads the setting without one. The option was built for phones only, so I'm treating this as a feature request. Maintainers will consider it, including which of the two approaches they'd prefer, so it's probably worth waiting for their input before opening a PR.
I didn't find an existing request for this. Loosely related: #46388 (mobile shell and settings refinements) and #16423 (tabs for Review/Files on mobile).
Closing this. The design call is the maintainers' and I am not going to implement either option, so leaving it open would imply work in progress that is not there.
The analysis stands if anyone picks it up: the width gate is in shell/shell.tsx and shell/titlebar/titlebar.tsx, while session/screen.tsx already reads general.mobileTitlebarPosition without one.
Activity
opencode-agent commentedon Oct 23, 2026
Thanks for the detailed write-up and for offering a PR, @Mattheinrichs!
To restate the request: let the Bottom navigation setting (
general.mobileTitlebarPosition) apply above 767px, so tablets like the iPad and wider browser windows can have the title bar and session tabs at the bottom. One way is to widen the gate to web viewports. The other is a separate Horizontal / Vertical / Bottom tabs layout option.You're right about the code. The width check is in
shell/shell.tsx,shell/titlebar/titlebar.tsxand the settings row insettings/general/general.tsx, whilesession/screen.tsxalready reads the setting without one. The option was built for phones only, so I'm treating this as a feature request. Maintainers will consider it, including which of the two approaches they'd prefer, so it's probably worth waiting for their input before opening a PR.I didn't find an existing request for this. Loosely related: #46388 (mobile shell and settings refinements) and #16423 (tabs for Review/Files on mobile).
Mattheinrichs commentedon Oct 30, 2026
Closing this. The design call is the maintainers' and I am not going to implement either option, so leaving it open would imply work in progress that is not there.
The analysis stands if anyone picks it up: the width gate is in
shell/shell.tsxandshell/titlebar/titlebar.tsx, whilesession/screen.tsxalready readsgeneral.mobileTitlebarPositionwithout one.