Skip to content

Composer | Make the compose panel resizable - #55

Merged
BrianGenisio merged 1 commit into
mainfrom
feature/resizable-composer
Oct 14, 2026
Merged

BrianGenisio merged 1 commit into
mainfrom
feature/resizable-composer

Conversation

@BrianGenisio

Copy link
Copy Markdown
Contributor

On short or narrow screens the reply composer covers most of the thread. The panel now has a top-edge resize handle, and it starts shorter on small viewports so more of the email stays visible.

Changes

The handle matches the assistant split: pointer drag, arrow keys, Home/End, and a 24px hit target. Height is stored in sessionStorage for the tab.

Send, Cancel, and Attach stay pinned under the fields. When the panel is short, To / Cc / Subject scroll inside .composer__panel instead of clipping the toolbar.

The default cap (min(20rem, 48vh)) only applies below 960px wide or 720px tall. A user-chosen height wins over that cap, so you can still grow the panel on a phone.

Worth a close look: initComposerResize and the is-resized CSS. The covered-focus observer already watches the composer, so shrinking it should put previously covered reply buttons back in the tab order.

Test plan

  • Open a thread and Reply on a desktop window. Confirm the compose card still looks like the Figma panel, with a small grabber on the top edge.
  • Drag the grabber down until the thread is readable; drag up to get more writing room. Send should stay visible.
  • Use the handle from the keyboard: ArrowDown / ArrowUp, Shift for larger steps, End for the minimum, Home for the maximum.
  • Narrow the window below 960px (or shorten it below 720px) and Reply again. The panel should start shorter without a prior resize.
  • Reload and Reply: the last height should come back.
  • Open Compose (new message) from the inbox and confirm the overlay is also resizable.

On short viewports the reply composer covers the thread. A top-edge handle lets you shrink it, and the chosen height is remembered for the session.

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Oct 14, 2026

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 5117138a-f405-4155-93b9-544099bf4e72
📥 Commits

Reviewing files that changed from the base of the PR and between 2868cc1 and 3612fdc.

📒 Files selected for processing: 6
  • i18n/en.json
  • i18n/es.json
  • public/app.css
  • public/app.js
  • public/index.html
  • tests/a11y-mail.test.js

Included review availability: This review used your included allowance. 4 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.

📝 Walkthrough

The composer now has a localized, keyboard-accessible resize control. Pointer dragging and keyboard input adjust its height within calculated bounds. The height persists in session storage and is reapplied when the composer initializes or the window resizes. CSS handles resized layouts and height constraints on smaller viewports. Tests cover accessibility semantics, localization, keyboard and pointer resizing, height limits, and stored values.

Suggested reviewers: aimemp

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to 3612f

No confirmed issue prevents merging after normal checks.

Pre-merge checks: Passed 4
Passed Passed checks: 4 passed
Check name Status Explanation
Description check Passed The description clearly explains the resizable compose panel, its controls, responsive behavior, persistence, and test plan.
Title check Passed The title clearly and concisely identifies the main change: making the compose panel resizable.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@BrianGenisio
BrianGenisio merged commit 719f2bf into main Oct 14, 2026
2 checks passed
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.

1 participant