Includes provider integrations, settings, NSStatusItem UI, tests, Makefile, and README with screenshot. Co-authored-by: Cursor <cursoragent@cursor.com>
558 lines
27 KiB
Text
558 lines
27 KiB
Text
// !$*UTF8*$!
|
|
{
|
|
archiveVersion = 1;
|
|
classes = {
|
|
};
|
|
objectVersion = 77;
|
|
objects = {
|
|
|
|
/* Begin PBXBuildFile section */
|
|
020588A97FA4F49E70833A88 /* CursorAuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 952E850263D70B58A8622D84 /* CursorAuthService.swift */; };
|
|
0FDD856746B2EDD9346A380D /* ClaudeAuthTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA51A975D1EFCACAD5591EF2 /* ClaudeAuthTests.swift */; };
|
|
14C74ABCE2855AE766FC199F /* UsageRefreshService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E6D85517D87583670D54A8A /* UsageRefreshService.swift */; };
|
|
14EEEE6F7825B2B65AE18FC4 /* MenuBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5BC8D498AD23776B7EF6D7 /* MenuBarController.swift */; };
|
|
350A49467C190655A44A1B72 /* cursor-usage-summary.json in Resources */ = {isa = PBXBuildFile; fileRef = A5CAC3724673DBDC415CB9C1 /* cursor-usage-summary.json */; };
|
|
474CD6506A1028547A88F63E /* ProviderUsageSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A929A7D2E06CA26E801EE5 /* ProviderUsageSnapshot.swift */; };
|
|
692ED3CCC92E543EEF808F06 /* PopoverView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12BF3837FE5F27BCB9F05825 /* PopoverView.swift */; };
|
|
6AA6002791A3C8146BE308C8 /* CursorProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E90D01F19914785954D4054 /* CursorProviderTests.swift */; };
|
|
80377D42C74851D9C7CF9DDC /* ClaudeProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BB9DEC72FBE9B5E3D71AE7 /* ClaudeProvider.swift */; };
|
|
84E50E6BE603EFED0E82E96A /* ClaudeAuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FCE5EFE595B010E1E54D98C /* ClaudeAuthService.swift */; };
|
|
859749885A4E61439D7E7399 /* MenuBarLabelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2709A3685926703B69983D6E /* MenuBarLabelView.swift */; };
|
|
87D482510F45091FA971A374 /* MenuBarDisplayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B331C96A907C7CB9172650 /* MenuBarDisplayTests.swift */; };
|
|
9226F7526F0F46F2265AE091 /* CursorProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AA4B4C369488D4FA6312484 /* CursorProvider.swift */; };
|
|
9ADC813DA1DC6C9F6AF03D96 /* claude-oauth-usage.json in Resources */ = {isa = PBXBuildFile; fileRef = C2DDCF0D74548E0E3EE8BBC2 /* claude-oauth-usage.json */; };
|
|
9C03E35D6CC3AE953BEB3EF7 /* ClaudeCLIParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0F49A20AA99ADBF5FA32D5A /* ClaudeCLIParserTests.swift */; };
|
|
B00F7D3788898A4FBDAA205D /* ProviderIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CA37F8450D730231198E183 /* ProviderIcon.swift */; };
|
|
B53990EEE51F907CCD4B5822 /* UsageMetric.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15C24ACF2657E390A6F1EE20 /* UsageMetric.swift */; };
|
|
B9BA0C825207364FD8309DC7 /* UsageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61452F7607C80021EAE24E6C /* UsageProvider.swift */; };
|
|
BDF64716296F11F448D0E604 /* UsageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = E57FF9519DD9DADBAA366503 /* UsageCache.swift */; };
|
|
C5715AEDEB19F7B36298B0FC /* ClaudeProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3717BFFDC22E029B1CF81C65 /* ClaudeProviderTests.swift */; };
|
|
C940AAD549BFBF0DBCBB89C6 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0F6E6ACBDD186D4701E4B63 /* SettingsView.swift */; };
|
|
C9CCA6B2E3EF24D42A7F96C2 /* ClaudeCLIUsageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BC68BB05A29514C7775589 /* ClaudeCLIUsageService.swift */; };
|
|
DACE19613E28C972D18338B9 /* ProviderCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E8B7EBB88662A7526DC0DAC /* ProviderCardView.swift */; };
|
|
DBB881F7D74D8AF0A56987F3 /* AppSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CAAFDF70292C8F5EBF0B950 /* AppSettings.swift */; };
|
|
E4C0E55E8FE83106E2ED480B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 62783B05EB9FEC95006D048D /* Assets.xcassets */; };
|
|
E80856A5BCA4400F795AB66F /* KeychainService.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0E6E438C251CE8879D29C39 /* KeychainService.swift */; };
|
|
E86C79AD8EB57748E7383CC1 /* ProviderID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D1EC45CD4695E90D8F58C5 /* ProviderID.swift */; };
|
|
E95AA83AAF822E74E8CD6027 /* LaunchAtLoginService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8658C9C077212181A65D761F /* LaunchAtLoginService.swift */; };
|
|
EE77658E03D7D2B29ECEE8E2 /* AIMenubarUsageApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7C6925E3576963CFDCD8FDB /* AIMenubarUsageApp.swift */; };
|
|
/* End PBXBuildFile section */
|
|
|
|
/* Begin PBXContainerItemProxy section */
|
|
C08A3AD24405E2B6ED28848F /* PBXContainerItemProxy */ = {
|
|
isa = PBXContainerItemProxy;
|
|
containerPortal = 4442254122661EEA6FBF630E /* Project object */;
|
|
proxyType = 1;
|
|
remoteGlobalIDString = 5B7C4FF9E298606E0E3DDE13;
|
|
remoteInfo = AIMenubarUsage;
|
|
};
|
|
/* End PBXContainerItemProxy section */
|
|
|
|
/* Begin PBXFileReference section */
|
|
12BF3837FE5F27BCB9F05825 /* PopoverView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PopoverView.swift; sourceTree = "<group>"; };
|
|
15C24ACF2657E390A6F1EE20 /* UsageMetric.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsageMetric.swift; sourceTree = "<group>"; };
|
|
17BC6C419B57B4E3AB287296 /* AIMenubarUsage.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AIMenubarUsage.entitlements; sourceTree = "<group>"; };
|
|
1E6D85517D87583670D54A8A /* UsageRefreshService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsageRefreshService.swift; sourceTree = "<group>"; };
|
|
1E8B7EBB88662A7526DC0DAC /* ProviderCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProviderCardView.swift; sourceTree = "<group>"; };
|
|
2709A3685926703B69983D6E /* MenuBarLabelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuBarLabelView.swift; sourceTree = "<group>"; };
|
|
27BB9DEC72FBE9B5E3D71AE7 /* ClaudeProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClaudeProvider.swift; sourceTree = "<group>"; };
|
|
2D5BC8D498AD23776B7EF6D7 /* MenuBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuBarController.swift; sourceTree = "<group>"; };
|
|
3717BFFDC22E029B1CF81C65 /* ClaudeProviderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClaudeProviderTests.swift; sourceTree = "<group>"; };
|
|
3B500F187AFF84E5C8BC212C /* AIMenubarUsage.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AIMenubarUsage.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
3CA37F8450D730231198E183 /* ProviderIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProviderIcon.swift; sourceTree = "<group>"; };
|
|
4416B8C95B50BCEDF54FA130 /* AIMenubarUsageTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AIMenubarUsageTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
5AA4B4C369488D4FA6312484 /* CursorProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CursorProvider.swift; sourceTree = "<group>"; };
|
|
5CAAFDF70292C8F5EBF0B950 /* AppSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSettings.swift; sourceTree = "<group>"; };
|
|
61452F7607C80021EAE24E6C /* UsageProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsageProvider.swift; sourceTree = "<group>"; };
|
|
62783B05EB9FEC95006D048D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
|
65D1EC45CD4695E90D8F58C5 /* ProviderID.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProviderID.swift; sourceTree = "<group>"; };
|
|
7E90D01F19914785954D4054 /* CursorProviderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CursorProviderTests.swift; sourceTree = "<group>"; };
|
|
7FCE5EFE595B010E1E54D98C /* ClaudeAuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClaudeAuthService.swift; sourceTree = "<group>"; };
|
|
8658C9C077212181A65D761F /* LaunchAtLoginService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchAtLoginService.swift; sourceTree = "<group>"; };
|
|
93B331C96A907C7CB9172650 /* MenuBarDisplayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuBarDisplayTests.swift; sourceTree = "<group>"; };
|
|
952E850263D70B58A8622D84 /* CursorAuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CursorAuthService.swift; sourceTree = "<group>"; };
|
|
A5CAC3724673DBDC415CB9C1 /* cursor-usage-summary.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "cursor-usage-summary.json"; sourceTree = "<group>"; };
|
|
AA51A975D1EFCACAD5591EF2 /* ClaudeAuthTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClaudeAuthTests.swift; sourceTree = "<group>"; };
|
|
B0F6E6ACBDD186D4701E4B63 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
|
|
B1A929A7D2E06CA26E801EE5 /* ProviderUsageSnapshot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProviderUsageSnapshot.swift; sourceTree = "<group>"; };
|
|
B8BC68BB05A29514C7775589 /* ClaudeCLIUsageService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClaudeCLIUsageService.swift; sourceTree = "<group>"; };
|
|
C2DDCF0D74548E0E3EE8BBC2 /* claude-oauth-usage.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "claude-oauth-usage.json"; sourceTree = "<group>"; };
|
|
C7C6925E3576963CFDCD8FDB /* AIMenubarUsageApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AIMenubarUsageApp.swift; sourceTree = "<group>"; };
|
|
DE93F3CBB065D23A36D4BE3D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
|
E0F49A20AA99ADBF5FA32D5A /* ClaudeCLIParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClaudeCLIParserTests.swift; sourceTree = "<group>"; };
|
|
E57FF9519DD9DADBAA366503 /* UsageCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsageCache.swift; sourceTree = "<group>"; };
|
|
F0E6E438C251CE8879D29C39 /* KeychainService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainService.swift; sourceTree = "<group>"; };
|
|
/* End PBXFileReference section */
|
|
|
|
/* Begin PBXGroup section */
|
|
78437CF65E89E1611E94DB24 /* AIMenubarUsageTests */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
AA51A975D1EFCACAD5591EF2 /* ClaudeAuthTests.swift */,
|
|
E0F49A20AA99ADBF5FA32D5A /* ClaudeCLIParserTests.swift */,
|
|
3717BFFDC22E029B1CF81C65 /* ClaudeProviderTests.swift */,
|
|
7E90D01F19914785954D4054 /* CursorProviderTests.swift */,
|
|
93B331C96A907C7CB9172650 /* MenuBarDisplayTests.swift */,
|
|
AB234C351A82D7F8C29D59FC /* Fixtures */,
|
|
);
|
|
path = AIMenubarUsageTests;
|
|
sourceTree = "<group>";
|
|
};
|
|
91A35F24DF9917494BB27990 /* Services */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
7FCE5EFE595B010E1E54D98C /* ClaudeAuthService.swift */,
|
|
B8BC68BB05A29514C7775589 /* ClaudeCLIUsageService.swift */,
|
|
952E850263D70B58A8622D84 /* CursorAuthService.swift */,
|
|
F0E6E438C251CE8879D29C39 /* KeychainService.swift */,
|
|
8658C9C077212181A65D761F /* LaunchAtLoginService.swift */,
|
|
2D5BC8D498AD23776B7EF6D7 /* MenuBarController.swift */,
|
|
E57FF9519DD9DADBAA366503 /* UsageCache.swift */,
|
|
1E6D85517D87583670D54A8A /* UsageRefreshService.swift */,
|
|
);
|
|
path = Services;
|
|
sourceTree = "<group>";
|
|
};
|
|
A1A0EF17AB5D144FA3159EC3 /* Models */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
5CAAFDF70292C8F5EBF0B950 /* AppSettings.swift */,
|
|
65D1EC45CD4695E90D8F58C5 /* ProviderID.swift */,
|
|
B1A929A7D2E06CA26E801EE5 /* ProviderUsageSnapshot.swift */,
|
|
15C24ACF2657E390A6F1EE20 /* UsageMetric.swift */,
|
|
);
|
|
path = Models;
|
|
sourceTree = "<group>";
|
|
};
|
|
A91DF5929DCEC7901CF8EBAC /* AIMenubarUsage */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
17BC6C419B57B4E3AB287296 /* AIMenubarUsage.entitlements */,
|
|
C7C6925E3576963CFDCD8FDB /* AIMenubarUsageApp.swift */,
|
|
A1A0EF17AB5D144FA3159EC3 /* Models */,
|
|
E9887E1F5E66E9471D6346EB /* Providers */,
|
|
C9F3FBB15851AB6341C6D569 /* Resources */,
|
|
91A35F24DF9917494BB27990 /* Services */,
|
|
DCB8603EF37DBBF207522891 /* Views */,
|
|
);
|
|
path = AIMenubarUsage;
|
|
sourceTree = "<group>";
|
|
};
|
|
AB234C351A82D7F8C29D59FC /* Fixtures */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
C2DDCF0D74548E0E3EE8BBC2 /* claude-oauth-usage.json */,
|
|
A5CAC3724673DBDC415CB9C1 /* cursor-usage-summary.json */,
|
|
);
|
|
path = Fixtures;
|
|
sourceTree = "<group>";
|
|
};
|
|
C9F3FBB15851AB6341C6D569 /* Resources */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
62783B05EB9FEC95006D048D /* Assets.xcassets */,
|
|
DE93F3CBB065D23A36D4BE3D /* Info.plist */,
|
|
);
|
|
path = Resources;
|
|
sourceTree = "<group>";
|
|
};
|
|
DCB8603EF37DBBF207522891 /* Views */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
2709A3685926703B69983D6E /* MenuBarLabelView.swift */,
|
|
12BF3837FE5F27BCB9F05825 /* PopoverView.swift */,
|
|
1E8B7EBB88662A7526DC0DAC /* ProviderCardView.swift */,
|
|
3CA37F8450D730231198E183 /* ProviderIcon.swift */,
|
|
B0F6E6ACBDD186D4701E4B63 /* SettingsView.swift */,
|
|
);
|
|
path = Views;
|
|
sourceTree = "<group>";
|
|
};
|
|
E9887E1F5E66E9471D6346EB /* Providers */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
27BB9DEC72FBE9B5E3D71AE7 /* ClaudeProvider.swift */,
|
|
5AA4B4C369488D4FA6312484 /* CursorProvider.swift */,
|
|
61452F7607C80021EAE24E6C /* UsageProvider.swift */,
|
|
);
|
|
path = Providers;
|
|
sourceTree = "<group>";
|
|
};
|
|
EDE93DA9D53084C3A46F175D /* Products */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
3B500F187AFF84E5C8BC212C /* AIMenubarUsage.app */,
|
|
4416B8C95B50BCEDF54FA130 /* AIMenubarUsageTests.xctest */,
|
|
);
|
|
name = Products;
|
|
sourceTree = "<group>";
|
|
};
|
|
FC7BA8D9B6A9344B89D0E1C4 = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
A91DF5929DCEC7901CF8EBAC /* AIMenubarUsage */,
|
|
78437CF65E89E1611E94DB24 /* AIMenubarUsageTests */,
|
|
EDE93DA9D53084C3A46F175D /* Products */,
|
|
);
|
|
sourceTree = "<group>";
|
|
};
|
|
/* End PBXGroup section */
|
|
|
|
/* Begin PBXNativeTarget section */
|
|
5B7C4FF9E298606E0E3DDE13 /* AIMenubarUsage */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = 8FADCE10B5FA15613E2DCAC8 /* Build configuration list for PBXNativeTarget "AIMenubarUsage" */;
|
|
buildPhases = (
|
|
05D3CE5EB67D2234B57F94F9 /* Sources */,
|
|
6FB7A96D83E643B30F0D85B4 /* Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
);
|
|
name = AIMenubarUsage;
|
|
packageProductDependencies = (
|
|
);
|
|
productName = AIMenubarUsage;
|
|
productReference = 3B500F187AFF84E5C8BC212C /* AIMenubarUsage.app */;
|
|
productType = "com.apple.product-type.application";
|
|
};
|
|
8BB09FB7974A6B2BC908DD8A /* AIMenubarUsageTests */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = FEC1289ABBD1483502BB095C /* Build configuration list for PBXNativeTarget "AIMenubarUsageTests" */;
|
|
buildPhases = (
|
|
89F1A81D2DA446CD0D6F9193 /* Sources */,
|
|
3F36465C632FB1572ABA4AFD /* Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
3D9333642E34F3C856669BA2 /* PBXTargetDependency */,
|
|
);
|
|
name = AIMenubarUsageTests;
|
|
packageProductDependencies = (
|
|
);
|
|
productName = AIMenubarUsageTests;
|
|
productReference = 4416B8C95B50BCEDF54FA130 /* AIMenubarUsageTests.xctest */;
|
|
productType = "com.apple.product-type.bundle.unit-test";
|
|
};
|
|
/* End PBXNativeTarget section */
|
|
|
|
/* Begin PBXProject section */
|
|
4442254122661EEA6FBF630E /* Project object */ = {
|
|
isa = PBXProject;
|
|
attributes = {
|
|
BuildIndependentTargetsInParallel = YES;
|
|
LastUpgradeCheck = 1430;
|
|
TargetAttributes = {
|
|
};
|
|
};
|
|
buildConfigurationList = 255E71145EEBE7C8272C980F /* Build configuration list for PBXProject "AIMenubarUsage" */;
|
|
developmentRegion = en;
|
|
hasScannedForEncodings = 0;
|
|
knownRegions = (
|
|
Base,
|
|
en,
|
|
);
|
|
mainGroup = FC7BA8D9B6A9344B89D0E1C4;
|
|
minimizedProjectReferenceProxies = 1;
|
|
preferredProjectObjectVersion = 77;
|
|
productRefGroup = EDE93DA9D53084C3A46F175D /* Products */;
|
|
projectDirPath = "";
|
|
projectRoot = "";
|
|
targets = (
|
|
5B7C4FF9E298606E0E3DDE13 /* AIMenubarUsage */,
|
|
8BB09FB7974A6B2BC908DD8A /* AIMenubarUsageTests */,
|
|
);
|
|
};
|
|
/* End PBXProject section */
|
|
|
|
/* Begin PBXResourcesBuildPhase section */
|
|
3F36465C632FB1572ABA4AFD /* Resources */ = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
9ADC813DA1DC6C9F6AF03D96 /* claude-oauth-usage.json in Resources */,
|
|
350A49467C190655A44A1B72 /* cursor-usage-summary.json in Resources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
6FB7A96D83E643B30F0D85B4 /* Resources */ = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
E4C0E55E8FE83106E2ED480B /* Assets.xcassets in Resources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXResourcesBuildPhase section */
|
|
|
|
/* Begin PBXSourcesBuildPhase section */
|
|
05D3CE5EB67D2234B57F94F9 /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
EE77658E03D7D2B29ECEE8E2 /* AIMenubarUsageApp.swift in Sources */,
|
|
DBB881F7D74D8AF0A56987F3 /* AppSettings.swift in Sources */,
|
|
84E50E6BE603EFED0E82E96A /* ClaudeAuthService.swift in Sources */,
|
|
C9CCA6B2E3EF24D42A7F96C2 /* ClaudeCLIUsageService.swift in Sources */,
|
|
80377D42C74851D9C7CF9DDC /* ClaudeProvider.swift in Sources */,
|
|
020588A97FA4F49E70833A88 /* CursorAuthService.swift in Sources */,
|
|
9226F7526F0F46F2265AE091 /* CursorProvider.swift in Sources */,
|
|
E80856A5BCA4400F795AB66F /* KeychainService.swift in Sources */,
|
|
E95AA83AAF822E74E8CD6027 /* LaunchAtLoginService.swift in Sources */,
|
|
14EEEE6F7825B2B65AE18FC4 /* MenuBarController.swift in Sources */,
|
|
859749885A4E61439D7E7399 /* MenuBarLabelView.swift in Sources */,
|
|
692ED3CCC92E543EEF808F06 /* PopoverView.swift in Sources */,
|
|
DACE19613E28C972D18338B9 /* ProviderCardView.swift in Sources */,
|
|
E86C79AD8EB57748E7383CC1 /* ProviderID.swift in Sources */,
|
|
B00F7D3788898A4FBDAA205D /* ProviderIcon.swift in Sources */,
|
|
474CD6506A1028547A88F63E /* ProviderUsageSnapshot.swift in Sources */,
|
|
C940AAD549BFBF0DBCBB89C6 /* SettingsView.swift in Sources */,
|
|
BDF64716296F11F448D0E604 /* UsageCache.swift in Sources */,
|
|
B53990EEE51F907CCD4B5822 /* UsageMetric.swift in Sources */,
|
|
B9BA0C825207364FD8309DC7 /* UsageProvider.swift in Sources */,
|
|
14C74ABCE2855AE766FC199F /* UsageRefreshService.swift in Sources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
89F1A81D2DA446CD0D6F9193 /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
0FDD856746B2EDD9346A380D /* ClaudeAuthTests.swift in Sources */,
|
|
9C03E35D6CC3AE953BEB3EF7 /* ClaudeCLIParserTests.swift in Sources */,
|
|
C5715AEDEB19F7B36298B0FC /* ClaudeProviderTests.swift in Sources */,
|
|
6AA6002791A3C8146BE308C8 /* CursorProviderTests.swift in Sources */,
|
|
87D482510F45091FA971A374 /* MenuBarDisplayTests.swift in Sources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXSourcesBuildPhase section */
|
|
|
|
/* Begin PBXTargetDependency section */
|
|
3D9333642E34F3C856669BA2 /* PBXTargetDependency */ = {
|
|
isa = PBXTargetDependency;
|
|
target = 5B7C4FF9E298606E0E3DDE13 /* AIMenubarUsage */;
|
|
targetProxy = C08A3AD24405E2B6ED28848F /* PBXContainerItemProxy */;
|
|
};
|
|
/* End PBXTargetDependency section */
|
|
|
|
/* Begin XCBuildConfiguration section */
|
|
4B02290733EF5FC0EE0E23FE /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
|
COMBINE_HIDPI_IMAGES = YES;
|
|
GENERATE_INFOPLIST_FILE = YES;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/../Frameworks",
|
|
"@loader_path/../Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.aiusage.app.tests;
|
|
SDKROOT = macosx;
|
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AIMenubarUsage.app/Contents/MacOS/AIMenubarUsage";
|
|
};
|
|
name = Debug;
|
|
};
|
|
4C4FEB1AD74921143F2BF021 /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
CODE_SIGN_ENTITLEMENTS = AIMenubarUsage/AIMenubarUsage.entitlements;
|
|
COMBINE_HIDPI_IMAGES = YES;
|
|
ENABLE_HARDENED_RUNTIME = YES;
|
|
INFOPLIST_FILE = AIMenubarUsage/Resources/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.aiusage.app;
|
|
PRODUCT_NAME = "AI Menubar Usage";
|
|
SDKROOT = macosx;
|
|
};
|
|
name = Release;
|
|
};
|
|
9A50E3E4CDB6E10A5D3F42CB /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
|
COMBINE_HIDPI_IMAGES = YES;
|
|
GENERATE_INFOPLIST_FILE = YES;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/../Frameworks",
|
|
"@loader_path/../Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.aiusage.app.tests;
|
|
SDKROOT = macosx;
|
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AIMenubarUsage.app/Contents/MacOS/AIMenubarUsage";
|
|
};
|
|
name = Release;
|
|
};
|
|
A0951BE6F1829B41173E1633 /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
|
CLANG_CXX_LIBRARY = "libc++";
|
|
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;
|
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
ENABLE_NS_ASSERTIONS = NO;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
|
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;
|
|
MACOSX_DEPLOYMENT_TARGET = 14.0;
|
|
MTL_ENABLE_DEBUG_INFO = NO;
|
|
MTL_FAST_MATH = YES;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SDKROOT = macosx;
|
|
SWIFT_COMPILATION_MODE = wholemodule;
|
|
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
|
SWIFT_VERSION = 5.9;
|
|
};
|
|
name = Release;
|
|
};
|
|
C4573F43EDBCE6DBB9DD5D21 /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
CODE_SIGN_ENTITLEMENTS = AIMenubarUsage/AIMenubarUsage.entitlements;
|
|
COMBINE_HIDPI_IMAGES = YES;
|
|
ENABLE_HARDENED_RUNTIME = YES;
|
|
INFOPLIST_FILE = AIMenubarUsage/Resources/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.aiusage.app;
|
|
PRODUCT_NAME = "AI Menubar Usage";
|
|
SDKROOT = macosx;
|
|
};
|
|
name = Debug;
|
|
};
|
|
F0F4ABE35D3D5935B964C881 /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
|
CLANG_CXX_LIBRARY = "libc++";
|
|
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;
|
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
ENABLE_TESTABILITY = YES;
|
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
|
GCC_DYNAMIC_NO_PIC = NO;
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
GCC_OPTIMIZATION_LEVEL = 0;
|
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
"$(inherited)",
|
|
"DEBUG=1",
|
|
);
|
|
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;
|
|
MACOSX_DEPLOYMENT_TARGET = 14.0;
|
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
|
MTL_FAST_MATH = YES;
|
|
ONLY_ACTIVE_ARCH = YES;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SDKROOT = macosx;
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
SWIFT_VERSION = 5.9;
|
|
};
|
|
name = Debug;
|
|
};
|
|
/* End XCBuildConfiguration section */
|
|
|
|
/* Begin XCConfigurationList section */
|
|
255E71145EEBE7C8272C980F /* Build configuration list for PBXProject "AIMenubarUsage" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
F0F4ABE35D3D5935B964C881 /* Debug */,
|
|
A0951BE6F1829B41173E1633 /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Debug;
|
|
};
|
|
8FADCE10B5FA15613E2DCAC8 /* Build configuration list for PBXNativeTarget "AIMenubarUsage" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
C4573F43EDBCE6DBB9DD5D21 /* Debug */,
|
|
4C4FEB1AD74921143F2BF021 /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Debug;
|
|
};
|
|
FEC1289ABBD1483502BB095C /* Build configuration list for PBXNativeTarget "AIMenubarUsageTests" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
4B02290733EF5FC0EE0E23FE /* Debug */,
|
|
9A50E3E4CDB6E10A5D3F42CB /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Debug;
|
|
};
|
|
/* End XCConfigurationList section */
|
|
};
|
|
rootObject = 4442254122661EEA6FBF630E /* Project object */;
|
|
}
|