aboutsummaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-07 00:04:32 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-07 00:04:32 +0300
commita51902ede97afd84b469f838f25ab79287bd375d (patch)
tree986cf68f33370450eae9152ac3c2015aeebe5882 /src/app
parent6ccf156a3dd23f419c03892ddc1136e72957f66a (diff)
fix: use byte-based pane scrollback limit
Diffstat (limited to 'src/app')
-rw-r--r--src/app/input.rs11
-rw-r--r--src/app/mod.rs27
-rw-r--r--src/app/state.rs2
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,