mirror of
https://github.com/openai/codex.git
synced 2026-05-01 09:56:37 +00:00
hide the status indicator when the answer stream starts (#4101)
This eliminates a "bounce" at the end of streaming where we hide the status indicator at the end of the turn and the composer moves up two lines. Also, simplify streaming further by removing the HistorySink and inverting control, and collapsing a few single-element structures.
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
use crate::markdown_stream::AnimatedLineStreamer;
|
||||
use std::collections::VecDeque;
|
||||
|
||||
use ratatui::text::Line;
|
||||
|
||||
use crate::markdown_stream::MarkdownStreamCollector;
|
||||
pub(crate) mod controller;
|
||||
|
||||
pub(crate) struct StreamState {
|
||||
pub(crate) collector: MarkdownStreamCollector,
|
||||
pub(crate) streamer: AnimatedLineStreamer,
|
||||
queued_lines: VecDeque<Line<'static>>,
|
||||
pub(crate) has_seen_delta: bool,
|
||||
}
|
||||
|
||||
@@ -12,25 +15,25 @@ impl StreamState {
|
||||
pub(crate) fn new() -> Self {
|
||||
Self {
|
||||
collector: MarkdownStreamCollector::new(),
|
||||
streamer: AnimatedLineStreamer::new(),
|
||||
queued_lines: VecDeque::new(),
|
||||
has_seen_delta: false,
|
||||
}
|
||||
}
|
||||
pub(crate) fn clear(&mut self) {
|
||||
self.collector.clear();
|
||||
self.streamer.clear();
|
||||
self.queued_lines.clear();
|
||||
self.has_seen_delta = false;
|
||||
}
|
||||
pub(crate) fn step(&mut self) -> crate::markdown_stream::StepResult {
|
||||
self.streamer.step()
|
||||
pub(crate) fn step(&mut self) -> Vec<Line<'static>> {
|
||||
self.queued_lines.pop_front().into_iter().collect()
|
||||
}
|
||||
pub(crate) fn drain_all(&mut self) -> crate::markdown_stream::StepResult {
|
||||
self.streamer.drain_all()
|
||||
pub(crate) fn drain_all(&mut self) -> Vec<Line<'static>> {
|
||||
self.queued_lines.drain(..).collect()
|
||||
}
|
||||
pub(crate) fn is_idle(&self) -> bool {
|
||||
self.streamer.is_idle()
|
||||
self.queued_lines.is_empty()
|
||||
}
|
||||
pub(crate) fn enqueue(&mut self, lines: Vec<ratatui::text::Line<'static>>) {
|
||||
self.streamer.enqueue(lines)
|
||||
pub(crate) fn enqueue(&mut self, lines: Vec<Line<'static>>) {
|
||||
self.queued_lines.extend(lines);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user