Improve compact mobile UI controls#564
Conversation
Add an explicit AGENTS.md styling guideline that prevents agents from introducing rounded corners in UI changes unless the user asks for that specific exception. This keeps future UI work aligned with the project's square-corner visual direction and avoids regressions from default border-radius patterns in component styling.
Replace the always-visible message stream scroll button stack with a compact ArrowUpDown trigger that expands on hover or pointer interaction. This reduces overlap with message item controls while keeping hold, scroll-to-top, and scroll-to-bottom actions available from the same floating control area. Use pointer-up handlers for both opening the flyout and activating expanded controls so touch interactions do not accidentally trigger newly revealed buttons during the same press sequence. Touch and pen actions explicitly close the pinned-open state, while mouse hover can continue showing the expanded controls until the pointer leaves. Add a localized label for the collapsed trigger across existing locales and nudge the floating control anchor slightly left/up within safe-area bounds. Validation: npm run typecheck --workspace @codenomad/ui
Use the measured session center width to drive the narrow header layout instead of relying on phone layout alone. Move search and preview into the existing overflow menu when the center column is narrow, keep the command palette and connection status aligned in the top row, and place secondary actions on the second row. Add an opt-in ContextMeter layout that centers the used/available token pill with a balanced context indicator spacer, avoiding brittle negative margins. The compact header enables this centered-value mode so the token values remain visually centered while menu and fullscreen controls sit at the row edges. Validated with npm run typecheck --workspace @codenomad/ui.
Make the prompt input reduce its empty height only when the measured session center column is narrow and the prompt is in compact layout. The textarea now auto-grows from a smaller rows baseline up to the existing compact height cap before scrolling, and the behavior clears when the center column expands out of narrow mode or the prompt leaves compact layout. Keep the inline expand and clear controls visible through CSS-defined control-fit min-height instead of runtime control measurement. Manual resize and expanded prompt states continue to take precedence over autosizing. Validated with npm run typecheck --workspace @codenomad/ui.
Skip the automatic post-send textarea refocus on touch-only devices so mobile keyboards do not close and immediately reopen after sending a prompt. Desktop and hybrid devices with a fine pointer keep the existing refocus workflow. The guard uses pointer media queries to distinguish touch-only devices from laptops or tablets with mouse/trackpad input. Validation: npm run typecheck --workspace @codenomad/ui.
Keep shared tab action buttons at their intended 32px footprint in the flex tab strip by disabling flex shrink on the new-tab-button class. This keeps the new instance and settings controls consistent with notification and remote controls at narrow widths. Validated with npm run typecheck --workspace @codenomad/ui.
Render static app tabs instead of sortable drag targets on touch-only devices so horizontal swiping the tab bar is not confused with drag-reorder gestures. Desktop and hybrid devices with a fine pointer keep the existing drag-reorder behavior. The tab scroll container now explicitly opts into horizontal touch panning with momentum scrolling. Validation: npm run typecheck --workspace @codenomad/ui.
|
I want you to perform the gatekeeper checks for latest PR state check for regressions |
|
Gatekeeper review for latest PR state complete. Verdict: Request changes before merge. Findings:
Validation:
Scope reviewed:
Merge gate: fix the keyboard activation regression in -- |
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/27826654445 Artifacts expire in 7 days.
|
…r streaming, session fixes and Winget automation (#568) ## Thanks for contributions - [@shantur](https://github.com/shantur): [#535](#535), [#556](#556), [#557](#557), [#562](#562), [#563](#563), [#564](#564), [#565](#565), [#567](#567) - [@pascalandr](https://github.com/pascalandr): [#533](#533), [#551](#551) - [@JDis03](https://github.com/JDis03): [#484](#484), [#536](#536) - [@aayurt](https://github.com/aayurt): [#552](#552) ## Highlights - **Compact mode is much better on mobile**: The message UI has been redesigned for compact layouts, with cleaner controls and a denser conversation view that works better on smaller screens. - **Tool output is easier to control**: New tool-level expansion settings let you choose how much tool-call detail you want to see, making busy sessions easier to scan. - **Streaming output feels steadier**: Bash output, tool output, and assistant responses now stay pinned more reliably while streaming, reducing jumps and missed updates. - **Project sessions are scoped more accurately**: Session lists now respect the active project more consistently, so switching projects is less likely to show unrelated sessions. - **Tab closing is more dependable**: Closing tabs has been tightened up to avoid cases where the wrong tab behavior could interrupt your workflow. ## What’s Improved - **Cleaner compact conversation layout**: Message blocks, message sections, tool calls, permissions, questions, todos, and task output have all been polished for a more readable compact experience. - **More useful tool-call presentation**: Tool calls now have a stronger registry-backed rendering path, clearer titles, improved status display, and better per-tool output handling. - **Better follow behavior near the bottom of sessions**: The session view now tracks bottom-follow intent more carefully, helping the app stay with new output when you expect it to. - **Smoother live session creation**: Session-created events from the live event stream are now handled directly, so new sessions appear more reliably without manual refreshes. - **Improved permission denial feedback**: Denied permissions now produce simpler, less noisy feedback in the conversation. ## Fixes - **More reliable autoscroll during long responses**: Hold-mode assistant autoscroll, message-part tool output autoscroll, and streaming bash output pinning were stabilized. - **Less duplicated streaming text**: SSE part deltas are throttled and buffered more carefully to prevent stale delta text from being duplicated in streamed messages. - **Better session list isolation**: Project session list requests are now scoped so sessions from one project do not bleed into another project’s list. - **More stable tab management**: A tab close bug was fixed to make multi-session navigation safer. - **Release pipeline reliability**: Winget release automation is now wired into the release workflow so Windows package updates can be published more consistently. ## Docs - **New contributor guide**: A `CONTRIBUTING.md` guide was added to help new contributors set up the project and understand the development workflow. - **Winget release docs updated**: Supporting documentation for Winget release automation was refreshed. ### Contributors - [@shantur](https://github.com/shantur) - [@pascalandr](https://github.com/pascalandr) - [@JDis03](https://github.com/JDis03) - [@aayurt](https://github.com/aayurt) **Full Changelog**: [v0.17.0...v0.18.0](v0.17.0...v0.18.0) ## Merged Pull Requests ### [@shantur](https://github.com/shantur) - PR [#535](#535) “fix(ui): simplify permission denial feedback” - PR [#556](#556) “fix(ui): keep streaming bash output pinned” - PR [#557](#557) “WIP: Compact mode message UI redesign” - PR [#562](#562) “fix(ui): handle session created SSE events” - PR [#563](#563) “feat(ui): Add tool level expansion settings.” - PR [#564](#564) “Improve compact mobile UI controls” - PR [#565](#565) “fix(ui): scope project session list requests” - PR [#567](#567) “fix(ui): keep message-part tool output auto-scroll synced” ### [@pascalandr](https://github.com/pascalandr) - PR [#533](#533) “fix: stabilize hold-mode assistant autoscroll” - PR [#551](#551) “fix: wire Winget automation into release pipeline” ### [@JDis03](https://github.com/JDis03) - PR [#484](#484) “docs: add CONTRIBUTING.md guide for new contributors” - PR [#536](#536) “fix(ui): throttle SSE part deltas and prevent stale delta text duplication” ### [@aayurt](https://github.com/aayurt) - PR [#552](#552) “Bugfix/tab close bug”
Summary
Validation