Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Sources/Panels/BrowserPanel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4555,6 +4555,11 @@ private func browserBareHostCandidate(_ lowercasedInput: String) -> String {
func resolveBrowserNavigableURL(_ input: String) -> URL? {
let trimmed = input.trimmingCharacters(in: .whitespacesAndNewlines)
guard !trimmed.isEmpty else { return nil }

if trimmed.hasPrefix("/") {
return URL(fileURLWithPath: trimmed)
}

guard !trimmed.contains(" ") else { return nil }

// Check localhost/loopback before generic URL parsing because
Expand Down
16 changes: 16 additions & 0 deletions cmuxTests/GhosttyConfigTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1207,6 +1207,22 @@ final class BrowserNewTabNavigationSeedTests: XCTestCase {
}
}

final class BrowserNavigableURLResolverTests: XCTestCase {
func testAbsoluteFilePathResolvesToFileURL() throws {
let url = try XCTUnwrap(resolveBrowserNavigableURL("/Users/example/Desktop/report.html"))

XCTAssertTrue(url.isFileURL)
XCTAssertEqual(url.path, "/Users/example/Desktop/report.html")
}

func testAbsoluteFilePathWithSpacesResolvesToFileURL() throws {
let url = try XCTUnwrap(resolveBrowserNavigableURL("/Users/example/Desktop/disk cleanup report.html"))

XCTAssertTrue(url.isFileURL)
XCTAssertEqual(url.path, "/Users/example/Desktop/disk cleanup report.html")
}
}

@MainActor
final class BrowserPanelRemoteStoreTests: XCTestCase {
func testRemoteWorkspacePanelsShareWorkspaceScopedWebsiteDataStore() {
Expand Down