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

64 lines
2.2 KiB
Markdown

# 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.
## Phase 1: The Move (Approval Mode to Footer)
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
```text
[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.