From 95e8562b75789e0464a668532ec0c6c3fb9819aa Mon Sep 17 00:00:00 2001 From: Ethan Dickson Date: Wed, 9 Sep 2026 18:44:14 +1000 Subject: [PATCH 1/2] fix: send coder User-Agent on workspace app icon fetches --- Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift | 3 +++ Coder-Desktop/CoderSDK/UserAgent.swift | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift b/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift index 86b09893..282e8898 100644 --- a/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift +++ b/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift @@ -1,3 +1,4 @@ +import CoderSDK import FluidMenuBarExtra import NetworkExtension import os @@ -89,6 +90,8 @@ class AppDelegate: NSObject, NSApplicationDelegate { UserDefaults.standard.setValue(Theme.Animation.tooltipDelay, forKey: "NSInitialToolTipDelay") // Init SVG loader SDImageCodersManager.shared.addCoder(SDImageSVGCoder.shared) + // Workspace app icons are fetched by SDWebImage, not `Client`, so they need the same User-Agent. + SDWebImageDownloader.shared.setValue(CoderSDK.userAgent(component: .app), forHTTPHeaderField: "User-Agent") menuBar = .init(menuBarExtra: FluidMenuBarExtra( title: "Coder Desktop", diff --git a/Coder-Desktop/CoderSDK/UserAgent.swift b/Coder-Desktop/CoderSDK/UserAgent.swift index d10fe65c..f3618590 100644 --- a/Coder-Desktop/CoderSDK/UserAgent.swift +++ b/Coder-Desktop/CoderSDK/UserAgent.swift @@ -27,12 +27,12 @@ enum UserAgentDefaults { } } -/// Formats a `User-Agent` as `/ (/)`. -func userAgent( - component: CoderComponent, - version: String = UserAgentDefaults.version, - arch: GoArch = UserAgentDefaults.arch -) -> String { +/// The `User-Agent` `component` sends on deployment requests, as `/ (/)`. +public func userAgent(component: CoderComponent) -> String { + userAgent(component: component, version: UserAgentDefaults.version, arch: UserAgentDefaults.arch) +} + +func userAgent(component: CoderComponent, version: String, arch: GoArch) -> String { "\(component.rawValue)/\(version) (\(UserAgentDefaults.goos)/\(arch.rawValue))" } From 6a48bd335b33a701ae062b062bf0be1c19571021 Mon Sep 17 00:00:00 2001 From: Ethan Dickson Date: Wed, 9 Sep 2026 22:46:48 +1000 Subject: [PATCH 2/2] chore: tidy comments --- Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift | 1 - Coder-Desktop/CoderSDK/UserAgent.swift | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift b/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift index 282e8898..4c8065f1 100644 --- a/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift +++ b/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift @@ -90,7 +90,6 @@ class AppDelegate: NSObject, NSApplicationDelegate { UserDefaults.standard.setValue(Theme.Animation.tooltipDelay, forKey: "NSInitialToolTipDelay") // Init SVG loader SDImageCodersManager.shared.addCoder(SDImageSVGCoder.shared) - // Workspace app icons are fetched by SDWebImage, not `Client`, so they need the same User-Agent. SDWebImageDownloader.shared.setValue(CoderSDK.userAgent(component: .app), forHTTPHeaderField: "User-Agent") menuBar = .init(menuBarExtra: FluidMenuBarExtra( diff --git a/Coder-Desktop/CoderSDK/UserAgent.swift b/Coder-Desktop/CoderSDK/UserAgent.swift index f3618590..9b55bfa9 100644 --- a/Coder-Desktop/CoderSDK/UserAgent.swift +++ b/Coder-Desktop/CoderSDK/UserAgent.swift @@ -27,7 +27,7 @@ enum UserAgentDefaults { } } -/// The `User-Agent` `component` sends on deployment requests, as `/ (/)`. +/// Formats a `User-Agent` as `/ (/)`. public func userAgent(component: CoderComponent) -> String { userAgent(component: component, version: UserAgentDefaults.version, arch: UserAgentDefaults.arch) }