Skip to content
Merged
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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ All notable changes to Forel are documented here. Format loosely follows
## [Unreleased]

### Fixed
- About Forel now displays the app name, version, build number, copyright, and repository link.
- Automatic rules now keep processing simultaneous file arrivals when an earlier file takes time to move to another disk or network folder.
- Activity timestamps now follow the Mac's current locale, time zone, and clock format instead of displaying UTC.

Expand Down
35 changes: 30 additions & 5 deletions Sources/ForelApp/ForelMacApp.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,22 @@ struct ForelMacApp: App {
.commands {
CommandGroup(replacing: .appInfo) {
Button("About Forel") {
let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "alpha"
let icon = Bundle.module.url(forResource: "AppIcon", withExtension: "png").flatMap { NSImage(contentsOf: $0) }
NSApplication.shared.orderFrontStandardAboutPanel(options: [
let info = Bundle.main.infoDictionary
let version = info?["CFBundleShortVersionString"] as? String ?? "Development"
let build = info?["CFBundleVersion"] as? String ?? "Development"
var options: [NSApplication.AboutPanelOptionKey: Any] = [
.applicationName: "Forel",
.applicationVersion: version,
.applicationIcon: icon as Any,
])
.version: "Build \(build)",
.credits: Self.aboutCredits,
]

if let icon = Bundle.module.url(forResource: "AppIcon", withExtension: "png")
.flatMap({ NSImage(contentsOf: $0) }) {
options[.applicationIcon] = icon
}

NSApplication.shared.orderFrontStandardAboutPanel(options: options)
}
}
}
Expand All @@ -67,4 +76,20 @@ struct ForelMacApp: App {
}
.windowResizability(.contentSize)
}

private static var aboutCredits: NSAttributedString {
let credits = NSMutableAttributedString(
string: "\nGitHub Repository",
attributes: [.link: URL(string: "https://github.com/lab421/forel")!]
)

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .center
credits.addAttribute(
.paragraphStyle,
value: paragraphStyle,
range: NSRange(location: 0, length: credits.length)
)
return credits
}
}
2 changes: 2 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ write_info_plist() {
<string>${version_number}</string>
<key>CFBundleVersion</key>
<string>${version_number}</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2026 Lab421</string>
<key>LSMinimumSystemVersion</key>
<string>13.0</string>
<key>LSUIElement</key>
Expand Down
Loading