Fix session restore routing and browser history persistence

This commit is contained in:
Lawrence Chen 2026-02-24 14:20:19 -08:00
parent 1c3f8458ee
commit 06cd25ed52
7 changed files with 878 additions and 17 deletions

View file

@ -295,11 +295,14 @@ extension Workspace {
case .browser:
guard let browserPanel = panel as? BrowserPanel else { return nil }
terminalSnapshot = nil
let historySnapshot = browserPanel.sessionNavigationHistorySnapshot()
browserSnapshot = SessionBrowserPanelSnapshot(
urlString: browserPanel.currentURL?.absoluteString,
urlString: browserPanel.preferredURLStringForOmnibar(),
shouldRenderWebView: browserPanel.shouldRenderWebView,
pageZoom: Double(browserPanel.webView.pageZoom),
developerToolsVisible: browserPanel.isDeveloperToolsVisible()
developerToolsVisible: browserPanel.isDeveloperToolsVisible(),
backHistoryURLStrings: historySnapshot.backHistoryURLStrings,
forwardHistoryURLStrings: historySnapshot.forwardHistoryURLStrings
)
}
@ -512,6 +515,12 @@ extension Workspace {
if let browserSnapshot = snapshot.browser,
let browserPanel = browserPanel(for: panelId) {
browserPanel.restoreSessionNavigationHistory(
backHistoryURLStrings: browserSnapshot.backHistoryURLStrings ?? [],
forwardHistoryURLStrings: browserSnapshot.forwardHistoryURLStrings ?? [],
currentURLString: browserSnapshot.urlString
)
let pageZoom = CGFloat(max(0.25, min(5.0, browserSnapshot.pageZoom)))
if pageZoom.isFinite {
browserPanel.webView.pageZoom = pageZoom