-
-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathproject.yml
More file actions
232 lines (232 loc) · 8.21 KB
/
project.yml
File metadata and controls
232 lines (232 loc) · 8.21 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
name: Cotabby
options:
bundleIdPrefix: com.jacobfu
defaultConfig: Release
deploymentTarget:
macOS: "14.0"
developmentLanguage: en
groupSortPosition: top
xcodeVersion: "2600"
packages:
Sparkle:
url: https://github.com/sparkle-project/Sparkle
exactVersion: 2.9.1
CotabbyInference:
url: https://github.com/FuJacob/cotabbyinference.git
branch: main
swift-log:
url: https://github.com/apple/swift-log.git
from: 1.12.1
LaunchAtLogin:
url: https://github.com/sindresorhus/LaunchAtLogin-Modern
from: 1.1.0
settings:
base:
ALWAYS_SEARCH_USER_PATHS: NO
CLANG_ANALYZER_NONNULL: YES
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: YES_AGGRESSIVE
CLANG_CXX_LANGUAGE_STANDARD: gnu++20
CLANG_ENABLE_MODULES: YES
CLANG_ENABLE_OBJC_ARC: YES
CLANG_ENABLE_OBJC_WEAK: YES
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING: YES
CLANG_WARN_BOOL_CONVERSION: YES
CLANG_WARN_COMMA: YES
CLANG_WARN_CONSTANT_CONVERSION: YES
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS: YES
CLANG_WARN_DIRECT_OBJC_ISA_USAGE: YES_ERROR
CLANG_WARN_DOCUMENTATION_COMMENTS: YES
CLANG_WARN_EMPTY_BODY: YES
CLANG_WARN_ENUM_CONVERSION: YES
CLANG_WARN_INFINITE_RECURSION: YES
CLANG_WARN_INT_CONVERSION: YES
CLANG_WARN_NON_LITERAL_NULL_CONVERSION: YES
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF: YES
CLANG_WARN_OBJC_LITERAL_CONVERSION: YES
CLANG_WARN_OBJC_ROOT_CLASS: YES_ERROR
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: YES
CLANG_WARN_RANGE_LOOP_ANALYSIS: YES
CLANG_WARN_STRICT_PROTOTYPES: YES
CLANG_WARN_SUSPICIOUS_MOVE: YES
CLANG_WARN_UNGUARDED_AVAILABILITY: YES_AGGRESSIVE
CLANG_WARN_UNREACHABLE_CODE: YES
CLANG_WARN__DUPLICATE_METHOD_MATCH: YES
COPY_PHASE_STRIP: NO
DEVELOPMENT_TEAM: G946M8K23B
ENABLE_STRICT_OBJC_MSGSEND: YES
ENABLE_USER_SCRIPT_SANDBOXING: YES
GCC_C_LANGUAGE_STANDARD: gnu17
GCC_NO_COMMON_BLOCKS: YES
GCC_WARN_64_TO_32_BIT_CONVERSION: YES
GCC_WARN_ABOUT_RETURN_TYPE: YES_ERROR
GCC_WARN_UNDECLARED_SELECTOR: YES
GCC_WARN_UNINITIALIZED_AUTOS: YES_AGGRESSIVE
GCC_WARN_UNUSED_FUNCTION: YES
GCC_WARN_UNUSED_VARIABLE: YES
LOCALIZATION_PREFERS_STRING_CATALOGS: YES
MACOSX_DEPLOYMENT_TARGET: "14.0"
MTL_FAST_MATH: YES
SDKROOT: macosx
configs:
Debug:
DEBUG_INFORMATION_FORMAT: dwarf
ENABLE_TESTABILITY: YES
GCC_DYNAMIC_NO_PIC: NO
GCC_OPTIMIZATION_LEVEL: "0"
GCC_PREPROCESSOR_DEFINITIONS:
- DEBUG=1
- $(inherited)
MTL_ENABLE_DEBUG_INFO: INCLUDE_SOURCE
ONLY_ACTIVE_ARCH: YES
SWIFT_ACTIVE_COMPILATION_CONDITIONS: DEBUG $(inherited)
SWIFT_OPTIMIZATION_LEVEL: -Onone
Release:
DEBUG_INFORMATION_FORMAT: dwarf-with-dsym
ENABLE_NS_ASSERTIONS: NO
MTL_ENABLE_DEBUG_INFO: NO
SWIFT_COMPILATION_MODE: wholemodule
# Shared application target body. `Cotabby` (prod) and `Cotabby Dev` both build the same sources
# from this template and differ only in identity-bearing settings below, so the dev build can hold
# its own Accessibility/TCC grant without ever clobbering the released app's.
targetTemplates:
CotabbyApp:
type: application
platform: macOS
deploymentTarget: "14.0"
sources:
- path: Cotabby
dependencies:
- package: Sparkle
product: Sparkle
- package: CotabbyInference
product: CotabbyInference
- package: swift-log
product: InMemoryLogging
- package: swift-log
product: Logging
- package: LaunchAtLogin
product: LaunchAtLogin
settings:
base:
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS: YES
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
CODE_SIGN_IDENTITY[sdk=macosx*]: Apple Development
CODE_SIGN_STYLE: Automatic
COMBINE_HIDPI_IMAGES: YES
CURRENT_PROJECT_VERSION: "1"
ENABLE_APP_SANDBOX: NO
ENABLE_HARDENED_RUNTIME: YES
ENABLE_PREVIEWS: YES
ENABLE_USER_SELECTED_FILES: readonly
GENERATE_INFOPLIST_FILE: NO
INFOPLIST_FILE: CotabbyInfo.plist
INFOPLIST_KEY_LSApplicationCategoryType: public.app-category.productivity
LD_RUNPATH_SEARCH_PATHS:
- $(inherited)
- "@executable_path/../Frameworks"
MARKETING_VERSION: "1.0"
# PRODUCT_NAME follows the target name, so the prod target ships "Cotabby.app" while the dev
# target ships "Cotabby Dev.app" — two products that can coexist in /Applications, each with
# its own row in System Settings > Privacy. The per-target bundle identifier is set below.
PRODUCT_NAME: $(TARGET_NAME)
REGISTER_APP_GROUPS: YES
SPARKLE_PUBLIC_ED_KEY: efJeZNfUISOs6npbxI2MLLe7sBB5tT/sVnTk9t/qBSY=
STRING_CATALOG_GENERATE_SYMBOLS: YES
SWIFT_APPROACHABLE_CONCURRENCY: YES
SWIFT_DEFAULT_ACTOR_ISOLATION: MainActor
SWIFT_EMIT_LOC_STRINGS: YES
SWIFT_OBJC_INTEROP_MODE: objcxx
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY: YES
SWIFT_VERSION: "5.0"
targets:
Cotabby:
templates:
- CotabbyApp
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.jacobfu.tabby
# Local development build. Distinct bundle identifier + product name means a separate, stable
# TCC identity (Accessibility, Input Monitoring, Screen Recording survive rebuilds), the dev app
# icon makes it visually distinct, and the COTABBY_DEV compilation condition disables Sparkle so
# the prod appcast never replaces it.
"Cotabby Dev":
templates:
- CotabbyApp
settings:
base:
ASSETCATALOG_COMPILER_APPICON_NAME: AppIconDev
PRODUCT_BUNDLE_IDENTIFIER: com.jacobfu.tabby.dev
# Keep this under `base:` so COTABBY_DEV is defined in EVERY configuration, Release included.
# Do not scope it to `configs: Debug:`. A Release-config dev build (the scheme's Profile and
# Archive actions) must still compile Sparkle out; otherwise it could pull the prod appcast
# and replace itself with the released bundle, the exact identity collapse this target exists
# to prevent.
SWIFT_ACTIVE_COMPILATION_CONDITIONS: COTABBY_DEV $(inherited)
CotabbyTests:
type: bundle.unit-test
platform: macOS
deploymentTarget: "14.0"
sources:
- path: CotabbyTests
dependencies:
- target: Cotabby
settings:
base:
BUNDLE_LOADER: $(TEST_HOST)
CODE_SIGN_IDENTITY: "-"
CODE_SIGNING_REQUIRED: NO
CODE_SIGN_STYLE: Automatic
GENERATE_INFOPLIST_FILE: YES
LD_RUNPATH_SEARCH_PATHS:
- $(inherited)
- "@executable_path/../Frameworks"
- "@loader_path/../Frameworks"
MACOSX_DEPLOYMENT_TARGET: "14.0"
PRODUCT_BUNDLE_IDENTIFIER: com.jacobfu.tabby.CotabbyTests
PRODUCT_MODULE_NAME: $(TARGET_NAME)
PRODUCT_NAME: $(TARGET_NAME)
SDKROOT: macosx
SWIFT_OBJC_INTEROP_MODE: objcxx
SWIFT_VERSION: "5.0"
TEST_HOST: $(BUILT_PRODUCTS_DIR)/Cotabby.app/Contents/MacOS/Cotabby
schemes:
Cotabby:
build:
targets:
Cotabby: all
run:
config: Debug
commandLineArguments:
-cotabby-debug: true
test:
config: Debug
gatherCoverageData: false
targets:
- CotabbyTests
profile:
config: Release
analyze:
config: Debug
archive:
config: Release
# Daily-driver scheme. Builds the dev-identity target so running from Xcode never touches the
# released app's permissions. No test action here: CotabbyTests is bound to the prod `Cotabby`
# target (its TEST_HOST points at "Cotabby.app"), so tests continue to run from the Cotabby scheme.
"Cotabby Dev":
build:
targets:
"Cotabby Dev": all
run:
config: Debug
commandLineArguments:
-cotabby-debug: true
# Profile/Archive intentionally stay on Release for representative optimized timings. Versus a
# prod Release build the only difference is COTABBY_DEV (Sparkle compiled out), which is not on
# any hot path, so dev profiling stays representative while the artifact is never shippable.
profile:
config: Release
analyze:
config: Debug
archive:
config: Release