fix: mobile UI — input layout, sidebar overlap, session switch independence#498
fix: mobile UI — input layout, sidebar overlap, session switch independence#498
Conversation
🤖 Multi-Model Code Review — R1 (PR #498)CI Status: ℹ️ No CI checks configured SummaryMobile UI improvements: bridge session switch independence, compact input layout with mode dropdown, sidebar flyout overlap fix, Android keyboard handling, and restored log/prompts in status bar. 🔴 CRITICAL — Test assertion null bugFile: Assert.NotEqual("switch-b", _copilot.GetActiveSession()?.Name ?? "switch-b");If Additionally, the assertion is too weak — it passes trivially because Assert.Equal("switch-a", _copilot.GetActiveSession()?.Name);🟡 MODERATE — AdjustResize deprecated on API 30+ / edge-to-edge conflictFile:
Recommendation: Test on an API 30+ device. If the keyboard still obscures content, consider 🟡 MODERATE — BroadcastSessionsList sends desktop active session to mobileFile: After removing Recommendation: Consider removing 🟡 MODERATE — Blazor select null propagationFile: <select ... @onchange="e => OnSetInputMode.InvokeAsync(e.Value?.ToString())">
@onchange="e => OnSetInputMode.InvokeAsync(e.Value?.ToString() ?? InputMode)"Test Coverage
Verdict:
|
…switch - Don't switch desktop active session when mobile sends SwitchSession via bridge - Compact mobile input: mode switcher as dropdown, smaller textarea, hide status extras - Fix sidebar filter bar (Attention/All/Idle) overlapping session list on mobile flyout - Add mode-select-mobile dropdown (hidden on desktop, shown on mobile 640px) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…sessions - Remove sidebar-organize-shell-compact from flyout (caused position:absolute on filter bar) - Add inline style on sidebar-top-tools in flyout to force position:static Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…estore log/prompts - Add WindowSoftInputMode=AdjustResize to MainActivity so WebView shrinks when keyboard opens - Use 100dvh (with 100vh fallback) for page height to respect dynamic viewport - Remove nav-bar-height padding from mobile status bar (AdjustResize handles it) - Restore log/prompts in mobile status bar (was hidden, now visible with footnote size) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ry broadcast
- Test: Assert.Equal("switch-a", ...) instead of brittle NotEqual with null fallback
- Select: null-guard onchange with ?? InputMode fallback
- Bridge: remove BroadcastSessionsList() from SwitchSession (no state changed)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
6f6a76a to
b9075c6
Compare
CSS cleanup (from post-merge review of #498): - Restore env(safe-area-inset-bottom) on mobile status bar for gesture nav clearance - Remove dead 'display: block' before 'all: unset' in mode-select-mobile - Consolidate duplicate .mobile-flyout-sidebar rules PR number on mobile: - Add PrNumber to AgentSessionInfo and SessionSummary (bridge message) - Populate PrNumber from WorktreeInfo when linking session to worktree - WsBridgeServer includes PrNumber in session list broadcasts - Mobile sync paths map PrNumber from SessionSummary to AgentSessionInfo - ExpandedSessionView uses Session.PrNumber for prompt auto-fill on mobile Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Follow-up to #498 addressing post-merge review findings. ### Changes 1. **Restore safe-area-inset-bottom** on mobile status bar padding — prevents gesture nav overlap when keyboard is closed 2. **Remove dead CSS** — `display: block` before `all: unset` on mode-select-mobile was immediately reset 3. **Consolidate duplicate rules** — ### Testing - 3,129 tests passing - CSS-only changes, all gated behind `.mobile-flyout-sidebar` or `@media (max-width: 640px)` — desktop untouched --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Purely mobile fixes, split from #487.
Changes
Desktop is untouched — all CSS changes are inside
@media (max-width: 640px)or scoped to.mobile-flyout-sidebar.