App

Struct App 

Source
pub struct App {
Show 20 fields pub project_root: Option<PathBuf>, pub session_name: String, pub session: Option<SpawnSession>, pub selected: usize, pub view_mode: ViewMode, pub show_help: bool, pub error: Option<String>, pub live_output: Vec<String>, pub input_buffer: String, pub scroll_offset: usize, pub auto_scroll: bool, pub focused_panel: FocusedPanel, pub waves: Vec<Wave>, pub selected_tasks: HashSet<String>, pub wave_task_index: usize, pub wave_scroll_offset: usize, pub agents_scroll_offset: usize, pub active_tag: Option<String>, pub ralph_mode: bool, pub ralph_max_parallel: usize, /* private fields */
}
Expand description

Application state

Fields§

§project_root: Option<PathBuf>

Project root directory

§session_name: String

Session name being monitored

§session: Option<SpawnSession>

Current spawn session data

§selected: usize

Selected agent index

§view_mode: ViewMode

Current view mode

§show_help: bool

Show help overlay

§error: Option<String>

Error message to display

§live_output: Vec<String>

Live terminal output for selected agent (cached)

§input_buffer: String

Input buffer for sending commands to agent

§scroll_offset: usize

Scroll offset for terminal output (0 = bottom, positive = scrolled up)

§auto_scroll: bool

Auto-scroll to bottom on new output

§focused_panel: FocusedPanel

Which panel is currently focused

§waves: Vec<Wave>

Execution waves with tasks

§selected_tasks: HashSet<String>

Selected task IDs for batch spawning

§wave_task_index: usize

Selected task index within waves panel

§wave_scroll_offset: usize

Scroll offset for waves panel (first visible line)

§agents_scroll_offset: usize

Scroll offset for agents panel (first visible line)

§active_tag: Option<String>

Active tag for loading waves

§ralph_mode: bool

Whether Ralph mode is enabled (auto-spawn ready tasks)

§ralph_max_parallel: usize

Maximum parallel agents in Ralph mode

Implementations§

Source§

impl App

Source

pub fn new(project_root: Option<PathBuf>, session_name: &str) -> Result<Self>

Create new app state

Source

pub fn refresh(&mut self) -> Result<()>

Refresh session data from disk and update agent statuses

Source

pub fn refresh_live_output(&mut self)

Refresh live output from the selected agent’s tmux pane

Source

pub fn tick(&mut self) -> Result<()>

Periodic tick - refresh data as needed

Source

pub fn toggle_ralph_mode(&mut self)

Toggle Ralph mode (autonomous wave execution)

Source

pub fn agents(&self) -> &[AgentState]

Get agents list

Source

pub fn next_agent(&mut self)

Select next agent

Source

pub fn previous_agent(&mut self)

Select previous agent

Source

pub fn adjust_agents_scroll(&mut self)

Adjust agents scroll offset to keep selected agent visible Assumes roughly 8 visible lines in the agents panel

Source

pub fn toggle_fullscreen(&mut self)

Toggle fullscreen mode

Source

pub fn exit_fullscreen(&mut self)

Exit current mode (go back to split)

Source

pub fn enter_input_mode(&mut self)

Enter input mode

Source

pub fn input_char(&mut self, c: char)

Add character to input buffer

Source

pub fn input_backspace(&mut self)

Delete last character from input buffer

Source

pub fn send_input(&mut self) -> Result<()>

Send the input buffer to the selected agent’s tmux pane

Source

pub fn restart_agent(&mut self) -> Result<()>

Restart the selected agent (kill and respawn claude)

Source

pub fn toggle_help(&mut self)

Toggle help overlay

Source

pub fn scroll_up(&mut self, lines: usize)

Scroll terminal output up (show older content)

Source

pub fn scroll_down(&mut self, lines: usize)

Scroll terminal output down (show newer content)

Source

pub fn scroll_to_bottom(&mut self)

Jump to bottom of terminal output

Source

pub fn status_counts(&self) -> (usize, usize, usize, usize)

Get status counts (starting, running, completed, failed)

Source

pub fn selected_agent(&self) -> Option<&AgentState>

Get the selected agent (if any)

Source

pub fn refresh_waves(&mut self)

Refresh waves data from phases

Source

pub fn all_wave_tasks(&self) -> Vec<&WaveTask>

Get flat list of all tasks in waves for navigation

Source

pub fn selected_wave_task(&self) -> Option<&WaveTask>

Get currently selected wave task

Source

pub fn next_panel(&mut self)

Switch focus to next panel

Source

pub fn previous_panel(&mut self)

Switch focus to previous panel

Source

pub fn move_up(&mut self)

Move selection up in current panel

Source

pub fn move_down(&mut self)

Move selection down in current panel

Source

pub fn toggle_task_selection(&mut self)

Toggle selection of currently highlighted task

Source

pub fn select_all_ready(&mut self)

Select all ready tasks in waves

Source

pub fn clear_selection(&mut self)

Clear all task selections

Source

pub fn ready_task_count(&self) -> usize

Get count of ready tasks

Source

pub fn selected_task_count(&self) -> usize

Get count of selected tasks

Source

pub fn get_selected_tasks(&self) -> Vec<&WaveTask>

Get selected tasks for spawning

Source

pub fn spawn_selected_tasks(&mut self) -> Result<usize>

Spawn the selected tasks Returns the number of tasks successfully spawned

Auto Trait Implementations§

§

impl Freeze for App

§

impl RefUnwindSafe for App

§

impl Send for App

§

impl Sync for App

§

impl Unpin for App

§

impl UnwindSafe for App

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more