on 2026.07.12.0332 help sign in
usage-menubar/project.yml
106 lines 4.2 kB history raw
1# xcodegen project definition — run `xcodegen generate` to (re)create
2# UsageMenubar.xcodeproj. The .xcodeproj is not committed; this file is
3# the source of truth for project structure and build settings.
4name: UsageMenubar
6options:
7 # Reverse-DNS prefix xcodegen uses when it needs to synthesize a bundle id.
8 # The app target pins its own id explicitly below, so this is just a default.
9 bundleIdPrefix: com.ilyakooo0
10 # Oldest macOS we support. SMAppService (launch at login) requires 13.0+;
11 # we target 14.0 (Sonoma). Keep in sync with MACOSX_DEPLOYMENT_TARGET below.
12 deploymentTarget:
13 macOS: "14.0"
14 createIntermediateGroups: true
15 generateEmptyDirectories: true
17settings:
18 base:
19 SWIFT_VERSION: "5.9"
20 # Local/CI builds are unsigned at compile time. Release builds get an
21 # ad-hoc signature applied after archiving (see .github/workflows/release.yml).
22 DEVELOPMENT_TEAM: ""
23 CODE_SIGN_IDENTITY: ""
24 CODE_SIGNING_REQUIRED: "NO"
25 CODE_SIGNING_ALLOWED: "NO"
26 # Version defaults for local builds only. The release workflow overwrites
27 # these (and the CFBundle* keys below) with a version derived from the
28 # commit timestamp, formatted YYYY.MM.DD.HHHH — so editing them by hand
29 # has no effect on what ships.
30 MARKETING_VERSION: "1.0.0"
31 CURRENT_PROJECT_VERSION: "1"
33targets:
34 # ── The menu bar app ───────────────────────────────────────────────────
35 UsageMenubar:
36 type: application
37 platform: macOS
38 sources:
39 - path: UsageMenubar
40 excludes:
41 # Referenced explicitly via INFOPLIST_FILE / CODE_SIGN_ENTITLEMENTS,
42 # so they must not also be compiled in as resources.
43 - "Info.plist"
44 - "*.entitlements"
45 info:
46 path: UsageMenubar/Info.plist
47 properties:
48 CFBundleName: UsageMenubar
49 CFBundleDisplayName: Usage Menubar
50 CFBundleIdentifier: com.ilyakooo0.usage-menubar
51 # Overwritten by CI — see the note on MARKETING_VERSION above.
52 CFBundleVersion: "1"
53 CFBundleShortVersionString: "1.0.0"
54 # Agent app: no dock icon and no main window; it lives in the menu bar.
55 LSUIElement: true
56 LSApplicationCategoryType: public.app-category.utilities
57 NSHighResolutionCapable: true
58 settings:
59 base:
60 PRODUCT_BUNDLE_IDENTIFIER: com.ilyakooo0.usage-menubar
61 PRODUCT_NAME: UsageMenubar
62 INFOPLIST_FILE: UsageMenubar/Info.plist
63 # Grants the outgoing-network-connection entitlement needed to reach
64 # the Hyper and Claude APIs, and deliberately does not sandbox the app —
65 # see the comment in the entitlements file. Stripped in CI's archive step
66 # (unsigned builds can't carry entitlements).
67 CODE_SIGN_ENTITLEMENTS: UsageMenubar/UsageMenubar.entitlements
68 ENABLE_HARDENED_RUNTIME: YES
69 ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
70 MACOSX_DEPLOYMENT_TARGET: "14.0"
71 LD_RUNPATH_SEARCH_PATHS:
72 - "$(inherited)"
73 - "@executable_path/../Frameworks"
75 # ── Unit tests ─────────────────────────────────────────────────────────
76 # Hosted by the app target (BUNDLE_LOADER/TEST_HOST) so tests can reach the
77 # app's internal types without re-declaring them.
78 UsageMenubarTests:
79 type: bundle.unit-test
80 platform: macOS
81 sources:
82 - path: UsageMenubarTests
83 dependencies:
84 - target: UsageMenubar
85 settings:
86 base:
87 PRODUCT_BUNDLE_IDENTIFIER: com.ilyakooo0.usage-menubar.tests
88 PRODUCT_NAME: UsageMenubarTests
89 BUNDLE_LOADER: "$(TEST_HOST)"
90 TEST_HOST: "$(BUILT_PRODUCTS_DIR)/UsageMenubar.app/Contents/MacOS/UsageMenubar"
91 MACOSX_DEPLOYMENT_TARGET: "14.0"
93schemes:
94 UsageMenubar:
95 build:
96 targets:
97 UsageMenubar: all
98 UsageMenubarTests: [test]
99 run:
100 config: Debug
101 test:
102 config: Debug
103 targets:
104 - UsageMenubarTests
105 archive:
106 config: Release