Fix terminal input modes persisting after ssh remote connection breaking

This commit is contained in:
2026-04-27 23:24:10 +10:00
parent 507d77a0de
commit bb87d7d84c

View File

@@ -200,7 +200,29 @@ class TerminalSession: NSObject, ObservableObject, LocalProcessDelegate, @precon
// MARK: - LocalProcessDelegate
nonisolated func processTerminated(_ source: LocalProcess, exitCode: Int32?) {
Task { @MainActor in self.isRunning = false }
Task { @MainActor in
self.isRunning = false
self.resetTerminalModes()
}
}
private func resetTerminalModes() {
let resetSequences: [[UInt8]] = [
Array("\u{1b}[?9l".utf8),
Array("\u{1b}[?1000l".utf8),
Array("\u{1b}[?1002l".utf8),
Array("\u{1b}[?1003l".utf8),
Array("\u{1b}[?1006l".utf8),
Array("\u{1b}[?1015l".utf8),
Array("\u{1b}[?2004l".utf8),
Array("\u{1b}[?1l".utf8),
Array("\u{1b}[?1049l".utf8),
Array("\u{1b}[?25h".utf8),
]
for seq in resetSequences {
terminalView.feed(byteArray: seq[...])
}
}
nonisolated func dataReceived(slice: ArraySlice<UInt8>) {