Commit Graph

2 Commits

Author SHA1 Message Date
tigerenwork bda106dcad fix: pbxproj now parses with Xcode 26
Root cause: filenames containing '+' (Color+Extensions.swift,
DateFormatter+Extensions.swift, URL+Feishu.swift) had their path values
unquoted in PBXFileReference entries. In NeXTSTEP plist format, '+'
is an operator character — the parser interpreted 'path = Utils/Color'
followed by '+Extensions.swift' as an addition expression instead of
a file path, causing a parse error.

Fixes:
- Added quote_path() to escape paths with special characters
- Regenerated pbxproj with all 25 source files, subdirectory groups
- Fixed workspace contents.xcworkspacedata (was empty)
- Cleaned up generator script (removed dead code, added scheme gen)
- Proper SWIFT_OPTIMIZATION_LEVEL quoting

Verified: xcodebuild -list parses the project successfully.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-28 21:33:02 +08:00
tigerenwork d9d8ce3e46 feat: full macOS menu bar app implementation
SwiftUI macOS menu bar app for tracking Feishu Bitable bugs:
- Menu bar icon with active bug count badge
- Popover with bug list sorted by priority, click to open in Feishu
- Floating always-on-top widget (NSPanel, optional)
- OAuth 2.0 flow with Feishu Open API (user_access_token + refresh)
- PollerService with configurable interval (default 5 min)
- Diff engine detecting new bugs, status/priority/assignee changes
- Native macOS notifications (UserNotifications framework)
- Keychain-backed token storage
- Settings window with field mapping, polling interval, widget toggle
- Support for custom Bitable column name mappings
- Zero third-party dependencies

17 source files across Models/Services/Views/ViewModels/Utils layers.
Xcode project generated via scripts/generate_xcode_project.py.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-28 20:56:44 +08:00