fix scrollback

This commit is contained in:
neon443
2025-08-05 12:37:08 +01:00
parent 8f28ae21cf
commit dab998928f
2 changed files with 23 additions and 19 deletions

View File

@@ -23,7 +23,7 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
var sessionID: UUID? var sessionID: UUID?
var scrollback: [String] = [] var scrollback: [String] = []
var scrollbackSize = 0.0 // var scrollbackSize = 0.0
@Published var title: String = "" @Published var title: String = ""
@Published var state: SSHState = .idle @Published var state: SSHState = .idle
@@ -142,9 +142,11 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
} }
func disconnect() { func disconnect() {
self.hostkeyChanged = false Task { @MainActor in
withAnimation { self.state = .idle } self.hostkeyChanged = false
withAnimation { self.testSuceeded = nil } withAnimation { self.state = .idle }
withAnimation { self.testSuceeded = nil }
}
if let sessionID { if let sessionID {
Task { @MainActor in Task { @MainActor in
@@ -153,7 +155,7 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
} }
} }
scrollback = [] scrollback = []
scrollbackSize = 0 // scrollbackSize = 0
//send eof if open //send eof if open
if ssh_channel_is_open(channel) == 1 { if ssh_channel_is_open(channel) == 1 {
@@ -371,11 +373,11 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
#endif #endif
Task { @MainActor in Task { @MainActor in
scrollback.append(string) scrollback.append(string)
if scrollbackSize/1024/1024 > 10 { // if scrollbackSize/1024/1024 > 10 {
scrollback.remove(at: 0) // scrollback.remove(at: 0)
} else { // } else {
scrollbackSize += Double(string.lengthOfBytes(using: .utf8)) // scrollbackSize += Double(string.lengthOfBytes(using: .utf8))
} // }
} }
return string return string
} }
@@ -408,15 +410,15 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
// print("resized tty to \(toRows)rows and \(toCols)cols") // print("resized tty to \(toRows)rows and \(toCols)cols")
} }
func prettyScrollbackSize() -> String { // func prettyScrollbackSize() -> String {
if (scrollbackSize/1024/1024) > 1 { // if (scrollbackSize/1024/1024) > 1 {
return "\(scrollbackSize/1024/1024) MiB scrollback" // return "\(scrollbackSize/1024/1024) MiB scrollback"
} else if scrollbackSize/1024 > 1 { // } else if scrollbackSize/1024 > 1 {
return "\(scrollbackSize/1024) KiB scrollback" // return "\(scrollbackSize/1024) KiB scrollback"
} else { // } else {
return "\(scrollbackSize) B scrollback" // return "\(scrollbackSize) B scrollback"
} // }
} // }
private func logSshGetError() { private func logSshGetError() {
guard var session = self.session else { return } guard var session = self.session else { return }

View File

@@ -16,6 +16,7 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina
public convenience init(frame: CGRect, handler: SSHHandler, hostsManager: HostsManager) { public convenience init(frame: CGRect, handler: SSHHandler, hostsManager: HostsManager) {
self.init(frame: frame) self.init(frame: frame)
self.handler = handler self.handler = handler
self.hostsManager = hostsManager self.hostsManager = hostsManager
} }
@@ -80,6 +81,7 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina
public override init(frame: CGRect) { public override init(frame: CGRect) {
super.init(frame: frame) super.init(frame: frame)
getTerminal().options.scrollback = 10_0000
terminalDelegate = self terminalDelegate = self
} }