fix: rewrite pbxproj to fix duplicate groups and broken hierarchy

- Removed duplicate PBXGroup definitions (Models, Services, Views, etc.)
- Removed orphan groups (.claude, docs, scripts, etc.)
- Added proper Products group for productRefGroup reference
- Fixed main group to reference Sources, Resources, Products
- Clean single-definition group hierarchy

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
tigerenwork 2026-06-28 20:59:51 +08:00
parent d9d8ce3e46
commit c57ab859eb
1 changed files with 88 additions and 226 deletions

View File

@ -77,281 +77,143 @@
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
15D1373CDE06DCCF0DEC22FE = { 8C4FDD7B635240BD562EBB49 = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
EE6F40F7464432A6C2A761DA /* Sources */,
7C4EE8955498EEF65ED6C84A /* Resources */,
B23D89B2D2DF3745A003AEB1 /* Products */,
); );
path = .claude;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
B75E6ED1F517C8DE98A7DAEA = { EE6F40F7464432A6C2A761DA /* Sources */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
B2ADE595D33ADF5BA01B253B /* AppDelegate.swift */,
); 7705247A59F50F6B6E6D286F /* BuggerApp.swift */,
path = Bugger.xcodeproj; B805360275E47AAD7192E4AE /* Models */,
sourceTree = "<group>"; EF310F3F9A8796C845F345F5 /* Services */,
}; B38F908829C30D6B6F967EEA /* Utils */,
7C0FCEE666858DE48E2D02AD = { 56714C7161F5C8195EA19816 /* ViewModels */,
isa = PBXGroup; F4ED3EC6534567974F720F99 /* Views */,
children = (
);
path = AppIcon.appiconset;
sourceTree = "<group>";
};
FB79BDD8FFC3CC36C25BA315 = {
isa = PBXGroup;
children = (
7C0FCEE666858DE48E2D02AD,
);
path = Assets.xcassets;
sourceTree = "<group>";
};
7C4EE8955498EEF65ED6C84A = {
isa = PBXGroup;
children = (
6A93EEBDA5A740C84995D959,
2EB7B1BD755DF7F2FB5F8392,
86B3BC083DF59791BE56CFAE,
);
path = Resources;
sourceTree = "<group>";
};
B805360275E47AAD7192E4AE = {
isa = PBXGroup;
children = (
AE8899127BDCD00F1D39E8FD,
C4DE27079694EBA15A0DFAAB,
FE785F676266AFB5EA636597,
ADA8A640EF741D9404316C39,
649CAAB9009813D6C1FD07E3,
);
path = Models;
sourceTree = "<group>";
};
0B0ED8A1BE17CC4C0B3A787B = {
isa = PBXGroup;
children = (
264DA84D71E29D64DEC1B038,
38A9F363FE066CAE6226A050,
973BF857A0044A0262A1F56F,
66321820D32BCC5D05265115,
);
path = Feishu;
sourceTree = "<group>";
};
EF310F3F9A8796C845F345F5 = {
isa = PBXGroup;
children = (
E3148982E653318C7E3CD13F,
0B0ED8A1BE17CC4C0B3A787B,
C98E94F5A859B0EEC7326C60,
BD2692AA96D65949109FEC0E,
9677914DC46FD106A90CA724,
);
path = Services;
sourceTree = "<group>";
};
B38F908829C30D6B6F967EEA = {
isa = PBXGroup;
children = (
968D99A1DA7131447D075F27,
0BE6905A92E43B24E24CDE29,
527F9B3FF513B72F175A8429,
E390AA6A998B6C83BD779018,
);
path = Utils;
sourceTree = "<group>";
};
56714C7161F5C8195EA19816 = {
isa = PBXGroup;
children = (
6C251D0198118D6B5D4B7C69,
);
path = ViewModels;
sourceTree = "<group>";
};
82B5ED67A4830EDA75C6CDE1 = {
isa = PBXGroup;
children = (
5DC24ADCEDA5C16DFF9FA6EA,
);
path = FloatingWidget;
sourceTree = "<group>";
};
24C578F83DCF9CEAFCAF2E73 = {
isa = PBXGroup;
children = (
17D10F852D16E2F4FC269FD2,
C3F3DB4764E379E663475EBD,
);
path = MenuBar;
sourceTree = "<group>";
};
0308B80FA0CF6FBE7D8C7EB3 = {
isa = PBXGroup;
children = (
E29172EAB6F6B4526BDA23C2,
);
path = OAuth;
sourceTree = "<group>";
};
3053DFBFF1BD7F53471B36BB = {
isa = PBXGroup;
children = (
9F9AD7665552E1BC2E76337C,
);
path = Settings;
sourceTree = "<group>";
};
F4ED3EC6534567974F720F99 = {
isa = PBXGroup;
children = (
82B5ED67A4830EDA75C6CDE1,
24C578F83DCF9CEAFCAF2E73,
0308B80FA0CF6FBE7D8C7EB3,
3053DFBFF1BD7F53471B36BB,
);
path = Views;
sourceTree = "<group>";
};
EE6F40F7464432A6C2A761DA = {
isa = PBXGroup;
children = (
B2ADE595D33ADF5BA01B253B,
7705247A59F50F6B6E6D286F,
B805360275E47AAD7192E4AE,
EF310F3F9A8796C845F345F5,
B38F908829C30D6B6F967EEA,
56714C7161F5C8195EA19816,
F4ED3EC6534567974F720F99,
); );
path = Sources; path = Sources;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
A250A7E9920D61D34E4FC076 = { B805360275E47AAD7192E4AE /* Models */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
AE8899127BDCD00F1D39E8FD /* AppConfig.swift */,
); C4DE27079694EBA15A0DFAAB /* Bug.swift */,
path = docs; FE785F676266AFB5EA636597 /* BugChange.swift */,
sourceTree = "<group>"; ADA8A640EF741D9404316C39 /* BugPriority.swift */,
}; 649CAAB9009813D6C1FD07E3 /* BugStatus.swift */,
B3C3812FB431C8E80348A58A = {
isa = PBXGroup;
children = (
);
path = scripts;
sourceTree = "<group>";
};
8C4FDD7B635240BD562EBB49 = {
isa = PBXGroup;
children = (
287BE755981C092238309A9A,
8AD6A16612A2DB7B2F899787,
B23D89B2D2DF3745A003AEB1,
);
sourceTree = "<group>";
};
B805360275E47AAD7192E4AE = {
isa = PBXGroup;
children = (
AE8899127BDCD00F1D39E8FD,
C4DE27079694EBA15A0DFAAB,
FE785F676266AFB5EA636597,
ADA8A640EF741D9404316C39,
649CAAB9009813D6C1FD07E3,
); );
path = Models; path = Models;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
0B0ED8A1BE17CC4C0B3A787B = { EF310F3F9A8796C845F345F5 /* Services */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
264DA84D71E29D64DEC1B038, E3148982E653318C7E3CD13F /* AppStateService.swift */,
38A9F363FE066CAE6226A050, 0B0ED8A1BE17CC4C0B3A787B /* Feishu */,
973BF857A0044A0262A1F56F, C98E94F5A859B0EEC7326C60 /* NotificationService.swift */,
66321820D32BCC5D05265115, BD2692AA96D65949109FEC0E /* PollerService.swift */,
); 9677914DC46FD106A90CA724 /* TokenManager.swift */,
path = Feishu;
sourceTree = "<group>";
};
EF310F3F9A8796C845F345F5 = {
isa = PBXGroup;
children = (
E3148982E653318C7E3CD13F,
0B0ED8A1BE17CC4C0B3A787B,
C98E94F5A859B0EEC7326C60,
BD2692AA96D65949109FEC0E,
9677914DC46FD106A90CA724,
); );
path = Services; path = Services;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
B38F908829C30D6B6F967EEA = { 0B0ED8A1BE17CC4C0B3A787B /* Feishu */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
968D99A1DA7131447D075F27, 264DA84D71E29D64DEC1B038 /* FeishuAuthService.swift */,
0BE6905A92E43B24E24CDE29, 38A9F363FE066CAE6226A050 /* FeishuError.swift */,
527F9B3FF513B72F175A8429, 973BF857A0044A0262A1F56F /* FeishuModels.swift */,
E390AA6A998B6C83BD779018, 66321820D32BCC5D05265115 /* FeishuService.swift */,
);
path = Feishu;
sourceTree = "<group>";
};
B38F908829C30D6B6F967EEA /* Utils */ = {
isa = PBXGroup;
children = (
968D99A1DA7131447D075F27 /* Color+Extensions.swift */,
0BE6905A92E43B24E24CDE29 /* DateFormatter+Extensions.swift */,
527F9B3FF513B72F175A8429 /* KeychainHelper.swift */,
E390AA6A998B6C83BD779018 /* URL+Feishu.swift */,
); );
path = Utils; path = Utils;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
56714C7161F5C8195EA19816 = { 56714C7161F5C8195EA19816 /* ViewModels */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
6C251D0198118D6B5D4B7C69, 6C251D0198118D6B5D4B7C69 /* BugStore.swift */,
); );
path = ViewModels; path = ViewModels;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
82B5ED67A4830EDA75C6CDE1 = { F4ED3EC6534567974F720F99 /* Views */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5DC24ADCEDA5C16DFF9FA6EA, 82B5ED67A4830EDA75C6CDE1 /* FloatingWidget */,
24C578F83DCF9CEAFCAF2E73 /* MenuBar */,
0308B80FA0CF6FBE7D8C7EB3 /* OAuth */,
3053DFBFF1BD7F53471B36BB /* Settings */,
);
path = Views;
sourceTree = "<group>";
};
82B5ED67A4830EDA75C6CDE1 /* FloatingWidget */ = {
isa = PBXGroup;
children = (
5DC24ADCEDA5C16DFF9FA6EA /* FloatingWidgetWindow.swift */,
); );
path = FloatingWidget; path = FloatingWidget;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
24C578F83DCF9CEAFCAF2E73 = { 24C578F83DCF9CEAFCAF2E73 /* MenuBar */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
17D10F852D16E2F4FC269FD2, 17D10F852D16E2F4FC269FD2 /* BugListPopover.swift */,
C3F3DB4764E379E663475EBD, C3F3DB4764E379E663475EBD /* BugRow.swift */,
); );
path = MenuBar; path = MenuBar;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
0308B80FA0CF6FBE7D8C7EB3 = { 0308B80FA0CF6FBE7D8C7EB3 /* OAuth */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E29172EAB6F6B4526BDA23C2, E29172EAB6F6B4526BDA23C2 /* OAuthSetupView.swift */,
); );
path = OAuth; path = OAuth;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
3053DFBFF1BD7F53471B36BB = { 3053DFBFF1BD7F53471B36BB /* Settings */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
9F9AD7665552E1BC2E76337C, 9F9AD7665552E1BC2E76337C /* SettingsView.swift */,
); );
path = Settings; path = Settings;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
F4ED3EC6534567974F720F99 = { 7C4EE8955498EEF65ED6C84A /* Resources */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
82B5ED67A4830EDA75C6CDE1, 6A93EEBDA5A740C84995D959 /* Assets.xcassets */,
24C578F83DCF9CEAFCAF2E73, 2EB7B1BD755DF7F2FB5F8392 /* Info.plist */,
0308B80FA0CF6FBE7D8C7EB3, 86B3BC083DF59791BE56CFAE /* Bugger.entitlements */,
3053DFBFF1BD7F53471B36BB,
); );
path = Views; path = Resources;
sourceTree = "<group>";
};
B23D89B2D2DF3745A003AEB1 /* Products */ = {
isa = PBXGroup;
children = (
EF0182DF85A7CD0319333F24 /* Bugger.app */,
);
name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
/* End PBXGroup section */ /* End PBXGroup section */
@ -490,18 +352,18 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = ; DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
FEISHU_APP_ID = ; FEISHU_APP_ID = "$(FEISHU_APP_ID)";
FEISHU_APP_SECRET = ; FEISHU_APP_SECRET = "$(FEISHU_APP_SECRET)";
FEISHU_BASE_DOMAIN = xorbitlab.feishu.cn; FEISHU_BASE_DOMAIN = "xorbitlab.feishu.cn";
GENERATE_INFOPLIST_FILE = NO; GENERATE_INFOPLIST_FILE = NO;
INFOPLIST_FILE = Resources/Info.plist; INFOPLIST_FILE = Resources/Info.plist;
LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/../Frameworks; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 14.0; MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.xorbitlab.bugger; PRODUCT_BUNDLE_IDENTIFIER = com.xorbitlab.bugger;
PRODUCT_NAME = $(TARGET_NAME); PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
}; };
@ -515,18 +377,18 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = ; DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
FEISHU_APP_ID = ; FEISHU_APP_ID = "$(FEISHU_APP_ID)";
FEISHU_APP_SECRET = ; FEISHU_APP_SECRET = "$(FEISHU_APP_SECRET)";
FEISHU_BASE_DOMAIN = xorbitlab.feishu.cn; FEISHU_BASE_DOMAIN = "xorbitlab.feishu.cn";
GENERATE_INFOPLIST_FILE = NO; GENERATE_INFOPLIST_FILE = NO;
INFOPLIST_FILE = Resources/Info.plist; INFOPLIST_FILE = Resources/Info.plist;
LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/../Frameworks; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 14.0; MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 1.0; MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.xorbitlab.bugger; PRODUCT_BUNDLE_IDENTIFIER = com.xorbitlab.bugger;
PRODUCT_NAME = $(TARGET_NAME); PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
}; };
@ -556,4 +418,4 @@
/* End XCConfigurationList section */ /* End XCConfigurationList section */
}; };
rootObject = 46F86FAA6BBF9AC94A7E4595 /* Project object */; rootObject = 46F86FAA6BBF9AC94A7E4595 /* Project object */;
} }