Skip to content

feat(ui): refine mobile sidebar controls, gestures, and title sizing - #208

Merged
kahme247 merged 14 commits into
kahme247:mainfrom
andrebrait:fix/session-info-topbar
Oct 5, 2026
Merged

kahme247 merged 14 commits into
kahme247:mainfrom
andrebrait:fix/session-info-topbar

Conversation

@andrebrait

@andrebrait andrebrait commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Keep session information in the mobile header only; desktop retains its composer control, usage coloring, popover, /session shortcut, and safe Escape dismissal.
  • Make the mobile workspace drawer full-screen with its own top-left X. Place the file-panel opener in the upper bar and a separate top-right X inside the file-panel toolbar, including a continuous mobile bottom divider.
  • Recognize clear horizontal swipes from anywhere on mobile app surfaces, not a narrow device-edge strip. Swipe right to open the left sidebar or close the right one; swipe left for the opposite action. Reuse existing drawer state, slide animations, history, and modal focus.
  • Preserve vertical scrolling, native horizontal scrollers, text editing/selection, multi-touch, popup priority, normal taps, and Git-list ownership. Follow overall dominant-axis movement with latched recognition, allowing curved thumb paths, initial corrections, and shorter deliberate drags. Wait for meaningful travel before taking ownership; keep tracking browser-owned moves without calling preventDefault on non-cancelable events.
  • Restore embedded previews to full width. Their separate browsing contexts retain native input; the surrounding toolbar accepts interior swipe-to-close without requiring contact with the phone edge.
  • Keep the session-title pill centered and content-sized: short names no longer fill a fixed box; long names grow up to available header space without overlapping controls.

Verification

  • Trusted Chromium touch input in the real Next preview: all four transitions at 320/390/640px start well inside the screen (x=140/240), with no edge contact.
  • Native horizontal scroller moved scrollLeft 142 without opening a drawer; vertical chat scrolling moved scrollTop 185; the actual reasoning popup remains protected.
  • Real Git changes collection closes from an interior swipe. A sandboxed iframe remains full-width and scrolls natively; an interior toolbar swipe closes its panel.
  • The real sidebar project menu is dismissed by the first touch without also closing its drawer; a second deliberate interior swipe closes the drawer. Late text-selection and curved-drag regressions are covered.
  • Twenty-three behavioral gesture regressions; full source suite: 1,154 passed, 5 skipped, 0 failed. Typecheck passes; lint has 11 existing warnings and no errors.
  • Trusted native touch sequences also prove curved and shorter swipes, corrective starts in both directions, and vertical wobble scrolling (scrollTop 0 → 212) without opening a drawer. System and Branch popups retain priority even when outside-pointer handlers dismiss them before touchstart.
  • Existing session-title sizing, focus, Escape, and reduced-motion checks remain applicable and unchanged.

Recognizer references: react-swipeable's pinned implementation, Hammer pan recognition, MDN touch-action, and Chrome scrolling guidance. Reuse their dominant-axis and recognition-latching approach inside the existing app-specific hook; no dependency added. Browser/OS gesture-navigation arbitration on physical Android/iOS devices is not reproduced by Chromium emulation; buttons remain available.

Review-only companion with identical head/base: andrebrait#75. Deployment uses the complete integration alongside all other current contributions.

@andrebrait

Copy link
Copy Markdown
Collaborator Author

Review-only companion: andrebrait#75

@andrebrait

Copy link
Copy Markdown
Collaborator Author

Condensed adversarial review completed: no blocking findings. Addressed safe-area spacing and a toolbar min-size interaction, and clarified Escape dismissal documentation. The optional file-drag interception suggestion was not adopted: attachment handling remains with the existing composer/drop flow.

Latest-upstream desktop/mobile smoke confirms the header control opens the panel below the bar, with no duplicate in the composer. CI identified the old SSR-only compact-toolbar title assertion; it is being removed because that location is deliberately obsolete, rather than re-pinning markup. The integrated production build will run the full regression suite before deployment.

@andrebrait
andrebrait marked this pull request as ready for review October 5, 2026 00:32
andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
Squashed from origin/fix/session-info-topbar (e92e38f) onto upstream/main.
@andrebrait

