Jeremy Rose and GitHub
17550fee9e
add ^Y and kill-buffer to textarea ( #5075 )
...
## Summary
- add a kill buffer to the text area and wire Ctrl+Y to yank it
- capture text from Ctrl+W, Ctrl+U, and Ctrl+K operations into the kill
buffer
- add regression coverage ensuring the last kill can be yanked back
Fixes #5017
------
https://chatgpt.com/codex/tasks/task_i_68e95bf06c48832cbf3d2ba8fa2035d2
2025-10-15 14:39:55 -07:00
Jeremy Rose and GitHub
9b53a306e3
Keep backtrack Esc hint gated on empty composer ( #5076 )
...
## Summary
- only prime backtrack and show the ESC hint when the composer is empty
- keep the composer-side ESC hint unchanged when drafts or attachments
exist and cover it with a regression test
Fixes #5030
------
https://chatgpt.com/codex/tasks/task_i_68e95ba59cd8832caec8e72ae2efeb55
2025-10-15 13:57:50 -07:00
Jeremy Rose and GitHub
0016346dfb
tui: ^C in prompt area resets history navigation cursor ( #5078 )
...
^C resets the history navigation, similar to zsh/bash.
Fixes #4834
------
https://chatgpt.com/codex/tasks/task_i_68e9674b6ac8832c8212bff6cba75e87
2025-10-15 13:57:44 -07:00
9be704a934
tui: reserve 1 cell right margin for composer and user history ( #5026 )
...
keep a 1 cell margin at the right edge of the screen in the composer
(and in the user message in history).
this lets us print clear-to-EOL 1 char before the end of the line in
history, so that resizing the terminal will keep the background color
(at least in iterm/terminal.app). it also stops the cursor in the
textarea from floating off the right edge.
---------
Co-authored-by: joshka-oai <joshka@openai.com >
2025-10-14 18:02:11 +00:00
jif-oai and GitHub
5346cc422d
feat: discard prompt starting with a slash ( #5048 )
...
This is does not consider lines starting with a space or containing
multiple `/` as commands
<img width="550" height="362" alt="Screenshot 2025-10-13 at 10 00 08"
src="https://github.com/user-attachments/assets/17f7347f-db24-47cb-9845-b0eb6fb139cb "
/>
2025-10-14 09:47:20 +01:00
Jeremy Rose and GitHub
90af046c5c
tui: include the image name in the textarea placeholder ( #5056 )
...
Fixes #5013
2025-10-10 09:56:18 -07:00
Jeremy Rose and GitHub
ddcaf3dccd
tui: fix crash when alt+bksp past unicode nbsp ( #5016 )
...
notably, screenshot filenames on macOS by default contain U+202F right
before the "AM/PM" part of the filename.
2025-10-09 15:07:04 -07:00
Jeremy Rose and GitHub
95b41dd7f1
tui: fix wrapping in trust_directory ( #5007 )
...
Refactor trust_directory to use ColumnRenderable & friends, thus
correcting wrapping behavior at small widths. Also introduce
RowRenderable with fixed-width rows.
- fixed wrapping in trust_directory
- changed selector cursor to match other list item selections
- allow y/n to work as well as 1/2
- fixed key_hint to be standard
before:
<img width="661" height="550" alt="Screenshot 2025-10-09 at 9 50 36 AM"
src="https://github.com/user-attachments/assets/e01627aa-bee4-4e25-8eca-5575c43f05bf "
/>
after:
<img width="661" height="550" alt="Screenshot 2025-10-09 at 9 51 31 AM"
src="https://github.com/user-attachments/assets/cb816cbd-7609-4c83-b62f-b4dba392d79a "
/>
2025-10-09 17:39:45 +00:00
Jeremy Rose and GitHub
bf82353f45
tui: fix wrapping in user approval decisions ( #5008 )
...
before:
<img width="706" height="71" alt="Screenshot 2025-10-09 at 10 20 57 AM"
src="https://github.com/user-attachments/assets/ff758b77-4e64-4736-b867-7ebf596e4e65 "
/>
after:
<img width="706" height="71" alt="Screenshot 2025-10-09 at 10 20 35 AM"
src="https://github.com/user-attachments/assets/6a44efc0-d9ee-40ce-a709-cce969d6e3b3 "
/>
2025-10-09 10:37:13 -07:00
dedrisian-oai and GitHub
4300236681
revert /name for now ( #4978 )
...
There was a regression where we'd read entire rollout contents if there
was no /name present.
2025-10-08 17:13:49 -07:00
dedrisian-oai and GitHub
ec238a2c39
feat: Set chat name ( #4974 )
...
Set chat name with `/name` so they appear in the codex resume page:
https://github.com/user-attachments/assets/c0252bba-3a53-44c7-a740-f4690a3ad405
2025-10-08 16:35:35 -07:00
dedrisian-oai and GitHub
c89229db97
Make context line permanent ( #4699 )
...
https://github.com/user-attachments/assets/f72c64de-8d6a-45b6-93df-f3a68038067f
2025-10-08 14:32:54 -07:00
jif-oai and GitHub
876d4f450a
bug: fix CLI UP/ENTER ( #4944 )
...
Clear the history cursor before checking for duplicate submissions so
sending the same message twice exits history mode. This prevents Up/Down
from staying stuck in history browsing after duplicate sends.
2025-10-08 07:07:29 -07:00
Jeremy Rose and GitHub
0e5d72cc57
tui: bring the transcript closer to display mode ( #4848 )
...
before
<img width="1161" height="836" alt="Screenshot 2025-10-06 at 3 06 52 PM"
src="https://github.com/user-attachments/assets/7622fd6b-9d37-402f-8651-61c2c55dcbc6 "
/>
after
<img width="1161" height="858" alt="Screenshot 2025-10-06 at 3 07 02 PM"
src="https://github.com/user-attachments/assets/1498f327-1d1a-4630-951f-7ca371ab0139 "
/>
2025-10-07 16:18:48 -07:00
Jeremy Rose and GitHub
75176dae70
dynamic width for line numbers in diffs ( #4664 )
...
instead of always reserving 6 spaces for the line number and gutter, we
now dynamically adjust to the width of the longest number.
<img width="871" height="616" alt="Screenshot 2025-10-03 at 8 21 00 AM"
src="https://github.com/user-attachments/assets/5f18eae6-7c85-48fc-9a41-31978ae71a62 "
/>
<img width="871" height="616" alt="Screenshot 2025-10-03 at 8 21 21 AM"
src="https://github.com/user-attachments/assets/9009297d-7690-42b9-ae42-9566b3fea86c "
/>
<img width="871" height="616" alt="Screenshot 2025-10-03 at 8 21 57 AM"
src="https://github.com/user-attachments/assets/669096fd-dddc-407e-bae8-d0c6626fa0bc "
/>
2025-10-07 11:32:07 -07:00
Gabriel Peal and GitHub
12fd2b4160
[TUI] Remove bottom padding ( #4854 )
...
We don't need the bottom padding. It currently just makes the footer
look off-centered.
Before:
<img width="1905" height="478" alt="image"
src="https://github.com/user-attachments/assets/c2a18b38-b8fd-4317-bbbb-2843bca02ba1 "
/>
After:
<img width="617" height="479" alt="image"
src="https://github.com/user-attachments/assets/f42470c5-4b24-4a02-b15c-e2aad03e3b42 "
/>
2025-10-07 14:10:05 -04:00
dedrisian-oai and GitHub
1e4541b982
Fix tab+enter regression on slash commands ( #4639 )
...
Before when you would enter `/di`, hit tab on `/diff`, and then hit
enter, it would execute `/diff`. But now it's just sending it as a text.
This fixes the issue.
2025-10-02 20:14:28 -07:00
Jeremy Rose and GitHub
9617b69c8a
tui: • Working, 100% context dim ( #4629 )
...
- add a `•` before the "Working" shimmer
- make the percentage in "X% context left" dim instead of bold
<img width="751" height="480" alt="Screenshot 2025-10-02 at 2 29 57 PM"
src="https://github.com/user-attachments/assets/cf3e771f-ddb3-48f4-babe-1eaf1f0c2959 "
/>
2025-10-03 01:17:34 +00:00
Jeremy Rose and GitHub
c0a84473a4
fix false "task complete" state during agent message ( #4627 )
...
fixes an issue where user messages wouldn't be queued and ctrl + c would
quit the app instead of canceling the stream during the final agent
message.
2025-10-02 15:41:25 -07:00
Jeremy Rose and GitHub
25a2e15ec5
tui: tweaks to dialog display ( #4622 )
...
- prefix command approval reasons with "Reason:"
- show keyboard shortcuts for some ListSelectionItems
- remove "description" lines for approval options, and make the labels
more verbose
- add a spacer line in diff display after the path
and some other minor refactors that go along with the above.
<img width="859" height="508" alt="Screenshot 2025-10-02 at 1 24 50 PM"
src="https://github.com/user-attachments/assets/4fa7ecaf-3d3a-406a-bb4d-23e30ce3e5cf "
/>
2025-10-02 21:41:29 +00:00
Jeremy Rose and GitHub
ec98445abf
normalize key hints ( #4586 )
...
render key hints the same everywhere.
| Before | After |
|--------|-------|
| <img width="816" height="172" alt="Screenshot 2025-10-01 at 5 15 42
PM"
src="https://github.com/user-attachments/assets/f88d5db4-04bb-4e89-b571-568222c41e4b "
/> | <img width="672" height="137" alt="Screenshot 2025-10-01 at 5 13 56
PM"
src="https://github.com/user-attachments/assets/1fee6a71-f313-4620-8d9a-10766dc4e195 "
/> |
| <img width="816" height="172" alt="Screenshot 2025-10-01 at 5 17 01
PM"
src="https://github.com/user-attachments/assets/5170ab35-88b7-4131-b485-ecebea9f0835 "
/> | <img width="816" height="174" alt="Screenshot 2025-10-01 at 5 14 24
PM"
src="https://github.com/user-attachments/assets/6b6bc64c-25b9-4824-b2d7-56f60370870a "
/> |
| <img width="816" height="172" alt="Screenshot 2025-10-01 at 5 17 29
PM"
src="https://github.com/user-attachments/assets/2313b36a-e0a8-4cd2-82be-7d0fe7793c19 "
/> | <img width="816" height="134" alt="Screenshot 2025-10-01 at 5 14 37
PM"
src="https://github.com/user-attachments/assets/e18934e8-8e9d-4f46-9809-39c8cb6ee893 "
/> |
| <img width="816" height="172" alt="Screenshot 2025-10-01 at 5 17 40
PM"
src="https://github.com/user-attachments/assets/0cc69e4e-8cce-420a-b3e4-be75a7e2c8f5 "
/> | <img width="816" height="134" alt="Screenshot 2025-10-01 at 5 14 56
PM"
src="https://github.com/user-attachments/assets/329a5121-ae4a-4829-86e5-4c813543770c "
/> |
2025-10-02 18:34:47 +00:00
Jeremy Rose and GitHub
07c1db351a
rework patch/exec approval UI ( #4573 )
...
| Scenario | Screenshot |
| ---------------------- |
----------------------------------------------------------------------------------------------------------------------------------------------------
|
| short patch | <img width="1096" height="533" alt="short patch"
src="https://github.com/user-attachments/assets/8a883429-0965-4c0b-9002-217b3759b557 "
/> |
| short command | <img width="1096" height="533" alt="short command"
src="https://github.com/user-attachments/assets/901abde8-2494-4e86-b98a-7cabaf87ca9c "
/> |
| long patch | <img width="1129" height="892" alt="long patch"
src="https://github.com/user-attachments/assets/fa799a29-a0d6-48e6-b2ef-10302a7916d3 "
/> |
| long command | <img width="1096" height="892" alt="long command"
src="https://github.com/user-attachments/assets/11ddf79b-98cb-4b60-ac22-49dfa7779343 "
/> |
| viewing complete patch | <img width="1129" height="892" alt="viewing
complete patch"
src="https://github.com/user-attachments/assets/81666958-af94-420e-aa66-b60d0a42b9db "
/> |
2025-10-01 14:29:05 -07:00
Ahmed Ibrahim and GitHub
2f370e946d
Show context window usage while tasks run ( #4536 )
...
## Summary
- show the remaining context window percentage in `/status` alongside
existing token usage details
- replace the composer shortcut prompt with the context window
percentage (or an unavailable message) while a task is running
- update TUI snapshots to reflect the new context window line
## Testing
- cargo test -p codex-tui
------
https://chatgpt.com/codex/tasks/task_i_68dc6e7397ac8321909d7daff25a396c
2025-10-01 18:03:05 +00:00
dedrisian-oai and GitHub
3592ecb23c
Named args for custom prompts ( #4474 )
...
Here's the logic:
1. If text is empty and selector is open:
- Enter on a prompt without args should autosubmit the prompt
- Enter on a prompt with numeric args should add `/prompts:name ` to the
text input
- Enter on a prompt with named args should add `/prompts:name ARG1=""
ARG2=""` to the text input
2. If text is not empty but no args are passed:
- For prompts with numeric args -> we allow it to submit (params are
optional)
- For prompts with named args -> we throw an error (all params should
have values)
<img width="454" height="246" alt="Screenshot 2025-09-23 at 2 23 21 PM"
src="https://github.com/user-attachments/assets/fd180a1b-7d17-42ec-b231-8da48828b811 "
/>
2025-09-30 10:06:41 -07:00
easong-openai and GitHub
5b038135de
Add cloud tasks ( #3197 )
...
Adds a TUI for managing, applying, and creating cloud tasks
2025-09-30 10:10:33 +00:00
dedrisian-oai and GitHub
bf76258cdc
Custom prompts begin with /prompts: ( #4476 )
...
<img width="608" height="354" alt="Screenshot 2025-09-29 at 4 41 08 PM"
src="https://github.com/user-attachments/assets/162508eb-c1ac-4bc0-95f2-5e23cb4ae428 "
/>
2025-09-29 17:58:16 -07:00
Ahmed Ibrahim and GitHub
c64da4ff71
Fixes ( #4458 )
...
Fixing the "? for shortcuts"
- Only show the hint when composer is empty
- Don't reset footer on new task updates
- Reorder the elements
- Align the "?" and "/" with overlay on and off
Based on #4364
2025-09-30 00:10:04 +00:00
Ahmed Ibrahim and GitHub
98efd352ae
reintroduce "? for shortcuts" ( #4364 )
...
Reverts openai/codex#4362
2025-09-29 23:35:47 +00:00
dedrisian-oai and GitHub
80ccec6530
Custom prompt args (numeric) ( #4470 )
...
[Cherry picked from /pull/3565]
Adds $1, $2, $3, $ARGUMENTS param parsing for custom prompts.
2025-09-29 16:14:37 -07:00
Jeremy Rose and GitHub
c81baaabda
no background for /command or @file popup ( #4469 )
...
before:
<img width="855" height="270" alt="Screenshot 2025-09-29 at 3 42 53 PM"
src="https://github.com/user-attachments/assets/eb247e1f-0947-4830-93c4-d4ecb2992b32 "
/>
after:
<img width="855" height="270" alt="Screenshot 2025-09-29 at 3 43 04 PM"
src="https://github.com/user-attachments/assets/46717844-6066-47a4-a34a-1a75508ea2c3 "
/>
2025-09-29 22:58:15 +00:00
dedrisian-oai and GitHub
83a4d4d8ed
Parse out frontmatter for custom prompts ( #4456 )
...
[Cherry picked from https://github.com/openai/codex/pull/3565 ]
Removes the frontmatter description/args from custom prompt files and
only includes body.
2025-09-29 13:06:08 -07:00
Fouad Matin and GitHub
bcf2bc0aa5
fix(tui): make ? work again ( #4362 )
...
Revert #4330 #4316
2025-09-27 12:18:33 -07:00
Ahmed Ibrahim and GitHub
5c67dc3af1
Edit the spacing in shortcuts ( #4330 )
...
<img width="739" height="132" alt="image"
src="https://github.com/user-attachments/assets/e8d40abb-ac41-49a2-abc4-ddc6decef989 "
/>
2025-09-26 22:54:38 -07:00
Jeremy Rose and GitHub
c0960c0f49
tui: separator above final agent message ( #4324 )
...
Adds a separator line before the final agent message
<img width="1011" height="884" alt="Screenshot 2025-09-26 at 4 55 01 PM"
src="https://github.com/user-attachments/assets/7c91adbf-6035-4578-8b88-a6921f11bcbc "
/>
2025-09-26 22:49:59 -07:00
Ahmed Ibrahim and GitHub
2719fdd12a
Add "? for shortcuts" ( #4316 )
...
https://github.com/user-attachments/assets/9e61b197-024b-4cbc-b40d-c446b448e759
2025-09-26 18:24:26 -07:00
Jeremy Rose and GitHub
43b63ccae8
update composer + user message styling ( #4240 )
...
Changes:
- the composer and user messages now have a colored background that
stretches the entire width of the terminal.
- the prompt character was changed from a cyan `▌` to a bold `›`.
- the "working" shimmer now follows the "dark gray" color of the
terminal, better matching the terminal's color scheme
| Terminal + Background | Screenshot |
|------------------------------|------------|
| iTerm with dark bg | <img width="810" height="641" alt="Screenshot
2025-09-25 at 11 44 52 AM"
src="https://github.com/user-attachments/assets/1317e579-64a9-4785-93e6-98b0258f5d92 "
/> |
| iTerm with light bg | <img width="845" height="540" alt="Screenshot
2025-09-25 at 11 46 29 AM"
src="https://github.com/user-attachments/assets/e671d490-c747-4460-af0b-3f8d7f7a6b8e "
/> |
| iTerm with color bg | <img width="825" height="564" alt="Screenshot
2025-09-25 at 11 47 12 AM"
src="https://github.com/user-attachments/assets/141cda1b-1164-41d5-87da-3be11e6a3063 "
/> |
| Terminal.app with dark bg | <img width="577" height="367"
alt="Screenshot 2025-09-25 at 11 45 22 AM"
src="https://github.com/user-attachments/assets/93fc4781-99f7-4ee7-9c8e-3db3cd854fe5 "
/> |
| Terminal.app with light bg | <img width="577" height="367"
alt="Screenshot 2025-09-25 at 11 46 04 AM"
src="https://github.com/user-attachments/assets/19bf6a3c-91e0-447b-9667-b8033f512219 "
/> |
| Terminal.app with color bg | <img width="577" height="367"
alt="Screenshot 2025-09-25 at 11 45 50 AM"
src="https://github.com/user-attachments/assets/dd7c4b5b-342e-4028-8140-f4e65752bd0b "
/> |
2025-09-26 16:35:56 -07:00
41f5d61f24
Move approvals to use ListSelectionView ( #4275 )
...
Unify selection menus:
- Move approvals to the vertical menu `ListSelectionView`
- Add header section to `ListSelectionView`
<img width="502" height="214" alt="image"
src="https://github.com/user-attachments/assets/f4b43ddf-3549-403c-ad9e-a523688714e4 "
/>
<img width="748" height="214" alt="image"
src="https://github.com/user-attachments/assets/f94ac7b5-dc94-4dc0-a1df-7a8e3ba2453b "
/>
---------
Co-authored-by: pakrym-oai <pakrym@openai.com >
2025-09-26 07:13:29 -07:00
02609184be
Refactor the footer logic to a new file ( #4259 )
...
This will help us have more control over the footer
---------
Co-authored-by: pakrym-oai <pakrym@openai.com >
2025-09-26 07:13:13 -07:00
Jeremy Rose and GitHub
affb5fc1d0
fix bug when resizing to a smaller width ( #4248 )
...
The composer and key hint lines were using line styles, causing ratatui
to print spaces all the way to the right side of the terminal. this
meant that resizing the terminal to be narrower would result in
rewrapping those lines, causing the bottom area to rerender and push all
content up.
Before
https://github.com/user-attachments/assets/8b14555a-1fc5-4f78-8df7-1410ee25e07a
After
https://github.com/user-attachments/assets/707645ab-89c7-4c7f-b556-02f53cef8a2f
2025-09-25 14:17:13 -07:00
Jeremy Rose and GitHub
103adcdf2d
fix: esc w/ queued messages overwrites draft in composer ( #4237 )
...
Instead of overwriting the contents of the composer when pressing
<kbd>Esc</kbd> when there's a queued message, prepend the queued
message(s) to the composer draft.
2025-09-25 10:07:27 -07:00
jif-oai and GitHub
be366a31ab
chore: clippy on redundant closure ( #4058 )
...
Add redundant closure clippy rules and let Codex fix it by minimising
FQP
2025-09-22 19:30:16 +00:00
dedrisian-oai and GitHub
8daba53808
feat: Add view stack to BottomPane ( #4026 )
...
Adds a "View Stack" to the bottom pane to allow for pushing/popping
bottom panels.
`esc` will go back instead of dismissing.
Benefit: We retain the "selection state" of a parent panel (e.g. the
review panel).
2025-09-22 11:29:39 -07:00
jif-oai and GitHub
e258ca61b4
chore: more clippy rules 2 ( #4057 )
...
The only file to watch is the cargo.toml
All the others come from just fix + a few manual small fix
The set of rules have been taken from the list of clippy rules
arbitrarily while trying to optimise the learning and style of the code
while limiting the loss of productivity
2025-09-22 17:16:02 +00:00
dedrisian-oai and GitHub
5996ee0e5f
feat: Add more /review options ( #3961 )
...
Adds the following options:
1. Review current changes
2. Review a specific commit
3. Review against a base branch (PR style)
4. Custom instructions
<img width="487" height="330" alt="Screenshot 2025-09-20 at 2 11 36 PM"
src="https://github.com/user-attachments/assets/edb0aaa5-5747-47fa-881f-cc4c4f7fe8bc "
/>
---
\+ Adds the following UI helpers:
1. Makes list selection searchable
2. Adds navigation to the bottom pane, so you could add a stack of
popups
3. Basic custom prompt view
2025-09-21 20:18:35 -07:00
Jeremy Rose and GitHub
ff389dc52f
fix alignment in slash command popup ( #3937 )
2025-09-19 19:08:04 +00:00
easong-openai
45bccd36b0
fix permissions alignment
2025-09-15 17:34:04 -07:00
Ahmed Ibrahim and GitHub
7e1543f5d8
Align user history message prefix width ( #3467 )
...
<img width="798" height="340" alt="image"
src="https://github.com/user-attachments/assets/fdd63f40-9c94-4e3a-bce5-2d2f333a384f "
/>
2025-09-14 20:51:08 +00:00
Ahmed Ibrahim and GitHub
d4848e558b
Add spacing before composer footer hints ( #3469 )
...
<img width="647" height="82" alt="image"
src="https://github.com/user-attachments/assets/867eb5d9-3076-4018-846e-260a50408185 "
/>
2025-09-12 15:31:24 -04:00
Ahmed Ibrahim and GitHub
1a6a95fb2a
Add spacing between dropdown headers and items ( #3472 )
...
<img width="927" height="194" alt="image"
src="https://github.com/user-attachments/assets/f4cb999b-16c3-448a-aed4-060bed8b96dd "
/>
<img width="1246" height="205" alt="image"
src="https://github.com/user-attachments/assets/5d9ba5bd-0c02-46da-a809-b583a176528a "
/>
2025-09-12 15:31:15 -04:00
Michael Bolin and GitHub
bec51f6c05
chore: enable clippy::redundant_clone ( #3489 )
...
Created this PR by:
- adding `redundant_clone` to `[workspace.lints.clippy]` in
`cargo-rs/Cargol.toml`
- running `cargo clippy --tests --fix`
- running `just fmt`
Though I had to clean up one instance of the following that resulted:
```rust
let codex = codex;
```
2025-09-11 11:59:37 -07:00