Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,17 @@ If you want Codex in your code editor (VS Code, Cursor, Windsurf), <a href="http
</br>If you are looking for the <em>cloud-based agent</em> from OpenAI, <strong>Codex Web</strong>, go to <a href="https://chatgpt.com/codex">chatgpt.com/codex</a>.</p>

> [!NOTE]
> **Exomind fork status**
> Exomind fork status
>
> This fork tracks `openai/codex` and carries a small set of workflow-level changes on top of upstream.
>
> - README section updated on `2026-03-07`
> - Latest `upstream/main` observed at update time: `9a4787c24`
> - Current fork/upstream merge-base: `b6d43ec8`
> - Fork-specific additions currently include:
> - a shared pending-input queue for repeating queue and repeating steer messages, with distinct preview colors
> - `Shift+Tab` cycling collaboration mode when the composer is empty, and enqueuing a repeating queue message otherwise
> - `Alt+` recalling the most recently enqueued queue or steer draft by enqueue order
> - `Alt+Up` recalling the most recently enqueued queue or steer draft by enqueue order
> - Termux compatibility work and a stable Android build path
> - fork-specific CI compatibility adjustments plus governance/task-tracking experiments
> - When this block changes, update the `upstream/main` hash in the same PR so the fork baseline stays auditable
Expand Down
42 changes: 21 additions & 21 deletions codex-rs/tui/src/bottom_pane/pending_input_preview.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,23 +72,26 @@ impl PendingInputPreview {
for steer in &self.pending_steers {
let wrapped = if steer.repeating {
adaptive_wrap_lines(
steer.text.lines().map(|line| Line::from(line.cyan())),
steer
.text
.lines()
.map(|line| Line::from(line.cyan().bold())),
RtOptions::new(width as usize)
.initial_indent(Line::from(" ! repeat steer: ".cyan()))
.initial_indent(Line::from(" ! repeat steer: ".cyan().bold()))
.subsequent_indent(Line::from(" ")),
)
} else {
adaptive_wrap_lines(
steer.text.lines().map(|line| Line::from(line.blue())),
steer.text.lines().map(|line| Line::from(line.light_blue())),
RtOptions::new(width as usize)
.initial_indent(Line::from(" ! pending steer: ".blue()))
.initial_indent(Line::from(" ! pending steer: ".light_blue()))
.subsequent_indent(Line::from(" ")),
)
};
let overflow_line = if steer.repeating {
Line::from(" …".cyan())
Line::from(" …".cyan().bold())
} else {
Line::from(" …".blue())
Line::from(" …".light_blue())
};
Self::push_truncated_preview_lines(&mut lines, wrapped, overflow_line);
}
Expand All @@ -100,48 +103,45 @@ impl PendingInputPreview {
message
.text
.lines()
.map(|line| Line::from(line.cyan().italic())),
.map(|line| Line::from(line.cyan().bold().italic())),
RtOptions::new(width as usize)
.initial_indent(Line::from(" ↻ ! ".cyan()))
.initial_indent(Line::from(" ↻ ! ".cyan().bold()))
.subsequent_indent(Line::from(" ")),
),
Line::from(" …".cyan().italic()),
Line::from(" …".cyan().bold().italic()),
),
(true, false) => (
adaptive_wrap_lines(
message
.text
.lines()
.map(|line| Line::from(line.blue().italic())),
.map(|line| Line::from(line.light_blue().italic())),
RtOptions::new(width as usize)
.initial_indent(Line::from(" ↳ ! ".blue()))
.initial_indent(Line::from(" ↳ ! ".light_blue()))
.subsequent_indent(Line::from(" ")),
),
Line::from(" …".blue().italic()),
Line::from(" …".light_blue().italic()),
),
(false, true) => (
adaptive_wrap_lines(
message
.text
.lines()
.map(|line| Line::from(line.yellow().italic())),
.map(|line| Line::from(line.green().bold().italic())),
RtOptions::new(width as usize)
.initial_indent(Line::from(" ↻ ".yellow()))
.initial_indent(Line::from(" ↻ ".green().bold()))
.subsequent_indent(Line::from(" ")),
),
Line::from(" …".yellow().italic()),
Line::from(" …".green().bold().italic()),
),
(false, false) => (
adaptive_wrap_lines(
message
.text
.lines()
.map(|line| Line::from(line.green().italic())),
message.text.lines().map(|line| Line::from(line.italic())),
RtOptions::new(width as usize)
.initial_indent(Line::from(" ↳ ".green()))
.initial_indent(Line::from(" ↳ "))
.subsequent_indent(Line::from(" ")),
),
Line::from(" …".green().italic()),
Line::from(" …".italic()),
),
};
Self::push_truncated_preview_lines(&mut lines, wrapped, overflow_line);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
source: tui/src/bottom_pane/pending_input_preview.rs
assertion_line: 301
expression: "format!(\"{buf:?}\")"
---
Buffer {
Expand All @@ -13,14 +12,14 @@ Buffer {
" ⌥ + ↑ edit ",
],
styles: [
x: 0, y: 0, fg: Green, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 0, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 0, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 11, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 1, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 4, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 13, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 2, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 4, y: 2, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 13, y: 2, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 3, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 0, y: 3, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 5, y: 3, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 4, fg: Reset, bg: Reset, underline: Reset, modifier: DIM,
x: 14, y: 4, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
source: tui/src/bottom_pane/pending_input_preview.rs
assertion_line: 272
expression: "format!(\"{buf:?}\")"
---
Buffer {
Expand All @@ -13,17 +12,14 @@ Buffer {
" ⌥ + ↑ edit ",
],
styles: [
x: 0, y: 0, fg: Green, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 0, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 0, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 17, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 1, fg: Green, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 1, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 4, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 27, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 2, fg: Green, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 2, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 4, y: 2, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 27, y: 2, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 3, fg: Green, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 3, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 4, y: 3, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 28, y: 3, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 4, fg: Reset, bg: Reset, underline: Reset, modifier: DIM,
x: 14, y: 4, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
source: tui/src/bottom_pane/pending_input_preview.rs
assertion_line: 378
expression: "format!(\"{buf:?}\")"
---
Buffer {
Expand All @@ -12,13 +11,13 @@ Buffer {
" … ",
],
styles: [
x: 0, y: 0, fg: Cyan, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 0, fg: Cyan, bg: Reset, underline: Reset, modifier: BOLD,
x: 28, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 1, fg: Cyan, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 1, fg: Cyan, bg: Reset, underline: Reset, modifier: BOLD,
x: 15, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 2, fg: Cyan, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 2, fg: Cyan, bg: Reset, underline: Reset, modifier: BOLD,
x: 14, y: 2, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 3, fg: Cyan, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 3, fg: Cyan, bg: Reset, underline: Reset, modifier: BOLD,
x: 5, y: 3, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
]
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
source: tui/src/bottom_pane/pending_input_preview.rs
assertion_line: 238
expression: "format!(\"{buf:?}\")"
---
Buffer {
Expand All @@ -10,8 +9,8 @@ Buffer {
" ⌥ + ↑ edit ",
],
styles: [
x: 0, y: 0, fg: Green, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 0, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 0, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 17, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: DIM,
x: 14, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
source: tui/src/bottom_pane/pending_input_preview.rs
assertion_line: 345
expression: "format!(\"{buf:?}\")"
---
Buffer {
Expand All @@ -9,7 +8,7 @@ Buffer {
" ! pending steer: Please continue. ",
],
styles: [
x: 0, y: 0, fg: Blue, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 0, fg: LightBlue, bg: Reset, underline: Reset, modifier: NONE,
x: 35, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
]
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
source: tui/src/bottom_pane/pending_input_preview.rs
assertion_line: 362
expression: "format!(\"{buf:?}\")"
---
Buffer {
Expand All @@ -12,12 +11,12 @@ Buffer {
" ⌥ + ↑ edit ",
],
styles: [
x: 0, y: 0, fg: Blue, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 0, fg: LightBlue, bg: Reset, underline: Reset, modifier: NONE,
x: 35, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 1, fg: Cyan, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 1, fg: Cyan, bg: Reset, underline: Reset, modifier: BOLD,
x: 48, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 2, fg: Yellow, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 2, fg: Yellow, bg: Reset, underline: Reset, modifier: ITALIC,
x: 0, y: 2, fg: Green, bg: Reset, underline: Reset, modifier: BOLD,
x: 4, y: 2, fg: Green, bg: Reset, underline: Reset, modifier: BOLD | ITALIC,
x: 29, y: 2, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 3, fg: Reset, bg: Reset, underline: Reset, modifier: DIM,
x: 14, y: 3, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
source: tui/src/bottom_pane/pending_input_preview.rs
assertion_line: 252
expression: "format!(\"{buf:?}\")"
---
Buffer {
Expand All @@ -11,11 +10,10 @@ Buffer {
" ⌥ + ↑ edit ",
],
styles: [
x: 0, y: 0, fg: Green, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 0, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 0, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 17, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 1, fg: Green, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 1, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 4, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 27, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 2, fg: Reset, bg: Reset, underline: Reset, modifier: DIM,
x: 14, y: 2, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
source: tui/src/bottom_pane/pending_input_preview.rs
assertion_line: 288
expression: "format!(\"{buf:?}\")"
---
Buffer {
Expand All @@ -12,13 +11,12 @@ Buffer {
" ⌥ + ↑ edit ",
],
styles: [
x: 0, y: 0, fg: Green, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 0, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 0, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 0, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 0, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 1, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 4, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 14, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 2, fg: Green, bg: Reset, underline: Reset, modifier: NONE,
x: 4, y: 2, fg: Green, bg: Reset, underline: Reset, modifier: ITALIC,
x: 4, y: 2, fg: Reset, bg: Reset, underline: Reset, modifier: ITALIC,
x: 27, y: 2, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
x: 0, y: 3, fg: Reset, bg: Reset, underline: Reset, modifier: DIM,
x: 14, y: 3, fg: Reset, bg: Reset, underline: Reset, modifier: NONE,
Expand Down
Loading