mod action_handlers;
mod agent_config;
mod agent_message_helpers;
mod agent_messages;
mod agent_screenshot;
pub(crate) mod agent_state;
mod agent_tick_helpers;
pub(crate) mod anti_idle;
pub(crate) mod config_updates;
mod config_watchers;
pub(crate) mod cursor_anim_state;
pub(crate) mod debug_state;
mod egui_state;
mod focus_state;
mod impl_agent;
mod impl_helpers;
mod impl_init;
pub(crate) mod keyboard_handlers;
mod notifications;
mod overlay_state;
pub(crate) mod overlay_ui_state;
mod prettify_helpers;
mod render_loop_state;
#[path = "../render_pipeline/mod.rs"]
mod render_pipeline;
pub(crate) mod renderer_init;
mod renderer_ops;
pub(crate) mod scroll_ops;
pub(crate) mod search_highlight;
mod shader_ops;
pub(crate) mod shader_state;
pub(crate) mod text_selection;
mod trigger_state;
mod ui_query_helpers;
mod update_state;
pub(crate) mod url_hover;
mod watcher_state;
pub(crate) use egui_state::EguiState;
pub(crate) use focus_state::FocusState;
pub(crate) use overlay_state::OverlayState;
pub(crate) use render_loop_state::{ConfigSaveState, RenderLoopState};
pub(crate) use trigger_state::{PendingTriggerAction, TriggerState};
pub(crate) use update_state::UpdateState;
pub(crate) use watcher_state::WatcherState;
pub(crate) use prettify_helpers::{
preprocess_claude_code_segment, reconstruct_markdown_from_cells,
};
use crate::app::window_state::debug_state::DebugState;
use crate::badge::BadgeState;
use crate::config::Config;
use crate::input::InputHandler;
use crate::keybindings::{KeyCombo, KeybindingRegistry};
use crate::renderer::Renderer;
use crate::smart_selection::SmartSelectionCache;
use crate::status_bar::StatusBarUI;
use crate::tab::TabManager;
use crate::tab_bar_ui::TabBarUI;
use std::sync::Arc;
use tokio::runtime::Runtime;
use winit::window::Window;
#[derive(Clone)]
pub(crate) struct PreservedClipboardImage {
pub(crate) width: usize,
pub(crate) height: usize,
pub(crate) bytes: Vec<u8>,
}
pub(crate) struct ClipboardImageClickGuard {
pub(crate) image: PreservedClipboardImage,
pub(crate) press_position: (f64, f64),
pub(crate) suppress_terminal_mouse_click: bool,
}
pub struct WindowState {
pub(crate) config: Config,
pub(crate) window: Option<Arc<Window>>,
pub(crate) renderer: Option<Renderer>,
pub(crate) input_handler: InputHandler,
pub(crate) runtime: Arc<Runtime>,
pub(crate) tab_manager: TabManager,
pub(crate) tab_bar_ui: TabBarUI,
pub(crate) status_bar_ui: StatusBarUI,
pub(crate) is_fullscreen: bool,
pub(crate) is_recording: bool,
pub(crate) is_shutting_down: bool,
pub(crate) window_index: usize,
pub(crate) egui: EguiState,
pub(crate) shader_state: crate::app::window_state::shader_state::ShaderState,
pub(crate) overlay_ui: crate::app::window_state::overlay_ui_state::OverlayUiState,
pub(crate) agent_state: agent_state::AgentState,
pub(crate) cursor_anim: crate::app::window_state::cursor_anim_state::CursorAnimState,
pub(crate) debug: DebugState,
pub(crate) focus_state: FocusState,
pub(crate) update_state: UpdateState,
pub(crate) overlay_state: OverlayState,
pub(crate) watcher_state: WatcherState,
pub(crate) trigger_state: TriggerState,
pub(crate) render_loop: RenderLoopState,
pub(crate) broadcast_input: bool,
pub(crate) badge_state: BadgeState,
pub(crate) copy_mode: crate::copy_mode::CopyModeState,
pub(crate) file_transfer_state: crate::app::file_transfers::FileTransferState,
pub(crate) clipboard_image_click_guard: Option<ClipboardImageClickGuard>,
pub(crate) keybinding_registry: KeybindingRegistry,
pub(crate) custom_action_prefix_combo: Option<KeyCombo>,
pub(crate) custom_action_prefix_state: crate::tmux::PrefixState,
pub(crate) smart_selection_cache: SmartSelectionCache,
pub(crate) tmux_state: crate::app::tmux_handler::tmux_state::TmuxState,
pub(crate) pending_snap_size: Option<winit::dpi::PhysicalSize<u32>>,
pub(crate) scratch_prettifier_block_ids: std::collections::HashSet<u64>,
}