redesign the terminal composer as a unified input surface - #28
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
📝 WalkthroughWalkthroughThe pull request changes the composer to a full-width layout with keyboard dismissal and close controls. It adds settled bottom-chrome reservation, width-aware dictation meters, terminal-owned keyboard handling, and expanded unit and UI test coverage. ChangesComposer and keyboard chrome
Estimated code review effort: 4 (Complex) | ~60 minutes Sequence Diagram(s)sequenceDiagram
participant GhosttySurfaceScreen
participant GhosttyComposeBar
participant KeyboardViewportTransitionCoordinator
GhosttySurfaceScreen->>GhosttyComposeBar: Provide keyboard visibility and dismissal state
GhosttyComposeBar->>GhosttySurfaceScreen: Invoke keyboard dismissal callback
GhosttySurfaceScreen->>KeyboardViewportTransitionCoordinator: Dismiss keyboard state
KeyboardViewportTransitionCoordinator->>GhosttySurfaceScreen: Complete viewport transition
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 42cf47bb7c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
🧹 Nitpick comments (1)
RemuxApp/Sources/Ghostty/GhosttySurfaceScreen.swift (1)
197-202: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winExtract the duplicated top-padding constant.
bottomChromeFallbackHeighthardcodes+ 4here, and line 445 applies.padding(.top, 4)to the same chrome view. These two literals must stay in sync for the fallback height to match the real measured height before the reservation settles. Extract a named constant (for exampleGhosttyKeyboardChromeSizing.composerRowTopPadding) and use it in both places to remove the duplication risk.♻️ Proposed fix to remove the duplicated literal
+ static let composerRowTopPadding: CGFloat = 4let bottomChromeFallbackHeight = GhosttyKeyboardChromeSizing.baselineHeight - + 4 + + GhosttyKeyboardChromeSizing.composerRowTopPadding + chrome.bottomPadding- .padding(.top, 4) + .padding(.top, GhosttyKeyboardChromeSizing.composerRowTopPadding)🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@RemuxApp/Sources/Ghostty/GhosttySurfaceScreen.swift` around lines 197 - 202, Extract the shared top-padding value into a named constant on GhosttyKeyboardChromeSizing, then replace the hardcoded +4 in bottomChromeFallbackHeight and the .padding(.top, 4) usage in the chrome view with that constant so fallback and measured heights remain synchronized.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@RemuxApp/Sources/Ghostty/GhosttySurfaceScreen.swift`:
- Around line 197-202: Extract the shared top-padding value into a named
constant on GhosttyKeyboardChromeSizing, then replace the hardcoded +4 in
bottomChromeFallbackHeight and the .padding(.top, 4) usage in the chrome view
with that constant so fallback and measured heights remain synchronized.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: f426cf46-6367-44a3-b6de-c3fafd41891a
📒 Files selected for processing (8)
RemuxApp/Sources/Ghostty/GhosttyComposeBar.swiftRemuxApp/Sources/Ghostty/GhosttyComposerDictationController.swiftRemuxApp/Sources/Ghostty/GhosttyDebugComposerDictationBackend.swiftRemuxApp/Sources/Ghostty/GhosttyKeyboardChrome.swiftRemuxApp/Sources/Ghostty/GhosttySurfaceScreen.swiftRemuxAppTests/GhosttyPhoneChromeLayoutTests.swiftRemuxAppTests/GhosttyTerminalInputCoordinatorTests.swiftRemuxAppUITests/RemuxAppUITests.swift
Deploying getremux with
|
| Latest commit: |
0d920a1
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://805a41c1.getremux.pages.dev |
| Branch Preview URL: | https://feature-composer-design-refr.getremux.pages.dev |
Deploying remux with
|
| Latest commit: |
0d920a1
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://9aacdd78.remux-agx.pages.dev |
| Branch Preview URL: | https://feature-composer-design-refr.remux-agx.pages.dev |
Summary
Redesign the terminal composer as a single full-width input surface that better uses the available space and keeps related controls together.
Keyboard behavior
Terminal geometry
Reserve the full settled composer height from the terminal viewport so terminal content remains above the composer.
The temporary compact dictation height is excluded from viewport sizing. This avoids unnecessary terminal resizes while recording or transcribing. Once dictation finishes, the composer naturally returns to the height required by the resulting draft.
Validation
Screenshots
Summary by CodeRabbit
New Features
Bug Fixes