Commit 956ae6b
Keep TUI zero state stable during shell startup (#14632)
## Description
- Keep the empty TUI zero state vertically stable while the temporary
`Starting shell...` hint is visible.
- Account for the hint row and its top padding only in the bootstrap
zero-state slot; transcript, long-running-command, and GUI paths remain
unchanged.
- Add a presenter-based 80×40 regression covering bootstrap and ready
states.
Originating thread:
https://warpdotdev.slack.com/archives/C0BDQDW8V5E/p1785652323329829
## Linked Issue
- [x] The request is tracked in
[APP-5098](https://linear.app/warpdotdev/issue/APP-5098/tui-zero-state-shifts-when-starting-shell-disappears).
- [x] Real live-TUI `tmux capture-pane` proof is included below.
## Testing
- [x] `zero_state_position_stays_stable_across_shell_bootstrap` failed
before the fix and passes after it.
- [x] `bootstrap_renders_starting_shell_above_input` and
`long_running_command_keeps_input_hidden` pass.
- [x] `./script/format --check`
- [x] `cargo clippy -p warp_tui --all-targets --tests -- -D warnings`
- [x] `cargo nextest run -p warp_tui --lib` — 949/949 passed.
- [x] `cargo build -p warp_tui --bin warp-tui-oss`
- [x] `cargo build -p warp_tui --bin warp-tui-dev`
Full workspace presubmit completed format, inline-test, clippy,
clang-format, and WGSL checks, but its workspace-test phase exceeded the
sandbox target filesystem twice (`No space left on device`); the scoped
TUI suite and PR CI are fully green.
### Real live TUI proof
These frames came directly from `tmux capture-pane` while one
authenticated `warp-tui-dev` process ran in an 80×40 PTY. They are
terminal output from the real TUI, not replayed presenter buffers.
- [Bootstrap frame — full terminal
capture](https://staging.warp.dev/api/v1/agent/artifacts/019fc1a8-0abb-76b7-925e-2a8a669a16bf/download)
- [Ready frame from the same process — full terminal
capture](https://staging.warp.dev/api/v1/agent/artifacts/019fc1a8-0d3b-73db-9ee4-a32f78dc6ef5/download)
Relevant lines (one-based `capture-pane` output; equivalent zero-based
rows are 13/32/33):
```
bootstrap 14: Warp Agent CLI
bootstrap 33: Starting shell...
bootstrap 34: ▁▁▁... (input top border)
ready 14: Warp Agent CLI
ready 34: ▁▁▁... (input top border)
```
## Agent Mode
- [x] Warp Agent Mode - This PR was created via Warp's AI Agent Mode
CHANGELOG-TUI: Fixed the zero state shifting when shell startup
completes.
### Rework changes
- 1 parent 41f91c6 commit 956ae6b
2 files changed
Lines changed: 63 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
192 | 192 | | |
193 | 193 | | |
194 | 194 | | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
195 | 198 | | |
196 | 199 | | |
197 | 200 | | |
| |||
5145 | 5148 | | |
5146 | 5149 | | |
5147 | 5150 | | |
| 5151 | + | |
| 5152 | + | |
5148 | 5153 | | |
5149 | 5154 | | |
5150 | 5155 | | |
| |||
5224 | 5229 | | |
5225 | 5230 | | |
5226 | 5231 | | |
5227 | | - | |
5228 | | - | |
5229 | | - | |
5230 | | - | |
| 5232 | + | |
| 5233 | + | |
| 5234 | + | |
| 5235 | + | |
| 5236 | + | |
| 5237 | + | |
| 5238 | + | |
| 5239 | + | |
| 5240 | + | |
| 5241 | + | |
| 5242 | + | |
| 5243 | + | |
| 5244 | + | |
| 5245 | + | |
5231 | 5246 | | |
5232 | 5247 | | |
5233 | 5248 | | |
| |||
5239 | 5254 | | |
5240 | 5255 | | |
5241 | 5256 | | |
5242 | | - | |
| 5257 | + | |
5243 | 5258 | | |
5244 | 5259 | | |
5245 | 5260 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2996 | 2996 | | |
2997 | 2997 | | |
2998 | 2998 | | |
| 2999 | + | |
| 3000 | + | |
| 3001 | + | |
| 3002 | + | |
| 3003 | + | |
| 3004 | + | |
| 3005 | + | |
| 3006 | + | |
| 3007 | + | |
| 3008 | + | |
| 3009 | + | |
| 3010 | + | |
| 3011 | + | |
| 3012 | + | |
| 3013 | + | |
| 3014 | + | |
| 3015 | + | |
| 3016 | + | |
| 3017 | + | |
| 3018 | + | |
| 3019 | + | |
| 3020 | + | |
| 3021 | + | |
| 3022 | + | |
| 3023 | + | |
| 3024 | + | |
| 3025 | + | |
| 3026 | + | |
| 3027 | + | |
| 3028 | + | |
| 3029 | + | |
| 3030 | + | |
| 3031 | + | |
| 3032 | + | |
| 3033 | + | |
| 3034 | + | |
| 3035 | + | |
| 3036 | + | |
| 3037 | + | |
| 3038 | + | |
| 3039 | + | |
| 3040 | + | |
| 3041 | + | |
2999 | 3042 | | |
3000 | 3043 | | |
3001 | 3044 | | |
| |||
0 commit comments