Copy link
Copy Markdown
Collaborator Author

Deployment gate: integration build passed at 05f0c65 (latest upstream c4f89b6 plus all open PRs #200 and #208). The integration script verified origin/deploy/integration after pushing. Production artifact: /opt/ompweb-patched/releases/05f0c6565f97.

Upstream Linux/Windows CI is green. Codex on the matching companion completed against e92e38f without major issues; CodeRabbit is still reviewing. Deploying the verified integration release, then verifying the actual frontend on port 30179 and API on 30185.

andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
Squashed from origin/fix/session-info-topbar (adc77f3) onto upstream/main.
@andrebrait

Copy link
Copy Markdown
Collaborator Author

Final release gate: shared head adc77f3 has green Linux and Windows CI (run 37249200246). Integration d382f13 passed production build, lint, and the full test suite and is verified pushed to origin/deploy/integration.

Review handling: Codex completed without major issues. CodeRabbit focus finding fixed and browser-verified; its right-panel overlap finding was disproved with deployed bounding-box and inert-overlay evidence. Both companion review threads are resolved.

Deploying artifact /opt/ompweb-patched/releases/d382f13739f7, then checking the actual production frontend and final /session focus restoration.

@andrebrait

Copy link
Copy Markdown
Collaborator Author

Final deployment verified after restart: both ompweb-pwa.service (30179) and ompweb-api.service (30185) are active on d382f13. The recorded deployment receipt and current release agree.

Actual deployed frontend smoke (not a dev preview): session-information button is in the top-right header only; desktop 1440px button at (1368,4), mobile 320px button at (232,0) with a 44px touch target. The stats panel opens below the header and fits the viewport. /session focuses the panel, and Escape restores the composer.

Shared PR head: adc77f3. Linux/Windows CI green. Condensed adversarial review completed; Codex completed without major issues; both CodeRabbit threads resolved (one verified false positive, one fixed and smoke-tested). origin/deploy/integration is verified pushed at d382f13, so the open PR remains carried by future integration rebuilds.

@andrebrait

Copy link
Copy Markdown
Collaborator Author

Follow-up mobile refinements are being implemented in an isolated worktree, without modifying the primary checkout or concurrent worktrees: header relocation becomes mobile-only, the fixed right toggle becomes borderless/full-height, the left mobile drawer becomes full-screen with a visible close control, and the title is centered/widened.

Recovered the previously omitted effort-icon/layout work into its own PR: #209. Both PRs will be carried by a fully rebuilt integration before deployment; no one-off preview deployment.

@andrebrait andrebrait changed the title fix(ui): move session information to the top-right bar fix(ui): refine mobile header and full-screen sidebar chrome Oct 5, 2026
@andrebrait

Copy link
Copy Markdown
Collaborator Author

Responsive refinements are now published on shared head 5450ccc; Linux and Windows CI are green. The single condensed adversarial review found two header issues (Settings observer re-attachment and Compact-mode CSS specificity), both fixed and browser-verified. Full local suite passed 1,131 tests with 5 platform skips and no failures; typecheck and lint have no errors.

Canonical competing effort work is #210, not closed duplicate #209; message actions are #212. Integration prs verified all current heads (#200, #208, #210, #212) without rewriting any other contributor worktree. Rebuilding all four contributions for the single production API/UI service on port 30185. No one-off preview deployment.

andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…r chrome

Squashed from origin/fix/session-info-topbar (5450ccc) onto upstream/main.
@andrebrait

Copy link
Copy Markdown
Collaborator Author

Latest requested composer correction is published in 283409c: model remains left; effort/Fast/Slow/microphone/Send-or-Stop form the right-hand cluster. The existing spacer now precedes effort, mobile no longer hides it or adds a second auto margin before Send, and wrapped rows justify to the right. Browser geometry checks passed at 1280/390/320px.

Codex Escape finding fixed and tested against the actual global shortcut hook: a visible context panel consumes Escape even after focus leaves it, without aborting a run; other popup priority and closed-panel abort behavior are preserved. No verification scaffolds remain in the commit. Rebuilding every live contribution before deployment.

andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…r chrome

Squashed from origin/fix/session-info-topbar (283409c) onto upstream/main.
@andrebrait

Copy link
Copy Markdown
Collaborator Author

Final deployment gate: shared head 283409c is green on Linux and Windows (run 37263321226). The combined integration build, lint, and full test suite passed at 9559aa0, and origin/deploy/integration is verified pushed.

The current contribution set exactly matches the recorded squash sources: #200 9dbf567, #208 283409c, #210 fa2d4f9, #212 c596539. No competing contribution is omitted. CodeRabbit completed the requested responsive review without actionable comments; Codex Escape finding is fixed, browser-proven, and its review thread resolved.

Deploying only through integration deploy to the single production ompweb-api.service on port 30185. The API restart may interrupt this session; after resume I will verify the actual live mobile/desktop controls, full-screen left drawer, centered title, and right-group alignment.

@andrebrait

Copy link
Copy Markdown
Collaborator Author

Live deployment verified: the single production ompweb-api.service on 30185 is active on integration 9559aa0; the retired ompweb-pwa service remains inactive. Current release and deployment receipt agree.

Actual production browser checks passed:

  • Desktop session information remains in the composer; mobile information is in the header.
  • Borderless fixed toggle exactly matches the 36px desktop / 44px mobile header height.
  • Centered title pill is 560px on the wide desktop header and 190px at 390px mobile.
  • Mobile left drawer fills 390x844 and 320x740, has no gray backdrop and has a visible working X close button.
  • Effort, Fast, Slow, microphone and primary action are adjacent in a right-aligned cluster; the model remains left.
  • Mobile effort-menu glyphs remain consistently sized at 16px, and the other agents’ Markdown/Fork labels are present.
  • Escape closes visible session information even after focus leaves it.

The complete current contribution set (#200, #208, #210, #212) is preserved in this fully built and pushed integration. Linux/Windows CI is green; condensed and bot review findings are resolved. No one-off deployment or temporary verification page is shipped.

andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…r chrome

Squashed from origin/fix/session-info-topbar (fb925ca) onto upstream/main.
andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…r chrome

Squashed from origin/fix/session-info-topbar (fb925ca) onto upstream/main.
@andrebrait

andrebrait commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator Author

Live verification: deployed through the complete integration at 64af91c, carrying #200, #208, #210, #212 and #213 at their current heads. Single ompweb-api unit active; retired ompweb-pwa remains disabled/inactive. Actual browser on port 30185: 320/390/768/1024/1440px confirms header-owned opener, in-panel right-aligned X, keyboard closure/focus restoration, correct mobile-only context placement, and no horizontal overflow. Mobile pointer close and modal Escape pass; full-screen left drawer remains intact. Linux/Windows upstream CI green. Requested reviews continue on identical fork companion andrebrait#75.

@andrebrait

Copy link
Copy Markdown
Collaborator Author

Review round complete for fb925ca: both Codex and CodeRabbit finished on identical companion andrebrait#75 without actionable findings. CodeRabbit confirms covered commit fb925ca; its generic docstring warning is not a project gate, and its sandbox ESLint install timed out. Local typecheck/lint and full suite passed, and Linux/Windows CI is green. Live integration verification already recorded above.

@andrebrait

Copy link
Copy Markdown
Collaborator Author

Follow-up: restore the missing bottom border on the mobile close-button cell. One mobile-only CSS declaration using var(--border); 44px touch-target dimensions and desktop styles unchanged. Actual browser regression fails before (0px border), passes after at 320/390/640px (1px solid); 768/1440px remain borderless. Auto/Compact/Accessible CSS modes verified. Typecheck/lint passed with existing warnings; full suite 1,131 passed, 5 skipped. Will deploy through the complete integration.

andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…r chrome

Squashed from origin/fix/session-info-topbar (5380ce4) onto upstream/main.
@andrebrait

Copy link
Copy Markdown
Collaborator Author

Border correction is deployed through the complete five-PR integration at 71a3c6c. Actual browser at port 30185 confirms continuous 1px mobile border at 320/390/640px with unchanged 44x44 close button; desktop 768/1440 remains borderless. Pointer close returns keyboard focus. Single ompweb-api is active; retired ompweb-pwa remains inactive/disabled. Linux/Windows CI and Codex review passed. CodeRabbit declined due to its review cooldown; retry is scheduled for the announced reset rather than treating its older review as coverage.

andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…r chrome

Squashed from origin/fix/session-info-topbar (5380ce4) onto upstream/main.
@andrebrait andrebrait changed the title fix(ui): refine mobile header and full-screen sidebar chrome feat(ui): refine mobile sidebar controls, gestures, and title sizing Oct 5, 2026
andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…and title sizing

Squashed from origin/fix/session-info-topbar (a723131) onto upstream/main.
andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…and title sizing

Squashed from origin/fix/session-info-topbar (f12d622) onto upstream/main.
@andrebrait

Copy link
Copy Markdown
Collaborator Author

Live integration 78cb732 is deployed, carrying the current heads of #200, #208, #210, #212, #213 and #214. Trusted Chromium touch input on port 30185 verifies all four mirrored edge gestures at 320/390/640px, owning-drawer focus, realistic small-step swipes, native chat scrolling, and protection of the actual reasoning menu and slash picker. A sandboxed iframe fixture scrolls natively and closes through its parent-owned edge. Short/long title fixtures at 390/1440/1920 show content-sized short names and bounded expansion; the restored session title is visibly no longer stretched. Linux/Windows CI is green at f12d622; source suite 1,140 passed, 5 skipped. Codex popup finding was fixed by its suggested selector extension and resolved. Updated-head bot review requests remain pending on identical companion andrebrait#75.

andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…and title sizing

Squashed from origin/fix/session-info-topbar (146c1de) onto upstream/main.
@andrebrait

Copy link
Copy Markdown
Collaborator Author

Final correction deployed through complete integration c707a78. Actual trusted touch input on port 30185 confirms all four gestures, swipe-close over the real Git changes collection, Explorer-after-Git closing, and continued composer-menu protection. Short/long title sizing remains content-sized and bounded. Current Linux/Windows CI is green; full source suite 1,141 passed, 5 skipped. Both bot reviews completed, actionable findings are resolved, and the final bot-requested ownership fix follows the requested-fix re-review exception. Optional wiring-test nit was intentionally declined per policy. All six current contributions remain integrated.

@andrebrait
andrebrait force-pushed the fix/session-info-topbar branch from 146c1de to 73aa57f Compare October 5, 2026 11:43
andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…and title sizing

Squashed from origin/fix/session-info-topbar (68846b1) onto upstream/main.
@andrebrait

Copy link
Copy Markdown
Collaborator Author

Published adjustment is deployed through full integration c497a5f. Trusted touch input on port30185 confirms all four gestures at320/390/640 with starts x140/240 inside the screen, not at a device edge. Native horizontal and vertical scrolling remain unclaimed; the real Git collection closes from an interior swipe. The real project menu is dismissed by the first touch without also navigating, and a second deliberate swipe closes its drawer. Source suite1,146 passed,5 skipped; Linux/Windows CI and complete integration build passed. Requested Codex/CodeRabbit review results are still being handled on identical companion andrebrait#75.

andrebrait added a commit to andrebrait/ompweb that referenced this pull request Oct 5, 2026
…and title sizing

Squashed from origin/fix/session-info-topbar (fb5f536) onto upstream/main.
@andrebrait

Copy link
Copy Markdown
Collaborator Author

Refinement fb5f536 is deployed through the complete six-PR integration 4e0d172 (integration branch pushed). Actual live Chromium touch input passes curved and shorter swipes, initial correction in both directions, and vertical wobble scrolling without opening a drawer. System popup priority also passes; no page exceptions observed. Full source suite: 1,154 passed, 5 skipped; Ubuntu and Windows CI are green. Codex and CodeRabbit reviewed the identical companion head with no new actionable findings. Physical Android/iOS OS-level gesture arbitration remains a manual-device verification limit.

@kahme247
kahme247 merged commit 27d0121 into kahme247:main Oct 5, 2026
3 checks passed
kahme247 added a commit that referenced this pull request Oct 5, 2026
@andrebrait
andrebrait deleted the fix/session-info-topbar branch October 6, 2026 09:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants