Move fullscreen transcript control to TUI configuration (#46849)

## What changed

Use `tui.fullscreen_transcript` to opt into the fullscreen transcript, including scrolling, selection, and search. It defaults to `false`; `--no-alt-screen` and `tui.alternate_screen = "never"` still take precedence.

The new preference controls both the first frame and application startup. Boolean CLI overrides for it are allowed during daemon startup. The old `features.transcript_v2` flag is deprecated and ignored, with a notice directing users to the new setting; it does not migrate into or override the preference.

## Testing

Add coverage for default terminal scrollback, fullscreen persistence through startup, alternate-screen restrictions, daemon override validation, and independence from the deprecated flag. Update existing history and activity tests to use the new preference.

GitOrigin-RevId: 4117bf1ee548fa8d101a594f9506673d87c74c15
This commit is contained in:
Eric Traut
2026-09-20 16:59:00 +00:00
committed by copyberry
parent 79ef00ded1
commit a2de8fedcc
20 changed files with 106 additions and 75 deletions
+5
View File
@@ -4226,6 +4226,11 @@
},
"description": "Individual visual effects. Each also requires animations to be enabled."
},
"fullscreen_transcript": {
"default": false,
"description": "Own the fullscreen transcript, including scrolling, selection, and search. Defaults to `false`; alternate-screen restrictions take precedence.",
"type": "boolean"
},
"keymap": {
"allOf": [
{
+2
View File
@@ -1261,6 +1261,7 @@ fn config_toml_deserializes_model_availability_nux() {
vim_mode_default: false,
question_esc_back: true,
raw_output_mode: false,
fullscreen_transcript: false,
alternate_screen: AltScreenMode::default(),
status_line: None,
status_line_use_colors: true,
@@ -4388,6 +4389,7 @@ fn tui_config_missing_notifications_field_defaults_to_enabled() {
vim_mode_default: false,
question_esc_back: true,
raw_output_mode: false,
fullscreen_transcript: false,
alternate_screen: AltScreenMode::Auto,
status_line: None,
status_line_use_colors: true,
+7
View File
@@ -770,6 +770,9 @@ pub struct Config {
/// Start the TUI in raw scrollback mode for copy-friendly transcript output.
pub tui_raw_output_mode: bool,
/// Own the fullscreen transcript when the alternate screen is enabled.
pub tui_fullscreen_transcript: bool,
/// Start the TUI in the specified collaboration mode (plan/default).
/// Controls whether the TUI uses the terminal's alternate screen buffer.
@@ -4406,6 +4409,10 @@ impl Config {
.as_ref()
.map(|t| t.raw_output_mode)
.unwrap_or(false),
tui_fullscreen_transcript: cfg
.tui
.as_ref()
.is_some_and(|tui| tui.fullscreen_transcript),
tui_alternate_screen: cfg
.tui
.as_ref()