diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-07 00:04:32 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-07 00:04:32 +0300 |
| commit | a51902ede97afd84b469f838f25ab79287bd375d (patch) | |
| tree | 986cf68f33370450eae9152ac3c2015aeebe5882 /src/app | |
| parent | 6ccf156a3dd23f419c03892ddc1136e72957f66a (diff) | |
fix: use byte-based pane scrollback limit
Diffstat (limited to 'src/app')
| -rw-r--r-- | src/app/input.rs | 11 | ||||
| -rw-r--r-- | src/app/mod.rs | 27 | ||||
| -rw-r--r-- | src/app/state.rs | 2 |
3 files changed, 35 insertions, 5 deletions
diff --git a/src/app/input.rs b/src/app/input.rs index 64731bf3..17f283c8 100644 --- a/src/app/input.rs +++ b/src/app/input.rs @@ -2804,9 +2804,14 @@ impl AppState { .and_then(|rt| rt.cwd()); if let Some(ws) = self.active.and_then(|i| self.workspaces.get_mut(i)) { - if let Ok(new_id) = - ws.split_focused(direction, new_rows, new_cols, cwd, self.host_terminal_theme) - { + if let Ok(new_id) = ws.split_focused( + direction, + new_rows, + new_cols, + cwd, + self.pane_scrollback_limit_bytes, + self.host_terminal_theme, + ) { ws.layout.focus_pane(new_id); self.mode = Mode::Terminal; } diff --git a/src/app/mod.rs b/src/app/mod.rs index 6d677b0c..9020658a 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -170,6 +170,7 @@ impl App { &snap, 24, 80, + config.advanced.scrollback_limit_bytes, event_tx.clone(), render_notify.clone(), render_dirty.clone(), @@ -205,6 +206,11 @@ impl App { ) }; + info!( + pane_scrollback_limit_bytes = config.advanced.scrollback_limit_bytes, + "using pane scrollback configuration" + ); + let latest_release_notes_available = crate::release_notes::load_latest().is_some(); let mode = if config.should_show_onboarding() { @@ -267,6 +273,7 @@ impl App { sidebar_collapsed: false, agent_panel_scope, confirm_close: config.ui.confirm_close, + pane_scrollback_limit_bytes: config.advanced.scrollback_limit_bytes, accent: crate::config::parse_color(&config.ui.accent), sound: config.ui.sound.clone(), toast_config: config.ui.toast.clone(), @@ -1243,7 +1250,15 @@ impl App { .workspaces .get_mut(ws_idx) .ok_or_else(|| std::io::Error::other("workspace disappeared")) - .and_then(|ws| ws.create_tab(rows, cols, cwd, self.state.host_terminal_theme)); + .and_then(|ws| { + ws.create_tab( + rows, + cols, + cwd, + self.state.pane_scrollback_limit_bytes, + self.state.host_terminal_theme, + ) + }); match result { Ok(tab_idx) => { if params.focus { @@ -1442,6 +1457,7 @@ impl App { rows, cols, params.cwd.map(std::path::PathBuf::from), + self.state.pane_scrollback_limit_bytes, self.state.host_terminal_theme, ) { Ok(new_pane_id) => new_pane_id, @@ -1973,7 +1989,13 @@ impl App { }; let (rows, cols) = self.state.estimate_pane_size(); let ws = &mut self.state.workspaces[ws_idx]; - let idx = ws.create_tab(rows, cols, initial_cwd, self.state.host_terminal_theme)?; + let idx = ws.create_tab( + rows, + cols, + initial_cwd, + self.state.pane_scrollback_limit_bytes, + self.state.host_terminal_theme, + )?; if focus { ws.switch_tab(idx); self.state.mode = Mode::Terminal; @@ -1991,6 +2013,7 @@ impl App { initial_cwd, rows, cols, + self.state.pane_scrollback_limit_bytes, self.state.host_terminal_theme, self.event_tx.clone(), self.render_notify.clone(), diff --git a/src/app/state.rs b/src/app/state.rs index 84920131..a0955a16 100644 --- a/src/app/state.rs +++ b/src/app/state.rs @@ -601,6 +601,7 @@ pub struct AppState { pub sidebar_collapsed: bool, pub agent_panel_scope: AgentPanelScope, pub confirm_close: bool, + pub pane_scrollback_limit_bytes: usize, #[allow(dead_code)] // kept for backward compat; palette.accent is the source of truth pub accent: Color, pub sound: SoundConfig, @@ -710,6 +711,7 @@ impl AppState { sidebar_collapsed: false, agent_panel_scope: AgentPanelScope::CurrentWorkspace, confirm_close: true, + pane_scrollback_limit_bytes: crate::config::DEFAULT_SCROLLBACK_LIMIT_BYTES, accent: Color::Cyan, sound: SoundConfig { enabled: false, |
