-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathproject.yml
More file actions
106 lines (101 loc) · 4.4 KB
/
Copy pathproject.yml
File metadata and controls
106 lines (101 loc) · 4.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
name: Omni
options:
bundleIdPrefix: io.hanxiao
deploymentTarget:
macOS: "14.0"
createIntermediateGroups: true
packages:
OmniKit:
path: .
targets:
Omni:
type: application
platform: macOS
sources:
- App
dependencies:
- package: OmniKit
product: OmniKit
# Hardened runtime gates TCC-protected resources on a DECLARED entitlement, sandbox or no
# sandbox: tccd refuses to even show the Photos prompt for a hardened binary that does not
# carry this one ("Prompting policy for hardened runtime; service: kTCCServicePhotos requires
# entitlement ... but it is missing"), and PHPhotoLibrary.requestAuthorization comes straight
# back denied with nothing recorded. Read-only access to the user's own library; it needs no
# provisioning profile and does not affect notarization.
entitlements:
path: App/Omni.entitlements
properties:
com.apple.security.personal-information.photos-library: true
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: io.hanxiao.omni
MARKETING_VERSION: "0.14.7"
CURRENT_PROJECT_VERSION: "1"
GENERATE_INFOPLIST_FILE: YES
SWIFT_VERSION: "6.0"
SWIFT_STRICT_CONCURRENCY: complete
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
# Sign with a stable Apple Development identity (not ad-hoc) so the code signature is
# consistent across rebuilds. TCC then remembers the Documents/Downloads/Desktop grant
# instead of re-prompting on every build.
CODE_SIGN_IDENTITY: "Apple Development"
CODE_SIGN_STYLE: Manual
# Team ID is read from the environment so no Apple account is baked into the repo.
# Set it before generating: `export OMNI_TEAM_ID=XXXXXXXXXX` (your 10-char Team ID).
# CI passes DEVELOPMENT_TEAM as a build override, so this can be empty there.
DEVELOPMENT_TEAM: ${OMNI_TEAM_ID}
CODE_SIGNING_REQUIRED: YES
ENABLE_HARDENED_RUNTIME: YES
ENABLE_APP_SANDBOX: NO
INFOPLIST_KEY_LSApplicationCategoryType: "public.app-category.productivity"
INFOPLIST_KEY_NSHumanReadableCopyright: "Copyright © 2026 Han Xiao"
INFOPLIST_KEY_NSDocumentsFolderUsageDescription: "Omni indexes your Documents so you can search them by meaning."
INFOPLIST_KEY_NSDownloadsFolderUsageDescription: "Omni indexes your Downloads so you can search them by meaning."
INFOPLIST_KEY_NSDesktopFolderUsageDescription: "Omni indexes your Desktop so you can search them by meaning."
# Read-only: Omni embeds your photos and videos locally so you can search them by meaning.
# Nothing is exported, copied, or uploaded, and Omni never writes to the library.
INFOPLIST_KEY_NSPhotoLibraryUsageDescription: "Omni indexes your Photos library on this Mac so you can search your photos and videos by meaning. Nothing leaves your Mac."
INFOPLIST_KEY_LSMinimumSystemVersion: "14.0"
# NO `INFOPLIST_KEY_LSMultipleInstancesProhibited` HERE, AND IT IS NOT AN OVERSIGHT.
# Xcode's INFOPLIST_KEY_ mechanism only honours Apple's whitelisted keys; this is not one,
# and the setting is silently dropped - verified by reading the key back out of the built
# Info.plist, where it does not exist. Single-instance enforcement lives in AppDelegate's
# applicationWillFinishLaunching instead, which also covers the direct-binary launch that
# LaunchServices would never have brokered anyway.
OmniUITests:
type: bundle.ui-testing
platform: macOS
sources:
- UITests
dependencies:
- target: Omni
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: io.hanxiao.omni.uitests
GENERATE_INFOPLIST_FILE: YES
SWIFT_VERSION: "6.0"
SWIFT_STRICT_CONCURRENCY: minimal
TEST_TARGET_NAME: Omni
CODE_SIGN_IDENTITY: "Apple Development"
CODE_SIGN_STYLE: Manual
DEVELOPMENT_TEAM: ${OMNI_TEAM_ID}
schemes:
# Declaring any scheme turns off XcodeGen's implicit ones, and Scripts/build-app.sh builds
# `-scheme Omni`, so the app scheme has to be declared explicitly now rather than left to
# whatever Xcode happened to autocreate in xcuserdata.
Omni:
build:
targets:
Omni: all
run:
config: Debug
archive:
config: Release
OmniUITests:
build:
targets:
Omni: all
OmniUITests: [test]
test:
targets:
- OmniUITests