Files
gemini-cli/composer-layout-spec.md
T

2.2 KiB

Layout Refinement: Approval Mode & Composer Organization

Goal

The primary objective is to streamline the main interaction area by moving the Approval Mode status to the footer and reorganizing the remaining status indicators within the Composer for a better information hierarchy.

The ApprovalModeIndicator (manual, auto-accept, plan, YOLO) is removed entirely from the Composer component and its "bleed-through" logic. It is repositioned as the absolute first item (far left) in the application footer.

  • Header: mode (Shift+Tab)
  • Data: Streamlined labels (manual, auto-accept, plan, YOLO) using the existing semantic colors.
  • Default: Visible by default for all users.

Phase 2: The Swap (Composer Internal Layout)

Once the ApprovalModeIndicator is removed, the remaining transient and state elements within the Composer are swapped across the horizontal divider.

1. The "Above Divider" Zone (Transient Environment)

This area is for transient notifications that contextualize the current environment but are not the active process.

  • Toast Messages: (e.g., "Press Ctrl+C again to exit")
  • Shell Mode Indicator
  • Raw Markdown Indicator
  • Shortcuts Hint: Remains flush right.

2. The "Below Divider" Zone (Active Processing)

This area is reserved exclusively for what the application is currently doing. It sits directly above the input prompt.

  • Loading Indicator: (e.g., "Thinking...", "Executing Hooks")
  • Status Display: (Context usage summary)

Target Layout Mockup

[ConfigInitDisplay]
[QueuedMessageDisplay]
[TodoTray]

[ToastDisplay | ShellModeIndicator]                    [ShortcutsHint]
----------------------------------------------------------------------
[LoadingIndicator (e.g., Thinking...)]
                                                       [StatusDisplay]

[InputPrompt]

Key Principles

  • Clean Input: The main input area should feel less crowded by offloading persistent status (Mode) to the footer.
  • Logical Flow: Transient "Alerts" (Toasts) go above the line; active "Work" (Loading) goes below the line, closest to the prompt.