Skip to content

Commit 7de0df8

Browse files
Merge branch 'main' into welcomewindow-package
2 parents 9f61ec7 + 149f97b commit 7de0df8

31 files changed

+508
-489
lines changed

.all-contributorsrc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,15 @@
813813
"contributions": [
814814
"code"
815815
]
816+
},
817+
{
818+
"login": "Syrux64",
819+
"name": "Surya",
820+
"avatar_url": "https://avatars.githubusercontent.com/u/118998822?v=4",
821+
"profile": "https://github.com/Syrux64",
822+
"contributions": [
823+
"code"
824+
]
816825
}
817826
],
818827
"contributorsPerLine": 7,

CodeEdit.xcodeproj/project.pbxproj

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
58F2EB03292FB2B0004A9BDE /* Documentation.docc in Sources */ = {isa = PBXBuildFile; fileRef = 58F2EACE292FB2B0004A9BDE /* Documentation.docc */; };
1818
58F2EB1E292FB954004A9BDE /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = 58F2EB1D292FB954004A9BDE /* Sparkle */; };
1919
5EACE6222DF4BF08005E08B8 /* WelcomeWindow in Frameworks */ = {isa = PBXBuildFile; productRef = 5EACE6212DF4BF08005E08B8 /* WelcomeWindow */; };
20+
5E4485612DF600D9008BBE69 /* AboutWindow in Frameworks */ = {isa = PBXBuildFile; productRef = 5E4485602DF600D9008BBE69 /* AboutWindow */; };
2021
6C0617D62BDB4432008C9C42 /* LogStream in Frameworks */ = {isa = PBXBuildFile; productRef = 6C0617D52BDB4432008C9C42 /* LogStream */; };
2122
6C0824A12C5C0C9700A0751E /* SwiftTerm in Frameworks */ = {isa = PBXBuildFile; productRef = 6C0824A02C5C0C9700A0751E /* SwiftTerm */; };
2223
6C147C4529A329350089B630 /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = 6C147C4429A329350089B630 /* OrderedCollections */; };
@@ -174,6 +175,7 @@
174175
6C0617D62BDB4432008C9C42 /* LogStream in Frameworks */,
175176
6CC17B4F2C432AE000834E2C /* CodeEditSourceEditor in Frameworks */,
176177
30CB64912C16CA8100CC8A9E /* LanguageServerProtocol in Frameworks */,
178+
5E4485612DF600D9008BBE69 /* AboutWindow in Frameworks */,
177179
6C4E37FC2C73E00700AEE7B5 /* SwiftTerm in Frameworks */,
178180
6C6BD6F429CD142C00235D17 /* CollectionConcurrencyKit in Frameworks */,
179181
6C85BB442C210EFD00EB5DEF /* SwiftUIIntrospect in Frameworks */,
@@ -320,6 +322,7 @@
320322
6CC00A8A2CBEF150004E8134 /* CodeEditSourceEditor */,
321323
6C73A6D22D4F1E550012D95C /* CodeEditSourceEditor */,
322324
5EACE6212DF4BF08005E08B8 /* WelcomeWindow */,
325+
5E4485602DF600D9008BBE69 /* AboutWindow */,
323326
);
324327
productName = CodeEdit;
325328
productReference = B658FB2C27DA9E0F00EA4DBD /* CodeEdit.app */;
@@ -380,7 +383,7 @@
380383
attributes = {
381384
BuildIndependentTargetsInParallel = 1;
382385
LastSwiftUpdateCheck = 1330;
383-
LastUpgradeCheck = 1620;
386+
LastUpgradeCheck = 1640;
384387
TargetAttributes = {
385388
2BE487EB28245162003F3F64 = {
386389
CreatedOnToolsVersion = 13.3.1;
@@ -424,6 +427,7 @@
424427
6CB94D012CA1205100E8651C /* XCRemoteSwiftPackageReference "swift-async-algorithms" */,
425428
6CF368562DBBD274006A77FD /* XCRemoteSwiftPackageReference "CodeEditSourceEditor" */,
426429
5EACE6202DF4BF08005E08B8 /* XCRemoteSwiftPackageReference "WelcomeWindow" */,
430+
5E44855F2DF600D9008BBE69 /* XCRemoteSwiftPackageReference "AboutWindow" */,
427431
);
428432
preferredProjectObjectVersion = 55;
429433
productRefGroup = B658FB2D27DA9E0F00EA4DBD /* Products */;
@@ -670,6 +674,7 @@
670674
PRODUCT_BUNDLE_IDENTIFIER = app.codeedit.CodeEdit;
671675
PRODUCT_NAME = "$(TARGET_NAME)";
672676
PROVISIONING_PROFILE_SPECIFIER = "";
677+
REGISTER_APP_GROUPS = YES;
673678
RUN_DOCUMENTATION_COMPILER = NO;
674679
SWIFT_EMIT_LOC_STRINGS = YES;
675680
SWIFT_OBJC_BRIDGING_HEADER = "";
@@ -761,6 +766,7 @@
761766
MARKETING_VERSION = 1.0;
762767
PRODUCT_BUNDLE_IDENTIFIER = app.codeedit.CodeEdit.OpenWithCodeEdit;
763768
PRODUCT_NAME = "$(TARGET_NAME)";
769+
REGISTER_APP_GROUPS = YES;
764770
SKIP_INSTALL = YES;
765771
SWIFT_EMIT_LOC_STRINGS = YES;
766772
SWIFT_VERSION = 5.0;
@@ -865,6 +871,7 @@
865871
PRODUCT_BUNDLE_IDENTIFIER = app.codeedit.CodeEdit;
866872
PRODUCT_NAME = "$(TARGET_NAME)";
867873
PROVISIONING_PROFILE_SPECIFIER = "";
874+
REGISTER_APP_GROUPS = YES;
868875
RUN_DOCUMENTATION_COMPILER = NO;
869876
SWIFT_EMIT_LOC_STRINGS = YES;
870877
SWIFT_OBJC_BRIDGING_HEADER = "";
@@ -956,6 +963,7 @@
956963
MARKETING_VERSION = 1.0;
957964
PRODUCT_BUNDLE_IDENTIFIER = app.codeedit.CodeEdit.OpenWithCodeEdit;
958965
PRODUCT_NAME = "$(TARGET_NAME)";
966+
REGISTER_APP_GROUPS = YES;
959967
SKIP_INSTALL = YES;
960968
SWIFT_EMIT_LOC_STRINGS = YES;
961969
SWIFT_VERSION = 5.0;
@@ -990,6 +998,7 @@
990998
MARKETING_VERSION = 1.0;
991999
PRODUCT_BUNDLE_IDENTIFIER = app.codeedit.CodeEdit.OpenWithCodeEdit;
9921000
PRODUCT_NAME = "$(TARGET_NAME)";
1001+
REGISTER_APP_GROUPS = YES;
9931002
SKIP_INSTALL = YES;
9941003
SWIFT_EMIT_LOC_STRINGS = YES;
9951004
SWIFT_VERSION = 5.0;
@@ -1024,6 +1033,7 @@
10241033
MARKETING_VERSION = 1.0;
10251034
PRODUCT_BUNDLE_IDENTIFIER = app.codeedit.CodeEdit.OpenWithCodeEdit;
10261035
PRODUCT_NAME = "$(TARGET_NAME)";
1036+
REGISTER_APP_GROUPS = YES;
10271037
SKIP_INSTALL = YES;
10281038
SWIFT_EMIT_LOC_STRINGS = YES;
10291039
SWIFT_VERSION = 5.0;
@@ -1130,6 +1140,7 @@
11301140
PRODUCT_BUNDLE_IDENTIFIER = app.codeedit.CodeEdit;
11311141
PRODUCT_NAME = "$(TARGET_NAME)";
11321142
PROVISIONING_PROFILE_SPECIFIER = "";
1143+
REGISTER_APP_GROUPS = YES;
11331144
RUN_DOCUMENTATION_COMPILER = NO;
11341145
SWIFT_EMIT_LOC_STRINGS = YES;
11351146
SWIFT_OBJC_BRIDGING_HEADER = "";
@@ -1221,6 +1232,7 @@
12211232
MARKETING_VERSION = 1.0;
12221233
PRODUCT_BUNDLE_IDENTIFIER = app.codeedit.CodeEdit.OpenWithCodeEdit;
12231234
PRODUCT_NAME = "$(TARGET_NAME)";
1235+
REGISTER_APP_GROUPS = YES;
12241236
SKIP_INSTALL = YES;
12251237
SWIFT_EMIT_LOC_STRINGS = YES;
12261238
SWIFT_VERSION = 5.0;
@@ -1396,6 +1408,7 @@
13961408
PRODUCT_BUNDLE_IDENTIFIER = app.codeedit.CodeEdit;
13971409
PRODUCT_NAME = "$(TARGET_NAME)";
13981410
PROVISIONING_PROFILE_SPECIFIER = "";
1411+
REGISTER_APP_GROUPS = YES;
13991412
RUN_DOCUMENTATION_COMPILER = NO;
14001413
SWIFT_EMIT_LOC_STRINGS = YES;
14011414
SWIFT_OBJC_BRIDGING_HEADER = "";
@@ -1436,6 +1449,7 @@
14361449
PRODUCT_BUNDLE_IDENTIFIER = app.codeedit.CodeEdit;
14371450
PRODUCT_NAME = "$(TARGET_NAME)";
14381451
PROVISIONING_PROFILE_SPECIFIER = "";
1452+
REGISTER_APP_GROUPS = YES;
14391453
RUN_DOCUMENTATION_COMPILER = NO;
14401454
SWIFT_EMIT_LOC_STRINGS = YES;
14411455
SWIFT_OBJC_BRIDGING_HEADER = "";
@@ -1688,6 +1702,15 @@
16881702
5EACE6202DF4BF08005E08B8 /* XCRemoteSwiftPackageReference "WelcomeWindow" */ = {
16891703
isa = XCRemoteSwiftPackageReference;
16901704
repositoryURL = "https://github.com/CodeEditApp/WelcomeWindow";
1705+
1706+
requirement = {
1707+
branch = main;
1708+
kind = branch;
1709+
};
1710+
};
1711+
5E44855F2DF600D9008BBE69 /* XCRemoteSwiftPackageReference "AboutWindow" */ = {
1712+
isa = XCRemoteSwiftPackageReference;
1713+
repositoryURL = "https://github.com/CodeEditApp/AboutWindow";
16911714
requirement = {
16921715
branch = main;
16931716
kind = branch;
@@ -1797,6 +1820,11 @@
17971820
isa = XCSwiftPackageProductDependency;
17981821
package = 5EACE6202DF4BF08005E08B8 /* XCRemoteSwiftPackageReference "WelcomeWindow" */;
17991822
productName = WelcomeWindow;
1823+
};
1824+
5E4485602DF600D9008BBE69 /* AboutWindow */ = {
1825+
isa = XCSwiftPackageProductDependency;
1826+
package = 5E44855F2DF600D9008BBE69 /* XCRemoteSwiftPackageReference "AboutWindow" */;
1827+
productName = AboutWindow;
18001828
};
18011829
6C0617D52BDB4432008C9C42 /* LogStream */ = {
18021830
isa = XCSwiftPackageProductDependency;

CodeEdit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 11 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CodeEdit.xcodeproj/xcshareddata/xcschemes/CodeEdit.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1620"
3+
LastUpgradeVersion = "1640"
44
version = "1.7">
55
<BuildAction
66
parallelizeBuildables = "YES"

CodeEdit.xcodeproj/xcshareddata/xcschemes/OpenWithCodeEdit.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1620"
3+
LastUpgradeVersion = "1640"
44
wasCreatedForAppExtension = "YES"
55
version = "2.0">
66
<BuildAction

CodeEdit/CodeEditApp.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import SwiftUI
99
import WelcomeWindow
10+
import AboutWindow
1011

1112
@main
1213
struct CodeEditApp: App {
@@ -42,7 +43,18 @@ struct CodeEditApp: App {
4243

4344
ExtensionManagerWindow()
4445

45-
AboutWindow()
46+
AboutWindow(
47+
subtitleView: { AboutSubtitleView() },
48+
actions: {
49+
AboutButton(title: "Contributors", destination: {
50+
ContributorsView()
51+
})
52+
AboutButton(title: "Acknowledgements", destination: {
53+
AcknowledgementsView()
54+
})
55+
},
56+
footer: { AboutFooterView() }
57+
)
4658

4759
SettingsWindow()
4860
.commands {
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//
2+
// AboutFooterView.swift
3+
// CodeEdit
4+
//
5+
// Created by Giorgi Tchelidze on 08.06.25.
6+
//
7+
8+
import SwiftUI
9+
import AboutWindow
10+
11+
struct AboutFooterView: View {
12+
var body: some View {
13+
FooterView(
14+
primaryView: {
15+
Link(destination: URL(string: "https://github.com/CodeEditApp/CodeEdit/blob/main/LICENSE.md")!) {
16+
Text("MIT License")
17+
.underline()
18+
}
19+
},
20+
secondaryView: {
21+
Text(Bundle.copyrightString ?? "")
22+
}
23+
)
24+
}
25+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
//
2+
// AboutSubtitleView.swift
3+
// CodeEdit
4+
//
5+
// Created by Giorgi Tchelidze on 08.06.25.
6+
//
7+
8+
import SwiftUI
9+
10+
struct AboutSubtitleView: View {
11+
12+
@State private var didCopyVersion = false
13+
@State private var isHoveringVersion = false
14+
15+
private var appVersion: String { Bundle.versionString ?? "No Version" }
16+
private var appBuild: String { Bundle.buildString ?? "No Build" }
17+
private var appVersionPostfix: String { Bundle.versionPostfix ?? "" }
18+
19+
var body: some View {
20+
Text("Version \(appVersion)\(appVersionPostfix) (\(appBuild))")
21+
.textSelection(.disabled)
22+
.onTapGesture {
23+
// Create a string suitable for pasting into a bug report
24+
let macOSVersion = ProcessInfo.processInfo.operatingSystemVersion.semverString
25+
NSPasteboard.general.clearContents()
26+
NSPasteboard.general.setString(
27+
"CodeEdit: \(appVersion) (\(appBuild))\nmacOS: \(macOSVersion)",
28+
forType: .string
29+
)
30+
didCopyVersion.toggle()
31+
}
32+
.background(alignment: .leading) {
33+
if isHoveringVersion {
34+
if #available(macOS 14.0, *) {
35+
Image(systemName: "document.on.document.fill")
36+
.font(.caption)
37+
.offset(x: -16, y: 0)
38+
.transition(.opacity)
39+
.symbolEffect(
40+
.bounce.down.wholeSymbol,
41+
options: .nonRepeating.speed(1.8),
42+
value: didCopyVersion
43+
)
44+
} else {
45+
Image(systemName: "document.on.document.fill")
46+
.font(.caption)
47+
.offset(x: -16, y: 0)
48+
.transition(.opacity)
49+
}
50+
}
51+
}
52+
.onHover { hovering in
53+
withAnimation(.easeInOut(duration: 0.1)) {
54+
isHoveringVersion = hovering
55+
}
56+
}
57+
}
58+
}

CodeEdit/Features/About/Acknowledgements/Views/AcknowledgementsView.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66
//
77

88
import SwiftUI
9+
import AboutWindow
910

1011
struct AcknowledgementsView: View {
1112
@StateObject var model = AcknowledgementsViewModel()
12-
@Binding var aboutMode: AboutMode
13-
var namespace: Namespace.ID
1413

1514
var body: some View {
16-
AboutDetailView(title: "Acknowledgements", aboutMode: $aboutMode, namespace: namespace) {
15+
AboutDetailView(title: "Acknowledgements") {
1716
LazyVStack(spacing: 0) {
1817
ForEach(
1918
model.indexedAcknowledgements,

CodeEdit/Features/About/Acknowledgements/Views/AcknowledgementsWindowController.swift

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)