Skip to content

Commit 46b4141

Browse files
committed
feat: support user-supplied literal headers
1 parent 5133c65 commit 46b4141

File tree

14 files changed

+357
-41
lines changed

14 files changed

+357
-41
lines changed

Coder Desktop/Coder Desktop.xcodeproj/project.pbxproj

+106-19
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
/* Begin PBXBuildFile section */
1010
961679332CFF117300B2B6DF /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 961679322CFF117300B2B6DF /* NetworkExtension.framework */; };
1111
9616793D2CFF117300B2B6DF /* com.coder.Coder-Desktop.VPN.systemextension in Embed System Extensions */ = {isa = PBXBuildFile; fileRef = 961679302CFF117300B2B6DF /* com.coder.Coder-Desktop.VPN.systemextension */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
12+
AA2C690F2D34F6920059AFAF /* LaunchAtLogin in Frameworks */ = {isa = PBXBuildFile; productRef = AA2C690E2D34F6920059AFAF /* LaunchAtLogin */; };
1213
AA3B3DA92D2D23860099996A /* VPNLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA3B3DA12D2D23860099996A /* VPNLib.framework */; };
1314
AA3B3DBF2D2D23AB0099996A /* SwiftProtobuf in Frameworks */ = {isa = PBXBuildFile; productRef = AA3B3DBE2D2D23AB0099996A /* SwiftProtobuf */; };
1415
AA3B3DC12D2D23AB0099996A /* SwiftProtobufPluginLibrary in Frameworks */ = {isa = PBXBuildFile; productRef = AA3B3DC02D2D23AB0099996A /* SwiftProtobufPluginLibrary */; };
@@ -229,6 +230,7 @@
229230
files = (
230231
AA3B40A42D2FC8560099996A /* CoderSDK.framework in Frameworks */,
231232
AA8BC4CF2D00A4B700E1ABAA /* KeychainAccess in Frameworks */,
233+
AA2C690F2D34F6920059AFAF /* LaunchAtLogin in Frameworks */,
232234
AA8BC33F2D0061F200E1ABAA /* FluidMenuBarExtra in Frameworks */,
233235
);
234236
runOnlyForDeploymentPostprocessing = 0;
@@ -368,7 +370,7 @@
368370
buildRules = (
369371
);
370372
dependencies = (
371-
AA8BC33C2D0060E700E1ABAA /* PBXTargetDependency */,
373+
AA2C698C2D354A800059AFAF /* PBXTargetDependency */,
372374
9616793C2CFF117300B2B6DF /* PBXTargetDependency */,
373375
AA3B40A32D2FC8560099996A /* PBXTargetDependency */,
374376
);
@@ -379,6 +381,7 @@
379381
packageProductDependencies = (
380382
AA8BC33E2D0061F200E1ABAA /* FluidMenuBarExtra */,
381383
AA8BC4CE2D00A4B700E1ABAA /* KeychainAccess */,
384+
AA2C690E2D34F6920059AFAF /* LaunchAtLogin */,
382385
);
383386
productName = "Coder Desktop";
384387
productReference = 961678FC2CFF100D00B2B6DF /* Coder Desktop.app */;
@@ -395,6 +398,7 @@
395398
buildRules = (
396399
);
397400
dependencies = (
401+
AA2C698E2D354A840059AFAF /* PBXTargetDependency */,
398402
961679112CFF100E00B2B6DF /* PBXTargetDependency */,
399403
AA3B40BA2D2FDA5C0099996A /* PBXTargetDependency */,
400404
);
@@ -421,6 +425,7 @@
421425
buildRules = (
422426
);
423427
dependencies = (
428+
AA2C69902D354A880059AFAF /* PBXTargetDependency */,
424429
9616791B2CFF100E00B2B6DF /* PBXTargetDependency */,
425430
);
426431
fileSystemSynchronizedGroups = (
@@ -445,6 +450,7 @@
445450
buildRules = (
446451
);
447452
dependencies = (
453+
AA2C69922D354A8B0059AFAF /* PBXTargetDependency */,
448454
AA3B3DD02D2D249F0099996A /* PBXTargetDependency */,
449455
);
450456
fileSystemSynchronizedGroups = (
@@ -469,6 +475,7 @@
469475
buildRules = (
470476
);
471477
dependencies = (
478+
AA2C69942D354A8E0059AFAF /* PBXTargetDependency */,
472479
AA3B40C32D2FE7760099996A /* PBXTargetDependency */,
473480
);
474481
fileSystemSynchronizedGroups = (
@@ -494,6 +501,7 @@
494501
buildRules = (
495502
);
496503
dependencies = (
504+
AA2C69962D354A910059AFAF /* PBXTargetDependency */,
497505
AA3B3DAB2D2D23860099996A /* PBXTargetDependency */,
498506
AA3B3DAD2D2D23860099996A /* PBXTargetDependency */,
499507
);
@@ -520,6 +528,7 @@
520528
buildRules = (
521529
);
522530
dependencies = (
531+
AA2C69982D354A940059AFAF /* PBXTargetDependency */,
523532
);
524533
fileSystemSynchronizedGroups = (
525534
AA3B40922D2FC8560099996A /* CoderSDK */,
@@ -542,6 +551,7 @@
542551
buildRules = (
543552
);
544553
dependencies = (
554+
AA2C699A2D354A970059AFAF /* PBXTargetDependency */,
545555
AA3B409B2D2FC8560099996A /* PBXTargetDependency */,
546556
AA3B409D2D2FC8560099996A /* PBXTargetDependency */,
547557
);
@@ -607,11 +617,12 @@
607617
minimizedProjectReferenceProxies = 1;
608618
packageReferences = (
609619
AA8BC3372D00609700E1ABAA /* XCRemoteSwiftPackageReference "ViewInspector" */,
610-
AA8BC33A2D0060C500E1ABAA /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */,
611620
AA8BC33D2D0061F200E1ABAA /* XCRemoteSwiftPackageReference "fluid-menu-bar-extra" */,
612621
AA8BC4CD2D00A4B700E1ABAA /* XCRemoteSwiftPackageReference "KeychainAccess" */,
613622
961679512CFF207900B2B6DF /* XCRemoteSwiftPackageReference "swift-protobuf" */,
614623
AA3B3E8A2D2E0FE10099996A /* XCRemoteSwiftPackageReference "Mocker" */,
624+
AA2C690D2D34F6920059AFAF /* XCRemoteSwiftPackageReference "LaunchAtLogin-modern" */,
625+
AA2C698A2D354A600059AFAF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */,
615626
);
616627
preferredProjectObjectVersion = 77;
617628
productRefGroup = 961678FD2CFF100D00B2B6DF /* Products */;
@@ -764,6 +775,38 @@
764775
target = 9616792F2CFF117300B2B6DF /* VPN */;
765776
targetProxy = 9616793B2CFF117300B2B6DF /* PBXContainerItemProxy */;
766777
};
778+
AA2C698C2D354A800059AFAF /* PBXTargetDependency */ = {
779+
isa = PBXTargetDependency;
780+
productRef = AA2C698B2D354A800059AFAF /* SwiftLintBuildToolPlugin */;
781+
};
782+
AA2C698E2D354A840059AFAF /* PBXTargetDependency */ = {
783+
isa = PBXTargetDependency;
784+
productRef = AA2C698D2D354A840059AFAF /* SwiftLintBuildToolPlugin */;
785+
};
786+
AA2C69902D354A880059AFAF /* PBXTargetDependency */ = {
787+
isa = PBXTargetDependency;
788+
productRef = AA2C698F2D354A880059AFAF /* SwiftLintBuildToolPlugin */;
789+
};
790+
AA2C69922D354A8B0059AFAF /* PBXTargetDependency */ = {
791+
isa = PBXTargetDependency;
792+
productRef = AA2C69912D354A8B0059AFAF /* SwiftLintBuildToolPlugin */;
793+
};
794+
AA2C69942D354A8E0059AFAF /* PBXTargetDependency */ = {
795+
isa = PBXTargetDependency;
796+
productRef = AA2C69932D354A8E0059AFAF /* SwiftLintBuildToolPlugin */;
797+
};
798+
AA2C69962D354A910059AFAF /* PBXTargetDependency */ = {
799+
isa = PBXTargetDependency;
800+
productRef = AA2C69952D354A910059AFAF /* SwiftLintBuildToolPlugin */;
801+
};
802+
AA2C69982D354A940059AFAF /* PBXTargetDependency */ = {
803+
isa = PBXTargetDependency;
804+
productRef = AA2C69972D354A940059AFAF /* SwiftLintBuildToolPlugin */;
805+
};
806+
AA2C699A2D354A970059AFAF /* PBXTargetDependency */ = {
807+
isa = PBXTargetDependency;
808+
productRef = AA2C69992D354A970059AFAF /* SwiftLintBuildToolPlugin */;
809+
};
767810
AA3B3DAB2D2D23860099996A /* PBXTargetDependency */ = {
768811
isa = PBXTargetDependency;
769812
target = AA3B3DA02D2D23860099996A /* VPNLib */;
@@ -804,10 +847,6 @@
804847
target = AA3B40902D2FC8560099996A /* CoderSDK */;
805848
targetProxy = AA3B40C22D2FE7760099996A /* PBXContainerItemProxy */;
806849
};
807-
AA8BC33C2D0060E700E1ABAA /* PBXTargetDependency */ = {
808-
isa = PBXTargetDependency;
809-
productRef = AA8BC33B2D0060E700E1ABAA /* SwiftLintBuildToolPlugin */;
810-
};
811850
/* End PBXTargetDependency section */
812851

813852
/* Begin XCBuildConfiguration section */
@@ -1446,6 +1485,22 @@
14461485
version = 1.28.2;
14471486
};
14481487
};
1488+
AA2C690D2D34F6920059AFAF /* XCRemoteSwiftPackageReference "LaunchAtLogin-modern" */ = {
1489+
isa = XCRemoteSwiftPackageReference;
1490+
repositoryURL = "https://github.com/sindresorhus/LaunchAtLogin-modern";
1491+
requirement = {
1492+
kind = exactVersion;
1493+
version = 1.1.0;
1494+
};
1495+
};
1496+
AA2C698A2D354A600059AFAF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */ = {
1497+
isa = XCRemoteSwiftPackageReference;
1498+
repositoryURL = "https://github.com/SimplyDanny/SwiftLintPlugins";
1499+
requirement = {
1500+
kind = upToNextMajorVersion;
1501+
minimumVersion = 0.58.0;
1502+
};
1503+
};
14491504
AA3B3E8A2D2E0FE10099996A /* XCRemoteSwiftPackageReference "Mocker" */ = {
14501505
isa = XCRemoteSwiftPackageReference;
14511506
repositoryURL = "https://github.com/WeTransfer/Mocker";
@@ -1462,14 +1517,6 @@
14621517
minimumVersion = 0.10.0;
14631518
};
14641519
};
1465-
AA8BC33A2D0060C500E1ABAA /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */ = {
1466-
isa = XCRemoteSwiftPackageReference;
1467-
repositoryURL = "https://github.com/SimplyDanny/SwiftLintPlugins";
1468-
requirement = {
1469-
kind = upToNextMajorVersion;
1470-
minimumVersion = 0.57.1;
1471-
};
1472-
};
14731520
AA8BC33D2D0061F200E1ABAA /* XCRemoteSwiftPackageReference "fluid-menu-bar-extra" */ = {
14741521
isa = XCRemoteSwiftPackageReference;
14751522
repositoryURL = "https://github.com/lfroms/fluid-menu-bar-extra";
@@ -1489,6 +1536,51 @@
14891536
/* End XCRemoteSwiftPackageReference section */
14901537

14911538
/* Begin XCSwiftPackageProductDependency section */
1539+
AA2C690E2D34F6920059AFAF /* LaunchAtLogin */ = {
1540+
isa = XCSwiftPackageProductDependency;
1541+
package = AA2C690D2D34F6920059AFAF /* XCRemoteSwiftPackageReference "LaunchAtLogin-modern" */;
1542+
productName = LaunchAtLogin;
1543+
};
1544+
AA2C698B2D354A800059AFAF /* SwiftLintBuildToolPlugin */ = {
1545+
isa = XCSwiftPackageProductDependency;
1546+
package = AA2C698A2D354A600059AFAF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */;
1547+
productName = "plugin:SwiftLintBuildToolPlugin";
1548+
};
1549+
AA2C698D2D354A840059AFAF /* SwiftLintBuildToolPlugin */ = {
1550+
isa = XCSwiftPackageProductDependency;
1551+
package = AA2C698A2D354A600059AFAF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */;
1552+
productName = "plugin:SwiftLintBuildToolPlugin";
1553+
};
1554+
AA2C698F2D354A880059AFAF /* SwiftLintBuildToolPlugin */ = {
1555+
isa = XCSwiftPackageProductDependency;
1556+
package = AA2C698A2D354A600059AFAF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */;
1557+
productName = "plugin:SwiftLintBuildToolPlugin";
1558+
};
1559+
AA2C69912D354A8B0059AFAF /* SwiftLintBuildToolPlugin */ = {
1560+
isa = XCSwiftPackageProductDependency;
1561+
package = AA2C698A2D354A600059AFAF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */;
1562+
productName = "plugin:SwiftLintBuildToolPlugin";
1563+
};
1564+
AA2C69932D354A8E0059AFAF /* SwiftLintBuildToolPlugin */ = {
1565+
isa = XCSwiftPackageProductDependency;
1566+
package = AA2C698A2D354A600059AFAF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */;
1567+
productName = "plugin:SwiftLintBuildToolPlugin";
1568+
};
1569+
AA2C69952D354A910059AFAF /* SwiftLintBuildToolPlugin */ = {
1570+
isa = XCSwiftPackageProductDependency;
1571+
package = AA2C698A2D354A600059AFAF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */;
1572+
productName = "plugin:SwiftLintBuildToolPlugin";
1573+
};
1574+
AA2C69972D354A940059AFAF /* SwiftLintBuildToolPlugin */ = {
1575+
isa = XCSwiftPackageProductDependency;
1576+
package = AA2C698A2D354A600059AFAF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */;
1577+
productName = "plugin:SwiftLintBuildToolPlugin";
1578+
};
1579+
AA2C69992D354A970059AFAF /* SwiftLintBuildToolPlugin */ = {
1580+
isa = XCSwiftPackageProductDependency;
1581+
package = AA2C698A2D354A600059AFAF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */;
1582+
productName = "plugin:SwiftLintBuildToolPlugin";
1583+
};
14921584
AA3B3DBE2D2D23AB0099996A /* SwiftProtobuf */ = {
14931585
isa = XCSwiftPackageProductDependency;
14941586
package = 961679512CFF207900B2B6DF /* XCRemoteSwiftPackageReference "swift-protobuf" */;
@@ -1519,11 +1611,6 @@
15191611
package = AA8BC3372D00609700E1ABAA /* XCRemoteSwiftPackageReference "ViewInspector" */;
15201612
productName = ViewInspector;
15211613
};
1522-
AA8BC33B2D0060E700E1ABAA /* SwiftLintBuildToolPlugin */ = {
1523-
isa = XCSwiftPackageProductDependency;
1524-
package = AA8BC33A2D0060C500E1ABAA /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */;
1525-
productName = "plugin:SwiftLintBuildToolPlugin";
1526-
};
15271614
AA8BC33E2D0061F200E1ABAA /* FluidMenuBarExtra */ = {
15281615
isa = XCSwiftPackageProductDependency;
15291616
package = AA8BC33D2D0061F200E1ABAA /* XCRemoteSwiftPackageReference "fluid-menu-bar-extra" */;

Coder Desktop/Coder Desktop.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"originHash" : "ec40e522ec1a2416e8e8f5cbe97424ab3e4a614e6ef453c10ea28e84e88b6771",
2+
"originHash" : "c41f63aa01c78f450e2232efbefcd30874995ad120db77fa5942062d6f813891",
33
"pins" : [
44
{
55
"identity" : "fluid-menu-bar-extra",
@@ -18,6 +18,15 @@
1818
"revision" : "e0c7eebc5a4465a3c4680764f26b7a61f567cdaf"
1919
}
2020
},
21+
{
22+
"identity" : "launchatlogin-modern",
23+
"kind" : "remoteSourceControl",
24+
"location" : "https://github.com/sindresorhus/LaunchAtLogin-modern",
25+
"state" : {
26+
"revision" : "a04ec1c363be3627734f6dad757d82f5d4fa8fcc",
27+
"version" : "1.1.0"
28+
}
29+
},
2130
{
2231
"identity" : "mocker",
2332
"kind" : "remoteSourceControl",
@@ -41,8 +50,8 @@
4150
"kind" : "remoteSourceControl",
4251
"location" : "https://github.com/SimplyDanny/SwiftLintPlugins",
4352
"state" : {
44-
"revision" : "f9731bef175c3eea3a0ca960f1be78fcc2bc7853",
45-
"version" : "0.57.1"
53+
"revision" : "fac0c3d3ac69b15ea5382275dbbd5e583a2e05fa",
54+
"version" : "0.58.0"
4655
}
4756
},
4857
{

Coder Desktop/Coder Desktop/About.swift

+1-9
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,7 @@ enum About {
3232

3333
@MainActor
3434
static func open() {
35-
#if compiler(>=5.9) && canImport(AppKit)
36-
if #available(macOS 14, *) {
37-
NSApp.activate()
38-
} else {
39-
NSApp.activate(ignoringOtherApps: true)
40-
}
41-
#else
42-
NSApp.activate(ignoringOtherApps: true)
43-
#endif
35+
appActivate()
4436
NSApp.orderFrontStandardAboutPanel(options: [
4537
.credits: credits,
4638
])

Coder Desktop/Coder Desktop/Coder_DesktopApp.swift

+24
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import FluidMenuBarExtra
2+
import SwiftData
23
import SwiftUI
34

45
@main
@@ -14,6 +15,7 @@ struct DesktopApp: App {
1415
LoginForm<PreviewSession>()
1516
}.environmentObject(appDelegate.session)
1617
.windowResizability(.contentSize)
18+
Settings { SettingsView() }.modelContainer(appDelegate.modelContainer)
1719
}
1820
}
1921

@@ -22,11 +24,20 @@ class AppDelegate: NSObject, NSApplicationDelegate {
2224
private var menuBarExtra: FluidMenuBarExtra?
2325
let vpn: PreviewVPN
2426
let session: PreviewSession
27+
let modelContainer: ModelContainer
2528

2629
override init() {
2730
// TODO: Replace with real implementations
2831
vpn = PreviewVPN()
2932
session = PreviewSession()
33+
modelContainer = try! ModelContainer( // swiftlint:disable:this force_try
34+
for: LiteralHeader.self,
35+
configurations: ModelConfiguration(
36+
url: .applicationSupportDirectory
37+
.appending(component: Bundle.main.bundleIdentifier!)
38+
.appending(component: "Store.sqlite")
39+
)
40+
)
3041
}
3142

3243
func applicationDidFinishLaunching(_: Notification) {
@@ -41,3 +52,16 @@ class AppDelegate: NSObject, NSApplicationDelegate {
4152
false
4253
}
4354
}
55+
56+
@MainActor
57+
func appActivate() {
58+
#if compiler(>=5.9) && canImport(AppKit)
59+
if #available(macOS 14, *) {
60+
NSApp.activate()
61+
} else {
62+
NSApp.activate(ignoringOtherApps: true)
63+
}
64+
#else
65+
NSApp.activate(ignoringOtherApps: true)
66+
#endif
67+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import CoderSDK
2+
import Foundation
3+
import SwiftData
4+
5+
@Model
6+
final class LiteralHeader: Hashable, Identifiable, Equatable {
7+
var header: String
8+
var value: String
9+
init(header: String, value: String) {
10+
self.header = header
11+
self.value = value
12+
}
13+
}
14+
15+
extension LiteralHeader {
16+
func toSDKHeader() -> HTTPHeader {
17+
return .init(header: header, value: value)
18+
}
19+
}

0 commit comments

Comments
 (0)