feat: configurable paste collapse thresholds (TUI + CLI)
Adds two new config keys: - paste_collapse_threshold (default: 5) — line count threshold for bracketed paste collapse in both TUI and CLI - paste_collapse_threshold_fallback (default: 0, disabled) — same for the fallback heuristic in terminals without bracketed paste support TUI frontend reads these from config.get full via applyDisplay/patchUiState. CLI reads from self.config at paste-handling time. Closes #5626 Related: #5623
This commit is contained in:
@@ -142,6 +142,17 @@ const _voiceRecordKeyFromConfig = (cfg: ConfigFullResponse | null): ParsedVoiceR
|
||||
return raw ? parseVoiceRecordKey(raw) : DEFAULT_VOICE_RECORD_KEY
|
||||
}
|
||||
|
||||
const _pasteCollapseLinesFromConfig = (cfg: ConfigFullResponse | null): number => {
|
||||
if (!cfg?.config) return 5
|
||||
const raw = cfg.config.paste_collapse_threshold
|
||||
if (typeof raw === 'number' && Number.isFinite(raw) && raw >= 0) return Math.round(raw)
|
||||
if (typeof raw === 'string') {
|
||||
const n = parseInt(raw, 10)
|
||||
if (Number.isFinite(n) && n >= 0) return n
|
||||
}
|
||||
return 5
|
||||
}
|
||||
|
||||
/** Fetch ``config.get full`` and fan the result through ``applyDisplay``.
|
||||
*
|
||||
* Extracted so the mtime-reload path can be exercised by the test
|
||||
@@ -188,6 +199,7 @@ export const applyDisplay = (
|
||||
indicatorStyle: normalizeIndicatorStyle(d.tui_status_indicator),
|
||||
inlineDiffs: d.inline_diffs !== false,
|
||||
mouseTracking: normalizeMouseTracking(d),
|
||||
pasteCollapseLines: _pasteCollapseLinesFromConfig(cfg),
|
||||
sections: resolveSections(d.sections),
|
||||
showCost: !!d.show_cost,
|
||||
showReasoning: !!d.show_reasoning,
|
||||
|
||||
Reference in New Issue
Block a user