Commit Graph

6 Commits

Author SHA1 Message Date
tigerenwork 4d67d8bffd feat: 支持构建时注入飞书配置并优化设置页面体验 2026-07-05 22:57:36 +08:00
tigerenwork 71e56f8d2b chore: 版本升级至 1.2 并优化构建脚本版本读取 2026-07-05 20:42:19 +08:00
tigerenwork 20824443cc feat: generate app icon (bug beetle design)
Python PIL script generates a bug beetle icon with:
- Dark charcoal body with lighter shell highlight
- Green accent stripe across the wing casing
- Head with white eyes, two curved antennae with dot tips
- Six legs (3 per side)
- All 10 required macOS sizes (16..512 at @1x/@2x)

Run: python3 scripts/generate_app_icon.py

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-29 23:26:23 +08:00
tigerenwork f7682ae7cf chore: bump version to 1.1 (build 2) 2026-06-29 21:55:01 +08:00
tigerenwork 9f8fb52726 feat: switch OAuth redirect to localhost loopback (RFC 8252)
Feishu rejected the 'bugger://' custom URL scheme redirect with 参数不合法.
Switched to the standard desktop OAuth flow: a one-shot local HTTP server
on 127.0.0.1:18923 that receives the authorization code from the browser.

Changes:
- Added LocalOAuthServer (Network.framework, one-shot HTTP listener)
- FeishuAuthService now uses dynamic http://127.0.0.1:PORT/callback redirect
- Removed CFBundleURLTypes from Info.plist (no custom scheme needed)
- Removed NSAppleEventManager handler from AppDelegate
- TokenManager.handleCallback changed from URL to code string
- OAuthSetupView starts server before opening browser
- Added offline_access scope for refresh token support
- generate_xcode_project.py: removed dev cert requirements,
  auto-quotes paths with special chars

Builds successfully with xcodebuild.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-28 23:48:49 +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