Skip to content

feat: make the chat composer resizable - #863

Open
sBaydin wants to merge 6 commits into
alphaXiv:mainfrom
sBaydin:feat/resizable-composer
Open

sBaydin wants to merge 6 commits into
alphaXiv:mainfrom
sBaydin:feat/resizable-composer

Conversation

@sBaydin

@sBaydin sBaydin commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Closes #645

Summary

  • Adds a drag handle above the chat composer for vertical resizing.
  • Keeps the current auto-growing behavior until the user resizes, then remembers the chosen height.
  • Supports keyboard resizing with the arrow keys, Home/double-click reset, and clamps the height to the chat pane.

Scope

  • UI-only change; no backend or protocol changes.
  • Adds the resize label and hint to all 10 locale catalogs.

Test plan

  • node scripts/check-i18n.mjs
  • node scripts/check-styles.mjs
  • tsr generate && tsc --noEmit
  • node --test --experimental-strip-types tests/*.test.mjs (590 passing)
  • vite build
  • cargo build --release --features desktop
  • Manual check in the local Linux desktop build: drag, keyboard, double-click reset, persistence

@greptile-apps

greptile-apps Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 4/5

[Low impact] The changes affect the chat composer in the browser.

Fix the restored-height overflow before merging; it can hide the side chat and its controls.

Findings

  1. P1 Saved height hides side chat ▶
  2. P2 Resize changes are silent ▶
Fix with agent prompt
### Issue 1
ui/src/components/ChatPanel.tsx:5061-5070
The saved height is not clamped when a composer mounts. Resize the main composer to 500px, then open a side chat in the half-height stacked pane. The side chat restores the same 500px height even though its pane is shorter. The composer cannot shrink, so it can hide the conversation and push its controls outside the pane. The `60vh` cap does not protect a half-height pane.

Clamp the height after mount and whenever the pane changes size, rather than only on `window.resize`.

### Issue 2
ui/src/components/ChatPanel.tsx:7464-7471
The new keyboard-adjustable `separator` exposes no current value or bounds. Screen-reader users can press the arrow keys, but cannot hear the resulting size or tell when they reach a limit. Add `aria-valuenow`, `aria-valuemin`, and `aria-valuemax`, keeping them aligned with the rendered height.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

Adds a persistent, resizable chat composer.

  • Chat users can resize the composer and keep their preferred height.

Reviews (1) · Last reviewed commit: "feat: make the chat composer resizable" · Reviewed by Greptile

Comment thread ui/src/components/ChatPanel.tsx Resolved
Comment thread ui/src/components/ChatPanel.tsx Resolved
@sBaydin
sBaydin force-pushed the feat/resizable-composer branch from 9cce63e to d6f6653 Compare November 3, 2026 09:23
@paperclover

Copy link
Copy Markdown
Contributor

@sBaydin do you reproduce the focus box for the bar being the entire width can you tune that to be custom to show the keyboard focus around the focus bar itself. if not ill send an image or just have ai fix it

@sBaydin

sBaydin commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor Author

@paperclover Yeap reproducedit, the focus ring was on the full-width separator. Fixed focus now wraps the drag bar itself with a small offset ring. And also merged the latest and resolved the locale conflicts all checks pass.

@paperclover paperclover added the auto-merge Queue for automatic merge once all checks pass label Nov 4, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-merge Queue for automatic merge once all checks pass

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow changing the size of the chat composer

2 participants