From 53b4f60da1a43b1d717a133fa7d336551c59792e Mon Sep 17 00:00:00 2001 From: maksarsanjeev Date: Tue, 6 Oct 2026 19:34:32 +0300 Subject: [PATCH] Import Coucou 0.1.9 (Louis-CFM/coucou@83708fe), Mac app only Co-Authored-By: Claude Opus 5.5 --- .gitattributes | 2 + .gitignore | 21 + CHANGELOG.md | 97 + CLAUDE.md | 32 + CONTRIBUTING.md | 39 + LICENSE | 21 + LICENSE-ASSETS.md | 28 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/icon_128x128.png | Bin 0 -> 16464 bytes .../AppIcon.appiconset/icon_128x128@2x.png | Bin 0 -> 39373 bytes .../AppIcon.appiconset/icon_16x16.png | Bin 0 -> 6405 bytes .../AppIcon.appiconset/icon_16x16@2x.png | Bin 0 -> 7151 bytes .../AppIcon.appiconset/icon_256x256.png | Bin 0 -> 39373 bytes .../AppIcon.appiconset/icon_256x256@2x.png | Bin 0 -> 115833 bytes .../AppIcon.appiconset/icon_32x32.png | Bin 0 -> 7151 bytes .../AppIcon.appiconset/icon_32x32@2x.png | Bin 0 -> 9361 bytes .../AppIcon.appiconset/icon_512x512.png | Bin 0 -> 115833 bytes .../AppIcon.appiconset/icon_512x512@2x.png | Bin 0 -> 348398 bytes NotchBuddy/Assets.xcassets/Contents.json | 6 + .../MenuBarIcon.imageset/Contents.json | 26 + .../MenuBarIcon.imageset/menubar.png | Bin 0 -> 6164 bytes .../MenuBarIcon.imageset/menubar@2x.png | Bin 0 -> 6513 bytes .../MenuBarIcon.imageset/menubar@3x.png | Bin 0 -> 6934 bytes NotchBuddy/Resources/Coucou.entitlements | 8 + .../Resources/CoucouAppStore.entitlements | 14 + .../CoucouAppStoreCloud.entitlements | 24 + NotchBuddy/Resources/CoucouCloud.entitlements | 18 + NotchBuddy/Resources/CoucouPhone.entitlements | 20 + .../CoucouPhoneProduction.entitlements | 22 + .../Resources/CoucouReleaseCloud.entitlements | 24 + .../Resources/CoucouWidgets.entitlements | 10 + NotchBuddy/Resources/Info.plist | 39 + NotchBuddy/Resources/InfoAppStore.plist | 39 + .../Resources/InfoNotificationContent.plist | 40 + NotchBuddy/Resources/InfoPhone.plist | 67 + NotchBuddy/Resources/InfoWidgets.plist | 29 + NotchBuddy/Resources/sounds/annoyed.wav | Bin 0 -> 113772 bytes NotchBuddy/Resources/sounds/approval.wav | Bin 0 -> 168416 bytes NotchBuddy/Resources/sounds/approve.wav | Bin 0 -> 114400 bytes NotchBuddy/Resources/sounds/attach.wav | Bin 0 -> 173492 bytes NotchBuddy/Resources/sounds/blip.wav | Bin 0 -> 19584 bytes NotchBuddy/Resources/sounds/close.wav | Bin 0 -> 82388 bytes NotchBuddy/Resources/sounds/dizzy.wav | Bin 0 -> 188676 bytes NotchBuddy/Resources/sounds/error.wav | Bin 0 -> 161012 bytes NotchBuddy/Resources/sounds/finish.wav | Bin 0 -> 222588 bytes NotchBuddy/Resources/sounds/greet.wav | Bin 0 -> 144300 bytes NotchBuddy/Resources/sounds/greeting.wav | Bin 0 -> 801342 bytes NotchBuddy/Resources/sounds/gulp.wav | Bin 0 -> 143868 bytes NotchBuddy/Resources/sounds/hover.wav | Bin 0 -> 16124 bytes NotchBuddy/Resources/sounds/love.wav | Bin 0 -> 151908 bytes NotchBuddy/Resources/sounds/open.wav | Bin 0 -> 96660 bytes NotchBuddy/Resources/sounds/peek.wav | Bin 0 -> 85716 bytes NotchBuddy/Resources/sounds/pop.wav | Bin 0 -> 73076 bytes NotchBuddy/Resources/sounds/proud.wav | Bin 0 -> 166016 bytes NotchBuddy/Resources/sounds/question.wav | Bin 0 -> 135128 bytes NotchBuddy/Resources/sounds/rate.wav | Bin 0 -> 129544 bytes NotchBuddy/Resources/sounds/search.wav | Bin 0 -> 87824 bytes NotchBuddy/Resources/sounds/send.wav | Bin 0 -> 91968 bytes NotchBuddy/Resources/sounds/slap.wav | Bin 0 -> 115612 bytes NotchBuddy/Resources/sounds/sleep.wav | Bin 0 -> 87008 bytes NotchBuddy/Resources/sounds/think.wav | Bin 0 -> 84612 bytes NotchBuddy/Resources/sounds/tick.wav | Bin 0 -> 13776 bytes NotchBuddy/Resources/sounds/wink.wav | Bin 0 -> 40868 bytes NotchBuddy/Resources/sounds/work.wav | Bin 0 -> 72208 bytes NotchBuddy/Resources/sounds/yawn.wav | Bin 0 -> 140264 bytes NotchBuddy/Sources/App/AppDelegate.swift | 123 + NotchBuddy/Sources/App/AppLog.swift | 49 + NotchBuddy/Sources/App/AppState.swift | 775 +++ NotchBuddy/Sources/App/AskQuestion.swift | 60 + NotchBuddy/Sources/App/BotCanvasView.swift | 231 + NotchBuddy/Sources/App/CalcomPoller.swift | 104 + NotchBuddy/Sources/App/ChatMarkdown.swift | 118 + NotchBuddy/Sources/App/ChatMarkdownView.swift | 117 + .../Sources/App/ClaudePlanCardView.swift | 128 + NotchBuddy/Sources/App/ClaudePlanGauge.swift | 80 + NotchBuddy/Sources/App/ClaudeService.swift | 639 +++ NotchBuddy/Sources/App/DesktopMochi.swift | 744 +++ .../Sources/App/DesktopMochiLogic.swift | 73 + NotchBuddy/Sources/App/FileDropView.swift | 124 + NotchBuddy/Sources/App/GitHubActivity.swift | 72 + NotchBuddy/Sources/App/GitHubPulse.swift | 244 + NotchBuddy/Sources/App/GithubPoller.swift | 346 ++ .../Sources/App/GreetingCanvasView.swift | 689 +++ NotchBuddy/Sources/App/HookServer.swift | 2418 +++++++++ NotchBuddy/Sources/App/HotKeyCenter.swift | 148 + NotchBuddy/Sources/App/IslandRootView.swift | 631 +++ .../Sources/App/IslandStateMachine.swift | 184 + .../Sources/App/IslandViewContent.swift | 4718 +++++++++++++++++ .../Sources/App/IslandWindowController.swift | 1154 ++++ NotchBuddy/Sources/App/LocalChat.swift | 208 + NotchBuddy/Sources/App/MusicController.swift | 279 + NotchBuddy/Sources/App/N8nPoller.swift | 259 + NotchBuddy/Sources/App/NotchBuddyApp.swift | 13 + NotchBuddy/Sources/App/NotionPoller.swift | 99 + .../Sources/App/PhoneLink/ApprovalRelay.swift | 163 + .../Sources/App/PhoneLink/CloudProbe.swift | 277 + .../App/PhoneLink/InstructionRunner.swift | 182 + .../App/PhoneLink/LiveActivityRelay.swift | 413 ++ .../Sources/App/PhoneLink/QuestionRelay.swift | 132 + .../App/PhoneLink/ServiceDetailRunner.swift | 802 +++ .../App/PhoneLink/ServicePublisher.swift | 395 ++ .../App/PhoneLink/SessionPublisher.swift | 257 + .../Sources/App/PhoneLink/TurnRecorder.swift | 217 + NotchBuddy/Sources/App/ResendPoller.swift | 62 + NotchBuddy/Sources/App/SafeWebURL.swift | 12 + NotchBuddy/Sources/App/SettingsView.swift | 1422 +++++ NotchBuddy/Sources/App/ShortcutLogic.swift | 236 + .../Sources/App/ShortcutsSettingsView.swift | 196 + NotchBuddy/Sources/App/SoundEngine.swift | 65 + NotchBuddy/Sources/App/StripePoller.swift | 161 + NotchBuddy/Sources/App/UploadCanvasView.swift | 582 ++ .../Sources/App/UploadSequenceEngine.swift | 437 ++ NotchBuddy/Sources/App/UserIdentity.swift | 33 + NotchBuddy/Sources/App/VercelPoller.swift | 108 + .../Sources/App/WindowContextCapture.swift | 68 + NotchBuddy/Sources/CoucouKit/BotEngine.swift | 1659 ++++++ NotchBuddy/Sources/CoucouKit/ColorHex.swift | 43 + NotchBuddy/Sources/CoucouKit/DiffEngine.swift | 301 ++ .../CoucouKit/IslandScreenGeometry.swift | 42 + .../Sources/CoucouKit/IslandTypes.swift | 230 + .../CoucouKit/MochiActivityState.swift | 69 + .../CoucouKit/MochiOutfitDrawing.swift | 1464 +++++ NotchBuddy/Sources/CoucouKit/MochiStill.swift | 89 + .../Sources/CoucouKit/MochiWardrobe.swift | 89 + .../Sources/CoucouKit/PillCatalog.swift | 108 + .../Sources/CoucouKit/QuestionPayload.swift | 64 + .../Sources/CoucouKit/ServiceDetail.swift | 81 + .../Sources/CoucouKit/ServiceSnapshot.swift | 67 + .../Sources/CoucouKit/TurnSnapshot.swift | 78 + NotchBuddy/project.yml | 395 ++ README.md | 284 + scripts/RenderOutfits.swift | 331 ++ scripts/cloud-test-build.sh | 89 + scripts/release.sh | 173 + scripts/render-outfits.sh | 30 + scripts/test-ask-question.sh | 8 + scripts/test-chat-parsing.sh | 44 + scripts/test-desktop-mochi.sh | 8 + scripts/test-diff-engine.sh | 8 + scripts/test-github-activity.sh | 8 + scripts/test-github-pulse.sh | 8 + scripts/test-plan-gauge.sh | 8 + scripts/test-safe-links.sh | 8 + scripts/test-screen-geometry.sh | 8 + scripts/test-shortcuts.sh | 8 + scripts/test-wardrobe.sh | 8 + tests/AskQuestionTests.swift | 121 + tests/ChatParsingTests.swift | 207 + tests/ClaudePlanGaugeTests.swift | 133 + tests/DesktopMochiTests.swift | 129 + tests/DiffEngineTests.swift | 222 + tests/GitHubActivityTests.swift | 157 + tests/GitHubPulseTests.swift | 355 ++ tests/IslandScreenGeometryTests.swift | 53 + tests/MochiWardrobeTests.swift | 110 + tests/SafeWebURLTests.swift | 27 + tests/ShortcutTests.swift | 235 + tests/fake_local_llm.py | 142 + 158 files changed, 29442 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 CLAUDE.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 LICENSE-ASSETS.md create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_128x128.png create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_16x16.png create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_256x256.png create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_32x32.png create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_512x512.png create mode 100644 NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png create mode 100644 NotchBuddy/Assets.xcassets/Contents.json create mode 100644 NotchBuddy/Assets.xcassets/MenuBarIcon.imageset/Contents.json create mode 100644 NotchBuddy/Assets.xcassets/MenuBarIcon.imageset/menubar.png create mode 100644 NotchBuddy/Assets.xcassets/MenuBarIcon.imageset/menubar@2x.png create mode 100644 NotchBuddy/Assets.xcassets/MenuBarIcon.imageset/menubar@3x.png create mode 100644 NotchBuddy/Resources/Coucou.entitlements create mode 100644 NotchBuddy/Resources/CoucouAppStore.entitlements create mode 100644 NotchBuddy/Resources/CoucouAppStoreCloud.entitlements create mode 100644 NotchBuddy/Resources/CoucouCloud.entitlements create mode 100644 NotchBuddy/Resources/CoucouPhone.entitlements create mode 100644 NotchBuddy/Resources/CoucouPhoneProduction.entitlements create mode 100644 NotchBuddy/Resources/CoucouReleaseCloud.entitlements create mode 100644 NotchBuddy/Resources/CoucouWidgets.entitlements create mode 100644 NotchBuddy/Resources/Info.plist create mode 100644 NotchBuddy/Resources/InfoAppStore.plist create mode 100644 NotchBuddy/Resources/InfoNotificationContent.plist create mode 100644 NotchBuddy/Resources/InfoPhone.plist create mode 100644 NotchBuddy/Resources/InfoWidgets.plist create mode 100644 NotchBuddy/Resources/sounds/annoyed.wav create mode 100644 NotchBuddy/Resources/sounds/approval.wav create mode 100644 NotchBuddy/Resources/sounds/approve.wav create mode 100644 NotchBuddy/Resources/sounds/attach.wav create mode 100644 NotchBuddy/Resources/sounds/blip.wav create mode 100644 NotchBuddy/Resources/sounds/close.wav create mode 100644 NotchBuddy/Resources/sounds/dizzy.wav create mode 100644 NotchBuddy/Resources/sounds/error.wav create mode 100644 NotchBuddy/Resources/sounds/finish.wav create mode 100644 NotchBuddy/Resources/sounds/greet.wav create mode 100644 NotchBuddy/Resources/sounds/greeting.wav create mode 100644 NotchBuddy/Resources/sounds/gulp.wav create mode 100644 NotchBuddy/Resources/sounds/hover.wav create mode 100644 NotchBuddy/Resources/sounds/love.wav create mode 100644 NotchBuddy/Resources/sounds/open.wav create mode 100644 NotchBuddy/Resources/sounds/peek.wav create mode 100644 NotchBuddy/Resources/sounds/pop.wav create mode 100644 NotchBuddy/Resources/sounds/proud.wav create mode 100644 NotchBuddy/Resources/sounds/question.wav create mode 100644 NotchBuddy/Resources/sounds/rate.wav create mode 100644 NotchBuddy/Resources/sounds/search.wav create mode 100644 NotchBuddy/Resources/sounds/send.wav create mode 100644 NotchBuddy/Resources/sounds/slap.wav create mode 100644 NotchBuddy/Resources/sounds/sleep.wav create mode 100644 NotchBuddy/Resources/sounds/think.wav create mode 100644 NotchBuddy/Resources/sounds/tick.wav create mode 100644 NotchBuddy/Resources/sounds/wink.wav create mode 100644 NotchBuddy/Resources/sounds/work.wav create mode 100644 NotchBuddy/Resources/sounds/yawn.wav create mode 100644 NotchBuddy/Sources/App/AppDelegate.swift create mode 100644 NotchBuddy/Sources/App/AppLog.swift create mode 100644 NotchBuddy/Sources/App/AppState.swift create mode 100644 NotchBuddy/Sources/App/AskQuestion.swift create mode 100644 NotchBuddy/Sources/App/BotCanvasView.swift create mode 100644 NotchBuddy/Sources/App/CalcomPoller.swift create mode 100644 NotchBuddy/Sources/App/ChatMarkdown.swift create mode 100644 NotchBuddy/Sources/App/ChatMarkdownView.swift create mode 100644 NotchBuddy/Sources/App/ClaudePlanCardView.swift create mode 100644 NotchBuddy/Sources/App/ClaudePlanGauge.swift create mode 100644 NotchBuddy/Sources/App/ClaudeService.swift create mode 100644 NotchBuddy/Sources/App/DesktopMochi.swift create mode 100644 NotchBuddy/Sources/App/DesktopMochiLogic.swift create mode 100644 NotchBuddy/Sources/App/FileDropView.swift create mode 100644 NotchBuddy/Sources/App/GitHubActivity.swift create mode 100644 NotchBuddy/Sources/App/GitHubPulse.swift create mode 100644 NotchBuddy/Sources/App/GithubPoller.swift create mode 100644 NotchBuddy/Sources/App/GreetingCanvasView.swift create mode 100644 NotchBuddy/Sources/App/HookServer.swift create mode 100644 NotchBuddy/Sources/App/HotKeyCenter.swift create mode 100644 NotchBuddy/Sources/App/IslandRootView.swift create mode 100644 NotchBuddy/Sources/App/IslandStateMachine.swift create mode 100644 NotchBuddy/Sources/App/IslandViewContent.swift create mode 100644 NotchBuddy/Sources/App/IslandWindowController.swift create mode 100644 NotchBuddy/Sources/App/LocalChat.swift create mode 100644 NotchBuddy/Sources/App/MusicController.swift create mode 100644 NotchBuddy/Sources/App/N8nPoller.swift create mode 100644 NotchBuddy/Sources/App/NotchBuddyApp.swift create mode 100644 NotchBuddy/Sources/App/NotionPoller.swift create mode 100644 NotchBuddy/Sources/App/PhoneLink/ApprovalRelay.swift create mode 100644 NotchBuddy/Sources/App/PhoneLink/CloudProbe.swift create mode 100644 NotchBuddy/Sources/App/PhoneLink/InstructionRunner.swift create mode 100644 NotchBuddy/Sources/App/PhoneLink/LiveActivityRelay.swift create mode 100644 NotchBuddy/Sources/App/PhoneLink/QuestionRelay.swift create mode 100644 NotchBuddy/Sources/App/PhoneLink/ServiceDetailRunner.swift create mode 100644 NotchBuddy/Sources/App/PhoneLink/ServicePublisher.swift create mode 100644 NotchBuddy/Sources/App/PhoneLink/SessionPublisher.swift create mode 100644 NotchBuddy/Sources/App/PhoneLink/TurnRecorder.swift create mode 100644 NotchBuddy/Sources/App/ResendPoller.swift create mode 100644 NotchBuddy/Sources/App/SafeWebURL.swift create mode 100644 NotchBuddy/Sources/App/SettingsView.swift create mode 100644 NotchBuddy/Sources/App/ShortcutLogic.swift create mode 100644 NotchBuddy/Sources/App/ShortcutsSettingsView.swift create mode 100644 NotchBuddy/Sources/App/SoundEngine.swift create mode 100644 NotchBuddy/Sources/App/StripePoller.swift create mode 100644 NotchBuddy/Sources/App/UploadCanvasView.swift create mode 100644 NotchBuddy/Sources/App/UploadSequenceEngine.swift create mode 100644 NotchBuddy/Sources/App/UserIdentity.swift create mode 100644 NotchBuddy/Sources/App/VercelPoller.swift create mode 100644 NotchBuddy/Sources/App/WindowContextCapture.swift create mode 100644 NotchBuddy/Sources/CoucouKit/BotEngine.swift create mode 100644 NotchBuddy/Sources/CoucouKit/ColorHex.swift create mode 100644 NotchBuddy/Sources/CoucouKit/DiffEngine.swift create mode 100644 NotchBuddy/Sources/CoucouKit/IslandScreenGeometry.swift create mode 100644 NotchBuddy/Sources/CoucouKit/IslandTypes.swift create mode 100644 NotchBuddy/Sources/CoucouKit/MochiActivityState.swift create mode 100644 NotchBuddy/Sources/CoucouKit/MochiOutfitDrawing.swift create mode 100644 NotchBuddy/Sources/CoucouKit/MochiStill.swift create mode 100644 NotchBuddy/Sources/CoucouKit/MochiWardrobe.swift create mode 100644 NotchBuddy/Sources/CoucouKit/PillCatalog.swift create mode 100644 NotchBuddy/Sources/CoucouKit/QuestionPayload.swift create mode 100644 NotchBuddy/Sources/CoucouKit/ServiceDetail.swift create mode 100644 NotchBuddy/Sources/CoucouKit/ServiceSnapshot.swift create mode 100644 NotchBuddy/Sources/CoucouKit/TurnSnapshot.swift create mode 100644 NotchBuddy/project.yml create mode 100644 README.md create mode 100644 scripts/RenderOutfits.swift create mode 100755 scripts/cloud-test-build.sh create mode 100755 scripts/release.sh create mode 100644 scripts/render-outfits.sh create mode 100755 scripts/test-ask-question.sh create mode 100755 scripts/test-chat-parsing.sh create mode 100755 scripts/test-desktop-mochi.sh create mode 100755 scripts/test-diff-engine.sh create mode 100755 scripts/test-github-activity.sh create mode 100755 scripts/test-github-pulse.sh create mode 100755 scripts/test-plan-gauge.sh create mode 100755 scripts/test-safe-links.sh create mode 100644 scripts/test-screen-geometry.sh create mode 100755 scripts/test-shortcuts.sh create mode 100755 scripts/test-wardrobe.sh create mode 100644 tests/AskQuestionTests.swift create mode 100644 tests/ChatParsingTests.swift create mode 100644 tests/ClaudePlanGaugeTests.swift create mode 100644 tests/DesktopMochiTests.swift create mode 100644 tests/DiffEngineTests.swift create mode 100644 tests/GitHubActivityTests.swift create mode 100644 tests/GitHubPulseTests.swift create mode 100644 tests/IslandScreenGeometryTests.swift create mode 100644 tests/MochiWardrobeTests.swift create mode 100644 tests/SafeWebURLTests.swift create mode 100644 tests/ShortcutTests.swift create mode 100644 tests/fake_local_llm.py diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..3598ec2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +docs/** linguist-documentation +design/** linguist-documentation diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..52c3a58 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# Build artefacts +NotchBuddy/build/ +NotchBuddy/NotchBuddy.xcodeproj/project.xcworkspace/xcuserdata/ +NotchBuddy/NotchBuddy.xcodeproj/xcuserdata/ +NotchBuddy/NotchBuddy.xcodeproj/xcshareddata/ +*.xcuserstate + +# Xcode DerivedData (outside repo — listed for clarity) +DerivedData/ + +# macOS +.DS_Store +.AppleDouble +.LSOverride + +# iCloud stubs +*.icloud + +# Local only (never published) +.claude/ +_prive/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b9c1b1f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,97 @@ +# Changelog + +## 0.1.9 — October 6, 2026 + +- Services up close on the iPhone: tap a service and your Mac fetches live data from its API — Vercel, GitHub, Stripe, Resend, Cal.com, n8n and Notion. The keys never leave the Mac; the detail is written to your iCloud encrypted (#251) +- Act from the iPhone: Vercel (redeploy, promote to production, cancel a build), GitHub (re-run failed jobs, approve, squash and merge), n8n (activate, deactivate, retry a failed run). Each action runs only if it was offered on an item in the last detail the Mac published for that service, is used once, and must be less than 5 minutes old. Nothing that moves money or sends an email (#251) +- The Live Activity starts 20 seconds after the Mac locks, not immediately, so a quick lock and unlock doesn't spend one of iOS's hourly starts. It starts right away when an agent is waiting for a permission or has a question (#251) +- After unlocking, the Live Activity waits 30 seconds before ending, in case the Mac locks again — useful on a laptop that goes to sleep the moment you put it down (#251) +- If the iPhone has no update token yet (iOS held back the start), and an approval or question is waiting, the Mac starts the activity again once for that specific request (#251) +- Cal.com upcoming bookings work again: the API v2 expects `afterStart` / `beforeEnd`, not `start` / `end`, so the bookings page was empty (#251) + +## 0.1.8 — October 5, 2026 + +- Coucou on iPhone: turn on Settings → General → iPhone (off by default) and your agent sessions show up live in the Coucou iPhone app and its widgets, through your own private iCloud. Project names, commands and questions are encrypted with your iCloud keys; turning it off deletes them (#209, #211, #212, #213) +- Allow or deny a permission from the iPhone: a notification with the command, Deny right from it, Allow behind Face ID. Your Mac only applies a decision meant for the exact request it is waiting on, and the request expires after 2 minutes. The iPhone keeps a history of your decisions (#220) +- Lock your Mac while an agent works and Mochi moves to your iPhone's Lock Screen and Dynamic Island, then comes back to the notch when you unlock. Turn it on under Settings → General → iPhone. It goes through a small relay that only sees the agent's name and state (#221) +- Mochi, the pills and the diff engine now live in a shared package used by both apps; nothing changes in the notch (#210) +- The iPhone sees more of what your Mac sees: every service Mochi (GitHub, Stripe, Vercel, Resend, Cal.com, n8n, Notion) with its latest items, and the last turn of each session with its commands and diffs, all encrypted with your iCloud keys. No API key ever leaves the Mac (#224) +- Send the next instruction to Claude Code from the iPhone (GitHub build, off by default): your Mac picks it up within 15 seconds and continues the session in its own folder (#224) +- Answer Claude's questions from the iPhone: your Mac applies an answer only if it matches the question still waiting (#241) +- The Live Activity counts the time since Mochi left, and shows Allow and Deny while a command waits for you (#232, #241) +- A new coucou sound for Mochi's greeting (#241) + +## 0.1.7 — October 4, 2026 + +- Keyboard shortcuts from anywhere: ⌃⌥Space opens the chat, ⌃⌥A jumps to a waiting permission or question, ⌃⌥T brings your terminal forward, ⌃⌥] and ⌃⌥[ switch pills, ⌃⌥M mutes Mochi, ⌃⌥D sends him to the desktop and back, ⌃⌥G opens the wardrobe, and ⌃⌥W attaches the front window to the chat (GitHub build) (#205) +- In the open island: ⌘← ⌘→ and ⌘1–9 switch pills, ⌘↑ ⌘↓ and ⌘O move through a card's list, ⌘E opens the diff, ⌘↩ sends, ⌘K starts a new chat, ⌘P pins the island (#205) +- Every global shortcut can be changed or turned off in Settings → Shortcuts, which also flags combinations another app already uses. They need no Accessibility permission (#205) +- ⌘⇧N now opens and closes the island (#205) + +## 0.1.6 — October 4, 2026 + +- Mochi on the desktop: drag him out of the notch and drop him anywhere on your desktop. He hangs out there, follows your cursor with his eyes, wears his outfit and dances to your music (#198) +- When Claude needs you, he flies back to the notch with the permission or the question, then returns to his spot once you answer. He does a happy jump when a task finishes (#198) +- Click him to poke him, right-click for the wardrobe, drop him on a window to attach it to the chat (GitHub build), and drop him on the notch or double-click him to bring him home (#198) +- He falls asleep when nothing is going on, and remembers his spot between launches (#198) + +## 0.1.5 — October 4, 2026 + +- Dress Mochi up: right-click him to open the wardrobe and pick a party hat, beanie, crown, witch hat, Santa hat, bunny ears, bow, sunglasses, round glasses, scarf or pumpkin, all drawn in code (#195) +- Auto mode dresses Mochi for the seasons on his own (#195) +- Outfits follow his head in 3D, glasses stay on his eyes, soft parts react when you tap or move him, and outfits come and go with a transition. Only the main Mochi wears them (#195) +- A new launch greeting: Mochi drops into the island, bounces, slides to the side and waves hello with a quick little hand, then comes back, with a new soft whisper of a sound (#196) +- Mochi's body is no longer clipped at two corners during the greeting (#196) + +## 0.1.4 — October 3, 2026 + +- See what Claude is editing, live: each file edit shows up in the session ticker with its +N −M lines, and a click opens the diff right in the notch (#177) +- When Claude finishes, the session card shows its final message instead of the last step, without the shimmer (#177, #179) +- GitHub pill: your open pull requests with their CI status, the pull requests waiting for your review, and the CI of the default branch of your recent repos. Click a row for the list, then an item to open it on github.com (#181) +- GitHub alerts: a badge and a sound when the CI of one of your pull requests turns red or green, when a default branch breaks, or when someone requests your review. Fast CI runs are caught too, and the card refreshes when you open it (#181, #185) +- Your GitHub contribution grid: the last 7 days in the GitHub card header, click it for the past 23 weeks, and click a day for its count (#187) +- The GitHub token needs read access to pull requests and CI: a classic token with the repo scope, or a fine-grained token with read access to Pull requests, Commit statuses and Actions (#181) +- The finished view no longer overflows the card (#179) + +## 0.1.3 — October 3, 2026 + +- Answer Claude's questions from the notch: when Claude Code asks a multiple-choice question, pick an option or type your own answer right in the island, and Reply in terminal hands it back. Update your hooks in Settings to turn it on (#165) — thanks @Vega8991 for the idea (#94) +- Claude plan usage (GitHub build): turn on Settings → Agents → Plan usage to see your 5-hour and weekly limits in a small pill in the notch header, and click it for the details and reset times. Pro and Max plans; your current status line keeps working (#159) +- Chat with local models through Ollama or LM Studio, no API key needed: connect them in Settings → Chat → Local models. Answers stream in, and thinking blocks stay hidden (#156) +- Markdown in chat answers: bold, lists, headings, quotes, and code blocks with a copy button. Links open only when they are web links (#156) +- Apple Music (GitHub build): see what is playing in the notch, play, pause and skip on hover, and Mochi dances along (#144, #153) +- Settings are now organized in a sidebar (#153) +- The chat greets you by your own first name (#154) + +## 0.1.2 — October 2, 2026 + +- Codex support (GitHub build): sessions show up live on the Codex pill, and permission requests get Allow and Deny in the notch. Install from Settings → Codex Hooks, then trust the hooks once with /hooks in Codex (#130) — thanks @lacatu5 +- Cursor: Claude Code started in Cursor's terminal shows up on the Cursor pill, and you can answer its permission requests from the notch (#120). +- Pick your main coding tool in Settings → Active pills: VS Code, Cursor, Codex or Antigravity (Codex and Antigravity: GitHub build). It stays on and no longer takes one of the 4 slots (#120). +- The permission card stays in the notch until you answer it: the mouse no longer folds it, and reopening the island shows the request again (#117). +- The permission card also shows when the island is already open, and the pill you were on comes back once you answer (#120). + +## 0.1.1 — October 2, 2026 + +- Declare the tools you use in Settings: Gemini CLI, Antigravity, Anthropic, Google AI and OpenAI pills join the existing ones (Cursor and Codex pills are coming soon), and you pick the main pill. +- Chat now supports Google AI (Gemini) and OpenAI in addition to Anthropic; switch provider and model by clicking the model name in the chat view, on macOS. +- Linux version: the Tauri app now builds for Linux too (AppImage, .deb, .rpm), with the island as a layer-shell overlay on Wayland and Claude Code hooks over a private Unix socket (#21) — thanks @Davy133 +- Compact island on screens without a notch (#22) — thanks @Kamasoutra +- Only web links (http/https) open from the notch; other kinds of links from Claude or integrations are ignored (#16) — thanks @Cris1670 +- Hook socket limited to your own user account, with size and time limits; logs no longer keep commands, n8n data or full URLs, and stay under 1 MB (#16) — thanks @Cris1670 and @Vignesh-Thangamariappan +- The island always reopens after folding, and Settings opens below it, resizable — thanks @rouderz +- Choose the Claude model for the chat in Settings; the list comes from your Anthropic account, and Claude Sonnet 4.6 stays the default — thanks @rouderz +- Windows build artifacts are now downloadable from a manual CI run — thanks @MysJofR +- Any agent can talk to Mochi: tag a hook payload with `coucou_agent` (e.g. `nb-hook --agent my-agent`) and it gets its own pill in the island (#7, #9) — thanks @lacatu5 +- Gemini CLI and Antigravity (agy) hook support on macOS: install from Settings and their sessions show up in the island — thanks @corefusiion + +## 0.1.0 — September 27, 2026 + +- First release: Mochi lives in your notch, breathing, blinking, with eyes that follow your cursor +- Claude Code sessions: live steps, approve permissions, answer questions, jump to the terminal +- Chat with Claude from the notch +- Drop a file on the notch to ask a question about it or send it by email +- Drag Mochi onto any window to attach it as context +- Integrations: Stripe, n8n, GitHub, Vercel, Resend, Notion, Cal.com +- 28 handcrafted sounds +- Hides when idle, peeks out when you hover diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..c666caa --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,32 @@ +# Coucou — guide for AI coding agents + +Coucou is a native macOS app (`NotchBuddy/`); `windows/` is the Tauri version for Windows and Linux. Mochi, a small animated character living in the MacBook notch, shows AI coding agent sessions (Claude Code, Gemini CLI, Antigravity and more) and a few integrations, and lets the user approve, answer, chat and drop files from the notch. + +## Where things are +- `NotchBuddy/Sources/App/` — Mac-only Swift code. `NotchBuddy/Sources/CoucouKit/` — code shared with the iPhone app (Mochi's BotEngine and outfits, pills, diff, models). `NotchBuddy/Sources/Phone/` — iPhone app (`CoucouPhone` target), with its widgets in `Sources/Widgets/` and the expanded approval notification in `Sources/NotificationContent/`. `NotchBuddy/Resources/sounds/` — the 28 WAV sounds. `NotchBuddy/project.yml` — XcodeGen project (never edit the `.xcodeproj` by hand). +- `NotchBuddy/Sources/CoucouKit/PillCatalog.swift` — single source of truth for all declared pills (workspace tools, agents, AI providers, services). Every pill ID, color, category and subtitle lives here. +- `docs/SPEC.md`, `docs/INTEGRATIONS.md` — behaviour, views, states, integrations (in French). +- `design/prototype/notch-buddy.html` — original prototype, the visual source of truth. `design/captures/` — target screenshots. +- `windows/` — the Tauri app for Windows and Linux: Rust in `src-tauri/`, TypeScript in `src/`, the `coucou-hook` relay in `hook/`. `windows/README.md` lists what differs from the Mac. +- `docs/*.html` — the GitHub Pages site (privacy, terms, support, legal notice). +- `relay/` — the Coucou relay, a stateless Cloudflare Worker that forwards the iPhone Live Activity pushes (it holds the APNs key, which must never ship in an app). See `relay/README.md`. + +## Build +``` +cd NotchBuddy && xcodegen && xcodebuild -scheme NotchBuddy -configuration Debug build +``` +Windows and Linux: `cd windows && npm install && npm run tauri dev` + +## Rules +- Swift 6, SwiftUI + AppKit. No third-party dependencies unless truly unavoidable. The character is drawn in code (`Canvas` + `TimelineView`), no Rive/Lottie/images. +- Secrets live in the Keychain, never on disk or in git. +- No telemetry. Network calls only to services the user configured. +- Never block Claude Code: if the app doesn't answer, the hook exits immediately. +- Never overwrite `~/.claude/settings.json`: dated backup, merge, show the diff, write only after the user confirms. +- Never send an email or approve a Claude Code or Codex permission without an explicit click. +- Performance: 0 % CPU when the island is hidden. +- Keep the bundle identifier `fr.louisraille.NotchBuddy` (Keychain items, preferences and permissions depend on it). +- Never restyle what already ships (pills, cards, Settings, chat…): existing views stay exactly as they are in `main`, which is the App Store build. Change the look of an existing view only when explicitly asked. +- Pill IDs are stable contract values (Keychain, UserDefaults, hook routing): never rename an existing pill ID. +- New views follow the existing app style. `design/prototype/notch-buddy.html` and `design/captures/` are references for new work, not a reason to change existing views. +- Every release adds its CHANGELOG.md section, a row in the README Versions table, and commits the regenerated Info.plist with the new version. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..879ac24 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,39 @@ +# Contributing to Coucou + +Thanks for wanting to help Mochi grow up! 🫶 + +## Getting started + +```bash +brew install xcodegen +cd NotchBuddy && xcodegen && open NotchBuddy.xcodeproj +``` + +Never edit `NotchBuddy.xcodeproj` by hand: change `project.yml` and run `xcodegen`. + +Check resting island dimensions on screens with and without a notch: + +```bash +bash scripts/test-screen-geometry.sh +``` + +## Good first contributions + +- A new service integration (a poller + an entry in `PillCatalog.swift` in the `.service` category + a detail card). Look at `StripePoller.swift` for a compact example. +- A new agent: any agent already gets its own automatic pill by sending `coucou_agent` in its hook payload (see `docs/AGENTS.md`). Add an entry in `PillCatalog.swift` in the `.agent` or `.workspace` category only if you want it to be declarable in Settings → Active pills. +- A new emote or sound for Mochi. +- Bug fixes — please describe how to reproduce. + +## Rules of the house + +- Swift 6, SwiftUI + AppKit, **no third-party dependencies** unless there's really no other way. +- Secrets go in the Keychain, never on disk or in git. +- No telemetry, no network calls except to services the user configured. +- Never block Claude Code: if the app doesn't answer, the hook must exit right away. +- Never write `~/.claude/settings.json` without a backup and the user's confirmation. +- Keep it light: 0 % CPU when the island is hidden. + +## Pull requests + +- One topic per PR, with a short GIF or screenshot for anything visual. +- Build must pass with no new warnings. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8efefc7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Louis Raillé + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/LICENSE-ASSETS.md b/LICENSE-ASSETS.md new file mode 100644 index 0000000..2a4d22d --- /dev/null +++ b/LICENSE-ASSETS.md @@ -0,0 +1,28 @@ +# Coucou — name, character and artwork + +Copyright (c) 2026 Louis Raillé. All rights reserved, except as stated below. + +The [MIT License](LICENSE) covers the **source code** of Coucou. It does **not** cover the brand and the artwork listed here, which remain the property of Louis Raillé: + +- the names **“Coucou”** and **“Mochi”**; +- the **Mochi character** — its design, look, expressions and animations as a character; +- the **app icon** and **menu bar icon** (`NotchBuddy/Assets.xcassets/`); +- the **sounds** (`NotchBuddy/Resources/sounds/`); +- the **images, GIFs and videos** in `docs/media/` and `design/`. + +## What you can do + +- Build and run Coucou from this repository, for yourself, as it is. +- Fork it and contribute back with pull requests. +- Show, review, write or talk about Coucou (articles, videos, posts), including screenshots and the demo media. + +## What you can't do without written permission + +- Publish or distribute an app, a fork or a derivative work under the name “Coucou” or “Mochi”, or with the Coucou icon, the Mochi character or the Coucou sounds — on the App Store, on GitHub releases, or anywhere else. +- Use any of these assets commercially, or in a way that suggests your project is Coucou or is made or endorsed by its author. + +If you fork Coucou to ship your own app, that's welcome under the MIT License: just give it **your own name, icon, character and sounds**. + +## Questions or permission requests + +Open an issue on [GitHub](https://github.com/Louis-CFM/coucou/issues) or write to raillelouis@gmail.com. diff --git a/NotchBuddy/Assets.xcassets/AppIcon.appiconset/Contents.json b/NotchBuddy/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..1717346 --- /dev/null +++ b/NotchBuddy/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images": [ + { + "idiom": "mac", + "size": "16x16", + "scale": "1x", + "filename": "icon_16x16.png" + }, + { + "idiom": "mac", + "size": "16x16", + "scale": "2x", + "filename": "icon_16x16@2x.png" + }, + { + "idiom": "mac", + "size": "32x32", + "scale": "1x", + "filename": "icon_32x32.png" + }, + { + "idiom": "mac", + "size": "32x32", + "scale": "2x", + "filename": "icon_32x32@2x.png" + }, + { + "idiom": "mac", + "size": "128x128", + "scale": "1x", + "filename": "icon_128x128.png" + }, + { + "idiom": "mac", + "size": "128x128", + "scale": "2x", + "filename": "icon_128x128@2x.png" + }, + { + "idiom": "mac", + "size": "256x256", + "scale": "1x", + "filename": "icon_256x256.png" + }, + { + "idiom": "mac", + "size": "256x256", + "scale": "2x", + "filename": "icon_256x256@2x.png" + }, + { + "idiom": "mac", + "size": "512x512", + "scale": "1x", + "filename": "icon_512x512.png" + }, + { + "idiom": "mac", + "size": "512x512", + "scale": "2x", + "filename": "icon_512x512@2x.png" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_128x128.png b/NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..80358b5443d8827031c4bea869b22bd0f8851948 GIT binary patch literal 16464 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 Mik5PjqE+bs0<0ysf&c&j literal 0 HcmV?d00001 diff --git a/NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png b/NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4aaea44e39c733eb543084719cebc1f9b29ea8b3 GIT binary patch literal 39373 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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_16x16.png b/NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..4ab622d4fec1342baa65d51f43d7ba8c2197005a GIT binary patch literal 6405 zcmeHLc~leU7SBddj(`dTv=^w z&N=xeJ}$=IZnzzT!LXOdMo$CR!KUv3F8KB6>_Hd|-a-_KOg3H9vos2D><+FND$*g0 zA&kL`8H{R%bX_Lfd;qkPEm|?XTAKH@vh-A_Ni$R-5~3l5l;F!G2*#JdA~9bU98B*xD3Q%ueP}J?RAG3{t{Gx7!0_cCbg6S7%=u)45G~j3a!4sfs-k=fTWaq z93ydx7R(i!Y}`d9*RWsL_RzBo-R~5!4eTF35LZAOs&V& zz!6ARMe0;KL=Uo^@(zgJkV4%G*NSNf@9+y;Hb=$ zbcNEQoL52g-es6e*XnQz$I?MuM1#|~-cX+L4h=(Y1)8N-8~FxYO?aE~A;Qd7?+_0B zD}a~^F{qNE3+0Y4ix0o{S|I*=aRK)P>)0Ira(LSicb5Y>!|dxsxtlF{7)PR7jR2u& zm0qhOQ30w(vM^kr(`)CF*!!s&J>FN<>PaO@@lh>B0963KGKG8}g+(1KG0z#lHKpqI8Fi3-BLn>r04xxG+p>Yh- z>LHC5BMB1Ro6O8EKyVtg%plMhv;;j5^e;jQY(!BgIA3gPa21NEm4rcsh=PJq9fD0U zS@eA@J;~&cI@j?0^*-ArH|u3Z_hoZFoW6gDlP<8(aGw%UYQ%OxPPg#!to-S!1 zl@vl}>2c$feoQk{EAYQs5WQ^dbN9iagpptgj1mZ6B0|Jq(MUu1GKEyc7ZV~OE>TEi zvLK<}((=@IM9=>pjzX_%zkaoUaLV3|yQQ7Y@Y7D)KUX#`+=BY}devQ*h6WIyHF(8V zmF8WG)egDR>(}=``RyZ_#cf>f$w{|Ljs>`%)~=^YoMa1@Z&1V>8?kHmw|9;$pLIn_ zo4c6`XpZXX9~*>&SP=mJZ9l0HjBw(Ifr*_vU_qw z*3z&y{}ngVCQO;+#DML%1N{CLdnSy-X2Wu!E9}B$CvohY9QyJNfZ`*gK$Zcf2W+R& zeGj0h-U)}Iz&ip=Hi@VW&@`=1cUOB+Ff4^bgi?t(D0n6ir9cc8%FH4h{qaz~ z@Yvo^P`^;Uo9b=EL@*a%8^bBE6W7+9K8tCogUz&MM>062^X)QD#k<)!w@MC1R>@{X zKfHYH(yo^ie{pTuvxVo+6wkxvy}sJ~=>#_I(;*1W$r-%ovct1FY? z8L$J$W27UK*~8(mS+7-196kH(XX_7Nnth}{;%p@Y##pe>Fw%J=bN=~LNz2cCek*L_(sgQX z9I@yMtNz(kW;p(=X8flUu5>;ab*bxR_=fzX<1AR0I{R7|QmvS{C2-AGHTLl*eI8#D zrEXpw_RpEu962ijeq0eMs{O|JAo11ogj)w=29}#PUyA+4zP)F?u_9naz>0ts0V@Jl z1gr>H5wId)MZk)H6@mXF0)Hfjr!l{tx+FX~t2S~^yuG|`mr(gQ`_j%&BE#qlufMyO zxV`3+6N=zX99~o5*|I;qgf642oqyTjF}%lXzzWr}?A#cIoIeNr^90MIBc>bIZ%!0u zI42B#bG@Ox{i=;a;k+W_@E!6>AMWTO2|HUR9(GnDh$k;yi6T{t!duS&n7Gq<&{`hv z3pdX8Xd}%{FK<_KYmtWV%4GX z)nAoHd*w=OoWqLJe7X5lW8IBbDopE$a(YyUmZe@#_F3yEjy;*UQZ~BgqTuo)UcjU6 zjRR|grmiY^=9bo#az}m6qbyC)IK8QDU-z3cQ-&6|%qC{L$4D|c6~Q*K z13f1%d0JXsF!ROt1-DPwG!_4LVbwN&cC7RKE~ogPOKxW04cHppnE>az$zR=F_@GS| zUFROP=YG9S$fy@{^gEDypRoI7i%nR1eal1oAGQ3w7dO%)w$eLt1H8MN9rjlTJ)gg5kZbGC zYR@${Y%-5R6RRFOZ1Q;X} z+>z2K{h?hw^3LNm!L1Jd11mdj98A@IM~yEXoApyt(YS>d*B-q%wthiu#+nU_0O@;r io5UINHLtV9A%98Z8sKmmlX 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⊞bpX!HM?WMx4PIoP-S!VKvD36Frxwm} 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%0Ay30dxx`(!MbiiJsdBkcB#p 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 GL;oMCI#-bZ literal 0 HcmV?d00001 diff --git a/NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_32x32.png b/NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..49d72b982a4f5dfba1e10511f1ac24149f837ad8 GIT binary patch literal 7151 zcmeHMcT^Mk7EU8nDGG=v7&|Hnlh6{DUJW9m0#Z~MW+ovJl9&k+K%|L^iY`S(MFb46 zD~RQ-Ys0p<3aG%cDlRUIs1yq#)ym^dLKfY(yXT$v$2;#Ia!xY8J9Eo-zgu!nlIiE` zHATZ%1Bb&+VJ~xEja@17w;CDyL=zH*a5%#)5a=2tzedHzL}0f~u`3KQL?BKNr<;Pq z9mg>bZzL*iU|K;+Ew6E{m_KU8iUoFZO*^`+ttA7orc)zqEfJ~}%NC)63?_@pg6VW7 zXa(5j|Nhca?&!e`+NwqKgNS0JC0Bs14?+j7?6uthy>gy zo&c4A0tjKdOUXF zpi8()<+Kvc_$gYEx=@4&5I72p3&tQ4M2r?ke`W(sErDXid?^)0_?&riJRApw)n|q+ z{!Abo38Ilfl$mO4_jT_N26FrJug5p=x528VQFcwB=BC&825B?)G>FhtM3dKAwPe6r)0uH8%kV->4aR@nLPD=epy27?lCqQE+L(N~>8Ji7v2<9SUhv*iy`lR#Q`cmg-s+qG=9zx{K&#(UUF|n&BkFTo6rcr)LSyL* zcpQwCC`5`uM&%uvT7t=-SYkAX!$$;MN#qQ}oj4r9QJKdgMIH=@|K)@!_JF*oyqNJm zCFuM+Tpr5f3P4G$7?G~{qSF+uW$|Avi1BWmaQBx(Y0Y5TfR;>%3IQB!C^;-EDrjwE zL!~1i%%VpyY#?h`tSouh=SENeACAJf>m^_0{+CnsdEAxd)X!?=@{;p*eY5e=9?7u? zohg-J&IgaFo4i}pld*gAx$WbA7yl=}6HTUcYrE*FzvHwS>j&FE#`;OWu`sh9mi2bn zeS5YBRmmxfKqZQ5hGA`vh(U=^9L5uHgvS)UBXs$FjwznlfT7$?*h;}#2cgpd8W4?& z5GYW2he5NV0XUp4Q`tRc%I^7#g+5VGteX>@Dgc{#ezeiky%>}lNfnZ=7Sycg_fLG>0#H$iraishN zjp*BcMk@OEtuDKkvO?XTKWu9`^WOW_^rmxVhD-65ad6z|ul4pGM2T4^%`Pd)X{Vu8 zKw($XRqyGSZO`Q%3jzWGZ48Hr4jw;7A`uCyDGF{(7Lc?7EwaW^GM>Ei7^dhqta?I9^@T&{y?c72@sMM|^_F!%e91VGivwT+Ku1mV3-Jlf zw*&Sxcy>4x?mWyV`*M<731I!3MYGy*1?|nEyM4fkE93OBmknYb#24o@d)oS zi@c1ADSmZkFIyO4vRsFcA#FOOz2-H0?HE;=(w;RR{8x2c_EImFZ@%Cug%f*k@-WH3 zBm!O|>>CujT-m-8YH)@enu5DjiqW#0D40uVnts*l?f1f=&7$6y$sUh8hJS9<-_<$O_csT^vdGn~HAO4DYdqPA zZe~4c+wMXyv^r-<)A&-wrNcU1ADk{G*zURYlvu6yzOcD=XD+&@XL{+$vp5%%6aG)H z*W%`WC9lF5N@9BR2!AI=EM@7}%EN~%jd(Dk+9c@@3XY_kxk z<6P=?_|P@9wW|17;NIvUnaiti4s9Xn4d zC^S%CSSQ$OP}VC`89Jg<)IX&E&a0hdrvKc$s`j88dx^*nzxy?(@}d=)DA*dgQ-d7Y;v zge6Nn8ajD*@Mj{5e(rwA*^*foze*JRsb)d&9+Xz21@xAbsa8}}sLnMJ4y^L9~tAfdD9wb#?jb6Tf$09ArZYRUCz3hqW**T&kwUyp0&USYWoPSX125Gqa_352* znxB%b@5d-YIZrDRCTD)*3sNs|NMbTCcQ2zYf4OZM+Z1;ZIF!% zopvYR3mR!Tdi{Nzw!`o*4F0zK3(VBetJi;97yQZ2K0)faX_$4h`0L8F@Cwtr2fP=U z?cb>zQaL)$$#>i6>F?jxtPQIkeZ8;mO5=AaF)AyH7nIP%P4MF z{3}`~yw+mv_Ce3}jFWRj!du)2vlj;T6kiEWl=i*0y??Huu>2?E;jX7@TTe7@I+t`k zcKvpdn69ZYcdmV-=IVx3EmeX5tP!73>_C=pNg{4wWyy1y S`A0SR=4X5Ox>vb|r~M1pqP6M( literal 0 HcmV?d00001 diff --git a/NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png b/NotchBuddy/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c618f6636f27c49be2aace4b141f2893f9cb1e0b GIT binary patch literal 9361 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 z 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�AhIl!#xR~{t!?! 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%0D|UE%a+$5Qh5rVNE0 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�=bu9RTV{B)f>*oe4YcgQFkR!6CxC1|V(`n~yO| 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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Assets.xcassets/Contents.json b/NotchBuddy/Assets.xcassets/Contents.json new file mode 100644 index 0000000..74d6a72 --- /dev/null +++ b/NotchBuddy/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info": { + "author": "xcode", + "version": 1 + } +} diff --git a/NotchBuddy/Assets.xcassets/MenuBarIcon.imageset/Contents.json b/NotchBuddy/Assets.xcassets/MenuBarIcon.imageset/Contents.json new file mode 100644 index 0000000..42133dd --- /dev/null +++ b/NotchBuddy/Assets.xcassets/MenuBarIcon.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images": [ + { + "idiom": "universal", + "scale": "1x", + "filename": "menubar.png" + }, + { + "idiom": "universal", + "scale": "2x", + "filename": "menubar@2x.png" + }, + { + "idiom": "universal", + "scale": "3x", + "filename": "menubar@3x.png" + } + ], + "info": { + "author": "xcode", + "version": 1 + }, + "properties": { + "template-rendering-intent": "template" + } +} \ No newline at end of file diff --git a/NotchBuddy/Assets.xcassets/MenuBarIcon.imageset/menubar.png b/NotchBuddy/Assets.xcassets/MenuBarIcon.imageset/menubar.png new file mode 100644 index 0000000000000000000000000000000000000000..b89ab1d380ae78f6993b4f919601e0d0bf06a219 GIT binary patch literal 6164 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 cn(CAf{uiN_z@!XlSN5kYMQM6`&C zEV2l7L)<7-1+`RLMWCWwK|w8`7Hta%ROC)VM0?wwd+v{W?jLdvneYAPU7q)Om;7K? zP@s>Frims7gVFKxWvxM5D`xb za}Zc0r^MMSY>XkAjPD90HP)|9EKIiC-B>;P-4^s-0HOA!2nTZJilstOjvzvi2ir+R zyl6xulY=4%_G2a3CI}_Y2*Pou+QSTp0XUK&hzgMDPEjD43Biu!C^T7^1Hg_9*j^xo z1*jtwEFY2ZC7={Vv6_p)V0%@#J^mgy2q_IIakOdBX7``Ac!8&8*JV0J?W#UphB`W^ z0A0dUDW{cir%o}-)Ws551aqR%xS$Z0!%|ss%m+4P+e)BVsUU$Yg9Tg*1s<-8(&_`l zc7G<2!v|&jFjB^zFU)suN%u7CCYiI1&00Ixezhq{q(u*B*<641OIYMF6^?|3kXT3o zMRLAWEI}X&BmiSMFhwF2$03|QLQ63FqpDbn@DLFh5{tN~DoQ>tRum%=$BSY(undwS z5(Pa8TrZ_Z(tD32IUkXcxQGBIfpS!UNm6)oEG(0g#9R_cibb1;1d2E$A-ILa2jgH8 zB!xja%pr-TB%zpta1r#ZFjKlfgUiv9$tXgZm@AJ*>*v8kFF zK>{>A&M;cBW>tmV|GvTsDk&UL4o(;N93iB3x2E6OT?;q$DLQmp2`Yn9xv@D{0E>8X{wGGeF&LbyDvu?~JZO;M;|Wvl0Yy;} z;Z&dE^!^<#B13p0P#!CV69PW!G-Yeq{Z|WOsvD=>{pC9kIvzIVO3d1196ep(_P#9hgc1C_s!% z0z>OnH#7>J0$?z6n5ynss_LGlr^wqDirCXP*a=geZ;lsT%g++2nP(*)RpjYSXCZ)tUBHkLm zjJXwLJd5}vy}`50X#;EEepg4$nE%UpEf>m-mSOGVIq?$@Z?0hD_4x;@xs2+Fkn5Pi{eD7L`yn z1BDt6zyM|n$%0@E7;Poq4(=sv3*>CD7=3c>PJ!#;s~sB~KV}@y!vGu{K$R^d7Ge`y zZ-r#t_U>^h+(wEnZ7ymQ_4XU&hAXIoTM;#x^^9bL5aK&Tnv z7j|+`(i}rA8&{i>w1%w>n_lVEk91ESO{R#xmEHcz$zJ`{!AoXIB-y>;?r`3nmkk}= zUz}_2;hs?e&K}x+^LkM)$kq5*=+xj1;6NY z`7gif!T@dA6sM9PEt6G!i#~l={A$Owhvh%?mvw55)oqFWv2CwwW3I)Grj=RE9ce~Q z4fktqq;%?UyNUoFZg-#fI{Lex{$95Ce8!80&lZj5nr01^KCS%ifrg_=q;BXS^PnAb zRM#Y3(31a7s4-+l)gi1V&97X_EwCEP4qL`i53o-;Lm1bnN_SeHyKY0;+xV6X%|_+F z4;!=-A2iA@r=+=hB(2kE*N(VeZP&A2t-!*yVC8Y&xX<7DFK^MCo1IPeNJ;Ar^zUfg zb0wxeMtt`Zxv{_3_PR6j=*Qz?x#5IqS=)X6cG7b_qI;8k|Lka7$2ob))xJe}Hwg6w z3yPl?NAx-5Wx=A6HEF%=6`75erE_e8y1ePNI~~iK`wC1~c@EHP2$pARs`h7mYEJFw zi3lg2Z{e9!=Ld6heRB?gg(kgm7A6Nq*Dkg9TU^;WI{7w}UrWFCHjB28l{O@OWuU)y zzrAMH+;@w9&Zg~aAIu7`_1ku*{YN|2P~hX`#8ZN}W2M2|w*(jO0e;SL_+hYQ<(=Mz z7unt?QoMyO=d^ch*unpNUh0bu$@MoOJKxN5t09a%)9v!Lzvi=jdF);C%AXwUQO zeK}{v(VtdnwoQy{)MW`aH|alJ(yv`}J$z-((W1|rjrwd+ z;zrCjo#N@5`e74qj#F73z@?xEJE_3fs8h97CxfTeb z;~rrLiq*Tm*hyTjTh?%+Q@>=Qr5qQ(kiFWA$LjA)w*BYUknxRb9Zex7lxzVbt^)1Zxl((EjoQq?x}QM6fBjp4wugE$`K@6QG9x;zBo`io7-DBvZX6CJnL?N z + + + + com.apple.security.automation.apple-events + + + diff --git a/NotchBuddy/Resources/CoucouAppStore.entitlements b/NotchBuddy/Resources/CoucouAppStore.entitlements new file mode 100644 index 0000000..0fc6072 --- /dev/null +++ b/NotchBuddy/Resources/CoucouAppStore.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + com.apple.security.files.user-selected.read-write + + com.apple.security.files.bookmarks.app-scope + + + diff --git a/NotchBuddy/Resources/CoucouAppStoreCloud.entitlements b/NotchBuddy/Resources/CoucouAppStoreCloud.entitlements new file mode 100644 index 0000000..8cb503f --- /dev/null +++ b/NotchBuddy/Resources/CoucouAppStoreCloud.entitlements @@ -0,0 +1,24 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + com.apple.security.files.user-selected.read-write + + com.apple.security.files.bookmarks.app-scope + + com.apple.developer.icloud-container-identifiers + + iCloud.fr.louisraille.Coucou + + com.apple.developer.icloud-services + + CloudKit + + com.apple.developer.aps-environment + development + + diff --git a/NotchBuddy/Resources/CoucouCloud.entitlements b/NotchBuddy/Resources/CoucouCloud.entitlements new file mode 100644 index 0000000..4ffd53e --- /dev/null +++ b/NotchBuddy/Resources/CoucouCloud.entitlements @@ -0,0 +1,18 @@ + + + + + com.apple.security.automation.apple-events + + com.apple.developer.icloud-container-identifiers + + iCloud.fr.louisraille.Coucou + + com.apple.developer.icloud-services + + CloudKit + + com.apple.developer.aps-environment + development + + diff --git a/NotchBuddy/Resources/CoucouPhone.entitlements b/NotchBuddy/Resources/CoucouPhone.entitlements new file mode 100644 index 0000000..6c70513 --- /dev/null +++ b/NotchBuddy/Resources/CoucouPhone.entitlements @@ -0,0 +1,20 @@ + + + + + aps-environment + development + com.apple.developer.icloud-container-identifiers + + iCloud.fr.louisraille.Coucou + + com.apple.developer.icloud-services + + CloudKit + + com.apple.security.application-groups + + group.fr.louisraille.Coucou + + + diff --git a/NotchBuddy/Resources/CoucouPhoneProduction.entitlements b/NotchBuddy/Resources/CoucouPhoneProduction.entitlements new file mode 100644 index 0000000..b40e790 --- /dev/null +++ b/NotchBuddy/Resources/CoucouPhoneProduction.entitlements @@ -0,0 +1,22 @@ + + + + + aps-environment + development + com.apple.developer.icloud-container-identifiers + + iCloud.fr.louisraille.Coucou + + com.apple.developer.icloud-services + + CloudKit + + com.apple.developer.icloud-container-environment + Production + com.apple.security.application-groups + + group.fr.louisraille.Coucou + + + diff --git a/NotchBuddy/Resources/CoucouReleaseCloud.entitlements b/NotchBuddy/Resources/CoucouReleaseCloud.entitlements new file mode 100644 index 0000000..90d7976 --- /dev/null +++ b/NotchBuddy/Resources/CoucouReleaseCloud.entitlements @@ -0,0 +1,24 @@ + + + + + com.apple.security.automation.apple-events + + com.apple.application-identifier + 256AUJ9555.fr.louisraille.NotchBuddy + com.apple.developer.team-identifier + 256AUJ9555 + com.apple.developer.icloud-container-identifiers + + iCloud.fr.louisraille.Coucou + + com.apple.developer.icloud-services + + CloudKit + + com.apple.developer.icloud-container-environment + Production + com.apple.developer.aps-environment + production + + diff --git a/NotchBuddy/Resources/CoucouWidgets.entitlements b/NotchBuddy/Resources/CoucouWidgets.entitlements new file mode 100644 index 0000000..e6893e8 --- /dev/null +++ b/NotchBuddy/Resources/CoucouWidgets.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.fr.louisraille.Coucou + + + diff --git a/NotchBuddy/Resources/Info.plist b/NotchBuddy/Resources/Info.plist new file mode 100644 index 0000000..ce0f538 --- /dev/null +++ b/NotchBuddy/Resources/Info.plist @@ -0,0 +1,39 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Coucou + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + fr.louisraille.NotchBuddy + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Coucou + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.1.9 + CFBundleVersion + 10 + LSUIElement + + NSAccessibilityUsageDescription + Pour lire le titre de la fenêtre active et l'attacher comme contexte. + NSAppTransportSecurity + + NSAllowsLocalNetworking + + + NSAppleEventsUsageDescription + Pour sauter au terminal, envoyer des mails et piloter Musique. + NSHighResolutionCapable + + NSSupportsAutomaticGraphicsSwitching + + + diff --git a/NotchBuddy/Resources/InfoAppStore.plist b/NotchBuddy/Resources/InfoAppStore.plist new file mode 100644 index 0000000..c529d48 --- /dev/null +++ b/NotchBuddy/Resources/InfoAppStore.plist @@ -0,0 +1,39 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Coucou + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + fr.louisraille.Coucou + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Coucou + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.1 + CFBundleVersion + 5 + ITSAppUsesNonExemptEncryption + + LSApplicationCategoryType + public.app-category.developer-tools + LSUIElement + + NSAppTransportSecurity + + NSAllowsLocalNetworking + + + NSHighResolutionCapable + + NSSupportsAutomaticGraphicsSwitching + + + diff --git a/NotchBuddy/Resources/InfoNotificationContent.plist b/NotchBuddy/Resources/InfoNotificationContent.plist new file mode 100644 index 0000000..acf7642 --- /dev/null +++ b/NotchBuddy/Resources/InfoNotificationContent.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Coucou + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + fr.louisraille.Coucou.NotificationContent + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + CoucouNotificationContent + CFBundlePackageType + XPC! + CFBundleShortVersionString + 1.0 + CFBundleVersion + 3 + NSExtension + + NSExtensionAttributes + + UNNotificationExtensionCategory + COUCOU_APPROVAL + UNNotificationExtensionDefaultContentHidden + + UNNotificationExtensionInitialContentSizeRatio + 0.45000000000000001 + + NSExtensionPointIdentifier + com.apple.usernotifications.content-extension + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).NotificationViewController + + + diff --git a/NotchBuddy/Resources/InfoPhone.plist b/NotchBuddy/Resources/InfoPhone.plist new file mode 100644 index 0000000..9fb3925 --- /dev/null +++ b/NotchBuddy/Resources/InfoPhone.plist @@ -0,0 +1,67 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Coucou + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + fr.louisraille.Coucou + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Coucou + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleURLTypes + + + CFBundleURLName + fr.louisraille.Coucou + CFBundleURLSchemes + + coucou + + + + CFBundleVersion + 3 + CoucouAPNsEnvironment + $(COUCOU_APNS_ENV) + ITSAppUsesNonExemptEncryption + + LSRequiresIPhoneOS + + NSFaceIDUsageDescription + Coucou asks for Face ID before allowing a command from your iPhone. + NSMicrophoneUsageDescription + Coucou uses the microphone when you dictate an instruction for Claude Code. + NSSpeechRecognitionUsageDescription + Coucou turns your voice into the text of an instruction for Claude Code. + NSSupportsLiveActivities + + NSSupportsLiveActivitiesFrequentUpdates + + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + remote-notification + + UILaunchScreen + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/NotchBuddy/Resources/InfoWidgets.plist b/NotchBuddy/Resources/InfoWidgets.plist new file mode 100644 index 0000000..ff071e1 --- /dev/null +++ b/NotchBuddy/Resources/InfoWidgets.plist @@ -0,0 +1,29 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Coucou + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + fr.louisraille.Coucou.Widgets + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + CoucouWidgets + CFBundlePackageType + XPC! + CFBundleShortVersionString + 1.0 + CFBundleVersion + 3 + NSExtension + + NSExtensionPointIdentifier + com.apple.widgetkit-extension + + + diff --git a/NotchBuddy/Resources/sounds/annoyed.wav b/NotchBuddy/Resources/sounds/annoyed.wav new file mode 100644 index 0000000000000000000000000000000000000000..04e7653f270a693812edb9dcc887005b9333e4de GIT binary patch literal 113772 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 XPwuP6rN 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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/approval.wav b/NotchBuddy/Resources/sounds/approval.wav new file mode 100644 index 0000000000000000000000000000000000000000..df865d380b69185a0271e6b768ce3407f962d15b GIT binary patch literal 168416 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

nc~ojVk%p@sxeRTSChOa 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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/attach.wav b/NotchBuddy/Resources/sounds/attach.wav new file mode 100644 index 0000000000000000000000000000000000000000..33cc68aa55c9b195f03d0313659c4b8071d98e2d GIT binary patch literal 173492 zcmeEuWp^A)vTaosHFrw}nVFdxWoBk(W@bj28D(ZTW@ct)X11EUi?Zr%oteAV{R!{G zRW8rSavx=7W@N;U9XqONoticGZX-;qsx52u956hKhhZ3&A;U_(mm&;@A^fkw!(%0n5VT=$)7~d!VT){~GO!8-wpYea@PySuWGuSbl{~a#oKO_0?j{goDW5cJUf1fXT z{mK7*@>-IAck+Be3?D|)f5%_*KO_0?UX0{_PkxHzxs#tgc|FN{MjDK? z80j#QzfbWpG)44Rz)x8@u31jY)CG3IEq zv)Re4XVx_E{+0E=>?lSk7pUf}D zz_74Z)`Fok8uOX?#9Uy`Gt2NSotTbz+8oRe^Simz++p@Hdz*#Kf~IOH#slNNalrV; zNHo?PYcY0WTrsX1Uc+bPGIN`K&3@)FJgbBgYmeV^kU7i{mS^j+4cIyCT=qD7f_=(9 zV?SU##W>C$W2doG*-C5$_6PF~J1`YimzvpOZZ%7o#muY5WuueP!H^8WxI{0~WppW> zh%p^w8{JMn($BQCQP$XMY&UXX{==BP9?tVCRymHH#7e|QrjY66EBQeRa)r4TTuZJE z*On{CmF2=DNam5bgu{hu&9-1SFl(9j=4&&HncnPY^fazwzS6V=y{TW*C+Oq!R(cEk zX{ArpC+T-lfBHQWL<0vJo9pMzWEIMo5RRx%%qbjp}M|7U!!-{+v~OU zntB_(wZ2GStpC=N^j@?-Ww9#Da!;Ho!QMEVVjV)S3N`+#2o# zcLp;b=MuQNSam7x3OP@Tk^E#fJDI)9T*gV6W=*r4IoFtIyr)lS9jxnteqA4{57X=F zHS~DBvfdSAr@mW{p{eLvx|von>KIXjn5STA6PUS71-1_BWi@s_SxsWN^xOz;0@izq zyUE?b+{ds3qq($PN^S*NNMwAn23wAu#*AXlnFmeXNHXG$lEzxPfVwD0H|Z<&mU<(- zq+UcXub0*P>izYL`c=Igtx6x#S9G$GU{o<1m?C`0UFJ2Dz^-P?l3L_Gc};3#&57K0 z%=(CX$UWiqV&A)P9XLPvO*)fSg$!oLhOJDPiqbw-r_psi_L`dq)QkJ1O| z74=ejUOk6i31gx@MgOAz()-cj)M=!Jtv@mn%r#~UrYDnuEyzA+zq6CECI^=eE1bri z=WcNCxG&se?kTsPTgO%9Dsq>}8Iqf1B*WNV>_KKT^Amm{lj$@&8V!tp=mwgO+UXX3 zh29u@okP!{XV)|7b#UUV^wqkP#?mcxFKvQ55MySBb^bQDF~^v`?07Z{PVqc>K&o<0 zxQ*OC?m737`^x>{Zgcm!*%+DdOiM@t`N_U#3$U5l?o112r8(2QZ=5w!8m!Tuwx#d& z`}zpICw4lAo&5lveB>`_LzhfehTc!pv6VEv>1SszMA(JV$@;}dLSpLy0C&&+3Pv+Y=(q#?V>IZ}eF zjosakz5dI|9M6Bp+5e4 zGft~>dRVjQR4c6))feguu-_i+_7U3E7-;0jozP7ubBlS;EM|AGbznii2+Q^7rr?xc zaVlryS>DON{u2-YA=x-XNdvK@6m~+hrOlKw&TY~+9d$o-0CAqoE+-j`x zE2nT0pN2O$JAVf@J_M)WCqB}c)FsQ{Wp6MinGoV}R?}{_GAbL1bOu1tH+{0+ThFC? z^r-e(3*t{2JVhV9oBjzqK7mf5#f%DuW>^v9KAM}E6U;z%7F!Va>KXBqF5Eco8g`rI zurCQS z7v|IQ1$Zx~V;?qPw=;56VTZTav#f!bmIpYc38Ka%M2zz^k*200%+XKJty}d!+C%NN zb`^X6O{(B;Np}cY4cxWs`JRb;Ksm^wX?=B1r`be5$UoYb>+xfg0@&C^K z4o@9x#L^Q5U6uZ;qR)fi42(P#QW+@exCuYcB_Yp1d5a~je8 zT6?{j{#JjjCr7aIMs351Q~GHV<|^}rS&dbvJx23VmafzX>3MLUK4@pP%i4DB8Rkx< z3-DzlVBb#c_BA@wSYdQR+^B>oofhZzopq7T zM*PUZ<>e+}zt6FU5UZa6)%bu49A;~ysIipxrQh_^h*ZUN6?=VIOVmzjYqa;;HLaMQ zRo@32sEf!V7*68}?&2ZymbsKU#0+AW!gqHie@GlR3BKCPrQ=KR9r$|uAigB#4scd} zI=7TdB4JXNlp+JzF6?5Urvv6P^MSD+Fy;lkR9dXSIMXqZ{v^m;lZ7goN@x+pI^$?=Lf={rQ_!UGyH-- z$wzXLW{A`SnU>5fvzNKem|#3W?DrsQ42Iv1;FNc2qqTWj7i~TM|BZHDtEHEKbwARV z(&e<5G0doEb}@?sfu>`tvQah%;+2o|hUfmvWx;Nb;fL{?_@Vr2zA9G#fs1mju;07j z;oq`P{=L&FnW&lH!3~6T58+0shX_4(?;pN^mMrO z@8}nL!nkE@06Lk?>|+Ka2Gt`IiH)nm?c_dinfaF3?L>Yyf1Dq|uY*^q&!0ie%*y5C zx|1$sK5*l9#G8}A+xHOry!0&1L;cw8n(*3}aK`;{%C)s=S}X0OwnEE@TfRq6)H~4j zw182{@R+#}H!?6km>BjBOWAegF?`89?lYGOc0HY+!Jp#i@u&Ij*moD7AN#$Qdk=&f z2h5m!ryDWFn9jiUV~o1SCfbjF)OYAraDQ)T^R-Esw~tmDbGOm%YJ0WndLcy17y1^u zl}-dM>T6Cl+cT4x`s`>nKj{e1ofp6T8D?(759jysYxxKK0{#r&2rK{08C*lIBe#mI zBUj-=-yzcdMczb>r$(Idoz|dkx(Ile({IAQdTPD3V))-uSn)v3r#;d}=w0;eKrdbz zppOx$uOcTq#k^y7;_Rm3&Qyb^e9NWAeM-Oy-{<%8?=bfX_?6E5d7zavTu!bDFv1|< z<%vumCc*4)t}{j$XMqDl`UPNvR5<6Q+DNU6)cW-{bpj@Zn|n*+6EG$y=a)lZ|8T zY&PV!1>nc38flCkv=p$|U_^|^u&^##Gt3*W#cDmY3h?4`-(Zh6=vB{W+ zjBggRm6^nDWxE0g<_Fe%gjm&tpT%$GU+|at5axb^`?ZJ58=nY($oLmt5!gN*R{o%uLxF4v~rqL8>-dUUTJ5vLGZ5mX?7|h#wdmeroqVs znUuf>PQKHDB~qq7-r z_5t#qLYo1XOxNA|E6m(ZtFC#p0-CPY(9+@W1A$S3+Cku!(R3(nXLK=Im_5wq%pj%_ zJB+P_EGCw#25g{lO>v|4@t^tUyiIt(Q+^rjJQrV`U%+kR?gB+5vA@|U@-i8Aq8qOa zyYZ3cry5X6as7d|TI;SA(sF45HM8bZ8*90>f3$^K1?+c7|DoTax9Caana6=njxx`f zf7qAoYI2iw@wVoW#$NT zwK3S(L&qXUZ^Ul@!l`!Fs%dsDz4l$rtto16ocIgG&JlVKy)5#-3`TY%m6^v(1J)pp zt&B)n5$HA>cKZt#&yVN#^WXWOd?w*HpH4W-e?jyb%irYQaCR=1D@gL^fwZd8^?T0F9&(u7cp-zNP;}JU!!-LPFv*~EyqS59;b1but z83P;ZgS%Q88D)qo#81MSpYv`(=L-veG51cKbz#Jz%nc<2$pm%)JDh3F^f9ZOy^V6l zD4^d>IBCCjOdFsT*HUXA)S!9^>wcp)fvrD8#2yRWQj6B6C6lv3su85T**lJ`1 z;#GU@6PE!#Y(H*O3L#dgA$Wv}!ec(lcf}c80yc^g6&}<|(tvM>WrC*7{AgH==QIP5 zNfTrld$hs-t~sQhQ-7)_)s)&_br|9Y2V8naKc=st8|gCe2#Lx34)d5f#C~KqlNY#G zhq;1$AN~mM<*hy#zy$= zv-&hdtIOID+-8^dM18OBR==qy)NDBG)$r!k5Y61kdQ~7J!$@sfz&WL0tFS3a9b%HQ z*ljyM7;FB(XB09Ct%Te{8$so>2`lh4lymdt5!2d`CZs)Ei>(jFs=VnjOB%$eLPgpe z=m5KlXrZWI)LrT=b%pv1Yme8mXm@Z9ll75$JKB-9FnSnW%n9ZoW(6|=erY^8OxodI zrQuugdvMMUp*B`KP{=E^7QW$c1A$X6aSu2zqKm->*$DEZPv!;qv8~2Ey87REm0EuR zG*Vg@$0mB#{-!6uGMS8L`+`HL!PEwOQ5;lzQ5pt6WYyNd=+sE^fIxaqaQ;1s3BXj$Ys4Z$S#1kX8%J;=@?7s)8(6xD!+-t$?7n!*fW zgz%5hU)X>%Zz>$%@A3p$Pd1?7%p?VIutCO)oZ*475xLzgdL6kVqLNk*d;1V;o~Jfe zr>G6oqiTYhOOv#l+Hq}_zEq!2SJ2hqD-W8F&HLcTezKWiwS~BsK>JJir|_EXVA;Ec z>B1?jet}>Y3JPQRh5RuvIX4NIGVn#)nOV$Cu&X_g=d_~fX&+=)o3xIaO}maW?xv1V z%d4~0may(!Y9n|U0e0{mG3ytVDGxR=FVh5mY#iGjalb9FbwS+d2YgC+uvu93MPa6J zT4*SY5#I9#UmE_q6EH$|aCnW`(ri)i{~q&$5u_)9Ko9CE_4`_Tc+aO;^9;47I!G<8 zE>U}^A)NetZH(4bucud{HEAQGyD`#SZLVREIe>4wPDF4sCO3n>jWu_Ig&h~x3QvWp z!Xd15ItfgQofA1iyzDn*q?f^MZ-yUBK%P7w9K|vCPbcp4Dy+4unoI4cmQiYpR(-p^gC3{nj5o#yu-zzoDT+KgHKO8Othu4ESXd)G7j_D7h0(%h z`0#?laA4xy+-~j=*-8?@1&_miH3kQp2mC=C?o}RSvYoKz8|qZtsDe1@IJFP<{Jgpz zIH3Y^+ZdgL4|N*3jUr}ivlBS%IqY?IJ^6%q^^WTa1Zag#jTX)d`-NY^cHsqfV7l;y z*MJ7A@NK~vHY4RpVQ}Fl>IsjH<;F4aM28Ts9&0nTtcZ{6)D~(Z)vZ=nUFv9j_Y z*N*C!^oz)Lz8SHm2Y9YBJB95@4v;~};2Qz|5TOyy_m*%;V8yF~3hO>9q!o$^{g8Dn zgb!Up#*pFQjWst@Ypar4Ox2X;YCiQaPQHm&6ZvHx zJv}V~zNnSa*<4~SVeT`hS(ZE{S>dHJVdg)4RUrYl>JKc;DV`O6z?;kv-r?t&`HXxC zaN_w8r#bcs^B6X|-RNe34WW~P0~58T@YIR0t-P4gujIkpebu_~WjF(Etu_Ytega)X z6O9|j&E%>MY^(?w1>RyFSA-wONBBzc+LwjLnD?uYQamQSgdgoFY~^?H_mC4jAScK% zb`d)ZTxfGMjhWZ@2Ftk)?0X%aG6aiit5#51HI4dBDWcldx!CV)T3YQ7*o0T$-G5QL z5ogvg>oe2f$Ih`kfdmgCZ=J_K{oljw$rIU6;XY!lv6X|CmZ0uTZ5Yf15aDho`@T3 z!2vvBtgOkFBWX~}NDao|C!ZVEd{%fT#E4NLtN2Lp3&Y@5-teEm)j9Z#oQ*S4Z@J5C zVOE(v&2C0MqY|nMrFBJXtfkO4slCKpj)L~WC{RNt&`rCghzqQ$k;N=dG>D)zbI8b0&%yeD|3W8Wnw21k|Td?!yLTBvvR$zpq+!3;t%w>B5 zn`CCJ<`d&F@WDyM!5fItEc|DG_^(vzcSTd4E16VYod$23L(8s(HAWBWHkt<5u>q=D zGr?(|XBGB0SWrK(?+u>A%)5kdLMkzxSVa`XEaEQVq>xU?D6~Sx(*ZniJjq64!Bjm& zj<&>TYxJRoXlwA>y|secKe)xkvEskV73I5fQ^|)D->2?SyJ>y3dU{8_Jsn5q8ApwW zsFtQc^{OtJN&134=mfqXEAH<;;e#NGMKNoFAE4`!!b)&Y|0M)R$ z@MEWlMs9Ns?6#Nh1)up#$SCF$n~S-`8saP5u}0YOrTkoeGdG``OL~*Gs7s_`KA3ln z#l{+N{8PYz&DLsZXMjoasR8A!vR`?s98e_Ht4u0~UI;m`=7F%VabkM0wzyxoEfB#iWQ7k+$(g9@Tmd#gy%=~bgYkqWA)oyY z9O%$asT~ljeq+rSl&Q)?WuuZ+HI)joRLnX-l*B^fR7CB|U=(fu7i}W5P+KX>ro*Zq8HeVu`I z9R(iBtUkngXDR2DX^L05q;!UTOTeaIQSS)rR+~}x$p%4K=s4g@{o>c*L2rK!_UV}Pe4C*QcjMw11*Xtj_KKhZ*RYi=v zp^U(-s)t$oDq-BPx!8-2;3m7HlD8Nf*~{b#2h)S;kJ`q5Vgc?h%Rk~v2+M_#kXxK2 z4i_(pBgNxlVX>3A8+P{x5j+eo{sB2i64*9uIj}{)jMc_2V9*JAI(-zlxUFhscT&R7clGZ&XA}cZwZhyFokN6eil~vmRR%{<5Hr6Ks=%(d zio?W$9CH6!9^9BNwSXeTpg_zC53wb8}(n0XBd)sbc;xlIR?I6rA%W#H-WrC9zoZZl#7Y zQz?ua-BwZIS=OqP)p78lQ&3CYOJ7jcs9-i@b}*Y+0Tx>yh<`Y*@PmL33gbTS5od~D z#988F_>{5mC-;SC$iAMV*03LUx-Y84aai?v)S8D;fmQ|kS{3(dJUsVz*!DuDpfVZj zKBx>+3aA1w*>m+R>S-2Kof@G2v>JZw15*hs|00sif{x;SdaSSkVB69o$_|O(4I}zA(%yw`-^^DJ`U@g$!gK7Q@6qsJ!sU#{Tls<}68L1Rd zE-Uku+K6HfFbi?;p)FCj+++MTEKtpKVXv`=NDl5N*OgD=`v}K`LSkj{fVfBuiHTxB z>@IGGKe328gknNLJ{zxt+u08evpF-<9)oo+N37fq#=@^C%6R28?$tG=x8hQ- zDzjmERbU52z}{7+-Dz)Qhp`1(vad`N=m6G%YroCa00vDj>;USlD5e#ciWS7|zzAc+ z2ZBv3f&8Z{-;M8yifs+zBrf(ebI0sz&N6I919};C|HZ)kE0JG)RNg7=Vc)UJC?&me z3};;$u|!e5su#?pK+Djo@cFBOy;Wu;+XjryCh!MW`F6-IYQeTc;&-vLlu8;S`Nay- zByqoZ88&bUeARp?G4hZPY$8*ENoQ_BZ6h5m3dHXN=JsRGg32a&w_HFTEQ|6&xuWb= zUdlfay_{M~t%p8W|BT2n7OJW^)VL2o0Z^2`z)!%9nk8nCYD>?gtx`@)qU5mDk`kp2 z;v3+TN5TT|?j^W5ZXY|8wKK=e0jL;$1z$1~@u;Wz2-YOaL>VSOl^a7!mmrT;(kjK( zBqblvX*+PV2k8}>0d_ePeBg7oB7})!;kRe;7y0Jkhu#XSg#7SZCE%}BV9%+-1aPpY zP~Cb56!8m~`ww%437Gq!_Sg>wPa~Zd;n!9@s+m4vwg! zwzGqCiPP!K;f&h7_F^`N?V2=AdIX+$JZocRI)YABgG%Y>mPq5!*`N>@;~(VndH?ao zdw+VDdeivd_^Jf61~W%8MyBGnm!bn{3|9DvFDF#CoU|0RpRkW{T3ku4iSFrcx2L50 zm|Jj-bfs_%a!j&bv5pb9h=sWF+*Rm2MuYzwuas2u$ofcZcw^{kuz9dq@J3)oPzo*& zSwdwaN5UQCZ_yXX>!5g``B7ioO_q|EU|5%lC&UX9W9etPYDutYmh_gjmh93$(p90g zSP-_>6+B%6c*^%ieRBlr5qWDp!Lja#w0LSi&=#k zOFpqVxTVM+zCx4r63BKCY-2Ct>JDazIn-o~Y{m-xsooqFj}Gbs-1d6vcBL$`(A8iW zdcn`_(67@v#&xp<^P7z)8TrlMoi$tg7! zF7g{mEZJ-3G!s$f*sPRQK1CKp)`U8Teh2OZLVmyhw*QO2Z(x1kSujh8!MQ(@t13Bx zA@7(CnOWeS(@LwP7Pi|qi*v9u#@)+Z%QM?E$+OFI+5Oa=-<894!M@SH%QDmwC*0zT zun(Dn^n%`0c`d&WcMCJYX@Qr%F22RytlmoAH%afj3%ou3`TUoHiNPz8lacaj9hHT? z=QW#-j29jX$1EAFL+oGeqn%;repeB5zZD~7|Iap5&9O4hK7VPMOKDyM{7qvB5D-J{hDu-HlE_%c*$LI z1h*u$SU?PlxunX{JSj#RAq^70i9LnizK$D?9s|g)R zUwsH_QE&9e&}{vM{xLms#H81$XR@&Qz|U*}Z}M4k zT25MTSRHo5cGJGW{>HxAUeW&9_Rc!Q`dDf$6&LpNg~@g{$>?RQ1V`3K4n`M+3xwl? z!N5NM2>&nNJsBtuw7+z=aP4%b z_N?%DJsUh9Jy+d-+_IB*wYS%^XSYP8!F(Qm2)Lplx}hDE3(0N6_d>e@=>ivgC448n zCA~Yn#l16qIeg^;KL5th(9o{v>S#99b}pcf)P`&#cM$`hSn679+V4Q@yvUj4oZ?F3 z+U4rw^f`U@UXG{MGPYXMBB?9**Us!9b{zQai`p`+kCIhc7A+BN6ZsZC6D}XV5v~-T z5($UTMN39ID(~ew+Do-Nwa}TU1CIfpm6eMD>Y2><78U|=Wd#>gS{wymy&3%DcyKk@ z@hm5ql5A&S;@Z$DO#p7vpuW1Rvos3D#sX+er$GO;%^U~Lcrg=TH?y%|CmDV@w;uKS zPsl~~fjKm}h2Z4JlTmC&_73XqL3)O!(IZ-WaNwV0uY5ZCF`6>kG%7{gMHfWF(d}{u zr6wvNJ)z+IV+=9(phDjteutBKNzJWWtR?OJ?b93^9BG|#&hL(Ej-U2D_WZU-)+bUo z={Mht-^jYzBF0L37%Wl$=!?jl5ECjDxai;EtLr1a%ih|){JxR?@%{7Fr*q78Po|h1?zirZ&O^?(xa+f|#?m<` z_^z2v%{N*jt%STH>IioaEf4(i|Mpe)rSy&Q=J##&mhs>AiNOP&u8pPW`Em(T^IfjRDZ_M8S(xfPSDj zDnbXrXzDzmuI(v3;hcPp^Qq%A)y`+({kaJ&>mdvNj?jo2wk6p?1zGTn^E1EikjUJa0tug zv2x02s%VNxvB<9Q*YK-w(a4raY&503T+WKz?=TckyUZ%gF~sPDu)*P$pO%NVLiSyb zUyip<)7ik)$o0*6&AGwR(J{@I!**CICk^C3a-W%6Og=gTaqNX$AhIyrHh4Qw(0|DH z-8&Orw7%El^LmH+hx-o%p9R-NzC>bx7!_2NEWm+^utr>Kjkj%e)OG%G&2hK!eDl2U zG>+-*x#Ed)H*@p zzsy%LaND0gbSbzs(mS#j8Ng5dk6xB($BY8E*BaRRuqB&yijB4Juorhw`vS)TduGR6 zTPl0lGTiz>Y$z=PJDG!YCuhvh<{0RuhNJHMMLD7Tl(zzPq=MyGWl5PYGwKATxpr55 z4?c97!5gWWt>$<(9lH&h-F{pNRMXFa>3IviR04Mn+Pk}KYO;|rnf~ZEXl^_<8siSH z1%rj01*+YP`hGnJ9RqHB6Ljfmq3b`w-ev12YeS*?QBmvpBF+|@OCQC$(pB-gSW-MG zWEP6xeitL_*@ ziBw_MnjQ50+FJQ?srCd0UcVk@bL?VU|@9&x5}pK&+BIj_TAj=DQ~I=gndtd7DCmo>(^4a~3vbx#B1 zFFlBQ&8X3s|ODIHw3c<*N4l5Gs{n-Ixt9x{-hyv2t0wh zqL#Q^tY+C`IbFyTbyxK>4DS%%ySuNt_jVh+#gbs)5tBd4;8;u z$We;0AI!|m4udm?K%+fOH}o@FE4`(rqH1rT0y0#;r}v~ejNPd3Wroh{5?dYGh*aR* z4~T2U57KsNqotbVv!$11s^zydO1dk467maQx%}KL_5t$?HRE#nHf@oTTFD0-Q8=uH zt_Dv8J;4IO*kH@xmte!tm@pSP7;Pa>R!eCQ=whQ8?Ct@dAY`-Lv!t=_wND0K$>kpH z*4#NgAKjnaH(i@t_Z^cRMQ!J;0kNxCf}2konk$X|V4P2*HE2rce$el4?9c35=`G^D zo>an{l$68A`*c4SSRc9-dJ@eg&%yc@nrWFSP^uM^-bf>C+3lH}H=T@oqnq_C@?`g{ z@l#yIAW zIh74C?a2eyfDWe)_Z$`eb6`4aku9i+4q1+>5=EiqD`7$>0?Q>_OMp8eXwS=ZMC+xUI0?5EeT>> zVGH+(e1Xp2PvfZ%^*g&fKRPE|B)mM>E!Zy5Eb!Scz}pQDGzgv#)(gK2hoYP1G}=pT zIjUM!z=u8&mWw5}3A@Z3{{;R$--pXF9cVALNZ=83EZ?JC>PNG|QUHB5Pz*Ie|_dwT1 ze*QYYU8-w2Xlrdx={)M(=Zbd^cSqd~+$Y`jT^n3e948zOTP~YNvP-9-e6Gj183Vl- zqMC?v7O^HNTqSfOcqo`B_%+xu_&C%eG%%utr^=b-@2D6Kg)YL2zNHGJIH>{c<7d>y z1gVy^TOyVlQgKU1>6J82BvKLKoUos(!aJa?=z|`KAXwT1$UtxFxY5AByq*TxRb}0e z?DZj?NuL8F>EOr;vCEl)WIFqa6hVD^2bsn_10S&sERY31jbqCr1Abu~G1@|F@yI8_5LdB^E+mtRr6Di4KouiX07R3GWVhLxVyi!v4_gh!DvjCq~n% zJCv4CLu@b_8CRG&%t3Ix4fz`UOmN6m!RgLGgljGSBOVnpi^upv!Vsv({OlMqkclu3 zXv@CR4n`~;kND|Fx6w=R4;i5H-A$+Ae3zq^bAuVj_|Us$qPO8S6zHw^3()!?oe=4DNJp+nG7F_&G*{-1hO;8ic^p{guLTS|(Ko|4)mPcy)&Dn8A~-4hEqq)qtJH%!HWRcA7VuBE zrID6`_WSln&Tg(v?hKxPJdT)K9x*29c6j1lWn3rh^X&62RV`nk9`vKGVn7F4S=k|f z4A%;02+j(m@z3|k-bvp3-hSTEzCu2~|FXYfsA8ygv_*6i)K%r6kABORBprln!aziw zpSJGyEsjjisZIr!73b0&ot%s8pY7|cZ>`0oj?yr2f!okm@)h`{9(0aT)JoE0r#?rP zMOsA|a4|8FEYS;*+VYR+d8M1ORI8*dfq$QDRxxX#YwQU)awo5HKcL-dikfSA)Fp30 z`>29rzeh4~qk;PipuaG!Io&J)-OP0ALkG%YnhTuiPJ0!?Hh>WPn(RZ3I2tegkA+1SXg zNZ-hrh!z2)|Y^^w3pxTWeMI3Obyoy zkAp4W)NX0%q5mI^8u)tDUR#2nnrovr6`9ULM=ED0$5+QhVycR zxCP8PCZkcp_zK=42KC72@)p@CUyfdic8{i)_eQ<)2;>YKm5orL#)C&ujY-B@^ul_e z6t2OkgmSlVs#%~HkKwnXE9Ey7k$+J!yvLMd=Rq~t+W2Dhq8fdIPPJ9YaklA&pcGz< zmfJ4SxphPT)Kt*Otvlg=f^@goNyg0`a zV~yIn+TS{IJF~iKy5_iMyPU{$?mDJ9p4j@@GFnzipP-wpgPCU2m--*2qB1%1Dm*dx zJy0Dn^OJX?w~sfc_oer^H=94Zzh`i6uxDgXB!tS=ciO|a#dg5nR}za_pIfszt~+|T zIQM6G?YX$ibv^q%Y201hrX!y-&X&!#UtBF}U9TtKijE8a4s{G(4SYvz zsNvu3TjRI-F9oUuW`yEG&mvPIdz2x{TjUUVvH#V$p4@jKkC@Ri#`45k%XSOC+X>$5 zo~^e%Y+YmYiShc%4UulV|#VffQa=8bnSG`v2 zt8w}yZ5lMG)aYu|W6-0(iqJ9_AceWt&|T($a;O|moa1tk1|)>e%KK(9=DJbM+>4H( zgL-|M4m{BtZM^ORFL)j~<^h@)s=h|%80IV!1J>z0v>9EXn%pDy6~{>#q<2zx=_%rU zS!pe5xt)a${86qsIm~`G8=2*x#@Mb_RBOs=v{ocTKnQiS`l_e zW=B)WPIa&9q9z`M`C*>4YJ4W)|K zjc$N4xHsyw{gCIi5PyiLt*va+9GRV)U1i-5-0eKEo&?V*_bYeAS=n{puG=|ltaXpD zUWg-q**Qivqpeno6j#WmgN@7KFi+T zdD$6qRYa!w#l7CW#l71#-}S+<$uZCtYa1X%#D`oh&JP`~TOX{|khevHp*Ep%U?8jd zu6t`Bmo4i3m6Y0-8JEq5Ugm_+-k|0J zGc~)4v5?8^OHv;>&S}zwyG4GI0VFdyg1)hvP~+?}CqU;`6jpmCy7F)dShjocH&RWlM zM4Bu<76f!T5Q&4oiqF}c)QNB4oDMTJ)2ip5b>?!s%y58%8 zzZ(Mo9}$a7qSQj#C)%aE;Nhn7VLl3_O=om(2hDEqt%c32G_#?D1D+3$ngAUu)Vumr z=<_-ng^UHz`&~pY!dK|Te~|uUEEHa6xRR)vS3@QDBa~rrqy;oUzwoYvzSx_4h#k#Q zzs{i6Q_G-|x=hyOzVbKuw>(PWRaES?^m=#XyBp0y(7#L~Q~4kKT`{e6+VaCv*;dz9 z$)3x8#6H$Oz@Eb1)s|$vX{l_PidcOR`hbae8$?=)_YWwQl(&)Yk)fd!p{ekvjr@iE zjGy>t`*-^Tz`yCkqryL;?d5nVp#$hVJOB=|o#+#9T3h0d*`3o+O}p++?YfC@T^5+TuGMJ`2)4U9}=M{9_rO<1351NvHU?UOBy zbEs2tH+ARrbn)~?%sc~sn$8vLT4$eNAAvka6fW??@m_$xt%QBIJ-cI_ zqmAQ{bIx@I5(Z$g;(Y?`} z(Wbz{BbD#+O|_ERM1QE|gaZ4$Im2v?PWr=SKG}?((X{BcDT8iNlWWNj1RK1O-C`a>`y;Y25Ou`#%;V$Bqe(XHsfPwLJzwVnyxPB zDETB*gL<_kBB_o})Qo&V?mQWcdQJ!AIeBPGS_Jy?_R#O`jz*&sBi|w)!<`~8!aY$T z&ma93od{h>HuaPiulIoFy%M{Lt%Sb6d{Rs4EO5h1)VYc{MN~fqIJY|MI3GE>IWpTf z+wNKFSRSCWq!oF@?lp=SX`w4R6YUzk7@8QG3|`9W5Br+>TKUHKmiwmokNBGf*97l` zb4I?(^_2u&*W=L(9N>EKt0kM|f-R3dk8`@y>2B-J=jq`|>#5?&>MrJP;H>RDZ`*1+ zAWf3ud7V4Y^ky;v>m5UlHc?Iu;yd9Vj7Q5f3*F zeQGt0szx`xs{R(8D3_p>s;WGZYbiJ7ZAv<&v3gFar=3(M=mE_SUBEJQ_XeR$&ImPQ zD!kljG_-&N@YWJ1P;eXcX0K;s$UdehI|VuF1a#IOq1BDQ`Y_rV8i{J?k=v^K^lr%g z`XKlIU_LXa;T;h%=r(MNZnW7#8X-Zni@mK&P}Fi7T=Po% zQ0E6H?{4Ql@1|gX&$@fM2DpYgIynAVPg%c0H#iqn=l6I6Pec8dR!=!Ee~z?_ybrYw z^$7k%#lK4+ZSZoy8oC`E8*Ux$AMF`^qXd*asAuoRyPP&c*^(XFIIA>E8f!5vy{vz& zudHosN3D5mk1VCFU8Td)QsJI(5|x+->?`&e-Y=BPFrZo*g+7HM+A;X%-fBcS4DDfe z?VH*X>XOk=axKK$Y}SIW*p7DrEnz#Of3Y#%O!JMrLO=gV5S^U6>%Hm)e8h zUv0@~DQh_)4VIF`Sk&)|p=-*C?)m-b-9Z<=-V9nv4tY-MNS?^5(AChDpgpuMs08bT zPKK_8YeZf|d&m``xbW(eXiC^|PxzQbFr^EvAFR*pF2@AtYA{EgT#H=&T>)?xoxlrL zL6)#iij_vAdp#Cx_GZe^qUsVQ9O)7%A37Dx7C7a<;v4O&=u6={;M?U(87LNL6j~Ze z7o8f-4Tb+qn#U-D4&IM^qL2d^@4IcIopbJW)^WXb{dRS9Z$zA);N0RoYd>x8WG!Kx z1Epwb;LFp{{7%rXX;YO`@{5Qyayb+UP7PiNWCQCtH25Jf1-KvsJXJn9R(^<%!?WN9 z#xWnEff&cNgQj-0RKjw_GSAw@TEI5QTFiFFGSE60{^Tkc!*jrC7g!(r2wJOGc&9`G zDAyTnIr>mODMO%{Vzg%JPxSWXq@(nWuz_^w+#bnN<`Ldi@SWSiO+mlIY;ao^yfq^o zIKo@#xhlydGD8h0Inkm24i>Uj$*k^|^DBkrO>%enn%oPDU7}UilJwNHEi`d>#TnU- z4lP!CEe0)TEfZ{IZPo1|TU)${?5wSwZJ<@MPLLu0p_SpY;gb%f zW|?oRYY#h?ICr`-yH~hBAh$Z|-s@W8I^gKx_+agA?JwRD%8@bbcBm6FDy8I`;I%U% ztJ;|K;&1)GTmBUIyX())q+&^_`~lyk(Bn`;XpaXN?~NoV=N-^SRdCu|T|MPv`o&gD z@gjChij^@9W4*2fw`?11*M<7xG-ex<1$CS5k)n}}fw}?7x5RrtscO;$@7tt{{xtsl z;c21A&|g-9er+e-y|Ua|+`7uy%vsvw^i+r`7_$X@%Q)019-*#Jpd>zqcehkUm;R@4 z?MM!Pf`7+fN7Clsirt1-{0_MGr*F2e;or!g>c6AE*8b}F zYvAvizd!$d@^_Vgt6vLejS%#27hq;E+o32QVDVc9+D-dFC+EuOI_OGprg61*ym54b z*5LzcAC;lXolaJgoOnagIK0!U8*u0oyw@OtcXv#oAM~=ue0m0*>RHU8#t3w{HZw06 z^NkpzH?>j`+M;pD`HMjtD#4XswN;iDi1B0ut3nC-BI=8j3^of4_ijo`{kP*E z>CcegZU1q)UZrb%pm z_f7YHdrn6uRC?-zZ3ux2F9_aacqmn9pTD?2y>Fhkq3^IaCm7Ef;RB&jN;BV!fBcRA zJ^Xi%UmJeK|DN&xI6B8LInuX_x2vkV+8ShH+fF97ZDV6=V@zz@wl}tIYcgu1y3p?T z{NFG8VfWfxlj-WG?&m(|{EoATXPjp%<6`OrHwKSEzwLn3-6QNp%jiewtC=_PX|_w#>XkwxPE3 z_{4jACU~j@CI?;yYlODJRWHDmvy<#h4W~HNA<+H=}M>gDQzaK{;l z^29^j6%HXUd@nW$dz*oHXH^V04j&7phc}1L!LNS-p3i&GxSrx3`2sUcD`evGC!RvN znu94J4sVbmwg9>5QQ-&SU!h)5T^fbi(9!U(@S(`g=;)XM%tOEUs-!fsL9PCO|KCTI zMVC?=G$l0uXj*7isjI91QTxu1nqC_QQdKEFI^h6$StafDv9hs zZUh(UPyAkd0P!^z%fDiz}&by6bS5QGB`C?CUifzHda420lUJIgoG%l(yMA~ z>R?w+>bmHL>6&VLXjj39G>cqL_Lq*3E{&~B5-M?%*SM+G|GFMjj$}n4CBt*NI*yZevG&T66>S%XZLACMLds7_<^e z$934h6^pzOjs01Ho43XCy)jic8)ehBPM8mMXH|CadhjE+j&lb# z2DSw%2d1zxwl5EdN+=L)9Qzr)BlQxeV!1PO=Hv+3pL1vCR(B{JUQfickbTO|4h!KuqUPdDiupthI#oSF*F#^ym~5J3 z>Siut`fjRXxNA^rM`%e^Y1MJ~QpzC_eov|n&RMX*2>?8SEA*0J62K2C@F zcr08yTn7ofDT#K8+Q?MTm+VFcyrlFFG=2qmKXy?&@fvumE5*0Riz0JTHo7eOFp>l{8hX?yfXuXJ%j!DdT=q%;nMJDj})xJN$3hZc5F95 z?p%U9as!ehwy3(Rj;klDTi~sC7z*Tb)hX2+atP@JXW&cxQT#MAL$BE9>}cOapWa=} z-O4%Ene1%q9Ot^^8smN7O~L%cgocO5!w1ld_({;3m73$m{H7n)I!U8bPNm3G3#1N9 z?wWknJj1+4S54PL`Iu55$uSS7YI}BiAk(dKCu}ur1#>6nc(VV=UX)WIr?IWLZIkPQ zs|Yijc^vE(I+GY7N>`*14WZSP(i;sOO%=>9&Fd_u%xx@gV;>W*E3bb*KcqdxRiZFF zBP~D%x)4%@D)Y1Otk($K#r^d?&d6%)WoYeIUKx5H%)?m48 z8)$$%>L9o_e?b=wib{zKCz>ak#|Fk+kr?PgZ6hVYH4=k>*fBOd7KAPUI^*&0bZ$#yVw7T}%XLtY~w%oG~qEYILlxu4u( z&Vh4lez1S=X830KI=pBv;Srk;58GdPSH)SPGCbx+YCBngx=Yk1Maa6n#MwzA&s-9@ zl6{z=7KO%yngo-A#^7hc1;5?BSjPxTd4yyuEliuqJ4s;jD)Dj)4veN&xR z4OG@qZY3rY52X90eG}=4hoCaFfIqPeQ;_-W`Q~}+vboHzMlP?biu<59?tKub%r*)= z46Q(3$uD22s6~IEThx}5`WpJ1s$|t;D9nA~)+x(Z zkI1xa~;bWgWWJpGe|R(DoOpu?SCdHq{l+O;5zOpyO;UwujQZRs|_z= z8Rn4R%$^UV3o@Y~NCcVN5ig|Gw@_b5ZUFmG>7Odbl z+{f-dft_4>s1-I6Ged2`OrSxWY>#Z*ZsgaCf(m;Sj?eML4&nisL++u@Q0=JZ)F(W9 z*N_eC3wG&q(HM~_ekj%w`qFy5Q*Q8$d79tL1>onI%GcrF3YUa3m?;W?NEc4j6 zxsn5ktP(On8=#HaSqpo|{}*a|74H+T#QO{0Qxe;$8hkdF0Su!X#|pXM-Kl z5H!mFaoJc&5$PxB@)f5b+D!PfV%)cFD!iMUDs&V^BJ-FGx9J(|$=ZQr{6g9mc_cNG8380%<%9u=w{)aC zzhf6&9J%arU`+Q1YexqP(=KF3e}VA2JJvd;PF#q87tIpg2L}<`Ls=EYFZn>iNIW3^ zCFT+J2ptmr)1~#L9l);sh8%f=P~nh|%j7bdY^I5?pRcZWymyN?4>_6)zbi1FwF~ot z!RXFdreuZm3{I_2>WP{;2D!0>Wu--)R5$5?^@;VVd7C-Ikk4>QovfZkTvi+s-AS;a zaPVf}7L)1rxT@HD*{0?`%K0y+UXCsIRPI~*S9>GR3XdMz;p_0?$UX61$wG1_bx?Cy zTi00K)YDSe`p}w@RN4B-y20c()yB>_q4Xk*m)v^c#J>yiL5D zJ#p_)ZzblEe-3ooWueZY3)sh>K~8iC*adL)k;9Znm2KdOYOY$Ricw9J!-yk9f86)4 zf>j-cC+#p2#$PdaR_2;=8{x_=&$Z%O3L}KJ;ql?^vD-1f$P8a&Cs_w#Bq3K?l||^% zn8pjLf7AEqZmObqAJ!s0Ak&qGK6fBiJ9ZGeD}C^|5a71r&uh+>WqpCecn_9BE~x?X zVK?yMA_k_cO z1~bilCcqr`OYqwhGn<*}fhhYQ_fN2TXf?Kz6h9T|*js#u|97(SiSdm2jk&DF zXwjQ*nuZ&`=}T!wsb`bhh{}?xVq4@_Sm0Q8sBfCr?JVSs+xpvf$L;>&>F9Cz=K3mOchLx*?0n(Y;{gxXSYQ- zCsdAfi9Ct>_>Q<1cn{sd*YL)Ff{H!~)S=7DrQ@C>h3)?*KEx-oOvd_39{Jh|V z&_|@2>x#;YQ^6lt3|~S=^>6h=-80<{!)L<{<7Q)F;~hgc{Vm-z%~^Gr(opqf^`y0t zD%A&dLQi}aS(x#>j)4xn{isus8fJ0`5kG<%i_gr~uUmdZI{I zKqu4d^^0}$bPwQrzlQr!dD1~VgOU(NW^sGCYIqlPt?mIYQwEup@7@gWRqrHk3qKAi zmJ93_HVKm>^CKK)zST(Py^t4F^dp~;X5~8NG~DOLC?iT0bj(|1GwQRV8*u}ymAatD z$DrMA1uJd|G^QUo$L*klt^j3uGf2;Gz>+*6`kpus)xVc$U81mP9FqS}z@j@6+kl

Yn_wth}gQA{%U=zT9QDmhYzbsB3^L$MM0@(=pxA*0~kC zm@S@k<{e`at_jnkg<}KZEt*CusGo3J+|VZ(V#XS#m8OHHmBxj}G5Y5Ex7c&PC0CLw z!IoP8kOJ0Np?0(qQMm~m=gUb@fxV7B=lg*lir%(hwj?1E$=mPTiG&z;rqfAn5 zM&jzJx|3#z+NsV`4WZ9cMU}Up8ihe88;vulFBsmNkOS-w(!_1hF(-k(^#vZ(xu8GP ziw%qBi?;xSsbIVbeEvm1FkK3t-)*!LJcoziVI*I4OSo9%NoY~H0Vo{(LOsDMTMGs@ z8_kJ5j|-wJxc?QAi^-nkRVZsm;gK7qQ6ZrFcqTvpoUa7(@?%gJWQxs-Fm}DIwR^OJ zzL?>m;f`~gqaPP`@Rz>B>R{>@FA9-2lPnPxXVi0(}lqsoF(G620AeIvah zYmkUq%KXPXMQZ7a$At9Kf8Hwo!~S(F!G(jPLWg3?_(_oD9}_aNH$979guPKoqruq3 zlw>lPUK?Hd_4+ZbIN*TiR`@8LGOKI$d9 z;Qj8vqzLbIbZjghc@&)$=@}goX%k%#8HQ<8f+wMO+@6>&S`6Kb17)uzQI}XqHKf)d zyJ1yl&~u>-*QRHyG;o_WBbF-$AUj$!aXfw({H^M|lRL>QW_J3v!~5#%bvoO{1Pc-urNT*}Oe`31(ct zAj}rdMRd{L;$z|t#8P4)J%^sJTcBHOoNR1swwmLnbEYGP7KSR?2bw(iL*F2O_Y&OD zeem+nVue6s-wW?=*G!iayX7N}e;qfR7o2@O(>)uRx6D~V9V`T&>lsN?=^COYc}g{i zrnQf?$94Vn9^D3gL)|NQm>O!=)8A+np3PLbLOx7fSbQ*6B~}k9>%T%-;UNE+Tf(2> z1`Esht3ij*IlMI_0VQf7?%I>E%b`F-&P!;~408mnF!$kfe<`{P>Tes6O&Z7362@2# zbkK>h4l!5kV!S-KO*=#dBy}Zo;2+tg=&R^VdWbtzJ*t!PIufp1pj-_l-C!tPgSX_X zc!W5DCnOzw9*f}S=dxp1FT*e%Kf&zqKlBrUx`CbCSMGh#7-FJTVm{0O55bhXff?z# zN>E)?d$Ae31@*bKrYpUaZc0s|K11KrOKM08fc-xT_nxQxJ7h)YvrpmlD~wIlKU_Jk zjPQ#u1|Cx{?EA||ZisV11k6ueAjBnZD>>Y1EFXcMxOmn=oue0~GH*pko z@GjOh$Un#bKV5!k_}6$>*G~UbT~m{) z9HQ(8zR5UAAIZ>oq4=|Km#{84Rv3@ZxHQ*+m2>&odVCiyHP}EX5FQjtkDiSDjm?WK zfleI8om`A;(tjXd-IDZ^YQgTlE!ra94Fc~iq#-o$rAA}N;WB+5&%*g4gGaclxPw@R z%*$br7Sa@_@Jl}DqTJNr(cn=u6`aQo>i~52`|zrL#MwwI>nk^_o+BGEk6s8KLLQZ(q=-61 zDQQ>fef0GFiN>N&LSI73$fMrk4ss8;?c5W79p5`>3iidWdrhoDtg866Xb8L@ZHX+! zWvVkZUsVB<@fOu*csllxo5{Vnt6m0=Gz=fy$6)16G2NW3>MN_c*Qy@TPQirC(TSlb3+r8)RZutH%&GbFv$%k_4PHG>eAE;@;*3_ zFA9&(3C?mw9qO@xW|=4j-sQazr-DTAM=9z6vE$mA6NiW1D}~o zff%zB1c;{mOwJVSB7{R7LZ6Ue(t(~j4?eH|HHY++ZABvLAz1X8Q1ExlE#jNO9Wh`}6ai_x5qg=fi5H3Om{~i^o=I1OINe^cP0k}jI#Y31o+GO( z^WeEl1(_>5z9#-FawJkBqzTnRzSe|EPs-QFKNle-JX$CkS{`~DsS+I)e;VH=X2mJ; zG4dVQU^S(dQ(vhhWnXFol}ffC2P;-6(s2h#hz*jj=;o*kZbb?z$M%9wQ$HvUZV{Rb ztAZ7Sr@;el7yA}1iFSl)@G<3AoRJqIZxe;7cjR?yAvKt4Lp>!v5WT?%DFq*6C-|cJ zB4PK1?;|V<7}z(yzW#Y$nNRGS>9aEPn3G(bvx2F*5)Awdv@-Bkx6@slY0KOcY{Izs<+uf8&WYF+oX|AZzSU1N%r#ap&BQLagz3HMw7#j~DSY1B zs9b74s4Fy@T*`&BL$ml8SDc*@n8@t*U-v)p4QBfIlUXugR&c0#pBX zd|v!NG;w7~YD+$Xqc~8pOkR>`sptjQZ4m6g1K0ttlTy-e&=hxqi#`WCohzUnR|yRY zjlrzFi4XH%`4+-mp>nVb$VFdqem;qpOpF8Xvj~{%RTa||%ZP`>e0Y#k$R^}D#Y;s$ z`2Sv`Pv;7HoJL{R8U;pN4jLtHfb>-;oE0hs$oDbqVsSA*7A4*o=sa-gaQ_-oyuSq%i=>8wykD9O$YP)tdv!B4zj zeV4thm?HkW?9o7`VB?!d=7m*>`SEXH>%PaXejj|N!^jXhj;u$WMshF}{=)*YHuAW* zq;y(hl}HD+;_=9!s4YAwasm6Cx1h+@kGR6;!0vh-H^x=sDx!nZ8g(?O2!iBC5mKD|u`%wVcD|9e40#DIR z40^a%g;cyew!mVwR1j@5xS%JOH*A%Rn@xR52$NzvZzDIFM!6_ZeZJLRiR(e_=HJma0 zFfK7>8Zrzz-D&MB)dBsI+jl`7Z0suQ zI^f;soy~4xDX`fdz>irAenCGyOTACu*f7*&HP18GvrIKtwd6CsHjP3~Ckx!5h@vf# zAMgJ=;9^!5zVSx_sR7u*R-9<9kdRG@3gi|dhnP-0$9Y==?4(BE0)IdT{%DMg-47Rx zYz*>2mhT`8;Lq|Bp^;EGI4syTG&)oYT&}`kirdi*#)^K5eoNj-{sS*u0GsMxFu2|- z)I=%VG5+VH>hA)qup78ev(k}MRL zmMjqe0^7YE_&Uc#ZPD8J2F$Lh@srU<(V~&zk$#{J)`ov-x6mlqK@cNhBLv5WlEbyp zI`m&GJzfg)er0ernt&m40h(eRbpdrbEr+dbPi<-KOU-)R4MNJ*%9lic;x;^&G;TAi z;T=flKX84RkiUxeizmmm(e=r>*7?@C-MP*^-d)~b%D)qyM72(% zGTb+8HxIGMtzWI{Ed8uaOi@#Jon2QzwOCaVcaJ{cDzp#f3%x`}d7k&HN9Hc;`Uk$2 z>h4Oe4c;Z5^UOKFRjAG10yQ*S@~@-`U}&Ky3>CC0T?OO>Sb3JB zD%u#jgi|6`WLLWR@A~uMcKOZo+EWd>dOq#~dplG+R2Leal#Yyf^&XJ=9gySCIFYX(XCusspMQWE@(=F1Z2U(~j72>Vxxx2RIeqhdsmo zVw1VU!c!p=yu4H3DYlpEX=l|Bg?O%;P=yM6>w?{1;FS zOQExBAGqIHV25X79^8PeV|V1E9)VnL0cW5MG}WreES!{$0=ax4IEpo}13yRTkrkSb z-Ptzc6fqXGK`k07lJN|)xNG@BbjXjL^Ec)_XkWS5_%!f71uN(>)0_!$&$%;Uu+*`a zxsEeoG5q71nw#2I`ih3@`mKgk-Ctc3wOic>KFl}L60$&*ERjYR0p{oGYa6rCw}0YC4{BG)0pCd)lb{Me>hIrBg-b4W>CXLI0Kh zBmE18Vi$j|ucuwG4a}mmUjAP9`@`?^zw2g|&C0Z8+kRrFFe;c4^kKH_q0CU`=*)WB zQs43|$&wsSYLMK^deRy+_ApIHmi7nHfh;NBB{reAqAT7n=NL&K=B?;+d3etb?0rLl z{Q)oL+P9zy_7pD>J(m5I-Y0%2zToeA9DAmR@cO-#kCM+rm&X**UQuVXXWj@;i1ZG% z3h#get8;h;=$_T0*-?9}AN)19#qA|vI7qvI(S991(gTtZoOESDlOFfK$qw!zaFt^P z(R?IDTS-Q&DdrJ9^7)mKwa9}K_f9@faTVHy2HxfW6!i%SIN%jAn?H-+jBkQpc|CT` zZ2~u#=KiBTm#?F*ivObTEYpK&!sq9CM65_^-&ZXYrZ*WB6m& zfVr^`tuKeE8I(lxM14y?L!WN+83Kl#hW~VfbYq~+GqSxhMf^(aB-fXFlT^;irxf`Ln}jNtJ(TK`ERl@rA^8j3uAepZKpGkcgU*fVE87S3MPE-{ij@$-Q7_}tF^7L zh3qXHTRm4i3eLx7qq{8wt*j~3XtJkvt){T4mGKM8iK|=2n!6e=7>48hB?1?qqO21B zt_|Z*=7L`XLs_f;GCcL9zk@H}Tj#ejg)y%j5bg__Xe81GEvGTGG!8)4d7nbB$dvb$ zuST+Gl%%9&Hu`vHBz7VteHA2<2ZGe=_qJ*hT{tt#4K=ZW$X$H8Acidp4KSPuq0gUrOM z@M*NzsQ$NUL~lt?QFqZtQ4Z3$CBR9f z=v$yb;EX5NebwQ$m$8k?D`K0GH_sV#wDRM33{vNNQLgAR872E^KWkT-%9^9rOG$^4 zMkK#CZ?>%0HPxS^S}6VEQ4)|1!o!)JObu5XmohJ$dpUb{_T-$ToICcG_R+p9Z;{}7 zp@#T`D6ITfxemL7wW-xp^B2g;zqi2B0<+Qx@NmR z<&e2`GrMQj{*(S^?cW7||K#4u&BadqKEI5g1&_~hatYZ-*HO0;diTbp3rXq8Gm}qP z$s~z!hA~OKN4*%|yS-@WaE1DZk8vSxDRYwfj`wRS^UA-Fi?UDf-m-uIJOO9UeQ+;2 z5Iqz|vIZ!T*kmF*e-=KRBWO=v7&XKq!t3BA_7+!_84zgVpU(_u_5>WPjL!@{4i(3~ zh?RDf*{L{nSUW~r)pXi8%(Byb#eBnb%Wy;=P=BWzk?F)S$!qbos397~&tHu3`VAhd zXQXqlbA>a@dCpzX^V;8vX(>Dsoy1_In@u0zNbJOb^^Bl#-nM~)^B z)350r$aK#&JT@3iy-eMVn~XP+>R+earyMHlE!%_c%A;Uc&T{8-Z^EyH7x-BqmUcXUzLWzg2aI83 zNmUb7Ye^AFC;SYBn0fwc?m;fOU2SWSS2-u&vaX4KvaX)KpSpwQA8MSkgKU7jX1q?KRxmA;%6?&cF?q~ye+{N=pi>}^`@)q1 z4`?U8uRr8%j2{f84Q@>rO)czQYhZu)4sC1w+4^h-G^;9( zPLAKXsdP^ zk+Il@+*Ag7sr#VC`xo+;E2&hfhU&O-qbj024vi>7B~#^4%P2MRRq;diN~T2*T_#!; zmc+k;+jb`QIa)nd7u~xhkeLr6_wyif8qIH=(KbUzN`Qyl1}U;dNDCf=kL@Wxolg!X zgqxwiA$O!>^cUI+k|ZHXH)ykNP&jOAuV%k?y>7RDpdruD-#A^rMej!f?=xA6tS_xC zX&4Je9Q;&ntKZ;T<+ea4-Da=tC~IHm{NxaM&wAQ{dayN|KVlGzBw2N zJ6Xr*+v@ilUTO1m1pSeIMKmTC!((?PwjeeaKTluq+a?9(GW`O*m?zkWycTl#g`kzS z7he%=kyn@hM=hYHs)wsTA_|o;m zWp_#3NuCCtS$L;ig*H4H-SeXf7jX%yYJ0;w!*z3Q%WO-w<+dqqx&m!}1u}-GiC#nz zwD0y4F7O+ns=jf>oEIIr_A!o&_Mmf!vxWDM=LkEQ{QxiARdi`xhweGk5H|F(I4ygv zHIp`2N?Eh@;|!OS}~W1nu=mz>n;zS0F|==&e2nJ`~y$jb$u>yNG9%3%H= zAIb%<=Tl@cI^7zhC%X{X5)BpAknk9dT|lOy5IB?V#B0Tm(DxokH`o8BUpF$&yRok? z5j-s92ImFGqW?z&K6hXAn;%2#$Q+_DnM3Wu#P&^9l0HYjR8^q+g3JjRJzMfX-Vtfq_QVUfjx`C#nwgYkmOI17R zb=X3_mM)Ze5*FVQJnBZk**cD#}eFd?m2u#QG1T9w2jL>XPcUr<`Nu(eZ#z7&}ov99;_yIh}tWfC=NhV zC%`Y>sIH)yK-W-rRn}C+6fR=6WQ=qO+&Q^u#pnatXq;Whkz6m1#&$k8m>2B+zs6Vb z7V$7livKDJQ1ltV0@l$Yh$0&v=dJ>z7*2HxwMLStoSRuSeL>(!#y|^7xpgnUU8LoopY9S8eDsvl{|L$Fs3h40$lM{ zi64p8is8f?^&d?;^K6SIrAcaTDwVb>-|V!BDaome%+Ji%H5)Z4@+Gp9pk%ye=KERK zQ0EleliYJT`fO?T+P|qed0F`!b?q;apDh!t8nmGI%S}8bJ8Ea@dYkT;7g}Y>my)Wa zM9uxI!*px(2g%t~De$(E(3H0sI%{d~4Uft_*u}X@yIdX%yig^W{or3##%-WD2rBvM z6RJnrdD@Hmt$LrH)lb$h)BnVt3<22EKd(MGl~lpU2B(TK4){n9w-%Rgbe{)|Nr)Q^x9tCT~{jrZ|%V-J8Q(eqIt@L#aEA>kZ^>xMd z+v#rVeTqWFmxMvo2)!Tm*l=JG_B!W1I?r2onp^G}>fY!}_MK!$uwo$CjwYByd$f=( zQ&v}11ReC8VTJLV>9o0)$zz(Si|K-3t;|FlMlq2sF)aKeRGAyd7J$3T?ap;o^p^Cj z1MTcF%Lc|E)37JeB0=H%-9a@~718uW{=21autuWYt!hq>Q{*Q;iROz}M@mO0Ag%t} z*TMhXQ_9=Hv)%LAqxQD+PxNo(FYwdQpFqi!vVn9<`mAA&p``VbP^;KF!+BkAHoEF%_e05E5b<0!aRn69Ai?hwyy>j>Du64$d$r|pbg&V?@ zc=be{;u!H%vrzljINx;3T0N<8@|I+kwZ7G5kQke3>S_*v0kKm$TAGM{ieAGWz6J14ml*FRf;KB={ujOXAWLSYd#RceJ-X$s~UJTtg1BA5V=(D&ZeF?Sk1a?*B zWGm61xK^|a{bdj0QoLi+ao2Ap%;NX)udsz(#-$1y&|AB7bE$8ZVsn4gzim8M~jb(ct|YLo9ldTOWKLO4mc)Gx!tEsn)1#RJd*+6G?< zUZJ#5Dp*GFqeBj}L#(j4hNuYIlYWqW$;osXdbwtv=79E{cBJm6uD|Ap0b|Tws(0Aa!O^ZbG_MrY;W@( zyM8%efJf^M&JGqwh2KBe(^k`N&=xYDGwv`pGnGLeM6dg#J4a7bGsH>qe_NQ&==*B| zuVz*MQ2$=fSxwg)rV1)X=Zvazx^>L9%!!qwBg)*iyG zcpP-mZt|FHFz$T;Jd20mt1iX11@BrKXb4Y3VKCAJKm_?sW( z2SC>QiLOlvu~Olcmz9$;ne>5pyQpx2!8nr@85J5A+{)#!qQG%xm;aJ~4U;cWm`@dQ zL)9XuV^tE*#Q#W7$r_+Fr!pxeD^g{VXZ}eRhx*l>Bp(nv1@GGj(0kBar~bGg}l!r&2fZ12ml_!8g(?`XPE5U4M&_ zRXf5L;Ft5yxp#t8@B~W+&EavO*SMqC2j#OqwTP;xd8YB`?!qxz9LDl=!&U7&T_^ z?XSCQ44F2WQY=Hw2I~@Yed}bs!PrW9MD-Dr!dJ1*@#(^1VW>~xi#yYu103D#f9xl1 z4PB%&=6mCP9=s|1f+DsRznN_K8`DiKO%dFSURi2e=UJ52B?dDD-Dz}D%q%03o5*D; z?ydWYo3*{fR`f>RH~T^RQfE)6-Tlxl1RMbiTF+OAFN-h2TeTnDu``Ag;|aKyR+;4H zWd@(&ucoxt3?EJ@Svi>xJ|G=>&eHjhoSU7><^@KAGdBDn|G2p#bp&g z;E`mpN6y8v^a8PK;2HB**%RpY>0ITJn@kc`K!bK9t z6F#}FQj2lCQ2ZSFcA#2&DgUyiC<0B2F~j}#ytkR`5AsGiYdc!{+IUNHGg%h7%3+D|i9K=^yh|R{O!Y|3 z3C#`dFO6LHS|!k%6vv4)H1|mHvn4{)!)ZciVL37;L)qf&WbnU z&t>CO50Is*rhTm+q<^R%ua|0XYP!%x=o9D;Goy>6Ji0oQ0!0Fy-Cf*DJ8h5Tad{6N zj~%r=tv###=lo*6A#Z_a)+ukTAmHAV8V4DVSt#pHt0ZZ7()Xl7<_%`IwwrD@_{U#y zPo0GwRBr1U*%AjDo8AN=@3E!%qk$~81v{U^caX2hTZ9Q<+{lo*k&B)u z_DIFjcSNpYh^mfq5N_CKl>@2$R3D^Os}toErQ{3H#Jo^cSo8vV(JH7zMs!7nkcUvB zGo>8v{W>@_hhhiEAelWQk{zjwe&Q9lPc!I7dxQ4JBVj810{V<3zAUyhQ3C|UvLX(; zJ}B_gOY)A2ZlsBNsobP;sE=z}>sXym14kv5L$yG&XjSm6uO>dm|3q$w2l8r8;os-& z>>=H6-Pc@^QiO$?=ylYiL4n33mvj%@p`CYqB|LV0w$Wt8_d)whvSs32tNz@fd8aTkwl^ z1&945IUD!i9a61qC^U+7;M7#*+H&id<;;2i7XN2>c(eSE{G*tTj1%mUa_EceDLya0 zKs8pDgMKO)ADc>AfW9#uGC$L|GHg<3s&B*3^%iet9s7InB?qlLxqBrh7QLYNFKwrUicZz3-;~UbZiyYgW$*%KWqwhIq zuef&+LPkv;_F2{#NA}|;Pr7SD0KE! zMw`td2_@};PMR|~jk(DENDBI~$HfYuFPe@vidn#C9WK&I8{&<<7fzY0pukj+_rbl& zf{8(dnIWATNsUFH=8{BOqF!`1X5ibQ=0X8}7275-J5ZB(2FBl7c5fg(xI@?#=?}fg zmS~C{KcZ07H2Nm?AM3Oh?N(hT-Ci@C+(B(c6L3Z}f2<{Z1LXy!ur?qKSo{rqQE%Kc z+1JxMkZlooAO0MgjXh`?G-^Iou2;U$e$qBJOf-Bml`+4zw6fkdwljUCd#E?bqw;_8 zY!?SHECal%neGbi_qIv4Zn=3m1M*zC4{Y6Si(J)Qr2>+`E;QUf#x3)^x}Bz_`L}s? zQu*YnDWQ}p*h6I{?M(g!Is^lc@N+cR&Hx*1uuw+e!Ht>b`R)GdD&>0U3OO5iy1T3T zT6))T$Jl3)VE8|YOwy9NPfF<1s`}{Q8A)f*QL-zw6dCn%@H$imwY3h~CU}7ZNA)gt zhmC~|+zRab286nU7*hw#sC&|E=|Z9pv70VS?^6Gy4}n!rQ`y9M#c26TSqJGm@P1RH zl_U9t3H;?i8_W#JflfI6TX6fhrCbTV1BlvUgQ4abjcg}a>a2_*D7K^?*$#; z51gTOD1j_PJ|e!#rpf}?QEi77SR}5Ee~knpA47(431OU2mtVy%gAeRG2nMCW&Y6Rb z>|N4!(hT@jU*Tz*Cf_DYl32x`p`u@pKZ+fW|BAhew~c>^o`}}Q<~=vE04mYHaGFkl zL#Y4~Od(M&+)39&QZ#py(&=~(Z;8L6B{M@*4<02Sx?qnahJj}+#D^q|aVGX4IvdW} zo1*ffbJzp;&^mvXC_%oX7Al?84W*5|PmMxPAtTx&J_N2xnP9cxE_ftlzRj2%+qf5a z|MQ#%55?gx53f-&w;$|-6X<|$tT?A|<39Dp=rl#m4XnMfFI;K)V?Ag5U>cw;q02*J zv?3S?x6skvGSHvt?UuN#_Q`qs>_79)*>mzrJ7?SPdWU*SvJLQD4h}ySzY_NY-=L}{ zSvy_-pFyu*XDF(>tY565bbqlS4O7KbpjgR=#w77d=o2&XEVqxX!(PDmb!XrsV`bY1 z8sk3LP_!m-N~(~S$M4lj9VXY)^`PipSN(&wuAj>5$|3O3FZuty#=K}vcy%+Oqnz~K z@iz9f@$l}5`-ty_uc@$CAmfYTH9;1=O%9+Q(L>amwS{!0^e6N-ZC~9jtx4z9pDnrxE@`)Df!J`+`M#o6d0A8qZdfg3 zfHL86J{T?>IUDK-+Rc%0tKj=!D!izB(SN2!W~;NH6VP@ZDiu2(?JNE!DvTDVXXpYh zMn%cH>aXfk`h@^mRnvaXTp=D~TS$xG*x95-b{e748$g89yYli)eI74px*R zt0;#li_-r`V{dQfSBh%WU+uaF249x39@7?6BJg!0WLb z`Q?J5%AytUa`ZJ8HBC#JmHaF@lG4UHHA!V;jXAh4r-(<1i?h{O+WytHFROUgkgP|4 zT{*3D20Gt5YWlzU$gm@{S#eEaz`6K2WnyaGf^?xl1=|)Hmf9mUsujwGT7nJIW?l)hBYV9#yO1*Gw$E3ol#}biJkWhVm=;cX^^Eq5;^h*q}T9 za_@2Pcg%6*7m{UCmr4K_ZfdyN654*30gr=dYFJoMlT&B&BBBzO=Dv*=hci zUa1XDYfUGVnaZy4(T&HBpepYA$8vY&uKqjzZ&ud6tPi$vw$Y%(_X}MNE|-0fW}=Jm zz9Fu!Zdjmy3+Bu;b(Bse-xK2!trM^LFMQZn-9OXg@+|k%@|O1(V3PRe0vGKSFD*Z! z7=rn%nst6sB#B8bWIk(7(-qbAP`y#Em2Qy?2+={SZ;t1qBVjW+lkJ6EH66USw}%XQ zg{SahhQNg{ODE_w!x-awQ#p%5f5$MCGO1ojo5@e30oV|{7uy6yTmns3^@q=R}SHOk+J?Bd?B!tpG$!ygom zf|OcDp#GOd3oi>bi04MfNxY){vg)9T{D;%`8a}nVXutdkI@#a^A|A2E!GA+*_`kwQ zJ|PstCSXRiYwWjVvNV;NP0gl{V{bg49szcD1~}nUq$eb!!LJ?}I~;{GM_>Yd1Ig^} zz-M8p&@xgr(iZv3fT9i&gZ@_Bc-%O~7&TVcJ=8JOXysaT=Xn(GyNwqsY)2|38Ex)Hjs z<`S0q)(T0bt(K&qNo<)0rd>}^AUldGif=&YSQ?0egftX%lXTY4@mvxb!dIe;u^uv6 zbJ6KpoNP)?Qp{3}k@k{~K(}?Lh=692v@jVh9yx{I!_~ym_&w46#D3{RNg4TE*%oBo zlteLNnOv-RBU&d8N5WA-s2IAhKMYo>~yY)Ms`fitZuBSfI z@Dst*ehv=OGnr975}jX%={st_x{-DtEzuNJ3?c4BU&I1|?d&P%7v~+@C|d*jG}|Kg z1lJvIDf={bF4{%0K|WnmOw-Cd#@s69Ys&3>*V4`=t5Rd8WtOmZjJ`4w6i48}-^YAs zbk5t3Zn;BqOt~Af{q`i=0?!mzK0bxrlE{t)k!vVREJRl60QE-IojyPvR!)}PmERH7 zmDEC-{;Z@199Ws4Om>kEm$sJC(BsEQ4uKcDNu(3qPOKD@;`GF__-!x=R)Fsl zZsz_!ip~N`iZhGCkL4$iBxD(vnT>=CR9$;X6roFpd z_U_rUcFsn2rn~C@-@Etwa(uPZ52TO&wD?o4&*GD8 z>4dcfHy0dU^kUKVMT-}!lbV(K%ss>NJ7Y3Cz>NDb{7u-KcQm(j=BkWg8C%n@=f2Gu z8(tB5r=%$RnNrMLXLsk`_($=blkO*7i=Ub>&)LUy1+%p+L@RQl_(}EmcWPD{8%b_$=isxgb6lU88|z~fSr_`@Hvt3W_h34XF9x=A1#;Q_x{5S z83d@+Rg@3X1+-K$L9*Ma{iJr)CaEdtzMOClQr2MOgZe@YVaXT16U4@s-cd@Xztx49yHy#qWQs&ghj{Cp*~v*u5)xUP_15bp@xV+6$#8 zEJ{jujBq`nl9EAfa(pj@ZLvCLS7W$MwZ4mg z8(%hcZED}54U6?Jy13Zsl)M7tkyO77y6Rjsyr0GLVi&+nJB%CazMS*fM}6n=n?$=r zJX$?<4DlLXw3?&>zg`}Ct5d9L)`r|AZY@};^9hbTg!!U?D78Pj=cUb}=5Js) zmjt_dG5n~vX;A<13^`6%@h16zlW_!|dj||(HtH?$E71wu9(XE<{_r#11Wma+d!G5k z_v3%F)vzt%r|^HmIc948^qlbM$S7Zee{o);{P)?@bKYgv&C1S_v#$7e`s3wH$%N0k zVH^`zwqQ7QY0+^-(~8H66U90fixwE3THbry+YS8h2Kp+!a`=bvq^y})8`FlRo&Hqo z(~GpYv}sw3GOq`32dr9U)ys`yC%L??7x5S3A0`XQZ&O+o7?LO^Mx85N>)EDUYp{O{ ziYvuQfj5Etye9dCzqP-9czSrgcoTc3<3>ex09(f1#XiTq(Y*pWz$&g(m)CaFx&Xew zmujL~I94~h6nw*UbpA?3+J%dXeS|u2UPN)9%%Q($J|M^OkNc75i2IqRvTdq;IPx8K zy}Ho=_8lqIH(U^&pJwn34a4s@U%V^4l4nX0{eaejsz(09nXHbUY{*^bw$907Oa*C{iB=osMbQSi~h(fZlYzj)8$%#b6$=X~X48?#Yc0JL&%){VI7kHZ{D!ZIzrW8BZ4;S?Jll9P#f)*ExN(lPj{LYb@i&ux z!LzJLLU(&F$2;;8RZILT4iCH!Jj;#d&dzL^**W8%^b-E6fqQBtBboXI z^Se#dDXt}#hJML=`!;)ZYej3s(ttk*8&)CAxu2UGFdzM*oQU>~4GW4v+1JId=a=%8 z$cxJxlJCsF8v8aDC3}!-Z87Tv&nGvLFfRU0@{r^;1$q@oOe&F7#y!Dp<>qpYu!GAI z#)+kaCxYX0({f+sl+U#X>jei0gM~_%*OY>mF`8VfR&THn2<=ujVw?}MRw5EDOxrY1MAWZR}xX!tk zVeYsW>42>kmET1^rfkT1{T(eEdk))oNi_YtVYV}0-X*=%^R%1O0&aPY!t~{7aEzuX5h9m$mq4dG0`iz(_x^D!|Dmd=J$B0U`z z#}#xDWJ>OK8qv~X-iUMz3d*L`2(Kb&~K^DX`Mmya9%JCt=W zb3tTb_&iuV?`=J8qv9I?KjSTMyD(X#QSocVyOr>i{3~@;!86Y7t}#?~`iRm%9Siq4TnDZIGUBp66?^al`Ze{uRs=gFK}?rg zV84|V{xduP{LV4xrp*R-y#ky-mbmTSO9{;rHYJu!+?~)dVZ8e%_eglpmyt8c>PYsU z0XKA5a9FTtuu^bzU`F7Ke~14i`X_zyoch!3VFuBnm}Bo_AMWby5?~;G1m-|J%n{QW z8yK!j&E4=R{ubUA&PPIngSlWp=t^imyyg-yguIU)<`+jh5H2b@-QWkebZu~5wtTi! zrkqqm{hoF~P-5Ris)TEVW5EGITVP$JbC^?Q`7~T7g7t~@XSlZdJ0s4@-qg4Tans_* zxgNONVa9%3D`vD4MvFc0J?fRaD0fCi*^I*39kbTvP08&REF8E7!=#(_GCw*uI)=rO zaqSbECN?gxuRys}e`=vbIWY9MY0vOfha@<^c_Z2KZGpR38E94dK9_>S?odFkt+5PT{Vs-|g#OY#s+HJ1Ow@VExeT3>zKNF-PbD=>KA$u&xpM-SSj=|KRvnJ- z5#X-<28PS~Twm_D*{!oLX1~rp=S%m6g_>edxOY-4(=39mo_(Y9lyf{7(ia_r9O=&f z&e{BX%Pn|Pml9je(dJa68@4uo8$o>&W|v{}foTvm$(Q6fY6kf;HH=&WulgNoJXi}U zN{V_fwoC~7I|sJrF3kPK$N8?rO2lUC7q#y6MvCQsviymu;#p@2=O|CAr5t`q2YP8~t(7{BEyO;=XS;ys zwdaqxJD^z1OspMeOZd;Z-F=uXY#F2vG0gDFh@NfDshe>%-IrZ3yHT)m;8ko#)TZXi z9hl$fRL?s1wv@gp^9o!l&@V+!IhXuv${Kf1&qGl7uPKAo>yc8?O8F)8`(*|*d|6ep zE(Mn5geam;Bq;K_iGgm^F27QM7S9)Ya`$;Y+|%0>LRhc-8jumpx1EI z*~Qk2{3d64XF50$ox$V|BZImhvuzH4<<~@I$}V&jGji$t{ERD^Z_*oOw8{J-^H%PH z+_C;b*EI$v9H&Z4z%L>@F~)!0{sQiv)_cE7qs*r^3Oc`N{8`{agpIS9gXx zhP!2V%-)*bEq!fvq3p_-&oMX~l~rdbWzlV2U=}dTGf}z+npfMvhD){0u?=BwvJA3m zX~=wA4X5!;dMPmxN2FC~WT;bgRdf%sykE^aL@AuluUnVc?%6LnRA-K>xmN^zF zvQ-ArvkCida6khW#Dn&uKlakhvRUq*iN)d>&1fV0);Vp>;1@c#1Xh_mssm#6S2+G zn6WaaL8yBmMI=V30psCcf=#Lphrt<h$ z=KlXEdUm}Uo)jusNgnw4Dr5ENTqkzT6{q3scY8YQOz8GeZu|zXz zEb{Y&^{Q<=S)P6_cT%Nr@n~G$!@N{*2gB*VqBvxZrqYr6K#t+YaO?RG{7C0Z=O*+U=i{H%;Q>8>{X>Q^#XP7~R3pNV zqF?+$YNYH{u7HuY6`3drDc7cOmJWl5xFvIrxkCw*VB9v=B4h3nW3ktfQQ?xpiRf6Z zkXnQx=|Z-~R>ryCQOe%XZeu&a*VUMLMxLRvbhlYenWPrM+%XBe?=!+=u{~_KFOk`z z)rm?0v>%q!N2y#e6i4u3i|M%H$nwU#YFy{|d5*7+doV+;R_to!@QQGWV9VeFWT482 zpMzQ0AT%+0HS(Rj7$dNi#5!dAzKtstm+m#Z72HGJ^WYyU0xo$AIDnRby|h=_Ahi!B z2N(Fh@g4IG@kM-3d@n*DLr;X_Vhykg-f?d%ADp~9-qX!H*t6fe+j-R0n19a~fb*@t z`c9dQjaNUUgib5Bq$X+;`MUf_O-;! zb>yd5Rq;#ySKre7O1|O2UxF#YzS!&R2%Z$Yv0Fw--C_O9GSNHRGd;dcd`pl&Iw5a! z%$?(zVJDoG*|S^|a}7~PNmgIRz7_7m&t5)qJACi|PMhfB$UYEIt{QFhC1y{9HLJru ze*u1mz6OC#eP`k~qAI=@b@fZ|xMdn;iMvE8HkZ9&*~4esUpkt*>bk4h%R5HF`eE?v zttF`W)JK_BY{>NV6>i6hz-%`#qy#QTABS5=b%Y?21!MGYw06W|vpHN{|9Zal)=R9K zR6AjJVrB31xTDs7_B?Y9sUh894_U(#eTvWJi}QWTt(|*3ds3Db804=nUlBPvpB(Ny z=;#NQpEtgGeAjp(9>SXV%lKShb}^oN>;*1E{Y}e=ro@){i};7My6-x@0 z2rY??ifz+oXxYd6+Lj-Eu1M61Jv zc}x#$5z}cJma>*TaKP60KKBfd?-l=#hxJyr9k7kTJM>4|%A|rZQ%RaD)x#Zd8FrU7 z;4d51OgOuNe22^_Z=n<*_9RXZcihmcoed zV|OELxOph*e;7>g|Kh)$mma+9FOFT(Ex2V`SYKGzyCu-*JH&VK!a3mT=WUBONI8qa z|3e3uDaKRW5myNH@=D|u_&PRidit3!_WVJ)RCI5+gjPrWzuT=}!l;Bdsj~{!N$#2Q z)LqWYJ4d>*ErqOosk-zE>_BJ3ZL&JbMvq3XgX2FUJVB~0el{||`(}vV@JaS&-yn~%t@IcbYZ%BpovNu=*J?N$Ik3`rE z_8hqVi|~%i5=sa@G}U^F{@7Ce|1PfH+8UfmDr2H*hofR8*!HXJT^*Y|r@Vrrz3U3h zP^E}I5|>=xMMybvSV`u!yole$Q5&b&$y7@H2s^e^|Bn9>G{v|zT$q> zoj7a027@E)NOBHwrMoU5N8z`RbreL`WU8G zwLV8%N&I4_!C&^=nriLi$hB96CAgZSzoU!owrvQqDW|j_^$*5)Gf(TLSC$9K)zpS+ zs%llYfB{uaE2tG={Pb!hp7vW8VFJ3znrm5U*+Vs>+~~55QtruJ!nZ;lk(=#^8&>CN zhv;@$kf#te$kz0a%yEX`%G!3?*C9LkGO2jV)cF1hm!0KY!|gxV>yk@|^5JvA1-a9+ zvvVhBxA2|FZ5cFtVX2?koZd{ymXiEakW@C>CC7W`Yj;ua+<1p`u6sN6jA^31*E>b4 z$Am!n;Hba{zm$I@uZ?eRUSD6cynX)3`Ay{+VkxU)xtUl$aahXAltH*%olp5%K=aIt z+wbb*DTLk}Z|iBlK`o|t3NMAv*uZVdzn7PjeKKoiZl#>Qf#Uv`v45j)F+;g+mNN6m zgJgMX5cP!WO#jZ7t1F9%nq1hb8a!o_Q`j<(*hHMI`_mwytI z&UD0{*@^ysHqLCXkU`xmXt6Gs@#hJ=FiGhne?qouJGFuA?!T(=(+FN=G^S+ zg_-#$i^-R^S9erlX!eUTOZAFF#clq>{`i~^*)6hfWVOlNlruQGE^<5CxYxvg??O);h6@I5* zqKl)lHdBAg>}9{$qW1FfT@%VA_e!~mRzYho0giW?a}&G-g^lw1Tk#j+MohvEuT1z- zs_6^)I%Q&(-IBc7Y z!BU1)G}<>hBK8AZvqQyPco9sv^sMOI9X67Ti%5(vHV+v&xc5!h_h@DGS=vN2j^`3T z619m&gai-5CFJ-IlOdQd3Ny{PPnK=AK90B6751i9>@B3p_47 zr)bAQ?jj!&MklQS)uJfoy5+>PLV3)bd;7olt;m~{+b`HQphmuiTgh#ux#V-A6BQ$U z)KjV_H=mnjaq#`wZ@8aHo?4|@;UaCN3tA7owEC0!44x!`Y)=&c)6aoUc0Y3i?DRo% zDfpsq;d=j*dCQ1QIo5;oyMr1B+P0m@G%pz`cy=Z0MYIhtS3So)*2?6#bR?cdoAq z)e;HZv)&X~pL!pYqbrtKdqywPXEOd+P;P#bAowI{e? z7NXLrLzv5FSiZA9b+_}D_pI^8IcvH8VOMe=jHq!A9EWMLB0dj&3<$oDdA&mA0~dwU z(eB0_Z6P)xcbS8XA6bikU@?AeTk4?fO`Wo}m!k*Qh96BmrC%6B%_p%9v9-wljtf-} z9`serAC>bWYm%S#jlp-Og0W0*2fv<%J@*pN6z?%-rc1XMbWTPx`XJxNDu5;S-pn*- znA6QQc#o_{$9)K_zg5g-#$05bOTh2=4(zW1YH78cXu#j)jXZ#FJ4YX+SJLlm%al>d zAp<@zb{4zTrlXlS+rAm>stjwc?SVz$AJQ~CkDNrMuxr_tbZvTs`bzm(7!u1suDgl2 z4n~nbBh6#2BfrQ;#Vy7?y#@XrmfC)|KZtLVsC&=EU$&01Z>MXsyGR#35IF!M);%^L zkIY+^cO}>7f9vZJi1;eS&PU!Vzsgx46p!VfTB>{6coxQYO8A&ux4@4D;|gCXxU%r` z_+g2oZ0+sep+mkHe%76Nk8&$y6ieTjF)F=9Mve5^*?qD)VsFX8!a0o0A$qe7*jC^) zKK4xZR`7|p{HtK~no1FMjq$sa)@`VM@p zD;67k7_00>ED!lSkk%}cCiMxP4Yu?<{kfsWq3v*hOF}nc4LY#1wd-n4xb%v!3z;jH zotD4&($;N`ADr7dCs>Xtic+j|Jw9~49rp9!moH0-9q+JB_ z_Z2I!%Pg8@9Vme1;EDK79xOK&2Z;}2TVsm?1p~DMr~C>`5y!yp7_8}PC9*cjpa<2* zQQg_zGvB)$eFt0Oo}`N7$P>(%^nsLCv5DeX{l% z?dbX9c);nE=;iH>I*tftW=M<-C?G>s?zn zYqD(&|Aij`55*bk0JR$3hYvy>Ar@|eXITSbpY{{(hOLOv@bg|bC&Qc+M_puD%P!kx z`$g9#cWqC=^96Z|HDF1Wr*p}#Mqj;yx(3!`PMjIO8~hTw8kE6e8gBdnzt{{S&ul@q zGrxe8aD%GCJYfrxzf&Rf-k!>$+#hF=$H)!zN1vvuqez*SH%%<7P!!L>_QwQ7V!102i?~^ zH{G=NKWlmWQESZh%KF^)kZMMs*QRPAu=ff_ri6wB+WNMJ`vrfFMZl3=7m?MeN)k7a zZG&@fX?qQa+nW~GI^kT>YxlIcU#x;XNY-IKDU-D8;!o0~up|7Nzk}};xN$e~f;n|^ zyJcU_&(7^Dv0^scg#GAocr%lhBsWPenbIU>NP(9LUlNac=6Kh;D!PwaX{Fx{BwOuW)+p>a7?4dQH2I`SaY zQn(QqqW)|2++oRTc_LBC;jwjCN?t1n<&NIZ%)Vs*#=mT(! zDhB@Y)3{zFutskm5Q{Z=uwl3G07pPB~mQw8r3@8HC8N#7@SNZOCC>KE5c_ay!W zUl+TdCPGGRynnYZIoFd@-j|$z5xe*uQ6rM6UC`cx95jypNSCx7vR!xfb{&QzW{|6s z`ycCXw$<3TUf0*?P2e^y6dMq2=wIX8o?kS71z2>YrB;#yEa-!8cJ1}1$KCN5 z-sjFVS4rD0TM9TbjkO+X2=mtd$`a{m>`>%VctOw^s~TA^w~*3^HpEPBFSa8k&}96} ze#p7sy~)1S+0jzZ+K=&YmCSyGh&$Ga=#XfcVE@4JytTPo^Bd+>#a3`Pc-`yGTgG*+ z3s=S71Sj@Qj=|1%&Q#|`Q$3OL6ipzD2p8dAd_V3|s8>w&5F@2NLL$8D7e7E!Ffl~e(&L;Vhy5Y^B zjJ_q7nYY=}>_X=aWO+|`esY#~&vkBg-*d!VbFJs?4(22~Rc~XY!0B@@T0TmmThc9? z&$^O5KTGlDb?6O5{`cH{sXVmgs>9iyKfEB}4u|TqjPm0roxL%-YU!(XyYd4sy|DZa;EUspwqY zB298A`2+c_`L|I}o(j_V5UDQCGIk|ZIjC0ArWl>gZOjR_0=P3LsN?h+vIg~s@vpH1 z`QtKLNj2B(Xp|renXQSAMl#Xgm`+t8uW&3^%u>VRx8Ae8v{!X%>}N|HRgyVwEGG6! zm6bw5Td@=T%g=mP|MlEvxkm#-{P%@Iu|sl-q#$=U$hw~QdiJ_oCe%w<7@rqk&3oUw z$JyL9#ZsQ1PgEp#o2uDVud37H1A!E`3#Z_<>4lh3kcW56=j_KxeNMeS&&u583UQP0fjaoA5cI zZc@pFk%?QJ$6YJIN%#Rit`^!E^`tylnj2XkQuF<}?R=y1P6ZPKO6*p&fqX=o5ANf2 zawk>WGLx_6x(<qd1%Uo=3M%v{#^~GPHTwe2DH>bF@ZoA)Pr_Y>kP^AWV*i#h$_C z7pEMQE%=;HMW6CJTLpU=yI~)MbIOhX-yFbk9D}?qW%7XG)sV1K>t18)F2bw7hD%)BaI`IM4#9d-Ns4iZ5M(ut2ro?+riQ9&CP;q?G`hK zxI39CQbo+NAHW;?H*t`>Mdi`sIEMej(%$-#ZEso6ov;kzo?u=!l>KNp z3`*)RG>LVI+=^ZfZx)6{pGdcaLztCS09U#+{};asOo>M5^fBCH%RTNo|C&5cH_^`N zN7W75H+W|f(oAt$Y<{$$P%3s_elPtCzwi|Jrq*#KxK{QKc8j}~d$9e6okzF01(i*; zz#epo7Sb+&Ok7PgF(Ll}cC`25W72r>5xB7HSOdKAR_LtV;vaJ3(3)FpsSgsc4Q@k` zslzs;NUDn>%G+Sr>XU2c+yY^>DYi*3kTYtI*}^)yB{Pa&V%_WJyw&3GB<#WjnnJ#w zxBq6(fq|+XEST@b?}Y5|t>BSBH(yfN4D^dW4F3(E=s2^XSqdDdj_w~k6FjE3r`_q~ z*-P97raRgVODwJEa?En{lBAissNhOr);UVNk}@6wpOs+q;z_; zsiS#3gX&28n9k;9Vu-X{7Lg&igL%zc(53E&^O0U){A;5P!UNQ1@_DKf83COl)A_|Y zBq0L{??TD>o<4E2?Sq|Ch`SJ$leaSWQE9RdG-Uv(;R>zV+ zC};+cxr6V@_jViZG2mUt#h;De<8I+;>3Hrq3-5Su9svUWi7+mK*_y>EbV-!hVB6U>z$n(Vou^rM! zVX2{N0%;|yA%E=FpX}SqkIyK zxc>OPJ)ld1j8vEEYt}TQU}boz6;uf>z=1pA{L4Ml<8jV*=CN1Vsb-pSOLoc!V^5=t zF!dfI+>Koo`-|PQ=Gr0hDLD*x`IhtpIt%2c!e);7#OPo?!apX$w;<>f^*k`%mq<5Y zQD`H&uy@VDdwm1Q+FqD*VsSka4#(9^c;qP`XLISUgIsgVIM zU?1P?9ORekx~N=0zsM^PD6nC?~ZKNHxUtG~I3~&{{Hq{DhO}ZF94k3{Fu6<4+?MBR7Bd-IYz$i?U~}t*ir`g`5eVGM>Wm z1LGejluCT+spTDotk!o-KV~x+`f-w7dJ()59F$Av-pVeO{V?ylyy@Y3;Yv6mrV&-h z`<%vgfw!w9vU8IiIgaxDD4qwGaJcRS?QS4izc01gYAa=vTv^_w-@(k_zA;5xsjo0! z5LK8S>;~Mg4m$sH<=WhiqVQ}MVoR`pBoaw{wotgMaY+w+aNO4!PEV{5S6(Qf$!mQsX#4u=enjP)M0 zq4vT3xDT9Z7g2_o4BBE%sw+K$+CkT+O3}G`RbvUxkq6Oj{5fuM^Gr!3-#N8&LX5tR?)LJIdpFoQ*bXWk+2wz{h!Ng4^<*ciHaYZrPozLsfyJU~sT^@S(r7 ze|q4MKRG-*lmN1LW&M)&$Q)`;r0P+rHm_~E`?&i~d}_kHq*F;{600Wu=~?R84EIA5 zFzlPans_}pGw4Pu*#}_JT>o7uRww6$qYbFXp~t4H;Lo06Yd~9 z<|}=@{#1Rgxzr;HBk#bxyPs4+EN4zPc3LJ_W`o~*pHH(+;3HO*`;|`uhjX*JnBet) z^oB5Twv>y>Gh&5eKZTwKzd_nOfb3i*e9I}=drx3jviod)o736Sxf*#3E7zLC#*l`k zmmC3B=4GS4p`u&bs>Vp-B=J4wRQD|t_#bdn+2MHXyv1*| zD%213D|mU!L~loiU>jZzJ%Y)Bp#PlES6Hew(~_`b?M@G+6S?+WS>)e(#987?!^hX( zBYB*zd9D@wCf+o*8)9A%iFedz2V43BH?QN|G`PXU=}HsIXN3PyODorj>1HveG<_O$y>0eW z_VS*)9@WFdwe~FVK6WO!TUv+PY7(8v)^HrAMDIqc!goC~zgGT}oaQ;N^OEz{gs+6w zt6!BjPZu&981)G$E%OQ_=3w%s+`mV2L^0e4usE3aX2ho0wxN z@F+G_rprEX6>1wgboM2fzildtdx?){z^f)0XdTB2G5|3XWpV!ViK~q`@aWNA$*K2m5eXff~Y5N}}VQ zA{>i7mWoOay_`0j7-D8IKDq&S1?KS`Xvhv`n=`H0QP|(z15G-Ww^$dkmAJX^4jm*# zGF^G892ZXJ(xMj}OIk<{)jC)ivbp$Nm$LR8hxR|A-HOID#o56oWpJ9%Y zA1ML!p^m~;;U4RjIo>mfwnWk>}Xo*8drvcdI4-z*eb@e28 zGi}T5L%|bzOGT*zXh?mGEsGTktqlGF$K#;j#lVAzHF8Z%6}O;!U6UL{RtATwHdqGR z?B6^3S?^ohAlJIfa@^9J`kv~C%-=bEk#3U@<0o)lTq(DfSILuQUhkkA#ualcTw2Zf zZ;_BG>j2}~u5wi^ov1=oDRVROo!#Z8_{koVF2KiCMUH?UU)C6`$IPkbUUCwdPTQCa zW)@o%-kz>(bI!^QFZuL;U&=BZuuw`x7Dg7RKE zBs7#73i(S7{f-U!<|o^U;*x z(ZE>$7T=R_dZ>vwK^Uyuk!zVBjlW=_XyDl5DC@c4sSuwAj>x3=tfMeBHdVSU7RAh@Dp3dR?+NrQwmi;m=fKfQ=X~^dwxc) z5!#8g?o++3abBIO?vY-Id*vxof<8;Vf;T`fJ)kZiCYv9KMZ_uOi%w7lnGf7W{+<1q zv$CUyD}gU&n?cF+&$#b>)nDtBG)nvw9vvDNst_m}nHOvc3rbnzx|%~LQ7*{X%+ZxaOO5fML`g3GI-b8+m43CVC z^h6)HGxCEQrTOwEoGFXpy;zrgM7BY9W-AytHNiLi8S~nmF(&XT!!-)+Vup%!t5XpgS1rVZBmA?Lds$&+oE_iTv$8jazN zaS-o@e{k-e0yp?vaLIqRbmn_A-?J*31iOsB<~n?T*1_F7AB^h>%66O~y2z*G2U0ei zx~sr~m_nvf1Q+JU@sq5-*#C08uyKw_mX`b$bPQzt4ky4p)>pY8Ul10?8j5FQ&4iQD zrP0!n9@w2$)>ml_s4i4P<}&jwYXxocwdDmr0Ir|!t$p#Ct8Vr-Cn9?jK|jS1o#GTc zw+D&01X=DR&(iGLJ9z0%FmY^sWciyqcOs4Z$W_(W%r0;zEf?6*+%XUUjv0lG6Vep1 zaI7FU77N1p;C0rOLc)6Ei#`FaoMzzABw7Elnl{5e1JA!|c=LrVL0+YbGqtn?O)J)i3i(zEo1$Dzz2Y zC|9Hr%2er;VwL~EE#MNJL#?rXXDtmje>d#IFM3MHx$Sox-&qP<`!X%LlVnZ0v{{U3 zhG+k{kQw|te|BC=e~bLik*~qJVkBzUN-7(v>SSf>6@I2ub|$+lZkMyQ>z!@9!^U63 z&-*P?*z86$)E;YBvHxr-WX00J!=DkJ651M`9-4$1h*Oy&mm+9l7WoVVC<`(ccKbPc(e9?ELjF1M08#OA>p8I117Gif6F>(fAM@h}saEN-$T zhnsCl1t8m&Pm8lmy}-)cv6s~z-tY797uE@my$hU;#r z!fmsxpiv{7`3StlZ^h2y5d0lnfU7KMG&cX!=NTJdAGpTM zWjle7*WdOM_JTFGG@LVnmIjv6OeWQud2HK)-Hn}yrqqv5CMS<<1kfjOZQ0pxlE(_+gb zsya>y5vFNnk1$Er_EwwYl4F5ux%;T=KX)N;x#RgT-i06KAn(9>W|?1 zR5G6$_p!Gu3-)7gon(iSO1SW}y_pBdKP*uL9S%)7-~JT4de5sTg9sA!2=O5^jHkM4O0H=>yu zr@cf6?u57uZ|XMDdXWX;q}b!=L+m2@={NN_st_$PN!)qZfv!>4>BH0ndMGuU`k9uH z$*D?q)B~DZnJAx8{YrUbl3v0*X)x4X@(#|AJb#}54)^)N@TaEYJZQoBbu(q5i)r;W z8}1$Vg3DRi8>5)_yJlcWFwBkv@sWc>0XqNYz=SdLDmh!oP#+{ z)+EXrr?l_PfAt7Ckf=mICbP)mWI3E0)}i-b7Ji8(zTTZYR{+=9SxV~puiq~d(e!y$m39X<&AWT+C=_gby>SO+rnW! z(YXY3z32A3cFlUt+TU8qN^>fkNPR=K$98I)d|s{(N6n4cBjg1iivI~6MOs)Ul#qUx z%IiPrC#h3Z2{y|7LDi?SU|?QE&L#Srt&K7IHthw{79W{RrV6)-8_dy`H{4Up4ohn* z!$mB&=z(k_Y9n2Od`xCy)^khkroIDt=xM2gU6Gm09%t=1ZGW;@*dMuf=D);m@LimO59&_z$7r+I(dd5ZKk>Ti zR!bPG^^qVO%a~2~;^uIb?62*wk$3EgH;`d}?$Gj}Yl_;j`|_aj^ZapuqFMdMp@A{-#^w0gQI zS3=TnoH7Tj^5r1ZpHkQ3Y`IMT7D>$qY+-cC26B(t1g;wj4J!K2H^8=U%)CIeq87Q8 zxD4vtYGaW)PG#ZyaN+s&MVn>hXpfByb(Y>a_$xf%$MJJ)lFe`b!8zCdr*j?RkS95(bt2t>eMMHH%a|Oo2fefu@JOx% zrv%;xO8DmlTO&go7j7+^!YOm6E?I_hot(QIn?1)tdUC{_aT}iM&Zz4#pJS6LH+w~G zrmu+{jZ*$hBzUuYlK-*)Ua)^~yO0}OrX5l*6YtF>Ao}it*W)kSQQK3@Y(%>YZi=;5 zJG+m`fWJ_ou2IX$cH}YR2cv-cMwur!mU-!um?TycUrUALW!eX=3}z)4D2=*Ji*y~P zDYF^mqC#J&YYl z|H?EYcaf~NPdz5dI15_98j{6$rM7$$Zd4hWVUD4hDOSN+%AV-Ra=dW1#}2BWy{Kan zU(~u6`GK$S=3d3ESOUwta>N1m#4n*Lu}Gw}TwH3Sf6zA3*XS$AQ6AzCTf4JExP#PD zdK&uWvyC3+NF}Cxl{i>)eUe2h5AxhV^|0Pv)8HMovrU+7ylOG553NUSlk5i_6QG*?H0Dc-dHGjI;KU=$X4kKcw}u!!;EL_bRmAT z<*@CnEr5pYdHX2G7;8=2b-Y7-x?t2(Cuq&21@dfh85$oe#0ud0e=jeVOT)v}5m}uI zMhW98I$_t?W8f(s#OHb+eSjHBXE4X;L-?srw3OnmVBWJ2bCT`YQ_V2j5(A8N<}>97 zEu>D=dziDqXtIz5d?^WPC-t!Ot8`lS$}S}$EtDf-JN1GbHLmKji6dqUQtqKkYYbT}*!y>|SSS>uCEJ`aIi2=go!6RW%N`jJ?tQ(dwZy!E)gb!I;n~7E#8@ zNA!tWU3wLjfgNp%lW>-T|A6tzUenpmec$4?UZ)RX=A@8cz{@O+NyzZnqv&NY`TLAjEq-&xCb%UyVs+B0RDWacux7JIChcy8=dmLV1X zhs@xQVaO9C$w=rk9AeMmN%|jim95KI*e2*A);2mC6^zq*S-m`{C|-5DHd!sKxa6M5 zVg&G9J7~JiQDiT27gd=~LI%GH5=Kwh4O}<0UNX^jItP#7D`anLD{s*dIx8(z(&YhQ zuANnmf&v%Q()24vL$Wq?8fVvL*vo7u=Ta5OGvo$pGW83Ejt#!=4XMLK8>&0JgnyXZ ziQ7gY)34jiVMc#)Dmjgr#uCgHc0YBJIZ0}CPo%|C^|OX1pH%X|6<-#+5#Hmq%w^XgcUBI0md++HJDP*w3?a+{yeYDO4XDUd6>RS`v}g(Hf|-i(3Xg1<~_%H z+dO-^#mBd@^y3$!`RSv!(L3~@o+(Y2EaJ78Uu*y(`@3kV*vM#Y@qx6fENjgMl5Ut5~*mWBE40O9UXkGNZYEyl?I?hnEX6U5O#P{l`nQwL{OHuz3DlC4F za2El4!dODE`V`}|dP+N{IMt2V4O~%IDdp8|@)%``WT>Czndi9f|3M9yi29jz7TWGCZDhskNI?J8JoV~`cRrltn&PqAs7jTy^cr2Gik{EfXtuVRwXdum0!p_`H)sPg6j0xd`*NiC{Q7CgcW;YjSVQd53u zOxDl+kE3f0lOtQh2UXSGgV-BmC$_P%ZF^(e+9VU(=Ek;dXJb1PYi7C&2lvhWai4we zK085o)j8kyk}e??jNSZ$k<~nj^RptfLDS&LVNgSb%+kK5yd-#r{OlWabA!ZgFOPja z7#`mywm-PyUGY`oZowOLS(nw5(c{z3Zv^`Kq0zDG_+J>Mtq1UIkA|i#5m`pwApfhr z``$_FrF1(xx$SIr1o*xw_A2DPUZ)-DIryZP28xIA$UF(=M0|^U<;#OkksC%X`j~FS zvwau20UvB;rwS&BuZ-vVbkK_*?%s5g;shx`HtFT?!I{1*)?;64{|0|1B)p#wobomD zBXQrT0tZVC=r+5Cx`%GXZGjqSWL(M6s8Drxjhjz)mYdPrxr&~IxAhWSd*97Mz#6~% z7x_E;URd9alEw*ki_WAoNFG|6+(cL1ZaNpaG*RHm#;BF@nM$R~>dwgU9=cYQ?Aj(Z9fo%iE=to}I+9_p#W=LK|x;&d3f$v5(*z7xLh zVGqL7M2<>uK5Sw{AET)CNcAC)+&kV_XBpVVO>p#Y3yy&wgoa+k&+@uKTbi9@fETEz z|DZnzA4rWbg>JHS{t4z!+_RgF32YWH) z9PAQLW*joQn~QKVWo8xm75GB80S_7kUFmrIe3%>Q4u*%%2{sLC-12W^F z(ZbJiXDB^<&F%CR=2pj#mj(F8v01-hSCqKJ!M&MxwS_Du2Lh z60J=rPO`E{-pQD6lmO;Z+gzdwkPA+6FA02W2jCqpXO{?#wbO?Tx3#^~OW~d*f9Z=x zXP(jD(N{g+X zG4|lkQ}Mmy5<`p7*j?v#+x6qpw0B5H>HoXG9YC3bLDjS{+$>UJ0ts zR_;!Bxc#4bx}$55OjF1(SFq)&iJKz4EW&)-IzomC-lB7s!E9xX#c2&+pUPlz4p!( z?}bxc_m(lNJWX!IvK`ha>j(aRNy3JOFZYiOJ7orayLb$;!^hLt-e0o0^9WhGYeQ*l zj;Z-waGQNJcoNwF1*GW>A~RJG+ROZ5cLFNBTEx!q!4Vz99)}mUQv2_b6Ks-5sj=Cii@~!j^t5{yNz;+&eV&Aw@o^w7AR;p-NE_KIa$8u^@Pqys ze`enks|{bnS|ZiuF&L=Y?po&v`rhX|37zZ67B1m52mZ3mTcw)meQYU@G=0_!6h`Th$3UZRK3cE#aNQssG4%<)!t;s&jG|NlUWx*Q}E{%53Vp?7Qik=WpUKfJV(? zVYTr8JMxMA`tS4GyXbZfeG2YH&*KVv4feS^p$6VE*Obe}Y_(p!)Blhzv=mE>+4pa> z$0UQEZ8LpMFG0OEn}m^u@NezGoY4sWqVGZivEC;;l4+y?=H)tO7i+Sy+5Af4D14cu zgKnkYd8@oBIHRXRd%9OukYjWvXo*Ja2&lj^(zI}z?4ifeJ57pJ z2diQvP&xH*H-ncIxrix|$37=s#jbFUg<5+nu-_c=va$fZ4+ZCV|91c6z&~M!!|Fv$ z3F{m&!Z#w&lxw4jjwXl1c=^I{oc`bkSm<{Az+jg6&&VQZ=FYaG^#a+9jU{{d2zJzp zwz>tL2R38ZTL-O6Q)tv*Vo&qQb?T@?y%NY)xey;2)W6Ecu8n^k-^ZS8Z}aARcl0QI z0eQbR-_K9Ndr~OuEt(FqhDC>849gLoJS=ITrvC>tG1Ihwy8D`}34K8U@Nz>!4?+V& zrX393vxPem$v!1jD)cyB2lD(9Q_Mx|DG7lU{iWX_q5q|<$6k^aR(f-Yf4ncHf4}d9 zmB2UA*TbLN*VFGa`&i42J7zRmq_)XL>VWeL+4#TUqR1CNGrm?_0ee(1vs=ODULo+T zujN!$92p5`k$pBfpabQ@LL^n;zi#br098Y8S~zD)3uuQo=S4@flat@7$~;=J^5 z0|eYb?p*gJbd5f=88y`TaA&1qC0ILP-I2Iu`tT&Y8oIuQo5zjM>>_=p>#3gl1=5-_ z%QQfTdXcBPJv!$Jc||sp{P6G3GG5Z{{Ha`|3yHg!s!zx$Z??DFUTD{Z%WrisM|^sx zb||r^@A_yLy%X8p1O2;v6T*6jHIB#`c{o9eL{k%_O_V15zX;RU)<2$%qRE}B&b-*0 zu{nPJ_>uN!%O87w_5WEo?(DC2$VPYqoPUSvEz9s8YzFv(CSi+_5S})2ZTOvt+kw|% z9+;`YY&N=P%Bt$l2Pe5x*Gc3$&S+qSU+uy6Z`=i57_SKQuBYLR>kM@AmoKqDj}>ki z$aAnU4~CG{&No?w+(u9%6bb_Pt_9osK+#t&1N=BLATKg`jt)!%=9|B zN@jo+X(eBZIns}2o_R!8o8!<)?%i(p+>vTP9 zNxuHpO6#+tBfjNvUSecG^q0lZs5iz_V!8K?eAk`K6Gl$+F*f$fNWkfDE@1umX8BcR zb=!Iso&0c?tZ{!}>i-JuN>0bMPq;nZGWxxGk2KOd*x4;`8=3tx{l~*2BMOJr4qJ%Z z>QDTdHThw73JBE*>?li}RrcoKq4*%04}M~|%!s$9D_upC8BdKRP`k`AYxpF8Xy&Ht z*m7u`ZUapp3bu5XqwOL{=$hara{OLH=ZQ=pijsxu8?qRi`CeOB06At0e5d$_=-x;kmoMm#pJC??opO5H&ArO*GW|_eF=F_3 z!0Q!=2!Z$b<=}}$L=g=0;m15-guI@p9+Kad3g5E^mb|1PI_mT}nsUpu|Y@!dD z(8cHyIbT`cV$bIUp{W@i%5D2YDebnwZ*G_~4vC_z;XXb<$I%$x#n^4x*om`--S_7W z%i-JO|BklUVdf3ok!1}^T9cr7A^t?>gNU0En<>6kY>`l*c$6F1ebilXjNPNRtT9%5 zWSkz2SRL6X>`}ODjJLE}N4k23yy#^13WZAATjP@iI|d5{{|?0jXWLIh;a)L!pz0|* zAQxu7&+j_{oqPH4wBdasS4N%c zWZrGJo%hn4DEgwAue|;X$+ffLmaPcYcu9Va+#_Y-Z{G|A`hwaCoV=%cM@JEd{YMKJ zEqOI$)YJm+GS4h#-88(655KVx?#BF)gn~N0sBKTI?is=F!L86NHQoQskgTI6_ zQ>N3CR7HB8;LL$zZxdg~6qrUvvT1rNcmhjIcH9qpx<}aYQ>2+=$gRZqXVh7OPOHMPyzqV38#Wc*mJHbKK!H(9_ zu)ym%<`M9nQ;hfKBclWI^rNguR+%@2OaC#_=sG(koD{)w@eVrSQpVSdT^;%mzt#mh zstf4c*lW^-4Ga4_qHknag4qd^BV(gP_@aoKR$1R^)}LR4E|$R?+AVY}SSJ1+I$du4 zJRVmFIXcvy4IOepH9&gEf@%w$UK#TwP?*PfTcZ32jha?QJ_~%*MV15!4R^q!*K|fW z=j{FV3b&g3#6vPAy5RaExAB5e25PhoaI5z>o|}D5)0}8LLFdd}o{J~vtJwfjh@?>; zWEo)C-@yJ}^v;S`?ia7U_!l`$Z*?|3l^jv$pf{SLyv(XVcDv$yi-i*F){!Ofzu}Y@ZYn?4_&d}~qqWC-5_>cX1 z6@Mh|3wl1kdE=2wl|nVZ8#TeV-ulxYjlQ!la2XyC?DuyFbTD&SMOh+V206<;;9@K5 zjB(Q2*TGI-3%-WB@`_W*=>(3syXvOq!vmWFi3)qoN?_EV`mUf0;~@T5#W&v9hgak& z^$e9jmIKS|An|jjJ>A{z)ECFSiL$!fsIEif(+V1&zL;faTl36K)&u_1h+>o<29neW zI*+zE&1N{+?4#J_=fXSrw_GP`>GJwLIxdo%z0D-%1hWHjA65e0D`4gEl}5wmQdWld zCXGl6wOpPMT#S_+1ax+?zpkh%<5rvn_PaQ8u)fG_&_7g?$<#jeCwwHmXn?gLKZ%R8 zRG<@ps&JKn#Nxg<4JYAMC^?tY$>8(L8#RmvIQ27t=R5-~@p<&-zDB=p0_-q%L>#t- zp@^r;?>rP`MU>ns81};m-Bg!AE>up|1)R?nsDuN)wY-wqnmnQwQYz*MQ|@v4J10WJ zf@|%m!O!jyJ4$Bo-jZ*sqw$?xGSitMOl1ec+Jq+yD;?f6P$s;8U`lwHb4lgfzXb;AQ%~n3N?df!E*Q(R9JKQ9Lz|=+h3uB+k)gW3g)wAq$W8G4e&W9$|+&D4>fhh+6~cpINcrX-WPe~Tr!jbV*tB&&KQLrzgK1% z-*w}Nxt|v@vVp^vm@T$~$GeRD9ZNLFw^ziijX%w1%qZ7&NnM#Pq$BxYBa_t;+wj1^ z8ejWBN%MoXo>3zQG_mPbBNc-@z6t0xwSz^2ozY2U;3T;Kj^Z(Vz?pbQwuvX=zxYnx z+gxH!Mb}dr;Gs>8t42xq8nYt%yC!nAUV8OKj3_CGKu7mcPE&>DW4Rq!+d)wS{;`9q z8?p5PB6U&dH`}2dGlsN*qHdbnLYC^M(D~nHT^TX`Xrwu7-b16-3HFi~WpjC5dILN6 zPx=_{gx&Vv4mzDe^MjLvW8&?&)A7CH(xWeCfV;+SPOhtu#y$QA@TeVO{ln`e_%Gqp z1cMVT2rm*D?aLmhX!f*X=~#9^>=Q-oOQ9vu5kCt~j2{_)I@XR0#10K@iXQ~F;~4T) zUNVnug*UT?wE(Bjd;e3bhkrcwyxPWPGmd1mr7IizCCfKdr!q=>{Z^{344$3)#V|??vOhZegcJ`o|f240ic7XfNMS zztNjUE3+K%un6-C60Pr81FefzZ*zk=hc197pb>7I#qJ}wg>%bo?({_R#aHN&Dgoh~DrOiHTw7V1g|@~_9|zZrMJXH?Wx!G1RI_y< zxa-2;AoxIsAh)9ry~D06sRtd0ul_+oX5W3p+P@Lbf%0L%1oIF4`Ta=pZ z@ z5$w*faL(5RV}ni;u#uaQF|ioghfk4}l?L2;3nL|Rp|%@7Hk1uR|4BCd8AoH^-|Gyt zGrKqKIOx@LyL}xkZ^@o)K09v=G8;D7U=&?y8;|56XToN2ZO`Fc z(cx@6-OT)~2C%_q#(4gRQH6J)chKgTMk9FwpG-A+UuUM#Ivd?4^XL~|ec9AmME~b53FSDG{#yJe3h(SzBxv~n#WHX zo1hU-&PVZvq$qhO+CfEHAHJfPP)cuulNRoVLipLF$bYB_y!VYU*4${!L`!0nucf zxvU*l8NQ2mAtBNa-mDhLIO-?%dWl7pmk*f^8AUR04D=v_^+z=fnLi(}X>G$ZbIkm1 zuilA??~^{Sy6Up>g8bw)5F?QT2DVbRK(=TJS`TRylaM6-2rA7NP@FHLUuZja z8H$=ZEHBcKpP_ZIy55IfuD@ckw~7}%@i|S>+4WF5g5G0)@&3HMQGs7JQgXjJoQ*Q7 zLN~WmebME`Yf%?199ct8g6q&_n=dpozI~`;d`GXebBml&9nDw#3cL>UfrSNt!&qw$8jo53y&<7ZMD=sUB=x%WZTw$js&GmQo z6&%MzqpQ^e%~nSO>HPfy<9v7hU#&md4FX?z*7I}|f)p>nECm`vO3Hk^*K|8UNjYB6!OC@CoWa1sd z8&MY9v!7+a$ut4okfYIlcSALkpONmq!JFi@_pXX)aSpR# zfl}6pW@l$g1e5ZO*YsYfXmms z5+3YjwKO{NRTKj@ny<`Cn7waHqCZV6>HM^<)C;}w+T>)2gvGu@E=UzEn_G2pMH z49J}#iTBdI<(zY-d6&Hu=)j4@uC*5)-aU9W%K|^mr}t_iI*80(BA`j{Jfe$16TL>C zpqEH}qdVVddPY`jhk4stj^vFTR$X(dnVe7Mg^7YwuLa4VV$@}DzQ41FsyS)k#rV&8 z4b(`(M<(T7*_xyyyVxfD33u@c#$%`&@A2c9F9+ak$_917OJGAOv43{~|MnGr{Uz8g z66iasFs(`BSa+TeyGcU$*!-AJ2194Lo(+Q!HwFC%{^L^a2S=f6qqpnY3B9_`Kybsk zWO-2;87)iU!99<*x{`rqf!WCKscDY1vH}aus0Qm8@4Hy%^l-b|EA8{49-&L2FTv{g zo<_^FUbG_e2(%9ujiN>`Yn7D&oj?l707b1vzHfNTYGYPQ0d3WBXbSGhq-rqm=9V`4 zmqI0j!|flzZNM1Qs~utnnGF5McajchWmB`PRmT`-#S_IL@P!$Y?kP{5m!6-Ydu$$jl$&^qz?JjBzZSe`4v7Go1|{%Yt+wNyqxo zc(|#z&`wZ96$0CulvF@|T778d*6VG+D(*us5ieW2U%)~nf$Mc6+`QN9Pi_nMv&bmY zYNmo{2Wn?D;(lL0Aic-@3j+SI3&#sT* zPpCj{aon&#WI<_XNjOpEsFnU3mQHu!wXbVwnr!I zWiO@J?pE?1Im_iz@eevO_VIMk1LiZ|uwKRi`ZwQ18}OzymPKK%C@IscJ5F|Yyq(-W zX%9o*+)4Wr_^4yxKDXeLnS^|Dfh4QJ{#I!Eco>-LzZ9tKUm56ZYHJ;7&gKbIt#fC4 z_w7>7o%mJA#M&LZ2YdNn_NQQd@yiX@`(;7egp@L}z{mFpiC6`FJ$*_1?fqGx+llt2 zG2)Fwq!%qOH_AIu`lQ15JPMguNx+XptMowc-l@{KhyTLg<1Zvf-%@i`TU|}BA;&PY zl*H4V39h`!v<=I}6f#ZnU~ZS-fS<4=I017(&HS1zrYTvxo{f3^q%zU-#=Z33BD<$O zKU6gI(jH`Y1Zs0rwN*QyZCuUzvIqPtPi76U()(uk`dVMXsATZN#mp|j4(Z_h-w%7fr#cban=Njna_vI{ZCbw$?ae^yanBI}H`%4~%m=>k?(^QF0+ zwcyM3PhB64(c_`}sDN&$N7z0ZfKRE1Ovwu9yg!fZtFt5%ZBNp`Kk8@Q=@CrqIeAa; zN)wUkuterj>7hqhf-dfR-V>Lgb-lLEjAM(^7d$gRY^E@GgOk~BMfxTogY!G|_E|Bj zOv5>G9;%1W&LHp#JDprewb>7?e-!S}t75TOgLH^x$f?W?ygxHrM;D_%b2(5V!??+3 z1J|v~I?Hi!wF14+ zGqsBrWgGFQT;eux8`=*-W$ay{XQA-WJbPd$4!X`W@IMYDzkU82=nfXfyBj0S^1zHT znEk8*Yz&`{Tpfb^AP0ZXwDN%{;LUO8!^3_GS>#HUQ-qd6ci>O<6khAyK%RpJG3y$O z48=1Vg^=%?i6kXAkU?=>u7peVF{ZPs;NG8$G^!We0#$Wsya$Jo@O&69FIOehkJWqi zRQ*!P;d>ei?^hK?f`cW_m=XhG&TpQ4I7;DVp7x@>R zm9&62s2q|g=Q;VDE68DqvR{SXIoF(m(8jDM?MN;j!RMIK=6>_KIULW&bL?h!k%{H9 zoIE8-Ozwhf=!xg+AaIBi@LbLpc|>CD-wSYOUDW--soEqxJIb0sD|`!>Ltf7SxP5IzA@U;+>Q24JDIZwoXTS-hbZh_z^|B|Rv_PbETdLgvzza^)yJRHKRR$U zFa|ojk7f_xp+WW?n7~%x$#*bADW%vYOoH-#>-2;fV~|~ zlIR%K4OvX%yf7&H(|cLP9Ivr_F7~TA*xVxU9(9N6tD7+gUe@xMK|5i78%^u6*SNR0 zz-@L0xfVy<8E&{c**OHJc%Qe%Wq41TV`qCp8J%n$Dt>ih`x4IK!vP|A|fLIsCxckUWx|ou)N`#B{`_IS9{5QS}ke%4BsA_hKt>xQ(%2tss|x z%8bF;Uj&+}6)G$6_H1GcnvwpL^TloP1}>LhGM}0U9w`yot*4@IcoX)dT2_R0+$sfL zVF%RkAJ`NcPKV-sD6ZP8B(k2YCMrU|0{5gmhYXJb`a3??@gy7lK}OIbWIZ{mGm%@E zmHx#X{1}-?M`djpBma>9$h|o4PKji?HX5i`>s#bKNsXkHx|ljk8q(NcLF{RXjG5N=%{Rg~ z!av4Z?E8tVsl8+q&h7eYwriu;y^Vb|)FG4~O+t^I7j}$XC?3;+;5=*cW0q|W^_BF^ zwtiq|*km0w)|&f(A(x~+mLE@K2DM)eK+4F&P;q+(yb(X0LCzB7q@Iu$1ktzUeR5IX zWBFNi^RN-{-2+Rp(Yk@2$L`2lsZGBEGkXrMWT{MrEKF1M5@#`wzE_p>LugTksJlRu zCh7W`;8a?#DwAQrL<`}QDF#2}480UN9}bBoeRy$x-k5Fp%@0OvK8Y7%hjA}PvZlHK z83Nx-O6B0Jyed0;AHDMKD!8tmqui-tkGsADFKe(J+R?TUS*tWg@W&ZmJD#J9uV(iQMopRFUKHxB3^zL0vu% ztYah;JwP4IG*(kKm>0)gW~h;Bt!N{Td1bt6=$8D~JL5(otMn!^+=i%Q*f$T5e!LDg zogi9AS_2nI%6H*&NI<5epbCg66?iG`Bs)t!__ertDfpla7{G8G;$ti z%T;`eKhUiF22)F6sAG14v409DQ8_3q>WS}oue5BT+T)$*Py1r>{RnqKD;`7Rp#ZrF z{yqTzMiv^Q+vy~#n@pz?LruYe>eiFnbT}BhyRw=th-{ofWF>B$RAvh6h1uR$#`O9A z<}J-P`Y;_V-pDv7DDN82Ni58g*J z@UIuh54MBVF{8lt?uRq93UJ*#{0#k!ohXX*!~8Nv@6iex<%`JmOap&tGV)sQhJUOy zD}r>(ytFTn?QuBy@5A9$LZ^qLunz9wjClSBAO}>duHcJHky@m$p08(+sn8WYqE~1d zW+N{M-yTVeF2}BVi#`e8{~hs6G!|KrJ_s&GJ(Rn3K|Kkohn<*ntJ80!C(e`3<})Pu zO|u9(m9|1>vH|UVf9f)NE_RGWVl!@y-I$iwI8~uto`!sbXQGOTK+ehnHiNY=-XnEv zigm+WV&yX}>vx7(Hhz%*i6^EHxWV?~0aTz>+#>MAr*f-03!ph~gKUP(=xU#jG|!XZ z;aZv!DFl104rT%?H!!TWc(10AP2>%D(?#mD{GEN#P=uh($>?2HtK~)9evgn~u@x9u z44uaQWPkFTXwEsLQ`4Nka|VI8F9w_4+q(|O?`?0aSI284R(UzJBS(;c-iD_*Cy%Ec z&6&nkUs*6{!^guQ7O{{=scMN%}+k%@|kAB-jWFU#8=g4?G)oW=&HVADHM}Wg!fbTCM z(CpoGC+k4U(oAF#S+910+iwRq;#PMov`~h(%1I^s-fn#Mkzk{5&~mgW@4zRRAI#gn zR`8jW_4fsKTNTLUMr@ilHR=j@u-h9;d1C=Eiwl#Aj$j$Jmj0ONNK;JCp4hqP~|_6_=~g zx7PvtQC?mXnAkycJ`x5VTQhv8F`GrB1vaO?r`L((toX!So9UEbXsx{ z{gox~EI;LuMh!k1s?{014vRt`abKNF9hM6um95}iE-nWkv$vbv4ad+aIDpF{b8{H~ zk0-!xl>?cG2aHE%1HRg*3U(s_o`#0NcOT;1-sgllm!W{@W&a9xabxV`BHEj#cd1V} z3#KA(BcZt%367(D=dI7ar$AMwvYWgC8cNGT?^joR5PiKZXqJd|XCUX}hV#wNiu_AU z?GoR}4n2&uruoqHl>|AJk^U2CYK`%YGQ+K7(8L}iN9if`NS6>*7`FRfBu_&ED3e&}89u*`RGTtcelk?d7vJi(@8opT|MaNYOs2D4gqMDH< zx)iBOZU8O#NJ``UzXuFIBOO96=-uibn#}rUUxf zI?lH7FRYu;lN1Na>W3%6mjCQUhv^ zA%UdG6j=$i+L!Pp$oC6_Ua>ZO%=v(_7D2w_L+Bh{Ava`e@LaG+T$Q->ajoOl!=ijs026GVC2V*G~b#YnC5@X>1H}!fwv;<$vaGDd5{O+7c<>?F#>Ix zZJ|(WEf2z3)SkAa4e^%eLk>+R%;DMLxw}O&(`!12S*4k7uF4?sqmMj_eQ6N5%86*U z`-r5ASopdc(uA}w&dViy0d!Zz`5IZ0MSkTgr0v#2 zuEAn9o%cXn6Ws0QD>EG!t!DfP-;Kt({bUfn|0}w;st+exVX%jOx2Jc|`7TCy^`NB5 zhf_TZ>w|OP1wPfm#v?w$tjVjGMQH}U9c;-nnMJqp{t!i+cFt>iv0VfF!c(uE`&uRu zhx8M9gXShFq1>2{F4BYkWN=vQ<*6j-)S{1{`xW&c3&1bGXZkS#x=EV-2!73+h8Uw^{;Srz0AAJ-zkr4L90d z4s2|#H&s26A9Z7B4OWn0yd5tJeq|SWN3Q>0XVMec_huH4r|3TR)p7DKxQYfL0r@5H z%%@%+Jhe;Es@w?Q_X#?Kj$~(W+Pg>(NXF`+6XTk?tE1I0y;JsugZ8pmD<+6fVCIGV z7Y^RW>KF74msvQQV{GB$pi4Xnb>e-q1X_)A7!9#Mw82wW3Yv&IGC~#d5(x``?$&O8 z+<@!Ec9|P!XExkOnZOfY!)DY52>)d0-qIrJ<&vrn=gcKczh%&1yo~%oUZL|g8Bn8i zPz+T>R_|;YVzc;mqpeZZ9E5%N3f@px<$xb{1k~9Da0XO|SF*L!!1)qtQdlZ?|nP{tNa@Ru~sp^!^fLZbUS;js*nNjUz9@jP;BsW@JBFt@RdC{ z)DR4NefiPL4~(o5&fH1RUv`6@YcRSIU;76JTKg*a38w#Kcy4-NX6USl?k`S>FyKRt zv3YcKoc!t=RAnva`q+SVr@*`??nyh?6%RI;ytg z6lx4r!c$dQPscNIlGFnWzl40l_mu*9!*hV`*TH6d8K~J_V3Ln;ot17-V1`PzSKn1!M#^%8^j9 z<`u&++fGyul!-~L3;dMbctT?gdc+JPsTpFi{2=@f4^?-a6z_K=JnB8g8ZQkv@ebmg zdt81%_GW#xi*6;IIp-^l|BP_+nz_}y23^xaGYwRSjT9v%> zF=Q+B^IE#iRWW=9_jOM6f6X;k^R3nibGaDvfSq3<{?aigLstLlzBWmSw%Y`2kom@Tl{jCAmL|(O@L@dyYbK~ z|KZ(5hHnf|;(g{jL-=-}sjpao1?mR+K#kwcD(O1_$LmhqYSgPH*4gWz;QwVOw!c6p zA05(m09^SpmDj{1k{f+rPt{E5rs|O!Xw<1lTud_0^<oFMtgej#c=>717TO6E9NBD0|%ztO- zS^5SiKzj45c?=%n#K=e5YSr}>gMZB>Iq>t*dM|jr2FT>zjx5<#4oCWWOenjX+=;=j zwHDv`X5josXnOXVuYnWy1N3(@tfA&YYa<_FJO%!+L9Uahy?J14IdkDy^r=6sk1(dP+Npz5$vW zAtsALvKQ2FiLk|eQu)!4(Si0MW3itfW(UxdS%ER0pQT`PfaK4l(ZKuHz^^J*dSGcE zaYFT^yYzQ7%=Sfo?lPJOe($HaW5*$r;~7qYGpY%2ydL1N271F}l=!XsZB0)AFa8f1 z2ScFfPKK?$7PN&ktvr06F`Jg-waI(RRWW@Dn*Lo*TBOYlvJZr6hxP#Tk4G{Ag=3JpgKZjfNegh) z_1%mjp*W;&tDpF8^75_xm@yH#Quocl#xp~+qTC^ZRD*`V!7RMN>*~#h&pjZQh;MSM zER9*c5h;T?eK~E;XYt0yzs4;CDm-(M*~lnm3;=FZM~CZ4G6_z=wO(ty)9ukoFiNx+ zKY+e0(>uZEgu}1#0Nia&wvlFG1(BotJF`9+_P)%(AO`3Lz$|Q_(l^z8czYMBNvZ>s ziAc6b_WTO=3H#0&zKZW;J)v0nNnPx66`>|Qpmt$KqAFHolAfpql}Sz{o86O%us<)u zrqM-@2W!8Ge5cv47lwl&XwRFWdEgL@pw)pfJi*+26Z-q~at+jxbFtOulM~?GXo+|5 zU$&6Hha+?hKCR|_i4kJq#&J56^(6bC)NQKD;GRy7JeJFz=X4iUfm^?Ko2V7y3|Xr? z@o#Jd=KPb^I$wThCYbrgTF)1mKgkQ$PZc3U1n^pCid)ZKZTGf2KtH$625e{#@#?xm zR9^W9eWz;~xp_bE)JOdZkPEB)P#gP$Z2A$}3rf$&m_>V% z|KJmP4h>avRv&lyE#PIhzzZA)9<&3v&PvRB_2gMG5Z$DuFpXVPMbM6N8p#Ja;3g?e z3L)R5412>)urvG>x^OciuV^YsM5{q>dJ8yad2z?94&*rCU3L3{A6bOcB?>#*;NP8d zd?R}cUE(sJ&i65UPRDMv%IIe<2Yzsw{>c`>AF;<<>CHffL}T}-Q^oy)-l6Tz3wM;; zAKd;aJULHs&qU)XnPyxz;(+y3v1(XLp{1M4_OMOlC<(_@T^u{L0nf!jxMUw8Q?m;+ z%x$2Xj0B#Q2fl|1=+lX2`H)^apC{n8cyBg^jl?rJ6LZ}U^+Pt-6_MopQ+@(&^bYS! z68*R84Srw?orn`L6HblAP_Px}<>(AHQ+wnmQnv=kCF+V8AggKZ;{CQyXIz?Ch!7`SqNU5iXWI@}i#p)!c{VAnTc zYWX48Lbo&)yTV8GUR2b>btZiVQ^iPlkLIey!1hb&^lFS=j9uX&vS`YJJ#B}Ch}k?Z zdXDlMMa{hEc{u^M{5Uof^IHj)5*v0LbnkzPU2vr)!C9~vnTQ{q*IrL|4sxQZ!Q+?! zI>YY3jEA9LwE~=fkN6p55l0d)%W4dSXRtBmiplDy8sW`FJBrWg3?8er_otgdGGPEy zeTw|F=g8qp1g%Z1naQ%OwqQAyfg?_4m)@w$=1EM)XG;&7YAB157XX^YQ3KN1PfBY%9oI)Ti9 zGWcf=c(fX*W~v~b>0@{^hC)wylJtjeDh$);K4OyYdMoCe!O&Us!A7MX2n$i%hQi00X@PygI#?!!x}&aMO#u((vfKgTC5= zKD4$u&p_{l)e@OGm*EatU@ky^XKua<^X(J48_pc*{niXj_ZoQZydhpM+#>VEG&xDm zP_Ohw@|m1MYLv;E!R1*McY9B2($l0e-tdudQ(gwU`O>=sJoGWVAl-2`J|f%kzF(o$ zaiif4;4}GpB*1h5R#eN_$9nJxHkt)>e)3Af6)E@O&tAvN?3RVhRONBD#)-!P}4=?^IXtU?qXAcA`hwNwo`k0wFNTnZPP7#nZjRn=ceJCpB>= zmR7l-R$ETv$SD4T)i&Nk?UDvu7BkX-%MFkwBn*C_7*$UvL~ed(++XQsF4+&b9>aOl zA3Q)7pwxTt{&rwlf!S}MRe;YX1mE@mTx<@#Ky|`T{|iL>o3=IZe|(xtF;kTXm${uu z>akgL0C2!K>=)X3X}UqSDXU_-NB-==fR6`8=U7{R)PHuZfBV>(3HHi z8P8f8H=#EfL$mWlbTs>|%8L{$#YE)n6|qIAu-!XEfraiw(%m-PAuphvPh+Iwm3&34 zxBeXdw1H=6Ssd>#j=a?U$kSPY)V|x8A^eza79t1YT&Sjm$sOKcLeI;cuM^Z+%PkFSv>adLA@6 zA4x$ZTr7v$aTwbIzvvU1h_%A~JqVb4TbyCb;r}JrR}#rX;yOO-zttg`k!(d?#CGIZ z^#@LN2aHw%=sWMSBEbIh>i4>({3M5qceq{0;hWA6RZumwlx&0=E)4xW7opF3OD3`! zYyocsMm!_D2Yw{7HfNimWl2GL>DBlySKywF2GZVD)Dk_!38+L1BJpxHR1QPPHrfa& zcystV{B&a61LIi?t3Zp6f`gcW(jSth0DS&WVR&xZ0+Qk{RGFXR~7b z3bJK48R^ZnC|Mb7hV!z(i}pZ$KZWc@_HY$An;wB<4!R?qj^edDMP-q1@GLySd`F;j z?~4qb>4t(*sF#@&I>}<_fwy%^S{SE?&pQf7(m(D*w>J*++R(r><;8*Xj>gHiie6zK zq5H~@lVJ$548LKbb-AV@oloA9 zRN%56@;f|>=`)#ek{5*Ls0x$|&q!S`h)9djAJXJYAB|pGYy^%qvO`c=po{7u_4_tf(S`fctL+J8a^L^+wc?l6T_suodm?NMr>!o**L^7|+2jn3Yyy+o3k>l9i>T8X<0b$#h0lk5#5!jXnHd zGmm)_Y(qldKw#D_%m?6PB=Re&f*(8yZNYu?xjh7a{2AElf5H=oF@q;W5?@(00kcVc zFo}2dFq~WMXj6I+Tfk6YW~t~6pl~s8Mz%rIQZcj_Z2==$8tmajAeY5(@-UX1rDBov z5zw<(JmI@=;_cDf;7F>A$-OXq-f^k{P=U89gu7reTH$x#S8vNEv4qHg{SW(W04LyJ zYO!fZlz4$u%XB~jZEQr5ZX+c6U3R;BMZIOfRSTh~W;4>=D;h6(Ci9*#-RcVuZ%1Eo zWcY3a-qQ-+i@9Vzc?ON&b7W>@hGs1q3gC>$be)D=%GYi=;67F4DtKC+(0G3Yv*7;wsun@!noXWlmB@kA+%pAzO~tpdb7R zzlgud6?jJcMoygNWk^aY9$nS{492CT}*^2Z68Wazw`c0_Pj{ya}s#8G^H;CNCNm`K3#e2n& zO@0A;S2MVZ|HM6W9B15EkrdmRBba`n8bgc!h9rQNw+}mvY?0AM74st$2vdXb@18*^0Wx!S)C-w+rW5X%`k2k>`;vIFfLKE6R3-DO`Xf^m<9AkzVV;nR;^8{ux zxF8N9Ibn_NNb;-R;4RO3yPY;@ThE0I%{|U>>_;`Bn@ft>ZWVk*8;ur5Z=gKw{GFiW z&FUYBbl_}8RU@AM!Tj(}?SSUFfp^jy?%Z)s*vekyoP?&ofVWi46C1(M-GMgNCM(HM zcwb&ZwS0{);su~dXoXXav)A-1xl6|3)2WAhXeV;v&w}@xjeoa-FrW@TXxERD?`n`P z1+0G{o`sBX(shCUekC}g>OfB}V*Z){6!bneWJhn;&oJL)V;XvouDqVn%&5i3@fT<( zxQCgdIkI=3%ARVUXd&1CA4zP9#GC}+k#fkY_|-2#``(-;r7M8_H36411y}{>X0T0!mwLvCAEqWAb z6@&4OFVbsO67?Cq6Pd*fFS|I1C+w>CO&k<8@$B}%#yK5$=?v)P-asjs*d*3rqmNn6 zIAUyv#+6`yOo>f?IdVOgd1JwYzjt$pYnaWddaJP6@4!Ak7HE4AnbfmbO}>v0HRfZI z{6rV9!q9fO>Vcl6QtN!!hH}eFP+682=`f8p1tt?f*7ZejU|rFb@qrCsg^cf*WfPiz z8JVF`EXT6Ywn*3RM@p;B>JNDxPuyXdT-adr+ln)2OqI|GO+imrcYF`YNETfl|2t34 z=`Wa1YOsA!du9ca_YL3ca%jAk!E=-sUaN_4>s@9Sm|;A_O_cGEm@9`$q3(48R%(bzoCR~R_W zSYJ$C2Jni+&N$~&sDfS5Zeh1Y&e2|Pt(Qu@kUdCH3;bO#!ugTMI$}PzCRvB9-qsoP z!rq1_p(Av{H83}pQ+ZTTlKF=IIUOJD=j*UymGXh1btp}k`G9wq#c3rXW<^p z%#I?FXgZ$w80<+!P$+i@6Xhmpi^Bps3V3_9I)M9mEIkDtuMUvZr$El@@*K#+^7H)s zAv9Pc@CnWO&FZSWa0!NE;?IDaGaQM96OrvDG4PHh z(eLsSUf!K}M!Q2(6od2H!1>n~?|3fkaOJ=+|00K>3Vh18u`5svTm}2Nno#;DQgG5^ zdmfIdVl!_ec%JR83<)rHC#-`W;$2?4SpsG(CZ9vh)q=S;F=@RYu*rZ$~e7_Y{n)& z51PWA*fU(95EJ2kABN8Q3Zxol&cZY;wxtaG96s@Vzf&F zWl3ny?z(H>WcV!3iW%@9q+<2h0iFo0Ixmb4=5})hl-{jyUoXaKmJ|H=FWnup98h}b zfTUZ%{px0LS74Iu??$<&!RusGb<_xWAy3f*_^xZQ<$N3O1r4?dhGr=)uVMK2Gteb> z5R=<|H0s<$0$W;{9WLt*awB%0O<<^=L(jQ}K1Dj@TOdE_af=Nl+3F&B6i6oJpuRMcHl6t@rnJ7t^6h{&MVV1^azm3B*>hbEP9~x z?FJm{$&glg6%0cSOtPDSs1(q#xNnc(lbZ>It+X)|E};zg>>tsRtOUJCUxArB4>a`^ z&Z|SfQAg_QY6Emy>-1gq26=~h$XGO^e#J!FiJS$K^ArlIQ>r8SI(h?rND0KHgiI*r z$)RGmIwFtZOlHVZ`~^MW19(u!8jH*!$W!cWuCtn<6MQAyvpF#n4VR1L4Q~)S0h?e; zO6qCcj^jo%YE27n!q2l6f8wU=w8Mm1;oJA_fBMn+TtdV zj}Ux=OWj|?q&b+hNIr)RK$}t+?*eW2U!)EB7g`Yk{3}}Rg>Gs9X7mV| zL6reQ881icV){KMvnkM)bjK{#3ci+f=1nuL@dX*7HTVZIg?>?u^&glUGh@H|fp_vE z{1@Gj1@>H~kvCOwH4Dl8E^fk}tRvn;AMU-8$d8Z23EY^Sf(q+0aI;m|a#O<-Pz>&` zpeTSdIH^pa(x@arb+Xb(`W@$P1^B=k!{rx^pN>Y(f`@0ZG@jmsdYS5=s^F<=1t-6O zx%m+CDrf8O>IGCn-+&So1na&NTWU(O54j$bbQ3gRWkL!>GpJf(Rc<|9_0jj?2`mgQ zZk^r$-|#Rb7PmyE@=7pK?|}1E#WNZDzyBl^$qoh5Vcc$;Fw>kC{k_ccu(wmz6CW|F zG>0#3Ble94Y%yOBr^tE!*@)w<%?Vr>VK@(?{>RasfZJ4lVF2IzoQnoiv&=;rM5bg) zN#<0@Sg4RGq`?psGL)i-kXfNL%8-;4QVJEylp%#m{+SB*p1t?~cYAs?JaNz2-~PU} z-u1rkTA!HvPFz;6%e-iy+jA~3n`xDKGSOMxC)ri9PrF5K2mN`dzLL%E^ZCWO{!ZOO zQE1Pr^l`ivGxMg2SO>Tnu9cy4Rpr()?9FP3D7i-MS52Mrx!lp4_vB77@Dglyhty}> z?RN*0-PLwj+?*u04a>RQM1=Bs%$H>P(_QzeHoB{j?nz~-72fe@^Wd+aN{>o?k1M}0 z>>{2`bsihVFL6VCEBEBpop36r8&Bm{9An2Izv`?mclE1Td(x9t@|R`(DdzXkKfEM( z-3^EplVQ>Cnc;fcXJ?kn}c#+ME8`JeBrhaeltYE0QMM%^l%@ zAN6~0&JK8b2Ijn<{YECqIZtdDE0*nd@`kHMPl&wlXKl&TE2~SMPtB3rf^n;6&3>WF z6pCKVT#y-+b00qICjGY;WM0h~5+#`?9F;Bno+~MC&9gq%Mf!A}y>1v=pU$N3m3Q0l zdmiEQ`^x!vKU3b@zCP!soR71+=Tyr1Sg+7Y+~O@N|3g7JHAfUa0bl%{DyH{*m8kNf zE};JU73+mV`6Vxa^Y7=;JR<_$smI|t^KpMNhr5J(HC_+r>R!2+a@f`FCdKuWJGk)?-XExSZs+Fd%ym*j^tw1Tn9ue*@BRU`&JT3T<}!On zeIxU7D$&Q6P%GBBiTgUeK}&*-e((FKySQ;rsG~cldt^;Z?>B$Q1iDo2oS^N=6FzBO z{6@6Oe4z`Yahcn&@6)0@@oxRykBk1DAnfVk;-GgpCfLtS|FQ})uh>1=$$Btq>+bcE z@&3#?dUv11`;SZNnj)PytZN?KEZ*OtIstxhcheHH?s}WXa4I~KDlL08GAC(k=3ZS% zwW(*X>Ydns=5NmF;clL232~iLU$#hHp6ZqLg15XYPmer>^FEtZInV5LjjReZv{0_^ z;C+9_k1#})c8#++kpen4Ltl5VWxe1^6TJR*TgT{BrSt{P*vq<151W+tDu+U|)Q+Gu zzs-%oO+4xcq9XBMW_?};N%yjLkIDx>Co^=fR0?)m!xH+7uE5x@3|>+zj7}EnelNny zo+E*-!$SM^RcOtGv&<~S ze@->y^Oo##*~hc<=Jd^cmFXNGjCUn%)YNx}{Q1zxkEyDu$x!^4Izlt5$=jUf+NQL= zLvy^2*4o{afz9y=>v1yJ6x{62h0|eIEdMR(4mjaHbjt~0{#0*1vlH=SN$qGt}z;DrAB@*?jxT2!ZSf>pcF^nzEMs!L#}G0^&F zTnT4!t{-`p!@-!KvsJk&^(Uv$7(B>g_43u+k5Sy6qp^i#jzCATt4UN>^|8&&+fz* zJ)LQp^G&=U8fXT_Mn3Yf>4E7Rc{wNKS(&F=p00WNQi}SUg+CH!x6qDl%?I>%=85Qf zb0mDvHy-^1@XlHS-ruYCRRYnAd?mB>vp&yB&)_WF}n@m#Fu zNA$)4u*JjF_=>*wE>7G6;XUry*yohx4PLOad12bZa$Syl9J0(VuOgDv^R}wSRdt#5 zRjF;EBiv_l?EQLVw!rXtvc}=px|s|9WzfY$xFY(wJ{7$OWo|RSZAeCy7R`({n6Wv6 zr>UZt@p;%0n_Ak`p{41Qs_KF1I_Y=uq;JwhPnfsK`J#R-M$M`am5r|E4*K4AXblTr zlJpIVVCcHo)9G|^JFKfZu~F)e)WP81uwK%g*Sg0JEpU@1_S_x4W)JfPhK4ezsLfx?qG9~dSGr7NeM=PRFVZvLj zOFpP`n%Qq7c`@dRL#xD!;pU*f!`nUD-z(5x{*BMqo3sjl|94zkuj9K|?<(Qx;J5Hi zKJ_d4dk)$0Q@Ad#;STK?%z|x~>OpQ3-;S-Sr^^~l~bCUkSaHlyY zJ8-5?vb#>jug7)0lh;I)pQ%R+?CzMK{=B%Sz0u51zaB^5!wkT0+ygdFcB^2R-A-oNW27fE%Pg#S7M^O$~}$ijb8&>keq-8+`?DrWd5nq{e#> z0WLJMrd#l+JFzXj*dg}qrV+-*=12T)GGQp|C18!q_S zOeLQDD{{(YLOr#IvS(+W%PAVyHjlO&?A<%L)w3SfqyJ{s!mO9w$FL=q<&(EyniRjiiAD*kEyLzYN!CULWxFy=3xm>qEX+284_<(k%3feWh-EQ@3>UgS2 zYL;%+VKCFHveId2QqJY)?V22q-ZtH#h}jQCocrOySoaGYit{AL;saE*g(lN9bE9Y? zzxFmEZB?`vmp#lJ+U{zJ3&Iz}7CZ>;X?+FsYL_vO<}-82+n9^q6?2@IGvg95WKFa$ zQ`23pOET>;zhtIoO2cz=qS?`H?v|?)ZWg6qOegMxt*D+Jl>Q5!coW>cI-F%+4KPFY zBu`I$v+tYeb4>7<)x`d}a{awLEj{J6H}FGM+@aJr@8P^3yZI!oUn$bhTmUyXFm93S zfi-`qh1)}S%G71EPth%J&Xmbajz+urs}hI)#bE$vbSI6Flj-H{!rel05crt`F}qyJ`6? z@mBkjl^ppO1do}#_DA?tPyrq&lv>UgdK5NonbhM`H$Rpub+h^I<1^Rg9O5ip8KtBA zZhviv6W^PvNv&L-wJU3>dE&+MzK`#3$i;9IoN>^s@uOx>?xqR#$Z3V8`RQyEc(hEW zCQsRz%-1|?b>N-{_|E=Ly`fUb$tq#`{A1|`Stqy?TAH!DMZMcf$H^o3?@OJNM{xZs zWuK;M``dyq?3KTR73#|k`WMn!*_;8dqz_RIro!c~>DAekT%!+clK8y~3v!WJtoKBn zGUIi@#O5P@AN@%0crSSXGCPqJ3UmG27lkkIz*MK^ybzQVUv~2J_Sfya23CLDtiX2R zim)GS*}K&V@pbgb=?zVOn1F5r=vTIuh&z1 z)_P434yfbZj=}@+L{H)(3Wo!{q}$w|jA*y*=}}VL|Tu z8lvV}PKf*TA?!A>`V5C_b)KkBNikmTZ}o5Fk48pqqJ#SK*NRn>k^#KIY1pWp`6A=R z@E>%OZ8Gn7GEDRkEc#CJzG|Z>k9DzVGv7qjWKo=#bLe@Wc|GMmC;Z56dQT_SxU2`# zi?befqwMZr4DR8}BrEW8P=0@F&o5bZBN*%bAxwKId@uluRD|D}AEJtwvecYaMN8 zS$br;Wma?d<9v`cJ8MwZuQ1*--o^R63X?r$QL08kQ-OcWoR7QiAB}Ne&Q8(!0VjQN zTuWZgkwZu0HUlo3^(H!ICm)GBH&f%k<}VsZLpsJ4I!B$ckEd?ECqLiJt#bC|)-XG~ zTHl5#Mx0o0IQg^UaeBvkMYmAju8+o>C0JUoUsavLBe8Pr!-Y8NzVx7W?uvVn^8c<5 z$$qMP-WZz7H+YC_+Vm!BaV`R#;X9so2hAXT$CY^07x5>qb|z|Mjn7)n_i?cq8vFPt z%5&O3fgzb_jbF_fuP^>=b`jj<&6uZqIe?$Urmir1U|D!x`X&5c1$O|oO7BU(nfhO< zryjyFc+{=Yud496uw&=U3i$Dcct+GCX_`d%vEp19Rpr@>c%r)UW89i5LXW@GEheSH z61da{Wv&(Cb{_W)){7dM19ojRHr^JEPri)5%vDS5u5A4-13Y^Pz0g_uE>DCTVbMaV zMk>&~QNtw4+!5EyT<#mJmhw3&1Rww z%UPLSE~k-M&FANA!$M!^=gv<0C8w>+b>3Dfv!ynwsn0VDWd+s{$35HnbEg{TW`FH=J&auu{B5M_N*>Y(gEJuA!@i*@@rc) zVK*zjN}o+hb2^4+9+jgXjh0}97r7tiJ)W=+!}nqJcByUV6+K89iPhLQ!vXtfS@Zr= zE}z8;dma(yA6#fN^SI8XGc?v)yE0gA0_ddRa}!SP3Cah9@NAcgKE3hwOYP0g7<1JF zJ?w8tYa_SeR9t)6)N>T^n{h=Y_|p%X2lSW@rIm2;pQZ}5#6OA}x3Sbt2YSzTq@Q)`#dqOW8QyK#-sYv;AP@WofA5_@}3){pBd=%&A z>cdI*&`nLL2UKb+b-9i;sicPQy;|+@9rw+pqTfAS`DZg@bGAnhWIE{qTW{XaOzxYv zQ$rxCji#EkGpWB?o_1Li^1PQmOhfDB?xK9*A5h%;T!MphuFeTL;Ogcy$#%PVPD2i} zH?iWO&gq-^{zhYNho~_BbtlalJ!GH4vX|i>7bVk!)A6R{IXr!1XuKv@|Ml4WN8%nT z@;l-?)I-y$iC3iVmNmC>>3l~Kd_@J3Uj*k@*L$>(Z)hLH-o+lSsu!y?q*5xGE;hX? zUe6J)8$(~^gX?)<-_=XdBl%VL@=S9)j_RH%tox==GD}}~d(Nd7K@W^KAi>(o)Z z<1?Jm_u=ib<9;}{qm_LpTEunxLrw{^V|tn0vyor?q&r31Vl}?^dw-*h+@G$Nl{?*U zGFEe=x#p$3!R46Y%K8**XXa+E;wkz&dlj9xsEMWj=DbW7pT=1+B`g!3P0dN&;7ux3>12h$IkSGr8jJ5PN7gQC4JQz*J6(^r*sudKOLrvEZ(hI{E~JthR% z7}1AB(eGf&eDv0VaLqGjKU@#VVFcjta!IdvL(+&(;UR7WxsAu+cD2KgC2DVF}LRWxWGeV)+NArg3?@ zj!XaiY1L~dD98-Hq#9iIdvx3m?InYh;-nrUKK*8L?5)0GAC7=YcExSjxz0}V2Uwx( zxDV$`+oXV~P!@0BM81AkdIs!Sn|Ge7gW+>KAEVMb8{apXCE+kevsvp(0u@oQ>QdL|yZrJkvXbLnj{ zV}`rUy6Q#fnOW+cUz+KO@v5)JGBGl_L{CuZ^p!gEPth9B&=^Lg*JJ!cQ>ohBMBTTX+-IB9%gxaK`sdCGy^#4oh2Or~Ymzp7PBr}kos%>Tt zpYhbp0}$`@%uYD4r+K3HVcEat`F$C#_$M7^^-Oo=0lt#5d~J9ol+ch~@N7IDk{Rlh z{KP*|M9+6Wj-#pZ{lUUu9o}>tB=`g7`#c__^64_^*_`UvhwnP&b>yK-O;EVm?4f^5 zWtq%bvnEq4{w3NGe?i4t$=lQx%6Nme!-2~)(p$~w&xRpKXFX@W1dm8XeJ8i66Taec zuWP2^P045RNL*1P?z-jS54wv+s+2yX5B#IMcT_6()Yla!zD!C5+r*HfwEwT7_h{-b zMUU(JX)Vv*ZT{slHAm=v&lRvv!_?XEDRomF++6=8N&bpoNM6vNyFYrFQeFjb| zMt5fy96(vq^!u136Yzg*4X5cLdnNU@UcLvpIJ@d~Z^_;Gy~#p)?FqO6v$f{hP>OY;MZ9B9vp^^^$}0wQD2zTFXw~oy4jtxH=k_;8_myb$uY}A zpZ%b?jjo>7=}=}KioMS8f?b%WX4a0Znreumc;SoXrkCWo0lK0BeUardrM&U?G9&Ql z=VD_n6mhz9jqOX-GX<*_G@8hP`^E4dDKbxlJ=DCb&1@J>)9CE3i!S;Y^W$%_<8zYz z?ozoI6Ffx?I}{gsyBTq+D(M!pP@cjlwlL`? zr4p{l+y72ji7K<$Piw1M$T1JOvOoER83=_ah;K)G)funF(~xsr;BFgq*s^~QYtI= z4#=wEr{O5hoOd%8Bg zfwO5N7W}gGnpD~JBfNa4RTTT<_Q8kIk+^+S8G{pGVbgJCnR==B^+B>YnJSXIzuFmp zBFK~K7o4vPu6KBWT|1RKtE>3*7)JE3WGYtk$z&<_R;_Shu%0937qw)C@Rg)hFvL5o zf-yQuLq1L&e%2?gcgM+K@gO^z8>JwY=Xs2N^nOO9{=%{x<({39H8b5d>p-e`dKpx7 zqZv=%ijCjnOs){Ud+Q~hY#!Cs(Q}!v)zo#9ALG@|Kt6HcC!Y2P(=pUtI%^rn`8*o! zF1lV5waR1BmS``=e3Y32xA7bfHd)}Ms8H01-hWFtBdD65l6qQiA_N49Rv6MBnzRn0_@L3FG&YNWoNyr6ogW9o2NA=M*1;MUhIri3?6=En^% zpWkwvt;J9*7DK1lS${og3VI&@npLV`}lvN7JG5PV##mz_V?lV7DMdwY8RH?p%E&niS&cU`40$Z&+ zXJ|Y)I;`(+t3Q1Sz4MabJ>7$sq#g;UrpD+jYXl*s+zW_-42$vNU!be=Mtnh4v-Dc) ziRH-2=^j0lISZSPwWrqcLCw@BG9&#Sb)t3F_3DL;{)_zS73q#VxYgaC_GYv#`Z69?nVT1em>KW3@kC-5WhuZ+2=T4 z|HY=6K9t%i!&b(GHk4({q(4sInc9=OBK-%R_v^#`Rwu_)_iH~M z9m>2EpN$&oCI2Cu7Zy;f708;2L-@rFA}x6s#R zS76-^sQI^;elbVvzFZG(>-2s#@%Oahi&N)>yMsSC{I|<|!{v*gsrb!kk7-#j_a4@r zxaOy+Dusd#W;eCru$rZRZz1+#8ZZL39aq5dZ{`6z7@v}pO5?Lm>qmUvn`)D; zo3+wBt&8vnUHDWRnDhQ=Tr*h}rQ(g5A2X|Q^u62_yI+4(n!9Qm-s#4ma`Hs@WUx4u zO07#zOE=D%j0@e6^)&bP>tfrDGU1KR?yl(hcwgpu({yHHo;p%=zT!9e1&_SmEdWE3 zGj0~#h^uLj+24@*S|4LMj-Pd05$Ee4yw|+>gQ|*cyd>`==jgDw7(ccy4)F5lW6`qQ zv+M_FL6OVs29OpqjU|1=0MCXJT!hGGhdnQs8dQi2_ zPYpEn^p@0}`Url;j-QQ}IEP)VShLJ}O43_V#ps#%?zj=|>381J=Yzr!RgR9m0oG*B?ugHwrblKDPsBPr*+J3wL*DN^vU3k?!X!BKM6L%1 zI+~$QTZqAIsiUU0ynK`UddsL|K5-N3EI9Qh-(hZ08Y7X%3SN!NC=a(3m3P*-HG2dt zVitrs)vvNa8GPp*K^|VO9_rus^^naEuc7;&G237%&*LR($MfRPv9^;`q7P+;;C_?n zlgw-`q&K)q%Y@GatHkZ@?*E#fzS7;FU%JI@&t8s7% z_2swV>2P@PAeDG@SWeu|^$I?Yk9gWUoNiy7;hFm%6xb|&)Xcaka&$~vj^MeS{6U9; zdEr4lxj#ZUgY<9Q6Bu zCw^NM`39AvNh%l7R&d8>Et8|(N#;_2@^Jcm5RIW57j#}bIK6KsO-v6Q4QX$LG(L2b zD9>Z~aB4yDZ1}OLegd0RUysAf5bRlV$97~2X5NU7X9^_uxhHlr?xKYJ+Sk0zX=%5b zW}Q)2zs(i)VaiR^-c<`djy2o|G+aIWky#A+_-6j*e^_V2?LM>UOF;8Ag6EU^;gH}# zHPRaXua30GkL8gbwAeghrLa~oICwEBCg1jx2bY=>_pZ4AuwK5N@cq{!`4+zM0(fYy zc*xS7FCx`Hd|oT!32<9Cr~6vHCi(Tj5A%O^*!5pvuzz-s&;3C?EA*imOc&@)8ZOeD z(RcL{HmSC}RzQZik-9lMevNkbfPL4WvQYBBKI?PRPo*ACk4wFhE|EHE>iz-m{$>66 zWs(E1-Z(qEPG)@0YWJ3wi0;TtqF-*-yVKL|`&E@uR~3AUt}`xO7XR>Z`X-sLzI)|Q z>++nZeq2aP-YR0>ovD?XlKCXlhud-_rfeCVd>1VImHTbJau-4c?!8Uo!e<=!eeLna zB6k;@%mGh&IcIkX8c}C>ur7vwYxJ547B8tQhKT&1a6-)py4%$S%%b|up5JUYJf|b^ z9&fz^H*hJq`!s*~Kt8fZ)xndnHLKkV(8=vCMf7ac;co9r*Xx4~?O<&e!JAjxVGGNU4(Jq~u8Tnxu7gB}m@IiH~CT*+I$JGCRVKzC0&yRWD^YO4tJElhP6Pw5Mp_L;hP|9Uzn zZia(jfb;+4S$GS2|4CJNT>d$szB(`UNNRmBF?`y}UhRxs$tklfQ%?42z$G(CecCsE z`ahkx8jfyL&?HsV-Bc}cb=~E^LA;0K)vO6Fy1$rR(H-wglku3Lm*d4&@+w}sCb<6g z?!V3F{)=u&?s{y4%@^TXzK<_*9_qxMl8QcKa{Q`WWis;kKH4)T)4s~Xd7GH3a#2=Y z{kYRo=cngT(>j|Ja@eVONF3{y*{JK}J~u;tm-9Xz@(~l9UWz}7PbKG=_i+zBXn1Ob zzOGJ?WDk9NjsMG84b}ho+$WUARz0JK?t5-F(s43MkznW(W7xHWwA1cH(J#VT{PuzQJy*efJxxa%k{waLP zY?(&kEZTZqb6qC!b0=+HVi@QH3HDC8d zGy3QIVg_E)q>p}aCyw+Y&eiFtir$S6;)s^C1#2@is2w)9PrGu1l@zsp6q#NNdUJ*r zlS!uVoUio`YIp;Mc~<(F2~|Z@o=6iaE>o(v{!CC8_$& z5(_9=OL?8Yj4#rS^Ns0y{qaZ_=;rMiwudr?i%tW~n$P8&w_sFWFsG}NTDq!EuI47R zJjXe_&N*oZE$q?}QX`cew&2{VoHdm?e6G7Mf6A(%_SgRu()CZ^RG$sP;8s;toAf`av3f(_;WcT^)Z?54u?6SavR&depwIi@QFD`rVPMzqP!%K7Ivm&!1G{ z!0wvtHC5(n-k}M&qVJQ2_WoG6%5E?jbUi%ZD5z^rTwgJ~F~`;8Q0ox0E^pyGd_<1D zB6!O?uEjmkR|PlB`p)$CvHsqhlK;KB`x_P6OH}RMZVnmX+g6DR@Qig3)y@}9ujkpQ z9qxfZcjF?frE9o{V^LTm6;ovH7EN1mHomMHzn*HjK$UWpF7=z~eqYmgHu|YgQI^-x zJLi}y(9*i+&UM`_-&ce}XW3;>aMs+OoT4h+7|+FHjKjMhi`@Rk&-NiVhFB*DeZu$q zr;M1PlQ!lTIW2y6R;}!S(`!&RzVmyVIO!MSAs^C{bdwu;PMeGUSMaOazlZ+Q9_e~+ zh`BL680Y^muBdS^(QS@vlXJ}j&YkfV=t0TOdDNu0HJO%rItuCeDat?p7@Rvcyd~^} zg*cIFkvag$woHAAd8-uO<2_6jMaE#JXC>uLC$1G#^p3JkV0{omscF{g2P(1wd=e=x zx#}WRL)r3NzXDqA$DX@Q@*Z|?qqx+^Pcd=KkG_kG{vry9aMwp0Dsr8u3}b-VxVgajaK(U)Tvotgili zK;&;kANUye{goN31u;L_(X-K9>z2*IktbEt9P(P}sj0{H?)6U}3_nO+Vb9dV)ZF2o zgwCQ-ecav>XQZH?vyX!JgPgmayS1=tu%&EsDYpBe^tTY~>wZ>!_a?k=zZJw^w{-_w zNAtyBp^rQgFXGGUfm_|6>X{xFPIBk=d@Np-qRTz*Jh(BE>b_g0UMra_W-W)4KXi)z zas%gGCXW?Tw|%Eq;4hgXrV1A~7wiI`Ka-#SxcGF9j9OY}rsg*{Ox=npIqsQ1$|N|+ z<@`ZMc$uD|aduDvMsn={Oi^<_kwf7Ul}}5|@SwwyCRl0?r2U93@&xEbiJ?DGU8FuIu*z7817cNsfG{Rl~55L!2r)DiY`(Yg@%k1gL z)vZS`RClX|>*D%f37<2cq+VE4SIRSd;FmdW=%k$Xe#kAzURt zRD?Eqgr#&E%?MY8Ux*Ans5J+JKa*>*Ha(MTWYM3oUHR>^clm^R@e38uFA&MZ)7@;l z65{@!_;pDtFDCa?(1x3Np1SL({L#st_#V5I>k<6Gxyb8eR^Wzx79)6!cW$rqGL%wT z2kU!FvW8DEP@~*wzO%{%?>{&BHhxA`KHa_^g!#QBy^fFms1AaE(g%4M>R@j#Ha+mD zNHrPP-!ZzFci_Ct*Ex^#DL#-h(u}-;`Y)c7ze@8Eynv7I0*9QJzLooTGmU7X3EAhR zFZ0%yh^Hgfw8Pb))Zp}7%uOC~;ZAFOFQ3d%toPoWA9a6C$+?^t<0c;JL3ZkK z@o-K!JD8lB7gkQch!Jd-u5JqQ8{*;D>beYX$QQo5?M*d*~tww zpZBUi%pTCrE=W#NgMSn|-%wqSP|+=i!plRhKjW4biX)HG?DCo=P}Qve^HLAdb;g=4 zP*fjB?tRg}>S&9o>VZitchhs~@q<1N2kyh zx6*6)?6q=bUNzxhu8AtvyuLoJ68`xV-LHWi|CkK5IDCWNH;f{3gHF2#(x36VUy*t+ zb(q(4C12AC$nS;tW`F)G)zuRD{yS{Mc@&6s{H-q}#c}*kQbFd)*Pn`QKk!^8L3#P? zGt9yHRN6sQ?qm4W@!0lb96HZ?19>s9JE+Lp!@;R(YWX>;y4qZtFNIIbXJ24C4~Pn% znB{YWDxodx`w{=zcK5?{x6?YVdF6Ev{wid%RUemEkkcTEhR< z!<`P7CH3i^Pth=IiD0X^2X-Z^P5Ss4&$gd-{IBobEf|Qsr~?TePFlsAlcws=-fH3b zW_f41En)(8ZxD1_2MbU%HAk=eZTegP2@0xhhJ-f+U$_(E)#Q4fjs=i@H8Wmoac3Tg zN<{COMKFc8w7V+&ZE^EYGb0+nL=*JRZKYY>Y$o{yy2h93u&+i#yNE8-fOl)6&b`r@ z`!Yq%8{9^#on{5!xAQ&_qlfdN7vT!X$X%ntOjsM1UT^Ksr#kh+3;l|bd)x0{Y>#Ba zm0is6Sq-r?;)RId!p-LVUCkMEg2%L%=_cQqW^e^=@ZQ`BJ@G>#a%r{0PHf#z`WOqS z9k0@b(^<#R2mjSi_v1sRTVG0;9#WBM zehU{*!BTd&PIvmOS+GzIEZM%yTIlMf=xEe6UMY@0#EDpwzu}Pie0PNdA&uAM*lxPL zt`Yk~>vwr@mUC;Dc>AkZw2WJKybj<4`gr<5ND=J+fLU?3t2sWvahEsGAkcHM8KYkx zuG#NI|3L#PX>WAl37Z7FuH*2$(45jy!BCw|W5cCtt=F8>>wMC5yQ5_Cp?JUET&PF% z-K~g@$G5rlyrwyU51JsgJ-ple@k6;2DBZ!^4v%mwT#+iJAK)VYKOa<-!S$TQAH1)o z{!P!^@9L{Xo;u8R=GuQg|dW=RS4JStG^@jz^;a?v(w_k% zSJlt@GLCOuy^V4BdTI!8gu}0Xm>3+o~> zW4ly&?vWqx&W+sFv(!}C!Vvd0abYvKR%Z^Gcvn1ro;R}rR=R<=-9^M0q%JIJm0G4g zpfTL57htrz-QL1D<`;|pa0b7nU@hhuIV3~2_Kp7)Q#a5xdpUm_?d7hi`}s}Y!eBq5 znm;P%=LrWu30K+MRiatZo=kP0e4|R^1zBT-TDnqPE@;j-H!(>2)VjDa;E!Eb)QZ~iNs&)9I6U!{pjrIn2~jgiX=yqn{?*%4)e*?`;&{p zAFyeA-TXXTP27jS@gM8;k-D*1_=jn_1?+1#MudB)fb+SiC*sa(B)hn6|D;89$$SSf~9kolU>G-Jm_SZg(_QO;=dnem|bfhf-Xg zT^MY~(+u;8Gjt)3!e_RWsVbQK^toJB)m+4HxEZ%WM@@Mx2F73TcwPZDeThYy$sKSV z1lGX(ohSW_H_gf~rJ8I*X?RT@x-eOzy67tF?lF({2dJ_(R$;GG+!7WUNBb^dKUEG} zrJ|rQFMgra7v@(Vjprn-;mFzCDcz%Ic=3B=^!{cVJ1Z>%yqbu&)j52Qqo*8o`eFHb zyw1TRCYpUAhYd6X;$*x$`NUL>;_~$8nYS>ZcR{2r_3mUc!#MbkU@#IV^eGyd|6N^|6D;NG`P9y=EB2?Hiw4}&CB97#k*YFPK z${HxC9i5;HHL)Z%Yqze2wTRN$uNoDR{T_+`jaFOzYw#97 zCgUN)%fr4pggyusg$u-@HgfgtIx8AdT&||LWaACaaZY>k7JP^!Jt=Ax(}h$fTun>+ zC3wN?g%o}De7UHkoH1Ih{uB4{@Mvw^0oU_@B9}m$z2a`O;qxck#(g zN^J|?3C%<`OKl2dznDh4JGwaTqz9o5ygyTptwblfL(Uqm$9A}0`K}^RkY311R}WwR zNmwX#wJx9Xn3o-*&=mYmHtt|=reCI5)GPBVHeoL=`CJ-m2_2vzHQ z2PWX{Fe@0Xx9I(37I#c#vyPTVWmFuoNfGQLLc z&qq`3WM$^U(w9)E&V?$Ed+KBHZ3_2p4 zUoj+0?e13M#y=2yId$56-iiEJ`)B2`&rNT=fbP*BYkW+1|5-C?TSLNAc}}iN)|oqe zIB629aZ;UR_Itw8df!`TfLB<}v*4+%MMaTgN1z5*VAC)eH@(NpIo$>xwzKT}|24r~jFY zINB{^-JOxfkm;%94bJE~ZU;Uq@=aEuR)sd&SiN~vtZ$OvF{caYCx7Dl7legzB>|kZ z!?(FoH`xd-#b#W3U7+USWTLQCRVB9m_4vj=Rjv=5O(#cj9`w z!l%`JqxbMDcbls^$9-^3&5G`s`8B6NG%T|wx+QuQ*JX;IEb)C%ICUJmI7Br3n(k;G zklDVE%V2kj>#eYnKf(X2;!AZ(9gkOus7GPMo}zH#oOk!U%Y$z@%hNnIyMuCkwI7=s zxtH^xy16C)m>{!7rLoT6cT=nHk)MCHTWit!w&@vu(mK!5Cs~fNKAlglq*eLYxv7{G zRgwNrwoQD~%eibOBpt94XVs=tg1z+nTd0lCJPo|D85Z~c2~TL=b@PSY|r6~N~-8<>D>R< z-A{{Ty6KpM>fF{QPMa>0s4=HQ-#>=AwcmFT!DjVUHL+})`^iRSR%Lc&F45)sp?Mp3 zz}C0Hiq~^7d=*s0xUArPTd42-261VE2)o|9xDX%qD5P>O#Jt9dJSi4+QFA>B-%R7k z-NQLp2rt%vw*L@*|KXq%1^+Njb`D);lX%wzv;CGhbyy4;Oet%u`dkX9?@^Z=@+t3! zYjHK#$YaxdpMQ1U^~BZJ#eURLGdy7`M3}tEHT^ml`%IW%j%ZdTm4&0pZ~n_sw^|Os z;2yvqT&EIzRHWRgPv^S-rmI}9g$J9nC}Jv!0MqNXt4`QevxeO*u63vREkYj8_= zp51l~Uz4TUf5ILqqcikU(YrV0;RuFsjL*-#U6h+3_<-BKnOM{iPWVaxMP;Z)wJTa| zgr&fcAR-EFR+xL34YI_%-MK}BU9Q%4FugT}}FnIfyh!!1xi)mWqWHd4r zWNbJC#y>axRd`kUc?$bYo+5Wfc^7f!VI3UXIaxcXid*YT|Av3}#dv4*f(X$;Mk!{e zRG@79tg0^HF7^mVSC3jz3=+=53*6xJ-Y2KNf%E7Py$e@;>zou-Z_dR4cXaPx>0qnV zRhLs|3D@;_*z-DbI)8Gqn|hL0eTSCTxq9-9+NwsfT2EwJ9G-}`ZpHWcS1>Yo*v@#$ z?9c&DXbtPV0sC+b?&dRCV!p`G6tc+!M`n3f=kn0qh9P}7X$RduBSZJ)RIFoK&3ZG1 z%30k{;+MH6IwkM&y1jvg-4nm)U4M_4>u3LlqTYOWZWP1$x8xq^qS}gaFIUl40#)e` zaU(2bDc*$%?t}X>GZx3c4tvyx{`V)GHjYzwl$xPFf6<>@wYR61<5cVGj$H-i6;LY$ z5PoS+h9|||3M%@VZd!jv+|Lo~K zYUmAdTT%RR?wo((lX!*6{1*>}9enQJs*c8~S2-BYP(kbHw;rfcndTdw=E2$%UE>X3 zr>3n*A%89&H;AD?%q_a=i_)$y&IzIP6@Nse%oSP=$kr! zdUHuG_0#TGGvqjPgT%viQ1>aju9>}EMBmBp^5$3GSeSf+$!I8^oubN4rd4m3oA)>m zd#ShMtmMtupu#x+mAodC#e-*YUrXffEV;O$jND(me%W66!LMETk`Z#)ZkfNRDsD0C zIbCh`t}L6|M}IV^@#Gz)^a%>|i>CF%n4{Na6HAdXf}R>46xa*kc5qbe)8 z1h+Tdyp=JK>j>3FkMM4ox1ZecratQlVN>sIEg!``49EYR`U{-j2DF0Tq9l4t2gER3 z(ebDXgtNrSssQsH32qZZ%5vniO;uBW{1iOLYqFXPI43Cq2hMV?CX4z@X+qn@{hO2D z`M*DR_tE&^BPvucy&}VLJr(?O89pFIDacsWn>ooRL+*if8;Kk15Ji}y;#7-Sbf&ww z0gmWt?G0)C5u6F{@(pU?p6F5GJeBKeu=vZQYdniy`;FSTvg&M*N^&JH)^V8qy6`G%bVq7SaB=Ec z>`P)ALJ!Q+cCL<&Jabtz%M*GgF5~!k0}A~sZ^PJ+as=(?fl8+zF+u0X z^xdLbGoG1S#nw9F$p~uUX>;+q@ljPY5qT2rv7PwRfU~2ldiHC~bs4#~mW)+L-OTV&mg7ix;PI>ZmOlYSV9`R$yzAMM%4<>Kmo-&o$B{$gr+Rsb z?3C_!-yCQ8MPB(1klj;G_ODKRF0a`ZUp&m7nGeUFV+z}EPQ_!Q;}z7-5A5Vda%FiH z{R8ms5>-HPYxbl}GeGoM%imL)uc!!gQ`S4W03*0c1icO4K82fSA3Rr+@9d=ds*L9! z#)n$SET_HV?_|%LkLG))Dyt`M@osxIp~dfaCg0PCk?m6-;DD|rQ+`Z6fhc;*H|Hni#LKhtYZX=HWAXRgVz-IyKLn*@ zm^seI&HQe2Q94 zsb9i^+!OuM=cenY15SufRkpwJaBQV4{hPeP@v(xNzhQ3wcvPRib($SM0c+QYPP{;j zuBfV=f$vF7zq=kw_Y1agu*lL0W~}K(jHB@OS8&qzB3B`mT|-s$0MTeekSz{QeM~CuOsg|JNkp5c9_-_k zd~9wU7bAb@I=f<^`ldsCgIs-34D94HSJMW2g};ilgHo4?-rr&E8_~w!!p5d_FWL^z zowAmA*~V(x+SK*O)#K&inp4Tm@?4I|+_^5*H!=J#sRSB?pNX$sMQ`UCuU;5awm^l} z6EYY}tNboLO67POo(!CgisJ4uOwD+eX>JWNJ$Wh!%xD_Ue^j03*&Nd}#t)#TtF2xU8kJ|DCgfWj} z`wqQom$(PCk6+^2_xw7fK}*x;e=z*WO!R#^QF3&_ ze4yUEfL8G=WVhX9=vscx1|9xWIo^Mlr8`m_e^5VOh$p#PXLxt+=jmcePyX#D&{i4$ zc39SZ&NPENRaY~47tZRSDM1zJVTE_vsYmU!1G!NPv(^oFRKgQYPR_%*RP(%-VDb85 z%}3bZ-|${Mg%O=0M!snuUSUT*j)#0#AH!f=S^m^tTqGs!mt0-{kp7Q*;yhIOk2#9= za*mye2Kt#7Q)rga9omYO>&3z%T*LQ?+chxX|1`e>sw{TR$3LEvs)@D9*l{1iX_fJEGsU7r1bc;-r=?oDOgs^1G$}e2UmU-N z4Jd9ey~(>*Tnw2jLmmj*(1)wxi#CLh1zF()_1|S8$lp%(T1a-fr+yQjERh_EkMTB5 zw7*Ztv$aKqp8vU#OZn!J^L_*(Tr7v4!q}8b#>h1fIEyb(#Wsr!wN zR9HP-mk!qgcYSVH)%!YQBFAx_hs7dzd*AdS-{EWB`Z;Q|%V5zC+_E3xlnT>A@~DkB z=o=i$OR<#V7sHI>?B!1JgUNt+x(xCs7QC+iyB7A!1g}_Glj>pE;lU`gADV?}v0*sp z-BD<0h(M{Y4-$p-LyG8zgUwP&RO7~Do@w+PPubhppVKY_h zZz4+v_0o16`Y0TiJKycS=f$Vb<;{(l?*mwaLb`MBm*HNu#)I^8T?uDyQd7;8r7^x( zufH%p+pTmK7W|Q9kBn9XdLM7aezOXf1NM;R5++jykc0nLvA0TAe8j zb2(XuVk%pNj|P8>FGD>+6=!Ha1h$^$xG~vA!B2;`$d?sm=yS!o-#o?M?dqxC*QQ$B=mevOLv7d&-^)85hP_|RmL zx;WAA__ViUahp2XU)p2K)bOjV)|0x1E9z2Tg2Q}AR0~tL!WR!Y(PN#(o!F+vTnxYJ zvsuX}_%D<**6HqTeo}9kpezmMnJ|RcAL4ttE7cKGf4(?45?gr@$H7Ru^BXLApLmEY z@P^p^CQP%HLVmk0h>K<9jp9jpm2E5gfex`pV~X?abFG+7F4FSz^UTpE-w{;7+IF9PXyvo0DpZKU2(-%uh#}#-*I4 zXW-ud&fyVfa<(WIhI5>-kiRMUBVJEYxQ=76uWIZg z8RV2$xORNFj%iP z6-loCTV|REQIhS75B#Z~nIbc#My6Q7rqi5I}_V_^0+Sle&ZW)<`TRPt*RP5#nw zU3i__S!Ae#Gf$rKT$uD!!oMu;n2w@ z48ys;aW@>o#W9Y0XZTeacZ)ob%M(2+SLS#3;V1m^s_xm| z-a4ySMr~0AHolBIvXTf^(4H;~@m}YBXK>*!z)_`ivVH_bJsmISe>xGJ)NQyBuB{9C ze&T!9$K&PRQ}m2puouPfrW}hOhO6llJ4Lc@Fg<6~{7vH5@x7h&&OJ%FTpQ(!Z;eOc zqetrW>3^>~#btup{KvmoqlGlk<7$=1MAlf9`6`t* z7en8}FWkwLyar)s`&y0SU5(?-EDJI3gJgJ~VU6PIjn`-$r+IkWiV%Atnyb`EV}0f} zoOgFQ<6U~-35xqDC#RO^zeQx|uRf|u&%4h`Y!Tn4V4okMhFlolL0|qvFWnYO(0kt5 zcuzfA<<prSkH7LY{+=)waH1YsYY37ckT`T6~9ZSeh=bsGB%_!6#TQypnr#cR1WX_dQ_HT zI10~GH)#_W3`)2={HkCAW#Zb@b)3#ibU7Z?Uwa_6lY8(&JVHLt^EbsWKc7usT{b48 zm?zm5v$_pFsvqaY`2ETEvyzt9(JF7{;yWVq>=jj~L)B$u>K$~d=gmopWXL{p)um>X zr&VU9?4ud@wF|9NHEUZTH>T+ydkpUGqDC4g3Vm#E|Aq^N=Ha*%6an|2`>dr<%n@1n z2&du^wZ;kz#&9)q4gYU3M^#bNJr=^dLtx24RJWJ#Qw8kr(caxfqTVU!X#!W!2IzY{ zU8cG3eX&l6clakS##M}m23sVbW6Gw-qao5~d2W7))21AJ2se*$9_w=E&w}8#dQ&qn zxL3=)W1X>|)rObYANPsX7vc|c`Jyf+X8#%QzwHBniWP43i?$Mmw^Pp9}9-`*1^okPcKjXfAeG5svKGu)(tm>0C8o&6?z z){`|R>h8P2UuS%O87TQ$zWF}h3L)KRrO(4^^;TC+aVq}818i2ASH;MT5{K5nu(=v{ zuefmd0^3$Mn(_o+TfL@o4=oznQ6MI+@>pUHFvq-CHECEuN))`*UE3`Xbgy z6?H%LPd|BdJ}=NW=FhAau{Ovx+vKJZ5JQeNt}W($%mH~nw3`Q;mmS@O6CDUu{e*+L z%WA$$uQK%$YtcEif)+nB91FXrQd6)eJ4G4QAYaWedwUy4>(JFU!GW za)(w zq};;YHR` z&|-DFahe+7gufD#GB4JFP+X2KE>~5xuj{Cc_vu6)NH2Z{8=5<5sI9p59@gU@C$bz* zPYp3R_f{`{QqNo2?qAPQbhA423@s$v-YBFty-DO74HNu~mkZR;=c~=y2Q{6{+_>Kn z2Hol>7os?J#X+ozTfyulR7wYUME=Cv-X)^{C@ZuTo3HSO=UcDkCL6A#aIEt0t;0vc zN#1tueU`Pw=W%gajQ3k&_TAB|QIF^x$m~NE#3Q~%JKsJx@;z&fKGFB{1s}x%IkPQJ zVTa14hWzz1C95ze!f6rdLVKr(ou2Dq_{M(AP-W{t3_JyHG0MF?c)mDZMHF1;{|{AJ zG{++Rp}t(LN3^t>a|FKo$K+W|&0_51BIkG;MD(Nh`7nP`A$wrCH_%;ntm-p1#YM4f z2Vvjco_!~+wwoAKL=WEUs`<0Dj&o(Hy<*yXK}$?qg3W7Z7jAVX9~5DZiGH7nD0569 z|2&ScbTz5T{rRRIQ_c0})NJm(UQD6*i4xrm3f^QM>-+J)qRO{U!{;K@HuIqXQt`RwJ*PT;F*NR(4!?xnxCN+LvJbz)l!(<9lO@5Q^{&`j$YQm-8PgKu?>0PUa zu7N-3kN@sNUoHw$O;*R`euIVfUuC^(hbR-fV5^gKuv;+MABZRQgU@jN1A+?T$WZ>6 zLA>cLa6QGKt3~+OQ)=B?@h@-3JM5BH`2C9dM5|-XyQ{AjsC!CdHO)NqtZ9AnHO(=u zBubR@o-YV1dyZYSmu2?jP%|k{$RBUZVbh`TH@Owf7U1>F;09}1vDRZ9vO=U3- zFkURbydd`Vgu$No&cF3LFLMr`hW`#yIa4sr-k>W)bsN5=bcpX)N2joIcX>bW>n|-U z`u`BM!bPqXg)bG)=0Ju+_+wf^aa*A7U&H(`$tmuKulUm|Vqu;#*XShtd!tVsiK%bQ zb#R9YtsVYmDvy4yOX*7SbGZy~g!+~ZyvEc?drkPz`()$i*`X7p%&&4;vXKgV^%f;ei z(BNF1SvBqGUu5Tpoyb{o#v|c#KEJxp|5?rPywlyr*g%HQ1+Sm?%?S2fd#5-9ME*I{W;t>tgjjSk|9f+>f{LW^TVC-gsfv z_Gy*f8_7pd^9`b9R(yL>J|1e_zfdh!_Pbu?Uij77s4TZWz=PXC|8EvwRVy|2d-}-h z%jYv_Sb6v!{-mha!spL#pJ=YDI@ z3m-H|6wHZkC+o zDlC6(w@zPs>VMQ(*WzgFy8Fp*Tib6%vy&qCH~wo3j`S)u{F^?ZgEh|UJO!|074K*w2KoXk+7pi3 zVa=N3FQ>~^FNGO3&+K3}WL3#q?yd&>M0V&_wDb@4pxD+S6AL)H@Bc! zK5kESS6#IbZ(f6D{tyGc#~tKO+I|R|S`*3%RTE?Vyh7sFdivQ)yK6D8`4<9PKC!%) zI_-q6o5Aw*x8`c5arL)h+3(j|R*Pf%Pr0j)bF#r(tqX&E3Qavq=luW!e!Fixo$9<- z^z3g>^$){e@7tjp;JZtR+(z|!^I_YNS^_cEGb;R@(SCJlx4(fSq?47L;feUc% z&9$QoLUY%PC6(lmV*a^WY|B+_Hc&rCV7_~c12^N-3UX656cwh@AJ$`nbNBsIxPy;9 z$yYGq8=~_qGWU5fdxG=)K}>l^H8u&~`~(a*n+{e`l;-#R`GrYTZ{8BtuxfN=XD5Xs?&z;P_T&$ls zog~qt$vpdWmPq)Bw{phGoMm5LlbT4CdeD2zRmCfd#Eb0js-nVQzWHw$+&^Xf?06C8 zJ+x~_+LPZU!+i5YR=XVRU7N06f?xe}5u%~^G*8?p1nD2NpU;Tj=W`#{_WnoUWwud$ zulH7-S7E;4iJuoG`oc7AXj-@Udtq*bBM{Jc-q}JC=skST8t-Zs|JM~zSXU~@tD^rK zG_20Jg9~NZQ{KuN-|YzuRWo&MbC_(1_q+;E&OPos?e1FmShD1J=7z2BQZ0S7;cqpv^(`-zHmEe}-@6H-63Zn@`UGM@Aw z(W*IRXg$Bh06xd+&}c;*Mnjo;7^inBQEDrOv8U=H!TH>z>PT}e?hIn_*fa_ZSuxe* z|KQb6>ErKvl7B?8Do)Nor+Av@o+#>$rdZtPS7EV#39RxA1lru1){`wSx6*5!stsaN zCH)O=%e+^@LyPR^(s;-gxYG{!soKuh@4m$lF=Lyb(ax#3Q5?#hlzl$-^lCia5b^Uz z`Mab%-NRpFtoml}=G^dBc{Z? z_dkDrgHtw3tm*^>UgD(AfCP*CQ{VG>to<(rbaA3Tk+*76F-FkdHet!r7`0N=;uH4v zBGIXvym82>dPF2DM3esm3ws){l~G8f zvXVq*Hkp|bC3|EiGc$Ydk-ZC%y+_$wWc4 zcU|}W+z%Cb&r?QsB9C-nlk1;mu{zsWpZhTUXU17ep&}#Ru48X@bG-SIdiYm4p^py3 zc~YD52!(?m3R}l!?NHPDX8<-G-rLcP?Jw>=n-@KJ7En+^O z(X9Vk)81>nAc6I?!uFN6bImP!6bZ#gBN}~I%o0z;?w2#wqpGf4uzf)lI1Z0iksGtB z^~%tX4SdhDZkdKYooxO|V$a5;Gy3~bdK6k0vsF`fzZX~Cs?ZUbYU^CRTzbc;Vck1H z#d}kHvR#b4DZ@3B<91=uQy6I_AN7~_6SM6sYO^h@)uGv6$Hn0c&yn_vgmY>tT2nmd zlOItN4P~kne13<9 zSY#~sG{hIWRCVpoKI|&V^lY+tuhwW)S_2BQrC+;R*BGrg_8c|~yNGK-*Ipf}7h<Xc0HT6WmX?*)S6;{AgLeElDr*Oq8Rr(P8pI;Z| z1Xa;Q-SJl37qawZmB4hqJ1T!XuljsbzoLLnPfjfJpT5|)){f`UBhz`Pg-Y%d7TQEx zJqI^+{p4slc|Du|p^AJ?U71_&IHl^Wj|_JaYkme5zp?C4-HxHOU^lvAhrJ#x>9Id4 zypD8OD%{lp7dhw2_pkEwF!?T(um1Aln{oRine~gF*n9D(Csbe2`41zHry3YR6}%Zc zOci=Z)<{p&ydgHW>%XK?Uv-AFA0guvJ(o_pRf+Wm?fF)lA5^#Hu(sY?&pxF-?`Rq5 zs5D5NJ{Ovbt zZGPAjXP@mG(3B3k-%`gFlbai{@(&n1ysPgQ+*LSspEHbisWSdFhbvJHTaG6F!IS16 zxYvJ?dd@XyVfOW-zh_Zrby5wVbjQ*Zl&6Ws^?aFcq5L&gU0sqojTd$#!ewE1zeb0o z79nli{SUqFN=ED*DslTo=5~>=R#Y$N>8aKuEBXDnPGWs`xuOnU9~q#(H9-xr+{!~r zo!!Z<9FcVjS--D@fAYiVMbCUsvSM2hi+&@f-=IqN^YiCXK5O7qnEsJB;`T<`toTIROS#2UsyCJGKLq`3H?}bk6GV?q;ghLw(B&! z2-k1XHaVj!Z#iM*Ca#$6e@lBdb+3$*J8rF2jy-mp{3z!oqBA~_KQ^*yDSn)RnU_aV z+ky3lShb!&uMC2g+BAFyDmT4MP~EzBm)FUs-%;;Aik+bDYZUE{oE zCFOTKa^2p8!ZgV=J&5a80&8Qf9iG)r<9y8qo}m~^w+~g9X3{MiM2%gCq~@yVn|2KJ zwGY3N8mR|P_+B=sz-LF*3)R?sFC4z8Ki}E&aD=S7u60WtVFf5n5a8#$=<z0Uij!RN|71+GEUP5u`EyVLh zbtKx$X2W@95+%5Wz4y`*lf*@1Ix4j_=XtV!No(-8py_{+XW~3DF4Ok%FX0VV59GY; zD!9&2zSA=zyHtY9{65>2T2el#++{fytVg-W(U1RwlG~BS`hn-@$D9;#H$K{JO*gq3 z+UfT+Nh6)_OEN+=`<$lg=smE45xV4k?GbNfm*r<_>gAEd6w?Si7^_BUq%X9YetZ&B zL#M5N>>inKDL;0Uk>YszXKNebwDGx~YhR(aIaQwA?HQKWpm>A`-R9?J!*v6!^p1KX zqLVX3wVKUOWngJfl+m$I<*WPFZj(dGd-lg4i#y7ip7O_j7pG|x~WIE?f)Z`0YYnFYv&C~+v<=zzP z@!LAd>(tP@?6&wj^gr~k+Ify_u-%`Hqn-UEMw`fU2QlvWGk%+=^DvvuzEag~m33d$ z&mPS~r{&0`F!hq$oYXpYd<^oO9WUqT_x@^=1n&8+eFl>vbM5d*ueQ15$&*(+i#0+1 zc%JPh>Pe&(8|yH4S-U%D+9k8ymDX5gEdraf<=JQKo$p~359rQGR^EDGgf)>y)Y)Yk zqo6gXA!@>F?DVRNP#tMzgB^DtE2>d_BsvIHuu!YZ^bo|&s1do1Sp*y=2K93y;) zD_;`15&g`&So=k}t3I?Yr?l+v_MXApP9M!_J*lEQ7sq1h>FArfgr_{Gaa09=9{=3Y zEw@u6@{TvoOw}bgiR}}}uwgIP1ABpYcov~|%#heu^$SnR!1XDoYt|Ar%8yg=PhWk# z8BQE|Hm*)&wzc&)pllw#j0?RTYN(N3Phg`MD@1+GCnLSEUvHy6T&APC6B|o$ec8Tx z3ZXxn+3DR4McxV>=l!(KTxz<3?3sl=j#2gOH|lX_(9U<*W7t-<9E;ahLi1lf{T9nL zbN`+cXm@(1hFHz5_nA`v;i9g}QA+G59=IvK|IufBmQ8Al_#vv2K{3CnsgLPkOts^) zIFEnNnoac`V$>H~<*3mjai*I3qR6aiyqB#qjiZq>#D;ap;?@kaSUG$e)1AtAE%q(f z8RKWtz~D}K`73&TjTQ9+_AAC%U-`mwQss;y>@RxB8F$U?a_mk&ekN0w6d@O>vZhe9 zQ)O7oOtaDX331vJCs!olf!r#$o?>slk*u-m5KqUaihg??nxi26yy|Z`*dgo!epdG; zJN%Z!KOHEzN$TMBI%sFi_IKUlrLZE@3R3AD%7q9K3)#}n(3GL0i5E+Fx`&v(LB@c9`M;24f590<|&)H8)B+*~V zkFVc}9ZGo@5pR#(HWNp}N{lll&&z9#PHD#bdSY z70Dvo?^Su0w?pu8tp{6pmL5a}Xnzwur&%UHWap5?KV`l`+kv>w09 z*~iWl5FZcd?jND#yjta{J#TsStdFbvzk=_od*A(%%bMGBf^P;wriL_X&Gl_sPewUDEhR>mxnz`7TCs zjY=q?pZbBmK{%7}7gnq$!Xh$VCyMugYNZ<{>=7v#_a&P@)Sv4B)iS2|8pz(CW2FAn z%`pCMD_TlW$JfkuzK9+yzJ~JmR6Wh{YP)GPO(Mvfrr&#nYCHy$t7(<+_KG%CN@|!t z;>tnq)x#>e^=;C*Ujg`@EN{mXBQ3DWVlfiVA3B1yzhtv=td>-^cx1262Jumr9}<}T z3nI{ye{|>*to9l;_nz?%cVF*hi*1hkE9)}7O$)yX=TCGz4p0bR;^byH)<_)=v9?$ zC$-f^>yF#(0Uqp6IXpizjXHab?Z%3c;;Qek>bIOS`$?7bracg~RN8aRgICIH`I7a9;jeGoqf`iN%Y%NEav$r#_CoK}GLu8>(=-Vpv$g@yz8czO)<$tBpuNY5CD>jwYM&td&aed1l zt>G*ZpIv#b3R`DaE1iJB%09PQ7j7h-KTF0~Z6CzH_DZ+V>%WR)2k2d2!KC?P$H(-i zn|tA*?3D0c+Nc&Sd)^(oW0&gu{hEp(p3%O^OKmBf%~OY-o6POFm4PqKzYbPSEaEnb+r~N`$uYQ7 z2*mMrHA$!>^2(86-Di^;;R=jrg2zV~X`#xpy=t#mOc@&R5Gz%q(Erk-U&6{?;G*?v z>I@=uidZSC>v5j7O3;oqOssL9LK=+M$KevA&=X!*MctNqWc%ZagD82^k~?J&d~qRSFMKtncPE2}-F zDc*zG3964ZwC4;;w3#_n!2WMReOeq*z;}Jhwkc%P_iHN^X%9N6mySzytdNS;exZ5C zyJAf>K?2>OpY)vfS(*69cR5&}5Bd3AXOT}n)padN$<;LDLa`^TAWng^>i+jX48KzS z|EcU$TPA3OIoBHNZ5WSJaTevHF(PoU7~X}$M;mW$2tCc$ll8KT_{kfQwN|#j!eHTi z#GRP!qW}5HPQzQ?7G*B6WpI$SRh<1;->3t`#IqY@t(;!oy?%+5vCh~*AA6miT5`2@ z7c8;T%pc*RG89!|PnBMFjp4e4C8(Bjb|uqf&b%K_{brOsmW!*I>g#inre+^jO7p8h zyBO;}F`6iLo^JI~d4Go*U=@BI9ewXgJrQ1w@@&kCb#ZZ9D``K8xXRF=Bj%^8Vun8I zyy2L*y-(HSiwYP#sc!utx^SJUY#Fr?PNh5(wcBL9vc0nNzp__4cS-NvCfUSB7WGta z9g}Qoku0L1tgBSx@m4Zn4@ekJgM33rhO^Ya!zf?K(^=hb8|~yQW1XI7bhK7P#(8G9 zyYr#cnv>6y2dX7$93M`wwm)C5{~Iea6EH=6HB(L+DF$Ni@%O*-^G&gO z3p<{R_S)8}NB&Sz$6716slM5X;fITZJ}R+Uvb()gYTzaG#5MkXgEHyEG8^?;PPpH0 zU6<9^cMx6_iY)|DS41plNVO$*5ov*@zzid=(+qxkzHrK z!=k4(HI_wh?z(#}fyOo}l+5~wp@Z2BvR7f;4Aj^F_x;P;0aJQ*_pv=b*R6@1q)tM& z>1Us8sP7S{Lv)4$K4*7Pa{bT}Vs0QNJkOu$%;S9#8v39M=-3&0qT^}ycGRgS?9KFV zS@KKK-v_JM%ixn~>GKcyyc0~c!+Wjyy#_zOE;?e({4n*_iJC7ahSKOv=m18>@p8^FcgoSTFNXDIVwoqko%w zF?p+>_}W45@51IYeWE_)pU(+E8Le(V(IdJItyf%Uy$WTi{?I-MJEPMbu^N;^ws7*f z44ea#9Tz|C%`ClN|JI+`8?Djy$#1E3nEIR1QSlQ)_a(FrmCRWH*|1S+Y_wfH9M1b5 z?T(o+?O|GKsxHwidlNURIeyWvDS`hlh_ALX(*d#gK<$#q>T){DBs_6ANhMO0C(p6W zVDl`ZyOv#iDmJU(06~N#5 zRXRm5Q+d4BiN4%Ml_h|;yz0}uG*xjKxQDzkR3+4!6&uK!rCIbv_4c!_8GQSZQMG}D z7Q9>-Yd=d5T+$)mP5sOi6*b{2t8UF(IxabN1Pj4uFJHgN66Iy$m5>w>f6rM*Pps1x zgUNpoD_xBs9)HY-kmhimD=wL+epXGK4oWJS@0YkY8ST-T7W^9b{z?(X#$Hx&&8CU7 zxb`+VsGZ$0g>YdyW6ADX4Jn3+;`y!`tv-Z~Ro5I)HU0ui)jn9 z%$3LxHTk#n?^%1e(pi!G97A}cnA(4lm6%szv+DDlw*uKOCcIO8BlZ1}9Q{NsJU`Bx z26QgA;<7oBWMZq0y#+^DKNp^Dk43)MgGmG>31Y*V!P1x&{Pl@`hW+{UY(x9s^6+^^ z&qH684^L7z*P%P5tWl6YDJl{ky4x=C7S4{EYuf6S2OXza+N88Q zj+PVW>VQn*wbml|ZH)Is92~=POY{pm*)7qD_73lM`dSb1S8E96G1pEx<~en2MyIVk zPlKN4??L)nY1D1gDWHOSCE=;Wubqw58^U`~f#>xgh8pcNP&7(JC8cVdqHb;Z11t0C zbgwtj-DPm%5#DTq#coCJ+xNCqj7-Pg-|8mBxyJjH{b6h3^<|uCs`-6(+danmN#yI> z^7LNbr~~82h7%tW($MFrm{U;s z3r@a(BYsr}U$N?!TIA)%yC31A&Z>;5B5MOBG|*4v^SsDib=3xU83g04dG;f#W}k?x zQO2;wuAhr?UuHeIdN5s0Og;yxXRHLBlOH0qbxIX%8gox8-^X~`=yZS==j!&Gd79bk2 zjHh4s*nWsBzE7FWLm4F<45YR5(-TJO)%6%_e79YprGC+7DsZQc z$pMkJ%gn=jnZv%1Uvcwfee;I0WVN^x?0h`Zjiwn7Z}ZIZdz}0R2JXn)GL~^)4g5!w zji3e_=z=5o|KvJ-oJ;st)U61*6#B;@3H5*$q#8Xjfjga@0lGe%pS5CgNj^ zdCeC=o6Y@8pQM^S&aMC)x}h|2gFE0Sz|o!Bv*|$@f=1Y6>%Qf z>o?Kzxu{DmbFQ+s(~SyiL4h|GWv%(T8zjzw#XpUxurAC{_M46E`-+v?G-Vzri7|&G zs{aL0HwLQ5>q#w@%P|8Hu@<;*yhi zEn`@x@-yw=bGwqNELA9c{n%wjF;1)b=!x{U3OYmBvv({f;8=z14g(plAhPXFKy z{FD)b?y<}c+G!P*-yGdz-A08n)2@vpdMDX&&`@_hOhsML-8n-Kg*W@oq*5wd$$rN9 zRXglaY^ekLtfv~{BB}L3TB$cq)8lW@c1`R9UP;$PqCJrC28i_#HxCc>6dfOlo?4!@ ztS+0^QrmwZqF&d5OR8%bE9OEyb>I5=aTU%=$nE3L-SzH!CtxFf?03<4-r`=?UHNt(zG)}FRThzzqB~NH@^=~b8_82Q)c)_OW5b%` zzgR3&Z0H(oR5i874|X^i<4&KcUa2M+*+QG+eN+u%9J62x) z`JL}3(piP+_wRYMmUzre&Bo*Bl#oJk9@w7Y&{%HY=pW9{Fj08&>Kp{9yfUOLX_VR^7AS2kRB`7 zg1rV&ORd){zD&;~7sWSWbq+3QrIY!#On+3r#T$V1o9pWprS@D@inw*qb=?X}Eo$di z_^hImo-Myz({q12_DiQ^uf+zF<(;y!&A)v012wfugv=7llg)l5AA~nS2kj6}8VkDu z7DL)$quAqQN-GmH5uIydiE8HVFac*VGZjpWIs{OK7h{e+`pcA-0-f7 zunWG0Y?lo8-i!1Q*R@zXhYCFvZfK^%a14v4^@*zbi!GxHW4zDS(s4_O&(~v*mXu&A z5uV>nYT|=wI-9@ya}G+fA4Khjm;)l*8S*%>v>hQi{OuWWdEHOm$9QqL<&5n9Guz#h zNwVv5g*Q=T!ajHD;ILzTmq_^XSv($ZCu@A0G{X zzcRjp4mhPZw$T;FMDtcnENTr@Y(@Ngeq7wxr`yVR9ayY1J@r7%8BVr6u0!^n3T%w* z@TpHUa8grIvy2{p#>{H*?mSjM zCX&OMD9hMsi2U{`Wl;prUd2Qs;VD0a1;t%oudN&2AETof-ZuHz&in#CRh#l{hC9n( zl2=q6$wkg3^~Or~pXmNeDXas!TMsDFvRHK(9Bt7*IqClAG5BRUBfOb6ysz*jkv5$6 zi`6GzZr8+c9JWZG=bYWVx$Q#Upi`Df1=m9rc@nNu#jezGig-fi4cacF9>(u7?kthr zKqufi?;hVHHYSBXpboF|;sV+5Cn3jsARCbA@@O)7tDypVv=!QYYil%9J1wu{Lr*tC)=;#YCeT~^9!oKNkaOQ3J^rtVy89I+|t=Xi2rct6%~Ot4n2 zJ3tS93v1rffa7jNE6DIJ!p^#h6)E@pv{5}HT5bNBu;maOww!(KaJ5xb(g`zpU0OfFDch z!oDLT6)@hS6kRDcNMy8Ibtfk4uYKaDOH&|a#D6pXn~ux9N!b5JD9Ic;ul1p-w{CG~ zkr`Gt@?i7}7;+XXRcGf{^$#*wp(v+%=q2+WkTnWXt;6xa4?Ogej>miI-~zsH!udj0 zsKHxjD3FGDOu!50;jloo+p!61w(|dMJUtJssr8;O znDbH**%_w{@wJEr)|=C5`ZEI?*MP3iWcKbp^^pjMjPU}obI zds+S4A^F5Rb1+q$>=({1zb;Omih{rGRXxF@hwyfId(2Pp@VB4Mfu&lz>PY_BqQmj0 zdisofJxg`i2oGk`#s7|FKN5Qh#PdNrs=kk07R@>B)%lbv*u{gn_@;+XEQHNVGW3hO z2RUQ^ur9TR--9+xq3blo&a*=LL~q(PS6GyUC*&uJ<}-SfFXO?gkok!_Poze^(`%Va zKfEWp{=@1=DCo&X-v(#Dug_n{y=Tf-m!UR|QRdPkYRythWSgx#G!N2y>j%GMZ8$uk zA8P)(EL~Y$U5mv&rRVzVG_2Kwe92Dlo~n*j@Oe1qoT_j!E(~k@7ctB@HER{Nds%cP zg!UA4krTezy;&45A=kFSEQ95MZnDfk5%mRT`Glv6VTRkPn@#locT~l4`E~){hi8-1 zi`zEt8`Sqm2%Rf`43gP%9|&$1%>5z8m_k3^vL5e5RMwh8?}uHQU5vhr2z^bxn~WXK^3Ynb zu$YfGQ$&CAK~kC|lR0LSp|Trm64l1fa?Ju3`;_jfu0!!LYY$=RaMFeM!c#Q=$~C2E zv2ND>$K#)gRoyEcQEm%#|sffgY)?TT|UiQXhEzg(uR>9mOH6q0tT! z$$fF~J2GuJ8UKDX-z1KiB7^j$9lKBk1AWiuzcapGHT68gI#EtLJgUd$@m{JenkoUl&&|Re#nVuCoeeRojeaUzHo~zn*0DzO(>rR0{Q7d`;JUJ_ zeWd$7QH}LCq`ignn~LLUKEEQ0wPBQ1XMYbJi9>R9XDX*E#;-;Xx58-?^+XP0;-vVe zD$ed6U19ytbKiGm^_%LyQ?R%P2kliaoTg_Y{FT!#jhgtmhZVDt;`wv4?hO~ges5sq z{kUr|9aIXEUXWWesIXoU4;5s{`Ks@ma8*U@Zl|_ijm@QZP~PsKJTRJ6S9G0Gp!YA)uvf9d0g*aMT$hup|AWen zIA9=r_mOjZ;e=_%a6*liLe{CvN)sVvHq?c4fh)3A8o&OoJG|39mW$2lKHFPm-iF`C zP#lLvYGPWuFg?~r13LrYJ)^z*H!7}=*k zcL~nQz}43>^(Fc0d8@)1bc+(k=G6nw65Cl7anDNPc=mor=i;*5yd?6In&VqLgLXuU ztBdEzya{xi+rs8*Jg|?#*vj6^S$-0m4^%0)^l#~9-9sw>uVnQ}?7mpWIgJ+*8U4$0 zYz{0`z=-qXnH*}ExBPo7hF&L^54Dq_vphWrJ1nL5595*;KV3mC@1!T*2j_RjKkfOe z5~c`yNe@wybLo&iGDZhh>*-C+!#Al=6y9>nS!N=jb*iGVLlq>YIia3a! zC-L@T7(6JKUNh2XM0a>zFcVhHfWsc^*Du33lj!Zme0#_>{*<*Ih?WxOHWa3p;9n<6 zt8xbM`B1g(AY*PUTa=*oQ#n`VX9{H&B{x`?YdjB66JfJqe3R>(aGgu4_K5dSCsdIq zW`n!-7XNG=^fI-1Tb!I{=?8u~xBT2pye;CBCG01yDPRLTf%joQa#^@ghtptpVh)L zaNU6K24aMxDz6Z`z1{V?h|H|llgVnzBdaSbth838!+(OSE>vhnY<9+K&T+NYKa^Qf z>u~d3C3vE}95cn|m#eh4@z`els_DjKH!WP-c_f>D0i#W#l}2`~pB10JgSmUskek(@ zH|?0oB+kmYPJLOwfvjCgHm#1KKIFGjs<4tO)pxAXX0T#@9qxbDg*u~qcN{zH6(f6O zsGX{hJ+QR~9;T}#hhUL$JiMMNdQ8EEU3lYg(59&VOipdT85>r#Ho$s2wO1yXIm|!J zj4rE=%`M12?G)ZSR>$Aa3z!VGFX7%n(LVcDb=GD0yo7^~`1F2SY=zaN+Il{Jv5hx` zsn!P443ov^ZrA+}BYl92CSa~_>9W7@*CiI3DMItO`){ItAb-7P+)w#CF@z^InpAi( ztXX_(AASzJF)xNdef0)saFyb*d zrGdNVV6}v>{TqF=LWSwQD(VLB4N@WhMzuf7?v-^q!irm4JT}bFje$_M7Ntwq&pV zJhzjzGN?}m@#%3n^*^h$={)I}S(pB?wfIeJ{;3(n$UFUcDT$u*s_6dT-gX&{=J7R{ zJU%w-4rPz%hz@MFLof4=wXEd${~7(F-)P&#QB7S~-Tb{gHJR^*Q4U>v4aEr?sNpN@ zky_5otMmB|8|P$)1nl;Qf88s3f5cfQS!|mK-=oU;MV%U>AC^fru1Jq`&|&FF;WzMm z2^uM^5S)zeV9272{GSYeil+S8EbjPI5`32)_hvM%S8-QH>e;HPdCn6_UClU?TI2_; zA5i(WaVEkdFThnfF*PK*cdd&%%;l@iIthE=d8z9($Gy)%P0(7MX{plkWgcwpWJ59C zTb5hP=eOjJx5ZaIS*{Ph-eNudEG@ayifJ#IE3cKLJ9uX^4jLxI*SFuJDSw4`R}aNS z8)5GbHcHE`MXU@|gV3<^r2wV#jG6C%ltJt?QoqB~pz>oi4A4$~U1O~>^<1DA;@%t&)NWrroW4-CvV>-Sag-6D-Tu=DUVjR2pr7J6yvaXU%j?3lGRbjG^ zXxUB0y@Wx+ZjZIFcmoF{v@#Pfb}hvBru|d##Y`MqLLK|NRgK+P>{8@8inanzcaeIyL z425FQlWpO|O~i}#Wr8&mF~Yu*P(%z~k>Rjfa-xi?B+h@==Oi*C=G zI5d$+IZx5;jd~=4&2Qkor6M(gqAA<&5?yaWM96vbsfkmpeVs;dnhqPBQLX%fJN_{8-(-z&Ch4zqQSz7- zSm0+_Dm5m^4bM4TA&bxDrpYqNlHnY!6MVD;UyrkI&e^q*O>n-(-*(GN5eO|7)jx66 zRmNER^kToTqp2&D<)?*D;fb&&(3!6(*@%;dBDHk_`pfqFL|A5epc@_yD+L!JJWh=l zdPN&WcX+FMsHs)uW?$r=8s;ogq5)V#`=S= zz}(MSFNpZlY8s`ES!aaMKk?bu(9%2l)yH@SQpMePZHi2Nn&!w%Iad;uRmDVk(H8dH z6r}GGo5NM{{iFC;L0v7tiCe|V?>?Q3rYT^~En%xKk9CAr6{m zE@EMrUpHXVOH|Qw6lyg;HI#z=fma@5!kd_IIn0J9!D9R#`jrFqcuE;#7ExFz`pLi8 z@R7Jof6ayKi8# zH6nOCRCZ?VaL(KxIChrkd7o;2114Xhwo904Cz)$CeHCLBsUQTl6jjUJ^PH-3EtGw3 z9jlahz5!Fi#C|0?vapCK#%4~mG1{lKz&ekOCqC{><13M?K7{2M)$dbQy)Vm!Q$IpBdR9DV zg^BEZTUcC$?3{y-)4ETn1j0Me_ww-qNF9xP!gINsVg8~Vm_Z!0Q%8SmRW`i4xh0&J z#6cM;!ACUKPvUKdD=dY_iICNX8m%LyN7L{Z@p)Ez!b+(dI?+|(EZ6_ZA9L|nZ5~U) z_hBDj502?!zdOAH{Rv*-`v+9@nRc9i{`_%=%+^UO%5JJZlC&%2zWW zYmiF5vpn6?e$b(~e=#-*RZLbE_>jFngOgTrV`cY$$#*PX4DW-zr*r-zTW!Ezi&%RP zwEX8Pg?0Xh;OTGh&>Z=Cj@o*l43r^JIP5CbCvq{x~O!*1OgMHQ*X+{M)TNgmaeu@nmlTO7#i<+`?BW zbhN@MKngwnI31~L7$uzPdeL|peR=L3IUqUDZ;NW( z>ALjQbse*bkmr48G3xM+>{0rp-iLraHn7tZnj}-~gP4~w(LRrwG*EyrZtML`Sp4QxCKdv4*cYji?p zeDsliL2t9|LcP|u)?2|?(z@p<(Gr;MJ3DQc*ajw8!$>D6B=ha0rJE+9_o+hJF-tjERzVff1}AaP}yA|^BuXX zh|iRxyPNA2t<#Il2vwh%;{ty6)Sl|0C|^+)II;~ay-s&;;;U-Dv-;HYluUfKDr)w2 zDB-#TIPa;PoXxsK{Mg@V=xgkDL}boluZAkI#LmE6N1t?6c{K2QW8J+^%p#mfz7iJq zL+)wMnBMoSYJ5!k5?(7LUMu3*au}+F+*$!Em*Vx@@cAYUlHL4@U?T4t_A|MC<|W8V z2;+BnbE8=5Cs&1YMLWrMePJr}LoegjOb}67^t2R116aL}h^`AMdFA<_sm@@7d9XBq zw)oVihwELkI&NWf?*ze&DE7xSt=}=ID{ll9Ic9}y@ey$6ZHK4n$KaZg2 zzNa`MVz`J{YQX28xY_`J8tU(#$kaKE|2+S$lr3lY+1a9Px$EtgGtTH~M(iTVg3Alz z`@+#K&0ZaaHR`i57;B)Y8e){6Q$!;$@;QGm&o6@@>}$2w4x{@Ss(+MaRGRwMcvCl#CeuZtTxz^{Hd@^1d$*bLTh2A&U+^`tV$+_z1 zkKn6w5D_C9UZSt_sotyTRMm#b4_G>QFNM+H^;4UTa;TnIM|W%`H#XKsP}4(v2dF!z zyIYQDz7S12dF?Ox=1*E~8MWUFcfU(pJe9H5QjGn1C#<}Ez*=o7i^ZzDGkQH~;G-gc zw}tERMzNYEUkxd}RrGnRp8X}FCR@jArSnimU0xFIKA}y9u-tlla)TCm6+-ICTD_^F znIdf+)P5tI_NOPSm~{dw+`f-}m+|uoIc^J-{bXJI0b3P;=l;=5*%0g3 zWbfC+W-^R+N@UL!!-MVSY(a~Kx44IAy*H`uE<$S>)j$c|#Si7_M(UJd6#thh;x7E| zt)!})xt>Sxb_&rj5bI1f<0Tkzm-&Q!hDFS*1ssp1e8MTPcF$3V|6;G3s)%bwd(>T` zZ+14c)vqQxEuy=n|<$N_1RGRfzQVn*DijY?WgDP?KUIcB_58+ zC%38Jv}{#KPpUkX^qxNzjMfkj&3Gm4(nyt47m`}~Tx&cui@mP%e|TQ66&*1VmcC`( z^?W@aGj=rcf)Mh&{PYX$8J>yF73J-I^yEsK{a>E10hbf_bQK()W1keUf7)gANQeKr zIjj&HwLE>4hBi52-$P$aR@Re$uh{>ViayE85ATWT5w!mS9oeKZRz)7`1>IBi_(oV= z>dueNR8Lhzd?9yBM~j5_wj_|162fUp-`V}k^Zq5ACx6WMNnOj6=KBjTAEy4c`d%g` z7U>KeaKB3|epA;bF79KP?k9f3`|bwgqSovec29(7b58jDBG(y$e}=O4R5@~synPY# zB^HO3cx43EoCVP{jbSuK{?t5PgN_RFrQ-n;=(Kt&bct((~e%Ia3M02-> z?2%$*xKH;n&qll$da{2J2RuariJCHJQ(T$J$w-BGe4wt#fOQVlf5X*-Y}g zW;}WP5B^$AkMx%aCMV*YD(WxNLy%oRrBj1Vb zuT?HzV~VeFW9SM@wm!Uq7Tu^Ta4>F}DrFJwABIV*V4JLv7qVk&vwML@!fubO?o$At z~@^5lksLrn!SMx`8nnsNt?{l z-|}8z*R2dw$=T~icpmMmftl7~`8K$GES&6vqa^NDK|Fnqd!~xVrM~Awdpp+4Dii%B z62GCLIv7K_sJbbnYN?MOoxTKpms#^I=;$c#3{_KpDF-Zt>nY;x6RN2qrbtioA7=46 zn9ND)W^ll#AF){;`L;Q(3+I-%H}^VnZ6TjYD8`TDjMYZCh`sG=q&V;5@*{eC2cv4v zS<c7GGzc*wL!DAz>vP{IJD_P(Vf6HV?NEs1X%auN2^LNcUC;LU9 z?4f$|v3lmTY_*S`*dxFGCPzKXr{(a)XJUISOope1ry2E7ab8_sN~d%1BkS~~W(u(I zqexr3ndaH~aS)5%!fCl6urb{;R(7>Z*>{Yc1aZ)F8nR~bbwir_Wxe_Xvh!$_VJDfo zqw)6P>CvpX#%^TY32_|WQT;70m}UljNny3p3%;iW7@J`d3mH5?>84=ljWaX zz7kOrVNcb^klNBLs+(0!R(;3a(_@Xt)tF2tuYY@)nySHOE%9y* znKo3a-qL_ICX2x#SZoAut;FGH@ItKFz9I_3(|Yw-cckc_+3r(47I5}bcj=l6oIL-=TfczI8(J?F|>uvkm%m&Y~ItE{rp z?D?!})sjml;gkPCQbc|DI__#GJ|^O_c~r_O+_X@Xb%E2@;qMB3?TBLhBwqc=-wvC> zpKS61yuAyTP28=NpL~JJiNy*RST^kVnvI19nfZA4n_}eO&_h39z?)V%(&LRX##=wC zQag2GFz4oWr2M`2111>%2}^JSr{?J(|Rr?_t2O zhH%22|Ho3NWw`LJ!gILgHtW4g+ve8`3Fqp5f>&C}0X4A0iz4zC{9SO}ptZ)D+ej9k z;XCBsL$3BWRhB_aG%>nyY&C~%zLYt~iRbWqU?!uv2g~c|i5})!6(Y;{y#p>A&t@y4 zIV8S0@_tTo_po zFY9RHk=Cp0&{d(+ctjL+XPaDXeAO!2rO11#jT-jsbi_u};BXf%xj-9*H(X>kgCb(2 znJbJjiXkGsA&p&C7O#nU3W>G!x?eB4ZZe-p#9Pn%4yRw%+{0eGqSRP86)Qa7u?kO)Ve1ZN-rJ|g@!1Bv z{uFx_WT8)eO@@%AeqRXLBSo5bq+_T(uCTzYCYoJuoy4wG;8^h-?6(gOrx0Hs!R8eA zTZjq!MEh+GL`^A`@vCNe2WOvv&L5%cdyKdxin7t7dmoR!LI*c+zeyDPHdgVL5!c8i zUc(#FPhip+P~OhxTKnqD`U`#k$|ebPstQnqb!5U;Rw-*?lG3pA7Aq$*nse04CbnG$ z74t;IDs%pW7W9^PRaxi)6f@_td|d+bWio>}`)_Zn(?i}o$zliTk!@DDx2ZG^t36Ib z+*L@sCOXd=*<~sv;vGKT)dt@)+3X8((i}UN^c~J>3g_A+;Gwe=&lYQI$5beH;|BWQ z-sacFxtD!b|47L5F&%Y#;Vyw(zH#a$j@Tog#8P1p{4uF!d~W-i8^rV}@C-(%M)Gs{n35 z+$5^tBN?v{n-?;s5BPo*^zFqdkLkkPd{&8qZsaSRZB;KCuc1cHXue^EF+|u7HaY-1 zXV~eE&P`(KCAIm6-ey96dX)!)mMLpQ;fzU7TG2z{JynB6WFL1M3oYLn^EqQmgZaw2 zer@*sh}~;gPY4}~jAop`9WSXZc2fUKV0xo#ofTK%MD5p%@qKkpCmC;$uMreoPu^(; z`4z0kN1%EY`}D=t;l0mqsR7cKZ=#Yh>zg0U&Zq^pM3@n^Z5A>T%nAdlLbzLzwfZ|L0(=VD!=C6De~-8eWR5k zGxP`FpngAutxt_L>>-<|D>uq&Lk+#2=c$e#)v{l)ZZG$1hJ~BphHjMIH&F8@)lw3( z3^KpDw8VTP_)1)_V}}Js-GW74GOizRe%nyph>bGvR|Do-i;&6Ke;>cyGmC6=M@2Jf zW-Ptrf&T1X9ZLR#$kX!s1<`#&_4FSeO69t*!BIhXsDOp4QWZ5sW(C>pRSNR1EAKMT zxng%9=5C4;n(_EJjJC(9FG5yoTvi0Sn?{*zFs#;xt^#I|o=SUQT>G%em+&~8%{uto zIM+R`Di12LIS)@4gX^N*gJoD{9ww~KhRNCd6faGng+CAzudB2&$keY}y{jXt=Rn&9 zV|ZO=Y$O^+^Yk+IUPKQMQQLkfzVbnBI+nY~GCxAxcV@l_UcY1YGgv9cPLkZvP!6`< z5#iwpl=vdznh_qL0X9)4OL;i#vfIVWVP9=JT%R9DR5kO4&=F1qsgDKUXMx;e%+odY zI^4sxr)i9Xdck_!u(<*31*<;SvBVg3r;+xxna|A?^@vcqCOH4zfLT?@YdqYc6to?*XB z9=a%~*1GtpkqZ2Mbx0|!6s~hc%+592&%{-2+48+;zqvRjsmT_D`0EGp_kuY$Q^ABD z-$Hg?Y812a#3$zcrrxo>09<}4vn~{;D|qQ=woa!zSsrt=r3%Ku@e1BqElTCAf48|_rC4@_>!b>ir z%xTYJ2GNw*@8Rr@Sl)fAn-Gh=68h9-`F^Xc63(ug&Z@&%XdGNF;P36cbU{>QW6h7n z?Fe_8i^sWVEKgtXR*gP4=`k&7X!$fUGVM`I&%=a924_&8lo^=acJ3^LP0M+~0 z=`!1IGx8Sdj#U1Cmpg^$_nOMnRbpnBV8ozA!b! zO#4#_{Y7$kV|N88eGOXfz{5`C-@txh58pf^-bFjyG4pWNV@b>sPNA;Fb0t|i6HR^s zw!^7iv#h9((`xWoyM>sZsk;2jv!(gy?Z#@$e)dUzgN4@7DofmdB;8*t`V44yxTwIluVRPHGQkIY zJ&3nAi1ynUCLKLf9i&bJP(OUS@8L&M#<@#?@+g;MN~fHeA&+? zb@vSZ{F=WdwMz3R-rC~&W25LJvcGk`NBV5<80ldAvk0oz^3@`$W+1FImU~M;%wzdw2j*Mg*U*t1$Kxv? zPx{4(}l!O(IhOE#SHtOQ#vSK|Q&31zV+>V20@Xm1Kp6Duz#nN`{e8DO}Ow>+o z&ATD~t1qgm`Fs*r+6&j?u}xPsLs$IS&u6E=>~3~TDJNEk?GaFM2#;O$sk5%J-n_fw z@Nn9H*j+ykmwjNI#c@e4vnVDPd?w>8#|+^Oo$e%+8uz`4d(a)T4-6{G9;cU=6#+*~md7HW@ZN~j6 zg&%QU3iz&Up2M)%29`cLtJ`yJs>_7;G?k5ucP1limkaueb|iR@kueC z4%NzNzkdFw>=*1LYFmHuT-(#CPh= zLmBHbU;m8Hf5Hh@c`qXGr8D;I_$W0d2~Q1&-K1enIyt*PVci()5O%A3r->XLP9*+I z%!YT%Ic?WWtErf>i^xQx`UdQLkE>?FMCc)o_3H@Z9*w`3!AcA-)Rtui(IE42?J~HU z0jncns{!73Ca-B`vS20!29$3#3`l$Ae?cK3&}+W=l{>hlHoE`{00 zmkGnkyjT70Ar49lk$K=h;Hj{27dGqka`eB(drOz~Cs*D8Un|7)T)o#R;(Cd{g_HJ= z=|nuF`Ql@S3}##CLmx%W?-_v zcUe*V)?>kjy!8=Is>W~m**v`wy&&2X7|p+Q)*Xucq3=}coV@TZXtCvWD)VGi0}j`Bx4`n@v6 zlhySSQaIOWvfbEZk(zq8-)H&Wj6<)PQC66)?`w!`F$woiW%KDi(;F`qV)whyv5&%@ zVve8jL3o#21)u&1mxV6pKJoFy{;*thS5=>@$G6QX%T~rx*O-byN){?3RH!%I_kym* zKlYgNbzodG2Lr(-eN+%H~%omNc?T zF+cx-&vxSFp`Nn$ZdQ!4$4G`_;o8xsK*qAw03+{aFV_IqSb~SHi?Y1t)|_X0v2j16 z?uLb1inR)^`Wgg2ltVVbci7=JU1Tn1>2=YnXE{$Fp!cr%i5T+^Z-dL|`)&MH2(H81 zWz(Davu2%~iVx>pBw)?N=K2il1SJ_FC>h>NvVOU zp7^^Tul4n(7FZ!ao=Fb>m!sM0AsaiP6Ut6w)_as(pl74~;rhC?)Z$-EZ`F zKRD}27mbm%z80NFWb7E7``lD!Lt1~ROh1#QM!0u#X!Xt*|I&a4DBv3T=+GCUdqcgY z1OuJNg&vWLO6EYj>SoBuo z48cP^qZP!<5D=ar4o~(p5|1BZ-Ud-UI2ikmrRNrilwZv}CA*fxWG#5BJ#ROLmRjsw z0b^#MJarLxTw_8RY#t1$l+v(6>Iek`Ux!TAj_cYF0!Ki}2)JB?Y~mx1@e)in4R zAu|uKBWo~k59IR+ynRAONye(>Stqb*5A|L+W2=m@gmtEu)iM9ceizvO5Z3%3?z}Hf zl1DX2d}DrS55*OBzhytfUDf7E$k`&RtcT8p)WindeGH3U7TaMjZ5r`W(8xaI-Nr^) z3wKv$wKDLT+dPtD!5cX9I6QA;s}<0(jP?P*>lV6k5R_~fmHxc=b7@G@Q{V0yGOZ6dd?qJhN?$BE_ z_lL_FGUpmzI%4!UXvx%AvmzS}pvS(J+t<1CN?g_q_r5@j{vkiDlpP1l(9L1JsT>kc z+YD>GKluD5b#Wr2&dS#Ld@4M})zW-=8BzVnw+-?wI! zo~Pf2uj2fbgXJgqq8rvQ+>%I7Im-UVCqw9z> zoA6H~Gi_}QU&uedLP=KEYUNYmjRH$$=7lokB8d8m0_+Lf#f|)t8Lsm4pYTr!2rtcY zUFfpO;(9m!PwKwmT&@;$XgHTEyj^#=dU!N1v^Dzl(T>wb${?&4jD@l<-G9E{7gJ_C z#p>UD9(ua3Lq}$FNlzCh=kXZ7KGBnWB)V?#&=Vt01j{Ln={4E3mZRM#PGR2p z*diAXhOF#~3 z`%^|&G!dl#WNu+4u(wgx!alWSfo@dUO8yFKbLBD2C?4@%Z8c>cIjg3*SH*4xjXW34 zm)-heHrL2NA0_mZ)g63x3p+e9vIlH>+9)^D>HDzxPtmo9Y_v&o7P(GmTrkIwtIyCS zF=q7=4#|h}s*1nbzCZEZ&7bPy-8aNUj2i22jJs8K?dPk7D!wtV*A!Qu$RzVz@t&9u z+AW;lJ6UBp--stfuTxBH#>p`IvBosx^R{FWInbvjz{y70NhFUF!x5K$uJt^@1 zFx~(@!#aAX(H`LWAH~-Kd_BxwtU-Dhlf>Fe*F1;UlR0_lvhR=Jh#6 zSimgejPab!VP zFK5+&@_z2MnvUA*vy1Ri*d19`zI@DD8|3pD;(rJpX^n;3W92dacdg#RQ8h#i*34<9 zd0eBAczTD=3+eG^Qo*Nk>QRht(^aE5iw`fUjzYCvLNr&AW$Lp}Q+tFyrrqDe3E{cr zpZ!!=d!IlP4c4y??`0T>i^6K{aQf<)YWBq_@0Eh<&MJl}5I)D%=7_10=KY}<$xI7I z%=3S;);x9#95gwa3$MF=I87tGpRp%A5Adf@UwKaxdxWQ+lf(AkcyOOQy-;LMH=0>K zy@1EI4^0qbIUPR{|EW&sVg}RHI#tPeL#50c@r5zwe2Y?z}m|eY(myZN%e;a&-X+eTM$~ zol*_Ere}~3vyl&9f=_O1@lR!!~WDgli7XXJ*d7n z%b*YS#qzmxYrYvl3r!Xq;jG|~<+nUW9iF?rBRB5Co})3?0G+ws{uJ``NL;oKo=#h{ zjPoq;8%FMwBlzhB;o%JYWVrM+Rk#2qhZy5TBUmq1Lht6h89n1G4=!vddv=5A{&aE+ z_9|vJsdWj$nMF&@dYIVg<@d3$F^jHQ#cx+tcdudX>b^VZS#*Py#_Gu;{1-ZBcOdaE z_W7SXE|%Mu$v;P6=ZeZJj($y#GYhj-1#A}Hhgiq>L-#iWZoME1*JH7T7;FJ1n+;)K ziOtnKc?EuQ;QMeU%@Dd~mRvoUKKfAhdkr_l8v8MyoTc+IkcRCnE_%s)v!nIxIu+|P zEL0U2^pc$?>l+PIx3q_qkMUcm_w!)nWIDOwq`^5pHyi7R^_;I||FExj17ii;Ly5 z<~KewNA%2R>uqA>iORPEJb%j0t?UVS*Gw~0sLx`nTTpdOM{I?@*jMa5)r`Zt$rj0D z2kl;a?8${Z`fK&w@pJs&OPq8O84W~D=*5Q}FW!CtAw7(EfWLiVRvRJhI+Q&R6~*bW zI{2>+HYn|1f|7gF{<(0j=5I3BIP^(u;@PvE*U72Q#6*At~- z&q)?&d4xp|;j!6}I+Fb+vEwE-yvj$Hrxzz(0uJneB%UDhgu*8|5Ll@rJD zS0{?O3w(z6KTP%eI#;;FgGn$$Hnx4w96#mRdblmT-S%ZUDHR3u4BhlZmboX3-@x^c zbzajzQgMiCjCq@2&)TZOlK3#CyPX!f8>|q{iPrt4Svs7$T!XJiL2KB z&*?#gcY}mCc&(u3m+BdXo#F@SweZwc8AV3wEh?>{=ZVa4`1 zcK8SWGm4Hp?pKI5c{j=iCH2`;!|6q+T7kJnx$98K3eSIkBX|6Uhh7#P z??*cT;T)U%;ySxbkeKcN;F-O~w~npW!dTeJGy{9DzzDyXe+qk*Dv0+_L{U$9x-&af zmUCY<BN)oYWkh^X)fe$a zc;+vh6kI`HFPy0I4kcL$(pyjqJD~S<@!Nu@M~kY3tQ}5^|5^^3VGNxqmtt5r?4$i% zo>`~nSb!&1oA(y+c0iOLk-7fXp^On1N%<`eON5Si3M~E<_g?gU*iVOk>KWF%?C){V zofIO{vUm>YD8=gGq|Cg$klFa3ht)gK|Cce|^~w0^(C|*e@TSdV<`&M9&c?T|W3#lL~^ZG3ow>bc2p3FVO2 z_`0;OsOsC`>r4m;y=u|!dLDCeibGe)`K`&G7j8AcQGbinmrvglE4vx9X*j_Qa* z+WQ(oTdaig!{!_IxV|o@RdKK8MmmJGXYz4B{9RdmXP3j0v&AjGI?mRcanE91h?TTx zIG^uddFKteEOabt8cC>v%g7%YsgguSeOKr0FeJ>7ue-93Hg|sykCh{M&F2p9zNfJuY-D>uU-iI6oU?Y!*?koXlV@L z#LiacRDqs(G0OSjS+XfSJWB2v!}BZ6{ZF2bsN7!ilV#kgF&li!3QgRzs*&Vp%Oo<# zS$wodR^N(A!(ObTqU#Rjk(HgpnW`lys8TpTR7;JGwGynSXZPEzd%&H>i^mp}L3pya zub5jPZ||oT!^!inn_Y;n4)D^-_eaoG+<0CTw~4S$EIoSLNG}@ab)QMVCmEqKk2&V{ z{TdE_9R{+oULw`VN%x#jHICE=9fm`OTB8m9(66!YF}@2Ohzv&f0aOpgWh*@~xXw<3 zg?j$|WS?-3dlJ|?CZ=Y~0NwFXc-zcimYcz2Vdr94jZNo%1>N_3_pfE-;hfMaMv)H# zKdWZ=SJu2tc^<@rVTEWvbf1$8ZsM^RqYicR8<6s{K5k0-H+1d86GYcU&+imWc;C+* zxJ^heyug;P+t)zn_7II80@oLlq^0yhZsESwOg~KDuf*qt z^j`)3ALdJ?LdE^0;`8J63vobxYuyyJ_!FOdgvZ_{UOi& zNg8<liEix1p|xiCh8|X-`6h2SlZ+DctAx%g@b^P#dDA|K_(VOh%32lzR*-J^u$H~-ZX|vCn^XJ&B>;X=J?qfWGXYnMr z_9ScgU-0ck+Mz+a75=)^EI(-ke^hnfj+XU4m0Lz%gsx|KzYmhL`*=r> zq25NkI7hyQdpq9IaxsgK@}+NLJ+8#JrM$Z2FSo&CW_y|y>OzYiu$OFv!L&m16|2ed zSURnYbev>cYti&ARQ?S~`Zh#;)AM~)dkWQRP&4QDZlJCH(n$XmuOBw@hxGnE()g!r z#dLT-Vs209?R&=eHS+ZjB>el{{;Bt0DYRfIc^qbzlX>66*t&Bn9qypjv)lEo5j^LU zZ<}Mhzk|?qft<{veLsL^clz`faqb)F^jCVk7Ntj{W6m7BM6SLEk9U$TcO>e$gNCYv z-mF2F(%K*KUhZ)IG>_^=`d|u+*~O!(;XQBg=94thKfw2=aQO>pelJ`74Ew!{RxF3A zrF_7>7UJBj1&j$;7Pno`W}L!{Lf{sM4)%w?JPKBKm9p6rqrdr0Y%=i({!)W~+d>YA>nz=p=y%S*jK|;jt~sGG0H=G?vA>sEVE zi_CZce3rrd1sY)=KQcG=yvEPTT``BXa*oBCVWphhpc~kiKk~*`&F-5p{zvr56k4$v z8lKa`Khs}#;P6Fs_EJx75x&=)a|&f7NxqTvei^6kr-6QD>_5i6oQS)_EM~*laOgXX zJCCAJvSfawz288~YP4!agXGqXHU7CY?;Jf(H|y+1CbD;u95wLrSJ8gCYcciDpChX~ zA+%M*y*GO`j}Lac)pI!YNxgnrTdAoqmWR;KTDl8Hj(WC2>|1#M3QfL>Zr(dfH2zmbApXA4Cy8*Do6k0U{k3<$Mst6Z z7Q4|}_EuWxFX-~0&~kfWcQjpaD;@A1@BRRnbN|vWpyn4)`W4u`%B;_uXHJ6t)bndU z{TEq#2wu0cmZwQ^AJR35{+U1v%tG~1IFNY!5u@IQO7D<`)na;YquN?NL$c|bpgZ@_ zXHED~8e}Dz%9*%jP?z&4!=d-62;6Gg?3KdjuZ53Q=Kcho@iOhQk*0Z+eu};O6uM=-F`h(r;J|kFBsmDLlfzfx zV;gkk_Pi!PN5jP18mEP z|4Z-RBi)}d^F=Uq)Ht7{$?maR`bBw)cd^!Yuw;J;H9v>HRo43lRf!tO7yA&qm3wji z)@tLs=86#2?Zl5BTYR zb~fkAK0&H;gG?)}u!`*GwD@1Z^q->Nmqnf)MEz|LU%>;+d4m6GeG3yXe5w30Z*-$@J`xCQW?I z?dZA6h}W6ZAqYKF?Ap#Z*N;L)_gKf{^8^T0@r6eC4lE}}tnC4VgEsop}jm#uXES?hQ3(`K_rCkqO{iDs|Tz?%!t z|KDKf@gf$V$ZztbSDNJlb022*sk-XJA7gOGeZRgZW9Lr#_$KYlU^mNY*Jz*k zWKZGiGbpfzWW@(<^CX*ZAzgZt?|-EKJMbr`_7bCwZ?somYmM}A@BY$E{}boFYdjC~ zENVzXG9zdET5k3qhWL-eO>+4clBOZ7)nTYkjgABQPp!-{x+ZnUr@>?HUsP3D--(hf zgY3l08|eDiY3`pwb@rD(XlMQ=UQu$`zKQNnqeP3y^%B}68thRqglA>~7HqmOtql|t8};X%?69o@>i zX%ZW(m8*8#+T*-Ek+W#kMKhML8m$m6hta41m+^g>U-X~F8hHd+n?zb>vlUlB+HzWW z0eQ~qw!?1AX6Q{-{QrWA-;&4Y$waNWcCjB7MWnNywHpOpD`@PGLdc&$>BsTz2HI^3 z3)hZDTgdx=Z`4z%oogITD1JD&d~lzaxAK1%vi4Sp2QxzVT-zx}1v!aX$U7tP>r$i+Y7 z^P|@J@9?0{%AdN-+kd6ke`0n1kz^-U^=16}Gc;dRoSS$O1%5+5e#2TlO%r9EeiYYI zyK*)Se-p%}9zf1JR(a#38E^9WH;rL6DcnGBH;}{ui~ z+<}{&kwcKQ6}28V_V|H+fc6IT9t0V)@aRhKe;n3RS@3_tSz@XSV4ycTy~9@jj5OaP z8v12A{7bNQA1$_lE@?rVa_g*ArM`uw{xkFbTeQ9#%5E^SYWVDBMY#vh-q6O&`hOj^ zH<8o^JU?xQ{d{tUp09?ItMDtQ;^O-c!0#p)ixec&=4ljv7SEr;@thE=W$VlIG1*)f z(nO2(z7X#gYiSW0Ow{U7RPXPr6eW7$Wd189Z=?O+O#DuEbZU&pe&?o!%|`W%mU9p7 z|J8GD7x)>S@+-RdRa!CUJ4Uf;*VCRkb$u_IrFz>BjQsD6`Gb0$=I@Qr^n%ack6-`j z`?vW|HirB(7a!Uwhx%gcr&Wk+Y?q9*}?x?@1&ymm(1#?@Uwv*P-b+Opv;|6 z{T250YsULm+FFSc$%^kp+Z|sm8JIcIw&}aTjTX}Ih5Uj&Ug7Y6{2$M z(gHlFpi}GVh4%`qz6q_*(WS}s@6I?GPisv@opDAy0;h(Nuz~b`nfbT*)O$w$4tl@t zc}yFR8~uy;k(&Q~d~O1?E~Ob(dT#M^vi6sFd$`f}#M@S!-N7^5F4}#ZkJJMas&Fd$ zZV_!VAF^`i#00jrghyXzmg`CLgXo=F7kU0&1R(b*$M&?zhPj0FewMEOXZy1cI4zj- zz~4gikFx>u>EGNrv4IB}pXxF6`jL0knI&(G5+!&u6(G|CwG9?44@V;+g6HqwN3Fquj=(V+W` z;1nOW3XXD$DDuAo$D_?w;?OjlE5WChVztuG`n80o&;cz6jC->;H)-u4gvP&a=Tr5k z877g&YHf_tR&s`tJJJkGZM0RFIVJH@HF0DDrsK?n=A0HE1pzKueEPqtD^_c5A$1H_fFMT^b%dQ$W;{QV;B`wyNkK-h9EmBIL7^vVf_7xns* z{{NugwdCm_I#iA>M_S2kKKonTO7-4Pu-PA`N4|t_zc!vN z+Uw+#&4=tiXC-r!S}K+PH+=s9r~euiSHM#xkNOa5zk$Em5&O0_zN@{==^4_K2uuTw zR$8EZwwcUCzj)-yI_ZGoeKgHZ97trtNooW|ldIYI{y(m=y4v(I$GfnjOWBj zFOkmKddUfs+v$Nnfv{U3dm>GIp|~;Z)?!8RJDB&2~C^Fv?MbNu2&UbbpAx6KX4>&vaqR*GHU!d8A* zJ1gkZMJSl)PZ|4l+_-bbx((giY5ue9SqV+k(>!xBF}p(p(7D5kYzy!AX*2&V$$N%I zNqxQNaVZ%j`-@0IMt(tV$#CeH3M~uG{d!-w;nn-JwhWgqhVt>~Gk}boH12wH&aO*t z_fBrvEMybl=pYj}Uie9K{IzR%srPTxh7e93y_^R(Max-_SF zjzLLI&ix#J?kRT8zHY7eHInsXTw7xfiQrYk$w%~kw@7Fz5Pu!-K1;f9)lyD(bfR=> zwe5hIE%2Sl{jS0yY@(BT&^J@rpH!5|`SsMq8%Gxnh23&~P3}vr!`H1o`!cjXq0iT# zY&*~OSYhQC;b=5!_N0fId;Ia7`)i?14)DD8`JVg9qQ}pfbAMbN3gt6N%KQA~Mm)cS ze5D%Vd30Gz8Xori7`4BPLqCLzr;Pj^oT%lS^h4!K@boqqOU<1xz*VBjD~s4zrydXR zd|xFaPs7PuWMaGbk3&gzV8@Zf>4mLY?46tF&1?PNG_6+AW&Nze+W9iu3qJk8+do0+ zw^_U%g@@aO*Qf01l*4rD8D@9QsrE2mZKIDX= zuPY!lXOwQF&u&GJ72eF+e}GuR5g1QQ@3%$~i}M4Ne}LS*%AaYV`=kA4&|lYDvD`_v z?&R66)L!=)zO&Y1^?KX`*V|c;-9~X3=bLGl*!dE=XE;3{i{8sjqNUD2;!bpb(_3qO z&k4hW#b2YVs%WE$zQ&nrH7S~+=SukQO)`6$bu?^Npnt%jO(ePAPsw#3z*f&A0W0wO zX3}__*@j0m*!N@$o-vlZb06M(ncn`ix!%nm%c<`t$ab@N=ccw#;q~`e`ulPDe)Ik| zUMFgQHKdL;woX#v&fRA_ zVCywhf1EcM-)0?c9B=L@ELG{{GAIepmKL}fPOkd;zq53Gqu!fQ_LO<|q&M8?LXz5P zg)UMRU$mD`Cf+;%E&FS+hfJU50vUJ>lbM9 zFX;ZS`b&QQE9Sf#R)*l$WjJ~ZzWx=B@-=+^8}I)$o&90dnnb#?)_=>V|I2%+9r-}v zJvYKwFJl{lsx#3j=b6URWYGl^aej>7_hV(xn(Jnx{k`{7v*~fXdWBX??dKMrQD2{& zsn_daI(whDidS7>9MyDUrS{?x=Dzm#;B6n7Y(}-5|0@%ZPyXZpnr5(-MPJ@Z7Yyc{ z%lU#oso+yZlMfLg9Y7-w@O=nr8jk<5$*CVS0Bw7jZ!(#i3r{oE`RQa0<|ZQs#&Z@;?`rWAj-|-I27(O z#$9wnomNhvcr4y%bWR5GEEJrM8>xtqGvbx-kzK#z@Vy;pl4DDugHCnukZkGf#IK`)-o&p}M!pG;bGEY6o_v4wok(ZTp;2N*W@~K@N-Va*sK&D% zViG}>$ z_88e(gZ?LsGdDQjzs{DmT!f5Rv2%vJ4#Q%|3Lh$ zq%($*siCyjVA?CSxl{2VIU@S)`4r0C#1~Cw!x;Me4DV^1`94J-JxnSdqko@6snzUuyz#6b z7ntewc>Xbbz7<-c@duz&GpVe@n{DWmT5+kZnA7#Y^X4|c?}aww%=04Lxfz%Lm=?Mn zzT;P24tv+=7sjj)F9P9EhdG=3YMHfU+9{*J>!Dhe*~{>?Pc$9T?nXess6r)zyM z8lAw^L`;6iANdj8{h##q4^iOf+R3`%loO(p>5*l$*Uhp`KE^-F?ISlDO{%TVfWu+* zM{mAxDh!@1+Ut9tj(w3%yRs@*(&8jD6kN=vnK9h?LwcObk`R2*+7GB z;Dhcp`*u1g_iYWv+aYE=m`skOk0uuS{WL6f;A*>1Mq6Yzrzh)_TEIEAkaNV#pnfLb zEz!5$c-R1mYf$Ppu<=9k_(Ssd6Pn>k$lIdVoDUd|W{b@3Hq`#SpHnaXZhhab_3L3^ z7H!yK%xjGN1@FB`ySz%LtzwmS8&kZ&GE&)}HmRhAN3mO}Xk0BLsnRK-?D*|Qr>*Gx zE-G)r?cDU!Lh}yP=S=jTPpTG*%+0m)IRfufDc}U1-9lTOBvr@ptrbeMN1Iz`hiE@l z@kgRk;%Lbd8crrEw3O9KVu!V;yG!qH(L%xa^DvWBaW$~livF?n+3Ak0PYwAS=+Ya^ zKXvcXz*T-q&?4WJyjWXH7iM;n_`NoLk%q(MQ`S~&IVhC)Da+w4>EMzX$3Zd0;ESM$wsD(G^m+jTIYh-8sm7diZM9YqC7sY10c@>mzp6L#9=eIUe#AOMHUOZl|>pVQ4B4 z-;;dx!MCif`=QA&)Ez@+#^P|L{z@UFi+1Vh{|2IR;+_>ydXfy*k&i^PyU@AZ-ztq| zj5mYNM6#-3a~y1@)?cgL-&mN}N%6Dn^22sle`QxAwJ+bM&yM0irB5V&al3hanoRu} zbbXo!nCh9An0-H%qzQ)Jg~RM9|JE#i&ij0XE_#a|Y{R!IZ7epQmGGB%^GYMXp|IV( z>B27KZ6ygu@w}e>s297agSH0mxBKlNxXRe)p>|FT&0>2d>Un@RP8-`1Js;-h<`%*Z zZ(h)2ALEHlsz#aAc&#+XbH;K3mHVJ*>Q3w?**Ra5Sm^WczPhmRC(-Ss&z?cmvvzDc zt(JPSSA!s>szA(4`fDUk_w~I?zYUOH3+Z**$tjZE(3eUK=L`S2)A*Z6&2i6OvX!%U zsRi{U`n&*@Z{XPumaWyi`x*Zfa(pSNx&?ybbN>&hO!jcHx8r9Fh0z+LeS*b!$XMfp zJ_TjD8}J~@5v!KCW3s50Yv}`Y(#=NtKC_74KkvQhv&YHTeX#v6w8_1+N_0_thG1|K zu3QV@ImhvdLbkFpf4??vAaP6KX)-w(MpyKrKeFCSys=Gd$NYSdjO^o|)S!0m@ygk> z{djbUojy)y9LJ}<#<2&jj^T1S?oIZarFgZ%&&$Z~0vMk`??sx+%qA!D5@W8x(Rz4_ zZ0yo@B67XaBzX_BN%bPQPEO8DsHo;U<}UbCwAik~?|#uNSMvhjL$xEcLn^{V=A#Fa zBmN=tz1b{RKv?dCt3bVII8ndIMfXL_bKdnwAFWY=ODPg+Tzz@_N4 zN_&Ij&1(WIO-GHXTFDMj@^Z%GbXKY7ji;U^U&n{|J)QX=J@c67b-E_nD0O37aVNg$ zV)pTUv|{dtybdKV*U}vLuJZIUms2Qtnw>nY=c8zU6y0%rjp(r& zuGjiE=UsNtA_v&Vqv+OYzGLC)a;>iL?+Ucdsep-)HWanb<77QLr>4LG_}K@Gsq|Kd zTdBfymV6`=@={#>pf)~%($~{K$qJ2r>q5!3Xq}VOKQ@worOm!?E&U79k?H`uaI6IO za*{Gpz)$M=Zc_3W#*&P%RED^UZtchOj?Fsk^Q-9lU+MX`+I-2VQmH1{42ePZB2QzD zdNwaEyX6b{pUH5FK0bxV$t`K54|f%j=@Af{eU+iGSyotvzW6kxh=Df2U@dI#N9UZM z%GxU0Co%qEp1Cl6y&kS50ZToXqR~ZY9*f?NDm#rdd6+p5`+xoXBYpo4B~s0$)_hNS zD^}woGkw3=eNuaO8uf=E_gc7~<5NSm*@@;y&G3lPH<)3(+??CaJxon}?el!?5|lbi zKXkxSEBZ9Ck^A)eo?iF*d9R*x+f|FXk3h@p23<^|7UT4Cd`lkxG+zG*Hn+^oj>FOp z^x8-F96;l(p53(KNeIdvL&>X}WAu}}HO5+RGHj0`>9N3#D7@1sgSFg1^fqht2XbBu zHK~aeOP{D(YIDps|0TwLDIQ$<>&PuSAN|5arsBg&vZZM{oM4^`K!pUX}|XT`u0ozRr+^<-?M+$`0fAQ?f0fX zhktKNYWgQ3rB_l^nw&D*T_&xs@0WXBkoi4oyHIU@RqIP_W;M~qPRjemYt}FFaQjK? zdq;VDwy=eccHz&Rdn1a3XN@`6%75N9$ul%H!nG|qS8Cg&+sVtIUQy}K+N279 zmL?7Ob0+E7pWjLDKbGW-Ni?}ISir@S7AI9oYLqkpKl_x_G3hv1)S;BHloM%(Q$M>O zyZZaudP@Xz1)@}o@)cW>v(4W8E8R{~g~@D>WD40VWu$)AYVsCab;}!jTWewG7Tabh z2Na2T@4OdzA-qHMw#dYop3z@oKg6t$`x*N#t~b=Yo5lTz-5+~1W^PRTXh(EnWc$b* z5u3qm)tm{=Iga~q7vF4aWSa_ixOSM&N5eN^sW?=+!~DVtl7)5TKJ%4^y&NT^Uc+;b z_r(MjdK|tm_fU`IYT+K7cGy)hZMdsZ+DzAMMCE&Fb~jI};*NDSaob&G-G9=k`(9e2 z>n_;zvg@d8J-EOd-3oMbns`<4gewH=1W#edp*~zI?(;)D0Ztd0h0p9Zd}T7ohotP5 zHQ1(XVmV=TS;pEnSUcGJ+xj{B+jlrOJB+ZPvr|Ne@I6opJRNm4azOMrbj+8dMnq4I zItL#3lE_sN5fO3WZNhpw7h%ig5w^xkTNhgHVQXj^d?2R4OJu`R3sD=_zmTb=ia8CNKcaM9FW`3X`Rz%q!mkBnbsstN!y;b1W~FS zI4Douzg+b_72PX6lflcp?tbjab0J-J+=+8uf~o}C&wm71!rAn$*_1RX@!Lk0Y_&=WbMe+ zQO%>;N9T*a8NE9?5gOzTqU%O?h-wpMjZ`A~gx3gP4}E~E_O{qj9cXP~IVgXE57$QV ztuRrz1V`udv?-jRqRCQoGqj14q1mp0Q~d(YE9)?I?+G2QHXgrwr7M@KRNC3pI;l5O z?x!?Lxd`1YOX~WRg{ehTOQd~GeV?`_Z47uys_TlYr@MeV(LLK;(39pq>6z#m3;oGO zzR^B{J)KAJ+V;R*p{0ILf5``#?ctMkRTwU&N^9h&mhRT>wkOyKO|l27l7kq{ zTkcyH!OOu7ZHx5I($4s>l3^@7V|ZG)6 zG43uW)D$YQY|zMF#3Rfna79$rR$3ONuhI&xi|64l-_>^&Os4nV zE#OgB@|5ys^|bJo^=$PHhobOhPe-4_yVcj!n+WF99p5$Y1s_GcZsWV_d+AH>UjRk4 z>4Ck0i$N_|1|E1{)alw`eJ=K!m%|@zGIg@DaCg~@?*5^aO+Exy)>ama^*y$8+go?q zeprXw7uo7L+S#)?Ydbv7n$9C(6~Rl52|o(`trys-I1>IA3MH+fZay?@891oJ9JlS| z?Gp{x}Y>zFG|A-@`yFzdA8Mt==+6ent`Di8b1HMX=IX43OGQGLxSGPfnLkSMS zrrTM+(_hS&0tR3Pui;+e>F;jhDd}$DsgJC^+I`$(^>DD->w0z1Txi=|_nz}|uhm!2 z*8x+Td%lMLzW&^S2G}1Q9o!%ChMK~m8PQUYhxfIG{71gihit8|QjC`pbl6+JWIyH@g=k*cIRahc!0`KF?IMPS=ZO3szArL1;$5T{S$llA zBl1ufxc|=MVRfL*{n$1PSjlDUZR{+!mi9>mF0|KKd0_)B$|jS7w5yqcl;Cg**QXkD zumNaSGh#!waOh{COrRTdqD}95&m&I}_h)xzR|WU5w0EuoY1dul)4o92|F5#mD)%Z^ zq$j(3nP-DL!Am`RysbQSeEU7RFUI@Aztj5>Ox-M@b^hf_Ot7N%F=RK~s)v^}K9afS zHTI0o6BQvpy#Lmt$NgaaWewUydzwAP{={(_ytR?ev0>$qqwU}rr-VO?cpWi1@^Yj% za$Z!Ks2tHHqlQO+iR>R;Es{kyk0>9NBRnDUit|i(6-WNCL$+Ct?AGtLt#T`CY3Ymn zT9_-%fl^>uYJ&f8nD*q=$YXsEPtZQFM-G4)Q9DJ!o!&-5mUW6p_hD;|7L_x?b-w`ic8p|bYYb@jJr>)x@ z7i`C!7wxCR?m13ES?^#(A?U1)ix?AiE3$O79(6OCz*Xl=Ore;lSa&p!=@UIUW_8rY z=sA&nqUuGc5kGMzh5_Ra+B-TX*fg62j`b37X3|Mxt2+&+g=SM48M9`gIM1W!R(_oO$c-{aZj>+flc z@1dqI#a-L?(fyC_hr5LZvo|E2LsKh>d{`Gdl95Bka-|K^dp)*h(495w9 zTOk%|qn=hm;Hs@P>KR2%H$Moyp(u8Uwgqo|wzyo_BK;#C1af)8vQavRotTTZ{FV#$ zIO`!tjBSoH)?Nh$1lPizIh^5roU!4jov*{rIJ<@oa2|KQal8Z8l5EdyPqXE-d8|dC zT3EvpZW$ow0eVsyF4OhIN@5jZln{?O-d!?}b~Ia&$A-p>>(h)Ss;=?SWOZRMi_$od z9BkkZ1?Kwd1#G^z{_Ebo{)67_{?p#G{{Osh{HizP&+4-Ws{0}XJ$&JTrM{@ZQ(yi- z8GkQqN52j%0k?cba7yS&=r|OX(rZt&jqsc(1pUB6<}vKq7GkxaMO6zCJQ_Ntr@&9G zF15E@lM<{A<^Qb7@^ag5OH2DiYpkQY?Y^UdeTXw7;`miZov^%k)=JJQVXEV;v%90B zbDF)cqql9ay`Z&&?FZNehonrF73iS12`=#^`z{n@@7Xf?1p2#Yuw%X09Ah@)<2c2h z`VQ=3*Hq`K$#5mxA3Pph1itcS|0Mrc-yKBdZayn?CqH_-`(AsG`u=zm{7&COe>o^4 z4)Api?Dw4wXg)`wgqH5a=9Q70jv}3#9{lxgI>Y_rgh{D4)V_ni6SGN7A<} zk(GgxOE)P+>>%Hh@>-V258xu!4nDK*!B*~yz1}pi-e%hkuqV$sE;~Ab_x{?s%b5wB z_bg%Oov)l7F!em;nBaJ99|xt4mbS@Iv?&LMm|r?5U5C5g9$~t$lg(qt>3Vt#Zu0-Z zCGr8^hRx+MMhCC}J?b0qhDIt$P(&IQxDm(Yu< z!*?|sT|rN=5kgrpFSc#Az{mBa#bbGb2)+{PG9~RZ?HBE3p``ZS@zgQeIoK&;w{cR~ z{jm38Bf`@`$2eDb=LkJ)V#NBeCJ`*`5fEb*UeS@}%x2%?NVQhAABNJ@KPtf{?g#)SMnV9OoN_^ z>=xaLu9dFSuAZ(ZuHG)Yd$H?Z_e0lycY@o796s1{)&0ej&C}nz)Dz>&21SWC-X#BR zU!I`LzdF=BSYCxQ8yVN zEOJhA)OF;t+rYE=VC`$U2VVMp`GWXT>MeW_o$RTwgY0BQ;MTUwxMfD5au}@E)gOoY zsg;8(@$4T0{d{fx)x2@O`kn;u9B5%^F5SJ^b<;h-b=KY9bshRnuiOhvQqSL;# zxv-x>y;Qg=JrcjkiIQnKC8x9Pw-m7NvzBoj!R+U(J!9Be$EUEZ&N1QL!d{1`hMD0N z!+(U=3SWX;E@0!eepsq=0F=MRIT|=7+I!n4*k*(4aKJj%^1?D*=JFIc3=a`=NDaYF zih!r#S@iS`&4Bs9=*jWa`c3SGv{61l7i4SbM__%>=YNdYR3)$vv8ejX+AUBRC8PL+#Y;>RI>^ z<}~sei{QMPV!koUL4UA6`%Pyce$NmG3WKG1vA%pwOlKJ{y|>hrH(2vpTG(Q&1{l68 z?VoKij&1hAj#8Ke&4)_bX2(RZp>sP#Z0Pi|o3mfebH*hBrfQsjR$IqwnsUkZVIhcP6zjdLV=&b9)Y$& z7%K)&`mYC;`1b~;L;G%ye^+3w{{Yk%jt5@&F99uh3QkKXusu*Qm^rvDco8a{GvNt4 z5-j0)*sH#%#pt3@(`dm5^DX8A^8;BzY-}9OAkqW7+2&+PaYpFH+t`+3`ZduAI4d#s^tx@8hF@&&_HTDsmhZ83S z*J3j`kY(V`egizD`nCw$IaK8__6JZ@GHo5~BG{;}Z7P0kCiaMaTT56A0{Lrc83c#y zF+jSf!Lxj+uv^&8uCwd(EB#1h8Z`3~5$=l=9bOvTbf0KV!NjPoEdmd4a;So`AlML3 zF+P|Z`cLQm4Fc1k1~kln!#~r1#ec~E&i~aP3r>&J2aR^rV} zf^O^xaQh|)uK4%(&%)o}ySJ~ezSrja?s@J#<+2dmEy)At`yoY>Oz3Ke< ze2e_+d~tz{{=-m~>>BJAC>kmq%%l_y6;x|0?X@ZDZeYH4=$ec*ckw?YjQq>`(L=&X zmI}?jC^<}uhfnDsUT5-LCdRPsGswmfim+gX5_+I}DAOIQt1rVnW!>^)?*XgV1^?A#A zli_2K?49CudoM#XBg|(<&MxSCwBR1n?q4PI7Ar#I3s z8CQ)w(43k9PUCZEszeCKSTS*zP#!#@f>1qiSTcdx`cvL+J!R8Mu=HSO}e;-VP+5mCr?5`P^;a?VbSg<2y8};!aHxD0vCoC#PG`HqZEgJITY*3*`qmK0fq zTXjphCiFuGp=)0+j1cdz+wgz23YlmzR)JKejm@H@6_{?Vpk>ue->)};uXAf?4h>gk zfdPFLokG6QeU!7H52F3|T>q&aDAXo-zC$D2E#k$KhFYP{4> z=t&<17)D?)b3f_(u4SER{#7&IYha^enwj95kGCBOT4N=3eeJ-9~HR8EcFo`cvr7 zNcvAG1Qo`cnT`{g2H%3wp#!0;p_ZYa!R%n?#)h7QLzx!*HR>DsLaEye1;|BOP zvf$#t@Suh+bU<(jz8j(ph38y^(o(&pWY;#TR(+XfGj`}X_#>ks^u(r+hSk=R!?C9m{Eek{+itU}hQYdwnYqmXU9Z9TZd1WH-$?Vs#>?Ij&Q>;s_DGt&|0 z80XOJ^`J_Vf(c!J`z6~gn-vNzrL4uk|NqC*OztE%!wGK+&TMmGiO`m9X5Hz2I*1%0 zW6Xo*c)khz>lsEr{jVBIHLZ@CLoE*;afMJ^s0AE5=fSD?2l8@%IAmn-=k>dMy6?9y z)n`Kgu`twV`ui*UPa~>@!>?vAlxjW%Rs=c)b3%3ead3NRQ)sXhRXj~@>-HC?<_N{i>xt-$15?b zkrB5#+3!G2B+PLb{pLpewX6N6-LSO)5B&@(P=e~Ml(mkfy=8z)yLkd$~h3dok?nH1wuy!yb z-sru+v%s3bt-vJwb#%ZLm;!B?l~Axe8CV!Zd=F+17D1+88~PYbQ2K;UB9`@6UnrHd zvubYrxR%Yhpy%Najbi3UUW)uQi_*`~jK4?SY%8==dI`P6Okl^~6gMJ%=a*&qfV@S{ zhuy#Rmdh3f)@)nr9_u=*ioNy1wp-RJwu4X!8v-q!XlOjHLbPL+!jP|;F6P2XQ(Z<2_@iOm&d0|sC8%wSo!xty?{VW4h@Bd+BeKHhN@ka z1T9(lpsiKU={>YP;0F#fR*>*g@zheHI=_ z-NiEUH*tg9L*nvRsja0w6wGeRNvL7stlca*plR}8YPLLHVxSWDNlG}!3WhJw!;GlhKPwMl-suJ<+`^R2p_ztd_NS+rUD zAoUg8a;j-9l`wr5tW?Cm_j7G4Xw- zepT~p9ko^3Z)o7ofsa&0qr1V4%uow?%eR@U%~9ZY)~3nC$|lnbjIfTvFqR~|W_`s9 z!Ygr|P!Z~)E8$1;Q@Sq}m&-`Qe8UOp#(m4C}$prrIh&T6@V^SenFEM4SBvPGUOFNS8I zDz3mb8j+^Jy=*sbN+RlzPoym)WFK^WHPVGQAlr;prb~Z={y9D0t~D|QC_3~|4{EoR z&uS4R8~VzjO2*Lp(1Bo|P-|qW98kgz4?aiF_&L}pC}BgtJbZ1&;>RWE9#{~qnk$(w zAvvllN&~Hvnyme&uG70~Z45gY;(sxN9fnAja0i`hCa{^LpfDM8yFsjw)JSm3@!|vE z--EypOohUJGpOutu)dL>S*uyNb(19fdVqW0 z&iVj5%~dSavRckAznAhs?I5ez47xN61j_CKVUK1OD4paq50S>)FlQTe&D;81?nD>V zM04wl!OFh}6+%fFq}B@URu%=lPzY%k>Jj)5H2pJ!*Zhrwhx}!L-d7A7{esPQ&awkpq++EBLfsZQ;PmIx=Og?b002VAb}@W#-2Zc8FbAM9U@ zV2N~uFrRf3YY7!3mk^Q`;|}MR@>xzun=Msj$(o2+UM}2o2`L$m-PkQEb3TBW1IVgoFcuGN=S-08mzlZLP2PfHH2UMXnK$yAO_Tc z>ydou=lk$PzRmEU9!oG}y&5#J`fDB4?dozR4XSW0q4f1CbT&9X)G1gcQ~=MHIT#fx z9!v-2nf#%BP+c*D-BFj#4P6YK31x%k+AQeFdX$|?KQ)i)Rd1=wpu77IW|f(Z=7!9h zalve9+DJ1J4GonTmYIpzJ$VleiuH)ym85mhD6&b#pwhiiej>fY9nNK0F88u{p1C%c-D1($9xbf?hc=#BMQ>&^j^_V(dtE6Rycjqg3 zQSC9BVs4oMo}FKLTe8orKzkD>OQ3hy6*?I1HC#wyV?<~Gi$S5PG+JB*oIXkFBUO=K zNJ~&vzk}9A7R2esKze)Q)7^4Su4pwoayzIge8vWSZ#dw&g-OB`OoHQu z3hXf3LF+&V{uP}?IwNbmBt5ZjbC<6|Ci%oC8aenAy}OZ5KcLS;WvWB(VWvv7{OVry zk1|xf4IRtN$Yl?dE@~2-$l}y3YMuW_GrxLV&84~2wpvMTr8ZT22Zx~IdINp6epe4O zIvL9i0S@jbF}oaSb^%j}o3F?UGKJ=#>DW%Xfn{V7!Ynpa_{DArHH2_+wa`@jDJ&FA zi8tX7p+XZmpX3r7pf>L$<&`=^)3&}OOBtmnP$8Oy)0|h7#WTWe@F}+Nw8KH>qmJGyRQw*!Yj<64`I<{4>3QvWicr)|GA$Ui7#0cpH)Sw9ZhkVj_ zsVOvF#{eVWh#%*r70{lVC_R>1LdQQInz&cR`p{_kCB77fh_!`p!VdP2pwPXn9u?Ud zIKd^Emq{%%C)vRlnhvh;u|_YD1 zm3c}a)D5~oEfg)(7OGprl@7{AWiPrZNsWODWPA8x?1M7~kOHlX)?L4=`SI+_j2n6d z-o{Afig6H_$#Bx%tVUx=ID1H5L;H9=)UBF||1m#s(AiQ*5aluA069gxCbyL=mWxtl zO9tHK{_=FF(X0fnu-;;~EVsl%wa1E$vk!3oTPvTG%gZ%^8=u9*DuZ+Yr#c>p#8lxu zOGB3Kf$ffubR6kO&p@q8|;Nm12ON=Nlv z=(X~1Xt-j7tKRFNtRx2Y(EXqjDq2OA0->(Tn9zDus&AFraFM&9^inJ04qwN4Xo>TY zs=d;d>Fu!Lkfs~PN+S{8Y0J=a^d^tYDs&l%VNK~*Faq}=(sU843pVMFuvMxl<^}%0 zK~5)8%LwUT%Ux-WCB1yl(os&ftdcd$6{yp^lwU!aXP4zVR2^5yn%r2PC41l|GhOP9 z^PVV96w_m3)LUpJ9A_7p0qx5=&`e&0Gxi_6ZZnv3%=Y{h-(ck9?}3+P*B|Nqv?BT? zR2tc_8@y6EsAfmUlo*Osr-eQ$ZGrsM5A9W&gf^kFUaKs_Gv9^cZa8)UJ1P&L;}cY} zsAbe;>H;-RGk_h;fmTsrU4nkvUE_$cj!)&o%ogT9Bs0kYCW#yM(g`qWdSm8f6BC4W z;&dTF`XrXt^sd!n2P7#!wgUTa%m0 zD^ah-p}U-dzU{R*Ld-4x68fN**~1>QpNL`k=>0@7R;WeQmxy}#wc^@*?WSgEz4b|Ylwk)tw#691D?tJ1HGhpA|5nb0We3zqv$=|3@EE+Dm%2ceVLC~bn`(stBs%jLDwV7aeU zPR=8x;rFbSCWvKGncM@fw5`}r_$0?V#FQy9(vf59(Un z=HpsH?V;9IOVJhp*T1RNLL{6HRs6ro@1>wIT#TWC+W)|}vW{53FEokLE zC-rGZdK_p@G|;j>>?}LYVg)92gSOyy^uw}Xxomb#pFeCkB_BFc_iF|@?z*AFPP-_+OZgEdLT3h-HnbsPxjA8TnCcq5eaPm_JFPIhA%K=~$5LWeaI(Au~IR zEK>^Sc^7sO!qHpxliG>rrNh8eH1w90p~yQz8YOR%Cdy}}q4HI!xqJ#cSgWKrQddN- z^vKf}fs3^ibBdp_qt#ci2reKKW7r$$(^jX;=x#(0C*JZfvnqLx`FLsY)mIp&(MM+jJijZ`OU84$zoDv40EoB;2TT53T&Z!9=2VfYTxD=A88 zdWK{zRh;Z ztVS<-UXe7Pk{=#44Ybv2KXla#kfl#(Z?&IV3%!8;0B^ma@k_@n7&pmhd<5P+#4Kyd zYz%pp~10s4+!rK4Fx<^V5pg-}L_6juu4#oxknv6z@34G*VE|%;!A`L0tR16Fp`*Ze{7Dj^ z?z^5`Gh;|`cxP_sX*?5ekDPta$Ysv@l>oAz=n;&??w4`6Bd#Ur8oGWtX5+*qo{KEozbu)Ir~pEuqD9Fk`hv8= zO#T6jhm!41b_&m$OUW(gLee@Jh zAYLyM-wQo3iO!E5u`j|`wnUi7N5nDuiFo}BUFfxh0fm=>xb2izE%~U(S{Rsx= z3OGtL^i(60-q*OM{nAGOa2RV$-^*G_<&Qr1|F`J~0D%V!#ococ7qe&Zu1;=RcS(~X(oBr4M| zwgCO4$npzA*iqpTD=y{|c4D4ohr?GV$u4e^T4B<*~N86$g*Yd*i>6rEk_16mZm)cg{pyo%mwy3q$fKmx)SY0&= ze_s_d&S}WwuMzL6VODYiIjfjnL_dalu8d(b&Kc8<%3MSjJ)hS$GnjYHeP%OKk-R7O z$pG4x8h^d_SSOYliX=Nxo8&+oT82}M&Kd7`DfX8iiR&a$Is`1_nA89)h_>i2+eo9N zdQkq%D`f(n_z~)ntHpt04KW?g{yAZY&_?jW*S8<^ncmQN^jh2KK9UDMY1_$EGoJYP zbaOEO#ob1IJ|0?~4kOywqR)g<41cnNmb_Gy>##2zB=}e!!e*mLcWH zE%FPSbc<*z&CMpUeZY+}0_zwHo&B3a4N*e1SwXxY_7OjcOT-|eGs77dB{wufMaeIQ zN#CIz`VcC{hs3Ai3~{6QkJv{1`=9;74xy${LAb~6usW=OTN4&n36d_0@^4Z3jKj8d5Ioi}nCb>(cM2kSd%VAzx*tmMDTrSIt*h?T z7wH9o2Q`5^!)Vl>TlKTZ^wC^HEGuRJ88YI{<3>MI;up;BJe=I;-AHBgEIDRI(|o{C zHjq2iMsu(Mh`2ZCEf&SXg%+&7FprH9&aw4C?T-pJY!MVdJgy&S-NH;`($$1ky2Kb&wLOGfi^kQ3^L`0X(5 z#xcH4Z^dirA;Yb$G4^QXjDFfXz3ktci7XtzZtySl5k4n0ACQ4?%pgl^x3u2cFKq|1 zcam09uYg*62~I?+o}xE5iWnD+QSdWNG7|E4lqBFL7ZVYyfdlqHRnk?Q ziEgWjm;r3;XTn)LcN-yE_>EcMAXWsp!A07Jwt#A-2dd8-q1@e!q&FR8CBK6XXr{T> zsD$0QKX}KB`E-2SkJ5{LL*s&e`5)wH!7Sr@Y`&}L&jy^2wCDF-;LOvi7YZ#5-V=kEV76) z>HrEq3x3=NtIh@r%h_`vw#CF~Y?sv#uAmP0ic5ra(lMd1^h78lCBw-=5VJ_pnBb(t zvqy^S5$9Wp&rzLh!roXrM1Py`kR4*JP}9Dq-)TGSw7dbr-hu2UUvQ86n@PvCX2xh?I%PE$B=7Ng+W4QaXsSrZJg;KB2^x78s77KpuLN*sWA^v zJOO|00c@y>SY5QC%eW!z5r*NmN1{^Mj(WBb?#>bTcNd3m=5eAUW9)#UeM8h|9y19u z%elOOSqQQ9xzPYVUoVVem@|IYgHTIfiAuVLo=+#bicNL6$m8kvYUi+rbQwP$Yi|&< z4WK2t@w=MhluyCt$_c#hWWBOc(3lVZ@{iCJsQ`zpjnGw;fhUYGi$l47mDz@9=3UZ> zl%9GC-k=u?4U(S$m zqH|%xqz1Z+u0~cq-RQvg8*4D_f6g?%tt&=n z)9Lgz^t*F0#(LsTuEn4F3jXYG;NA5TfAP>ZD# zGBT4T(O2vQ-O5HlQ@Rjt&RcA3O(!joCEVn`xtI*W9#saYA>V@Y?j)YatPJgW5jE3O zqc;43L_Wc|YqY`!PDx`BDvL&j7uD4pJuhnWY{pf5ZUIAki!B-s{Hqu|I|myLPlI%8}4V3yN ztIM(qgD|U}!xjo_*P!7T3*c3Btc7cp^MsFwpq7>9ivP3xy8Ycr6i4j_krK)se8TNVErQ}yM>ZT*pv z!Lae6Mh$)+c|Sit!)I{~%KWvlEw=_P20pk3wL))unOr0VfZ{Bp3(yPsX?;vn|Gup| zn6`OXPxxc*#+!TtzX4OoA;bei%Z5)DF^3Q>=E1M!M~zkxaVsxwdIDHDM5u#v5H4(n zQ_8=<4Rl%rJkBSmKKtR>byA+pMXrp6|K1j$poPul{1UIm|3z-`;)Jfnu2F5AYz6B1 z$1!&suDei&zXlq5L;s?kLX18DAH&`HE^QY!&-UvV@oVq2TR=lU>6KB>Owchfro_3VSZJPqf44=U4_dUoAmRKo^l|&J8`+j75g91|arCuaNhv5*xe&Sc05R%dRs+6aVn%6C>N)*2Z z|A>unVxMG;M=Wn;bTBGlueAWs@m$z1C}<2dDx-gFi&HYeIF9)J3>i-~Ecos!^3K@g z-^h32gnz)PN-!sw?ali*V;RUFvj_6#UYxrhc;1Y(Agu=+YXCh*=fi1aC(X$&(t6-! zcE!YXC}R3JmVk3mf=y)g*m&SxqY>qYVK&eg+Tz zoAVJr@1qusfKPiX%%(S^%lb_$c)#W7SoD79F^ve|UFT;HX$$Ph4#yMBW7&|g%AmTe z!?q!hZDuXlDm>#{%%8^~pLbyvR+D|AS-`*YAn#p-;=@#$g;vGxQh;0_`^X~F0r5M6 zlmzN7Vi)!qkmyaO9}Xa=(dka)zjl3jJAa zp&f9vYN%PVV)hfHL3W2e!{*c;xQC2JcCNw##KcDE89E;rMJu46*)bDOLC!b@^k9;C z)vSq3V!@fa3s;|oxXsOR9y4N^{2N{6WpvdW@h)c~9*>5T+;GI^F~)v zwNMl8x$TW0a=OFV1qAdJ5Q7*##P}DT>CI zmdsY-XWiI+mY*HReOQKk-=7V}`!0csEI^*pi)00zL7LNsxZ5!}S+C5|WSyBGx$7P7 z^a508mC*yH@#5ek{x;h1-T2cFGM>WoWsQ*)NWByBOU8Q-hv!Uoxbjps+}Mx{>T__; zkD*R|Z^=={0x;b36w#h%ZKu^VFHxSdM=<5v&pzVsU2G8xA(Dmgt+-ev zJa+>AnV;@v4}c(SqfOASX22xt12FGR^fBo`my-0f3Ff0VOn0uK;}~b!QF-4*&You; z;|!T!)=-bAO-dvpzTV;&QQo!P?ZkZWR6(VAsoy;(sv67}X3d}iYv&qWP8gQd_> z>=NzFX5&3Kz`tWdEq|M=p>s%6px+Fq>L}{LF668kMV266^)qK6hSxQ7;Ei)c@i&O# zr}!ewp8CV@y*_V=+Nu)HX#v!2S@{bi6A-WL9MKI7)oOePPQ_khBtLDeKpl1pvFr^P zAq4(k`Jl?w%v{GOnooctILz1h|FDr+=qzuV1L04+85^Px5z}-y1Lp{8sZ>k+vrh$kUjJ~nTg$w z_H+PL5b6=!Y;uXnWCotMKDlCsBci;-^KL@~AB<JBUFzW(0!yDol&Ed z!X0<=bBJz<#seS&=aIXP<6WLb4|)%q1;33Az!b0G41Wf)X!4_ANdMyH%*ppb zq!&ITP*;uuW;l?g(e~^sSh7#hkDbFbb_34vXlxk#15`BuS??<;N%!J^c_6l^iXmJ1 z&8E;QjUdy^NBGk$GBcV@&14>HUgPiidN2;gq9WK*VK z!&U}R;xOE50e?-y*3=WalkK9LpkTceew*XjPtu;PBZXN5;-xxpxT9tp+RxNUeoW<4 zcsX*KzcOc{%WB07nfdWJI?J&N_sDmh!m3P6-tc|x?+&GJPy$YWZMhVm!JyF(3QI_swoVKsWFf@B&;<(wW~# zJ7kY-=4j|+T>@6g*iur1eJ2xGSxjta(2wjc#ey%(Bb0+DZfER-jc3h-g{+~l27kW+ znP~&!_gZw-D-hckvX1C25^%qtBhxKH*HRDe@DkzWg7*w=mn79)#h9v zCbhAZAdt&E5orHRGc&IPW~~(}PIq`^L|zf6_m%GC=k+JXL4BifNFQpP*P9v7^eX7U z$|G~t{C^(nhWceLvegmeKjbSJC!{pIy}DvXITswxgNWUaP@}l`6x8<5%t~fnG5|4b zhj|;fEQ%IFHW^3e)4SvXPUlbB6E}A++#0{30*ztaQHf1J{9eX7v7M+oPauX}#9uF= z@;u4f0ugG88AeUu+r?Q?L^#+bf}Qge=Y2b>ya6;7_{4tVLUuTe3V$$3GfR+@sE;O@ zH!&w)Wv0XJ{>7`A7kD~z1$O*~qW*4%{-6x+#j~OcccND^5S`uF!ug5%`ZMy_2W*FZ zLjC!}IB58cTZWbY!hTXXZ;0PN0ndFL6^{qCZ5d!P6U=y2Lv`^jkHa3sQFA0}?`=T) zZvid(MphG*JRo7z0H%`Tv=(K~t3tyoQKgqj+@!XjYK}Fr{FTRH;SAg&4x%n+#5Hq0)s5zTK zOL-tp%R+3`9O7euQ7kr7_%73CUNmzfVpcc(*a(e7ey%_cAV5-QRZG8_Fy zBJR45%CRV2h(2K#s?yW=*=1y{ONiyiv01qlz4vTnvflV-H8JPSMEg)b=}sS!p}^Ss z(v8T+6G=U|A{M4KkOgy-kHB3I`xdRo#H%#!d(GjE-JxZoiH`$42y@YprA56$6 zc%P3keY#8k(Cffe{zmgt^f{jUDm{jcq+|FVj$-TXAbPSL_;;2gvyY+m>EFIIH;qG| zkqXs^i@@KeqY9{r8qCBNz&W!O@<>)pl-!(|_xN+{b{*oY`4XTUqY%Tppg;Nt@3s_g z4W#}bR47$}|C9vFCOhPS{(11 z0B3%RY0h3V2Ts_3*vXxbYOp?TS_C?wkNgIFDOY1Zq7NU#%kxgC9&4Zu&&_Wd61Ee* z8hdeF2qo2uA{c%!yn0c^Ew&OGmdn~_Yh~CwS zPDdGflkc~tLXEeN;*JCy>y7K}hZ^bp25BoSa2kv#b_Vvbo01rI{ zcdyW^Z%6h;;;_%>;~uHOl0fMv<)}n5)I;j&P1*TEWMtegRFVU{;v1^i8tiQjE;o$t zbcj3y55HBr_VR1zrJ+Ysz4=pNHTeB}FkY40MQpzZ$qTvCAcd*2??nTjCvQ@h9zAEcw zs!UBW)z>PQRaDXQe%&}VEURRtd(R+Su+$3lU&UZtWFwXIub?s&ptU$1K+ByDy;emg z!nCR4e4=s{$06WDT{&GHB9Ug) z&c;SrN2V$hxsAV{a}CyhpSg?U}}mtC)0GnF<> zB_9`;13$70!C3wGUH0zzPfsIzP|dZ=pE#Srezj}96&SmNP?eQ|E?+=Iz7?s5L-%F9 zxsiqmS0Wr!eVk_1Kd6O=%)u5oHv?|>gnIQTs0CU6Ss3^qw9u@0sfrWexb*B+U)RS`J@3QzLs@W75#o~@$l?exlr!*v{oz(R`%x;<-@ZSY zt7`MPp5i_6^#$KsrK@vVm6a@#mxq3+njXuRyV&)L(I?hne?G1|yy~FJZWg(3K7NZ- zkim+o#B$NJU+~wHR!;v*Bly*CR&FtqlT$t)~atA>0hR??h*)-ZrxLF{8d0J_ujbC$1%X4w0|+z?H;y`YxyD=xw~Ktf2eV zNbjhlpP=3*i@R*ZN$3KZkb!)8To??fft{EEm+lKVP8K{TXc)ZdLV8f;rt~tq=HcCCFP4Ze_th zk{RXQ`1;Wc@s*-S<6oD*(yF8%#P6mFAC$w+;-68xJG-?i??Sa9u725#(Zo~RiiKnC zd~hVX6mFk2yUzw)WQ=L*t*xq_6XEwPaEs+LM)KfdwSx|kFJSm49Q@zljD1j|a4H=Q zC9kWOO43o@j=K`6=qRVEE~+lc9=94#pM=5m#b(-IYz@SCH5|4aZ!Z?vf|vF8=~aS6 z#(qI}VQaA6_$TPFbOPyi~;nV!Quzb*%uYZM?tHj1& zghIiEumyyfqIY^QXz1Fwk*fZ0RYiA$Zt!Vbqz22i=gD8-*+XIXVBD-1ZrVmX*NH4r zf6w$f*Zp`lv3}hH^L7&xy^QbthWG3b9tCTB_Sj%z(8f0ucMU}nDHtV-wkYEk1iRdOUh38d0~shK)4$>Eo&1yWpC-Dohb< z3iG*Mr;0OZY32t6ufXvt!S{ae{xAB`^Y~P$ggPRl>|4rM-;1nJS*(tH%JQAnT^VbF*z~wP~nlb4_MG#0GC^{z;3QO8pmX&poxhwuT6)`SJrIRwX`hGGOncQ)-$AlHdU*SyFB)4Wj3Yzz z2l(`Tf)!bh1uZ>=h-$)1C9sMuk)HPyS0bIoz4L{?y3X$@ z^ZN#mZkpg{ePq&wEc?ByInIi^d#r26K^7}7OE;nncILr@Bl{y$p!ov7O}{Ks3L~!* zx7Z4U8IgL{lvarQ9EN`Yzu(rA%q7y3^Yg#W!9gr%DONWqcq-CVycCtco`xJ3`PD`~ zHcb9(ihmZBuT#lgw{VMNY_}Qjn9F}h%GJHG&{)mYlqUKYkbiER z+P zYTaNq=fmp}j`s3)1$is2y83+hg>?{>R6dD=0`lksHOGFqGZ&-!lBL_@VND@fef+X6 zKK8D;sKX0ti`bg7a}9mDnxg$(IM)cSw}E{9`1^GCck+&_@Gu=NS~;xC(xdqJzVM=G zdY+0=){c(tS$#6^{sx|1#37!HjKCqMTWz!^_<%a!Mb;TiKbnN4%@e^(;r42rdmUY2 zJv?8Blde`zEW=sn^Y%%q$^p6=pG4*bm3`Jrt{MIh_uB!zzT)FmXf)4?=~GrzeJzsv zvOy!crHl;oYIt2-9;F2DWwSka#{t~zI2)cZ;)}AUc86WGf##8GeP6PM{=ARpU?6OC0B%#;LMnUFzkK z=pgQLC-_t4nG}j=rx%nox~h>q*!WKnY_Dv*8itL6WG!*B5;`N#VeU6Y%dy~au!~2p zhZ@T<@cDAXWHuiVe2y1=AY;76+cQ~TbU&OP9+I~fi@`6$MDAU%UgD={KI6`$FY#Qs zPuBi9njAm>pKI1qx=j=QnDAWoaEsTiqjRr~mUF*4pKjp&Eq%^svVVWoRcxou>HaOT z?qnn7==<=7SP$^hR5EqW;6-QhrrO}cpr4v(p(^AjHoC)K)4J-SK;)m`O=BvfuU>>j zUxHarsKzdvpS`*?%e`l6&<)@2=xAq*Z9Vge$6LX)5BYU%S)sHU&BpFY{C^R)?pE#1 zbzTEy(++mc`cS1+FZ`d{D3#-79$M7j)zzL&{oR&k-T?--fzwT>LNzGcZ#jy%Uob4K zs(ROBo$!&d(0hYV|1G=~KC)^nZSb}z{@4h6sXT_l@3B^&jHe7v2%0EIg`@e9gLu-=kI8u^RqZho9GH*AHA7+1%00{U-V| z?}`4Z;Vu}xO^vdR`tU8@eLPxG9%!h8(9Nt&k^jGun=gywuDW z?h=%Y)TL{ekmGZ}tMpLuS+kWwyyzbpdAHy(W$rrsI;QT}z^liGdtALToZad`os33) zO+MZQrRK@UqvWu!pw+E0s8B07 z=^J(j8Tt3UuoF$RB<>vvK9EuJh`MNkMT=Vjlr>zf*Rvv;N|dHIidUf8>ms@Y#j7+O zu~@hRH(wUbpiX&0pCneRoRhmwnVmCO=q)+@8JVgWO|*@ep2gzF|mHF}q z;;)U0w;g-8WAC=SpuKGR887H>g~9|Lyj-^3kFms72E}6{&)}dhM67Ct)z8RgQ99El z&+ixMOM}d=kA5oB*?OIZc-h

H@fJM!uiK=l)G+KdghdI!sHeIol>gH)jsxY1!a?kBwEPVv(ah(7^luMri$ zMo0UE1N5iFftCC?!N+*_S32=i_}M(yugrJ-;q2fRiwCZnN{53NlfgdX=M&-74?!U# zZHjjcp&BisDQuv7tygc)Q%m=cq=n?SgRGIG^xne)@9;(3rya_hkp>? z`^ENd+Wsc~yQ&*B!4DLLGnnZu zHFg~IPAhK}a8+>)ddFw}&4f%pIRF1}jkK`K?~SUwFR4IJ^ZcKKSM_6`kIdH<8Hs=N zbTx82R&8#iO>o-=aJ`;2Hnrei1@l)>1()7q55rw*>ruf9tJnrx-PAHX$J(pHQsD^K z1NM-$yNdJvPw27SG&QD!Uwf#-YfAa9JU%0%<7s`;!0|Wk zc>+7y5+2db*_@C;W2~u=e3TZ03L)~%Xra(LeC)ZDqq6(;XvNJ{V67o^oA54W`vIhm z=K+c2xfEt0gVE;q8I{!JEo9_DD(A0tqz_X0{|?(y3q~8^61cK~MK|G~>*SVY3DwYC zp1Dmv{Vn)bOrBLUCBZxNX4K8qaPjI?(Fzc)FtscrOpCJp=^%o&9>6}Pn7j6num+?q z$(xH9e^DO&Cfipq4;6f8DYkyaEJP^JhamTaus)mQ63G$!l3j?df!PzI`*o`h!tWCl zu*>R^dvGc#HTQXSR7SD?A}ePx(#$X*6BK+=Uow~2C?5V9wSqj_)s7D{S^fu}ao^4h zFRLi4B&>!_77UYJ<~YAK_~=evcz|N|3k<(#9mapqEpcQhubyiS<@TUBbgmG&hLhh5 zs_WfXQgxP)&2r+Z&qg-z;_2q$GKvg=RkklPqqrbuyPZJ?jmGZ-!-&xtGwzJ}2Yt--R}R?s{0q3*@&RH1-h90~8( z9p|@Tc=(-buGR&e!^O0z8CH#r5xxEG-Tn#8uIBoc9D1hmHd|Dpp1kVb^L#vxlJF37 zj%V*=5G_jr!(4%>EaTTpqrHr8pzJ&(Tvw12tbzVOHwtw%# z?Bvuy3m7RKwqk8FPd^s+DUi*&`B=)fQC|rhLRRG zp4Zu0K&xs&smu+j?mFY2t%=zj?I1(9!?n7y@RzdG7#KB;H&5fQV?}Q7FdMG=G~Bxt zeZgxUs4>oqgJ0Air`-N+&C3615`}Qtra0tgLq%tRN8(=>X?0kvC1U$(fuO$S#kOtmg^ z6aKX~;YcZuJ_;AfS)*m`-m>?n!F1R@4Sp}-liyia=ZBlwC0*ognBC4=g`rsKcF4uPL0X>?RXksVtr zr3X~qQJ11w(>u!G8@VBPN}20Egug;Tx=2H~Nqa~J1qy`+A;693BHG&}bysG)vsSkX zpfg+<3RlLtih67?$o;->rk6D+eIe`!ww@nOqz|uQnd8v!k+aQW_pXxcTO%?msB7h4 z^~hlOrDp@n{!@wXmyu@i=H_@_=8vd>ytdD*WEOpF|HV7tp{W!Za zPWGN9(bt0Sqpt@4II^qgnz?Rvt{oT7ik)=0a77XKi5xmWM{696o{k~SqkS(GXj zJklU6Jnk-okzbcM* z6jg7$$)~G@U*I3zU~^absAqJ0*e`k_{4#pg?QM_UbG^}jVeRO3-JAWcGn)Sp3rOtfd@l-}lk`D%^aJ(04|UEXejt5u)~ zzAh$S5)*0Y{{N$_M(9Vk!@7}kA+HLIM6QJAF@PoJ5i*AVDZrvGVKK2=^-L` zkgPonV;PONj7zA*O43y-;^$RVqLs{3X<6Qz>*+efEXv17Q1C9_=62_Uf{5ptzBh z^4jXg*w$+&dfk4Q9vD>-^-K%UgR{Z5s>g`+2n9QIp;xBN;+ zDw=Rne7li~vL}sr0y{4>Bdf8G4YJTiW88=ZY&M?l6!q_A>tjCYl5yR~vy(?!gc%~$ z!t9ZJVa`Z0pL#x;HnKIEBr+j-Bj^&v_~A_rzvuK$bXHI`I>GMlqwQ2SBIpzy7W9b@ zgiF2b^wiET=GC+BX$iQUF_>oe(PjAfUfleqQD+mq%`liHc*1|G%M!-W4^P=@mGxgL z*=HkDUANxHmE(=VN|B;r?MT|NNhChnA#x)+FmgRQFLF1!Cz2w(<}6dh)d^pX>mHVi zn-bQDTNPH1+ZvXQ+Z^VOTNXYQHxY*Sgzrtm(SAFnO{7d%F;X_n5vds_wF>r{{I|~v zggH1+XG&RVo)*YyF)ZosD1(?$KM{O7@i`1Zl&_!hx`@y+Zc(%kD?2lb+#`n*1@Jv6v$ zkCVLNBx{-`1mjfAJMr=Ba%3uKRZ^|hf@(5atZ!5QT~UFiie!VyufXV>LH9_GU<6E_ z9C;y_7D=w&cx0Sc<+NYIUXlIbXEH&D$Y#5zY<9an>=^mh@q>BzDQxVh7};wsw#sEo zT){gQKj;ZLKgJ#EU}*1Pp6}q1wfXSJG~B)rY6iP)(_j9TvT{QtKZ04II`jdR_%E^i zo0{x=QzJwyUKwb7Vn{Vd%hsFL4YcW#DlzG(}m3i`q>bv$h!e>~>r}B7fM`QS1 zL#&kzehiDk*Md;(b*!YYxGzCPDJRw|2fxz_t~#zH+%JoD6@~*j)T!xI)5%n)fxPzs zGq~;e&!^q-jrYRZ!F^-A=eTW!&)=+k-s+bV6!-mV-fgbrSflP(3fXYrgf%j2FzIb@ zeXm?~j5=@@!@h>Q{%cO|(^2C^d7N2GD(j~dtr@H(S0_66)l|5H_P_m8Pb0+dpH(Mk zrW#}yi8&xycJ=eiD*UWaHyc~W6vN^w&+01w7BHueieiFVVv)?fR;9ci+OPE3TzP3E zlm}u^bjq84s!BOd6^oKTuUPblpTXtHuiRu;(dtf769_LGVd( zZf90`A97X3t}Ee>b!6UFdOTl3wK>@6R-E%^`sT0tx~{lZk9N1_b1>~?yeeZ>f>u&j zRZ_$J)YbiMWlp|w9n{w}!J};X7~6c&8JDKv)u9+PQBOA2uWU@it*dsb0*lMhyi3!* zN@JL1^)afrs-rG-=mV?&Tk`g{6oq!y^|rQR;X@U7UAlkldW91Db@?g(*p~i;a5HQhVtn-}2<$lmkrJ^*0Nnmv#T*g2mBSg3ZzD_IT?W+>1_iJ<`UYvRL{Q z&zxxg^mX*F{oz8rq!Acu7af+5ctb;#brb&BE=Yu@LVnq2N5brMQAJMR(`)4J{c4ln zFqiXsBNyc$oh!V0a(E>8$S0TbE!kv&wD3Dkc-C&efBO~U2ll&56e)oJ<#C(Q{%=XJ z(?6qogFVrOc2NBiK7RbR9*#<&BHOQAKAVWPNX!BzQduVV&&*%80ARxW%#@+X`=EmQq&9xqr$ zBkpL5by>Zz7)U{h``wDfS=dp1RnGrZv)iHr>{Qh;$Q^w@xE23qurD58iccRbi%%77 zjDIfpG2T_6@!5kXVR+VPX}|tiJ}9R4C>$*sgC z>u_dtgD5$`gD%2{$50@poSIqn_%imGNhO#9v%D9^S*`jkyv-6>9u|nq4l6{ahs`4M z!!IK1!-bKb!yh7l%U}NslEmc-(#5?Mycky_$Q-AW6IUmQMydwqBX0%YMheoCa_DPk zvCbxgD9E4|&w{yR$6|BSOW>%Z0bME|6bV#dM`@Oe;87pA^getp0-w`j)n>f5z+`QP)Hoxm+--^tlk}kHk zW{C=94h$bp{~iF_K2wRcRMj+L&j#{iBkEc+h}T9f|Cu_zCtvR;bM}=q!oGXBYCIo*(hB^vuC~a{hNalL zI{Vg_cN(*NJ-Mi&HKec7OP`_-ou@Wza*PRYTKjjMj(sht1gpzaf~&yj`eEwGCtTvc zvU&~Htu1TSP(@Wyk5)80C*}fe9ODnp`qi;geyTMG? z=gkh&M^+l=epk=kaLroUU@X=$4>MUD84=8i%(F|#3f=hSFnTUVGe+j_4X4^*B#l(p z@AB;!uWM{3+EA!^z>OhdWSm-T5*9j^BJ~yQ>ZszY$9qfJJ1d(#Sf1sniPcYm`G~;m zq<)d*Szi1CAIL-ldx7Oru-pUs$RD)O?O4rp6?bn)&^$p^X^f?J#?FRQh!>lIJrs%a zD$;mpkw)d0pXOT$S80Y9_Mr(*54z$k9m6v?OeE4nP9JJF|5<)>b3^zpd)J7Z4d0Zz zvPb@vmc&%|0EQLlE|S*Z>1-4kJIY%HtDJ-OQX+qetWsCsD}0 zkLo17>{M{?0wV?B?OVKpJLwetHqCF?JRLtJgZ($szt>P{0HhaPj zZk>WB%~?dB?g>o(1>M(TBDjS}o~DyI@9DLPnbI#@wSmN}uHlPz)z(^^kuv!X&DXFeTp zpz9jjinY4Vpp3c92R|~J-((odeX)26S|2h0--yHmAhO8IO9`>w}USL%N)*%kWA6FfUpWSo(Y6xIDO zk2W;#TDtDVC}!DZ<@8>aPVX)&zkZ#cze8bf2F<&h-=SuEjK@ca`99|OBehsL*quck z@>p&E4NF@5WFLQ-7{dh>}3Y>~>HqXC527vc5gE>?T`x3!Z`fe?^aiD9>e+)#vUp{B*=Oc{k~(O$8gDmWJn;X0@|eGWqY_@`aSvs< zG%`$a{`irsJzCwcSx4k|^KpkKCyFeytH3DAW@lNsAuCtn?Ir9jT!>O$P=-U$mwDu-nv75r8}Ns4Gb%r!H-Phr2mApA0TK-YfYOcTrA>2ybm&@US}zR<5< zif2O{|8B@(7sTa{=4pjoKS)$G;njt${e0ed;$?t;qr+u_Ek5ZlSe}JGQXRkk%szi3 zBVEHOVs>K0F7A<*cz8W{UJ0(hX*6$9p}ZiH?)< z@OCU_JT~JO-Z0CGYN#SuM_zTUU-N@auba_yqWuXm{4lx{R_&leTR|D!9h{1;g5eWr z^q*BaEMlygNI#;#1(JK9K;Po~N;%ZnhhxQj+h46)%tA{J^dnQzAPr>Tv z#772->5F0{y}I)$I^kdV&~BZzQL>5a*7tvF&=9udFwz@i#zTRVu`-0MVf=DH&J zJ$P7?^()HOZ;Im*##YMMD#GacP_dIS4#)o%!isIO;tz23=b)S0n*Pq^@h3cgmA#Kg z8>%m=1V5^!PRQGr{o>MnI$%=jbt(#5y08}x-X};Ner|Wh*8HY!a3xyGkxlM@n(7&f zi+i%vJzc&iCX>uuzu+u$;D4{_*%e}e{EnA!if4H0eaLmzCm(QZqakjv`e>80+HKeO zqnOp7qVb{L&67coND9}YKBd?3C~VCaDo4H(7jy9Le!8$9sXJ;x#Y#N7vbn9NFV@EA z^;20+Faz^(&Sf-~C9r8aZym^TZFM+n(GQBl>D+qH*)j1vn0INn4Jg39X~1)E?(fuL zXXWDCd^<|}42<&;3;#x`kp*k9M613oMy&$vfvE4WQC$wN+sVI%QQ_r_mSUX`_O&Y z9Pos4!JFdw4R(7&?3SS*)m342mZ>M}-Ry)>SJYw2M1OYmZV`S`O8r(+eNu#qS%8|E zH<&`f9Bcd|{rbX4XF5TJG*4Wv=YI#nnh`aP{$n4$*(;LT>idlJ`%G%$40^5U^ruo= z`<6zGW`at&+?G&V)|9DQK%kzq{h=^>j6VEm_3;4x=Z-kmdn{Q@uFr^dB&G(^Iw`uP z9EIU*5wl*BPEc08Ti$$@R?`;18`9&E@i_G9=w_>1U7bb)m>K=hEylWDW!$3)=>(KnBtdN8+2aVE0zD{yU}{;Ktc? zT`H&mKj4`itP|;qb$o_hw56dm)swI5sOEkZD{f7UPnP&n82x%U>tw*!gIdu3=I|v$aKZwnP2dPA$*w6_F=*W1F^>VTYbYK% z31?c!lIz%gJ8a&ef>_VCbIi>b=A{8&$fqw5@tTvyuu)|*lOi<=(;SLP4WoaK;e8V^ zo=Ku`3}$L?YpPvKOyIpB4{v=+OkG!F9FP8Gz3XpQ5geg(9)n5e=md8$vZogO=Z21mu(Tg80X2&0Ji8Hw3pKN#u zM?C58AB<<4T(ia~R>7c6{Cz)vKhNJoStt{&>kV~frO3i=2m!oOpW}H z2uNzBP5Q_T>}0-Kn56<4Ekb(fQMaUg)s?MdYm2M$i}$T@XfK|I@s*{r^?sgx&OTr_ zsZ{^qx)(A1gT8qgs|}`=d~C0$6Iajlw6la&dUnBbHVO> z>bd-^oS&D(bd`K+$AYlGv`DWZwp)o7I+A+iwD|wq?B0_h9#ThcL;K4*$46A!Tlm>L z2sny$`t!qH)U19o?XYmUZ2E)zb_pAOKwFEgJBx#gcl>?E<2#|}OcB(JpEc1pddE@9 z{Sy4JEUQu2}A-s+!2pSMu@g z>Ys05*g9S5*|2zk<6~BN$Gz9#(aX4G78cA7p$mGhqE|J-H{0u3cNYn<^+R2F|3@OC ziipXlPJV`+Z;R7EjQ1ziz+PJOKJ)vNxI6)`PRqm>RFfBY^zTOcvsD$_^>&uPo(UMo z0G`~PSARwo=nAoEOt89A0&>s8SeEJMta7aMdTS;9NdE~DWUAkSaJcXP9X~PYnWIrD-SXoMQYyrjFCN~rbr97b5O)eVHfqhu9HsI zAY+}R(wKpDPq7+wsB0HK!$|A%?^0G|WRvZlQ-?gs)1UPIlxp-WYP8pNL(5y4Q5$D@ z-wf4pTh3#-eZy1!UBah#vFu!tJxmqc7yIhVM~CWc&2YOOCjTt9V-@mUGZQt+c*kw| z>7r`;h-zb}d02z3eJ!&sg%j)bJ@=Wx*c$IgW-AQ~lc6Gx z$2{$U7`l%=+!r@@3^jVPIQDTJ~8>zb>udgypf#cX$}Pp&(MRC3E3Mpnn! zer)AjTS{yj=iZbh>%#AMSfDHml!Nxw%t2E))LXSQ3mg5G)h_ao&o{E+A(~2dpMr2jWgcS zYQ7Pwq7e{tH2;}IA)L(;U(2#GtUX*!~8UJHry~i&e^N3_DnN=1l6)eORzV*I~tQqUUX2PWN zW7O8puu*nZQ6MJIddFTdwpom97DwMXqmww!9cS^J*T?!!Z?ST0l}1I}rnm^mW(-gH zoEv!caj*SWByCkY>@dp*AkaDU{fJikymQPW21>}5WnsyidWHqD))(PRG6;VgmYoyV z$9ec+h<;o=pX1m6`lQ6pDosL0IP5cicI?A%V*9gfbmdWO{p~8Az7eMF#Y<0{#m6E$ zBR?%|Os*L+@>@LWw&P#6{)-o0#F&0#mm_fDC!F|@j><2x-32zY_o7*9Wz0j&)O^)< ztlz#}6kAKE8o8lXJt=zkvdT7DbBo-&8^RuAwb*)JT}~+R9Bz|ETu`(e@B4(9G8>zN z__d`eXt2v29R#8y7>3-)o7mqj3Q3hM83Z0#4TWSDgRjyRWpaNR#y=1+5Q z%dE!n#dK?SlM#lxH5`T|e-`L%i`+LLBw- zxxM*}ZVNyE8zVi7b^MG`Y==S1SZB64oM!yf*mfQtS&`7W35+x?gv>1t3$sZPJ%YS= zWCo~_7@PY`COZ!KzQtp=n6)h;`&+Sn%)77hp}^dxhRrdLd^O>y;9LuOEE8)!$*T9w z*uQ-7K0LH*7ZmMPW|v6Z~J^lpl%FJr4Lim1zSVJOc-vxmABr;X-Yk-Ln=ryKDE z)xiYsolYlN46kFg&UaAaXUB0h&2jAP5HE`9zuQF7YME&X&z_HO%!A#F9jmM}*k%m- zdHMjiptA(d5C{@vIrBl|qb+1)XhMzUW? z|HpQ2iH92(s0W7<#y^w=7x1lJj+4CpD%`#aXaDrgN1Z|J`i|JDgl4)HRA$kXi9e== zM;VOf6(cFenl(jTYrfnUpBRhn%@m3A`1L$-Gs7%QwAyu)C>Tcl9Er(HwsP`oU7hb- z&vk+AlgRBk)fw+Nn-(g_UMw?=1;$%jHIbi82-+Ke1Grt?IBSU2hHgLe_XLk`_54|{ z3-n~t8S^W+S592@MWas%+v4T8Yb^Y`Gdf{i(@FDwNqjsMk)(a~I&}U%EzbWFVNZ$37ulnTGpvM(yo;AKWV6QbrJ-}LhlSM^b2ahi+C1-l=iFR| z_|#d(_KX`ZcIOz`*Lc|1nAtq)!#MBmiN7`Rd}$dZGqecI%~dn~D=+=g?S9zwgL^-T zTG#Q&q=D#+MQLo^*d^Y40JC0>b&SSIx?3gJ8XNl<5C6o`ivlwqw_J&7?U&0=i{9&A z`w!2*#;$*O_5cLfNcmg@{id_;Gw!<=FBTvtpHw2yTgEx5B}jt5)7uxx8bAd@-y%4|bZB7Ly6* z&I0XndUp{yt^$v!!}lBEbd7n#yU?+Wv&k;oCz8?67{_+C#BAdmsjePm1@8!T#7vBI zgU62=>rJzf1cyn5Eu_Js)HNdcW7=6gvsuOK-cHcIr}6F?IQZAFe3uzGEeFQ)@fUFH z0?w|qb1LVIN*i%(7o)6>l+HKK@t7VFFM6IZhP37$qvZE2YKaD(Rvo%#;zEDz;k1KB;u3fq2(8vj5K^V4K zwXs;eF&*EYATGz_8k3y;Oe0!g1WWnL3VDA8e~D%Bg+@Dvm1lZ<7Ef9LtJnIpy*~9E zOpiCx7etf}1z�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

L`?d!py(!1IO9cp=P=sRpsDH77u=F)Te6 zvQCCL^Wn`#Nb@uNxrR$Tk)Q{}dQywob{g*+rb_GX+*?4Jx@=xaPJRoTyyM}x<@{opXK50D0y@$ z);LQX&cLheQHJ&W&Ju^PCN-{^1QE9HN)f-zu)Qn(?XMHj5m?qgdJbZNh!=RH(ey7 zBaKf=$5t;>8WUpmQS`e$HudsJnAkCO4Xzt8g7j9@x8A{cOXA!G=p{Muk(ca>k(GXu4F}JynrAO@{V^N%pz03w*f{#hM7})Ee2p+a z19dsRgxmvECL?9H*^X_p-)Sr@G30!eXVk_gKE+3dIg=@J)lBg}%_oc#9fQPkFI=n( zYs7Yy>|(y`bndkmy!N4}N^YHG8vVcY`W`3q4?k5b)_9+Z(FHhMZgD(}!3ow@Xo?R@`mz%A%n88LdxDgVp#dMcK zQ>#r?^4+0BN0`-;7k$Y48k>g?_{qoSr@hGO#(I5O@e8rhhdpDv{5GKzmQ`hDbw5;% z|DM2w-h|;*MRsGe_^BBj?9-<6?WN9rov2^W$5%jy*=*-GSm5}3xaiy1!5fevzX~^Y z6mh=-KWXUk&W_kM5%ZzaCUau1KKcJ7*0NF*4K&tf#{Rak7K9vmRAKpKI=?TYGdNi7 zxQwU#fS;UG)!xKa{*yiaHnZn=+0UxE?YwFkRc^K}@l=)FR5L#dhAkFNYedp!Sz;SY zZIqS2#^@$s*xg~q`)aI0GWN4-&0GBTglO8Oc3KSu7Kx15TG**Fz&H$ks7%q@Z|=2~ z4eHYj%lqa6Sp18s-qgM+CDcsi$b|Xkg_>_U>hiKyyv=VJn8#1dVeGn)9F9Z|Y>2HV zsJ9`k=$=YBnkbiz=WSzU&k<&C0FUa*Zq3Dbb)FXM=VXJ$X%aLeSIenKGRX|DdA=%~ zYa<2*JA--VW0MT>y)!$=dI!BGhI_lA><<3DgZJ%)GO_N?zx?Yto*&cs?Sz|<+2^?* zyAt_(sJPdwzTriy*lz|e8_b?vWQmrlyAK?Vo!y5C*>;Heo6QS1Iu5`Ex-U-sHs+DX z@ier#rOJryoxPL2S7GFfc*1-0ln~q9aFw1gEvA=$4!_&W3{4U`&aqlLt;mk;!juV8zUDSUboE;7Qk z-hJ?mw!Ex9C8IK2FT)$(;%$}O*7x_P6x&gHoGW1b|Ml|D824e;+oIzTyE3&Kua5nG zU@rAZ?3Xnzi|-%B^%iznX1sIx>QtXN*1HDz_U*Hv5 z>%6<-W8H9*-n8K_ak9a3_YjO>08aBc&-;j9RG~e+3WZYe^_!T%F)I*u$eAlddu;cT znQFOdaBK=hn8;g3!LV3gwyRnHSftc}-{l>}_-tYET#PTj&GX*JRXg#`+n)nn{wMq-OS_~29@rPMvak^-l4##Jj zquB{)bjWjmyZ?mVRyyy034Udxb!MRurQzfMW9>w8liaVDc3f2N=kL2{np@=Jb>h_3 z-8fY*e&5e0_u^fypy2;+ss8fGYcKMT^kO5u-1HL0QvlB{YYyJ?{x%7AtpHiD&mDEmMM2psH4gZg z<*yh|Okp}=whm&rd-?M&OlXs6T1I)9p+h{>daG{OZR`qyccI2R{GlAXmv>Z#wsoCx zGm+U5`t;@(gLu|RkBw#PajZCAE}y`Yr&0sw47`&E6Xo%KzRJ;3qe zL$5A1B5UEzLrW9lhW^w2Hs zLjU}PH5=fe7S5c>*<(>J~TZD(5({@a0Fl-W_=1{OojTJ*y@M~ zx#;-Y-+!CQOJeeb@qgzm{JK(tGC9#VkCr_~yS2vxL}@A#yZY7<4v{N!PQ(g&)0Y~{ z4@Di%$|!#u`vC~HO16&ewL6N(50SwKnV~^4x?SEAV!Ia~?Zn1Sd09>NF0IbWC%e34 zZZffJ7H6E(QIvhF8hbO})ZP6N=3^$SEtN&rnf)zT@s5O<4=Fb{`1J)0;ScQlceXwa zk1oLB%h>E??>>ta95=h)n#EWTa-47O&c|bW-_$bWl^pN5U&qY5v(LfkPkjiTl}UqnVr| zPYv?aq~Da=<&2=%P@rxaEHbGAv0Jsz6;>$sxFc9wo{ilu+U^#72rFVGDBlBe&O#dtFt zsLUd+VvTpsw?)hqsPUUI{$$qn;GxHi<5wPb1_E94SZr0_6V`X6(L2jdjeE^%l@fH3 zGB|=AFLcl%Zg0!vu~qZ2D@RX4yc4qeaj1BlSNH|@|3}nafbCUX>BE2H?(VKc2r=Rz zBv>E>f=ek-op#zzr$Re3?bJK{%Cv=+D(+AS#X}MxBqYR$ySuyl|979KbA5TQoyX2O zdoR1!+P1c*ex7W;gmYiQozJn!yU=|DtI6*5emLA2r<FOxhEXOSE`l`6z8@#ARD z>VUt~lvjNJGL3s)4E{7apU~RJY1&hG^#T-n1CCFF4U39?bR(9PT}6j*bRF+7Tb%ih znqFY#8G-s8?*7Wte$G;|!sSPN@_$2#AMo=3p*#SWzg6Jb4_MT9Sv;^zQT>_&>sNwJ!q^hy73*NW^`$;n?+-0>#7nTWQ(^NcS+ zf)`=$^ZJO-(9-?IX#*i`Nv}I5CZOW%cN@bntOH`6w)VOqBPyXzoc*eS&6XtoM(s<~Qv1 zXL#^mVwLZB@;A}@EhBf|C#|2M;`bz)6^ie|hS|z0sJzYR{mN0FW5cKEMAn^@6+Oyr z#=lmwqWL1h89e4x+BQk8Z=>N&9^no8{SURj%HzF+FVB(pQ)-S^_#2IU6t|zix97BW zA}xH6CC+4hOUQadF=kQ?YMzBx2h_Ng&90@3nJHPKU%R-_zMftO(vIYDb_%VhO(DOD ze9n_bX&%y|pOfK#vWo{q1>bk=kIC{k?EER1{|*hCPtKcNdsJ)6884_|mb#9ZyRO;# zI!01z(YIPKCbTvtn|AKX`1~m4X0(2h6utv#yZ{=xZc~)0WYszq6 zZeB6KBHUibKL)!_83nB(R%oK_UC=oIa$N59I)3?P+`gTr-0t`6m7L)HINxPo#~9a* z7WIvB?KR?>@#w!5m+!%s&*SHpM1Ef~LUq3t6nEnF^-#@PLdZ4-rVSMn$sA#1vV5_^ zr4yZ#MFK{hQTrJ+pTzZ}?02syU^AUw!K&u5^=Z7sdr;(UzULiCG=-kbMDJq0cO!h> zC+;{^XwxCqb5uD-n~&&0?)A6X-x8=jT}1S{Vs){x8yRB7!@qFdFQNUfasMG$_ZM7$ z5{I+DOJq7ui)gno;%Yl-AWwYE7~bz-Syd52kpKXHV-D_ zk;>)XkD+B(@N8GohRjypz^mP+UwCg3tsf{*!6}41;Vu?sf4cHDUgAEQbBpNx8Y2NC z@b6Nb>ub!fk8!U)W+?lZpL3205Bxd3%KKr-XW{tWtowE~->N5lD^0kaR@_BH?uC}0 zXEk4jqOyR)@4xXwFOl(E_dqAHHS?{JD&W7$d5&|DWdEOoNiu@XIvidvN?$==%%2ei5R+DT?6D% zlKhLi|Bbx9E4Ii;@{b_IPmL=6Tzvg=t@{b2{DHpYcf2~i0++vrPhV8aJ!)`Pi=OR3 zao8myh0L^eXJH*7X)F5BfE`pJ%~Qtocj3?~S}_~9Ceyl!?C*Jc`4o*xPv=P*^)$IFP$#rdPgM*m`z?$1VZ{-!VSH1Cp}x$pCFi?wVgX`RP|dZgN( zlym0k0A(Oa_aph9EUc5+>y}1E8$-5+G^L6DW19lIr>J=%&OZ;2g3ph`?!Te?Pqge| z9^}`o?I&9HJzDw=SpOwfbw547UtckEAIbdm16Gt({7<6v4JEtS7aJ>COa5DpjP0cT zd-OK;`Q?y!>;$VQqfIr*wT0In>@~YHucK9&S-aos7k$n?+Kh$Yp85`;D{l&iPro*k-Zg#VmOPdG7K5i2}=H zv(moAiPdnn3Yk^(gmS!FN+nOKNq$XPT31oR5H>o_^`Aw{*CEgMl>hYp0p)8&oVrTn zw^>Yb0Ig*-HS0XPlHo8kjYsi4Jj0jJ_!XM`W%9k(=EV6G1tXQwM!Gqj0! zIA*-F8k=j)axQjtVu-77H1X#+=s8v_b)}f|a=o^ZtY(C$IJ?$IlmA#8zY%Y4$D@1j z<326C4~~6S$v&kCeAP9yX%zo3m?rk+_j-y!x|pwPCmLy9MEm36S9W;a$vfPIlXt@7 z+tGC!d%az4cWJ@Buc=$jTdw=O&$r;`HLPwFuQUvm!>rCpuE@*% z*<~P3xD^NPgy(nB^tFzM4$2teEBbZ<8Sa~ z_ma{L$|&#q`>u!5$@_MC53SjD3)t5LPwWY!*{_TA-{r$IO7wwMb06{SR{FAqAL~zl zmsk5Ymhp90eG|vNgE#-_$^T6XKPmbkKlT29efLl??)PoI{BP6s@A0ZXCiCAxpl9gM zdwl+4wC|z==Xlzh=4G48Q`frKBX5kQc>hKGxLHIxtg!WdBGv4CyOX~EJ1hDX9e$i_ zCo1pI<#&zuyzcc`Tz#1Af5;Xx=YBihT%&cD@oPi%f`*XXFp?WVawG9#I8D72D);o9 zRxq}B&c-{D z`6ZBZgfdoibdz$s_qX$ex4^ud&3h$XAI94Hqo+6dUPQMq;?sMg_hNMSC5e9eUwyQ) z8+>Sm=9+kAj)k7*RQk>4u(la9*lq-22by=9vz6tTr&|CevR+^puW$&$Chy-t@ykvv zS%-!NWH_A;yvHivM$fx=k%%~b$qibalVU2Pv8nY$oyoK}t?p+&s~>H?gqHV$X5GoT zi~qaAz>9FDkG{lU^2loQ>pblyPrucZZ-FN1^<3$@A!_Z(!rHJn*^jhv#y@+B?-vn% zdDmBjSe3P^lGpO?Jxij8P`Z^~FB756f_9Tczpt8ykBpNWAbo`A3X5n9J$t(|y}hd- z!wqW4deK|S@n-gYJ=!zwka38?_|cDs_JQ6P!?8;sSbtbHn70~^vdg@V;-5>ow_5nU zDQ;wUdMmo!nMdr4yBXDx4;o^w6t691!;5Il0$Mc>r)O)$4A;HScfG^=yhamWq?ON* z-jj6pDL(5tpI@c9lc4uZmb#4R+JfeTqRXjwRD^IDG?IPav}!(RaNTUCqiyvakWh4SI;A z+e4G4^gH;S{6iI4Ss5$KN|J*#c&nb>a(^@F^BeT{Nx%LUeLr@`_v!F=q2Kpe!B1G# z@5uHkHM~KtnQu$xqvg^<}$$o~i2Vwdn{Mr+!{yX%V zq+d4+M^@m)4jeiqyFxXn*rMR(@3iLk?DfxTd5nCs9_l%G{Q~*EWbE_ryy~mUKSU32 zqjL%jn-0tD%f_D{(}ADUfnP$QUy$lgl>hMl>t2)p=mydrLFzq4E3Jxo>z?#rv=u4Y zzx5Rs^MEUVD9ZbRi0HeX`V~5GCk?z>3kK0j=fgtSpB40VLT69jt_Dz z7T3yO&Z|tJBhy_w8@A1-`wM8m;zAeZ!?@Y3WH$VsuWz=9&M(Ksl~8g89a!vXiH@eS zwAbjsGkQUP~Fe(e%* zZgHie7 zej9Rq+2=dac#YRVzV8AHnxeJ38J{wkp3#gGeC;vx9#doXdt?On5OmpxQ#t2$4NfiK zm!{Lqx4phZj>&JE^`Xgy@HGYCt>$JdslG_j`6uMPAGYuDx09TA=$E9w zxtE?FRW7jfnq-^I486P#NAtC;>sH*ohrI9e9_0@2lgZy{TWH%rI(yNV>}koo zSWjt2pWE=w?di1BNWAYR5^Y1e&bp@cjYzu*PPA}mI~Ly!=PprWvTNpSf~!UQ*OBKq zv|UGL*U+lbWSV*B{!r*5ukFdS2|KO{eagf8lk|9>=)<`;r1>GK&LF=}{6F8PC1jd& zO1F7EM9$}ZR}*S9SCeyZ)&8#9-{6y9QPT^`(^~R`&yUmhr@X%4^FPQpBe)sOTZ0#S z__5Q_Cu@M~i$_}+OXvW-yUG*O(`d>iqLZwlA5OE!7*7~S4!6;U`;3%-h4y46@&ja* zncx3J|MzhFTj>9qTD}0AKEqCLrMEYt_d0fb4I95ow0I?)A5FJ&wt|!RwEj7xBd_Ae zTjG|fH2qA?|-r4U+`srp!3g)Z{C4(bMR%IzXKwi z3pAr9eQwI5Ix~z`y&y_@8b_ZZ>u0p$1qhoF=t-oNH3;+J*K$5<9iP6LZ{NnpZ|Cc` z8++SktSPw~ce=(-Pnh{{toUC@{(ib~7f*f@ofs>!yNoUjGy-!G9<(jyEpFifZi4>;+W5GR%tbJ{P{jTdp`1tU-|(VAD>`8q^-2M$c(hccS|G5ycF zi#fD!F6qo=oryx`L#73gHThK5h+nsgc@JpiS*5DzydkMu!N?YR_`e%lNY1*tf$e3&<%ygz0C zi}W^@p?Nh8-{}2LI&jeUC&ln(WKb2l)`dDvebYueJFB$^tLtlY;8GSh3>I7lSx4ja z7``p}6Gx+e6s#MrmcgVk05OkYV_}qTQ9ky5Av!lG!T0>DhyU$(&EBXVq>brIjfUsxJ70l&W6(PqEo0DrRpFoZ;p_>1 zxJ<;Ibtg6KMXRMR?aVEozb-EMBF(%LP1m_D>$iHSqa}XUc3pW`pUhl`>F8cwa3{;z zMq4&1>x!C3sQFUb)5lm+cXV_#qR|$;tszS*`r3-#wu0#`i|F!U68fW2z`xSJ1Wj^D4$SJy>x3#Fs?7vXhp zBX50_^xUHL-TCfLIN#pW+TwOQEy+*TpzJz42%tr{ zdH|2{kWcXn&+)1+DX(}xQLpDUp7wRo@Y}rSds;e;$C-_9OYmtOUhZId2kFa6*moWZ zIayEi*pW<b7hx*N@ocDz8rR4jk9CfLsmeJA)TCz(T|6Szmqk> zJ+Gkob>(gL@*W9K^$fY$Y41f|yDIJIRAZ%z@3OOfhv;IZao%~XaV9G_Wf@>LCv5gI1?9l3-<{AWis+ z&S>o;in^398B7BPdQu;H&=tMTZq%j|qWNRwmF%@gNaTpmN7!rnECl0ttZ2EWV#+L8{o)hIK548N2Y%9!U5K`-}uK~z9fERi}9g#C{KjE(9`F#icdW4 z6Lii|!>44wREZ93RNFSS?Ns|tetCx$Zqu60?n&<<`*}CIH?jHt!or*!hpxK*T9RWY zbX|l4J=x$zuFS5-wrWT|gZiwcwo*&2^@{J7;&S5kkQRK^?Eve7-j_UF`n=O*_mgkC5XbSg{X}c4_f;Jluw#+xh7|`ku)veMXBa zlAY6NaOVh)9>T?BU*73;vpd(|(o*!#S7zechqyaMYbN2%yLj|2i+c}ZOjV}QqM2Ga z&%K#jT1{G;`G#G*??F;L&Zf_(?}E?CBUv8J<%_>$**U80a>Y7VEas~};ZdB3M*G`( za@MevPEkm2&lxVBHl(mer!kOPX5gI^gVV|RyFrw_(sSbX(|cS`a(hsilaT8g)o?-@ zoo;5-r=Ho?%A&v1BH?}Hwz24YWiHFPES|W4=43s`2CsYEeFE)eq*I00sUfaTsq)Vj zoYdO=xV)WSZ=}uZc*qU<0NccU`^A5!S#4!cZQ!Y`>2g=E$&{Q~nyduK99L&P$~nF-$`TvNZ0Tr%$*^OtoCiNsoKLpL~iF~0YMk^NYklMLZXH7IhHe(!PjN_5Xe ze{$=+%&R<0kDr0TFBBs?Ux%LG^!wM<^aZWBomO5=y9RpSSqmHEVRgQ%Jbk%f^!oyY zEa$t*B9NaQH$PADgRj(^CRAZJPS z0zHW*tKpl5c-5Nxx+*!5X8?&^>S}rIN#hjVIL@jLdg@LZ7z|rRqVqjzCfQH-yN*un_N)_HUk<0UKfIPF)OL6E0(+AgaAgs{$-e_*6U|(puhnTuL-#dzUkfd3 zLSD7uVg+8~1X^}$!A3Q%QTu8%tjEzEc$QTv<r{xRxBFr^j*sl&761m5Q#buGBHdl$q5=5Tc=9>bjx^PGzU@1^Ah< zu_OKtpd@1}2b4oT=iMnNo2)No+FOPrW!ii}^mdj_o)pU+L-8Tw6(wJD-2ErL&#Llc ziWA9v<6LTgJ4Jgt-H}x>hjHz+IIsdMs15m>;6NMJ-hpg7kX2ipYK}&EGEtD3_WEe8 zt?kjg3b+$0PD9X>@9{d>4MnZ>-%rlzy;Iq+=shmj$&u> z!s2SQrUo0Yi;_eILD1Idj=#&wwbo?Y4DAiQtA&oLMl7Ol<@{Qv&T1Y47kn>EomHE1vP%%C7d7`@oq_fEPPVIzE$vsuw zwK`haoR-Qv-mEMhklIiOX?N#-0Kh^(B^sZ`hYs#;PRH>=RF z>YiGsz~dQe|A5DMpKX80wo9WIBk^Da9trFR=~Zj0w_S9ZB)x7v35ZI^3yx;A@9(^E;=t^_Cd zDM!3NO=rrfB|fnp=_Xf8#`D|p79EvN-gkxoT}Z!+7Ii7SKw`La zAyrYzDQ9WRNjjW9$w~NsmgZFWXOFHatk1fep7@=$H-qtMh`R^7VgUW@g9jI>trOH} zN3YUHZbRGKh?ClhTslIJXhSF8cVM^Cz2uCn2XU%-E$8!TbL~gPtq1vl{l=cm|yZS!#Not6A+LrQ|W%d0IzL%RYeKS}~9fCTH_l*WBdwPEWtr zwfC#-KG$Y<#cgnDyzj3dg<<&94?lXsXy<~%wQ^)#8hL1{_J+{2j_;g0N?Xs-((^oZ znRZsj-8y8N)x{mr)~kr{a{}EY9^)M}zYUMx(4yC9*vqu)SxgR~N3A<(+;%pw6a6J^>czKRM1EZ$Xh%|Or={&6V0-*ZkFOgE^eXfr z^U~=RO`|_K?`$DWT!|kW3!Dk1C-kEaz=uSMi4)VaPkz5+KAmM1LFwdLO5|5YZ?mHH zfG2FBCo6C_J;50??L&O~02h-1ExUI=h3d;iVHqRY0v)&G_I6T9zhVQ;jx{g$oW(R% zK3zOaJby@Eb2o%5wc!MdJkL7IskJ;#mBX7dx^mXDPAMmf9#Pfe*K@8+&%C-)Uwbnq z(uO^?huXP-Q+BA-Ca3J)%ubnBC@PKP^&{L-hDC zD?g+)2lS@)h!=LS6xm|o_6V&?{E+$Cj&!#L9nGjxeZPl_j5tM`x+}5SA;rDhSld>X zwv`qoe$O@gv@|hi_NrtYq?%IK|4s0-rFU(4zYa<#pL0%H7d-8vRb4%yn^tru^&YII z7Y)iNavv6RiPl^~L;BFmi&T^n_$XOW${~8e%0G^O{SFv+-v( z{dS(EYtI=8IZbk>NibfuA|52FX~LePADvO0-eMPe)1Ia@r*n1ipdt@>8cm0Aa1XBT zB8fdbMq4{Z6Cq2h=g|^pWi@}A`YqbBY)|bQG$~3Wt zCk3l&L(ZHPQ4JPVVw+`r);T?%oPBm$IqUrey`b1@708hJ%et!JA&#X^f{70hBL?U|2QsXh9lAV0s6m(Y<7@Qc5-bZ!;SD~6YXb$_RQ&y&iNTKTBjvJ?7Ge*25s z9)||csVyg_O!YcP?TK=?YE9NmpMbR4K~zS<6-0+QCAZWgi#I#RI?_kXcu3~84)YjC z(01H7{7Iv9r+LnlQ{E@rbg~WaC zighc_Z)GRt=s|V%lT2_e)!2dbI+I>!I+n;Jx%?V?PR?1YqQsk&W)U++dI8U?;zT`& z&=l$>pKB}j(VS*CgvHVB66)5&f%MiY7418reHmM=0!y-+wHX<=DeTBO+Mbihyq+gk zhRZ?wL+aW^x8t$4qBrQ8agP)J&-`r_6xa0RQV%)fiU(-MZqy~8?nV}|Mp@x~PWa1M zTkvEBinDWQHOyK=hO0??CEZ?z;>9#+0j-*kgY(?GKw0YkwOYR2^AEW{mXY4Nq}Uptd*J0@e7=H4T#wHaTzez*yG|=ImN^(M z^`_s6dJ_#Nds{2NwJVVIAZWYNnUo&PZZrdirYB5PTWonh~fP zimF7&7vXF0x`~$8ac{{wKOviW-Y+4atc=WuLA#T z($tDPLPiPCu);I?YZq8sCG-ZJ8*4#gyN>wX#gjA7)sEIjvukTbW*RaAc#vLY{A#Cu z%Wj@)zjD<3vp7(m)YE6Ifr^^2w0hCX(=_U&-;WeFkbKLBaqtN1I1Uxkmh3C7jE?w@ zjNN2RvsR&<8BeN$ve<9d9-Q`^lirDJ1gPc z8FysA-+pb~r({g>loG1yC@r)$BS<}1W9F&4<3xLuG$pf|P_CTUQ&8*(?L4Bz8QDy$ zOEXPJT$?i;_tELdJ)UL*TUbj@YjJqJc5hK8Mw~b=dntDmvELT=ZFJ8%){$&EYdxbhZ<93+Cq;>s*+}dpEeWrBDmhas?>qRu zRT2Beho)s&-*Vn>#Phv5{)!evJSB= z57Yrhbc8AGAYCi{n#M3E=R#C7zf@8GP7WaDr{4dFE&PPce(C<-q2h1k_Pl%k;dK&u zBr8U8LVV=f>2zWSUe3bri~}sk(P+$Jf90W112lC&XK(K>MdMJqHiTAOO4lyIx1KDo z8+7YhpxX*Kk@b$NVe}fS6V_U@wZ>YnRn`hDw<<6Dt`?fPpKn%vK7M81YN_X}W%=7s znT%SeX-avvl$@uvjHT2zB2trvRpl?!levJZWI;VkQ!Z#_CAyTpMN3b}N}@~Y(P%9# zjV2#g%TY1K{$f;Oke2lp6?H~?8@xya)Jng(y@)7zTKeGeAg#?h(X5RfDRvn|mwS87 zT8#$uIkVj->D7MYD7)ZK&X(C#%n2@|qZ?T3t^#v{8R<(ORd#!~fwnGn*KEH}gFjQ0 z$?S3p&QEjAEK*A!a*0+gC*_rDT!9x$NqQk^&7&E!J)<;gv!|$WDT~ONBbkfe14jPFCm2< z@Sy_@ZN|#8nm8+Woc75AIw%*D$S{)0nYY)G)ODVB74#TRN_|*RJ1wh^f=cxHoJjkW z)pDnm{X8*AGO=#JwH5Sqsj}Srb$TB={C~K> zw4iBe2ClO9Wrf;FHDtv>)*~#X&2#a6me*M{eXie@;OE)`oieYN*|qHVPR}f7fM)!> zyzdXId#ieqy=5tUSqj0|kXC$0=C`wMr9Qs2LVX9k$tse}abyKRJWxh(vg&&~ec0%U znPE%Rkx|^NaLcNT8aSWccN?7R=!sp_pA&1lu(M7@$(Y$mvMbLHYLiKGbKMx0|FlcuDWamVaoj}7IVn`1b6T5ajU*Mv1q$hf^blYg_fJ9}w&vbn`;HPGtH zYRoy#hs~4h6AAAX1s|ZL$NxD`R80?{KK#h;%I4yoW^AW{@uuutk;m7458~4=Q2R4T z_6y}f?;pX#r{MHN@_Y{;X1IP14V*^`b6N5%68VU3ypLN`-2XnD{+R3{_w3{j2QyNa zan|8@b0ZD8m$rOGYrnxFzX8j$HvWt3=04h%TrhXDpU<+?&(pwv#qsabs2{oKSIY0a z|2?Gmz59L#5q{z4kYHNP`5_@Jl%QVV}%lk# zz9vrmCJg(&?|ux2el7ZX#Oo7q=tVg6x;m2yCYd-ghPxP#)%G5Ow0Wz3?kyxXK?|=pGMN2xr4`V>@cx&+d(bt1z}v_1_C>3w->}!yFpPk0D(V8b_E!zxh0!q6#zpM2RkjS@K>sLhkpK)#GqDJ^VtM0OPrY&7;?X`{j z+xsmme7cir57vJXtIjE>t&1LM`e4;)cvZSn(XXX`U-o0|qLtD5Lo_(^R>#qCly>fi z16ggf8b24%_8H1#Lcx|}d$Y^X<(KLrBL6Zj1 zsD}8Z0+|NUvgRTy!;Zm#Q>cs&s0K;0X0uf>-`$&Kbn{Kd7n}ICmS>e#J7%50S(Ic9 zHLGf}Rx0Z_60aZj`8axVqRUwk`gwdghev1h!%sk;Bg%g7GjqKI3U5XI7TCNQ-fY6f zji}oIJJ$PkEo)fq8mCK&1wT=eb#0z+m%3*I4kjz^aa_p1#PRVN6(Mw;!@p7=zB(_M`LH(7*D0@f)8D%xkaZZJnBC%oQ8Ga6-iJQ)gd-OfB`0&H50+hL z6|7dT$4j=fTD`s1>K&|AYGY4kW3gp*vEq4Jozd<@-8ro+lx@}Cv^le6na{1MrH!>X zGY9b)oyjJ5b#_N5_R^6}bb`q_|2BKKlGA&DcyNf=aJcs)?0ra%yG#A8B-GQ##&vcYFO8-+i0?{J^@&pLy#4Xu+?oRDKZ3{jZ%Ezw!E8pC9u5AGGLCYW$mL zJm$HNvF^XI!$(AK55l+q){1XH!OwW^wO$9qqns(<691!}$s1J>Z_3OnoP})1v|tYp zu^yJpQ{EA|KLL+}#s6mJ<}Rpqorv{v=r_V|qpVT72I}2xb?be0BYa&8zo-1j`=4rk zGC}{)HQ#sbw>;w;5cV5d@+~71|Ao)L#`7m=!8>@n5Wli^qKr*9){2bY4$z9rwEZd( z=s40!R<>j(a!R{a{S~kNY(?uMcCkE!)?eEr@^dw3Z}<1{>D$UT@!{X_FquOh;J<#T zMZd5H_qX`+7k!hbd7Qt)`!^wLGHy(#hjSt3QnNSw+T>gf_}sG)^3gE6|UsV#_$@W>ClyQ>stFuZc^LbYWt#9R$muKf15NOaQ}Bm z>KkZJ7O?C&xC&AZM0HjaHuJeQtgfs-S)M;g|0gR1D)1aR6+0uq{ol{ z6xYz)#q??(t(}Fl*`YO)%#)dPKH3)2{3V4RT#S-_tYLsw4DkCU^rZ)i+SA3RUTe57 zrwe4i)@~@0^)cyRW+zKBtY&xOA~IWqKl!}W)mgc`jHWM#R6*|L1yYqO=vd*28M#^o zz1QI9Iy7#Ck(u*PytiLDs+>{EL6NF(wT{wAY2kBQc-gT)+*+_x#%kKq!_~duPgarj zRR-e45Z{gTgq-VhHI7{?0?po_YuuaD1V?!C0QbiGwN-0l*i#EKROS`SdoAa45IA%1 z)mcVu&#H&t^?1qfKRB3Ci;Pojf;x+6$Ta0m@3Y7888km7o=?X30>pAai!6dYT8#v zI~$1mn(!7mw=w4)X4D{k(!|QyKhZ~v2SUN2cryy!SMu>=U3WcOy8*ouJozRO$4%&; zfDc(;lv7c%xA1C`O8%qEwIF%dhATsT9?V7txo03d8Ngd+{Oe-%TvWu@Ss9o4+RXOk zMAPzW%t+=1NLWT6vWKQB&8w?4qm>=#PY?Q$l`DhPI8^Urh?)k`*8b4!V!Y@f+Um~E zlIx`>e9q43!K`@{8_VwC@o;$p8_VwgYiaN(*4$q`ojtn=epmIH6-LKI7KeDe!y>|C z_@AA&W$Lbg>Pk3R0VNs1%IeZBusRv_K2-awXndSkcv$O_LnJvlf2rnQtMPZ@!knu8 zxajN|@$?IJ+r21Weo=h*ypr4s&xq8Xh5*mPo)<*9uRznc;7|5XKRmLMSF6dH7|N5wZsq=MBCXNvmYLBQQJx=I3Eg5gMx3v;+O0gd)#j4KNR^keq~>7 zQ1L9a|{%e6CIg z74bB)Wts2I`9PWP-cV@hV0T@G#v6+m`8y)j`|;!^I&}^DuGHe3YB`={?xb5^^8L45 z^8-Bl89e_VDELcjZGQ@re+Uh~2h+Yyg5M^=?`g%4;n#0jQ%*XWq$NR}-E1^tbT2*5%Hosi(4m%=WX?Ob*pv)gYegq__onUH zMLpWn$HCZ}`Tjd_^iD0fjmD1W%SMyd0Di0s-O7%n8ZNu%(5hI1j$WQ_Lpwtd?2~N!HT-U4A>^8I_EDG!WIb5&L$r5}}7^R_1D0ntpQ) zQEeH!&kmYBta`I2tQ8HdAit$BC_4<7sBwuFETsd>+0AmVE9k@uQd=qVT1o42O8ZJy zUYd8#PKV~6(+J+wWuY}-Rn}XS!{>}0okV?RNfIL;q8*26N&LuhbZ7t2DN;Czv&YbI zz*Bd!iO-qngJ`0|k!Cg;O4l3CBAZlhbf-J5+Rd;aM$HmNTo zOG{x{P79vzbM^;j_Fx6+Y)~@em3gI%i=T%%+1-(`l``JoTrtw~iuOM*hJViM3%+~B zlahmLs#<2^-KX$$3EYVel_WLTcUiA~iB{%Bo~(WB$R@G|FuuDpzu!ZPf~3PlE@QOd zI(}dRZM_v5-^PpG$|p_`BahRIxsrEHZmyh2adFXm?=I@@O^*HjI+(miLZC5p{A#*> zEnB;u?vKaU8}Rf7PalsjIXmk*)LjF?k|8UZRW74zBeX8L%mzcf#M1+5d4K5H4|-n0 z@_UKex{GW(vhJ2NzX9y329wU?#1T7*li_89ndlX)V6k4#0%K$g^mG;(|5#S^U{=uj zEyajT`jFX!k=-%L9yLvEZ)?Fzc<=YEM@6O2ipr8pVKPMc7#hqM zKQ1xuv0Ucg70_`xbX)=*7sBvQMaAPUn)%V4TSFCatT-i~k)8e%ouxzx(bRu=*=v$x`LoNevXlFhVq85%xOveW1dSoN~nM8IwLDh@wU2FrC*wrlRHJuS$~<#Z0miy0Y|b{ZIi1uz~;#<+S`P`#4jK zmVe@NW<9sifn%hRj7`bxp1c>Ah%E-8dq@$(Ehtd17rAv6t#+hU9lUlT!yY)@ADx%c z`Rt3i9VXwed>O47aY}~d`yu6>%8ht&l^RDtfI-l*AJogFrCRPOV%jI%QnT+rtWLyy3Q;iYhaUg_6k}(PMJ`Yb1daFPMoBpCkp;{7u$D$ z>)9L8QXJF@Ka>5U9o%Vew4|N6ik3 zN-fQakW1LrTsHTC*VlbcmV!r6^lMuGGdlVcRQwFzAH?@Rq9kJ@ufg!i{N4;4n=Lw- zhwpQ7YYq-&c4ju71`#q}kWs4Sw#~YR>=Mg5g#n~?x!T6Ez3XZJ^=iCUPdaBUkAX#F zc#Eqb;y74-JCE`O*79vu^Ak1y2HyVx2K`YB9%2o@AgAwY{pVTC4XkB2O0%A=Jq~2| zToX9Z1WGrU|l@ORIm^i8e!SUj=3!0Hy{(wJ3d zXKi)~W^Y1f-?K_P5%&~2_bQG)4L$!tdJn^`-{8}O=z0(WX4L$D#m~Qih{^HxuTb|hQskkA9>9V`K%Dzt7P6f>%p>uq8cs8s-m3TUIl_>F0K+TRq>>n zI98vmntMtjtnTPaIcLVGC- zTh2(&s)l6pPTk4fkbPLYl&odQYNHK$TN~BBSa!{X1HaF|?2ALo!3p5k=%|lbJ@OK5}oenI-$`bbQU6NVIV)P0Vh_ z%w*;qr%qmz!*rlB$oqk?q%SS)38A`Zdsfu6gI-zn-@WjL^GRqvo&S_xEY$Z}%mSCP zg(Y5-X>=}|n1PbX`0@rm{k>>$^2+qq@?Jjo^nDL9=sBi@x0{#SCED1-^JWJ`useIA*1CH!J<3>ERwBL5JG{)=UVzsxD#_CH zwreutlGr-=%Y%Sx@M%ra%TA`dFRM9urtZSa8M*Yr?YL6=y21yRWv`j!64VS1JPdWYFi*7+S&L-ru;pw(GPkUi1q zn_fBJlh!QVzz@_kICO|PhZqUR*P>|_$p z`iaGb4AZ~KTuD|CWCdE**=OWtI}KecvPjmGMWT#k0?Fv#Qdh2YXDN@<5TBE)Wh~vg zj@FMQ%`vQDnE0_T?Cvh=Zx6p)!>FvhZ{zo5tmuKFep-?BYSElh4wQLXJeP*eC9mu> z%V^@J!b-AwFneFNqdlvS_mjd=ygH5E3rd;3N}18Vvuy7;erE0LPOaI*m#u@}t3~{4 zWX@Ty&%Xs`?}FV2jgcIK+o#3dIVI#A%Q%Z~89~c#*34QR$Mft8I;BNfw^zn%RD>dl zt*ZGydxNT|siL-)vAMH)FDHv!H&4OS$3+y6)5#~%@eF)VzUde6@CCFz>-7nr|LVR+ z@c1Dy#X}dB^8ODl5ogyZh7QJtHP5qd{5kp4GjP*aeYH)-zTh%j#Ow z2z~A8(It3v8M?05(%ZH89=Lliy#0)*;a0EXd>+mB3$2o;9V zh*3qvR|#&{Wg$(hV{1{A+t~OxJ;zbJ-zBWg$*Q|~$EyL;(SdQMqoa0NaLBi&0$KVCZL4JEths5i#9?C@tp7p?Oalfa}gGlLec6K%780$&V>dV&-f*tjRh_k8^UzaU-)QXzwYn=L)a66ju^cuVLxQSe!NaYl`nOGI-W?C&f0$ zA$?Y|9sg&a^t@=W9R5_s(Q5EHE7PjM?ci>Bp6oYA(Uh}ccC)(dSIzkNepYwX9cSo3 z);LvR``J@o12R;zqM@QulM6KOBuz`E%j_E4g~Pi&XFtnLbb6lDs<cAcW(S$A<9rKMff7qlU33$q6M zoZ8d=3tDi&-6`4Ke8v+`swv~ghy3jqEhY!)9>}!E+{RuM>~nu+e-Ef7vy<@vyOi`D zr~a=8u(eC1!W|$6SV0Ct@|039Z2E>aQ|Xb=qxgCMk-mSn7kSp<0(l$elMev zi6uwk%NSC*ie_Jd>QSyM z5p*KH?0r~DE=$>V)^x6bJZsUr8Sk<`@CZ(vfk@@iSrwg;er;G(*Hh}kj(VQjK&{y? z(^}~QQ~E-M5zygUza{Vd-O9Z_f7bVRxMn;-(?GQFhI>2tSu z`ZyjUIS`Uzdmt3-C*JN~^!1+7;%D(TJ+Mhyo$~^hDVsfKA4-n;{REGcndbDU4zcsB zq}qdLd+;p#PmU?cL{XJ)WG8o9I#xorRcgzr2{V*Q-v2|bIU(XXPkff0=JiF`^{VgQ zz`x{ene6@4f}*U}&3r%$lr{2<@V%CJEISI4%cPV^EPMa5O0OI(t3tbK(5~!8Pw%gx zUz%u9OY|huOLrKY)yv5~JEp+vgM8Wda4l2Y zGSA9hndo0u^B*U*3$!5TA!n{QE2t_#f{dk|H1=`Oiq_rs7;V$r+vf8Q@!&pob`08P zr(|VZt;M#oLOyGJ>$*4RqXl)&LgB1m*bk9+iy?P;m;Du)lga9{#E#|JRuu?Z9WvH{ zrq$S4W%!nH$>g9rN4w78;u*S<{5|Kjxy*=WIep;rkTh{qV&%+yCl)y6+7nuHl8q$O zLsko9-BeJjG1`)kqO>n85$X<~Ga|m0jjUiV8GT&HeimrsLb$XTmSv^DD*BN<3+r8< zo_5Y!%Zh-~4#!qvn+7a7t47PnIC)PphLH1>j^aXc&16kf6?D~tDD}|Upm@!?)~0x0 z7oFAUXr;nq1c`RxI-&)U}HSc=sgR*rgq z#CHdIm)w)RTp3+o?faEz&;F=YYF%GoYWAIF#Y9If?5O6pq|;n!P)H{y*Byi3$8hLG z;V~ks>~XIPf1Be>M;e{=^`#sIl}SDM3o_S}e1&^ibXG0xDy+Jc(JTI@iod!AUz266 zAwQX%FAeB-#+pid*R#iEKlx^qVh^28j)mlFsHnxsp_~;Q*|*)7o(}Mu+-4V(N8+K@ zc$;*SES!c5g-;?VhvYg*r=K5t?vK(bA#f?||va!E%=t-U^GyY2_%0*k2UejbCd6r<;m=8$-;d z5VN%wcXCZnR@2wL1MzhLthyM#I*SyuH>Z-?*MMOwB( ztI~s9>+axoM$%`a`vc`ot^B+GTTT~!R%>$7PqGk9MsKoMg&$j>%0ALPs^*i0t_D4W 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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/greeting.wav b/NotchBuddy/Resources/sounds/greeting.wav new file mode 100644 index 0000000000000000000000000000000000000000..27c807d28450592d545e5522ae1f399246b7a95d GIT binary patch literal 801342 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∈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

#-f1eZbxE$3^YmeCAJF_H8Um6qA-F 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 O|NZ?R1^z##z<&UiNwzis literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/gulp.wav b/NotchBuddy/Resources/sounds/gulp.wav new file mode 100644 index 0000000000000000000000000000000000000000..c1680acf8c1c7e36619e7272734bda3d63a18726 GIT binary patch literal 143868 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

cC0nZYGge#BhB(=GIOJUq(8C$t8b#O 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

*83)^xV2 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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/proud.wav b/NotchBuddy/Resources/sounds/proud.wav new file mode 100644 index 0000000000000000000000000000000000000000..d6ad46872fd8fa6e64c7eceab63efc65707a9da6 GIT binary patch literal 166016 zcmeFZWtUV})Gd5m%DSq(aZLzr2@u>pcpyk{w?Kdp+yfCTxVr~}1cC(!?(R<0T2(D2 z$K}q>cR@~{ToP5U}~@3rQdb8b4fZqZ`$LW=0#`0M6FMo%c=B?y8fC}P%W zypcl@4B;gP^`FqcD?aCc|NQS0_}?e+zfa)*&nG~lI?)LB{}T)<6@@7H`2YK-;NJ!B zFZeiz5Dqt|KC3a|1Nlc!Ni$m@yj=-V22t?wBt$ZzAg2mMMWP;} z1EN1-EHQ?d^gl5MZ+}blAzC4-APT;&Anz!CuN*swzd8Rs^MafUes&z5O+3OwxQT*2 z@DXvzzG!boOhbH&Xk)jw8zGw7P3(?{A&A-bEPEZ|5aJZ#G~%#*zcU9WVbS4iblmHN;wCE-{aojF>`9 zB^DzN6Gw;-h!iq~?0}exScO=Jn2+dzNJiWtZsWVo!qcgXRpf{aJKcV5zqHe^h8muC zEcQxi?2$6qA1>to+&hzA;yrznjC&Vdg+{fH}*YVV*FL zW2;zZ8>_Xo2yql~&N^=$v<_Kwt$9`}tBvKcyjH52WN?ef z?m?S~ZOk^N5?hJ=39*^o#ExP|vbjuzvoq*M?NR-7+@Dk_jzwLP2W2ad0)=T5D@x4AqXEZ|lOF69Um3PXzBul5H<5HaL zmH(Chk+&;bmF4PEb(l6(<8@x|t$(Wz(TD3*_0RRk+DmP+HbbkYHPf1F?X~^dQSAqP zroPko!zgKeW?jQ>pFmD0O^T-*F>RQ#Y*ltUdx*Wj-eFg=+t>zdTlPJZ!)#{`F`Jpa z%tt1`Okk(54Y_7q1->#LE5r+TgnL4Lv7y*PY$d)C-U<%EDZJ+1aFf}|EQMmQjoL&_ zA-^ZL5UYuzs1@1vE9Csn_Ml>w#y)f5#2>V`*t!+8!e)lK$Jl7p(ktm#)YIxzgaX#ZhB9>vi^nsTFcPpXuoNV zwRT#4t);e9TcfqqztZ~~LycSJeRG8Uot;1yA$MV2RhnfY48{J;u4B)!_t{x6W6YWw~DeI$=VNB6y z=)C68jw;8LZSod5SMp2yr0voJ>4wxp?jRRak`-Dd)OYF!b)~jmbLfeBExm*q&@6CvYJym3z+L;CBjZk#l)*h&Vv3j94iABFy0z z@Sk&Ea#!)J`p~`U!c+oPg!GYPiN07_0@{``+Sl4M?Y)+$m({&` zDgCMD*A{4N|I4|YRzvHl^~ZYx+8h0aUfwKi{$>4P^&z?w2C0!_=yCM#%zEY@R5urImm+&TUaeyK29s34XU$BCoFuf&ex zIpMN!i+{xb#;xMYuoc)7c$OomAyiMYBe{lHM0|=GV%nLg(%H6?&}|w|;2NrR6T7)R z(wbnkGQT!+(WGZ+i?t$ZIW-_hmge%=TikJOKfj8fC5#b15etda#mVA# z;`gGAmYXbmB4lzh_Y=E%SZG4c3y(o%U+G4cUZzL_MU6 zF`qE8Y#DYpcK3VMW*@R)b}f6H?Z%E~%dxevYSr2A*s-j{=CVh*J=|~nTz-(yM~D~W zkn=oofw)pED}E{V7A6S|_#S))Yq3+9UznnJp1EXzv} zsw_~as8z9^o3vfp4efNWk5&R}F_CA*)^U`Z~(^4ve{6Lto>gl&(^Td>V>#>cY}_5-_vTg*-3`|<6C zF9lXqgo1TmCvFluiM_?m!a?D8eh1%@`hq%%|LsdPj1yk=xIas~Q)6<`sT$i!Nw z0;8k?ZCyb%9cN#)9#{{}kLE_>uu)I%s6RlBnxp)pj79A}D(#oPl{!e{@bay63-x=J zJOK6kbM*@~Q;n#DQLDCV=kfQl_M^5A)vKrG(>~P_w36CDZ4l}lrF#rpA82+m^Q?E) zN}RLG)MwNhdINoexx`Fom$K@jvC`vXq;xA@3(R%73=8@OrQ5WWTf zrBFuz7R5n_k4)o#vSGwur1kV^mBR{wTPOJo^=7}rzKGy^*R^G z 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�X#jKFhW3&$|~K!Zm=O1o0K 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 a9aG$+e7iir_q`ipL7i-y4EG!fK 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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/search.wav b/NotchBuddy/Resources/sounds/search.wav new file mode 100644 index 0000000000000000000000000000000000000000..eac1079154ec45e5d8d064b37afc5c948a749af5 GIT binary patch literal 87824 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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/send.wav b/NotchBuddy/Resources/sounds/send.wav new file mode 100644 index 0000000000000000000000000000000000000000..f493f0c5f1e56332084ef2d6e5cb66ceedd570da GIT binary patch literal 91968 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%0AX0w3NI!D=9$x`aKfsK;lBvuUn2 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 SC!xpT(y_R8ECwEjbN>&jv&?Y- literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/sleep.wav b/NotchBuddy/Resources/sounds/sleep.wav new file mode 100644 index 0000000000000000000000000000000000000000..41453cca6f5d7d41c46208b490d3bc9cc608f1da GIT binary patch literal 87008 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 z

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≥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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/think.wav b/NotchBuddy/Resources/sounds/think.wav new file mode 100644 index 0000000000000000000000000000000000000000..49c1dde97f0b007eaaaf91b5a6a143cf430034e7 GIT binary patch literal 84612 zcmeFaRahfkw5?r+1xbK*+TGpVy=ixMcXxLe+P!Jo-QC^YUFdEg1c#KJH`#kXXP^JS zIhW^Rf9t6RLP%0$jWy<&bIq!+Ripa#r!*FY_O;s8>o;^vPMaVIq96$~F7SfrqfJgr2gkfF;mQBM$&(dL^IJ$_|Fk< z{>O+j|Igtt|IhK?fBRp5<9ZF(Yq^H&wO#L#!h5>j+w~b-pU3stT%XbP*XD3mF-%_YLGT_%kem51-J3Pb&(p&+j@P*Ez<4 zOEe>r@tyIB@s{y|@tARsag%X{ah`FSah!3Ov7ZrP?lE^UwwpW5t&Gi#jpinE1OKk) zU)SLp8{Lm?Hn;E`*K>E7;r!)Z^MHBKJjOU}o-r?(mwBgK<^%H~@BY&K$Y=Rw{x)Oz zjIJ4w!8t&%x)F3CR9Yw_)L=9bnhG6+jzV9?D8@8ly0DnBo)OMC%DBL|&3MXq&-lTJ zVk8LhLYj~&n1Uh5q9l5X9-_DCCHio9^OL8j@Tef_f-0m4NkXg;BmClT-wSVrN5TW) zif~alA{-R92%CgO!UAEOFk0v#bQKy3^@S2bF(JJWEU0|?FPzJD^D1Y(!<=i*Hv5{r z&3a}XGq0J)R7}bIVSG1k7}t!Q#tvf^qc@`-qaefA@H67{IQ^~uPQR*O*AM82^!55i zeZIa>pQumKhv_5rzWM;Yhu&N7ruWpl^R*8@58?3%`c!>^zEt0=@6b=`=k%xgE8U?d z>*F~AsRtT(nA4~*xAZ2Fkh&AR3kbC!E1B>3D|XfCV~HV9vZ-$DtotT~(l}|7bYFTTWs`Ht!{t%(A^C_LDgTkPDp{4LjPc4iWwWwLxujfB-Y74X zXyvb>Dk+NMVJco8l8549D4LR_#3;X%x5`uHvT|D4s)Q*MmElULQdh~Lq*MOMU*u!* zZh5pkKrSukmt&-_Qn<8E>L4|dd?ZagD;^O0iXB9oD2wNX!$NPNJ*!U;PQ%UaW*g4P zFisl#j2=dN!)kaMSM@XcXpkwa=h1&^pS2y@X05l@T`Q#J*Amn?^*Up%x=tOTj#8Ve zt<*AV1vQ(RTlH6iRav#DrqfFm`0A|&sp-|6Y9Y0pT3ZcOd#J!8ii!n9l3Yt2W`qPJvTHtUD=f4ZhuF`61n!Tp;NZ&WZFnoC(1Khd4aAih%A zE<_5+LRGP`xLn*KeiQ9tNvWzdRazk3k)BEZat67D+(BM0ua)n~PgoX;Qc5YSbW?gL za~XS-2<3)yO?j`pR-%;OO0wbr_e901#PjbzB~tmQyi)ElFGrQ_%1ULbGE`{;-UXEO zN|O9tzAW#TXUW6lI&yK@l>SNQq@B_*5YHu9r03!VafUchEGA|U-wM}+S;AnUC@g;i zw`Z7x%pzub^EEu44X;WW*^TcoE=-@JH_@x;ik_@p(@tu$v~gMkt*U0zytL2i8}*oa zKwYTLRr{-b)JAGUwKO9qn5R=Sf_sn~`ye%onq4iRmQX9H_0*PXFLk&&8@%_c=Xr%l z)mzJ=Ro7Z*6ST$JY3+fQrupkN^fqvRtNs$ia~qY6(Z(XGsvp!JsznP1?}pk~ zZH9JSyQIZyhE`6mjT$Y|Z-aP{k;~|5j5LlJ*U^=9W_xo0T7Qu!ZxdPxeS`?%EV}C} zHW9muo5e%oKT#FSOAVwM(hBLe^jfmWndL@se6GA&z9`?9V`WXwt`r8fR>}}`WwEkG z*$tlOl&i`eU6}2i{uc#IW|B@hGk-4a+_EbBl6V;LE&~o*hdR+aczE}M@$_SsSB`&<<+{ zv}o{%9~;NQ~9H8%Dze=r94{P8OBal7AR}c=L5=N z&^@c%0^$40MReqpavlDkQr0QElo`qrr8juj0`V+LekE3Rq9^y@_ZqpS+!?&H$uFdj z(sF6N)JSR}nWCq3LOhR#4;IslA>u9J9uagrekQN*#C&E>HK(B|Ma>V!2V;q`*r-m_ zN+5#mhvR*Sc)9ef`giSv7NKp^hH3q@Dq3mHPm{E7sKQ0qx>;SJ&QQmwgTcI$+DvT$ z%8fz22}eu5@4{n4`Q03zvmLyzsYg+h*J_|9YPGad@Vl>eNZSh9@3lf`_z>3BaecS0 z>UO=pQQ25+EFf~fHAi0V_!S9qrUc(Dnb#XbB+W-+5UK8%tjXOf%C?d16=`2|?{Pfn84D>;=au)K>hP?@02gTGtQ=p&$hK{*D_$5Hk}M9Q7Y zNoAE1u1w(>J(V%w-3CP}p~TA`$_@FAyh7f^>KOvsCFRdjoU}ALt* z94F2b3&4dp#PxYZ__9K6;U_+86%MTysuE|U!K8g?N+-j|2q13W&?o7W_40ZJJw;2> z&TD7U@o8Ep9M7(0gyT`_L-htq?m}@kEFY})gU6jfy0uz|NLov6@8)(Wv9&AOGfLg2 zE>^Fg;6K#Is-KpkR?+flLy4K;+A{5nc2CQud*fvq>*4xxJxYJ0mp5|bjD{Oejmt(3 zGr$}{gujM&3}kKg7TO9Yggtn;RH2pFkQKZRP5CL7k%~(baVnRj^O7!UQYE=E3?Cy$ z5aV9MaZ&L>hf67qm9|PhWwbI4{;p8A;ad)a?rAjUoU((j>-l*hGci_K%G``mswwT@ zcNry)HF8t_j7lApyUOF`Jj99Lk}2)x9eYX>q%2Y?>6sV_+8f16VpB0n&~SK%I{cg)>uk)F3TZt*(V= z!?mW`E@twhc2Ucur)ll=$~epE`d3uEpkd?FbOG%HhM%b#oy?}Vs;#(LhuKi5g}Yt@ zdwvOJ#d3IpIpPE2X0Vi1>L~S*HcR_i<yl{E!V0E1(oZkDDli zl|J~D3CaeT?$YYx%4)D)iIyw^@2Ma^m`B^-BrBpp8I($jgUEYJ{*CiFE%%mZ^6Cv` zhvX|ClO9MTr1?@2siyQ(Oabi!D0nx#dw_UKxGeM&hLRD52zSl<=0tM>no_|0Y`ig6 z84HbuXo_IOqoVut@u*4#JvS=;1Fy0d9Ulqe)wSZ9RrAn(so&MBuzWl5bDp{eCeI~) zP9{E%LrunWOoinO)ZXd_^yIL*2)rYhr#otZ7Nb_wGNC37wDsC#?J-f)TeoZV^kVuv zeT05rKdsvgL+@ZTGIkkjjacKSQPnI%_s79)0HfRTFJh++CtVJKvSt?gVuS_XKzRv8TuT<%&}?8jjTGZBn$jCig&2XxOZ~3CLZ78K*Q@J6 zr2KER>u`J#I^I^RiC4*>IdSAK)u+V3Q)(D`F-={n4pC>iG4H5O0_$mNXIR~rSUHAu zuz}2uGk1KzE*sT8_yvXmU_dsaOs5fT}mMTDJi!hKba55 zPs@+xZ*rRKh1V#k)WKEv0Lcl&&&5R0^~x+XWDaq1CSNBKF$be69l*P$(pAaLzk-rY zc}E;LOw61nuV*HE%R#XGwPYvjIV`m$UfZO+(mnAbx!6iFvby3Qa)pg(UlV+afu3@k_JIO-2>v{F;`d{svb_|YB)kdS^wYA(@dQDSf za2xm4OX@*&H>$A;RhbLVT~2Wlyq*fybBUO%a45Uc?@Q_~o_|HvKs`5pK9u-7RqMs; zt|ewZ*7E8;ykA4!cQNn&R4-{{GA0_mjGHha(A11>W@GaZwE@-qXEuT_>+!e0$gN9@ z`NgT?DDk#<33ho(t)*sCn6y%QN&aJ%t#Sj_{bUe2ARi^#eL__{iJXPex@{ zSLVaD6e3zu6H9kLQ5zDt4}E?tv) z;YhQSd%YEtnE!+L@E&5CkWM^6#?X}&X=Pnrr(QC~TxjMuE1U0)Xk)ptjm*6btJ&8$ zr{6?VX6O~kMl?;-Z)$h6<=RRz&Tjbel6VzQ?JuhGfV}g#x(AN0bUT*$==p4LpM!2M zhTH3yhkfcYkappHSyk0fYEC>#W34bbPkU`YEdQom(L&Jh4n*k>WgV2&W!ayn_XN7E3ItGZX#be@DF_m~#jkq~o8YNwpPLln^ zOJ(GuXi9GwxfZ8#OO8fWtf)#cbftmP0(I`M41(ulz;_~CpMZ{x0{{L*)OKz^*a6hpsZDHZGuFzsY-+ssO4OEa46VyAJ&=wJ*%QSulMIqOA4&c=FsJwVT_zs5=Ifa4=@a&^$& z5G|{gs-~##@OW3$3us2Tx(S}IKt&eg6qleVE7e)}#>K3FjVQ?>@}1kNQ~jxChu`&y z1f#W1c$7ujJMa#~4Tb8Zsj!UHpXev3tEB3kjT+=*3()WvMrAXnIo}+LFT7ypqMkBL zXh$U~T<{{BYb90{H{r#tk#ex=+raU;u>1r#eUM+0=cmaz za2=KL(~*59QxJFuyIcQH$KPpi)w?D8Wjk98bpc00+KZ?gPI| z%GKpm$xFT{J(Q+_cU9I_s^}vf6K{~&PZo2KYrbF=&Zq8Enc7+mS=)AMeyyomd7&v6 zjYs6tvyCD~72~&_r0>EJ_vZZb>t*y9GVe3!_*`uTtn8^3)5>c;TA=nvb*PWj7wTzT z`EF3(pl(4!!oYnMaWo9PxA5qG^yHHI3eAt_`RTMEGM);=%wF0WUhj@}gDlgjRnp7q z<9NR_ysygp*TRP{z!^SA!?Tf{4K#aEPdsc&IIQME17S0{&mZB7P=?qvMI23}x*%F8 z+%}Wy5H)Ax9Ii?pIJ>Y+sc{oR0 zy@&REAwx}5J@6-mahI*MK4h;e(C};8Z@hkXJW6Nki5v9@R#&8+irX7`Zp@H zVPwn=ITzg!&Ev*7baOO{QUWg?L*4F>-W8vg3vK0mwx~fdJhTs<{4bb4 zfw||@&uH}%b*p+4-M->JHu3##R=^3WgLmNeS1MM9norA#CN;pHjK&r2)NWI)Nu_dC zoQT;UU${%ZqkkugK%0%KmJ&Yh2vMqSJt4xL#V4XB>EN7eydh6Pa`5m5XK43J^&~%E z=kb?nDmhO86_i4ZhIo|0#LU&y3@&SLH9L6c((CIT^x0H#uCulj!=IcW)L2GM?KLBZ znT=1`$2`eig-MOJF)?V3Fo$}|L!kgn8YZ^KiEkoqeiSRgvkB<2KiDU7FrNw9=TG&aYtpofBVDIS` z^_0oxBC4Nt&A*00et+KRYK*6XRo-~3r?9>+P~Dh`jyKWcw2b-{Es~7$f;IrG>VSN1 zkn_Z~*ww7sN7YArj0?F1-><25aE_&_n25p~Iu4sQO>A~FPuxRdDrkD8*WByUu&*oRemP-$s>#u1_|fb#}UOO zp#hon65`Yo@uFyzR54VlAT2~$u1kB!e?CYBWnZ$C3Si!Yor5{@9sd0(U&H0SB@>E5 zU!3q=MnSyYhwJ+sJm&hH&U1e8+`IhE9?+f%yE~Be6o%hv(kJOAcrTGgOD(At21|zc zLcEF#pCL9w!@Wh7iuf5cWh8r3MTID;Z@bv<=}gTq9V~x>A6N{h8p3gJBiOi4O=G#f z1tj{x@G`nXllAK;zj(8K_;9CQz^H(Rk2Ch8;dW|0 zWzA~lBy%RY&uuaYi_lDHLDXD>>v}6>XYKYR#RbRMNlmtcUV>*u4XP zG8=8`NmaHADitIrNI#j=lf>v5vpDLL8)iX3@DWA8I;Klx+ zYmaRTqaq{GNT&XLl1Md%{HMH;h+8fPStM^+qU7LYECuc?9i?!fMms|LOfmw5@if1^{u<=3VjU_f zv&8H0%MdlOqEt>A&Yr+7^wpIEiLxOTK?PdMq3n$fM;Vsl68GTqE>XLEOe}p5_TSl$ z`wgFevWxZw2l>+N-H*!0<#qB#cmC8#?nc$OGVBhLzv4WPNoVkcbESsNuT9D%y%IkW zy>}4Ddx=@Z-0b;$6V?h_h1TT8HYzHQaJGxgmBh_Z)01_38xJ<0N^N8G(`p16ui3NQ zPR==$UCOGk(574U-`X#n#T6L3S(}Mx832Z@v}UlkidGKfi%|zGjKUY;C2ZaUacgsmKYU>SJTQe2NktORA1ULAN|Qur-1lc>ai!-b9ja4aiZV3SvjFNl&LWM2)ofg zsTPJ1McNpxjTL0Sj~KqDKTfI{+*rnb{!`PJPJ||~W{D8SuK6p$LbbmE+1+e$1zFw$ zvTKFBud>vY3~;Hm6;vLu`jg2Dvl2aPpb6c`KPQs$uYl`2$z+bf_w!``S7GxtzFub2#F zZvncl{X>24gZd$DJE$*2CB~75_6PZ{sB}BDqb+mL9+bQB=s=L3hypEPj>5H5tdAGu zu8EpN7F!Un--l4#$F0;fKHv}cqb!s4G1L#6=mqqAIt70HD|Oo&WQzN=qqr8AzAOdTne2Z~ zB99!$F&@2{!aU5QPPLlfhU2@>GhPsR9n=T|QE%5yW*7E)=HrP@Qk(s$8+t~g414y2 z$uq-^3w)v^BP+RCM{@`+WiJ)lUuH17R;_U3D?t3Qo8wloK6??<@dszbQ(}zxSIotZ zKucoTbZIP3Vk^G_gC*aqhZeDA`eSSlx_jNdp{BH59)%d3-i1v0k!`JSrY;KOtJ~r+zY%eYLi%qXIa> zWbqek>y)?*yxWs!W*0MyKZWmT_4l6T&xUcD2BPl4l|$oH%0|FoR?GhFlqw0OVv9hScW+XtxhZTNhX z_;?#X@(|Qtlf(bukwlcpM^Dmn>A}R{vT(bjJ`Jb83qN>Yf6x2)vR_|~*&b!gL{Cl- zGb8Df$Y!>s>azkBe@OR|m*6z(&@VBKXmn24M(@-sp(r_iZ?QTaVTAYypJ3q1i_w?U zNy<;;Yz97~=nz^h#SrN%@*^pa{0q#}q(7F?(92dq2 zQ&I2+bOQwnw~6_SiJPsc@MlIRzZ>4>0dl+X=t^BJRn7FtH&S zcp>T@etJ`QURM92<> ztNc+aEJsOY}EGi0kl{Bk_*W9CpcvuM$6}N}q|3 PP zCq^Ct>kae;%wVRc=x9hybs}#L!V7 z*cFXwjNhoD`|BliPkxf9jfmur9(?sBUrNv8dDtT^t2bhFCKik&1}|j4Asp|09kjpe zGQB88jKW4+`cYU63p84dW>WLelMK}?}gKJ z1^pJP5T^#>55mNutnYQWv@7fb{etor;#*e3*9fpYjZWME*N5zu zJ?D6Zn|UeylAcl(xF- z$$4|S`>qu68d|rUsM(EAT12Ra5~gD>`6sdH1Xc0b?9{e4J?Q3qP0qRBxNl6Sx34X_ zQru`p|3pC}k{ZWte8fI5UxsrTkIM7{xfbY4ZE8;y(3lc@SA;C7Ff&mUj7w7`sX}aQ z!0fa~vj@2y;0$&**0IxYRDXs}#nTy)p8n9v)G2%7z!w`+h$6em3ZB4k)u_(88;XzG zf~q{C*TBH16r(S=n^2dmc{JUtJB5F6JR=>hb;LrT-3H93P+8d}eiiT0vJx%kmi$=% zML?)y@S!ZVkG^klq!KdCN0 zuz*yCSxhfQ;`(or&u_(lkE3eY3`dxUo|F{9PrOgPelr?A6jiAXH>_koUs1$k^drxr zzqkz?FW~kn!RAw9RfKVgl^q7dhZ$wbK7(-P3Az{g=U=j+M?|`l;J($}pEktp(}#j- zFM2XNlgqRR;dXeC4n){)C`dn8J&O1^Ltmq>Vzwe+_9gu@&O{|XWaZVX;|6<^UoM2- z$H+22koS60aVU*P=}!O5QdH%Fxtm?h7iLBxPi^<-nusR0e>f55*)#)P4OXb81E&1zy^=rJ#HazKMw|> z80{H_VYyDV^9f#jC+9JaigROf{OoW%(Qq0M*=-3YZcWD}b_R(`D0*h<)SB*TeAT0= z>b+!l<_fxg2;8@TPx=2fc^aac;kEYL;a?cLZrVn3z(Or)>2ohPlni*NZOO^ zXb_Aa0j^^}*L94f^LYs0^(H!Y0O`i=d8&cuDMHmGJ#|RM ztV+!)1C`lW;^iImdkeL~F?f{5eBvBvVKV%FKnAx1#K+?XLd|^aD;u=zzhj)Dnzf1w z;wWlbt#OIv;d%)8$n>w+VfuTzyYI8(e9?{KK0M4en7@HMDU5!HHQ>7zHg7^bc9F3j zLO;%<*!StD`^db->Dke$iga1Eh2Nv;(pU|%!r>t4jTrl^-icllRL~ z25KMq$^Xm1_G%zskLpunkZp=SHvc8m zaIjg7u6!Sy?{D17O>+Hk*7rPO=s?&Pio%wM>pAcf7O+ZX_wld(1N2^?#&`64sKiaM zzXpe|;r4Ez()UoFXW;yS-~3^ZI2C4Fj99Risd{JTHB0f@O{jej;JxPYo)Kj8ci{Fv zqbOZ&Er>1S$a^+}_jTgtU!uHKNHxpDmo6}8mN1;i8OC13MQTOggkY{l`ARs*3Vbci&xLt3C%;d} z^AssiO2GGg;T7)TfsQeY>)73yjBgs{t& zWQxLLx~}(m(v^PNimcys=t>-WiBDnLQ95f^;Sk5N);rO+U)yManCJvxWjQ9oxj5)52!glV^%)E>)+(9Npx0u;MR|2E&l5`k`}{PgTKf1w7c)LMK{myA@M^5E`@!u8VZ z*|YsGMJP{AW@HNEB31~@Y^s5T1Dg-~6hN`_{ z-jA`HxrF|ieq@<7$%`}dc@xMqAJRV-!A{!@a|tZ!XO_c*1;X!GRQwU=eTeg44i2Nh zyFIv62k(O59Sq(gc*mi_KVkVhl;RnPKLqi6XvST}1HL}x=QrriH+XHQ(_V++R@O!y zBP)29LZuo}HR(m1mHx{+8Lw0nTYRQ4s-(_edxuI9VAmXBgQ$|4c*tn|BPkurm5 zZhU${m|T>j82+&+^H7k^p4@Od6G;0@X{?Dq{M{@5{wh&;A1-hOuRE64@5uX9;r&AJ zCr;|~@3FfPo89Oy4Q`43pz zt}eJ$T>miv)O#2m@hi2_mEv$TgiO>Iw(2;Ic*b91>34MF3rzk5>%ZXlesC?2YY!)$ zol2ef=*rzg@FT@wb}dx9J^LLac=bibUbN&E*A=<0E}|)wYmM@f@zjR}1L;><>b~~s zDYdIac4IT5CslBT-B__RVbU(#z%6!Hev#)ZXn1aR6l=ipPOSAY=<5==xRXrC6+d0w zXz$RKNNS1+bna+)bs1#6!Pb`<@MR8Mj!$L>M-#o!5sl~C`I|5N?IT{}9169In$2SH z9tpqO5v41MdD(ODWLGWH9Zk;Szr%#N@Vgf|T21iI$`x%+u3CHJX3j?HLgToyqYa!Y zjgAMRo^iN@=ZsVAb8R#>8#9bK==N6ow}Jk3X5lnHh5H&lFj5}FamH98LF z!1Xmr7kJzgy$)bx2J8GNQaS2V^{JS2H2UH>r=s6$iIm59pU31nQFP(^lFt{R->NB^ zG7KiHQ}CPh*|h9*IqmtyoaMF%c&zDC0;(~s?Y?}btPsQqJA5Cu*PzYL71?PGd#_iz9MqQ zlXV1uc_FgSIt^JI1jN9TZ>eo-Hg1kd%zPNFXqI zOZOk*{jP!Z3Ho$*5h+)pRMUwNgP6_Mu)7M{olEqE-?3z1&$*iLB#4JmLm3O+ZK))e z#lr^E3zWd8f5ADpuDe`?u8bl+wPr7?9I-Q#nH3!ssAv7Avhs-Nc^b^O<0F>f;9Q-S z13|45Ol=14wNZ&maK1FS7I(AQ#pHr0M^Tiz3@*D0y=(PR?ACa|UikV^yvkh026j9S zGj5~bU#Kahk>{o}ZJ=Egg=>Uw>PMAuj=2w3+@mZ1ulddNMh^?H&(=VwMpWv;%AJI& ztfMpNBv&#$rLQ(h2qJnG!Kc;6vvlBkx1q3oI=HW(e!7jS^+EnU1NK+xu((6z=>eEN z2H7Xf!y}G+_?jE+AYF9p{~;ppPBc3VZ$F=$ay+%kzT{Xf$ttT-8+7e9_~X74dH45x ziYvsGUHH{`MD_vH3Y*|kisEGhgwNE(uYmb>w^Lb5jz5t-&aS9REm)S{Ors|uIQ)yc`sSAhfVVE1Sgd<7lthuG76U@F32 zGdK0C8pNV5^w><~O4Kl_wMWS_?!)t+sJTW@h|3`s!mCvy_jI|Io^X96$WJ5EEk@VF zKyVA34X1~GFIsZ|Y!ASF*9zFfZ0vCF-yC9gb`u9Si4#$hL0mW2iC1Zanv~-@hg>** zU-T;hCHp|;bzOLaOTCCA+(A5_1Hb!IWov{27KJ7L?rTr(fcF9LUe1on81^DMf_F`n zr2xZi0oTSdO6O>kh_)K(t432RC2zEyyTt221y)B_APBXqX03O@EtKU1SnUL})nGmk)F+`ZBgl(fxVx05 z8{c)|=uGciSN0}*FeiP9jYD|$I2_LmI-{4u>dhd1kP6i$=JOd!@{3rhf_D%-y+!E! zsY`D}H`HVjb*nJ*EV}oc>#AbRC^CC5u6EB$2UaaqyerpkP9m!dqpork#P4&~KZu@O zqRUkh0l4y9=xk{+lUmenTfp%yyVjxJtA(idBN@O^BE*c!=NVAb0@3Pm&RACO4SPwGV^H%384BU0$dF z$3wX4UJ(A^ZCzK?pLBP;uYyhELAb2FfmOhcRnAQIX?hSJ&Csd4+2I z!F}sS2v-P{0`CSm@b1*;$D3nOlNIFj2dJamW)Jxr6*rw8!%S3z%24$TrITzRdO4dY zwS_&c(`fl);WZvH8pH*>Log0G9|}+oX4Zx0t?(AzV7lwtkdbJ_1ax^S8Z!gUnB`Xa z6+F6>#}@LtSv+Sl&mGC%^y6y7DVs?M9o>OyG@MKu;MA~aP^FNz?GcjZrUodf5f+|LmY2>l|nNlrFPKP}hi`Hm*_4BU;gboZwvoXHg9WZp77;ZE(_EspR$r z)xn@X9E3-~=F!B)QSf{Ob1($`>E}kfKXcWY{ozm)ss{ONakM+D7|4AP1T-avYUMj> zXgA3+50hiABMY8EOdsI(g{9zlM&i8AC;!eWz018D4pUKCL*;N1uAmojsxka3L*|hU z)V=vPkrn?97x4rxUIC+HsBgHtui_*~9suuM;JpRBH-Pn8JYSgmtLtai&OHjwnZjQ@i<7FB1YAxnY$jDoma3igCa8-$Gm<)!5hOAS zt_;yL7d|nNnv!h3BaS`*_e=2o7!|Gve%gw!TMPaxiL6VhuP#P)7I7?r$IC%>HEiAp zpLe3y2Z#t~VD(LMoafX9zcZKd>=t{VC7IxMQ5<+}vnTI9hPb(q>mRmIVLOhF-zDaJ zB6~>SULM})Vm91(X;h^Fk+Tb&8i601Lr>OPs-yc@$H@Y=;|Q1W&QqBC0aPB^a$RXHvioAhc-P%q6jr9g-9Pr2{`^x^hqmAl z=aNYeh3V~B(KXp?aVcs>R=GmnA8%xZ=Qi^hU9C3^jTo8$e$l8zBuxGeu3zEtXYl?E z-d{MrgZXb1CyM!qgXw9^k7OQ2JuVuV%=<=O=C3rBgqlRm=5$$gXJ$vxw=t7Ea}8IL zM(|0_!SRQ1{0lms0OB6>9AqZy7o`SQgEMNyzF{BgSmWq(T0rbv&tB(Vl>7|Q^A>&N z&jlaxi;#uxvqJ1PR%CCe9=Npt_fGJ%mwRt6BV5k}&Y8hGBS(64B#_7as5yG_97E_x zbZm~>u0w<@FTSQ%`X2jC7X(l7AT@<8)KHcZH>Yro{a|YJ9jVJUVAYi+uIFOUCx9rg z(KqH|%NrPelWN>?Du>(ghs#*U(^$_#(Uq>amFCouYSDdI7GGX~{4=Zh)(8SC3z$jf zF>v35CTv9&*2CG=bi6L-Sc>K^1LNhaht*WW){{qVLpS!Yb9UUwY+jnVcN*4Y zsRNbc`XFBpmy(BA6Ns-esl3IYC?ANL_rUus=d_2q#acKu7jBJXW%t9Qbs*Dkf?KQ3 zj&5o8nG3-2Z0zr+Gw&GwVD4$20Lug5z8n5-=ep0W;J=w;3z2Xe4rdoT8v6_dUR%tw z=+X`J<1u)DFp8s5m6*qR>@~C|yX`?vKOBcLjdxu}9c3%N@CXsp#fIl7_zx632@Usj z_oKS*lvIwZwaPtiG3aL8y&&8BVXI|b88+C<@XJEUJagKp1tbA{C#%j&&IB$C|)7kIS#iY zSWoMj-9^0PWb|Y(5xg@x*F^+%Cdh(Nv>fo0PZ>9dM5KaoWE!Um}kKBBs@OOJRC=NPVn_K z`w17&>1%NNF7xyZyg!mr{-Fk&WRx*w`oDvTl6k#99Z!nO1xQn@;wYT?XE;)iph>4D%bfqSx1AIz(oU%=}%doz!Xd|;Ww&E2bX z?_37gOU%J#j;ltnd6S>-85!B14ndD{n%|B5W(-&Fq#5P#Ce@kC2CSo2;N6w)29ocN z1NGS``ATMfJ3jmfEWhl&r$jWLQ>0TbBUktq!`s&8JUVbbLpiUR=t~$}-wVes;9MS} zq@Tb%8qA$w?)Bd=F97Bxh^OViyfTc||ZU2*x z58f=^c{v=|Le>5NRg`n6_#G`T57vTVkIiz z9nW2jKC@@_fc^V3sQGR*auqC^!FdfQ-|r6Q&EZ!~{6ZNzhVp|#7SzTH*FE{IPMk}| zTR4b$(MBC&Uv)DQz4>ia;A>faE(5-0sI8X;<8o9=Dw;s z{289_DbIV1RzKh#M0ddYIvK3%3gc6_?n5BI8`L+EZ>?m^2kpr?)8Rz$-Y7{sw7U`9 zu0l1r7|h6lBeV&h=)ZaZYtFG>xQ7b=TF!1RY#+lK?n@rjjuqVyFI*X{i-UD;u+9X> zt#oU7f|rT5q!~5fdu4Df$L?GyYA?k(iZTyH%>)h?pEdl5#H?9x_Ca8t6_g85e=P&j zHDPr#vaK$t$Y8Sh$!N)9xV@QZc?i6(kYzr@NBtmfCX*R^39-0B-7JDrsYWbn&RO-q z4~&FMGpSyzB-?Q5_+hwqf%SbC?!AD6pLz5ToOFOv3LG`4d&uzH6Mp-^Z(p$W1!D_X zdvPf6-2~Y*ynH-({{!!D;Qa>Oet;Xf!rUEa4#QEgwZ!Rpc%*Su!TaG;+VUCd@L5W; z0&~Le0OGrDhH!0_zwnOT%{xS*Q}i^2gZUaTpTk`Q#}KLd@ko326dSYaSsmt;29JW^ zl7q}B0|;5+rw?c;D6as9hEWY{D|1wU|1M6KB_@`I*X8ki71*J!4A#}r>pJ+6hWr#t zX4Mw;?h3#A;Y)@yvlGb#W}_s_+!db7c=0Dh^lu;^j~|!$#OZ|J+#e``>wN@j75*ql z2$@DfqE$JVRtp3|sYrJs`{y|> z@%*GFKx~qbt;Pxbtp3OTfVV$kzUAM#R19+3uWD3{F&mQ5Z-m?GjlgJZ?rs&)Q%bQi3 z4!m>X!HUAKie#E~;CLv^>j)~nS^Yyna2$F&9n9yW2g}IB!_bCJV7Y@_bT_!Vcz=-N zFy9~Hv7_+$2+ui;=R3$e?FH-IFnv2ZwUOCbgELvmPxC-~8vl-Eu7|Lydf}2fpeN0U zm9_aqt~y~+R$@-@PKOfufVV+BiYH3`=IlPOj-SG>Tg1)t^wl1P$q{gTGkM=?ly@;K zosG6kLC?q1$1ogy8HlIr1Fk*5ysPO;r1b@VUoiFOuyLg0vCOOoSJzs8FfKvoLq+DR zHZ_}OpxlwQ(~lT2hB=+ZjISh8Zin4R$qlZe-Oq4Q-`#%jC;WC$4_D#0Cub7`zg-@s z5d1F7IoANu#-P~-_H_fb0WfnUoSX<=Gu^TC7kN=M3XlNasUW7I2qxMfiu=&^1AIL| zE#QElGh1oQLjo+0;njYzCO(1n3$VV+oL%Idj-nwudDk`WoU0$GyDH$Vc=ra(dR6qK z6iDYoPh1M<55Gm>J*s#Ye{u$|6@f;E!Kk^QKaR8QPtKYjiww;&=l7-<&E(oP4Mnb;d^spWh>^VJv{Hi8tH`xbkz=q zgZX%7WClMi5^Y!ycee>~;G6=UDjYV^bWuDB-lsTD^ZjWa zJH_u#QWrP|?+>vS_MzY5ce%8%q*3UBdJso}z$1!z>;my&t>gb!R zzUHd=SnyI#Y7&3Q+TKtvyp2Mh;+%GKZeeKUTxy}?P?!NQtrP1z6xP>9*(<>9VsJYz zm}lj;>EWvt-de!j6E3^3m(dmp-Ee*N zSUY`*9;3l}mOI})PXFCSx(V;lapk%b?q@3Z|Hv|v+_l*ZsA56fRz)(nMj+o2M=+51 zG?6o%&re}!$u2NBf*-y>ed9Jt^Aw%^56sts-zIhpT-Q(R1oz!=c@OyRbssJtlLD_3 z!8aDo`3J^7;PwYz^*OHdE^~L8SbUtg5P=U`kCH56#;1VwFtn@(Rr;20MRDC7w-630 z2dbBzJ_(Eax|2xmX#5t;@1fu4S+@s?P+QTIm7MP!G<*Vi-Vn~dC*73odDL|UUtKV& z3ijpTW(mAYVerd`w&X?`axe$kc(yA~&&FJ2=g7&Cho1|8cM*^+1?Ck{?dtHmKDakW zS300#y_o5tX!u01pM#FABxY|#TMnS(E_HEn{S~$3A2{-O@E7PG3m|T0LnVuH--F6j zEE>V8_Ut6~1^-d_gz2d25}d<&RzNry9U*p}1GgJI@(?^hD+N_a;)vt>Xde5GWBDSydb zS1M5`2XV9kRsNCa_$JtXn`jn?=g2Dlp%xNE?XMa;X8qWUUoJ+mM{MKzh_dwiw4<+c zEPdmvxF^H`u1UGh{cT=xy~9ts#U1YZmA&KsLSLjbt~`wAnutj5{rQ$|{u^AQwU7JG zF5(*V{*3C}$HH|z@+W#-BG``}L{+^o`*6QesI7dC*65B0+INbz+6({Xj{`ZwK3Wg3 z@u4f~IDJ%I=$!ZBP7f!!r%7LJ4|hB1!o4HXX^XjEL^JM;l1}ZYesktmPdS~=70y@A zG0rp29?qT4HqJ0-E9XjQC+Aw{VCQbrq z=W|a9hZah2x$D}Kc6@?g)N&^?uNm2uItN?2vp?V?C5flFR-~6)kNXbT<%`^-s=r57 zj{wgv9!EW=dN%b+@Ab_q!fU8^32%q@VekGvxqY7bEc7XE`ROy&Qqpq4GQ{%NvfiTj z9=8Pep0~)pM=ZZAD=fz?T`U7F=`DVivpySq>iO7wE_;vm&h35GYou4I=Rwb`o-aI# zdqi^IgMV@s`Gb^7@5EhVfvY#L4qZ2KT(P==JK0rn=5W4Gy_q^GWnfB3a$xec#7l|8 z5=JKEk1rno&ynW16#F7}m;H);OU%`nBhhc8KSudRFN?Yn)jMiyRHvv-QDdUcM;(n) zqXMG4MlX&28eKGIPE1rxefu4I{@AOrxg0MY72<^We(`k^_9tvkl#@J@hb7NQ`IF+E zHau;UQ&7um8?@JY1!E#=m6e^?i&8qdJ@={m=TXUXl-EVC81K?P9W3iC$9(_!CixZe z&l}Jpppvz_wVbWBEq!2-z&C-v1E&Pd4ibZf;J(3Kg7*cl4}KVYBKT48!Qex|bApEi zR}J{;zUVj^P3#_?Qv)S@!g?C1YR5I%AJJzBu;9eTq9BpBVokA!lN6Qum~;$;Xn`8h3?6Ge=6QN~{qq{^UDM~9&s>YA?>XO!esBER z_1^EP34>}R} zC9ry6&%i^r+cv{$wUx70wYCEL_Wn)%>-&}R%jqlmM*3X!+3G#ayMdR#*AI^!9^;gv zGpJ+^3UFpS$}uV`;&kB-T1zZ_$+ABjn4zZz539vd^;Ufur3zTZA5 zwrs4o<9+Nk$7aWxxCwDH;)le~PMDCeDRF(`?W6}ua*8dbd1{~3y=gboe7VE%c&zphpc|AsY%=LWZ`O&MCcV3?_08w zQ$SPe0jpr^Zrfl>wq*z$88|lZap37d|Dbn)#ezNu77w}^XbV~r_#&`;;Kab|HX*RI zZLn>g^}O|JfIZ-wzfZtFKR^GEzG=P}EYB?Seb)Qb@ecKl^Gx+Rd1;Jo?Ul*xoU=RBTf0v)Dt9 zC64KFz2XMOw}>B<&^BRa;_$?SNn4ZtB!5aSlUg)&aoWPPSf|6;S?i%a)?e#&$LRxhx7;DNv!feC?@plm^9f(iyz4N4zWAn0dcV&EFqWP!lafm>`5wiK&wEpM%C z?Gn&6V4#10{~msw{c8JG@eQxvuxMfb!o zuI|ye+uI7~5NEM8ue4VwM^Y9i_f2k@R3xcTqMVpMAvQi^d|X_KI7?hlP&*jA2%g2; z*V)J0E7-HxlVU!^Jc~IGYG-49#=MLPv0LrK?E~!J?4Rw!V@JkjcI0$?cKmf*hGLEH`Moo3UU5r1!zYgDGs;RyGR%*h?Z z7J5AO`0H89tD5&b?>RmXea>4X-_O4J{p^0_{QvqF4|o`0wXU_ku{N;Hv3*3{+6FEP zJQnyp&=D9CWDBYg6byDLfk8o+1D^->hlL3?r>(cGkL|4WxHTalG9Z0`6p+*3%Rjwe zl5eu*spXc>MxQy}t-Z^!MgGBK8|#xhJIQyXP3%t>BsPm!-*-le;EalB%;p%Ore{uO1&8*CQ@CZj+;h!x6hTwnuE1*eLrx`)Yezdq;Z? zdsVw9hp)Ypy|{g?eV9Gg{?Ohhwn1!S?5Egmj%AKMaUJ7o##f0in@}#HT4J5Vj!Au! z<|S`PzLD}V#XqfRT5sn9=QZx7pPy^9R?vT>nPr83^hZ6B0_D=&VQ`tpTaT}v#k>l5 zkMr*CbJS;n<-KLAZ@ljgza+n9{@?xk2AmDZV;yU~Yt3Y9W!rAMX7dY77uY$lap2Ox z-ten?;6}7;OrQ{0Dlo$K+*Zog-nPSf&6*rwvz7^H5YW-TpZ`F=;eLI5d;2!C)U)LC zN$+F#dgHatz$c}S_{Q~w5N-GU=N9X zYp)S2#!io|ANwJ8Pi#v^UdMOG1;>)O!EvGSW#aQE1SOnEr{|^2i{X+s41l$S8YVBkVvp%;bT1(n0+D6-YqIAP-;V9lJTRB@_ zTdXy!ZMpTVH63enX27n1SN;k9LHj$d|Lg%}1J(r`4oG3mRfZaC~)KcO*KVJ95YAjzMuX=c7r|KUduMk zHq^S;I?r;=vcmk(yjZ#`O%l(F-GmsSGHAOt@Ecy}vl-&)5RKw&uR7cIHh*3JTXOyc zuJ>l;maaTak7C1-e&{4%+1a{J_;NnevTB>j`rE2&LV zouraU)spfhHBTy?G%=||(z&Flq%i#8vg97gSyR3wC#1|y8R4wxtnBhRGq|6+be;=t zuP4D{QvQ{*s?U_lUYFVf4ARBO>+Y@Y)9Be5dA)o?*{Qr!|5bIMo)rRBr!^=QGwA>9r$6|L zNqiAB>S7?BHWC^OJ;XlZAZfHTz&zI6-ZH>a!P~m_YrigV-1peGn#ypZx>OxV zZO~gDA`kKm^-On9amTwhx?VZ&I14({I_IPeOz|W?NuH71ky;@s=_xr}Jbr$0Qd4db zeAhAQLDKA`tjSlCB9n6`|4v?+JRv14C5!W9%5D7FDpx7j5Vz=Vk* zs;V-Uigpz^WvAF_eoueErb`G`pkD9BcG(QDPBw$^ctn^foEKM%=cQ=ruz9^X$}$hX z*2h}HR?7Cu_RSV)UxtO|3>hA>4sG+1wKl}VO(8n2bJTHcaugs^{0-^i*cOt>Q7a@N zJB)@Gdd=qNI*pUwmCjiK4oJ{ zffPr|ndGSCfyotvcGJ4eHpy1Tp4qud<|)iynOa?A#3c}LbCGP3v31KpR9{*rL1qQ11-6& zE6uGe`=v4Fv*JAIqOeRnZCWDiH_k9^G7K}$)weSYWpbh|C)A+V2Me(umId^YwBU`V zRgbILl;cVn`J&v;ljvChk=ZR*d3P??WY;|BBd6XO?p%>_Hl=(@tCZi#YVz6SQ_0(s zmnX+0Pfk9PJT3WE^19^gDc6%nA={TJgHt*=U#9$Y_Hr(FDb9LiG8Ruy_iIlv&v{vp z_bR{SZR%TPoA;%<+xO0U-2c;e6$H=cbYQ;G_44S;>5ayE28*ec(JXW{1%(d653#9u zQ>r9In=_hwT0WaISmQ0nt?jH4wiN5X)ZE4FZrgNwXZu4@bz7h&p_@iOqrN+E+sa_;(VPl zz**9n=v?LO?y|XDt~IVr?lRcs8+TTD1A5k1zNu7Gj;J}*c(2794SM57a_#7V#~;fH za2%%*+nM{?4hUc@zHN=kW1J~`H}w%83e}{8qG+BiT{1T^kFw}24(m?KMr%!LM%!iU z6k8=Sh$x%G{?S&&9!3UM-QLpPn9p_X>FtH=Pi=17T-zaA9$N?7F6&QgF8W7vEiWxE z%vCM9&5O((rCZV*F(}3hg~YR_`obM!XVWvoKx8(`@LD%c|27z@dl#4#{OF$+_~D!5 z_js52Y}jZadSuO%L}j`xC}%x2WUFVkr@#A|`=P6vyQS-(>z%WrYqs+qneSv|SIzk; z#X+s=PI;e_k`hQUIZNaB$2t4(8wZ`$TxqfH*{;TJv-^iT+P%S3*V9q>#;4K+O;G3 zooo%U&9%l`_12=+p_XXNRkO~L-rUyQN?I??79WUvgn)3}lt*}DtZMpgXlC?)eiXo` z8R?T+nS2N(@5lziK{3#oYQr7TLp`m|Q{M2d?27D(kn4MvdScuk+;(>ZJkl9gCRZJD z-j{gx`OY%V2&dhd)#**qIRh!)l#EWBvo`uQ!`UB8K1`mG7AeniRdJi#kKF6rQ#{o@ z<>Wsek9Cz-fRs?^Dt6Om`tX7MxQCc z^g@Uh_KT5Xq!b~QGn>ut&1cOsEPX9$tX|7f>rAU+bz9pYmG!nAw%fLkwx2dD)|%7) z+m^$A&nDS76Kgx!w%GKx=C&y74{Mlp47tWn%U^SAOMUY$a4b&{fP#>?sH5 zL_^T~I)cp7mwm3`Oax5eoO2d)$;+t=V!(<#0j}&5)#~*th1HTuOJ#^WTR!Hw6UAc-$@DHk}WI%_yvQX5rreoQIne4J9-nV8bonUb=>naBANT?==e zq_2_NRm{D?mEbPm?nI6z%0oOCtyS8>np6Z zsBM(3pDh7x`(ukm+qT+r*;m-I*azDJwlY}nXX`TCJZlwOX8J*E>23;^yO#dua+Z_Q zB6EPQN@dX@4G_Y`Wv0HuKI2T&RkG}t`W=Sfx+D5P@Qf}E=Qw%T0jva5U@NeDM}yD1 zk(}+0QdzYs{ggIxw7kpn9=VnC%pjH;(U~aM99MN$W|z}>+Ih}7+PRUqy2KggT#nXl zcZNFeJBvB(u8z(wu652cuAk15bWRSsue<7aTDm`YzPVS(%RP;hda^?ml-KG*<*0X; zy3)76JKjIS*DcV+-yql|P(~LX%%(4`Ga2&fzp)j34eY5H(>LQN;fATQ7%Mo%5n{Yl zPHISv@Y=lE+{aSNl4viy@a52{(XCc=^X9d?aXFJz@=X_*!%azrY+ug}E*S*K(bvxYC zJu}_uWRvHRyw=lAsVHYqKgdti4a#P3S9Q3ru(!V7>&+E-;`0ZN`di^e! z-)8`ixRF}JyHT00%JMCxr<_-L>X|Ed_P9L1-D5n<$wTV6H@XGxywbb8U0!-N#)u+%H`V-Raz)-JRU6JO|ykJefUhZ_0M> z26c$9y|>wJ_^50 z3(>dyQd9AW^b5I7mv)#%v&}M{JmkB1yQQAxg=M)VfJ{QIPD^@gh}Fbd$|sB6dc=}s z8Ev_0$zxe;xnQnoX=(msek4saH-skikT_XNBYqS62#v-4rmaGf@vo_bv688;VZ3pj z{-EKy?z3JAX3-ac;iL;Obh&?T;JWXPc}g_H1_-^$c`BcUN<-b?0>VMLKoencZdGCAhUgqKn*p+z;Gq+=V<(-Ag=$ zpvRr>nIXG84rP?QLs8`>>M})EORD?5&yd+dZ%Kb$G~MXG5V+=F8eAUetm_;sq%WXL z*8kNd7*6S@8mAkonribd{KjbEu&K7#U3eiH!~xPq@tagw>SEq4oj2z&XR^#TcO`>Z z#o5#;OJ~bH%Ph+idW$zLTP^!JeVRp&q`sxSMKNdRJm8VJf_bv}tdzlAMT(Jjin%1a z_>b66kcH!>c0$m&i~r~{PBT<9p3qOmr=8H}VcMVr(>qH8y@FT#8v=TI&UJkm{foVw zeJ|BGZ+X?NMk%fEJja!3asfq8@gtNh}$Z<9CF+r~#u z?H}uV=r8S$3jFo=V7j`XZc>nmS=}*q9VQrV>MKzJCV?Fp2OmKT;h-r==tTA@3z?*) zVw99cvYFRPqs@}}rg?}tgXN;Rxka)}u++4yqE3yrOvhs9Bd_U}ZhT*e$3L1S%X0HY zb4h;xoFtj+NNc52Viu_Yy~p{;?47BjPzL_aNg!#TGc+^?^otEu*@hm=KH`C3xbAyk zLa-n^fBnGZ*bP&llMJ99d?(SW9Xi^6>QLpn@=>m!^q2R`ZZd||o-3YOo_-$HoxyV% zZHjhpMq-oQ)7%5y^XQjvagT9d!|w&$XWjMqt@WM=kIxh1875ogAM$j0v|><1b%nA` zEuuE^-cda;!0q)F_w@&GEdN;gTVgF;EipW@ z!ji=@!txfoTxSlN>zEIk-$-rD!=$g$UvY#qK>Q&-7CMWSg!95brZC|XQM)wf6_JL3 zAwgf$pz5aRt1ziGfmzv;oPw+Veu0`GBrWoNftx4N5o9=oGF89o0Y<2Ldo z&t3ZUoXzfJzpfv%*trbb z^-sW2n-5NAS(u`p!5=k7D1+SY3rofRqE$*F;*FHvNgt(3=7#1O<{0y7^LO)Cb3Tj7 z(%h2HGRP8Y8AtUn%JR)OzX?<%p7rp8g*Bkla+R0|n1J&q>b`&n!;^PZ!SQ>X1uR@!WHVd#>X5Z@b5O zKDgsNlINqRnx~XJ)w2Nm{LL9ucO^=Gp*WPD>OY)CY^pObW7CQ0 zfW!XsfwW)^kAaW)6)cF&I4inBzS}^Zran@<${=NqVpTFLC*>3JXt}psSQY`8)Wv2RG(NldaqHi1K zi}W7yIeg9hdwjn+BU=ILNkz7wUNI3hi><;!`Z(Q9b`=LRAs`r|4I9D0EoypZJOcYo zIl*JvEld)!h$+HkdTx)zYk2eAQcr29v`X3|B}i|i$CA2n`4RS=58br}sahSj*lIEsmoC;HZgir@pT zVVc+(?5%4}kNGfr6&aXxnF!v~M_);QYtXf?dkwz&aAw_5lhh9Ccuq)7c%x`Md2Pih z|CLY5dpR8$$4PS&xrJO(t}o}58_C(_PI4i6yj+XO(O-T>zcH(lC=XEbD;KDp^3m5= zp*B%P@4xCC_$#fx8{W0xbr<&k@|_3Et`oR1Zq682GnZPH>7ED76%A*P)(n!QhA>$M z&aAWGlh=j2=3mo8Qx&0wutT^c*u@f9>QeET_+C`RB2pQtpVU=aElrkANXw+#+Z(*UCkZRYm04LVhVn$~G*z0X5T7rIPYiSxyF% zti-52n2dR<&V?7z0K@Zq_*&9|A{ql1ux2m<^^!zT7zQv z4s_r_oVWZkwui~;h3So{1D)NQ!hWH=D2c1Y4&qmFqgYCMEDn(j(ncwtbWW;*yy{4= zrJ7QrR9d>mB3%XoFkv6d{8ZY&Lr@AU`DHi<#=^AWhAV8ESMa9sE>?G_ z+0;hrQN^WnRQ7PbJcK@fC1s)PP`b%Uat&;-D00d#f5dmW(X)(nfomx%KS)2{=a zqaav$hnSzL1WNl!<`&Ary%tYTI;}8U7$YPLw}tl1{2UT{A%~4(UFnuM3E9L;qI5}0 zhuqRh&$)k($4*H%#kKrSe|oeOta81~Ow=8c;G@a(URD-eO1bJEs zP$*;dHbW@53NtvD`V0G0cXaJ8^G>xmpVE*VOM)i52dwo{J_TN+F>vp?)Q{?Pb*`FT zEv+6>J}aG+IK{3EM;>*RHFADssGL@5DVvpA=vKI#O=&1sRC>r=m09T6Va@~olhddb z@&5~zQ|ebGySD}XjSH#_gYqcf8SfuoJ>O{mBcIBd#atNp(goKCVwpZHt$PwY$An;0 z&T5~5X40M9zbNZF z36F7WW@S>;Yw9L!tA(ml?dl%ok3UC6~91I>WnK{Q*oyC*N4_J-A>S6SZ%k;Y|Z`h@Tk(oq{_9 z@0p<+1l!(UX0^xZ{W_WRjYzN;lMVam3|4?C=Y+8~{7~EAZuOfo2+f5FOd35D9t-(I zi#SLuC&r1b#mC|Ryxd4Joiu_d(O1kZHA9}o={4%a*Wyj&wOEK0>j>qO02A_R8spZBh)p@LG>QFS$egZx2L+(dqTDPGJ8k+rhDJRg4C8Xg4>{i zHw^UfU&Tfvf*qn;E>pjBrE!I^7k0UVSa5#g2oqScn;@Rm22E<7S3y>mX;8 zI^mV6flxu1C(Pxf^p@~dpdb~iin+1a65=$mH1V;pxK_+0t`t>a7J2LdF;1v04i-Yi z!o+}Arj^1%`n4rZe@wTHD@=Wf(jLQE;~Ya{V+a`atMqLRnK^4;&(>-f)59BswRJg| zX^&yQr2zAz`~AfORY3y1$Lz)WgT z`Kf$YZqmIxs=QKmA+KGW2p&~3syCJD>JMe8no-@ZHdeneyHU=2AKT0WGw3959Wv=% zFpXsLAMh=J?Z^)*>3DFzl9)vu&KANi=C1}ZQ~i}$=icC|yaWlSHF4}R`1)n&7p;fm z#tUa;dzj&N!RhHDAFU#kz*dI|@tj@W!DfF7PC+MzV7J-1n@EHTu#Yi| zIdqYU+@+u(WCE9LD{-_OJQ3I7n&<<6hY99Xjr+Q@w<#5)j(2`mU8l}g2QfKXS1rag zNC=Wq6^ELnq*YUt>`1aKkF-)NsFShjedMguwL3p+2!AkU-9%x6H zps$0rSe-er!yq>lV=E?}x#65d_;pO*hl04W00cz8z9@L)F@_i9o3&vv*ains5G!p9 z-|tq_chgt=QGQ`0)#-LL?jdqU+-dgRmjkMZ9vpM2j*>w zKn`}!*9SB{+y(4}1(?LuCg;Dg71$Nrr91j`S~nLyUqATlLx~7ajhBp7U}aka58ik5 zt%C5yG(iX>M~x6Z3WEfzIGdbxwNP2yAk-40gc|s;(&Bg_tJp#C2&IU+K~t1)l^T7n zDO9L#x(NH#Ak$h{->Sk2`J5bQl;IkAS}VhPqETTs{Eso=Uz@$JyUgTk92Z}~TpAB< zn>p|n^yC4s4yJILJQwzo9IzstW@5P)Y{w37g!i%<;+>_w!sd>Wi>y}N$~5FOO1-5F zQ?Dpvu*+Ha{0+$M4Epv(t)pgTI;ky|9fh90hqJn@Z?|`m&q~L5q^~jaONXcjvIj2v z7jf3Ef(0^^`1yvdn3n9{{mU*$Ign4bf{y6`M>7&ehLvU9xApl9J&EB-ASKLXFC{InD;8TQ!B3@=;vZ*Tnfopz9pwj3WyeyOWu2e__Z7o77|&bY8+5Re_U)`KIpF z2~ot-8>Z$$ifOu#0oj$n4r@@U))PJnb%f7Mp1l$ZkP};keZnWxeBmT|Hpi4(XlQy1 zziyQ2j4{GA41V6s@bjF7-Jv^P)T?iASOZR>hLUoL9Jd2IB){0_o5}V;Cbl>Bfie;S z0^kQQi)Vp{UJy3Ad(31_BmXE%Rr(w5;RDQPP4Jpwmw%w<@y4kJ?{ubU`eL)K)#vEn zOKPPrYJ220Sk3HRpjP+pR|k6EsL|d`-sjW;*?iI7KE7Yx!>~+={%Bthc&W~Sww@z! z*FO_X$gg06wP1tfB-_fl*<@bG{#FvGI~_nKI!$jYJ2<%$;3;~5ofd#cYYgW`XN-E7 zD;vX!y97?wtEP=6*>piWi!;?hex0$yfr3dGj&2PRoTl!=TT?^flBuY$*<=t#n;w~J z@)rV(mzRwhO;h3PDh>0_8`v`DGtW^R^y#~LH`p>u$+q+Ax1syhIsbXeF5XCHP^?r{ zJ3tMI06Xz3wdhjt`76R?{+T$sj&q|{Xj~}u&oew+9Guw`y|ujUyxF`}yg_pPpV;9$ zPG{bzVct*ZR|@j7v4K#G+M*3it+QbfJ?+f`2YM&?xMJXi`b~eJCNXCXSn7X3Cv6JG zord0jkVPOR{(`Ts5q7!_MlBgWl?L#wtbir!G2C!z zO*u{VnP?x)H03(1_PFVY>9*+#b=O^V>AvZe=_a4g@DXo{MLVa$dfOWN&IRY{7oz5N z_=tKkNsw!?au2t!;999lhznqk=HJ-TQ! z*lsC~H+TYm=wuK=bAohso;}j;Y%K+XMXB8Hk%Nx`M zcd*iIgyFFZ%u0FTTlz!xcFCK^x5ev+!}=XMcN2-7CJR2wmda7@K-iZjA=B0P{bR`L z4V>)`IN<8>w=;Q;%WSUL;hpFNv)djx5A;Os&LC5s0OK+vJG$ezf=`iJMRv-f*lzN$ z1Jw?kutV(sSPhr-Jz+II1Xg>H%CG?}Cku@Q(30*jZ>}&FH=Q-MGkr8h;@AIy;dC22 zDEpZ_K7XJ7HQtz?O8qN*d2#Fybz`3>o#8LL zMr--MRX~Ay$)5Bi_6@VLp>&GPv5ss9%Am?@2%G`scTnK7KTBW*Xw~8H5G4Dm(-HT= z0(KrPTSztE$#;#sVYAoHbp0Q1UnVMBBew={n$}0F8pGGy0T$(<-tRjf?OmXx9#=u5c1HLvrbE6kvoS6*oT^aZaJ~2bO8Z6b? zAlhh{eQVg}3g>lcoQTWm$y6p5d}Oz5IoPk^?6&*`%|0G>@9tEj**ZQVVyjEUQB>FWMM(HK+c`q^L z#%>+3)w_||Q)5ljK~5o<9Wk~hqJ+VA_r?%GFU@Fd51WY{=FRgk4U7PNHV5c#H`sa` z%kE!J>f#&VY>Z`ZGB?|jcfk0Y0@9R*G5?W0oK5sUI>IFq27k^wxcv68Ycd7T)CP|2 zGO*)jpoR>vH}(gs{0blU7kIgUaZ`x2cHdb%*&}ZQYM*yD=_(?DU9vMDnjG3=Kovk6&8uj*Eif4lDHsPy3+roYJMKkQLs=6+0^JcnM!;s>W0 zAHj=u5Z12wFsXGgo`KzKI`u#}3_GfRfZ?z{w_zZR1KFrd?l7x1mFlhp`;l*gwRFqa zT@GiT`fs3NFb;gE&d4o2xS{v`p{bVIj$A4yTtq+N<2w&~|`6|KKJra5CV~^lJSTM@L3Nr~5 z@5|_T+Teb6e|&+xU=MhCJ&nK{i(<3%6I->V!5NwezTXABjEQs6`i21W;I-hpnFhDe zNwS3BXi0WhCL6$kI0T;0Meu!Yr7}8(2419wxQaGifw%cAyom?k65as2?R0pzy2Bw? ziQ36#+(Qp)6mg~;JC4cv!iN3iX#I&nIf$PR=y}g&x3LnQ?ME;V(clpqH*?qttrScM z{2?j(u65hS>F!J?;QMe_aBYbUrb>VT2 zfaA7BD)(f+RNl$uFvuN(<@32O(I>$6RFOPmC@g3@u>LQ^&cgJ%hY@{_QGEu%^=iVV z=sLEwKeNNC?b1)@<2E0e^;z^9p7?gqf`5RfUktA^0Q-p{-+e-#(qv4-)J#=4-ZWmx z8CdHExXAY#_ra5T6c*KE+zueMZG2t{!{j7*C%Z9AUWF_plsw}jo1+KWi<(H)84hzo z5Pb8qoDWO@)wK+o_Kl77XySP*`rZPp?g{MF4riY=KL{!>(XrLw(zc-Q5E6I*7sm=D z)&}2}4Zfvsz91}+&wT$Nw-Iojw#Ktp$4eE5PdP7omy26I?w8=Pa5xRy!Lc_Qp3b$% z>^zKc{}BW7!iUubj+OOPA20n5`UEYAKC6&gV!(ipXw6B%Hu4}B$UG5bl2PD-ePg@0 zl0F}7zk~2;`}CO&zx7>V-iS8zMK?B3$KNv4G0M!Wl->}P_U($kP>r)BQlc6r0s*J1;48&8}PnG~t@B<)q^cnD+TN zsp?CG5DPO;BKj6$yibqXYv>2V-~!~f9X&dW&fSAo^96eMhMeRz9KMgqVXwlec?d0w zf>m=o9lDmV#pcI8ot&ne!%NalgOx^$)EeLSO0=y7m6R1+!^`xCrm*E*PUiu;bthN1 zGiU@MbhIvlZ90L@M;Q?BeZ?SQt<2Y2XjgOMZ7(!)GX88MjE@&!!uyHL!r)G70khA1rXnu;(~@&Eg~MEvpFaU>`A)7bJ} z<+G7v6eMqnAnzMY3|Ixv+IeO%|G;LN4=$Nb)V!qT}sjZY2Li45)FWF24( zA*yDicF1C!YRm+qsKYp%XxrWRhnbB;YV)(`X*65!6PbT(Nv|_M9Y`k;`Xb(QG2Wmx zXDeCQbbkfT0_Wi zHWGdAfS;>J&nptihtcPV1L5Ko$Y&Y2u1(3s=MW7NK#TheqGx{ie%iw$F&EJ5!}_v@ zSJYPq_R$Iu|LTLC&=YpU3FP*R*^S?TY~nd#*kdSyj0zfe8*&)8V#iVFkpf-_rfsuwV>9W2$p<2_zjN(_dyEPP`H{B zKbLS)cAG1yA!jzDcF|Z2?|_>H1Hp%rjLPPa~ZRFGdancfXC5TGR(#rfFjR7a#M2Gb zn2kh(XVg^b^(OclDqx*`kei0yaY~;RnbilqV<_)^1zcbUu(g|Xciv&ENp#Bn;CTqx zp=OIF;|f?~=NbNBlW&mQHRQXO%xnpqKLd%$wG5B-84Y`3s+mdM*%n^;{{fk)oFTK`HFi}my zM!TYCb?{RqI9td;Y)wZ;(eCdBvvePHa3Jy;17qn-GTPPX*=}Tgg_!w~{)Wi8elZx7 z+K@$0CokMbmh&2Ji8LTJ)gc;1f)4QKyeuW7U4GP_t)UTWTIQs47-^H zw)atTsZV&fv<8p9GP4BT(6gyvpR9*F@Q`5^wzm>4*v&BVZYRF(;;UB(+|+iJAFJMptHn7zqh`ke-+ zXD$e7EmAShKZ5SPpRUamcmkSHRplWIk^NTQ?-v;9uBLKYPJn^54-Aa0$@A-zw}w-z zR`s`~7uODXc0pGC_&mlx0@=<-+S}02OXM(L$k0N#5|ucK>Pt;%n?LD(9|M1CI+mgFdt~AC;0wO(1a*SO zztWwFi;CE3I&|(Y`PDEap+Uu0_{& zbMo{rfAN}Hz>mJ>qMM@eO$~z+W<8PmD#$%<@{U4OpPj)>UkXCozaZDRiBUyC2<#3z z*+1CEW%}SQVnTk9T3eAlO(6@3Lv}YfZ~KLI*bL8^0`U-2)6qpLg5;{Bbxo;{I%1JM zi4c8}QXgjDdLXOzaDq0*I;&Cx6v8W}F}#O6@f_8_I=Z$a;2Eh0woYdHL*LNwlVpqY zz_4nInUz%Mx%PW~Cl8VAtR9 z{x|hW@UlE3DkqT7ZoqR+pb}^UMs9KNM-BSvc-7`${^j5`{0_Fzo#rfK5uN$YT-{=v zw)g}6L0_&C+zwLqG-TF^e76!&E;AXG*WU_xl?&YVXAPXD`?`-DA`T7Oj1EN;SGQn+ z+tI2+$m#<9%!lZs#y@FbdQW4dtWBoTkG|a!yxB3l=6iI^0Y-5+eU=e)B4feddQ3lA z)Wv{^csDqNZL?^)^Y=J42+(sbp+8LC@me>VQ{3J7n|pL2lIXXk0UM$y9gsS7s@qea z_9r%s=5&4%RyWO162DauU8@2|Y8AAt0&*;Y6!TJPrboJZ!w;g$HKq_^$^Rz8h1Hxc zT5eE~lDI+_IICF3IYDP4XhHIhW)lbE z>Dg)w9Df4;1v1m=s7?Q1C}&bppqyPMLjC2{WygawlEWNKA#4D`-7=$eRimLl)yNbNp@Olb$v^A4wK8vkoxm7RfZz8+IR8GI|$nGyJqAA426uxQjA-og9#h*N+| zs@9Y}=)!i_EET^)H4D=85hKa8Qe!V7HNV!xt#5}3Ys=4T2 z=fZR4<)biBvJAOOIJti_rXPAB@v-1>ET-a&Ckwm?=hIs_E_6sNFL`Z!@EHe_Ev_KD zJrC1a+#a6uDNcxhSz%{&p%s%3s1uD_}V4>6@3++bU7D;8b6nl+D3Wwp7 zyhuHC8{Wgm_^KD=`LB@FOXBP^zPkq#;uYeq##y-&%hs6rrsEw45HYo?qZGU$p;QBZ zi9vV4P~1%gJeT@J!=bLqOm%uN*#E z4;_J)bO!sd0a3LQ-LRtQTy88b3>jrcZkdr*7#f%dR>@+>tTLU(M)31>B}X1j&ayZ# z7kk&Za8AK*^OP9iW*;OoS#?#;KD(3G&c>VV0zdOUGhrS$uXBJrS(h4AV>?(*6gx^B zeFn0-qN|OC_CP15plfT$toGuMF6cL*V+YWq^YnLaqgl_GFL*=#`vFb+NX_~_Rd$JJ z*$pD*aU>jr+!oLY(D?aUP;r(bdk%r^?FZiMGIhviJi>TTM4O}Q1@LM9U^(4mGVeX~ z=4azYy5NJ$r=q(z<4mmxOc7FWH@dbIT^o(Abw=0fp=)J1=gmtL%!D4K_U9+k*oa_W^JfhM4B zA3=1r>F)FDJi)HSf;pfb@4>Gatn%*FXyT|PjoTrb884vJdx6!xD{NxmJ+k@OTBJl+<0BOu^UFg@=raMqj z{}tX3jqhh8(~x8F4NZ9^`Or5nvl9=Q4BG{w_)Kb-&b;1o^okt#m!E+;OtIxfZpPpe zHa136?{o%-vmTjzS>Ag-a5ghzs}6DqGx{Xrw`H4id%+-nKa#FGWCEx#nJm2B{ z9%0Rw(9MI?{~NH+S!mmUR6fqy^fwB_KNAAd=3mZVAL1DfgQolsy_XT_TeH+Tg{S!3 z{b1zI$G7z)_ozlcH#4u_NpJ8`Ks!Uw2iKu<)96d|r=D*K`e--+OdGd5vjn|WD9LGMNkZ-t%(^=>iR42FX#hJxC zUd29a^f9@k7fa2H-)#im^9W?NhF6}z=Qnh8b?94e`fM7TR2Tf)IC|ns$w{};2RRBe z<0YhUpGOk0-goHIN2IFVwEHi3>;XT!%C#@Lz3Yy*~pM>Z-qF35nR( zWwMXM`7Xt6f0X9)tS& zlT!&Jejq2)OI3(G?di0PrBAhr>{dgVe#HEtlL^W6)O+R0JKEC89fO6g1h@1cKKc%* z#NY5d2C~pF-e+lKSD#4QfxMwVS~eE>O{Z@?AGs_gA6bF@u7I6&84+M1b0Ra*v`8d4 zn8@3OSkj2Us)%39&1W;`cYpAoTG#jl(PslPo6PA-7ra_EX8gkFd#m(f61lRch@tE7 zDig_Hk$ZiDe- z!-=tD(Y7i0v-x1#MRP9TNW_!U$yn)0%qYFV@9`b{#c<@$8u0QqYM67Hf`m+|f#4xS3 z6Ity;itIaKm8+@2R-ju8>5|Mqnq!Fo{jtn;WN3AGh7$T>RO+Gn0RHn6)xdSoW%u9_ zmZE3F=^QjChL%iaLQKXE?tzN0F~lvQ(=e1P-jvL#Bpxml>v1!=@EX5%740}gJ-V4X zVHs97gNQhe&qJw<`lDxkh_JnpS6^f}h@Xr?W|PVB=5rpf7Tw&5j-Da+dx*roGnH>d zlXFptRObqHChM4pUsz8)mq0{+N#5auO&~ilv<7|LZrH|DJ~rZEPGO}_;N1H|&Su6w zb8$Xej#wH&Oz41x^+O7y(4I;7wi)Qw9CFurNO3N;! zXFlvR1dryT>-mZ)$ct!NJd+#?=uHjgb5lN-0HxkRF7$`~(0$JI4s(51ljn{{a-Hef z*CZP#fZRg7A-);Z49o|B~~F_R_f-!h}35Env;dWB$at48M53~lR5CNda}8;7r&ivG>U z8s{Uc`NYY2oZHVtD<_l7jzZe~h?X6|c5cA_WO@B(yyb29Jr407){^5)#IJSbL@Jy~ z(%j6?>Cya8%<5d_1ZXE542wWdABL5-W(r(G|IUeb6Or3rYWP>=qBqcxQ~0DkSlAX~ z=^ARRWqe+Q&do0Zv|wixNHCI)OlrhEB(2Hm`a zPkT?^=O(6v&|NRU1Zz$DLS0h%Q8fO*0qELnvfCK^>{)mbUb53AqiY$_wX#$*EmM*0 z&tofzoWUof0~YoSbCHdf!@t!>TiOvz`(UlZk--Fb8mE!}&c@fzB_ElSs$sp5VGq1n zXEd=jda2Dt*WjZRmYIusAcSX9=@ow_+T4Y6;5ZRGnrvq_aX@3~ZpK+b8S>l=u;dHK^eW(Zva+jt^j;zmUT#ojZYKFA{(65`ABh)&3%~1gJaHVVQ-|>6++v2R!LWBEcdeK|EE; zMKoXITU3JiI6JFDuGWJt!xSRIdipdPTh<-W;=d3T{8U%z@I(dBl#0{}^@*shxz`mf z>WAEh@ZE6iZv=80o+>M?E^o`vH9qtD^l7V6Kb1ta0UZaUZhUjYaN8ul8{}gzcVWy5=GldJDNdr)Tn&lTI0Jvoi0SGu865 zGh;-e_XpYLc{741;Wv{3V61nJerg5(jd10 z9`YB_iD%wNS85IZb1KxuT6V4zje0m-@f4?BBXXwyPGLZ9F;c;y70JZ5Jv~4H6!P-r`uRW&yO#7Xi z$nzO~@C!_8IC{Y95a|By`W3^uB9-7KYdJC>TD3%O!#a>jz> zjy8No5~mqYQzwQ`P{pjrIw!+i(;Yuu2Og!uzg5;tSBWE#w}@kebFL{yJ6H2vp<>AxJC? z*%crjlpv2NkDsrCUR6WKsu3Nk;{PiWGfSt+Y9Kn+6Ps)gZ)9U4N;Ull`rP+*S*g?n z{dP2XIgvV&47Ue)M+9-Z1g{`Ha#KM;d=Ep!HEeW0Ho6uYoraALq^sMScN31ME{5c? z;^8dpZFrd~`$LWJiD>u=dwYVXx=)1APJeHsVRx~~2iWRUZg04+ZCE7Z(Sqc7j^I`7 z@=>5Pvaib&M+dU!VLY?OA+(WRf1}ANu`idDWp{#sTD>8wa#o-q^WUO z8?j55t|0oAP5(rfhC1D#-;aH+XOd$!)yL4(v#9M<11qT6C+aM)%p@_h`8-%gcOLJt z1J|$|4?KZ5+MC{1Q>I`mQx6tI>oV|u1g3j5#=0M54DUb@ct(fkKALw6ExJMedmSm= zz~kLUVh_;5L?rqFZ}yw)SS9XSg1^XK+-%=zaWf74ggIgDD1|4hO*PV%$UTsgv1$0T z)%dgBbQAvNmAwcy=2W9EuXYL*!fGsa4@@x^@o!IgCKC(8F0tC=e`*U}^%Sx5Q7RwMZ~7fZBo)SWE)4@*1hsota;H()=UjA6 zV{+Ne`#g_TL#M-(kd-Vw%omCy}0xyM&@ED?F!MLw6&volQY9>)@oa63$dJ&e~o zh7F&_>;H>o-a^ZsQEPsp-;@Fipb2SZ<{D^BIt!sSkY<@bMw|`t-y~Ejok| z2g1mIv+^|)vI|9)Hax$97%JVFeC-_iqkfZl2>a|g(wH*rs6fEr7upgWe?5U)^{ zE0>LEZek+lKX`|pkr`d!6m&OL!D_t9bTZt*RD~U|%KF5)a%AuM$UQO!ee@`QBQveP z`-D2-Hdc5A8@v#Bfqo^X-p=FkF7X>Th?ozM>r3?TD;1}UnQjx$lo1UsjKr#8rLD+t z1`vCu5xLj0QE-50aGjjvJvq15`%cg6EJ5ZGLDcUKo6>l^^HRLqHuT{H5#bhcdrd6; z&Aaun^fDmc5qYUKuiylH_tli56OJmYteE9r`EX-4y=zCz|$x z=eogj9_M2#A4|DPkw~o<*;*s=+p?+Mj$BxQnW>m$^0k*_9#?qf`*{cJ>4ML}(~O`p z>`FAyvZ^Zd#ETLUvQcq6=#3kL3LYz&kN?P9e0YWkoP3-zIG zA}0f(bT@J!v0`KzRq>yV@%~-Wv*F~4GhxHh_|SIoO3rbb{fHd*JCP~?vO;=h#fp%d zhm(7>rVBj)+nJR5t~8eG3uJG%`TU&B^gR*c2RZ6rYDf)fLx#Oa)rrW(s`ualooLm6 zSftjYeap$i6SCwR{N@>=%6|TO3!1i^OmHfGZ3rx69q|SA$#%-3cR7)s71?<>+5Sj$ zzsI!jnbgSj9S`%EUeQIYbRSl}x9H-&!Ag^e zrY0)m%tWf9OrF$0ZY|hb?S)?%&9$D5y{zN}JeGHLfS%WBa)PTwz5Dd1pHnZqC8mBx zU%vCmPwe+6Q-VKJJ^cqdKOc2($nZ37s=LVdGBP^Fy}dlcW+b;9`A?@~Je*UVZbXB| z=vgJIx%^zQQ2uX#ZLS|MJU#L-5UA$q1VBNNp^rBC%BS zMfs=~vSV49kU~0sk`{@ip@K+Du9^-xX5yBe`}ujSI96B*&8kav){_274`e<94Vyv6 zv65;ao)~=+{klU9_a0ffVHUJMez+T}^^?t;^vBSm(`eI0ZdbTnC`nNiCyA{RF((F1*CzGlGg1*{r8|}l3k=i0(`Dh7 zk^5;azaJf3Vn8nv0KU>TXgbl&wSqGumGcn98p)1aAJAsDEF?8*d_kkxN` zAwL88$l>zvHBazA;$$*;iOkNmj_7Ma^69bcTwH|`=x23u4Q+0;8}>eeY-1)7U=0?! zi_WbU1+J>tR>yx9vf{5SO9-XW`Zsb5X{*T_s`lzW2LyNBGgSaLqKO20(JJcgCV@w}_K zO0)PsBlv$^`R@(6g5}Y-TzuHbJv?+vKf;1{k1FPLswY0iJBi1yt--I&MK2=pYlHD? z-FWw{vA%|QvYPny%0z`S*kf_zQUq^Sh+9GK7vixZskusSykH@GSZQpuD$h`#T(&h< z+7s&^PR=n6xh>=WY(e7=k@sBU3O?cED;20hWVfc)pjqf?6(;+rLU!8_tI-$<`{S#} zq7^gIzoo>4b@-*NyyrdaH66hM6Y%fnsZlTE*|ZA(M(XW8U+?h!O?2!sKR<_!9>+%a zAulZ^uS3_C@G*mr(L8@&{!cr!U5nop$r=lib!4KiET+mW!0Y^j)ZW5+cprPY$hr3s z-b*~bCyIBr7(X{1ts6@&KbS18C!Vb%5@?05YJ&Ae@L7wpwfI_-?`!gSZTx;+ey;() z-;BR&ga7Zs^Yr2QG@mvBjh>C?TtQwNO(%2@Rq!b?wf|!lH*l&QieJl(t(Kye3Mbob z%C**FXn*dFCKgQP-hA%;!@c$7Rx#Y$!M(k_|AX8+%)O)BJBA#O^7$~g1Kiuq_i;SF znV+vE@6)(vXY+Rx`1_$eV^7YZ+Ms9k>9ABp(+c6+vf$y&e5VEr6AQA@^$UT`TF0zk z3fB3B2$qPCyOVmpH-%H8QRHv~s1tgifgR9{R=n$`Xh|d9cLTEF2rMmvQ-+2}rU{u! z3vO+>bwR#;czh^+Y&`Owi6>h|6xhh$@8sTbuE!Og_c7M_iEEUCg&NqgOozA43o}s} zUR^D=8e8CnyI~bWxXKfd-5jp>3SR$4v@Z_b+s7QkQS>2!cY7W=UgDi!A$nXTBfg47 zU&cpWM6PGKo#1v5U$5o-TgbvzqfZN|$ET1#k3h3}@t;~VHCmUhR5_%U7Yu+>?7dC5!iBjv(;Ey4HYiMiFul^}~P9mOkL zMFT`WTk$PEvrwY1QhremcGj>3} zeR%efTpf*Rb19X2G}mMw_IQp6a1Y<`p4XGY>jDyp=oyM#XxKW%kW?k4R1ev;M02`e zK?Bf{(OA_KEKI9Mmm$A3$YB#cYb()l2cCWp@nIh_I*@vM%GXDHe-G=tfldC44JV+j zhj^y#__2-1bQ#Y+lWQ;r|KAti*^by*AAeARSX6*KQDbp6;b)!nB0ut4HCEb7__HHa zRB^~{Ef%zZ_cs}zGlF=~m%OSomf8wQHo~WA-l_&xSOtkzL@E{VXce%~O5CdO8#PkB zTnp}L^-@QEy9dwFpXVCRb57v7XAuFG@W0maKjZkX2Vn<2OC-OE+@52nU$9drcB;oZ z(h$9JAhBX-L}j$2KJTs-(&~nt4np_FAgQTHV;;7*3>mIP9@@;&R($<-Zo9a@m&f+; zvwg^EFB092ZSUZ>wvj7u#v`ud8UEo)EJX8WqTi87Y#6b-4;t5jGpVLr#hPeaIXrDa zUR_qQZ#&3-I_iQHYQQh(+zYJm4)5w;-raG$(H?Xp7OxeBzAPh>&ZAd3jkr1i$&E%b z!}vNF-#-8e^+P}VA=!RNX#hTL5FTwPS>GuBYCKnA3Yp+6v~3ZVzY;y$NIxwOE7d&e zDYBqT^ltBBr!Qb|{!CqvMEB1Ztj9HOMNH_1{tYB=8qMpUf*xr5a!ZitDx$=CywYZV z8jHTf;jiM6ZamV6!!EayMQlNzv|XaLd|l4>3#b6Jd^Qq$9mel#X96Ah`=&fkEwsBl zzMv4XGmNVig1+mBV=(+(8P7+&>U3Dm6_vix z%ePX=HX0AJ)4F+OF{_$$LG&I9iM*NlR5+Z4EolW^==V?X z@e<5Qj`CB;Tng(;#FUHexezMns)sX0labIrK`jj7@sDzszIfF`Zqb<^Yvrk8Bkj$a zxK*KKDvaJ&vtyL{Wgg`}?BZeGH@TOSs z29#dMrBM)z&wHNy2da;{!UMQKtGQMRL$;YfSZ`fRd zb?bT6y<$N%ExaZ&?oRl1n3y$)WsHE^`8?Y%u;F@~`W?*fvgJYX;4yeTjX^JB+bBNm zO_n;AZ^~Gs@%+?yPvhe6$NK*k>m4nBeYx=c8Pj_gJH1n$b_+Dq^K=D&d5Qe_ELM3E zeh*@ieXy;IUaFSjXFWAqQSPx*nb#_D)&!jctxwqIgu;sMhuI%->wnl+IP^|%`%ZJrIgY)^IX}bNaPda`yPZe7hYx$04-5N7 z1b6+xcv`}@AUUB z+TRDezq8JVi#KtDyD^-!A6S&SJqQi_k;VRmMyoq9xD~ z)0<;l9XW1A*zMv+Ht;9QSm@VkdIsb^(k>V;`xq^XK93hq7BMdGBmX<>?vX$Ina8>V z7PpB5x4`AMP`#PlRQ$gl&Nn#XW+>kZ_d8kfUz~lPNck|X{hM!l0h8ZQM-xSwDe#&l z>siE$u2haK#d-iGdatU$tiH%~0E_8_c|G`>!};YwtZ5kgJcVaEi+x={?@MX@3m)!Q zICm9WyaqPc@o?Agm+N@AYanzbrd|QBpNkQf*mAyKXYzL=TxF=bI9guY7t6ZymmOf% z!kz0WK^1>fkK5GeS|vO z+}bMZ-Y5I6T$DDYPOEP)El!}#X}ESS+@*7qy@`lWq8b<72RWfb`cztW?9lxrR4ni(V1);$`#S55aUhi5xP@pZiJcl)Y{ z1tntUkG$Ag`h2JE=hN{E7CD7~dlxcec(K>;>3JObHxKowxS2S4Kks!93%rZ`+4n#4 zWPd0!itBv8v0&m|(EA&XJ>Xgox#r`n{VDbEg0}4_Y#u8fyoX(%h}2)Gx%oK1RP0>C z>u!+=?XhA<1zxNsEgHe96+JuQM|bS#1A!xX`eU^bhRfAX;hWCjwa#UO7s+`qk#k(e z_y5BGU&=GC;QOv%msjv+m$TMiV&Bg&GV%0c*~$67C6b;B!}zkH_&gAP{dk6+xZXt# zwv+WV7f0(WWpy#3ycXXcma+x2eqcM_({UkWzNGy$-e?LO-h={frT>QJ)42G&J+Juox~shHiW9|y4_W7D z;^|C`pD&(%t3)ehK^xTYc6nL}4pgE=Etb;=BU(bGBaU^$nqHz|f0j287DHfi0&GUW z?ljn)1-El$uji8se7_KWSr6(05hCrTb9uV6S@G$7+DNv1B1DHmaj+T~!2WyVUw3&( zXLrlfu_k!SU5odch

Ym5mju6y;dL3jE{E4OP`Vk%Zim-j;q?zZ`!_DXf^qM->qjEdEOFqQ zqII%HX*P>eyIDjz46CNj>lZzN$ExoU>it}rTxQFaJkX7>`W>wPgm3rI_5oh}pKy7U z_K!pN2`qZT(U0TSqvW5yKfnXt!@~cBm$%6^Zh&vb`2G~n&V}0uUh^1r(N~>x^=ZvN z)aTbK=`+~H8rI8_mWuXsMT5`eAMeV_-%#t%^D|F~3lFlNyLju{;r3g&UB4f<%i)$b z_)p<>sUt6eQJyJ;V?XEbFZcgS*j)$t-|}v^%L4Dh%?J3%$Fb}=oE?p66L9zwY@37A zOZ;7n<7wGdWT$myNG+A}Ao)jcabb}5z)9-+Y+78xR<9*@ECQP@0;U;lvT{p4=)N55}_(v7Zo6}&Hl+xcSWNH%|*y6BI;i3ja4 zy|HiAJpC-;@iw#56-ELqknhg$ly)*d_l}x=RloDotmRR*`Tz{?g5jOGcdJNu6CJPP z(XXa)o{IcRl)VCfeg%swvFB=Byq^8uL~bR2@cXZ}KWP8sj(gVeuVGkhbF%Av;d%>P zcZKV3cAtGbT~*m+gJO-Ojm9W!*N)n|Z;;mV2}*tj8@Y%UKUeox(db6@b1VGr5I?Z zeA>8vBUn`vlS+Kss;6(25-#FJW-09y9%UlD-r(C_z_};+mxn~w`}nuN(C!YlbgQFo zqU~>RtvW{DF-FeuHedFRs4-sLod~n{#G1+KWQskX7l=)D z?YZu;ly$C^`)pTNWwoJd%5j^(sx7R#;aMM8C8`aB)ktlrbL1fx%R+vR2fwE0wYYWz z-EW4&E&S81tn4=2xeXGxh?M_>PdAb4N%}C8ll{!Ti}}BE*!HQ;8SdP{uF=o6lA(3R zNfpS5DTrlh@cF7Oa5TVzJ;$QEVz3oeZxDbjZBz*I@O6Ea54>?O*hMgtq_0 zmj`j@epY-RM&8Rq-OEPrW1|l^;veiYpU23*{eITBm+T+y*I38D>xv&cf129)(w42jWJy}NH`qa`H^_f^KVI-bflQM0YZ(#~RO51zP>-0euX9m~%Qhvo=+oz8EcgB=&p z`C|5U2^BGV^$(#D&lC?jv|jg3miL ziZ|sYqu5^T?*-qV#i?NU6zu*3yZ=BeEzhU%>lwH`2kjS~`3jDWRug0R|8Z>dJzn4= zJp0_8XTfYf%)aH*R_Iw?r<7aS=x$FP%gI5i!mAD&YK$8#A=4fPUEt9}hS8g!>(Abf zmX{nO9u6hL$w_2{Z6obF6~|6<>}k$9)wv@fHNv-(V0VIR4^=0}y3#-l8=z+Tu*yTl zfv)VcBk$T;-qsA)>MLChT&w6k0VUe;JK?q&ZfoJTd_Qhq)Ba0rnE?lHgvFEx#fSUh zcdsMU(|<1x-Uo;Ko%MHkK13e%{a>~{jZewYUc=Qf5S!o*lcDyxzKz*FX+eF5aX&zB zi&nv&VlAB?m1>XmVaj1v73Hs`-V#^W`x7@j(XAYuRv@RoZf&|MypOJyxC0G{fdPyhS~Rg+8SPMlbmOVvXt-~mGnQ> zRL%xsW;35Qd~s*?aWIW~@i)mokA&J__IMoahhxl1&>8`ukv!dLSa&*acRF@ut%%cj zy^$o0JCRpAUdA%SF@qd?gmd~r^H4~3#k!7;Xa&V4?odyCRObiE|0ryGnSXi_lb&at=|_AN zhVdeKg^cq1P20!XKhbd?I{p*q&2avguCvhfzJu~=M{RP%4v3bROHfGr+fcZjATq>@pN?f`Vbi(t{qtdRq0ILpZK#Vyf{R7Vi)9!W z$;>VgJ=5EEw(n=yHqyS6WO~Po6vv1pN5ZtPEca0U&bvb(bvpYz5!;SYg8p)~(&sGO zwe(`6iKA%&e$BJYW+_u4`4PLBM9Xo$y@?~Q`TJ7Aq-WUN6FmDv?C*a5?rtdjncPW! z@Aqx?rX_F-Wb#ztR#^TH|87?U8IN!ml>P?C2U+POc>QlR^*r9aCW5~0?(ebFPd$~L zC6;<8qCVWZFl@r3wBlJhsr^K?UKr6I0~76r;NS3qdBdSNlD(eolP64K3A&=gGkfDRMsk}-I1`TIHxd<`0D8Ks}>MHs#ahZlLc zm*Ds^ZoLZ2QCbymz-o;D}77r#Ej zuW9%-S37>OIJ%-JXc7)bRqU#AR3&{63_ALEJvLNr4cY4j<-YLd9V47rlqIs0eb(9{&&IXPcXR? zK6mhRx9^vH&$d6>m&kDsJnvTv|8(x-u8}7#FS_PvQQ{re`o4Rm*JHMOFI0w(4|nLKMzV5Q192kjGM1J9?!d71 zBI+^`VF6p2rPQDD&FTAkn`OR+0ng#cli2kz&O89edkWw6ocQ=ufz7iCXm|^l+T&3Emmx zOyAG8?Hv2gam?9{JW`R zl7qZ#+e>itCSKn&4?A;J?t|4odB(@#^)&zYGXIw`L|N70V|A2_@oTt!@1E=YP3yD_ zORXknYRJ#D6vsNt=nm!C`eWfSG&unWPP6q~OuU$WKf{zOu<>fK;yRk&0E3%Y-_3Bm z87?=&@}u&PK8>ZGQ1JOkY&%@7^uo68V$gy7X?roLrDq6@ zVVC}yYWztB*~mU6-_CwE(Pa(%ma(mGXgwcSW@F5B7W*lNeS}Bvv%usOL!ndkJQvU3o0VWfj~!Kgfu`c}4#CHIMfVkGD)FvPPuX zC{_ixJz{=YHC_oqd8S(rI*lRI0xE5w&;d^lcbzXyx$iHp5iZE);I`jY|V2-}XZ zZ-8U+Y`q^}cR2R-fmbi+9SZ60Q14<-XTRF})>_19?$cOHs~&r;sm)MDWGxT3eM*^r zuC2Vx1{$ovfaP>rTG;J4xV^=qM&aGduzQ}aPvgmd=>0EI_6Zm~2FL%(Pw}&-YMUWlPp)+~U_xSzL)SmDkr+l_#z(CN%K38J4wz zRC{_H=+ljcX+89&c|TSauXi-I491#cab^e{j>D#*SoL2y&i7+&8*E=P=Og*Zevaym zzlS=z8#FsZv8`V%{A$D-)KN3l;8vce-77QNE`DzGj5MPYV;5Q7W}Y(7g4k4XbP5a; zBQl0%9Nos)`UbX*hQwwqfOLoD|OsKO?Rcmp~~OauOneL*p{J~l_%#T z#ER4Cn(?S-!|+^4oKG$&`DmMiTN=rodvdHG#K^g}%!o-(#5{kYuz|SZDgtr?cW&ta&bPwgBVOpRx?5t6{&vnOoU;GLI7d z2o+^$>BFk4?b1lJYQY}UFW9N*e`vukccAmZwCcn2AB9uLVa!QTI~`ZfgWOO2iiaxA zZcpa9PU6{4-0#_j^8Q1}Al~gL-mO3H)>|w+L`3N-mUd#XZA6*oFl`9W+OVvmUdlOg zj~r;5{^bqE>#Q=S;yZ1?MN0e?rX`9^WtXwZ5Afh!TgKtW+faMcx6wHE8a}-u7QW0f z(?WPzoO}g_ufp&(UTie1-h}1b{*U*265Kwt{}abebNnpl&2#=@XMWF8*Ql3`?zA0# z``o>P_YPJQ)$1x*6SdlsmA2pCBi;l5dW&TJi$1V6?5Q*4y3?*Vd|)C1$KM}wJ>iI-{r<5D3=aIGwAT--S^8l6{zfjkGs<~fz7Q9!fw(ED^$X*lW zzZbO@vzmE)@+`i2n#k}8@BE=HlX#=?EN(3A-(tUS*jkF;M3{{y??7a%ZEwTwZOFXs zGZuF5z%Ju_Cpha}XXmLwMl7eTn^kZ#T7I^^y?L0Pr!MJJSgt2zjo7(CX0#3GcB$bK z5uiMMs?e(zle)LJspi(yL%lu*=AeL5@8NHvOHORc?F2rn_q%1e-*gM4e{pqyb-0 zOMA46@?>1;9<7!id6M)?t|>HFLYswk1g-A#`H7Bx4nZ` zV_Dl+RvF0{t8rw4ZSUHb=sDT3pEzf#Jzu!Sm$rTl%Wquyds|jRbc4HYgW_&|1!c4Z zD(O|IAy(BZVpe4s)udAczN;B*TEnCh)S~gBH17j}jA1z%DrsM3R@iVBcp^*8=M*xM zq^J8d`%ZPtsg4@yocOTaPCec6VEA=bg0}oZ3ngk)MA5BS zwq6~tg5!5ZTXX~5R$<0>bj^r@c~~*Iu33Vo%y~ilv?Kp>LjCpKZD_P5j8E)WI2m4?>jtSDI%=H{Vj5|o$Mh` z)hZ};RX(LQ)EYvqInK0(Ux$J*N8-w$f=TJO><^ouF%Wvm#u8(XBSZZTu0soahuU_m z&mhMf>DYd1;V^Y@2+X?p*0H!lH`sMnYq8Xpuxkpt2K%wA3cJjTD-pAHDg8FsZG=`b z+!e4}3a!k5oR3Ri;?+!eOo!IzkogowQ^-f;L%%jDB`nK8qcDV08EG&kZ=3&sq#HzR|>pdpSLf}4?JNwV0%whgo|&kP1QwjZQ=J2&mk?(UG5KqocT z)?Hhwr>x-A0CKg|T~+0%z-CK~VGW{w2B2Sr{8xN@hwdkLuvsW z=fmJDsLX}s9JrKvwFz+eU&*#PcpA%`3%z-`_BGTN!R;H!FSTcxEvx+c!5udEwgtlSXr%x+-wWVM5jK0ykn;aoe%@1K|vEiPqx7U8j z_nx*LYF`h>9PHSx&N=Y^2dmtpfjiZ4#~SXPGL-X4nRY4LHf7uhp|$FJB~9||wzvkp$1#p><*TLWd3D)m^+r*=`|MoQkor;Sf1T3)V{}5BBxaw!FK101^jAq71reAFdo~=-#ABsMX z$|8I%{v-W>&6T>Xav!Mt-RV)9r?rMn2M8Ppk#0QJA^iJce0^W7q`d7hy}B90Jy7;K z$p67I-DB)KMqC&yP9zot)uW&tzt-R9a98N<9zAh4{Tp2iuT~$L)iJxglI+o9*(&>9 zD`qW|t1S{0=JF@gWlK|FnKymBLx(r$l9ej*T;yqZKFQi1qwmAC&&c|}Ln6;l9(2}& zkoh}&Gsh?WA&-$KZF}0jJjs8}v2QtNf^$p9V5RLg-&Gg7!?!#`o{X*(n||PDGkRfb z(XML6E;_@n2Ob{IuMA`}LwTB$G2#q9=R9n@m|mAb_m{BzHLb6fN#t3;bu96E7+eq6 z>saSC=|)yixK$5Oe*@2kmG z_Wc?rmplIF&b!q47rD;4MP1Z)y*hZD5!Kb$bY%!vP!nkvmng?>(S3(g>WkE75|=IOL62|T=@p~GGc2H{1(A)p&r|XuvrMBMX+0}^}bji+qe25m-xTb z@2qFCT&r{?F0O|6TIa2I{wCMi;(9-_>7A^34-S@?EmBtBXhk`96;Zvq7D6p~NZleg zFE4V|pkD)ewxDzS!jjs-Fj+`PJnW2z2eQ9|aHk8q>;lIw@aUq?`yhNgQ0u-koI2rJ z2hz^(HnwL(VMgjV(OPYYd-d3IEqty9yGrUNBPUAmZ?|VI+x0JR(Z<`L&GLhi?+z+@(V z&L(qxPoHLZwnRRhUXN9L;5vNUqvuxM73^WMh_aM2kbB$$SC*2*;GFmX5?Ph1snj!WWxRF-oMCcPqyb2+K&_sPIYdc zaGl1MPladtHBW)z$t?0jjLOPo$GOX3{5}eH{c)|g5*z}zE;!avX5L!qG9RJ7wsTfI ztHjf#M|>xow!mW@AGHD-mOv}3AEZYy^GLG_<;O*SHrCeCc4z5Ghw*Tk2+K(@O0Qdb z;yxi${r=;1PqcCtV?T0`%{cdSh4TofU9#4efi7-477AL@Qm_5h)mj3R+%GxF+b807iZGvqn)0(r@{SE2a2D~*BT zc#$HE{kULo#+!bH+okQ*e|>NRSYv*tUav zOL#VeS_4-Kw=;6GLgC%g6H{NrDjj*cy6DmUkq6rVo0YK1$od7anFE_-Zdpt21G-Q2 zd57kuJ#QIp^$rUh#~R1$Cz=SaNpK5}ACXV}o@VMi*@N{)O?{21K?RdJbJY6qi1_tmc$EfKOXmKiAIfvi52m>#}z{_#*N*Z4a z$KUXFH)7w-nDkqy{1%qKh4{@dxRC{BoJYnR{R%cehyEpadOkVB_mgcq&c37k?G5{G z&Pi`e`pE0JRwdWmYmVF&qZn4}IsH~|)?8k0n%e%5PZ_85qxqN@_?mz7bdT_K576#z zG4YRZ{5?M2!m@6H`Pwv zGDfC_`z|Dt5ziD$7GUNwe>XsN7ynnDcdI3`HWeY-DRDQxr4Q>Jh=0RaPu8nCPtI^D zTfQ6*ui@=($)3?+5kF4)6yxw2MfP3)r9_+e@HQ&vb-G!rnhR~hlcLm11;o4gr z90t=~>ZK<}9s`CY%W`BqGTCkT&IWceJD;#ct=l}4RHv7J6!Sm*}+ETb(~ z!E!mP{EpsP`+RYc-#!kzM{)5Hx<6dVT;J2ynCof6S2#Qm-!kK20gGKIVtm8fEy26w ziz_g2HT2dxVxz5F+$FsYyZy~wHmX*Mc zW4puf<3w^Yy)$<! zt)$mG`CZzz(@EYtF^gohLV8dZI(7-{mpNj!y%}|qdE7hf*$ersQBfJA60b6^yRp)> zUw!4Gg*uFT&;DBk5u zn$Dng5GfspI+@?jDAJ5Pc$fdrIKc_LQ*w;t8WYJRlIJZSV&BKMe`^1^$>NP=kLkV2GS?av(d9J@1Pjt4N;|$*aR91H~%NHi+Hu=taiO4cgR)Bcuz$&k*Gn*+e-DWNdJ*lKBk)4J;w}=h2CNQy%_p~ zH%4sT_Y*eqbMfHUEcH69NDTNN9Jvj1ZinTa5WbUz{sFpo!r%_5{T_<9^71#s?l(Ms zRwlaK6@JQ-UEtT5EyUvlU8SEzWV}lRy zQV-xxX2jf&OZUR_Zmq08V`^4$xD|R?uP&=qWTaQttT@}>5xAQ1|OE51o)oSEad!}iajNoF67 zm#qF9(PuS_->Po*@f%g-#P#&pw18Pht^V$Ey1sB5$O|5?^>qp_cow_9KxU9Nyni8< z{z|O7nx@x@f4{-W8+rB{VR<7DcmofY*;?1~0$1^ISBR2X$2zTvyu&f0B1YIA&p6O= z{TzRY^D^!vPrMql>{?<@#yjj)s;xy!zk!m~fng1$EzL!;p2P&cdkpTyo?qk}pMl-K zd8^0a_Xx{-2xI<%kAJ6itnu%>{XfLkhp_1p-v4p(Bzc;=Kwh=|P5Vpdbu1DyzQMgE zJYME1wwPE?{A?grHs-OK zVpTI%mVTxKVA2w{nU&hg_g1#Gvagk6TJC34b2i%)D;wcjR@ttLZ#AJ?O&qCI+%GZp z0RAH5E@~@N#?h1&Q+KQBt;)S#OikbaQu;5VW9c}N%*9LZ_ZPhT3>=v*R^&<7G;EoM zHPc}`1B1RGv&bC3^L+nn`xjx;x7hSOHm!9257@NP8CxB>(^31}DSd&JWxF+bw2Z%N z%s01S6InB*qxwCF2Hl~PnX#o$nwvwc6%E@$Ep7YsC>?|;U5f}Z%+bT?Jd7MqG7@Wu zSdiy7N6X*_;80&z?!~gx&zqRq9?~tL-URyfWIEN=NCh>sPm5|hjIuuXYB((w+ZHJO zmxUJV*x8ywv&6r*X_@z;zCz;{p!h5#{s-MJ<*p?5?_4n)hbaRi6#iZDW?uRK2&LLq?*uqHP;? zlX(j5cY&s@OfEH+l#$oG0;LT#2=oj0qZ zrB;D;mchWi`_9IoQ!(g7$Q-BMj#jF}+1?@A0SB?aHpa{}WrJx6RuNaz|FxZ+tjB@$ z8f6r3o9xCOx1<{E!knp?BzMImb&%^*Wz5&J3#$M5)jB9VwO$)`A|w>kg9% zoJgY)qS{DoI}NI*L*sNHE`kB8$BcnpMLMg;bOS9;64?Dupn zMc2k!4|PaY-^&@FwA(upx9+=+#a-pDSHS9LaQX?1&NDjv3~kVpt(bM3sDG5`-^a>X z2YYKoM;f%?|Ld1LE-QGHKYIi-9>SDl4G%%&VOTyYV|^T7{>9>+VufkBXExd>o^A{* zCphv0vGP-SM@H7qldYr&c$H|fk?i!nY{}iC%->ky{o>`{wU-_iiJs7Ye_G6Z0bZkE z^){T|-FK!4b)J=aE*3{G6BB;Pf`0|aEAjGbyu3ype=Y5=#ina`?5kMmuVHyPkCc(* zm$1jIwQx2xGwUNQ_+$M#60W`NIT%MfikkIK0>HSCM^te8fFyTR3-3z~aWTk)QmH&b@e}Um&AaECJyqjJB4UYHo zW&gmuN3bw&Ph?mpU@N9gWzi%Ym&Xhf!tDS!VtuE&IE@fRm#g@xh+|O9wW%7`p@=lk+ z@M4yGA%Ar)9M9wrPsO^EGvJqFVU@v}#} z>k;nWPbvC{>^=4Fc2~MCO4(6q+bZ<|VrLVxnd`%~CXK4ltUPXJMburmwT*0q$`9~K zZ`${~;J0vE$fD=NYA#03hSyAXJfrwKmp@ww-z8)@DUAr9sg2M1*J;>2ouA8U^s~jN zFU8DxYHxv(Eap{~%8Ifo)GD>RR%tiNmbR$v?dDqSmXDOk9?HrUDng|SsqTACQpfg; zQ_4umMv!X)qm1`x&R&~qd1O>;3kc_#MGJeI!>k$fo4P_1xHVEE4Mc-_B6uCOR11DJ zWItIGC$Xy{95W87EKZj2DtobMHw1R#$aa!Z4_ip)W^eR+gMI5o$aRie$AZ_27a60l z7J}>ewsoS-dcQXKY;tDSV9OKRAH|^^?y}1r)0105yD}nuN>@QiD=T?bF(7k>lO5H; znDp@07xNn8L}U6kAx%kEp>A$lbNgDb&WwZ)4tbK_Ts&yzS5u$#S2T8yhVE70)$2mH zw!7BE)atlYMGa)-o$|2Ah_Su&$WxZ>^xKL7Sr>U7dnq09k+DFZs{JXB$ei`eRLeM* ztd#JPqtc6=nSY=1XH#(^?bVqiBVp!|MYb)mXSqFTp>L2$BpwIpi~`FlPgO;t+G?eN z5|ut-*(wI?#G8FQYB`x?Wj-dO7qiM_Bc8pvp2F5eq&yZH$reh-to8Q4pWjEYs-sy~ ztSnEAk1MP$qXT;tdB$*94ujt?xX0#>gV-^yK1fX*Rj{!H`*yLhtxB-2m_^kNn_Ftl zH4y{qiSX66@G7#s5^-RsoT+rC?O1FW!={pNW=*Ei^d1GBQ6go=zvo%}8;;16_q?q& zqq5R&f1mH4EUzf-`+f#W&p_x|_&p~}eSyz<33jhy=IdhT7@SJ)=OoOY?D@rK{Qnp1 zZEn%a+zq>X!m=;c9|6ZfcsB%w!|))heT=}kJY&l9rqfy18Ia8?0P*MuiBu=WWYf0D<0%GIBR;Y%=ljqiUG_r~Gg zBsuoSeAZMYo2|CL=Bt*-Jy!9y8$|c*wAiQBTv6Ps0hjtTYzD735b7kaKbYpdNJfPp zNe0_?oPEO`ld)|hWOJpX+=fATh^+(35&JWhL!sT(F`0SW8vae4ThBF0x!6zb9mZ~Z zsLd{Nw|LZ6tfrZW)Ie!#i2+scuq+<#q5pO`Y=TnhxQ5X*e-(>f=D}Wq#*3`;MVx$* zUB1L}UuMC1wikY86~@f!&ZyIO$p=1DY|ps*nU0(5_=V0}%HH!1*z~r=OYVYji4s** z%Qe_>J=|*ox0XCjJJ=n_*JsVNp4yvz@UXv}?I`|k5G{}8r-owBFgAUH>>&u8#G{?e zvz-Kyli+(IZ#SHsA79vdM&%#Kx-&vIErYDR&`E^tz&Ez{w=F(qWtopuF%m2^htEXbeCv15#YkQxD@4|6B&z0w!Zx^<`ob4|A zzhsQxZ}V{PknxVoTaVv&&Sd9KagEPiD|2gRLu($6=Z#NG+%LX2J~*=@wn1-~dMr`v z<(0aMSWrWmw>6VL{OQDr$nUTBcVa<9L zvqg*WV0sZPR?>7C`HtUDzL5E3@&5~@6GDzn8Z zn3A<;sulJ$7^Z`19vMWACP$I1BbCgfkNv$!o)UK>ot@X-`FVcQ%=H=;u{0ya%DYQB zcP*pVO5jz3?|YRteciigvy*PYD1EDWmK;`X#fXeL+QN@*!IaGyvl(+Xv%1X~wdMcF z7{{ee`Hpk*tS)WK_g!-`)_md~Q!(}n_xzI8e_hl|GMe;sS5=Pc5XzH^ME$z5p^U(5 z$kx(c&bYj0Sd`VwGh-*?+p|V&n9>p!E#cCVhdO{&9>D4{ORX6zY)Trl%7&!A?{!&a zE&FS*%BuWTCGoR7uT}!fz1o($WO+aGSzEN^^4|13_g}5vmdj1E(&V@7Z;`tFnnv?z zoB2$0)PF|lX2f2`gignm>2#gOil*~J(|NZUaQgx_GhsEG$NEw%$T}+X$wHniqiL4< zzMMx}ZQokQY=rMtSnh=7Ue_qYQzmj(- z?>S7JXJwgwY-j-Vj$~s;@lWZY$mr4Zc@1QJN85Xpzsc?U!|`x9_Tk-n!LbL-y1_1^ zY2w}D>6+Wt2#$5(SObogdBn2nV6T|DT`O+0Tz{=-zLE$1jwf9N%XzGHHvd1Pi2Suh zu4*)@P?9IQ6KOfV&~`m$Wkyft@_kDdkgsf;1-SUZ+cn6l_*x@)E*W)0y z(81Q$q;#CZ5x95+8y&zV`@^mu?2`TTcK4p*Wev@Z2Z_qGV)@YVDiq@lXb2Jb4I{*JBer9guJMf$UrHszaIKMm>4pV2sbuJ_` z#&-!>Vb5B!nPk*q3Eowd{bUW_y7<>b`>Cbet-Tse=`#Pk7ax1L_S2DakU>g6MC~8X z3l4|lNf?pLY6J^Ag{G&l@l#k{o{MH|)k(Zq)(k$Ll@5VxR{cB@%MOQaFNk%AZ{lPk zW%`~P^Za!SKbJLtI;)+|a*fXJ(#ah=s=*FQ(O!w#vXa(nxusIKphYtbXpD0WaIRjF zMZGQhzXiiL+4dU+j%5oh-(Yob@`_`4v9UbbIQ-12?C-J655>mxGkuO>Gaxlb%*?p? zJSofy(OF?TBVsoDyWKH+9a|O-nJHI84QCc>BevQMzgod1`9{_;JP6mii4NVxw2UI? zMYF@$a@GazLozO;RLc6D@l;tQwJfHU6&K6GsjQr=EUd~vs0@!;272j_%^1Io-cRdt zFaNPeUG7ny-89b1oV)nuowVJdygO*RUF6Sm+8=4~BNlDr<+kBP*6-XZ)@4=7t?X2VF3Myl_ZYW`OxRqU%oDmpHs zF3UN$tZS6GR%X-eRU>n3I2NSENTo^7r7E#o88f-Y@I zr$xQg_HRgL*M1GZdFp?zqvt>-W3!T}eF2Rbt~LYSGaxX-9cH-G7w$Nd=CkqROZD@W ztZzOazkr`wjIm2Zq3>D#3i*EKc6Q>-~gZW zJhb;KW3lp{l5URZ0pYwc@G#i+VUb~1KUeGTs{LJkfV*T=O@DXo@9zDIHqp0y)I#i> zU$l)5R_ZP^=*%m$XJ@T>i5A656ra#w3S6habc#BjLgQotpW?@7keLdt(iZkI{yWb$ zGG8d;%I4tF7kHC36+eaa$MF0RhVNriV&S{4Hqlily848|nw#3zQk$q9>+a0TyB5zg zKT*ohMWY!?KZ|ericep_KYgQZ^gX}6il55cX}6FaWS`&VWCfLrY-=FS9SN<>J4=q* zi|^?HyRI_OP9khp>C4=WrjDrZ$gI6yMMN#ngY7FK$1$!v7=DA@X^=Y}?aoK>=>ydA z;cC3MDAW^H-TCz{O5I86+ZLKkP~+p^_YOA1$B$(vV{tJVL4478ESrdblUU^Y(3;G9 zXMLuuaGNLavmyMIEeq`V))C)3a+Na@6F0lUcF|xDDO0p$$H8)fJ56-QN&NcqhBC}~zPsHya69n^zg<}x*+VG}motngSha4V}uG{n3n5KKENW1ZWI zg8Af)a|e=xNLSL$wo+;De>>9F_BJrjv&_tO%nHL<0i~(EjqS;*BK2*l>-x3*s;SO0 z)+1|3SK>!1_*)k8X)#cOF1xWW>yPDad|UA-^I)`2>21uM$_9>3L`a;> zY7?1@n$=F4x_UErY36R}>&t3-85P_V^O~~kCfL`6cg(EhMx-H2&r{;G8nP~N9a5WQ zwXe+TNZYikbE?p$QqfY(EW1R*tS7sbmKhzDIhC1rl(p3|`?Hc5S=HVeN>ay>^_8ZP zj3T4=TJU16l&Y;#wI>~2wKF+L3A>VRwjTSXyW=A1E9^$PxW<95)yXw8&pNA) zX54dg_iO@z`tF~V5z-%9sVGyjhA?7}`pPrtz3OwH+Am>+CHzFz3rl-1&lc0?UPfdn zBMOw&i&j=XUY4&Z%iERXcgpcUU6TZe$0|TCFwm%y!?_K z%_o`fpMIQ`g-z8`^4dySM?Kb6uXWXPJ-p5vh10(hi)zRg8nKT?GN;BoQ#@5;nS0*I z)41?KS)V9be%d-|LymCnDTUPczndTdqnZc${lH6=J`=(6%4XxpyLKYK6CYsQVT~yYJh9@bG590m)LqJU)UY?U0|Jc z-P*%8YrJKiRAX4yQ`4DoA8SfaUKvc-OXr<1*v9j2hGi}d!y%~=y1NMKa2;^G`%}VVAm1Y zTN+CnK&By7!`3D+YYMafeZG{Qk^lSoQVX@z!WCM$T64HHcb8`F)|6MvI~JP2uCZEf zsDzp4Q0lF|Wi<=c`h1r36^oj~x@OTP&)BE4z&tQaho$17;b~@FR9@!@;fmd1jMs<}EhCZc`COGS7V%*(a8iRjTx!WnOQdfaNWw z^+_WV-{?aRs=KRPyZce0wqj>0P2 zK%}Mm2&*#tKWo6$Q#ZAtRfA-Onu??x=9T!nhyFX+Zu&p7*7kb1{J>&X!6-8_zEkpV z3$IiSmepZd9hO;PJ$Po^P)(TDCq{bS^lSgytEZi%el2=tXU%@{ZBPryQX{8 zaIYG8U!AtG(zIEs(ja}YStqoTPeuNy0v5&p<=I_YJY@<796-0$bZkqL4$kUCo3x;_ zmTedK1gEaNR4Hzo{Z23b#v(d&rfnzEK^?SHg4U!ZX%2zRgUY;=dZaeV>Iqftt4PX` z60(Oq?j-+hNo`c$S>~oq<6CPdFL*iN{{Ydk~w}^ z>$bF4F;C|fsgJA;@~yjP?$|Pztx%%X{O(#z+JNtgor!DPF)B5mcN&!8amw>Am1Inr z<6eVrtIZSDBMn(sW74d!vi6Q_=csm$YU|Uc_|?A1&oX*8YbE5!Cbnly>IROe=lI&r zt7&gFdow$xqU+`@xFz=Nf!9tYPD^+ThHc=@*3xh_yI8@3(&}CUoy8Da$ad!2^OZfB zPd%GwOD6jT%%<}~S*3MqA?eF5mD1mf?aN5Aw6Bu+W{&qVR=NU`tDu}-jP>rbv9Qur zP|urs6Wf!Q>`;$;)Mpv^RDe%a<*vy$*P%n^X=l`Vp5CinJlgH?w*~+Mbn_5rOe~$1f>q{+741}lpt%g=bZq_%+ixm z4?AmPWo)7ff0hyXWyOT7?3euU$AVLtZN8L-OL?EAwk|C`i~U^)hxv}l{D}DV+3=VN zk33PH;fxtLI^EgR;h%V!{_(WuXYq7-AL&>78Mx4$zfpfnl_GiGD$I*5Y{0xNnD@VV zeq;8S6#<&jvKb6BgSymXH}*fz#Sb8@ZO@bPu&I;dJ45$C`28<-_5KfTU0kIL+%muK zKpgG_w+?Vi&p;cvm5yQD4YQpv+paX*c-AdSxQYMBx-eNqA^kGR;?~e?H4W46v$F8l z8)34ZWX$(!|5uXC{rbK@GgtXhLz;ZQ~#Y#B*@`VoOy?b=cG-wehPC ze$~UTQeM`xrEamO363>&RK{JDqMzp^S)1>_eM7l&GM;^KN;Js)vCI(oQ7vv$o28h= z_f}K0RbZA`0~M6I94Ui;$>}nhFVBK@ksV|^*#@7iw2+luvXa0Cvd$;pvL$=+UYb=n zwi3r;_bXtw9A77koivJ8 z`$&4g(&ov!XL&zEde^GKtUA=v8mtYoQtM9kT+^OBm8k~HDkP%wyKcy=rF{ z+;+HnR>Rxsj%nd;gx!WBk|$rQ37_gpTeXOpD+>)O&?Fj_B_;bMZxGEoF1sL7is2fl zWUk>lD6KCthfOfs=vUq@l=TtT7x87cBlf~IF(>0s%ag>R)KnExO|2!j_%BZ3TC(zF zl=b1&0A8gUl=3bt2yP8%m{B^(iL;_iVrw1vWrjpeh}6Kv>bO`HN?E}oTS}vF+M;>7 zm8_z+tJHC|I<8trjb!$9p7UlswTzn0T<4lflHTI#`|UGN$tsgdYBo7Xd6G=249Szc ztT~c?%6RLYFv*Gg8mN3m-?;D)`{;*?@9buY_Sxd|6;SQsP)u-Sg@PyB#CC> zPFB)L=8>M(n={Lx;>9qV3wOYZeHN3JmSZmt0rg>{9B;#lWnU*j*poj%^`ThF5 zQbtB)1=y_Vm~~vT`ci41cU4CuuTRS?ZK8ehnB+29S$`WpznPcZpd>%QZx!rHpJUeL zb!%%UWsZ1tE%d7Lr^<5EigMHPa?i}WPm6t@2$!`Jc99*vC*oyH^=8p=lPH-Lit={f zwMEvj2!`MCUFq*xMpm)fAK;mYkyUZx%XZnemy}VOMCe57`1<7c4Y0V0TFl($mTI>x zYe;^ccl~w2f^MuPPsxO83#u<(^@UC!yvlfi-Vo~rw?jz}*d0tV zE-ewX18M7bMq@W4jeP1kKC4<)b8enBWd8C#CEJDJ8GjLuWh`DwofXUSzL;;|wGdwO z;gvNy@(#P17?ZU+^4^NiY5gh8GB#rh%%;HXV~AvYMV_!_y}GO+_8IK5?%y={WeuxY z(Wn}@G zJyxN}47$RuJM1!+A~V^0!7sC>^Q^cJy)&~t80O6yy~$w(mRT*JAuO}jSTeVUu9bd( ztjUzwn)T!>=}D|(OIDHr51-r{$j*Q)f`S|k01&JlprF4Ixv6&0s=ZJ zio>daq9BT*fGCR&f`DuyyArk#$VR%;OFEtU=6%1@HQj-E=9&NIAMSbT)~$Q1es%Wm zoKtuIch8-B_YNr?xci6qI%59u8%#pDd_vQIw z^*}43u0iU~-5~ZA9z9RqytW;h2u*_AkB7vUM_=+LR%c$3mqSaTWzegTnCigu18`S~y6r++@0_n?cQtD)PVe?XomZ($cpM-wRy^dETd>+tVFsLN&44quR6jX!Wsb-|7R^M%BjEW9hND)B2npB-som|~j-Cey@Evg=`o~XVLZBxCa zx-4B*GR)!mu>5%aSbbD|WW8~{QQcm*)tl9u*2mQI3$OF?yn=T@`fi$Cy{S5@I=i~B z`b+g(^?dc`>YnQK>Wpe;HLLng`cA<+Hh(rRt(Vki)@Rgv)qB+2*4xy3*K_N0>a*(= z&~aGDj3s|#t8vxQ)iKpI)z7Nit2?TztDja!R!3E>)u>9{ngPF@zl2n|{y}{ivVN-G zuim$w$EU06E9=%gGM@yAcUt-i7U)a+S0Aj-t-euRR{gL#hfnWEhn=Y_osv#fed+Z4 z)jTD4$0Fw$e7d#%UA<18me0g*JnxI?OX&sdx>L1Fb!_$d>NMn>Uwy86 zd$nV=AU&T>NGEbumCnUiHpv_1hwBIGOY4j3^N{oM`r`W0`r&%>ylMUh-eea4Y&teQ zk{(SPSDRHIsy8(6XGyjR*gote%_H>caulW75-vm`ym{d>yVA+{?9bBm>E84pp7T_?kNtHVpMtmV zNp6(CKjho<*YMeo<`Kx!k14cquyHZ%mD^$ngny z`>tuXg7+u#-#7C4WQ9+{(Ol%*rR)#Ohw|-t`HztL`{%SHK6_019=Yy%Jmi-2`}E87 zt8#n{zPvM}J?_bW#%I4vR+tY*2jqS7d-4a_AH(ql&|Q%B-9GJr&(2HdrSsE|@DTH} z`}3hA`F;*0-uhd?Jn7xDc)tanyL+p-oNoDNA}O{b@epevw@ z*`LAjC-LrfujJG6XP{5!PvJkG!A7Uy$yac<2MXR+X`6H)Ui)R} zo6vhhKxcCz_eXQQFTcE*^-{bi^OJb=jrsd%>&$#MYuZ=K{z8s#;Frhp69sRR zv0h|pW}sEcn&p=KyL>s?Iv+02A|JZHjN_a6kW7ndqOW^53-Y>~N;P~f! ze*29;(thab5G;BaKH`2qGQm#xy49O_&*v9GyEp$5U0n%Jm-BuV`(Kd> z?#BD9z2t8_>byDl*n82{LGbi(-ralrc51BksM&nIKn-~>K6WEIyapbB3}^CsGspU# z^`+;nOMUe=d~7Z{+#eo4oIU_=`=Gnsi|@^(I`p-Wdh7w}vfrbt>*4V_IQtdo>hvMJ zWf3){>*~z3PTCe9+Z`S51M0q|Qk$FJi59lPTdaRwS6`y8eHgF!15)1z>aRi(@m{9>ev}&bE~NWCD7V1pZS3#i z_zAvWnwJ#3>C~rN;1hG;ayL-k1@b%DZ;!N_^8I9L=**dmsc4^|uDus7{|L(MAd7ZC z$4}!c*7_A^PNg^43@g43E_Vjy9U$+-ep@0<-|PTUyrpysPh-OeknJws@67j+!9@ET zcUeG91yE*0A*OLwR}y6C4CVdH1u^kd$x2kk%&++~bc>FukFJN!nEaN_XAhv+l zPQNz|9m&lG@VFt;+r7=?xP$wQ2GLG=CH>%HwEiOR&%)!gAU)6iWsdDJ`$4o*7H=wA zpT+y^(i6@EaYm6n@W~il!f_Yh+iBY=w}Ceqov*|DEI6G7 z(hT;>+Rpc_Aj)44=P&2VSCDQIJh_Rctld~+07Ut-3!lVwQ;|;nufryqeYL&1Q-zv5 z-V5Fe@RoAD`d?f)v!7mp=6Xth?mFYNU;>;>=K87NxXIf@zP0zYe|KHz1Fs7{mV;nt zE@$$#0$F>wn==X51^aJ%VEGZpZ8E$D-dMOBi4+-quPQz!KjJjqzC4TPl*2r3zpq@* z48(EMu1*lfp^XO5DT#9e`H@F4RY+&!^KfjZD=F#nt4PoXk7(o8A!`H zS^?KiIQk2JiSt_vAL_6J%*kaN51w3);cm(+-T-p-aeX(uX_v0DH&3iw3vUE?qq%+@ zSnb%O9UZFAalEVDk!VG{HQ@Dw*9%TJ_UHz)8yjO_~iI;OLch@V7gvnq|1!oG|BtEzEUGP^W&knqP z@cO`t?NyM5<0;KJDzXV&+riaS3ZG-Z(~pMm)_~WG%tqGo!ed{-4ZPK$Tixdpb7R0W zvL+QCjXz^%RQb-|^m}8@YgU4{0{O&rGZS?2oxgccV{UZOp)$9^qkN7k@{dOk;#r@n z>wY-sMo;o6j@t@8ck!LPhee!WwG7Ja(+>I6KCSTQtjyV<7S_hhoLAZ0n+*a_ zDYUUVY$?}^)8Mu9c`Rrn`OVks@#HV$jR+o&rw$wb8hQU`yiWL$x8;K}tH0OdwP54_ z3tnC16|d1@gQt%whx$=Z@)zCVk+!Hkb!TfoI(5*J6dwG&Xi-YZf#Qu8kKuY<#8$RY@w4 z%nNJdY3J~n7C!lM#%rGO`tZL7uao=qaKF_BFJ{JO&++g!aWFo_n^5i}|AA*-?**$1 z$;}O66Xln0`PcW2fmU?rY}VWr@z&tA0X3SlTFTVem9ZZmUK?)(cur7Pfmeg4L{70? zKb`8T!|-eEq`kbW5gPMx*W=DX{+9FItKfCi7^#kfhs@ZyPp^}>+6#-DMMQZKR&WWCGz|7floGfdvVvjQ9oZ>`)} zjhpRUo2=o&zQ#-DxB_nkczT0tqt)41^ksh59>!nAan57QT~`$j`az3XelK|XOyI4A zx4xp4(M99261x_=erV&sYsU^_idOoH#$#pgM&6#+;jIGCv(2cZ@fOL-#q}usui~3J zk1kd-LS4PBZdW2>H+agdKWC0w$l!-tRCqK#v~7(>^n9~iH$E0mKLSsg z1J4R|bo3`g=H@z9(KQcv^1&zFvzLYly!0db}b2#(--)zZP$}yz0*yWT5y; z54P=xKdm<;Z==7khrZW_uZ-r*7Wh+tuHe>Mop2iVT?3{y_6Y1dinGTSE~0X4?5j_Y zK#vI?J)<8lZR~4z&vQZEjggu3C!!h0JQ%%;qX)w_)89 z`9Qp>gFH?sR$H?cUdX$e+HHWXkvU>`4RSYl=9kI%%2Z?)Z%WZ&&f~c2$p7Xq^2;)K zTmp}a3y+Duw!$XngoeM!&y&HN2IjOunJ2-Yej}c%rqA0t*_QEnF_?=7d3+T;b{8qE zV&eIw`M_Fr8pmQz1yjEfPj7Hl@53VIgJo=sITCXTJO-X|BA!n}^}jao+Q1q|&t!jR z9*n%8&$vqT6@Old9ae(XL+{mB;XT~s#TLIX88E^Iso$%KQo_t#STMt@$ zx`qVaco6O2?2D%tTzd)qNDW(|=zZOwb#lGWNLPT@Rpi#*uA9-l#tPgHo;{MYnYHm+ zz_VL7<{~55&n+pK!|`hH?AAwPO*8a(^gj_D%A>vP+WZBcIiU-Cc48A{UI}i<+wd27 zKBKlj8V{a2Yy;0{x{(Wmzkc}Z1#cyI+C<&iGey1$JS#lcU@h$W(FUGaz8Zy3Ftm9$lDSi~B^HCVZg z7j+Q5SM*BSPYat9f=988=Xf&j{}HUm)X&Irtr!!F+)*!B*VqeN8(X#6PkOC2hnQ~m z!RA?OSYHjE*IILo2hYtlz&vZO-r!kB+Yeh;iYb=z>*+B|u&OkkMsTfOXn*MnZ-y{# zNTqTweg(u zm~8@U44j#NoW)q*1%D0R5SHDEb%YgfCc|it5n$-m&3{8YvZK-SMwIA{3~m47y5#I2 zJ`M26j>3O?M1>mmRXXuR^poqT9g2ABE><|N*4F|nI_gze)ipI_jTJ<08Z0fN7rWkD zhlTE(b!bI7^WQ5*M08u$o5S%UK4R4r%eu?j(E8OiI_47kL;R;k-n6n2W-X%b)^JzP zRzqrC&rr_5leb1zV@S`Bid<>KBJySgMz{4^JUt^U61+9CHoB9GhQFv~!VdCg=i!oI}t4RzvoD z(N~KphrT!b>79CM;JG5zXiZGDsm1j>ZQI~w>L*vY7B=}bxB5RUwP9Q+?{K{6{f!9i z9n+UJ#rHfr_!Cba&4YHZ=1;SZ(PN&nH&b4*+>~2;+vl6{Jj*+)@sL-UwL(Og{~I$y z#XKisqp?X~4dICf2(KpAjQ9r2&sH@47HD?+G2<|PwR5w1?7bR1{n_ix2V%tLaeUw4 zd46DutM+5>XLX^pG2Ku@!Aqn4ut1Fkj51L|KfcS0*Bc3L`etZNu0r49$)}q44A0c| zZVeYA`Aj>|y@O|mWDyZcX5?x`-^Fv2C%Fizw4nargwOa5{?^6|obWH-%~jesbT)*S z2YpMl@Y;y_&|SzHnwKwEn7|6#x*l0G)nCfxh=$O*5=K?8 z59`auh`pNCxxGe%7v3LO_5;yl^l?|~(8wriOb+!qyRGO4#(`nqVjXJ4sz)slaS`(d z`+**Q?PXh4&I&DQQ*|a^_PEyX;yEj@4)xAzU3-ex2f973{eYW&kaBxheN$VyDvaS8 zdlm5l)80xwMr`P(W=fyvh-dxo<`XFALB@%Gsh`S2;Mw!}JjrK3&RZh(qM}lh!As!T z_u20{Gca$3?ezuy)+aj7f5fro9uMd3*vi?YRfbyDZ=<8Gz_HiO)Mw7OovXQmM9wmD zVj>}yy>1KJ2sZlz=f&YuYDYaOpM0%=FK1xU>pR2q36lPx-tG96vnqJbz{GQA9{eQUv<_Iu8j>Opy(MFgJfo_I#JKBx`a z!5a^M&N-dMDsR+%QM@1GLm90$tP+$qGKD^4+`10Qk2tRA)-a+)4$`~SwlSpp9~sI6R;n!2ySvr>sV&Fa>AsHv^YZ)ThZ&viHWl0!A82BO|DcLsk}D%J*p;L`nXPjq&o-Y*QH|>@PCD(%Bm0=aoS&I%MARZihMwrO&Zsf_m=zm5?J1t#(g~i? zXG9y_X0X7sW^qOtQ}&3uz>A4u;8{s&)0i0hgvO}LVCv~+?Wi}bS+s_onv*&^{ARi< zUUd4#fHt)&ifOwOqM>QA5=5;LovNLs-L6l$V!{^FVkL+iZH4Ph@m02X5*Jgkm}ct* z>Q3*qyYk7PPY8XgC#HII?qL*ZTYb(+ginHGLRf)5GM%=gB@r_kZL5&)dn66UDA#Tk~Gb z!=1TIW%J(+Gx%;gcvHZ0+9_Tt|B>*SbUZzO8O%kXybPWbzy?nbQ&Y}Ie6l}-&oi;Y z4D{e6Y{DR(9_I5|pU3-z|0Qr2^4%i7brR5RwoGfzW#my>~%6f)o`|5JeOlR&3Y{*b9mkQIw7}=^(vB z=)H!Lgpd$O0!j9i|L-1r&vmYI&iC`>b*@ErT~E88vYxeOJGghxo^DBeNX?156!9hOL9dU zrHmM^GF);0k4vwW=8EPLkK#w)mt2}t^WWsk;mYF5;7aGZ^53P$dQIj>9=u0344yxojl z{$ss%#5?Mp;SztjT(Xkv5YJVGt3Fptu1-crqX$Xl;hI( zrH9MjCGQZ|X0Byiv$=ld`kw0>|N53k)4b{4Z{9p_zPH+2k+Qr zT&=k3dG);-UQMr-SKDjirFdPvZr%gl2=6uTb#I3EyU&aC+0bZYJY+mSi^wx!KHYXSOw4nJvxQW-T+yENNch{T0S?IGtp4F*+N<*$QvD_Z(LPt}Hjp zUCQ;I`@TEM9qsmU`?}rTyZE=CJH~y?{nY);-Ry34BfOH{{qVEQ`^PJ5Bp4HoSB*2q zS)-HL$^4${ih0?rZPl`dT0^V})^pZG>t$=4HP-5Cb+&?*X)QMYHv5^q&7;O)<6dKs zvD4e`we#9~^WAxFO|IF_Y^Q_M(Yb72v1i${?GNma?04<=?dkUK_G$aP-H!K`IV+t$ zZhyDHEp!*d$wcEdqr2I|jIv5uJFQ*T%Yl~zk->=Iq~IIDy}{kV{NRn?^jl< zf#A^Kp1}4%LZD2bt<}QnVzxI^jD|)9ubfxX4R=d9QBDK9zCAwlROm?YvEpZnClt3W z?oiyC@nrF{#i_+diXRD$3stsj*^V7>ZaKDNdg17zf>Fn;Z#K4?TGawI0)<@jf^&k+ z!&1UN3;Q^1S=hp`*>?aQGnp)R5Bp>4&xi(fB(xA>9b@x^Zxe^|Vu_)u~8(7;eeC_l8sUT^>4%yhnU ze{+BJW_fdrMaDwrn`zCm-U+-D=oIV_JQCa=>>So6?6t7x!rlv;81_I||1dKwFZg=! zso>tg`hacaSg}^XDr-iVrSR8q&p;PpZWSll8DI~zr-x>SDuk+r{w>~FJhga6@z2F` ziw_rHDsCU@8`>K>6Z*iOYCq_Vclx^bxxKw1USDH~(a#)gcCor!RRdK5X@PTrcc6AV zm<=Dz!|n^~9o8AW+zzG(-wjR(UJe`%)C`mj^t9SoL&3&<#sK4fZ?HGYeb9Z`dCB?1 z{>#n{-3mPt8Xt0tONMq7A1&Tge6aXhv0Z#uXlQ7A=ve4E`)#|e)61#k)^%gN3SK0B z8bqFav%oxL?YF)Ud=+RHY#Ll1oEr?s0`= zdfJ|3H*nfH0XN3I20G8-=Lf*~I&+OV&HBa~5f~is0(pT+!DoVpf*XT&Faw>W1-AtM z4vq~D4xSI}3A92J&sw9bugwq5S;nu%3U8^m%iZZ_IM;|{p-*_VIP{wRx!uI+>bOoR_ndpx-R&LpmK&>#pUof5=dGu#W`Vka zLxHV z%ZNVTm|vS?tdUlwKwMx|U~ZsUuxjxA;IqN`!Krx4SJ>f^VD(_h;2(j{0)fDF>u#%+ z^@{m~`2#U-g}2x{<{ot|w}jgTJO5z+X~){t?1iC?p%+7wLyv}D3%wQkF0>_dDwJaP zwEwja+fO@hInCUz#H@HST#mQZ*zW7$QR^WqArKXq6Zkn$5qe{T_Xa--z7TvX_++qO zuyyce;7s88z{7z<)+Q^-in98fUCoz>^FMe~y^Zchx42_amKpOyKRW%Wr&yQMy9bG|9r`M7CpoV{tEmM zC>3-A1A-lckHg2XV7Fj0v1={dwGGq>OtU_=&Y1_yvc&K%Mq6XN_qg|?`;&XjIqlSQ znmXUvGwd25^Dwbu0lN4*v^jJ#loM)TcjldCb}Q#@=dzRM%qF(KLaynJZzY)(&GY6N z^Be0kt1;G|7x*<07Q7W`8>}1b5p2f43HaoJz?*?51Nl~(HIUdn)%@7pYiy#XxJ6#7 z?~QZEx{I8}PK*=pOt!xw8a5$b-3;wP|EEG(p;)`R{S^L?X&2k?Io~)f$R-7Dz}r9u z`;4ES7pxSF4dw-|1ZD=l3pB?cW?J7`wwa9; znwzg1&lpR*zsOe?+$L^q_kCxQa|7ReovV&r&n^r(q3gtoQg%7}9(#nn+}>=rcX~S~ zolNI*_h)y2HWcRT9*x!@6BGJ(_ zkkFB=n&%qc614Dw@s81yoS9}`H{Zn$k@&<5f!6|S0viJ7iJ0e!nXBRG`M^_w2#Tn8 ztXHgy<}ox-%baLDVXX4zdXAe-es1s1aej0vJF(=9nf54qxZT2TY&S#~y`ewF{>;v@ zZ`w~fFFF=+X}-J09pk;|RiQRIXV@5tB>qxrseC$v9^ zX!Nn2M&2Ic4C7Omowwb|Zey=KRan0FgE8OeV?Kms1J;|^xWI}I+!GiZ_$2UK;E%xa zz_h^Zz<8g2&A{K*GOHffXXa${l5xtf>?V27c>CS8ZX>t6`?K?bQ-j>Sjl4P8o?t(1 z53^rH8^7A0+8Opq`yQvKbI{rAJmHRW%McI#rS5pvc-^REHZ<3n`^^E?7;C$A&Z-^g z6nHE!DeykA;cf8uK;Rj?v=;Q&St(X~>lZLnY}j~FU*k9L2d{t#H`MLvZgrMAeVx|M zHTx*h?_2v5`voY!WdCjdXy@7IkiWZ=>TGgGxx+v}u{)PsJ=7R(cx0(x%~@t6t1TIO zxm6-iKF}*LBJc#>r_l=pmO%frtW{QHtCRJcxxlo{QsxNb5o0kmSV=F+d&+&%J?osn z1|yvkPRQP3ub^7`2LJ!c-e@nj4JX%r$Qj@qake?5-Fscz&2@jL#_dB5n`>MJ1Cz}p ztAh14Hn@QmniF}31|A9w4~!194s;I`Sz&=+thrVlt0nT!H3Mdh`LOY%v633LtXIi< z)qUH|c5XT^I}@EmuA}x5BF|!bslC8HXz#MiIN?+Wqn&fkVP~8>(lycAOsec&)aY5p zIpclvRboMy^?~(C`!RkOY{e=>`VFlvOyjAhjD z@m_WB4fhi_4|KofeCE_7CSJC0*jw#X^svXiWM8#wIJKNNxo$W)&P4YG>Vp#A-`-5` z9-}+*Uobv2UoxYukU5F`c--1XZU_)}Y6O}Qdtw7&frHi#yze>cSHpVKeACQ;>)ysa z#$0l9G_}U7?#JYW67C0hd1I%WlSkY?ir1a6uh}8Hl+)hn<9vtzN4jzD7w%NI2DSYL zZ@u>r>xUxax-o@0MgLXnF>9~25)53YZi)z03ZJthir4tG?Y`(u_QI)`e>CP8 zby=&-F&CN@$h0q_$H_>U9k>BdmWO0V%w@n0 zVEcQ}=r;4PSBG!q z^DXmRGt&&2ovr@XBy#;9_}M~h5z+Q1>v?NDK3~H+Y;H9lH;0+o#t9<-y+#`Abl8N1O+oQCNJU^NKUqS>WV5A!jf?x5-U)JCUpL=0z&eH_doz>F-$2#7iaH_= z4vXEaxg$XY&3mcY#}xHSG`hToP+w*}be;!+ei= z@Pc`R*w@|~O+ECcHQ9QL@i>oLTOF)iGY{=dHS3vmSRX9}^No#vyaiqxud%n;UB&9) z9%L_awjliv`2I)G{enEO*r%Q5v~`=gKjLpC@sanucl`d&B;#%4wh=PMn&Ywi9F~vhqyZ`~|$XB1dmFb{V~l{>E-E70(%r-p^pq7qDst_c$?a zF6*zU;B1=nmGcie&vY(O?=*0~bUy;^dG7PxlU_Cz=o7{mH7K9`#Ny^8hx#j}F3FdLd)H@!oa!HnV>2Hg=o4>3G!&XN@!6 znZcNjkFS9C6(3c=#(ra)(V3pW4A$v4KwTrNHg@k1^#{?w zV0=6UKf6sfnrrqn`!n%`d6=e?|YF%`WaL&cay(7C)(XZzFX|9L))wHusuZf+t6-> zH-7A9l9TWAhGVT=V7-&E##n6B!`G&mZ3*bzz-;4|UJoRy!zHvTm5^P@WF$ zp5}Sveg@iw^hn_YlD%-6Z#zlY!Rvpzj_0dlJg5i&$q&alfJ>yY4p;)hhmH48cb=#F5bai`27JK%#hvXs#Fxjtao%z7 zFuAo0E3P?4Wi#5GXpX_l=MrVkn^i2!YGB2XNyErySIk}JQsU|}_*g}AE1J5`7;0pC z*L1H`A+l;Wzf`K(uG9Q|cg7RoH2Q7UK$0^1U)(7Lgr@ROv z%-`gy$K1EvhV*($Ap0$+hHDea%Y%ZR?#uYWa`!kgx1vM#ledyyWg?iFXrvkkjrzow ziA2ri=Fh~K4Q3HFUI-pCcx8k6DU=7B9msv^ihW=_XjElovzm_FaIdEqa`Wj%Ep(rN zMjLk^7H{vyx^3NLdSM;i=eYiImw~Y`I#;8-uc?Brd$p(sKQ{g}E*XVJD=hgs*COJ_ zA*8>6_D`Gtn45@Y-(idU;4PXC*gwRg;dCf(fzzqpvvk2KdRN>7?yv5*==E{83z@AU zdT+$vt~?*d>%Z}Sx|;;$XS{EzVe`D|#$e+OV}WtNFwIKf_d)Xm^D{E)eB#?G?7Iw2 z|4jCJp6uBc$~TQ8tm!AwC#`1WdRx8kh)!MTe&xA)+$F@UN%Z?3bbEoSF75#S9RuCT z?)UBn_plrEs(AN$&$IT}gSKlMBavV!D*=Z@c3kTc&xie}{O>+VXf zx2QvhB6BA=Xz#v)>|eW2Qyu*V@-Nb>Xhy`HLhQcc)q(d{=|gQbZqi?FkFM2``GefO z4r*J>_sx~aI}N(ySe4W@ce6Ho8;?q%M}Lke_=Wd^cNY?y-XZjGIep5R$h!-Fa`?BsSBg0Q z0CX2ppM;^c2aUg}H?BjurrE~qkHll4{Tvp45}Nm#ADNBuW7|kE*Rz6n)%c6bWC(Sc zVSJCS?;+>L61mSnc{x`86^W<1FVcN@37mgK%$nmyc_-aoUU?$?!^GceW5(Yd>Wc>BI_GGA8*#AKYD`>&N6!L&)`ipsY_0JK7mX(er2YVtNw=OR)|+<>sL2Z6JF-9jf1BjqM{JqX@M?Qsnqm*W$C$e|yRQ+BaiQ<|MBMd@#d zS$o-uaf~P;aV;cl#=b=g`J$TH$SgrtI7{uZfV}-8>+9Ck%7yHgtzw_(O>ol7t3!q; zbc={f7x9{t)WB!Sk=MalDS8UpJ$l?5&8KJh>$^nusfNmf9+&d)Pu?eJu0Qp5BJ2EYw3$kMvmOc8u=BDVIWM@) zh~E#BxxNNZyIBthjoV&lu<C&qeX z7?hLQv%BP3#(Y*NuXykJ`(ZVq8$os`#AEW^-T3MrHx86F#ivJ*i9W^CHerzvd9Vfh zYU9~s`vq+7FjmslxJ*`xK%-U2@^$gmTJ-M9n*UP$e@#qzh?rK(7;9Yf>eElm_TKOo zfv1U7TRoAevX{^1XAaU9kZmKp9B^botr~Hn5B7MSyt~9}%(ure%P-`?-Nu(hf_1E? z&l`z!C@LUvY4+o8(JML#FMm=2KgY_a6?QH5S{m!wTYcZ#L5%tqj~z>7?(Ai{)xEQH zCoZ_*U@Hn=uIM%QT6&LCNB=}McntlPHPXGoc)_Q{ihqqak@GLGwB4uza_X2__|Y}2 zoCYuZsP-4J4>_6D-bnP@fOuR4GPYA8eoxKxG(OuK$(pd9sZ4LZf_IL;1w1du>)m+& zWj?pq+eUR$=Fz?)?^~YWiOMMy2yJKyY>OWHK|S` z(C01IV>iH45k0tQFx>$C-b>_Hwp&d{M!WG%*bN*P<#?p?IA8KgXXtz^ECd_g@0p-N*DO{64o~#QMHanlDnwl zn&6K$=|$GSPZ}e4HzM=HUPClHkgWPDxn_TFc@pyJe;~3wbLsXl@Y_eA;a!vz!AT_8}YJ#d1p7jJzFA1?uJdvJDQ0$7@ctSixQD)sMatalFD$BfPR$r|LJhaSF0A1@e9SSuUE z-u>j&8LXWrf~28XwJkcX<2~e6r3X+Qxl+*T-F|kNNIsehf|i53Q(gtS`7Jajf!Z9J&upwgKoQF!w%5xf(84-!x$ufhaSM6M1+0B+#-L) zQ;8mEFHSg2Ag+CjJ{MuVEl}D=)ZfQm+g4~VLGJJ2O1c<;j5XLdC}f7c%ruj3*gNQP z40h{}X1gF|M|z{(@Q*>fGLALQhv;=KpFil`fY++jI|G?XyFfF*$iK*Q1R58xYZ@G! zBy(;DHS_qy$Han%s0ULx8Dkn5%&-ame7qR3>F6}_|;&C5V6~jR36KMZE=>5SC<#sRL$njd!WxEf&zRX;oq2FJP z&!PGY<4>$O6Yu|tnsW-cc>&Ib8|Cqmn|yOGI+{n<<5TeZB6@qodmGeDfXb859MAOv z`hFMWOe1D2C2|~KpZq2fFP<8wIWpXXd{02*O*A+K)O<+}{~Q@V1i>%!&L}FO9w4VS zXL`b@|1SIa;R_^qk!bcXRmvdf^#`N(u$~=>-%mjL&p5ZTkmz~{eT0Y|)rnla!2EdT zn~Wr~ZlNFTmd^!!Q}B>yiPj^?iUYA_ zKV%yOZXQObFXOFWW5<6uopg$*Xt8>zhj$I6+cm*Q%>**_dua7Dyy7e9eg(S_G_zDqcl8~rZ_z1dsncD6>V%!vHOhMxJc=ctn#2EaqFFd7SyErsjK&^ZX{j8;O z`I9*FHS)a=I^G01Z$jlg=zoE>XW$7dptYYh;x%*<4!Ua)r#eFMUSxQTYXb63WW37b z7kF(P@7>2|?xL<~2sY!5Y`VXP@!|F0PCoGytIe;$$LC1(CF6S@|H-w2zR+Hx=N0s6 z&@-;ciNzLB?8m=rR#awjhG`2j!agdFrz_k@Foq@-3|O z3ZC)=XdKEXJE6rIRA1r7X=24rG_(r-7Z5-GM7H0-$4s<1A4{%8&YkG=47SUIYDs*x z8j-gRcJB)=9|R|lgOg`K%(GzgNo0JOzXN&Rp4V%j&q!>S<0Tr0LG@~IG84(ZL8=e2 z&|5ru3-A5_kN*lkx;3LR2`AxUag(Fm&0K7*vlsrZj7fe5#WZ(A$U>=Mj~E#M3?}6MaN9`3PV56x@6dYG%XDI=tlw zNVyKpNN`yL`PxHi5ELGP<}>)fi}=DzVDmYAV=P`bjH^2|8-bRx*v=*{T|&CO*l9Id zn+x6PXz~YSoQ4&DM#{f4v3P=m-(JO|jx*m*bheIMzZ{e<#d1r@uq%0W1KzTmy`K}ry>$HG z7S&;p)j}+lNitZd4cZ&xV@>$mgy#);y*4_m44njgG>X-tLAO*f@H(<(5T!0c=>jrd zAo^c|LMC)>pub|?v5b7L6coy#lPXA68~fKsu7=FtfUH}aQ3bt~L%$`V=u%VVaxy86 zTK5RPy%P`G2%R;|yAoWk#+UzP>_o03(7nu~+eloJY+RW&Pg6Q0-9Y~!@c$t5j=`tK zg7YyTVg&jdKz7h6-Fo<0Eb&o$pXbrs4z#g^ieNg_zU0w|^k?2B&%RGwRK4&cR$2i4 zEqL`gJTe42$`ccsqqY9X^eFPYOtgFt#81Xrlc9PiX5A0%zIc8+Jfs#{h(YItaC`v^ z?E&MfK;c|4F`X>>BX!FU#LHj7$sFSK3jW=NhR=})Zs9S})YUbJkZnLgA5cCVJdP%h zKE_(%QS!k^GT&g(*`3&u!oNvaHUOTov4^7M7BsdLgwFzZ(~;{JKNf$?^DlV)C*GgW z=Qj8;)xz5tku!`*GX?E?DQi$>RC zqrZt1e`3EGApLhD^lY@d1j#mV9Yh0H(56k~iN#}Tfv?tZeK)HWWxD&p_Xv=FKQChHK1%VINw+?EZZPlCvuXlXSwE@I5(@oZw^ zT(GzppI8fpU7Qa;MU9Z-CHpJ4c#vHSPil#D-5C9lV-P-YFI?OM_IuM?=!`U~(`&G| z8b^=ZFt&rSe|@hy1hpO5ZUYut%Zf);)_Qz>E422p+B!jh`U*YFe6JmKX%FPKX@uOhK}BU&J_*o@GWJ1h1DMnbVYflW^d=V0K5K*QpcCZs!2qe+90YaoVEjnoxwpjkkJ)ubwsw7{H>4XD)CMM`rJWWSy~G z2Q1bSnH!+dDrhr~R|BB)mRFNnHG!HS%s9wQyRhCiq}+-}ZTHvcdy#1`uN(k}N3q;l zVtqQczCpE9%(pG@T@u8_Vw(i4mduMM#FlWZrjvUi5LUnpxuD`2^Ijzq zUxm^&B+W%{w|M68i6Bx$kBVxtnQxDudJgPBvXQ9B=hT|q;4AB8=5-kH~1 z@_s$yaz!|c_U~iJhVOH}X7;12ZD4IZ{<|6st^$>+R5z1@_aN&D=%rJc+(LI@=)Np6 zRYOmWuuv;-AjEfuUMK9;j;k4$B(8*nF;FwnM?Q$qy)&n|4*53OhdjEAWe@gA<(0$! zd+EfdJoI3Y^P;d$dA?r_iuIYR3HoZrvu0?o2|Uz;LNz{74lPDuMIkm13uM6Q89%q@ zF!MDiXk_y^7i$&pUa^nweBz%h6^%?4n58EFHe$2@0d3G~Tjp);M~DFQZE}7dosBH& zk&9sA4E8!sOgPHFN16LLvYbJaml&!D3VF=}*QLqaNnpDsIj0e*Z2_j*LZuy2v}N8F z$kNc4sTn+^;NJ~ELoKplGWB3t_H9aXzlUjTB!jF&g0v^IfWTe$9uj6Lwoo?zuJkk$zbEg1E9T#?tJdC!5<9CUu3afq>#u?d>%nQ=We z_eN~79k1CBKc}dRGw_~U@Td43ON3C}RS)i)5^GyCZ#$~lcGP;U(N;5Nt%n|}8mWAH z2in_0jj$O!Xf3c4DfZ((r_fP`kS$DO9X_=XJNyB5e}Udl4E>#nuKworf5FNDKBt}H5cQw# z5vzq1T2b~!qG4F+VV*zA>yM(RQJ{Y~wO?PTbih9K`DS@?Q-El$O7a~1r}B3rHd%pH z7GakKezqzmiv*1|RE%5E+(E2+4lLv#ox{4MBsdV&YDBd9ATR}QZtmkSn!g74$U}qa zSoM_u?Kt+-O0r%Kph*YMEd+V_NOHrELzlovE{}EhSU8-U?Z-1FLEsag9it#jID+Q5Fc##zr?l+bz&#GXh}0Bw0L;ES7`>)#0r!vo}O9 zP4M&-bkrCG)JLjXjATYU&m%yZ?u)w#veK!VPcz#gyl4-;xPze@VH>y*@>0>&F>rE$ zN-~>VSp;svuyHJQsl-rpZp^GLh<&Yz&aKf=OLAjVYV!KbUJb;R$0nuNk2BGBAyG32 z+gv7+ods_v@Svk;>?pLqUZnE*20`}r;uN%>%8+><$N*l1z7!*{8YFYjU z;iUl2z6{!qpyeHKybfCbFymsRSj1S$Sk3dTJ`X|G3gPIgB;PFs|7D1eiY{^ZWGopj zhWa!b#D!Czm}JusXRuT!WqS?at0H)bgwNYV<16s3d;PW}#~S2W@*m3P5g!(y;iXt{ zEw%9-H25G#fg7s}yrH5n;buN`$^SJuvVVS^s{M>jCj z0lYK^Wp%MrMeL=#YCt)UZ>F;*It{mnK+#^TxRaf}9r(pgY_X4V7=BLk`em$}3s1#h zRqKUlW+)4yD)LShELk1Ds7{Sojr(4zV26sv-^~6u2;#&s5|qFe7I^S{EbEM15NxTc zQcu4v^WKf!@5Lt{Abvf>>>3X+2J^fp_-&0{YV-MctZyJqHrhCapQ!FwgQqOw?;M{0 z$?JdNe{<2#66mdi_HOWUinw--D%ge3(jcHRe$tS5uWm{gp7#V{y@<+pW2x?VP6ueK z%BcqqlCfkN^bn--ECSKjiJMpO`mL1{un~MBg18Wge38(N!gA5fQkqeQHFX>kBw&Yf%vhco z6Zw33d_{FktUpT>vqYn@Xl5x%R0#*cL2w{%bKqS2HMj8mJjM+orefy}B0?VW=$_kR zJjWo;2k~`9kr?tySt{BJ_+uq>lZ=j%`CEzSiR7AiqE0DdW(hv!LFqQJD;JDr;w=}6 zC})ZEr-;ZWv4y%+XYtL8RJxheq`A~MMd(XWDUxr-!h0g~+__h`G1S{Ix-k1)=&C2W z>Otn|3cdEwYYx47e5*40h$n7JQio`Hlle0k>Jls390Do(k#CLa2SCl6@6le zKC#e`Mcc7xH3pQaYEsk;BE11c2Q(Lf>|6LrJ~Z?2l{~z=fN`4#I8gt^NQG|67@wT>`@VICBi{GoR{X?5ynX(h)#8^h1Ozd z&4t!q%>5Ubor~p{@OK?~XBSjYqQNYpjqXO*K2#NS-Ng5Y(%3-pGL8yBedah~Wh~jc zG&YJN3q%mrg5++KXS$!<#!u8KF2*m4sh5;#Y%;V%4P_Yr!qY}`G2!`p5xm@5w1GlsRSPha8Vi_OP~uE zl-%N-Y%F-0S~R1d(%_%~T!#~blHk4pXzhUPz0t!EL_QN5k=cvTpD<>O-)!S-S3Z9}VTk$D->jhJKz{^tSXkSE>sx3q7u;u3LtTQ-IkL`a#z`KZAb*@B6PyK!2`wk^w=}p2!*5(->MgwbI$Fs9p_kCq z1yFJhiO%!MG%S3DZ)bsn8{ndlyd@ok5ksO_Da8`U60krb(L{IqCxQ({PE}|zd`q2b zRX!f^p@^y|AFRqJuTd#q<@r@GkwvV`1`#)SrgInS6KM^j`luv!j=|FECgILfP%?RhQNu;#-hPnbbuwXVb$h*>!R9PV%{bew+czm6a z&k$c8BY;$q%wNj4x^le-R&DI2tX+V{wSTKVY&I0MU!qyE&`37^eI4uM5kqdHN7cdx zpALhElKfS#C*H3;3P7E@%Z2)#(f;R|c?)>-$guiXlAv zCKk?Q<_mcCDeSIYX+@iZ;6Sy7*2yQ~=R6WCGfK-v=*J|wmn62wGjkGDwLf(yz9dt_ zBr;;5TatGy-m}qcKAKh)A!}d2E@#2hX(*h6zB(D|8einq44&oijyf!&YZ56Upj{fv z#$&fcEKm`>B{Ops5LX4QRt6K5d|#>z;;Tcu7P_e8XMq5Gcz9z7|GtH1-h`JN@}K-H zliAggy#gP1e$V3!vLAt?eaNrA+*UknGrVj8MceVny>Nd7J)DD|EHEOxgrQmWLTYfO zAaO^=-8>$^Yxly}P(0#Z?9w00_W(t0(V!~WBxpx4(=DpDi)j4-wZTRxFTw9;q5bL9 zEkB`!pWtaae9T54OTpr1yzVejDT55+P@l(Af7GIORHwZ+e~07eqp9u3u|j$h`cLqQ zF>tAf+z;86De4g&6NsxOIVT56Pa)k-{;sALTL>?I^2%>u;a4KhZy@C_=q`lrYIMJY zSbCh8nnA8BCcde6nuO%_KwK+mcEu)ru){!XFc{1YM)&uCw?1gB8|ZFJd}~CMu13uh z&j=$z7h>rw=$!?RhoGr_k`16_HMm=jmX_h!|A4)fd}AG)Zv}&?jFUW0#|{Np)be9a zG}I$mJ(obw0kWS#h2qjP2yw?~5#tt*3($jBIeAnuH_?SKaT6-?ELERc6W;Py)T^-j zLiGL@w*MV%&A|RM@zr^t=N~+26FeP&_CR|8+wD?Ww_AV}IQ*Qjfe=4KyYC zee9FiLix>FUT^n^BLfSf6j!0}Hi%Yo>vXOg@*3tqReT z0Xns3R|Z)Vd8aD0>yRBAK||f3mOO4v&TS2nTH@VJ@$LqEzJ?z!v?>guwFu^l;@whw zBL*JIfY>s0JYuL=W9X%nW<>Ki3VlTKUId?!Cc{8_keLGD(;_07XvQG(ddTl$dz-s_ zios+dcDUuQvO8n{Rz458X!p9$w}mwM_?|Fv5=^FohizbC1M{wh)*AR)i(hO2huc6= zDmu{q#wA9sAEy$1Oq2x+mElC|E$th&Ad0o&6Ya2ETlAuHfh~vyjnQ^pMpdLO&n%_U zTNu39AR~{;<0>+xA*=Rlj_`^7(Amo>cQ;nt#n{8+eY|!MjUUHX&cR&XEIJA|6X*x zk@;7^J{Dar0^Ukl>Y6iHS4c(>iw*lMi zN7^(rS^!SN@ropWt=)*KSbMs4p;LqX)=KQamSz7giuh@=iYWvW*RhTK^DLIsuB|#% z`=PR*{B!^;940TQ`*M!m8tuqlXGK$pznbWyB$$k2byWddRAq)*a9@vE8xV;b`c=4g z`|E?s7HGF4QA4{^y+C~*ble9XdZDfE#EK5sqy=`WN1RYExD3{}Kw18OU7+Lq-3=fA z!qsy0v5+{bRn=@_#~gIA5Pp_puZ{4t4@u78VLAA&LClV0t)#VWE22aX{@%;;k-YvW zygg1F84FLNvDf|JpdY@`5ll8f7l~M2eaGvp)lRWfu!D8=3jWUF`E;~0jXX9LkNKWh z@(X^W{IQgHy&2RU!TU3rNoxbG;cBAoR%DAFMCw8OI|9p$B7Z#s{ZaVMoz6=xpFWSz z97GS>puZL*{lmmTNI;{Nc=RBSX~Q0X-cGPkGFLr z8ulb+-if`!sp%GIc}_^+F*yHITa`Sd3>R!ACW|Q3qdbK>Tb1Hd2_qDO6IR)(Bp7 zrluCitU_i_ga_?hhEr1*VB$6$%SSJRi?j67jxo~#X5C8^+=YMaB69D>BleNQ4)I9) z$vX3pja~||km6PhJS6eyTF`HdR$CDbS2~J*cCf&$zQ&dJ+t3<#`!-v(V^G zv|9vigJ=*27452*0fS|+gF3xQphPPzElAmup2_0-gfA zZh&%iV2Z(jBB#1ZI(Mg&rI~(AjDvnT&|HC`&S52Ht%MyaqTM7agG6{rAOgk1lh!fO zXdsfTS^{kZz^u+VJLsU8ai@D;6W%KG?L?@kLl%zDx_;(R%({Y2($R*xDvBUFkCMkI z;<3kTLA*K&USjX^Gw%JVDPgG7Y=*x>*b8{$;e@7uQ8L@ zoq=txpbu$ACnB%F?G^Bufz|YF+37m7!uE`)Z~$V z-R^(Z9ud6aflsaMu7ddUVB;vW%SX3EXA|7~i~Rrc%0}Xs_Ez^1xpW>$-9mLFJ)V^! zcT^%)G{DlWv3@sb_eJh|$R3K8gFviKuJxeSY=@sV!h@1|R0>Y+kxKVS zEJgnLSYQs;n2mqVhu%`SS;x@nnd9)H^@loDB|&)-7FD0GH4#|%e)ho|1|s_)v@sC5 z`@%t1xz&q<6)mJI-R2Pg^MlbRBZ#eN(J3u-;cmd5HK`Xn_z-BbG796jFrO$R9kD_WsP@4MeTk%fK&f^(I>BuVP+k{rPlA3l zv|Vg}ojzb15%LI>c0*D2Sm);wWfh&+Oamp?;ZB|FNMECw)WQXRb<`4Tt1sONKkb62 zbcTlxepc;(ZaTtM2P&SnzQ5{(o??f(#W_^Vm$9;X;wO+!CxZ@vzEo_GiuC*O)q}o9 zwxNeD_|8_mWd}Z^uK7VQqHgLX_{kw|s5cpg{o}BFWw_8O*OqY7iGO=A`XG5ftkRG7 zbe65#e>^otdsX2{J!hTuzX3YW`_y+K^Ja4Cdd`ciVZT)8qSiCEkk7SFJnGwK2YNYy z7O$aAgJ=prv0C*%&qQ-_PJ7#Yd3Pq*1O0sd$E){vM2e*MX-O3af>Lc9%v+T z#3DxpKmHd{r{xhTa%Jhq{mIYpPpX5*_Ibs`d^P!E^nUT5V=ice)mFxH{3IGNS^slx6K*3Q4r*WWtXP zb)CMvf%S8soyFXeAf1XUooJ=5O(rnMOB{1m6@Riv}%Krx*$gTEb8u6 zhe|S>mj?sFK{%B4tHe4BsWUCFDul}U=^BtrJ!!x4s zka#d$fsu?ws^ZPnKyg*xsSE|}FC{>`43V=WRMf*()l*0wmA~dfDckp*llaUTe_3>E>$%* zk?|JthRCJri-fUqjiQHFhV@`sVp@6hlZc)wfba6yA^|(ZB9Zn|bnk~j<_fV=D`4%J zOHU??6|a#DwX+Oe+%@=u5kP+Cx6g(EjC4hE|U28S5DTGPW>us_6*hJfF{opJEWH-wD@! z3RRh@0k~+vtL>oK30!tY=1%a`j@g^z#|_YjdW{J@R;S9r4!UdS3V6_}@CaDf&i8I) z-i7?Ti5uDlJ?zI;MW)(FSCiSRfg_!YNWki)@Xs*3-rG^9j@ zw?P)1DFDYTwdfUMN+w=(&F4XGV=V=5InQOd&=# z@hi_{D!YoT#>)HjOQE{}I4D8~+Ktm%Ppd)EIf$2}`W5d*zw*_urkv#UH2BajXXPWk zL(I^sb{*Ykpn)`^p*l%A>3io?PZ~Ot zezc0#dO5^rExuV2`ufHA3d~uBt0ub9+4;KEU3IB`YcZ-z0~{XY##Fr<|`d&a87b)H8VI|3eb9#I)wdME|= z@@-*8mDioqHWpTutqY*97?=)E7vS+UdN=_m#~4T9@;Ka{g6s2q=87LLJ#Z6*k0_|c za+O0bNywgzPP8hkjF0GKOd@~dc^-|Wv}*H+9oqlT1q)ZfnNAO#hk{n*XP|KwdKa+4 z74oD`o#(-W&FcX_pJ$LqwBJxjOwk%BoLP0UOm|Ntu^LK-W)+^Pa;XYZD-%B}qW|*5 zk2q#1MGRAwr`=71VIx@)bal=_o^lgS-1HHuU9wn)dSunHVjc9aT^pStZ3KPoL)B*X zDrBrgbQpuhOCX)j(5Nofp1Drio(Hw6Tu*=n_3`dhvgLTa98swp2-BH9o%$?|L^_cc z1mUWX3;lP>gM$iuQafi!e(pStG^dIBXNZdD`P^k@zXp|jsM$~r`gjmxRaX=fw{OF_ z>Y1D5vg_0{+2qkIB)U`amnYWh-VRlDMc7@ZV0EhY6uLM}jL@AZyRp`8V)Y(qYMufHMBRc^W8ert5bctkEStMrye@cd6Oi+%H9RnJJI-V zY_Jc?vixZfp?`I<&%yr6)n(D3&P~>(wo4%^w1WG#NTYMtI?JeR+yvR{KrtCi#6vwC zBsf?{XC^bq8|RqeIGi73r1E$#IYhfi2YiXjF?$>{OPi{WR3qwMrhMd9uDZgfG{Z@- zcZ7U)0Qpn-o67S8%&5KUlTf?BXRo4BdA`nd=%l{Raa6;iI>pu!1b2W&S0uO#y{pIF z1-ja=ZpNs~;@X-%0`@wB5xb6n`?XYYU^dX7Lp(CBwv+<1_Y>@^Y zj`>&!($kNDRuc704eFT&)H5m6H!bK7wB(!W)Hh*Pts8ZIFA?cg;aPA{NWG$SD2ypYKYTB z=so!8dSqEf#9Dw&=0I}}k}Uvp`Yn@xvCVGqcmkbdfYCzi6b=p&h=$dP(mL7Qni$g& znq7%r-H^R2v^qkgHPY!MSsm>{#NF> z=vLudm8lHnb>)#=r^ll~T?sU(7^jtF0pF4}bHGFvTwaCdRpeF8t(sHafIKXH8+3>G ztPAQ)5mDd)!>kJ)q*HO8;c^-C10r*%$DJ%QXo*O#{%9HOTM{0$XQ6ZHg^ZifR;MQ&uhIFK^JF?{QwTbb->J)T1CgJvm)`eNE6r~(FRz_B{Kb2KM+SKyi#(9S zxJeXOy;KY@9#mAFs_Uojc?=p-mQ)>-NXF2Kk_yxTiT*j*&G4{=*|*~dd!Tg4msUNq z5c*fw@1~FQa?DU2x(&g8EAoPN?RE012YmE^kM3Bs6P9g_w2jfYbWsisM4$`x;k80N zhXe=F#dbJc&sfRhWxTcoUi3?9D~UT=vFo0f!)RXU&jp1#bs6Jp?=mu`kv-2t^E|&} ze4bNJY5czJWp5b#-3t%>khVJ%TOoN}bf8sHIJQuB)Q;?7=x!wru3{|2lC$995A^Xn z^#6p)Jaq66{-Eyje$c0rl3GQm2c3vk>LYhM(9?^*Lzr45^#48j{}%mEMfM+|^aqi15%hIW@KGH`{v}+7r@n#4 z8PNSQ^j}5G6T#r~_`*0O9)b7iyrig8mQ4{sr`>Kz}mw ze+K<;vHx$-UkH75y0qJ$i7m9E)w-k}qXTsNgMC#LW10DBy!<)nKMVaQ(ZOiEZzwp_ z{fRoiUmbhs&i7(yspdP(*v#W)#Gu*eemWWLN96wj{QdNw4(8wi|Go?dnhwMNGu)&{zoDINazoPet)pg6%;myhZ@);4n9<8(DP__v z&|L-H#b|jRx}Ssn=VEoqzYLn%=iSNB-DQ^<`ajiaCr5kPRiWDmx^1D`4Z6Lty=V@A zrcQ|VM&@qVpe?@8m{Fafu4)Nh*RL_D23HI`4DNS9dowbtqq-W}tD&v?DmFq;wAM8NqyP>ChU5-Ne978AN#e?=IN}vbrSLz(EPEs^P z@6G;ML*1WFwYx6mEEOe?ofHl-x%tr1sIMF%c{cy7j zX}6;J&3J)^9`6DP`^k^T;Z2b__sQm;<^n|e^toyaY*ej6;%mPh)l=PC4* z>hr$-Plf6=DN2N)NA=1iRR%MkgTiqrY2SJul=rZUtFaeObceZq(_VM^reV3Od`JJc zLeMB^iDb_?}i#0ZiqwH~#9^7bSY$Cg%s{rO%>OA;eoP$r7wXuXMjUgPfzJb#?mhx5MnUYhWE^~d#}I_|pL zb}ci`VeTLCjL(tqL#+KCG~eg%6rO*}>%Swn_OQ2u#WT>)Cuit>fBm|ec<9UA529V2 zVSfQRC*p;#^7kd4KaCGOg5C$Ct1fs^L+Go+t=*q2<~j-wn|wXwA?r=_e}i9Yx&bdY z`30Fg^isfi(Lz6RuO^c0!2;*;N&OyxY9ZaT+?2T$jR)~}B;zsOd6M_WLu(wE8x1x7 zKSZocZ7PjozjoCfMkev;I`iv326b@OBHtq7&Mf$vfqte#>o+3jpCEq$$Xh`~)!v7y zOYO~R?@agP>vs?8z(-5y>hzC(mu)cm8RpY<$?73*Akn-h*y+HxbdPv7MjV+|>oWcS zQk8)eA@}(DC?-odU{Cu{79)&GF2dh~*#_PHWcSm4{ia|3i9y2BXgS)~g?{b2DRQ@k zerM=+1M%IFxf`@QLAwofQ=qAx*-DHu4Bg37gbw6kIt_Ll+R7H%3)J0qTaaCHi}r40 zJ^=j_j5LPUYdZUFA-n3rL}agyee0udovl*!+78<7q0tW7I!UN|i*?sk4IU@)x}?w^ zsqUA_!NwP%eS%jGKzG-FbT>n5Gu&<^C+%SD?QKqZgeek*?Ht z*RMa70!P}LSMF8c?jm)7?w>fs(0;yn*#TcV&!RIH`|yRs(AMuqT>`)QMV;IDt4CqX+7P9k|^5WBV7%LT2Ope2o&v~E0(4z&Mx2;Cnd9;uQ%PRzKof1gfv zQP=Mr);NQ9PQ%A(ET(e|>g-&hveLR$XHK++H^`UT(~p6EIs8b!T%g|%s0By5U!xwM z&?!>={({amR6(QaYsX@rlB}IgVvXAI+L#7>NpHak71Y7 z=;Q)YsKcatjEdmNAX8{RP`_`I1Qx16zYZKV1k+96L1*|nuulZ zoMg>Jj))x zy76~T2kn7}RKB6J!TR;fG|;a8h1S*{&m%xW9Gqw;s3z!W07{#prIzTRH9W|BTB3)h zV6=fBO|-Xi1BrB2A`c$!+=Zt;%vm&}j*IT))^5NK@SyJI4y-3HKETku16n)iB#W|( z?oN+HX5Bei8M*7=4~?PQ0&9tOTSgm(JgF(80k7BK{Uko8y9$+ObwWq+HG}!iGq1Wm z`i+=W=;?Hnbf90`I>>9u>~tG`wJRFQoLZA4p&4ZjMeh2@s0ga_oeg=e zQy==jtW@Q56`&di_gWF@H-JLSn+J_+==w68sneu8Q;zdjr$&$ANhgRV>V)b1?GA)q!?R_^gK9I!z=L#bCh*uxo-L^-PuT zvKi@&G-#iNt~y^Qnf)Ymb-%<}=<1i=w4-?Ee9=viqhA=x;SI6St%}tuft&K+Cl&-nfn`NAk8di@tE-ufF4W=FUD6kzdk(s1@e!S5lNam0 z;VWQR|3B|s{7KO)1V`E%4`T-9n;7WELsxeNt5;VMoK`|s?XzkJS-Z*l|8mFqm1kM_ z(7omA-D-WNUy;&|sLr9?=?mpTSHCKy-+I!%dN$spk;7x%=OusAi7TBoRHoEPAYs%* zUfp+l=NBDBNA-xhH0qjZsBfxY$I|%-osm}`OZnPG`aAa(YoAv8#i|QEVwc0ver^%; z3z7XcT!U7A*BJwtNDC7uft5QQfBTx#z4v;?Fh835-;KoR-WmHah2GI z_7yQI1+;v$H5YAhzitHD+zj(9o&~?Npr>9JqJd^&sF_j5HAbuFwau)*T1Lyd)-rfA z-^NHx7Bbsm9M`$Ob#SgwQ{2Uozd#Cx2vC$DY9%3GeJM=ws z%i6sW+9-E=#2lNaS1U+Y-OFUGeg3>T0#P_?WCUBF(FVOP=5#kZq;Brefz7dswlxCli@-IKsxcn~?U z8d;kmV+~Y0lIz08^l()VckH6I!A}Cd;>e^LiHjBB7-}cYZL>0bntP68Lqv$VOP>ef ze1I!$cLE-iMH8~n`&$7;5jb+-Ku*lhe9YA|T%Cf}C|8WY%P=xf4#T{^&*w>Gl}6IW zr;KiGAPck6L_Kf~D}y^T@{QFs1$^8Ic(IB{?3)Jes@J)Ko;sp=^dbvBJR@6Qv5Y3U z@0#Y@p)OcKWIaxIFgB0i#TelN|6k@#*2h2RIx|#4d@Jp({WEU<5MGA4+a1~f-?lz% zka4<8Z`}utL*I&R=g1~j%ox5E{Az3z8hV)%eB&^!gV*NvcQAsk-U)gv)=V_eWvzm{ z;C${QHm=rMkA4}WR*nR%MmC0C%wN5IxzNvszTWK}Y{VAYB-+kuFtbFfG)CrXk${#f zRR_FvaQAlldl*X1^tb`rRSo6+ScqKglpc1oPsF$~x*ujfxI*SY)BT=1DOYrJ>o>64 z=5?%MEq{diGMtD`;LO&u`2-2NGHx-F=D6y`7N6EQj`1A5R-VmE`Eln{1~;zx`?&bABeH@ykD_ChV>v?G z>@HX2L4Q{gUJ zFDsPcKue7_mLMndAvU2k z58Y9EV6MS8%u*{CFVimZ`Vyc0ga3WScmBh7zhf?j8TaAniPvN$djgu~f&7BGa}p_@ zMz_vjwQL_?-`+vrj0JgWbblM=I#-X_Za1KHh5vj>Z$3wopI}cu#?D`$eSyAT z#!_9!Vhq5W`@R)qWDcB}CFTSjg@<1v$@idr7HOVmp8uYCb{tFOw8C-o`V%nvV^%(q&qJIyACRR=_RLmPnAVGIE<&1$DiMz05dS9$8nnCx% z8t53@*JGtcakRN|R3oc$=o_yxR%6|Pdk}Y1>-0iIlqIy*GxjW3g>g}<5fXf6Cb3x! z;#oByGf~mp_ZBlF&2G^H^@4kwkFL!Xb;Ffok~u0OfHcP$D`OEx{HKuJ9GYxKr~a=^ ze(zwVtmNMt@Z$Qn2FFGj-BF6E; zOZ0M)zKWLc812#Pr~Q0N6HP+Q8BaW!%!%yaYIlk|a4q_s85h|!Bd_@ZJ!5|&SZa^5 zXhtb^=x3OdA7-<8?lULb++wRFR_N;!e#AT5gbTUR2O8D@nFD9$g4ivdl$50SHlA8U z9g@;3bQ;gbrHs6Y{*};GLX~iCPKx^<_f^^`S1r$;8MN)-6r%@w8JbU688)zrV%WH* zWz+H)ts-_MW)M_x7d>+|^r#jpwb1uWIQ^o*>dsXuas-WloJGoQ#}HeM2ok%X?udsbf068l)hx9@WY z%uUO{n&mKaME=BN2b;&n8$PiTg&dAf1xq+&YS;)kG~-cF$pfC9s0M$SH6uN$b)sxo~d)8S;bnI zfO;=}sJD1^lF#19etn26ta&(%gno-0%#YK@dk7tHkDW{Z#mt+d*CY6#`e|aQUxJT| zNaF&d@nNh)RKSTPzfs@nlaTZye<3Asv9cP#q@1h64Vs$+Z{Z=e# zHMUt#rSZ;LB3&c2en$Liz{4Pwz4z&Rn)UhtikO4Lo{j4Zwpf#Xs}t_D4fBLg$} zT3P$eA8x0IKD)%2v)TOO30J^RA-hMBZQNOyacpMAB(o>UEb?hH-_xT(M%Jnhsknm| zlhnAgzLsTlbPJv`ng7;5m0>kJH6P@C8}qRX9*(d^y%uPfJ~vMgBF5~&KA9OVYL^yM zyfLeEtQ{2Tr5f5|VUz{l^L}QyHP*M$G*1#DXHCL~`9anm?81VXGi!FUe$8fHx6^l{ z7Wx}sdCoVag{5&$=rtGn(+p3s zd{&XayK2_}y~1IH#3)85tNaoAD@I)}_OOROTM?XqUOoNR%j7Qo|M-zsxr$sbZGDY< znNhphhgqHZ9Q_OPV8lY7r006NHqnAixYjeKw?57Yw$gVa2BOj)hlk^g?op^nzm5Ki z_Zda<#c04DY}7O4t*3s5W@eX|MYoZAKPy@vR;@4KBMW|Bpm9bF%)MBKiv{{VL*LEA z3#&ex_zL`hZH>M;af-k?u;VPGe_QP zr9-rC+EM1Ah){1LAF&+G9T%O*ys!iG+_hP(cWWnh=(DweX19w|q|arL*SGlW2K@Cg zF5*|}_tqb79f9XGE8)!2-C{;&!hM7*%aBrxCOYw9_;3&01CQp(8AWmqwn5)$yy)&B zO1`m_R-_}Uc{iMPBe_oILL0qk=C1Y3J5e!n8PO`{V+5rmjO(^f3zE8sr@%N2MCsSMb-&og#QLn&gbp!(;uW z8CQDN7xZk4mQ#1C99Atp>O?;yF_(R zbb|)y*3s03FbCui-!w`QrT?Cnl)rIO=idT)mqriVDc(g329ShL4frCR9Du!+$bSeYwZ$|%GkhwTC322L5RnKc>B3h5NMV=iz-GsG1o6r`gbPAeg z{rG$bpVE1YIpK3@d|udhflTK3hFMHTXUv4jMXNo7S$pksCVZ}wh!$spmNvl5R0?CJS?;fqMRtcT|knX?o@JE{33G-}~XA zk9LFCH`%8QFfPOB!WiH6i7Bqt=7!}2eJSD2W_>k4Re872_f~9=O>CxS`rimAwQwP? zX0wZsE8d&&E%9lsQ4`lQ#ds&7{g9oiI5!WlKM&zy4E=MjCJw0UwFm;nfXsQwV?2u) z0WDB1@^3)?P00QL^leRyfln-mF$Pt9QolLJE56mY_Zd4WFBthK~v4 zFo6tG{C$KzSO+?f93I1sIV+x~&2BRaC5A;2(k+F9N@zp_d3U0hJ;5A^1@oXQuuEm| zSqw+6-kxmrDT(~O9)STNBgH${t0X)n U`E-mnLGx*Gvy6;83H>Yo14o@C^8f$< literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/work.wav b/NotchBuddy/Resources/sounds/work.wav new file mode 100644 index 0000000000000000000000000000000000000000..523ffc694e967162c0120bd5beea943aa9016d0e GIT binary patch literal 72208 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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/yawn.wav b/NotchBuddy/Resources/sounds/yawn.wav new file mode 100644 index 0000000000000000000000000000000000000000..c96c66dfc484ca089737b7f5d833a4bc6e405724 GIT binary patch literal 140264 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

pJ>cqXhp?!P&w6&#qNz?`{UU`P&pJL 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 String { + s.unicodeScalars.map { sc -> String in + let v = sc.value + return (v < 0x20 || v == 0x7F) ? "\\u\(String(format: "%04X", v))" : String(sc) + }.joined() +} + +/// Appends one timestamped line to `~/Library/Logs/NotchBuddy/`. +/// - Log directory is created at mode 0700. +/// - Log file is set to mode 0600 on first creation and after each rotation. +/// - File is rotated (truncated) when it reaches 1 MB. +func appendAppLog(_ fileName: String, _ message: String, + timestampFormat: String = "yyyy-MM-dd HH:mm:ss") { + let fm = FileManager.default + let logsDir = fm.urls(for: .libraryDirectory, in: .userDomainMask)[0] + .appendingPathComponent("Logs/NotchBuddy") + try? fm.createDirectory(at: logsDir, withIntermediateDirectories: true) + try? fm.setAttributes([.posixPermissions: 0o700 as NSNumber], ofItemAtPath: logsDir.path) + let logFile = logsDir.appendingPathComponent(fileName) + let f = DateFormatter(); f.dateFormat = timestampFormat + let line = "\(f.string(from: Date())) \(escapedForLog(message))\n" + guard let data = line.data(using: .utf8) else { return } + let maxLogBytes = 1_048_576 // 1 MB + if fm.fileExists(atPath: logFile.path) { + // Rotate when the file reaches the limit + let size = (try? fm.attributesOfItem(atPath: logFile.path)[.size] as? Int) ?? 0 + if size >= maxLogBytes { + try? fm.removeItem(at: logFile) + try? data.write(to: logFile, options: .atomic) + try? fm.setAttributes([.posixPermissions: 0o600 as NSNumber], ofItemAtPath: logFile.path) + return + } + if let handle = try? FileHandle(forWritingTo: logFile) { + handle.seekToEndOfFile() + handle.write(data) + try? handle.close() + } + // Ensure permissions even on existing files (idempotent) + try? fm.setAttributes([.posixPermissions: 0o600 as NSNumber], ofItemAtPath: logFile.path) + } else { + try? data.write(to: logFile, options: .atomic) + try? fm.setAttributes([.posixPermissions: 0o600 as NSNumber], ofItemAtPath: logFile.path) + } +} diff --git a/NotchBuddy/Sources/App/AppState.swift b/NotchBuddy/Sources/App/AppState.swift new file mode 100644 index 0000000..4a1047e --- /dev/null +++ b/NotchBuddy/Sources/App/AppState.swift @@ -0,0 +1,775 @@ +import Foundation +import SwiftUI +import Combine + + +@MainActor +final class AppState: ObservableObject { + static let shared = AppState() + + // Island state + @Published var mode: IslandMode = .hidden + @Published var view: IslandView = .overview + + // Tasks + @Published var tasks: [AgentTask] = [] + @Published var focusId: String? = nil + + // Bot state override + @Published var stateOverride: BotState? = nil + + // Real notch dimensions (set by IslandWindowController on launch) + var notchWidth: CGFloat = IslandConst.notchWidth + var notchHeight: CGFloat = IslandConst.notchHeight + var hasNotch = true + + // Last app active before NotchBuddy (for window context capture) + var lastExternalApp: NSRunningApplication? = nil + + // Bot drag-attach state (hides original bot while ghost follows cursor) + @Published var isDraggingBot: Bool = false + + // Desktop Mochi: true while Mochi lives on the desktop instead of the notch + @Published var mochiOnDesktop: Bool = false + + // Mouse tracking + var mousePosition: CGPoint = .zero + var lastMouseMove: Date = .now + var lastActivity: Date = .now + var isPresent: Bool = true + + // Pinned (alerts that stay open, never auto-close) + var isPinned: Bool = false + + // Keyboard navigation — index of the selected item within the current card's list (nil = none) + @Published var cardSelection: Int? = nil + // Number of navigable items in the card currently on screen (0 = no list) + @Published var cardItemCount: Int = 0 + + // Upload progress (0-1) — set to 1.0 only at completion; animation is time-based + @Published var uploadProgress: Double = 0 + + // Upload animation timing (non-published — TimelineViews read these directly) + var uploadStartTime: Date? + var uploadDuration: Double = 2.4 + + // File drag-over state (mailbox morph glow + mouth spring) + @Published var fileDragOver: Bool = false + + // Sound enabled — persisted + @Published var soundEnabled: Bool = true { + didSet { UserDefaults.standard.set(soundEnabled, forKey: "soundEnabled") } + } + + // Mochi outfit selection — persisted + @Published var mochiOutfitSelection: Outfit = .auto { + didSet { Outfit.stored = mochiOutfitSelection } + } + // Transient: outfit preview while hovering in wardrobe (overrides resolvedOutfit in BotCanvasView) + var wardrobePreviewOutfit: Outfit? = nil + // Per-day seasonal cache — avoids recomputing Easter and date math on every frame + private var _seasonalCache: (dayOfYear: Int, year: Int, outfit: Outfit)? + var resolvedOutfit: Outfit { + if let preview = wardrobePreviewOutfit { return preview } + guard mochiOutfitSelection == .auto else { return mochiOutfitSelection } + let cal = Calendar.current + let now = Date() + let day = cal.ordinality(of: .day, in: .year, for: now) ?? 0 + let year = cal.component(.year, from: now) + if let c = _seasonalCache, c.dayOfYear == day && c.year == year { return c.outfit } + let outfit = Outfit.seasonal(for: now, calendar: cal) + _seasonalCache = (dayOfYear: day, year: year, outfit: outfit) + return outfit + } + + // Claude model used by the chat and the search — persisted + static let defaultClaudeModel = "claude-sonnet-4-6" + @Published var claudeModel: String = AppState.defaultClaudeModel { + didSet { UserDefaults.standard.set(claudeModel, forKey: "claudeModel") } + } + + // In-chat provider + model — picked via the model selector in the prompt view + @Published var chatProvider: ChatProvider = .anthropic { + didSet { UserDefaults.standard.set(chatProvider.rawValue, forKey: "chatProvider") } + } + @Published var googleChatModel: String = ChatProvider.google.defaultModel { + didSet { UserDefaults.standard.set(googleChatModel, forKey: "googleChatModel") } + } + @Published var openAIChatModel: String = ChatProvider.openai.defaultModel { + didSet { UserDefaults.standard.set(openAIChatModel, forKey: "openAIChatModel") } + } + @Published var ollamaChatModel: String = ChatProvider.ollama.defaultModel { + didSet { UserDefaults.standard.set(ollamaChatModel, forKey: "ollamaChatModel") } + } + @Published var lmstudioChatModel: String = ChatProvider.lmstudio.defaultModel { + didSet { UserDefaults.standard.set(lmstudioChatModel, forKey: "lmstudioChatModel") } + } + @Published var ollamaServerURL: String = "" { + didSet { UserDefaults.standard.set(ollamaServerURL, forKey: "ollamaServerURL") } + } + @Published var lmstudioServerURL: String = "" { + didSet { UserDefaults.standard.set(lmstudioServerURL, forKey: "lmstudioServerURL") } + } + + // The always-on workspace pill (default: VS Code). Persisted. + @Published var mainPillId: String = PillCatalog.defaultMainPillId { + didSet { UserDefaults.standard.set(mainPillId, forKey: "mainPill") } + } + + // Dynamically fetched model lists for the in-chat picker (keyed by provider) + @Published var fetchedProviderModels: [ChatProvider: [(id: String, label: String)]] = [:] + @Published var providerModelFetchError: [ChatProvider: String] = [:] + @Published var loadingProviderModels: Set = [] + + /// Fetches models for `provider` if not already loaded or loading. + /// Sets `providerModelFetchError` if the key is absent or the request fails. + func fetchModelsIfNeeded(for provider: ChatProvider) { + guard !loadingProviderModels.contains(provider), + fetchedProviderModels[provider] == nil else { return } + // Local providers: fetch from server URL (no API key needed) + if provider.isLocal { + let baseURL = provider == .ollama ? ollamaServerURL : lmstudioServerURL + let normalised = LocalChat.normaliseURL(baseURL) + guard !normalised.isEmpty else { + providerModelFetchError[provider] = provider == .ollama + ? "Connect Ollama in Settings → Chat first." + : "Connect LM Studio in Settings → Chat first." + return + } + loadingProviderModels.insert(provider) + providerModelFetchError.removeValue(forKey: provider) + Task { + let result = await LocalChat.fetchModelsResult(baseURL: normalised) + loadingProviderModels.remove(provider) + switch result { + case .success(let models) where models.isEmpty: + providerModelFetchError[provider] = provider == .ollama + ? "No models yet. Download one in Ollama first." + : "No models yet. Download one in LM Studio first." + case .success(let models): + fetchedProviderModels[provider] = models + let current = provider == .ollama ? ollamaChatModel : lmstudioChatModel + if !models.contains(where: { $0.id == current }) { + let first = models.first!.id + if provider == .ollama { ollamaChatModel = first } + else { lmstudioChatModel = first } + } + case .failure: + providerModelFetchError[provider] = "Cannot reach \(normalised). Is the server running?" + } + } + return + } + // Remote providers: require API key + guard let apiKey = KeychainStore.shared.get(provider.keychainKey), !apiKey.isEmpty else { + providerModelFetchError[provider] = "No API key — add it in Settings." + return + } + loadingProviderModels.insert(provider) + providerModelFetchError.removeValue(forKey: provider) + Task { + let models: [(id: String, label: String)] + switch provider { + case .anthropic: models = await ClaudeService.fetchModels(apiKey: apiKey) + case .google: models = await ClaudeService.fetchGoogleModels(apiKey: apiKey) + case .openai: models = await ClaudeService.fetchOpenAIModels(apiKey: apiKey) + case .ollama, .lmstudio: models = [] // handled above + } + loadingProviderModels.remove(provider) + if models.isEmpty { + providerModelFetchError[provider] = "Failed to load models. Check your API key." + } else { + fetchedProviderModels[provider] = models + switch provider { + case .anthropic: + if !models.contains(where: { $0.id == claudeModel }) { + claudeModel = models.first(where: { $0.id.contains("sonnet") })?.id ?? models.first!.id + } + case .google: + if !models.contains(where: { $0.id == googleChatModel }) { + googleChatModel = models.first(where: { $0.id.contains("flash") })?.id ?? models.first!.id + } + case .openai: + if !models.contains(where: { $0.id == openAIChatModel }) { + openAIChatModel = models.first(where: { $0.id.contains("mini") })?.id ?? models.first!.id + } + case .ollama, .lmstudio: break + } + } + } + } + + /// The model currently active for chat (provider-aware). + var activeChatModel: String { + switch chatProvider { + case .anthropic: return claudeModel + case .google: return googleChatModel + case .openai: return openAIChatModel + case .ollama: return ollamaChatModel + case .lmstudio: return lmstudioChatModel + } + } + + // Sound volume (0–0.2) — persisted, synced to SoundEngine + @Published var soundVolume: Double = 0.12 { + didSet { + UserDefaults.standard.set(soundVolume, forKey: "soundVolume") + SoundEngine.shared.volume = Float(soundVolume) + } + } + + // Context for prompt (window attach / file) + @Published var promptContext: PromptContext? = nil + + // Dropped file (set during upload flow) + @Published var droppedFile: DroppedFile? = nil + + // Short note message (shown in NoteView) + @Published var noteMessage: String? = nil + + // Auto-close delay — persisted + @Published var autoCloseInterval: TimeInterval = 15 { + didSet { UserDefaults.standard.set(autoCloseInterval, forKey: "autoCloseInterval") } + } + + // Absence interval — persisted + var absenceInterval: TimeInterval = 3 * 60 { + didSet { UserDefaults.standard.set(absenceInterval, forKey: "absenceInterval") } + } + + // Greeting threshold — how long hidden before greeting on reappear (default 2 min) + var greetThresholdSeconds: TimeInterval = 120 { + didSet { UserDefaults.standard.set(greetThresholdSeconds, forKey: "greetThreshold") } + } + + // Hotkey to show island (e.g. ⌘⇧N) + @Published var hotkeyEnabled: Bool = false { + didSet { UserDefaults.standard.set(hotkeyEnabled, forKey: "hotkeyEnabled") } + } + var hotkeyFlags: UInt = NSEvent.ModifierFlags([.command, .shift]).rawValue { + didSet { UserDefaults.standard.set(Int(hotkeyFlags), forKey: "hotkeyFlags") } + } + var hotkeyCode: UInt16 = 45 { // 'n' + didSet { UserDefaults.standard.set(Int(hotkeyCode), forKey: "hotkeyCode") } + } + + // Vercel project filter — empty = watch all projects + @Published var vercelProjectFilter: Set = [] { + didSet { + if let data = try? JSONEncoder().encode(Array(vercelProjectFilter)) { + UserDefaults.standard.set(data, forKey: "vercelProjectFilter") + } + } + } + + // n8n workflow filter — empty = watch all workflows + @Published var n8nWorkflowFilter: Set = [] { + didSet { + if let data = try? JSONEncoder().encode(Array(n8nWorkflowFilter)) { + UserDefaults.standard.set(data, forKey: "n8nWorkflowFilter") + } + } + } + + // Active integration pills (main workspace pill excluded). Max 4. + @Published var activeIntegrations: Set = ["integration_resend", "integration_n8n", "integration_vercel", "integration_github"] { + didSet { + if let data = try? JSONEncoder().encode(Array(activeIntegrations)) { + UserDefaults.standard.set(data, forKey: "activeIntegrations") + } + // Clear stale GitHub data when the integration is disabled + if !activeIntegrations.contains("integration_github") && oldValue.contains("integration_github") { + githubPulse = nil + githubActivity = nil + } + } + } + + // Pending API result + @Published var searchResult: SearchResult? = nil + + // Vercel deployments (populated by VercelPoller) + @Published var vercelDeployments: [VercelDeployment] = [] + + // Resend emails (populated by ResendPoller) + @Published var resendEmails: [ResendEmail] = [] + @Published var resendTotal: Int? = nil + + // GitHub stats + pulse + activity (populated by GithubPoller) + @Published var githubStats: GitHubStats? = nil + @Published var githubPulse: GitHubPulse? = nil + @Published var githubActivity: GitHubActivity? = nil + + // Stripe (populated by StripePoller) + @Published var stripePayments: [StripePayment] = [] + @Published var stripeBalance: Int = 0 // raw balance in cents + @Published var stripeDisplayBalance: Int = 0 // animated balance target + @Published var stripeCurrency: String = "eur" + @Published var stripeLoaded: Bool = false // true after first successful poll + @Published var stripeError: String? = nil // last API error (nil = ok) + + // Cal.com (populated by CalcomPoller) + @Published var calcomBookings: [CalcomBooking] = [] + @Published var calcomLoaded: Bool = false + @Published var calcomError: String? = nil + + // Notion (populated by NotionPoller) + @Published var notionPages: [NotionPage] = [] + @Published var notionLoaded: Bool = false + @Published var notionError: String? = nil + + // n8n — the last executions, newest first (for the iPhone; the notch shows only the latest) + @Published var n8nRuns: [N8nRun] = [] + + // Chat conversation history + @Published var chatHistory: [ChatMessage] = [] + + // Pending approval request from Claude Code hook + @Published var pendingApproval: ApprovalInfo? = nil + + // Pending AskUserQuestion from Claude Code hook + @Published var pendingQuestion: AskQuestion? = nil + + // Per-pill flat list of FileDiffs, in order of reception. + // Not @Published — steps[] changes already trigger redraws. + var sessionDiffs: [String: [FileDiff]] = [:] + private var sessionDiffTimers: [String: DispatchWorkItem] = [:] + // Monotonically increasing — never reset, not even in clearSessionDiffs. + private var nextDiffId: Int = 0 + + @discardableResult + func appendSessionDiff(_ diff: FileDiff, for pillId: String) -> Int { + var d = diff + d.id = nextDiffId + nextDiffId += 1 + if sessionDiffs[pillId] == nil { sessionDiffs[pillId] = [] } + sessionDiffs[pillId]!.append(d) + // Keep at most 50 diffs per pill; drop oldest first + while sessionDiffs[pillId]!.count > 50 { + sessionDiffs[pillId]!.removeFirst() + } + resetSessionDiffTimer(for: pillId) + return d.id + } + + func clearSessionDiffs(for pillId: String) { + sessionDiffTimers[pillId]?.cancel() + sessionDiffTimers.removeValue(forKey: pillId) + sessionDiffs.removeValue(forKey: pillId) + // nextDiffId intentionally NOT reset — ids remain unique across sessions + } + + private func resetSessionDiffTimer(for pillId: String) { + sessionDiffTimers[pillId]?.cancel() + let work = DispatchWorkItem { [weak self] in + DispatchQueue.main.async { self?.clearSessionDiffs(for: pillId) } + } + sessionDiffTimers[pillId] = work + DispatchQueue.global().asyncAfter(deadline: .now() + 3600, execute: work) + } + + #if !APPSTORE + @Published var musicPlaying: Bool = false + @Published var musicAutomationDenied: Bool = false + #endif + + // Claude plan gauge (from statusline hook) + @Published var claudePlanUsage: PlanUsage? = nil { + didSet { + if let u = claudePlanUsage, + let data = try? JSONEncoder().encode(u) { + UserDefaults.standard.set(data, forKey: "claudePlanUsage") + } + } + } + + // Plan gauge: show pill in notch header — persisted + #if !APPSTORE + @Published var showPlanInNotch: Bool = false { + didSet { UserDefaults.standard.set(showPlanInNotch, forKey: "showPlanInNotch") } + } + // Cached relay-installed state — updated at launch, after install/uninstall, on Settings open + @Published var planRelayInstalled: Bool = false + // Transient — reset when island closes or view changes + @Published var showingPlanDetail: Bool = false + + func refreshPlanRelayState() { + planRelayInstalled = HookServer.statusLineInstalled() + } + #endif + + // MARK: - Init (loads persisted settings) + + private init() { + let ud = UserDefaults.standard + + if let v = ud.object(forKey: "soundEnabled") as? Bool { soundEnabled = v } + if let v = ud.object(forKey: "soundVolume") as? Double { soundVolume = v } + mochiOutfitSelection = Outfit.stored + if let v = ud.string(forKey: "claudeModel"), + !v.trimmingCharacters(in: .whitespaces).isEmpty { claudeModel = v } + if let v = ud.string(forKey: "chatProvider"), let p = ChatProvider(rawValue: v) { chatProvider = p } + if let v = ud.string(forKey: "googleChatModel"), !v.isEmpty { googleChatModel = v } + if let v = ud.string(forKey: "openAIChatModel"), !v.isEmpty { openAIChatModel = v } + if let v = ud.string(forKey: "ollamaChatModel"), !v.isEmpty { ollamaChatModel = v } + if let v = ud.string(forKey: "lmstudioChatModel"), !v.isEmpty { lmstudioChatModel = v } + if let v = ud.string(forKey: "ollamaServerURL"), !v.isEmpty { ollamaServerURL = v } + if let v = ud.string(forKey: "lmstudioServerURL"), !v.isEmpty { lmstudioServerURL = v } + // Migrate old 60s default → 15s + if let v = ud.object(forKey: "autoCloseInterval") as? Double { + autoCloseInterval = (v == 60) ? 15 : v + } + if let v = ud.object(forKey: "absenceInterval") as? Double { absenceInterval = v } + if let v = ud.object(forKey: "greetThreshold") as? Double { greetThresholdSeconds = v } + if let v = ud.object(forKey: "hotkeyEnabled") as? Bool { hotkeyEnabled = v } + if let v = ud.object(forKey: "hotkeyFlags") as? Int { hotkeyFlags = UInt(v) } + if let v = ud.object(forKey: "hotkeyCode") as? Int { hotkeyCode = UInt16(v) } + if let d = ud.data(forKey: "vercelProjectFilter"), + let a = try? JSONDecoder().decode([String].self, from: d) { vercelProjectFilter = Set(a) } + if let d = ud.data(forKey: "n8nWorkflowFilter"), + let a = try? JSONDecoder().decode([String].self, from: d) { n8nWorkflowFilter = Set(a) } + if let d = ud.data(forKey: "activeIntegrations"), + let a = try? JSONDecoder().decode([String].self, from: d) { activeIntegrations = Set(a) } + if let v = ud.string(forKey: "mainPill"), !v.isEmpty, + PillCatalog.available.contains(where: { $0.id == v && $0.category == .workspace && !$0.comingSoon }) { + mainPillId = v + } + if let d = ud.data(forKey: "claudePlanUsage"), + let u = try? JSONDecoder().decode(PlanUsage.self, from: d) { claudePlanUsage = u } + #if !APPSTORE + if let v = ud.object(forKey: "showPlanInNotch") as? Bool { showPlanInNotch = v } + planRelayInstalled = HookServer.statusLineInstalled() + #endif + + // Sync SoundEngine volume on launch + SoundEngine.shared.volume = Float(soundVolume) + + // Always load integration pills + loadIntegrationTasks() + } + + // MARK: - Computed + + var focusTask: AgentTask? { + tasks.first { $0.id == focusId } ?? tasks.first + } + + var effectiveState: BotState { + stateOverride ?? focusTask?.state ?? .idle + } + + // MARK: - Task management + + func addTask(_ task: AgentTask) { + guard !tasks.contains(where: { $0.id == task.id }) else { return } + tasks.append(task) + if focusId == nil { focusId = task.id } + syncMode() + syncView() + } + + func removeTask(id: String) { + // mainPillId: always reset, never remove (the active workspace tool) + // activeIntegrations: also reset (user declared it active, keep it as idle) + let isProtected = id == mainPillId + let isActiveDecl = PillCatalog.definition(for: id) != nil && activeIntegrations.contains(id) + if isProtected || isActiveDecl { + if let idx = tasks.firstIndex(where: { $0.id == id }) { + let catalogName = PillCatalog.definition(for: id)?.name + tasks[idx].state = .idle + tasks[idx].steps = [] + tasks[idx].stepIndex = 0 + tasks[idx].pillBadge = nil + if let n = catalogName { tasks[idx].name = n } + } + return + } + // Undeclared or declared-but-not-active: remove + tasks.removeAll { $0.id == id } + if focusId == id { focusId = mainPillId } + syncMode() + syncView() + } + + func updateTask(id: String, state: BotState) { + guard let idx = tasks.firstIndex(where: { $0.id == id }) else { return } + tasks[idx].state = state + } + + func setFocus(_ id: String) { + guard let idx = tasks.firstIndex(where: { $0.id == id }) else { return } + focusId = id + tasks[idx].pillBadge = nil // clear badge when user brings task to focus + } + + func setPillBadge(_ badge: PillBadge, for id: String) { + guard let idx = tasks.firstIndex(where: { $0.id == id }) else { return } + tasks[idx].pillBadge = badge + } + + /// Called on main thread after each GitHub pulse poll. Fires badge + sound based on events. + func handleGitHubEvents(_ events: [GitHubEvent]) { + guard !events.isEmpty else { return } + // Priority: error > question (reviewRequested) > finish (ciPassed) + var level = 0 // 0 = none, 1 = finish, 2 = question, 3 = error + var badge: PillBadge? + var sound: String? + for event in events { + switch event { + case .ciFailed, .mainFailed: + if level < 3 { level = 3; badge = .error; sound = "error" } + case .reviewRequested: + if level < 2 { level = 2; badge = .finished; sound = "question" } + case .ciPassed: + if level < 1 { level = 1; badge = .finished; sound = "finish" } + } + } + // Only set badge when the GitHub pill is not currently in focus + if let b = badge, focusId != "integration_github" { setPillBadge(b, for: "integration_github") } + if let s = sound { SoundEngine.shared.play(s) } + } + + func syncMode() { + // If no tasks and not expanded/peek, go hidden + if tasks.isEmpty && mode == .compact { + mode = .hidden + } else if !tasks.isEmpty && mode == .hidden && isPresent { + mode = .compact + } + } + + func syncView() { + guard mode == .expanded else { return } + if view == .empty && !tasks.isEmpty { view = .overview } + else if view == .overview && tasks.isEmpty { view = .empty } + } + + /// Load catalog pills into tasks, respecting activeIntegrations. Safe to call multiple times. + func loadIntegrationTasks() { + let catalog = PillCatalog.available + // Sanitize: remove saved IDs not in catalog + let catalogIds = Set(catalog.map { $0.id }) + activeIntegrations = activeIntegrations.filter { catalogIds.contains($0) } + // Validate mainPillId: must be a non-comingSoon workspace pill in the catalog + if !PillCatalog.available.contains(where: { $0.id == mainPillId && $0.category == .workspace && !$0.comingSoon }) { + mainPillId = PillCatalog.defaultMainPillId + } + // mainPillId must never be in activeIntegrations (migration + invariant) + activeIntegrations.remove(mainPillId) + for def in catalog { + // mainPillId always loads; activeIntegrations load + let shouldLoad = def.id == mainPillId || activeIntegrations.contains(def.id) + let loaded = tasks.contains(where: { $0.id == def.id }) + if shouldLoad && !loaded { + let task = AgentTask(id: def.id, name: def.name, color: def.color, + state: .idle, steps: [], source: def.source, isIntegration: true) + tasks.append(task) + } + if !shouldLoad && loaded { + tasks.removeAll { $0.id == def.id } + } + } + sortTasksByCatalog() + if focusId == nil { focusId = mainPillId } + syncMode() + } + + /// Toggle a catalog pill on/off. + /// mainPillId: never toggleable (change via the Main picker first). + /// Max 4 non-main pills active at once. + func toggleIntegration(_ id: String) { + guard id != mainPillId else { return } + guard PillCatalog.available.contains(where: { $0.id == id }) else { return } + if activeIntegrations.contains(id) { + activeIntegrations.remove(id) + tasks.removeAll { $0.id == id } + if focusId == id { focusId = mainPillId } + } else { + guard activeIntegrations.count < 4 else { return } + activeIntegrations.insert(id) + if let def = PillCatalog.available.first(where: { $0.id == id }), + !tasks.contains(where: { $0.id == id }) { + let task = AgentTask(id: def.id, name: def.name, color: def.color, + state: .idle, steps: [], source: def.source, isIntegration: true) + tasks.append(task) + sortTasksByCatalog() + } + } + syncMode() + } + + /// Sort tasks so catalog pills are in catalog order, undeclared pills sit right after + /// integration_claude (matching HookServer insertion behaviour), and the rest follows. + private func sortTasksByCatalog() { + let order = PillCatalog.available.enumerated() + .reduce(into: [String: Int]()) { $0[$1.element.id] = $1.offset } + let catalogPills = tasks.filter { order[$0.id] != nil } + let undeclaredPills = tasks.filter { order[$0.id] == nil } + let sortedCatalog = catalogPills.sorted { (order[$0.id] ?? 0) < (order[$1.id] ?? 0) } + if let claudeIdx = sortedCatalog.firstIndex(where: { $0.id == "integration_claude" }) { + var result: [AgentTask] = Array(sortedCatalog[...claudeIdx]) + result.append(contentsOf: undeclaredPills) + if claudeIdx + 1 < sortedCatalog.count { + result.append(contentsOf: sortedCatalog[(claudeIdx + 1)...]) + } + tasks = result + } else { + tasks = undeclaredPills + sortedCatalog + } + } + +} + +// MARK: - Supporting types + +enum PromptContext { + case window(appName: String, title: String, url: String?) + case file(name: String, fileURL: URL?) +} + +struct DroppedFile { + var url: URL + var name: String +} + +struct SearchResult { + var title: String + var items: [ResultItem] + var note: String? +} + +struct ResultItem { + var label: String + var detail: String + var url: String? +} + +// MARK: - Vercel + +struct VercelDeployment: Identifiable { + let id: String + let projectName: String + let url: String + let state: String // "READY", "ERROR", "CANCELED" + let createdAt: Date + let commitMessage: String? + let branch: String? + + var isSuccess: Bool { state == "READY" } + var statusLabel: String { isSuccess ? "Ready" : (state == "CANCELED" ? "Canceled" : "Error") } + var timeAgo: String { + let diff = Date().timeIntervalSince(createdAt) + if diff < 60 { return "just now" } + if diff < 3600 { return "\(Int(diff/60))m" } + if diff < 86400 { return "\(Int(diff/3600))h" } + return "\(Int(diff/86400))d" + } +} + +// MARK: - Resend + +struct ResendEmail: Identifiable { + let id: String + let to: [String] + let subject: String + let createdAt: Date + let lastEvent: String // "delivered", "bounced", "complained", "opened", etc. + + var recipientShort: String { + guard let first = to.first else { return "?" } + return first.components(separatedBy: "@").first ?? first + } + var timeAgo: String { + let diff = Date().timeIntervalSince(createdAt) + if diff < 60 { return "just now" } + if diff < 3600 { return "\(Int(diff/60))m" } + if diff < 86400 { return "\(Int(diff/3600))h" } + return "\(Int(diff/86400))d" + } + var isDelivered: Bool { lastEvent == "delivered" } +} + +// MARK: - GitHub + +struct GitHubStats { + let totalRepos: Int + let totalStars: Int +} + +// MARK: - Stripe + +struct StripePayment: Identifiable, Equatable { + let id: String + let amount: Int // in cents/smallest unit + let currency: String + let description: String? + let createdAt: Date + let status: String // "succeeded", "pending", "failed" + + var amountFormatted: String { String(format: "%.2f", Double(amount) / 100.0) } + var isSuccess: Bool { status == "succeeded" } + var timeAgo: String { + let diff = Date().timeIntervalSince(createdAt) + if diff < 60 { return "just now" } + if diff < 3600 { return "\(Int(diff/60))m" } + if diff < 86400 { return "\(Int(diff/3600))h" } + return "\(Int(diff/86400))d" + } +} + +// MARK: - Cal.com + +struct CalcomBooking: Identifiable, Equatable { + let id: Int + let title: String + let startTime: Date + let endTime: Date + let status: String + let attendeeName: String? + let attendeeEmail: String? + let attendeeNotes: String? + + var isActive: Bool { status == "ACCEPTED" || status == "PENDING" } + var timeLabel: String { + let f = DateFormatter(); f.dateFormat = "HH:mm"; return f.string(from: startTime) + } + var dayKey: String { + let c = Calendar.current.dateComponents([.year, .month, .day], from: startTime) + return "\(c.year!)-\(String(format: "%02d", c.month!))-\(String(format: "%02d", c.day!))" + } +} + +// MARK: - Notion + +struct N8nRun: Equatable { + let workflow: String + let detail: String? + let success: Bool + let date: Date +} + +struct NotionPage: Identifiable { + let id: String + let title: String + let emoji: String? + let lastEditedAt: Date + let url: String + + var timeAgo: String { + let diff = Date().timeIntervalSince(lastEditedAt) + if diff < 60 { return "now" } + if diff < 3600 { return "\(Int(diff/60))m" } + if diff < 86400 { return "\(Int(diff/3600))h" } + return "\(Int(diff/86400))d" + } +} + +// MARK: - Chat + +enum ChatRole { case user, assistant } + +struct ChatMessage: Identifiable, Equatable { + let id = UUID() + let role: ChatRole + var content: String // var for streaming updates +} diff --git a/NotchBuddy/Sources/App/AskQuestion.swift b/NotchBuddy/Sources/App/AskQuestion.swift new file mode 100644 index 0000000..e3e7266 --- /dev/null +++ b/NotchBuddy/Sources/App/AskQuestion.swift @@ -0,0 +1,60 @@ +import Foundation + +// MARK: - AskUserQuestion model (Foundation-only, testable) + +struct AskQuestionOption: Equatable { + var label: String + var description: String +} + +struct AskQuestionItem: Equatable { + var question: String // full question text + var header: String // ≤12 chars; used as section label + var options: [AskQuestionOption] // 2–4 choices + var multiSelect: Bool +} + +struct AskQuestion: Equatable { + var questions: [AskQuestionItem] // 1–4 questions + + // MARK: - Parse from tool_input dict + // Returns nil if the payload is malformed (fallback → Allow/Deny card). + static func parse(toolInput: [String: Any]) -> AskQuestion? { + guard let rawQs = toolInput["questions"] as? [[String: Any]], + !rawQs.isEmpty, rawQs.count <= 4 else { return nil } + var items: [AskQuestionItem] = [] + for raw in rawQs { + guard let question = raw["question"] as? String, !question.isEmpty, + let rawOpts = raw["options"] as? [[String: Any]], + rawOpts.count >= 2, rawOpts.count <= 4 else { return nil } + var opts: [AskQuestionOption] = [] + for opt in rawOpts { + guard let label = opt["label"] as? String, !label.isEmpty else { return nil } + let desc = opt["description"] as? String ?? "" + opts.append(AskQuestionOption(label: label, description: desc)) + } + let rawHeader = raw["header"] as? String ?? "" + let header = String(rawHeader.prefix(12)) + let multi = raw["multiSelect"] as? Bool ?? false + items.append(AskQuestionItem(question: question, header: header, options: opts, multiSelect: multi)) + } + return AskQuestion(questions: items) + } + + // MARK: - Build answers dict + // selections[i] = list of labels selected for question[i]. + // Single-select / Other…: one label → String value (Claude Code 2.1.85+). + // Multi-select: array of labels → [String] value (Claude Code 2.1.136+). + static func buildAnswers(questions: [AskQuestionItem], selections: [[String]]) -> [String: Any] { + var answers: [String: Any] = [:] + for (i, item) in questions.enumerated() { + guard i < selections.count, !selections[i].isEmpty else { continue } + if item.multiSelect { + answers[item.question] = selections[i] // array for multi-select + } else { + answers[item.question] = selections[i][0] // string for single-select + } + } + return answers + } +} diff --git a/NotchBuddy/Sources/App/BotCanvasView.swift b/NotchBuddy/Sources/App/BotCanvasView.swift new file mode 100644 index 0000000..38f5598 --- /dev/null +++ b/NotchBuddy/Sources/App/BotCanvasView.swift @@ -0,0 +1,231 @@ +import SwiftUI + +/// SwiftUI wrapper: TimelineView drives a Canvas that calls BotEngine.draw(). +/// Uses a shared engine per-task; the main bot uses AppState's shared engine. +struct BotCanvasView: View { + @ObservedObject var state: AppState + var particleOverhang: CGFloat = 0 + /// When set, overrides island-based eye-tracking (used by desktop Mochi). + /// CGPoint in the same coord space as state.mousePosition (y-down from screen top). + var lookOriginOverride: CGPoint? = nil + + // One engine per view instance (main bot) + @StateObject private var engine = BotEngine() + + var body: some View { + TimelineView(.animation(paused: state.mode == .hidden)) { timeline in + Canvas { context, size in + let now = timeline.date.timeIntervalSinceReferenceDate + let dtRaw = min(0.05, now - engine.lastTime) + let dt = dtRaw + engine.lookX = lookX(state: state, size: size) + engine.lookY = lookY(state: state, size: size) + engine.particleOverhang = particleOverhang + // Widen slot when file is hovering over the mailbox (morph > 0.5) + // Open mouth (hover=0.20R) when file dragged over box; close when not + if engine.morph > 0.3 { + engine.slotHTarget = state.fileDragOver ? 0.20 : 0 + } else { + engine.slotHTarget = 0 + if engine.morph < 0.05 { engine.slotH = 0; engine.slotHVel = 0 } + } + // Integration pills have a fixed brand color → use it as bodyColor. + // Claude Code tasks use state-based gradient (working=blue, thinking=purple, etc.). + #if !APPSTORE + if state.showingPlanDetail { + let hex = ClaudePlanGauge.color(for: state.claudePlanUsage.flatMap { ClaudePlanGauge.dominantPct($0) }) + engine.bodyColor = cgColorFromHex(hex) + } else { + engine.bodyColor = (state.focusTask?.isIntegration == true) + ? cgColorFromHex(state.focusTask!.color) + : nil + } + #else + engine.bodyColor = (state.focusTask?.isIntegration == true) + ? cgColorFromHex(state.focusTask!.color) + : nil + #endif + + // Compute shouldDance per-frame (no observer lag) + let dancing: Bool = { + #if !APPSTORE + guard AppState.shared.musicPlaying else { return false } + guard AppState.shared.activeIntegrations.contains("integration_music") else { return false } + let allowed: Set = [.idle, .working, .thinking, .searching, .finished] + guard allowed.contains(state.effectiveState) else { return false } + if state.mode == .compact { return true } + return state.mode == .expanded && state.view == .overview && state.focusId == "integration_music" + #else + return false + #endif + }() + engine.setDancing(dancing) + let isWardrobe = state.mode == .expanded && state.view == .wardrobe + let isFocusMain = state.focusId == state.mainPillId || state.focusId == nil + let showOutfit = isFocusMain || state.mode != .expanded || isWardrobe + engine.setOutfit(showOutfit ? state.resolvedOutfit : .none, + animated: state.view != .wardrobe) + + engine.update(dt: dt) + var ctx = context + engine.applyDance(&ctx, size: size) + // Rigid-roll: when Mochi wears an outfit (presence > 0.05) and is rolling, + // rotate the entire body+accessories context around the body center so the + // whole character genuinely turns. Particles/badge (drawHandsAndExtras) are + // drawn outside the rotated context and do not spin. + if engine.outfit != .none && engine.outfitPresence > 0.05 && abs(engine.roll) > 0.001 { + let center = engine.bodyCenter(size: size) + var rigidCtx = ctx + rigidCtx.translateBy(x: center.x, y: center.y) + rigidCtx.rotate(by: .radians(engine.roll)) + rigidCtx.translateBy(x: -center.x, y: -center.y) + engine.drawHandsBehind(context: rigidCtx, size: size) + engine.drawOutfitBehind(context: rigidCtx, size: size) + engine.draw(context: rigidCtx, size: size) + engine.drawOutfitFront(context: rigidCtx, size: size) + } else { + engine.drawHandsBehind(context: ctx, size: size) + engine.drawOutfitBehind(context: ctx, size: size) + engine.draw(context: ctx, size: size) + engine.drawOutfitFront(context: ctx, size: size) + } + engine.drawHandsAndExtras(context: ctx, size: size) + } + } + .onChange(of: state.effectiveState) { _, newState in + engine.setState(newState) + } + .onChange(of: state.view) { _, newView in + // Morph up when upload view is active + if state.mode == .expanded && newView == .upload { + engine.anim("morph", keys: [TweenKey(target: 1, duration: 550, ease: Ease.inOut)]) + } else if newView != .upload && newView != .uploading && engine.morph > 0.01 { + // Any other view (not mid-gulp): morph back + engine.anim("morph", keys: [TweenKey(target: 0, duration: 550, ease: Ease.inOut)]) + } + } + .onChange(of: state.mode) { _, newMode in + // Hard-reset morph when island collapses + if newMode != .expanded { + engine.tweens.removeValue(forKey: "morph") + engine.locks.remove("morph") + engine.morph = 0 + } + } + .onReceive(NotificationCenter.default.publisher(for: .triggerEmote)) { notif in + if let emote = notif.object as? BotEmote { + engine.triggerEmote(emote) + } + } + .onReceive(NotificationCenter.default.publisher(for: .triggerSlap)) { _ in + engine.slap() + } + .onReceive(NotificationCenter.default.publisher(for: .botBlink)) { _ in + engine.blink() + } + .onReceive(NotificationCenter.default.publisher(for: .botSetTgEs)) { notif in + if let v = notif.object as? CGFloat { + engine.tgEs = v + } + } + .onReceive(NotificationCenter.default.publisher(for: .botGulp)) { _ in + engine.gulp() + } + .onReceive(NotificationCenter.default.publisher(for: .botMorphTo)) { notif in + if let target = notif.object as? CGFloat { + let dur: CGFloat = target > 0.5 ? 550 : 650 + engine.anim("morph", keys: [TweenKey(target: target, duration: dur, ease: Ease.inOut)]) + } + } + .onReceive(NotificationCenter.default.publisher(for: .botGreet)) { _ in + engine.greet() + } + .onAppear { + engine.setState(state.effectiveState, force: true) + let isWardrobe = state.mode == .expanded && state.view == .wardrobe + let isFocusMain = state.focusId == state.mainPillId || state.focusId == nil + let showOutfit = isFocusMain || state.mode != .expanded || isWardrobe + engine.setOutfit(showOutfit ? state.resolvedOutfit : .none, animated: false) + } + } + + private func lookX(state: AppState, size: CGSize) -> CGFloat { + if let origin = lookOriginOverride { + return tanh((state.mousePosition.x - origin.x) / 260) + } + let screen = NSScreen.main ?? NSScreen.screens[0] + let (islandW, islandH) = islandSize(mode: state.mode, view: state.view, + progress: state.uploadProgress, + nw: state.notchWidth, nh: state.notchHeight) + let (botCx, _, _, _) = botPosition(mode: state.mode, view: state.view, + islandW: islandW, islandH: islandH, + uploadProgress: state.uploadProgress) + // Island is centered on screen; bot is at botCx within island coords + let botScreenX = screen.frame.midX - islandW / 2 + botCx + return tanh((state.mousePosition.x - botScreenX) / 260) + } + + private func lookY(state: AppState, size: CGSize) -> CGFloat { + if let origin = lookOriginOverride { + return -tanh((state.mousePosition.y - origin.y) / 200) + } + let (islandW, islandH) = islandSize(mode: state.mode, view: state.view, + progress: state.uploadProgress, + nw: state.notchWidth, nh: state.notchHeight) + let actualH: CGFloat = (state.mode == .expanded && state.view == .prompt) + ? min(300, 240 + CGFloat(state.chatHistory.count) * 40) + : islandH + let (_, botCy, _, _) = botPosition(mode: state.mode, view: state.view, + islandW: islandW, islandH: actualH, + uploadProgress: state.uploadProgress) + // Island top = screen top → bot screen Y = botCy from island top + return -tanh((state.mousePosition.y - botCy) / 200) + } +} + +/// Mini bot canvas (for agent pills/column) +struct MiniBotCanvasView: View { + let task: AgentTask + var isDancing: Bool = false + @StateObject private var engine: BotEngine + + init(task: AgentTask, isDancing: Bool = false) { + self.task = task + self.isDancing = isDancing + _engine = StateObject(wrappedValue: { + let e = BotEngine() + e.isMini = true + e.bodyColor = cgColorFromHex(task.color) + return e + }()) + } + + var body: some View { + TimelineView(.animation) { timeline in + Canvas { context, size in + let now = timeline.date.timeIntervalSinceReferenceDate + let dt = min(0.05, now - engine.lastTime) + engine.setDancing(isDancing) + engine.update(dt: dt) + var ctx = context + engine.applyDance(&ctx, size: size) + engine.draw(context: ctx, size: size) + } + } + .onChange(of: task.state) { _, newState in + engine.setState(newState) + } + .onAppear { + engine.setState(task.state, force: true) + if let emote = task.emote { + engine.setPermanentEmote(emote) + } + // Direct eye override takes priority (e.g. .wide eyes for Research) + if let eye = task.miniEye { + engine.permanentEye = eye + engine.eyeOverride = eye + engine.eyeOverrideUntil = .greatestFiniteMagnitude + } + } + } +} diff --git a/NotchBuddy/Sources/App/CalcomPoller.swift b/NotchBuddy/Sources/App/CalcomPoller.swift new file mode 100644 index 0000000..8f49b3d --- /dev/null +++ b/NotchBuddy/Sources/App/CalcomPoller.swift @@ -0,0 +1,104 @@ +import Foundation + +final class CalcomPoller: @unchecked Sendable { + static let shared = CalcomPoller() + private var timer: DispatchSourceTimer? + private init() {} + + func start() { + guard timer == nil else { return } + let t = DispatchSource.makeTimerSource(queue: .global(qos: .background)) + t.schedule(deadline: .now() + 8, repeating: 300) + t.setEventHandler { [weak self] in self?.poll() } + t.resume() + timer = t + } + + func pollNow() { poll() } + + private func poll() { + guard let key = KeychainStore.shared.get("calcom-api-key") else { return } + let cal = Calendar.current + let today = cal.startOfDay(for: Date()) + let future = cal.date(byAdding: .day, value: 60, to: today)! + let iso = ISO8601DateFormatter(); iso.formatOptions = [.withInternetDateTime] + let startStr = iso.string(from: today) + let endStr = iso.string(from: future) + + // API v2 (2024-08-13) filters on afterStart / beforeEnd; `start` and `end` aren't + // query parameters there, so they returned nothing. + var components = URLComponents(string: "https://api.cal.com/v2/bookings")! + components.queryItems = [URLQueryItem(name: "status", value: "upcoming"), + URLQueryItem(name: "afterStart", value: startStr), + URLQueryItem(name: "beforeEnd", value: endStr), + URLQueryItem(name: "take", value: "50")] + guard let url = components.url else { return } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue("Bearer \(key)", forHTTPHeaderField: "Authorization") + req.setValue("2024-08-13", forHTTPHeaderField: "cal-api-version") + + URLSession.shared.dataTask(with: req) { [weak self] data, response, error in + guard let self else { return } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + if code != 200 { + let msg: String + if code == 401 { msg = "Invalid API key (401)" } + else if code == 0 { msg = error?.localizedDescription ?? "No connection" } + else { msg = "API error \(code)" } + DispatchQueue.main.async { AppState.shared.calcomError = msg } + return + } + guard let data, + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let rawList = json["data"] as? [[String: Any]] else { return } + + let parsed = rawList.compactMap { self.parseBooking($0) } + DispatchQueue.main.async { + AppState.shared.calcomError = nil + AppState.shared.calcomBookings = parsed + AppState.shared.calcomLoaded = true + } + }.resume() + } + + private func parseBooking(_ b: [String: Any]) -> CalcomBooking? { + let id: Int + if let i = b["id"] as? Int { id = i } + else if let s = b["id"] as? String, let i = Int(s) { id = i } + else { return nil } + + let title = (b["title"] as? String) ?? "Meeting" + let status = (b["status"] as? String) ?? "accepted" + guard let startStr = (b["start"] as? String) ?? (b["startTime"] as? String) else { return nil } + + let iso = ISO8601DateFormatter() + iso.formatOptions = [.withInternetDateTime, .withFractionalSeconds] + var startTime = iso.date(from: startStr) + if startTime == nil { + let iso2 = ISO8601DateFormatter(); iso2.formatOptions = [.withInternetDateTime] + startTime = iso2.date(from: startStr) + } + guard let startTime else { return nil } + + let endStr = (b["end"] as? String) ?? (b["endTime"] as? String) ?? "" + let endTime: Date = iso.date(from: endStr) ?? startTime + + let attendees = b["attendees"] as? [[String: Any]] ?? [] + let first = attendees.first + let name = first?["name"] as? String + let email = first?["email"] as? String + + var notes: String? = nil + if let responses = b["responses"] as? [String: Any], + let notesObj = responses["notes"] as? [String: Any] { + notes = notesObj["value"] as? String + } + if (notes == nil || notes!.isEmpty), let desc = b["description"] as? String, !desc.isEmpty { + notes = desc + } + + return CalcomBooking(id: id, title: title, startTime: startTime, endTime: endTime, + status: status, attendeeName: name, attendeeEmail: email, + attendeeNotes: notes) + } +} diff --git a/NotchBuddy/Sources/App/ChatMarkdown.swift b/NotchBuddy/Sources/App/ChatMarkdown.swift new file mode 100644 index 0000000..506f41f --- /dev/null +++ b/NotchBuddy/Sources/App/ChatMarkdown.swift @@ -0,0 +1,118 @@ +import Foundation + +// MARK: - Markdown block types + +enum MDBlock { + case heading(level: Int, text: String) + case paragraph(text: String) + case codeBlock(lang: String, code: String) + /// prefix: "•" for unordered, "1." / "2." etc for ordered; indent: nesting level (0-based) + case listItem(prefix: String, text: String, indent: Int) + case quote(text: String) + case rule +} + +// MARK: - Parser (Foundation only) + +enum ChatMarkdown { + + static func parse(_ input: String) -> [MDBlock] { + var blocks: [MDBlock] = [] + let lines = input.components(separatedBy: "\n") + var i = 0 + while i < lines.count { + let line = lines[i] + + // Fenced code block + if line.hasPrefix("```") { + let lang = String(line.dropFirst(3)).trimmingCharacters(in: .whitespaces) + var code: [String] = [] + i += 1 + while i < lines.count && !lines[i].hasPrefix("```") { + code.append(lines[i]) + i += 1 + } + blocks.append(.codeBlock(lang: lang, code: code.joined(separator: "\n"))) + i += 1 + continue + } + + // ATX heading — MUST have space after the #s + if line.hasPrefix("#") { + var level = 0 + var rest = line + while rest.hasPrefix("#") { level += 1; rest = String(rest.dropFirst()) } + // Require a space (or end of line) after the hashes + if rest.hasPrefix(" ") || rest.isEmpty { + let text = rest.trimmingCharacters(in: .whitespaces) + if !text.isEmpty { blocks.append(.heading(level: min(level, 6), text: text)) } + i += 1 + continue + } + // else fall through to paragraph + } + + // Horizontal rule + let stripped = line.trimmingCharacters(in: .whitespaces) + if stripped == "---" || stripped == "***" || stripped == "___" { + blocks.append(.rule) + i += 1 + continue + } + + // Blockquote + if stripped.hasPrefix("> ") || stripped == ">" { + let text = stripped.hasPrefix("> ") ? String(stripped.dropFirst(2)) : "" + blocks.append(.quote(text: text)) + i += 1 + continue + } + + // List item — detect indent level by leading spaces, then match marker + let leadingSpaces = line.prefix(while: { $0 == " " }).count + let indent = leadingSpaces / 2 + if stripped.hasPrefix("- ") || stripped.hasPrefix("* ") || stripped.hasPrefix("+ ") { + let text = String(stripped.dropFirst(2)) + blocks.append(.listItem(prefix: "•", text: text, indent: indent)) + i += 1 + continue + } + // Ordered list item + if let range = stripped.range(of: "^(\\d+)\\.\\s+", options: .regularExpression) { + let number = String(stripped[.. ") || nextStripped == ">" { break } + if nextStripped.hasPrefix("- ") || nextStripped.hasPrefix("* ") || nextStripped.hasPrefix("+ ") { break } + if nextStripped == "---" || nextStripped == "***" || nextStripped == "___" { break } + // Break before ordered list items too + if nextStripped.range(of: "^\\d+\\.\\s+", options: .regularExpression) != nil { break } + paragraphLines.append(next) + i += 1 + } + blocks.append(.paragraph(text: paragraphLines.joined(separator: "\n"))) + } + return blocks + } +} diff --git a/NotchBuddy/Sources/App/ChatMarkdownView.swift b/NotchBuddy/Sources/App/ChatMarkdownView.swift new file mode 100644 index 0000000..b8962a6 --- /dev/null +++ b/NotchBuddy/Sources/App/ChatMarkdownView.swift @@ -0,0 +1,117 @@ +import SwiftUI + +// MARK: - Markdown renderer for chat assistant messages + +struct ChatMarkdownView: View { + let markdown: String + + var body: some View { + VStack(alignment: .leading, spacing: 6) { + ForEach(Array(ChatMarkdown.parse(markdown).enumerated()), id: \.offset) { _, block in + blockView(block) + } + } + .environment(\.openURL, OpenURLAction { url in + guard let safe = safeWebURL(url.absoluteString) else { return .discarded } + NSWorkspace.shared.open(safe) + return .handled + }) + } + + @ViewBuilder + private func blockView(_ block: MDBlock) -> some View { + switch block { + case .heading(let level, let text): + Text(inlineAttributed(text)) + .font(.system(size: level <= 2 ? 14 : 13, weight: level <= 2 ? .bold : .semibold)) + .foregroundColor(Color(hex: "#F1F2F4")) + .fixedSize(horizontal: false, vertical: true) + .textSelection(.enabled) + + case .paragraph(let text): + Text(inlineAttributed(text)) + .font(.system(size: 12.5)) + .foregroundColor(Color(hex: "#B0B5BE")) + .fixedSize(horizontal: false, vertical: true) + .textSelection(.enabled) + + case .codeBlock(_, let code): + HStack(alignment: .top) { + Text(code) + .font(.system(size: 11, design: .monospaced)) + .foregroundColor(Color(hex: "#C8CDD4")) + .fixedSize(horizontal: false, vertical: true) + .textSelection(.enabled) + .frame(maxWidth: .infinity, alignment: .leading) + CopyButton(text: code) + } + .padding(10) + .background(Color(hex: "#0D0E12")) + .clipShape(RoundedRectangle(cornerRadius: 8)) + .overlay(RoundedRectangle(cornerRadius: 8).stroke(Color.white.opacity(0.08), lineWidth: 1)) + + case .listItem(let prefix, let text, let indent): + HStack(alignment: .top, spacing: 6) { + Text(prefix) + .font(.system(size: 12.5)) + .foregroundColor(Color(hex: "#6B7079")) + .frame(minWidth: prefix.count > 2 ? 20 : 10, alignment: .leading) + Text(inlineAttributed(text)) + .font(.system(size: 12.5)) + .foregroundColor(Color(hex: "#B0B5BE")) + .fixedSize(horizontal: false, vertical: true) + .textSelection(.enabled) + } + .padding(.leading, CGFloat(indent) * 12) + + case .quote(let text): + HStack(alignment: .top, spacing: 8) { + Rectangle() + .fill(Color(hex: "#4B5563")) + .frame(width: 2) + .clipShape(Capsule()) + Text(inlineAttributed(text)) + .font(.system(size: 12.5)) + .foregroundColor(Color(hex: "#8A8F98")) + .fixedSize(horizontal: false, vertical: true) + .textSelection(.enabled) + } + + case .rule: + Divider().opacity(0.3) + } + } + + private func inlineAttributed(_ text: String) -> AttributedString { + var options = AttributedString.MarkdownParsingOptions( + interpretedSyntax: .inlineOnlyPreservingWhitespace) + options.failurePolicy = .returnPartiallyParsedIfPossible + return (try? AttributedString(markdown: text, options: options)) ?? AttributedString(text) + } +} + +// MARK: - Copy button + +private struct CopyButton: View { + let text: String + @State private var copied = false + + var body: some View { + Button { + NSPasteboard.general.clearContents() + NSPasteboard.general.setString(text, forType: .string) + withAnimation { copied = true } + DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) { + withAnimation { copied = false } + } + } label: { + Image(systemName: copied ? "checkmark" : "doc.on.doc") + .font(.system(size: 10)) + .foregroundColor(copied ? Color(hex: "#22C55E") : Color(hex: "#6B7079")) + } + .buttonStyle(.plain) + .frame(width: 22, height: 22) + .background(Color.white.opacity(0.06)) + .clipShape(RoundedRectangle(cornerRadius: 4)) + } +} diff --git a/NotchBuddy/Sources/App/ClaudePlanCardView.swift b/NotchBuddy/Sources/App/ClaudePlanCardView.swift new file mode 100644 index 0000000..e17bbce --- /dev/null +++ b/NotchBuddy/Sources/App/ClaudePlanCardView.swift @@ -0,0 +1,128 @@ +import SwiftUI + +// MARK: - Claude Plan Card View + +struct ClaudePlanCardView: View { + let usage: PlanUsage? // nil = installed, no data yet + + @State private var now = Date() + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(spacing: 6) { + let dominant = usage.flatMap { ClaudePlanGauge.dominantPct($0) } + Circle() + .fill(Color(hex: ClaudePlanGauge.color(for: dominant))) + .frame(width: 7, height: 7) + Text("Claude plan") + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + Text(subtitleText) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + .lineLimit(1) + .fixedSize() + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 36) + + // Gauge rows + VStack(alignment: .leading, spacing: 5) { + GaugeRowView(label: "5 hours", window: usage?.fiveHour, now: now) + GaugeRowView(label: "Week", window: usage?.sevenDay, now: now, weekly: true) + } + .padding(.top, 8) + .padding(.leading, 108) + .padding(.trailing, 12) + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + // Update countdown every 30s, only while visible + .background( + TimelineView(.periodic(from: .now, by: 30)) { ctx in + Color.clear.onChange(of: ctx.date) { _, d in now = d } + } + ) + } + + private var subtitleText: String { + guard let usage else { return "Waiting for a Claude Code reply" } + let diff = now.timeIntervalSince(usage.updatedAt) + if diff < 60 { return "just now" } + let mins = Int(diff / 60) + if mins < 60 { return "\(mins) min ago" } + return "\(mins / 60) h ago" + } +} + +// MARK: - Gauge Row + +// DateFormatter created once, in English, for the weekly reset label +private let weeklyResetFormatter: DateFormatter = { + let fmt = DateFormatter() + fmt.locale = Locale(identifier: "en_US_POSIX") + fmt.dateFormat = "EEE H:mm" + return fmt +}() + +private struct GaugeRowView: View { + let label: String + let window: PlanWindow? + let now: Date + var weekly: Bool = false + + var body: some View { + HStack(spacing: 5) { + Text(label) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#6B7079")) + .frame(width: 40, alignment: .leading) + if let w = window { + let pct = ClaudePlanGauge.effectivePct(w) + let accent = Color(hex: ClaudePlanGauge.color(for: pct)) + // Fixed-width bar (~50pt) + ZStack(alignment: .leading) { + Capsule() + .fill(Color.white.opacity(0.08)) + .frame(width: 50, height: 4) + Capsule() + .fill(accent) + .frame(width: max(0, 50 * CGFloat(pct / 100)), height: 4) + } + .frame(width: 50, height: 4) + Text("\(Int(pct.rounded()))%") + .font(.system(size: 11, weight: .semibold)) + .foregroundColor(Color(hex: "#C5C8CD")) + .monospacedDigit() + .frame(width: 30, alignment: .trailing) + Image(systemName: "arrow.clockwise") + .font(.system(size: 8)) + .foregroundColor(Color(hex: "#6B7079")) + Text(resetLabel(w)) + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + .fixedSize() + } else { + Text("—") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#6B7079")) + Spacer() + } + } + } + + private func resetLabel(_ w: PlanWindow) -> String { + let secs = w.resetsAt.timeIntervalSince(now) + guard secs > 0 else { return "Resetting…" } + if weekly { + return weeklyResetFormatter.string(from: w.resetsAt) + } else { + let h = Int(secs / 3600) + let m = Int((secs.truncatingRemainder(dividingBy: 3600)) / 60) + if h > 0 { return "in \(h) h \(m)" } + return "in \(m) min" + } + } +} diff --git a/NotchBuddy/Sources/App/ClaudePlanGauge.swift b/NotchBuddy/Sources/App/ClaudePlanGauge.swift new file mode 100644 index 0000000..e9258ad --- /dev/null +++ b/NotchBuddy/Sources/App/ClaudePlanGauge.swift @@ -0,0 +1,80 @@ +import Foundation + +// MARK: - Plan window + +struct PlanWindow: Codable { + let usedPct: Double // 0–100, clamped + let resetsAt: Date +} + +// MARK: - Plan usage + +struct PlanUsage: Codable { + var fiveHour: PlanWindow? + var sevenDay: PlanWindow? + var updatedAt: Date +} + +// MARK: - Parsing + helpers (Foundation-only, no AppKit/SwiftUI) + +enum ClaudePlanGauge { + + /// Parses rate_limits from a statusline payload dict. Returns nil if absent/malformed. + static func parse(payload: [String: Any]) -> PlanUsage? { + guard let limits = payload["rate_limits"] as? [String: Any] else { return nil } + let fh = parseWindow(limits["five_hour"]) + let sd = parseWindow(limits["seven_day"]) + guard fh != nil || sd != nil else { return nil } + return PlanUsage(fiveHour: fh, sevenDay: sd, updatedAt: Date()) + } + + private static func parseWindow(_ raw: Any?) -> PlanWindow? { + guard let d = raw as? [String: Any] else { return nil } + let rawPct: Double + if let v = d["used_percentage"] as? Double { rawPct = v } + else if let v = d["used_percentage"] as? Int { rawPct = Double(v) } + else { return nil } + guard rawPct >= 0, rawPct <= 200 else { return nil } + let pct = min(100, rawPct) // clamp 100–200 down to 100 + let rawEpoch: Double + if let v = d["resets_at"] as? Double { rawEpoch = v } + else if let v = d["resets_at"] as? Int { rawEpoch = Double(v) } + else { return nil } + guard rawEpoch > 0 else { return nil } + // Reject if more than 400 days in the future (likely milliseconds, not seconds) + let maxEpoch = Date().timeIntervalSince1970 + 400 * 86400 + guard rawEpoch <= maxEpoch else { return nil } + return PlanWindow(usedPct: pct, resetsAt: Date(timeIntervalSince1970: rawEpoch)) + } + + /// Effective % for display: 0 if the reset time is in the past. + static func effectivePct(_ w: PlanWindow) -> Double { + w.resetsAt <= Date() ? 0 : w.usedPct + } + + /// The higher of the two effective percentages. nil if both windows absent. + static func dominantPct(_ usage: PlanUsage) -> Double? { + let p1 = usage.fiveHour.map { effectivePct($0) } + let p2 = usage.sevenDay.map { effectivePct($0) } + switch (p1, p2) { + case (.none, .none): return nil + case (let x?, .none): return x + case (.none, let y?): return y + case (let x?, let y?): return max(x, y) + } + } + + /// Hex color for a given percentage (nil → grey). + static func color(for pct: Double?) -> String { + guard let p = pct else { return "#6B7079" } + if p < 50 { return "#22C55E" } + if p < 80 { return "#F59E0B" } + return "#F4505E" + } + + /// Label shown in the island pill chip. + static func pillLabel(_ usage: PlanUsage?) -> String { + guard let usage, let pct = dominantPct(usage) else { return "Claude plan" } + return "Claude \(Int(pct.rounded()))%" + } +} diff --git a/NotchBuddy/Sources/App/ClaudeService.swift b/NotchBuddy/Sources/App/ClaudeService.swift new file mode 100644 index 0000000..7ebeee1 --- /dev/null +++ b/NotchBuddy/Sources/App/ClaudeService.swift @@ -0,0 +1,639 @@ +import Foundation +import Security + +// MARK: - Keychain helpers + +enum Keychain { + static let service = "fr.louisraille.NotchBuddy" + + static func save(key: String, value: String) { + guard let data = value.data(using: .utf8) else { return } + // Delete existing item first (update pattern) + let lookup: [String: Any] = [ + kSecClass as String: kSecClassGenericPassword, + kSecAttrService as String: service, + kSecAttrAccount as String: key, + ] + SecItemDelete(lookup as CFDictionary) + // Add with strictest access control: + // WhenUnlockedThisDeviceOnly = accessible only while Mac is unlocked, + // never synced to iCloud, never migrated to another device. + let item: [String: Any] = [ + kSecClass as String: kSecClassGenericPassword, + kSecAttrService as String: service, + kSecAttrAccount as String: key, + kSecValueData as String: data, + kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly, + kSecAttrSynchronizable as String: kCFBooleanFalse!, + ] + SecItemAdd(item as CFDictionary, nil) + } + + static func load(key: String) -> String? { + let query: [String: Any] = [ + kSecClass as String: kSecClassGenericPassword, + kSecAttrService as String: service, + kSecAttrAccount as String: key, + kSecReturnData as String: true, + kSecMatchLimit as String: kSecMatchLimitOne, + ] + var result: AnyObject? + guard SecItemCopyMatching(query as CFDictionary, &result) == errSecSuccess, + let data = result as? Data else { return nil } + return String(data: data, encoding: .utf8) + } + + static func delete(key: String) { + let query: [String: Any] = [ + kSecClass as String: kSecClassGenericPassword, + kSecAttrService as String: service, + kSecAttrAccount as String: key, + ] + SecItemDelete(query as CFDictionary) + } +} + +// MARK: - Keychain cache (reads each key ONCE at launch; all subsequent access via dict) + +final class KeychainStore: @unchecked Sendable { + static let shared = KeychainStore() + private var cache: [String: String] = [:] + private let lock = NSLock() + + private static let allKeys = [ + "anthropic-api-key", + "google-api-key", + "openai-api-key", + "resend-api-key", "resend-from", + "n8n-url", "n8n-api-key", + "vercel-token", + "github-token", + "stripe-api-key", + "calcom-api-key", + "notion-api-key", + ] + + private init() { + // Called once, on main thread (AppDelegate triggers shared at launch). + for key in Self.allKeys { + if let v = Keychain.load(key: key) { cache[key] = v } + } + } + + /// Thread-safe read — never touches the Keychain. + func get(_ key: String) -> String? { + lock.withLock { cache[key] } + } + + /// Updates cache + persists to Keychain. + func set(_ key: String, value: String) { + lock.withLock { cache[key] = value } + Keychain.save(key: key, value: value) + } + + /// Removes from cache + Keychain only if the key was previously set. + func remove(_ key: String) { + let had = lock.withLock { () -> Bool in + let exists = cache[key] != nil + cache[key] = nil + return exists + } + if had { Keychain.delete(key: key) } + } +} + +// MARK: - Claude API + +@MainActor +final class ClaudeService { + static let shared = ClaudeService() + + private let endpoint = URL(string: "https://api.anthropic.com/v1/messages")! + private let anthropicVersion = "2023-06-01" + + // MARK: - Model list + + /// Fetches available models from the Anthropic API in the order the API returns them + /// (newest first). Returns an empty array on any error — callers fall back to a static list. + static func fetchModels(apiKey: String) async -> [(id: String, label: String)] { + guard let url = URL(string: "https://api.anthropic.com/v1/models?limit=100") else { return [] } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue(apiKey, forHTTPHeaderField: "x-api-key") + req.setValue("2023-06-01", forHTTPHeaderField: "anthropic-version") + guard let (data, response) = try? await URLSession.shared.data(for: req), + (response as? HTTPURLResponse)?.statusCode == 200, + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let items = json["data"] as? [[String: Any]] else { return [] } + return items.compactMap { item in + guard let id = item["id"] as? String, + let name = item["display_name"] as? String else { return nil } + return (id: id, label: name) + } + } + + /// Fetches Gemini models via the OpenAI-compatible endpoint. + /// Strips the "models/" prefix that the API sometimes returns and filters non-chat models. + static func fetchGoogleModels(apiKey: String) async -> [(id: String, label: String)] { + guard let url = URL(string: "https://generativelanguage.googleapis.com/v1beta/openai/models") else { return [] } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization") + guard let (data, response) = try? await URLSession.shared.data(for: req), + (response as? HTTPURLResponse)?.statusCode == 200, + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let items = json["data"] as? [[String: Any]] else { return [] } + let excluded = ["embed", "imagen", "veo", "aqa", "tts", "audio", "live"] + return items.compactMap { item in + guard let raw = item["id"] as? String else { return nil } + let id = raw.hasPrefix("models/") ? String(raw.dropFirst(7)) : raw + let lower = id.lowercased() + guard !excluded.contains(where: { lower.contains($0) }) else { return nil } + return (id: id, label: id) + } + } + + /// Fetches chat models from the OpenAI API, sorted newest-first by creation date. + /// Excludes non-chat model families. + static func fetchOpenAIModels(apiKey: String) async -> [(id: String, label: String)] { + guard let url = URL(string: "https://api.openai.com/v1/models") else { return [] } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization") + guard let (data, response) = try? await URLSession.shared.data(for: req), + (response as? HTTPURLResponse)?.statusCode == 200, + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let items = json["data"] as? [[String: Any]] else { return [] } + let excluded = ["embed", "tts", "whisper", "dall-e", "audio", "realtime", "moderat", + "codex", "computer-use", "transcribe", "image", "sora", + "babbage", "davinci", "instruct"] + return items + .compactMap { item -> (id: String, created: Int)? in + guard let id = item["id"] as? String else { return nil } + let lower = id.lowercased() + guard !excluded.contains(where: { lower.contains($0) }) else { return nil } + return (id: id, created: item["created"] as? Int ?? 0) + } + .sorted { $0.created > $1.created } + .map { (id: $0.id, label: $0.id) } + } + + /// Chosen in Settings; falls back to the default when the field is left empty. + private var model: String { + let m = AppState.shared.claudeModel.trimmingCharacters(in: .whitespacesAndNewlines) + return m.isEmpty ? AppState.defaultClaudeModel : m + } + + var apiKey: String? { KeychainStore.shared.get("anthropic-api-key") } + + // Multi-turn conversation messages (for API) + private var conversationMessages: [[String: Any]] = [] + + func clearConversation() { + conversationMessages = [] + } + + /// Resolved once: NSFullUserName() is a system call, and the name cannot change under us + /// while the app runs. + private let systemPrompt = ClaudeService.makeSystemPrompt() + + /// Greets the user by their macOS first name when there is one worth using, and stays + /// neutral otherwise — same wording as the Windows build. + private nonisolated static func makeSystemPrompt() -> String { + let opening = if let firstName = resolveUserFirstName() { + "You are Mochi, \(firstName)'s personal AI assistant embedded in the notch of their Mac." + } else { + "You are Mochi, a personal AI assistant embedded in the notch of the user's Mac." + } + return """ + \(opening) \ + You have web search access and can help with absolutely anything — research, coding, finding places, recommendations, tasks, questions. \ + Respond in the user's language. Be thorough and complete — use as much detail as the task requires. \ + Use light Markdown when it helps: short paragraphs, bullet lists, **bold**, `inline code` and fenced code blocks. Avoid tables and big headings: the chat window is small. + """ + } + + private let webSearchTools: [[String: Any]] = [ + ["type": "web_search_20250305", "name": "web_search", "max_uses": 5] + ] + + // MARK: - Chat (multi-turn, natural text + web search) + + func chat(query: String, context: PromptContext?, state: AppState) async { + guard state.chatProvider == .anthropic else { + await chatOpenAICompatible(query: query, context: context, state: state) + return + } + guard let key = apiKey, !key.isEmpty else { + await showError("API key missing. Open settings.", state: state) + return + } + + // Build user content for this turn + var userContent: [[String: Any]] = [] + + // Add file/window context on first message only + if conversationMessages.isEmpty, let context = context { + switch context { + case .window(let app, let title, let url): + var text = "Context — App: \(app), Window: \(title)" + if let url = url { text += ", URL: \(url)" } + userContent.append(["type": "text", "text": text]) + case .file(let name, let fileURL): + if let fileURL = fileURL, let block = readFileAsBlock(url: fileURL) { + userContent.append(block) + } + userContent.append(["type": "text", "text": "File: \(name)"]) + } + } + userContent.append(["type": "text", "text": query]) + + conversationMessages.append(["role": "user", "content": userContent]) + + let body: [String: Any] = [ + "model": model, + "max_tokens": 4096, + "tools": webSearchTools, + "system": systemPrompt, + "messages": conversationMessages, + ] + + do { + let data = try await callAPI(body: body, key: key, beta: "web-search-2025-03-05") + await handleChatResult(data, state: state) + } catch { + conversationMessages.removeLast() + await showError(error.localizedDescription, state: state) + } + } + + // MARK: - OpenAI-compatible chat (Google Gemini / OpenAI / Ollama / LM Studio) + + func chatOpenAICompatible(query: String, context: PromptContext?, state: AppState) async { + let provider = state.chatProvider + guard provider != .anthropic else { return } + + let baseURL: String + if provider == .ollama { + baseURL = LocalChat.normaliseURL(state.ollamaServerURL) + } else if provider == .lmstudio { + baseURL = LocalChat.normaliseURL(state.lmstudioServerURL) + } else { + switch provider { + case .google: baseURL = "https://generativelanguage.googleapis.com/v1beta/openai" + case .openai: baseURL = "https://api.openai.com/v1" + case .anthropic, .ollama, .lmstudio: baseURL = "" + } + } + + guard !baseURL.isEmpty else { + if provider.isLocal { + let name = provider == .ollama ? "Ollama" : "LM Studio" + await showError("Connect \(name) in Settings → Chat first.", state: state) + } + return + } + guard let url = URL(string: "\(baseURL)/chat/completions") else { return } + + // Auth header + let authHeader: String + if provider.isLocal { + authHeader = "Bearer ollama" + } else { + guard let key = KeychainStore.shared.get(provider.keychainKey), !key.isEmpty else { + await showError("\(provider.displayName) API key missing. Configure it in Settings.", state: state) + return + } + authHeader = "Bearer \(key)" + } + + // Build messages + var msgs: [[String: Any]] = [["role": "system", "content": systemPrompt]] + for m in conversationMessages { + var simplified = m + if let content = m["content"] as? [[String: Any]], + let textBlock = content.first(where: { ($0["type"] as? String) == "text" }), + let text = textBlock["text"] as? String { + simplified["content"] = text + } + msgs.append(simplified) + } + var userText = query + if conversationMessages.isEmpty, let ctx = context { + switch ctx { + case .window(let app, let title, let url): + var prefix = "Context — App: \(app), Window: \(title)" + if let u = url { prefix += ", URL: \(u)" } + userText = prefix + "\n\n" + query + case .file(let name, let fileURL): + if provider.isLocal, let fileURL = fileURL { + let ext = fileURL.pathExtension.lowercased() + let binaryExts = ["pdf", "jpg", "jpeg", "png", "gif", "webp"] + if !binaryExts.contains(ext), + let text = try? String(contentsOf: fileURL, encoding: .utf8), !text.isEmpty { + let truncated = text.count > 24_000 + ? String(text.prefix(24_000)) + "\n[truncated]" + : text + userText = "File: \(name)\n\n\(truncated)\n\n" + query + } else { + userText = "File: \(name)\n\n" + query + } + } else { + userText = "File: \(name)\n\n" + query + } + } + } + msgs.append(["role": "user", "content": userText]) + conversationMessages.append(["role": "user", "content": userText]) + + let useStream = provider.isLocal + var body: [String: Any] = [ + "model": state.activeChatModel, + "max_tokens": 4096, + "messages": msgs, + ] + if useStream { body["stream"] = true } + + var req = URLRequest(url: url, timeoutInterval: useStream ? 120 : 30) + req.httpMethod = "POST" + req.setValue("application/json", forHTTPHeaderField: "Content-Type") + req.setValue(authHeader, forHTTPHeaderField: "Authorization") + req.httpBody = try? JSONSerialization.data(withJSONObject: body) + + if useStream { + // Add placeholder (hidden until first token via ChatBubble empty-content guard) + let placeholder = ChatMessage(role: .assistant, content: "") + let msgId = placeholder.id + state.chatHistory.append(placeholder) + state.stateOverride = .thinking + let modelCopy = state.activeChatModel + let streamBody: [String: Any] = [ + "model": modelCopy, + "messages": msgs, + "stream": true, + "max_tokens": 4096, + ] + let encodedBody = (try? JSONSerialization.data(withJSONObject: streamBody)) ?? Data() + do { + let final = try await LocalChat.streamChat( + baseURL: baseURL, + encodedBody: encodedBody, + model: modelCopy + ) { [state, msgId] visible in + if !visible.isEmpty, state.stateOverride == .thinking { + state.stateOverride = nil // hide typing dots on first visible text + } + if let idx = state.chatHistory.firstIndex(where: { $0.id == msgId }) { + state.chatHistory[idx].content = visible + } + } + conversationMessages.append(["role": "assistant", "content": final]) + if let idx = state.chatHistory.firstIndex(where: { $0.id == msgId }) { + state.chatHistory[idx].content = final + } + state.stateOverride = nil + state.view = .prompt + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.happy) + } catch let e as LocalChatError { + conversationMessages.removeLast() + state.chatHistory.removeAll { $0.id == msgId } + state.stateOverride = nil + let msg: String + switch e { + case .serverUnreachable: + msg = provider == .ollama + ? "Ollama isn't running. Open it, then ask again." + : "Start the local server in LM Studio, then ask again." + case .modelNotFound(let m): + msg = "\(m) isn't installed. Pick another model above the chat box." + case .serverError(let s): + msg = s + } + await showError(msg, state: state) + } catch { + conversationMessages.removeLast() + state.chatHistory.removeAll { $0.id == msgId } + state.stateOverride = nil + await showError(error.localizedDescription, state: state) + } + } else { + // Non-streaming (Google, OpenAI) + do { + let (data, response) = try await URLSession.shared.data(for: req) + guard (response as? HTTPURLResponse)?.statusCode == 200 else { + if let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let err = (json["error"] as? [String: Any])?["message"] as? String { + throw NSError(domain: "ChatAPI", code: 0, userInfo: [NSLocalizedDescriptionKey: err]) + } + throw NSError(domain: "ChatAPI", code: 0, userInfo: [NSLocalizedDescriptionKey: "HTTP \((response as? HTTPURLResponse)?.statusCode ?? 0)"]) + } + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let choices = json["choices"] as? [[String: Any]], + let message = choices.first?["message"] as? [String: Any], + let content = message["content"] as? String else { + throw NSError(domain: "ChatAPI", code: 0, userInfo: [NSLocalizedDescriptionKey: "Unexpected response format"]) + } + let trimmed = content.trimmingCharacters(in: .whitespacesAndNewlines) + conversationMessages.append(["role": "assistant", "content": trimmed]) + state.chatHistory.append(ChatMessage(role: .assistant, content: trimmed)) + state.stateOverride = nil + state.view = .prompt + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.happy) + } catch { + conversationMessages.removeLast() + await showError(error.localizedDescription, state: state) + } + } + } + + // MARK: - Structured search (M8 — window attach + web search) + + func search(query: String, context: PromptContext?, state: AppState) async { + guard let key = apiKey, !key.isEmpty else { + await showError("Anthropic API key missing. Open settings to configure it.", state: state) + return + } + + var userContent: [[String: Any]] = [] + switch context { + case .window(let appName, let title, let url): + var text = "App: \(appName)\nWindow title: \(title)" + if let url = url { text += "\nURL: \(url)" } + text += "\n\nRequest: \(query)" + userContent.append(["type": "text", "text": text]) + case .file(let name, let fileURL): + if let fileURL = fileURL, let fileBlock = readFileAsBlock(url: fileURL) { + userContent.append(fileBlock) + } + userContent.append(["type": "text", "text": "File: \(name)\n\nRequest: \(query)"]) + case nil: + userContent.append(["type": "text", "text": query]) + } + + let system = """ + You are an assistant built into the notch of a Mac. Reply in English, short and precise. + Reply ONLY with valid JSON in this exact format: + {"title":"...","items":[{"label":"...","detail":"...","url":"..."}],"note":"..."} + Maximum 3 items. "url" is optional. "note" is optional. + """ + + let tools: [[String: Any]] = [ + ["type": "web_search_20250305", "name": "web_search", "max_uses": 3] + ] + + let body: [String: Any] = [ + "model": model, + "max_tokens": 1024, + "tools": tools, + "system": system, + "messages": [["role": "user", "content": userContent]], + ] + + do { + let result = try await callAPI(body: body, key: key, beta: "web-search-2025-03-05") + await handleResult(result, state: state) + } catch { + await showError(error.localizedDescription, state: state) + } + } + + // MARK: - API call + + private func callAPI(body: [String: Any], key: String, beta: String? = nil) async throws -> Data { + var request = URLRequest(url: endpoint) + request.httpMethod = "POST" + request.setValue(key, forHTTPHeaderField: "x-api-key") + request.setValue(anthropicVersion, forHTTPHeaderField: "anthropic-version") + request.setValue("application/json", forHTTPHeaderField: "content-type") + if let beta { request.setValue(beta, forHTTPHeaderField: "anthropic-beta") } + request.httpBody = try JSONSerialization.data(withJSONObject: body) + request.timeoutInterval = 45 + + let (data, response) = try await URLSession.shared.data(for: request) + + guard let http = response as? HTTPURLResponse, http.statusCode == 200 else { + // Parse Anthropic error format: {"type":"error","error":{"type":"…","message":"…"}} + if let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let err = json["error"] as? [String: Any], + let errType = err["type"] as? String, + let errMsg = err["message"] as? String { + if errType == "not_found_error" { + let id = AppState.shared.claudeModel + throw NSError(domain: "Claude", code: 0, + userInfo: [NSLocalizedDescriptionKey: + "Model not found: \(id). Pick another one in Settings."]) + } + throw NSError(domain: "Claude", code: 0, + userInfo: [NSLocalizedDescriptionKey: errMsg]) + } + let msg = String(data: data, encoding: .utf8) ?? "unknown error" + throw NSError(domain: "Claude", code: 0, userInfo: [NSLocalizedDescriptionKey: msg]) + } + return data + } + + // MARK: - Chat result handler + + private func handleChatResult(_ data: Data, state: AppState) async { + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let content = json["content"] as? [[String: Any]] else { + await showError("Unexpected API response.", state: state) + return + } + + // Store full content (includes tool_use/tool_result blocks) for correct multi-turn context + conversationMessages.append(["role": "assistant", "content": content]) + + guard let textBlock = content.first(where: { $0["type"] as? String == "text" }), + let text = textBlock["text"] as? String, !text.isEmpty else { + await showError("No response text.", state: state) + return + } + + // Add to display history + state.chatHistory.append(ChatMessage(role: .assistant, content: text.trimmingCharacters(in: .whitespacesAndNewlines))) + + state.stateOverride = nil + state.view = .prompt + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.happy) + } + + // MARK: - Structured result handler + + private func handleResult(_ data: Data, state: AppState) async { + // Extract text from Anthropic response (may contain tool_use / web_search_tool_result blocks) + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let content = json["content"] as? [[String: Any]], + let textBlock = content.first(where: { $0["type"] as? String == "text" }), + let text = textBlock["text"] as? String else { + await showError("Unexpected API response.", state: state) + return + } + + // Strip markdown code fences if present, then extract JSON object + let cleanText: String + if let start = text.firstIndex(of: "{"), let end = text.lastIndex(of: "}") { + cleanText = String(text[start...end]) + } else { + cleanText = text + } + + // Try to parse as our JSON format + if let resultData = cleanText.data(using: .utf8), + let parsed = try? JSONSerialization.jsonObject(with: resultData) as? [String: Any] { + let title = parsed["title"] as? String ?? "Result" + let note = parsed["note"] as? String + var items: [ResultItem] = [] + if let rawItems = parsed["items"] as? [[String: Any]] { + for item in rawItems.prefix(3) { + items.append(ResultItem( + label: item["label"] as? String ?? "", + detail: item["detail"] as? String ?? "", + url: item["url"] as? String + )) + } + } + state.searchResult = SearchResult(title: title, items: items, note: note) + } else { + // Fallback: show raw text in 3-line chunks + let lines = cleanText.components(separatedBy: "\n").filter { !$0.isEmpty }.prefix(3) + state.searchResult = SearchResult( + title: "Claude's response", + items: lines.map { ResultItem(label: $0, detail: "", url: nil) }, + note: nil + ) + } + + state.stateOverride = nil + state.view = .result + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.proud) + } + + private func showError(_ message: String, state: AppState) async { + state.stateOverride = .error + state.noteMessage = message + state.view = .note + } + + // MARK: - File content block builder + + private func readFileAsBlock(url: URL) -> [String: Any]? { + guard let data = try? Data(contentsOf: url) else { return nil } + let ext = url.pathExtension.lowercased() + let base64 = data.base64EncodedString() + + if ext == "pdf" { + return ["type": "document", "source": ["type": "base64", "media_type": "application/pdf", "data": base64]] + } else if ["jpg", "jpeg"].contains(ext) { + return ["type": "image", "source": ["type": "base64", "media_type": "image/jpeg", "data": base64]] + } else if ext == "png" { + return ["type": "image", "source": ["type": "base64", "media_type": "image/png", "data": base64]] + } else if ext == "gif" { + return ["type": "image", "source": ["type": "base64", "media_type": "image/gif", "data": base64]] + } else if ext == "webp" { + return ["type": "image", "source": ["type": "base64", "media_type": "image/webp", "data": base64]] + } else { + // Text/code — inline as text if <= 200 KB + guard data.count <= 200_000, + let text = String(data: data, encoding: .utf8) else { return nil } + return ["type": "text", "text": "File contents:\n\(text)"] + } + } +} diff --git a/NotchBuddy/Sources/App/DesktopMochi.swift b/NotchBuddy/Sources/App/DesktopMochi.swift new file mode 100644 index 0000000..b810365 --- /dev/null +++ b/NotchBuddy/Sources/App/DesktopMochi.swift @@ -0,0 +1,744 @@ +import AppKit +import SwiftUI +import Combine + +// MARK: - Desktop bot view state + +/// Observable bridge so DesktopMochiController can update view-level state without +/// coupling to SwiftUI @State. +@MainActor +final class DesktopBotViewState: ObservableObject { + /// Drop to 10 fps when sleeping (saves energy). + @Published var isSleeping: Bool = false + /// Pause entirely (screen sleep / lock). + @Published var paused: Bool = false + /// Bot center in the same coord space as AppState.mousePosition (y-down from screen top). + /// Updated every poll frame; Canvas reads it inside TimelineView — @Published not needed. + var lookOrigin: CGPoint = .zero +} + +// MARK: - Desktop bot view + +/// Full Mochi character rendered inside the desktop floating panel. +struct DesktopBotView: View { + @ObservedObject var appState: AppState + /// Engine owned by DesktopMochiController; controller calls methods on it directly. + let engine: BotEngine + @ObservedObject var viewState: DesktopBotViewState + + var body: some View { + TimelineView(.animation( + minimumInterval: viewState.isSleeping ? 1.0 / 10.0 : 1.0 / 30.0, + paused: viewState.paused + )) { timeline in + Canvas { ctx, size in + let now = timeline.date.timeIntervalSinceReferenceDate + let dt = min(0.05, now - engine.lastTime) + + // Eye tracking based on the panel's own screen position + engine.lookX = tanh((appState.mousePosition.x - viewState.lookOrigin.x) / 260) + engine.lookY = -tanh((appState.mousePosition.y - viewState.lookOrigin.y) / 200) + + // Desktop Mochi is always the "main" Mochi — always dressed + engine.setOutfit(appState.resolvedOutfit, animated: true) + + // Dance when music plays (same rules as compact mode) + let dancing: Bool = { + #if !APPSTORE + guard appState.musicPlaying else { return false } + guard appState.activeIntegrations.contains("integration_music") else { return false } + let allowed: Set = [.idle, .working, .thinking, .searching, .finished] + return allowed.contains(appState.effectiveState) + #else + return false + #endif + }() + engine.setDancing(dancing) + engine.update(dt: dt) + + var c = ctx + engine.applyDance(&c, size: size) + + // Rigid roll when outfit is present (matches BotCanvasView) + if engine.outfit != .none && engine.outfitPresence > 0.05 && abs(engine.roll) > 0.001 { + let center = engine.bodyCenter(size: size) + var rigidCtx = c + rigidCtx.translateBy(x: center.x, y: center.y) + rigidCtx.rotate(by: .radians(engine.roll)) + rigidCtx.translateBy(x: -center.x, y: -center.y) + engine.drawHandsBehind(context: rigidCtx, size: size) + engine.drawOutfitBehind(context: rigidCtx, size: size) + engine.draw(context: rigidCtx, size: size) + engine.drawOutfitFront(context: rigidCtx, size: size) + } else { + engine.drawHandsBehind(context: c, size: size) + engine.drawOutfitBehind(context: c, size: size) + engine.draw(context: c, size: size) + engine.drawOutfitFront(context: c, size: size) + } + engine.drawHandsAndExtras(context: c, size: size) + } + } + .onChange(of: appState.effectiveState) { _, newState in + engine.setState(newState) + } + .onAppear { + engine.setState(appState.effectiveState, force: true) + engine.setOutfit(appState.resolvedOutfit, animated: false) + } + } +} + +// MARK: - Desktop Mochi controller + +/// Manages the "Mochi on the desktop" floating panel. +/// +/// Life cycle: +/// - **Install from drag**: `IslandWindowController.finishDrag` calls `install(ghostPanel:at:)`. +/// - **Launch restore**: `AppDelegate` observes `.greetComplete` → `launchFlyIfNeeded()`. +/// - **Alert**: `pendingApproval`/`pendingQuestion` goes non-nil → surprised emote → +/// `retractForAlert()` (panel gone, flag stays true) → both nil → `launchFlyIfNeeded()`. +/// - **User flies home**: double-click → `flyHome()` → full teardown. +@MainActor +final class DesktopMochiController { + static let shared = DesktopMochiController() + private init() { + observeScreenSleep() + observeScreenLock() + observeAlerts() // permanent — lives for the lifetime of the singleton + } + + private var panel: NSPanel? + private var engine: BotEngine? + private var viewState: DesktopBotViewState? + private var frameTimer: Timer? + + // Alert state machine + private var phase: DesktopPhase = .home + + // Desktop drag repositioning + private var isDragging = false + private var dragMouseStart: NSPoint = .zero + private var dragOriginAtStart: NSPoint = .zero + + // Deferred single-click slap + private var pendingSlapWorkItem: DispatchWorkItem? + + // Sleep detection + private var lastAgentActive: Date = .distantPast + private var isSleeping = false + + // Screen sleep / lock + private var screenSleeping = false + + // Lifecycle subscriptions (cleared on retractForAlert + fullTearDown) + private var cancellables: Set = [] + // Alert subscription — permanent, only released with the singleton + private var alertSubscription: AnyCancellable? + + // Event monitors + private var mouseDownMonitor: Any? + private var mouseDraggedMonitor: Any? + private var mouseUpMonitor: Any? + private var globalMouseUpMonitor: Any? + private var rightClickMonitor: Any? + + // UserDefaults keys + private static let posXKey = "desktopMochiX" + private static let posYKey = "desktopMochiY" + private static let enabledKey = "mochiOnDesktop" + + static let panelSize: CGFloat = DesktopMochiLogic.panelSize + + // MARK: - Keyboard shortcut toggle (⌃⌥D) + + /// Fly Mochi to the desktop if not there, or bring him back if he is. + func flyOutOrHome() { + if phase == .home { + UserDefaults.standard.set(true, forKey: DesktopMochiController.enabledKey) + launchFlyIfNeeded() + } else if phase == .onDesktop { + flyHome() + } + } + + // MARK: - Install (from drag-drop) + + /// Promote `ghostPanel` (the drag ghost) or create a fresh panel as the desktop Mochi, + /// centered on `screenPoint`. Called by `IslandWindowController.finishDrag`. + func install(ghostPanel: NSPanel?, at screenPoint: NSPoint) { + guard panel == nil, phase == .home else { ghostPanel?.close(); return } + let s = DesktopMochiController.panelSize + + let p: NSPanel + if let ghost = ghostPanel { + p = ghost + } else { + p = makeBlankPanel() + p.setFrame(NSRect(x: screenPoint.x - s/2, y: screenPoint.y - s/2, width: s, height: s), + display: false) + } + + // Build engine + hosting view (autoresizingMask lets it grow with the panel animation) + let eng = BotEngine() + eng.setState(AppState.shared.effectiveState, force: true) + eng.setOutfit(AppState.shared.resolvedOutfit, animated: false) + self.engine = eng + + let vs = DesktopBotViewState() + vs.lookOrigin = lookOriginFor(panel: p) + vs.paused = screenSleeping + self.viewState = vs + + let hosting = NSHostingView(rootView: + DesktopBotView(appState: AppState.shared, engine: eng, viewState: vs)) + hosting.frame = CGRect(origin: .zero, size: p.frame.size) + hosting.autoresizingMask = [.width, .height] + p.contentView = hosting + + p.level = .floating + p.collectionBehavior = [.canJoinAllSpaces, .stationary, .ignoresCycle, .fullScreenAuxiliary] + p.ignoresMouseEvents = true + if !p.isVisible { p.orderFront(nil) } + + // Squash emote + sound on landing + eng.triggerEmote(.happy, duration: 0.6, silent: true) + SoundEngine.shared.play("pop") + + // Animate from current (ghost) size to 120 × 120, centered on drop point + let targetOrigin = clampToVisibleFrame(NSPoint(x: screenPoint.x - s/2, y: screenPoint.y - s/2)) + NSAnimationContext.runAnimationGroup({ ctx in + ctx.duration = 0.25 + ctx.timingFunction = CAMediaTimingFunction(controlPoints: 0.17, 0.67, 0.38, 1.3) + p.animator().setFrame(NSRect(origin: targetOrigin, size: CGSize(width: s, height: s)), + display: true) + }, completionHandler: { + Task { @MainActor in + self.panel = p + self.phase = .onDesktop + AppState.shared.mochiOnDesktop = true + UserDefaults.standard.set(true, forKey: DesktopMochiController.enabledKey) + self.persistPosition() + // Alert may have fired during the animation (observeAlerts skipped: phase wasn't .onDesktop) + let alertNow = AppState.shared.pendingApproval != nil || AppState.shared.pendingQuestion != nil + if DesktopMochiLogic.shouldRetractOnLanding(alertActive: alertNow) { + self.engine?.triggerEmote(.surprised) + self.phase = .retracting + DispatchQueue.main.asyncAfter(deadline: .now() + 0.45) { [weak self] in + guard let self else { return } + switch self.phase { + case .retracting: self.retractForAlert() + case .alertResolvedDuringRetract: self.phase = .home; self.launchFlyIfNeeded() + default: break + } + } + } else { + self.startPolling() + self.addEventMonitors() + self.observeLifecycle() + } + } + }) + } + + // MARK: - Launch fly (app-start restore or alert return) + + /// Fly a new panel from the notch to the saved desktop position. + /// Called by AppDelegate after `.greetComplete`, and by the alert-return path. + func launchFlyIfNeeded() { + guard UserDefaults.standard.bool(forKey: DesktopMochiController.enabledKey) else { return } + guard phase == .home else { return } + guard panel == nil else { return } + // Alert active: don't fly yet — park in .atNotchForAlert so observeAlerts restores us when it clears + if AppState.shared.pendingApproval != nil || AppState.shared.pendingQuestion != nil { + phase = .atNotchForAlert + return + } + + phase = .flyingOut + let s = DesktopMochiController.panelSize + let screen = IslandWindowController.notchScreen() ?? NSScreen.main! + let startOrigin = NSPoint(x: screen.frame.midX - s/2, y: screen.frame.maxY - s) + let target = loadSavedPosition() + + let p = makeBlankPanel() + p.setFrame(NSRect(origin: startOrigin, size: CGSize(width: s, height: s)), display: false) + + let eng = BotEngine() + eng.setState(AppState.shared.effectiveState, force: true) + eng.setOutfit(AppState.shared.resolvedOutfit, animated: false) + self.engine = eng + + let vs = DesktopBotViewState() + vs.lookOrigin = lookOriginFor(panel: p) + vs.paused = screenSleeping + self.viewState = vs + + let hosting = NSHostingView(rootView: + DesktopBotView(appState: AppState.shared, engine: eng, viewState: vs)) + hosting.frame = CGRect(x: 0, y: 0, width: s, height: s) + hosting.autoresizingMask = [.width, .height] + p.contentView = hosting + p.alphaValue = 0 + p.orderFront(nil) + + AppState.shared.mochiOnDesktop = true + + NSAnimationContext.runAnimationGroup({ ctx in + ctx.duration = 0.45 + ctx.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) + p.animator().alphaValue = 1 + p.animator().setFrame(NSRect(origin: target, size: CGSize(width: s, height: s)), display: true) + }, completionHandler: { + Task { @MainActor in + self.panel = p + self.phase = .onDesktop + UserDefaults.standard.set(true, forKey: DesktopMochiController.enabledKey) + self.persistPosition() + // Alert may have fired during the flight (observeAlerts skipped: phase was .flyingOut) + let alertNow = AppState.shared.pendingApproval != nil || AppState.shared.pendingQuestion != nil + if DesktopMochiLogic.shouldRetractOnLanding(alertActive: alertNow) { + self.engine?.triggerEmote(.surprised) + self.phase = .retracting + DispatchQueue.main.asyncAfter(deadline: .now() + 0.45) { [weak self] in + guard let self else { return } + switch self.phase { + case .retracting: self.retractForAlert() + case .alertResolvedDuringRetract: self.phase = .home; self.launchFlyIfNeeded() + default: break + } + } + } else { + self.startPolling() + self.addEventMonitors() + self.observeLifecycle() + } + } + }) + } + + // MARK: - Fly home (user-initiated: double-click) + + /// Animate panel to notch then fully tear down. + func flyHome() { + guard let p = panel else { return } + phase = .home + pendingSlapWorkItem?.cancel() + stopPolling() + removeEventMonitors() + cancellables.removeAll() + isSleeping = false + let s = DesktopMochiController.panelSize + let screen = IslandWindowController.notchScreen() ?? NSScreen.main! + let targetOrigin = NSPoint(x: screen.frame.midX - s/2, y: screen.frame.maxY - s) + NSAnimationContext.runAnimationGroup({ ctx in + ctx.duration = 0.45 + ctx.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) + p.animator().setFrame(NSRect(origin: targetOrigin, size: CGSize(width: s, height: s)), + display: true) + }, completionHandler: { + Task { @MainActor in + SoundEngine.shared.play("peek") + self.fullTearDown() + } + }) + } + + // MARK: - Retract for alert (panel flies home; comes back after alert resolves) + + /// Close panel and show notch Mochi for the alert. UserDefaults flag stays true so + /// `launchFlyIfNeeded` restores Mochi once the alert is dismissed. + private func retractForAlert() { + guard let p = panel else { return } + stopPolling() + removeEventMonitors() + cancellables.removeAll() + pendingSlapWorkItem?.cancel() + isSleeping = false + + let s = DesktopMochiController.panelSize + let screen = IslandWindowController.notchScreen() ?? NSScreen.main! + let targetOrigin = NSPoint(x: screen.frame.midX - s/2, y: screen.frame.maxY - s) + NSAnimationContext.runAnimationGroup({ ctx in + ctx.duration = 0.45 + ctx.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) + p.animator().setFrame(NSRect(origin: targetOrigin, size: CGSize(width: s, height: s)), + display: true) + }, completionHandler: { + Task { @MainActor in + p.close() + self.panel = nil + self.engine = nil + self.viewState = nil + self.isDragging = false + AppState.shared.mochiOnDesktop = false + // UserDefaults flag stays TRUE so launchFlyIfNeeded works + if self.phase == .alertResolvedDuringRetract { + self.phase = .home + self.launchFlyIfNeeded() + } else { + self.phase = .atNotchForAlert + } + } + }) + } + + // MARK: - Uninstall (immediate, no animation) + + func uninstall() { + stopPolling() + removeEventMonitors() + fullTearDown() + } + + private func fullTearDown() { + phase = .home + cancellables.removeAll() + pendingSlapWorkItem?.cancel() + panel?.close() + panel = nil + engine = nil + viewState = nil + isDragging = false + isSleeping = false + AppState.shared.mochiOnDesktop = false + UserDefaults.standard.set(false, forKey: DesktopMochiController.enabledKey) + } + + // MARK: - Panel factory + + private func makeBlankPanel() -> NSPanel { + let p = NSPanel(contentRect: .zero, + styleMask: [.borderless, .nonactivatingPanel], + backing: .buffered, defer: false) + p.backgroundColor = .clear + p.isOpaque = false + p.hasShadow = false + return p + } + + // MARK: - Lifecycle observation (active while panel is live on desktop) + + private func observeLifecycle() { + cancellables.removeAll() + + // effectiveState → .finished: joy jump (only when on desktop, not retracting) + Publishers.CombineLatest(AppState.shared.$stateOverride, AppState.shared.$tasks) + .map { _, _ in AppState.shared.effectiveState } + .removeDuplicates() + .dropFirst() + .receive(on: DispatchQueue.main) + .sink { [weak self] newState in + guard let self, self.phase == .onDesktop else { return } + if newState == .finished { + self.engine?.triggerEmote(.happy, duration: 1.2, silent: true) + } + } + .store(in: &cancellables) + } + + // MARK: - Alert observation (permanent — installed once at init) + + private func observeAlerts() { + alertSubscription = Publishers.CombineLatest( + AppState.shared.$pendingApproval, + AppState.shared.$pendingQuestion + ) + .map { a, q in a != nil || q != nil } + .removeDuplicates() + .dropFirst() + .receive(on: DispatchQueue.main) + .sink { [weak self] alertActive in + guard let self else { return } + + if alertActive { + guard self.phase == .onDesktop else { return } + self.engine?.triggerEmote(.surprised) + self.phase = .retracting + DispatchQueue.main.asyncAfter(deadline: .now() + 0.45) { [weak self] in + guard let self else { return } + switch self.phase { + case .retracting: + self.retractForAlert() + case .alertResolvedDuringRetract: + // Alert cleared before animation started — no need to retract + self.phase = .home + self.launchFlyIfNeeded() + default: + break + } + } + } else { + switch self.phase { + case .atNotchForAlert: + self.phase = .home + DispatchQueue.main.asyncAfter(deadline: .now() + 0.6) { [weak self] in + self?.launchFlyIfNeeded() + } + case .retracting: + // Alert resolved while waiting to retract — mark it + self.phase = .alertResolvedDuringRetract + default: + break + } + } + } + } + + // MARK: - 60 Hz polling (only while panel is live) + + private func startPolling() { + frameTimer?.invalidate() + frameTimer = Timer.scheduledTimer(withTimeInterval: 1.0/60.0, repeats: true) { [weak self] _ in + guard let self else { return } + Task { @MainActor in self.pollFrame() } + } + RunLoop.main.add(frameTimer!, forMode: .common) + } + + private func stopPolling() { + frameTimer?.invalidate() + frameTimer = nil + } + + private func pollFrame() { + guard let p = panel else { return } + let mouse = NSEvent.mouseLocation + let pf = p.frame + let local = CGPoint(x: mouse.x - pf.minX, y: mouse.y - pf.minY) + let s = DesktopMochiController.panelSize + + // Toggle click-through + let overBody = DesktopMochiLogic.isOverBody(localPoint: local, panelSize: s) + let needsMouse = overBody || isDragging + if p.ignoresMouseEvents == needsMouse { + p.ignoresMouseEvents = !needsMouse + } + + // Update eye-tracking origin every frame + viewState?.lookOrigin = lookOriginFor(panel: p) + + // Sleep detection + let agentActive = AppState.shared.effectiveState != .idle && + AppState.shared.effectiveState != .sleeping + if agentActive { lastAgentActive = .now } + let dist = hypot(mouse.x - pf.midX, mouse.y - pf.midY) + let interval = Date.now.timeIntervalSince(lastAgentActive) + let shouldSleep = DesktopMochiLogic.shouldSleep(lastAgentActiveInterval: interval, + mouseDistanceToPanelCenter: dist) + if shouldSleep != isSleeping { + isSleeping = shouldSleep + viewState?.isSleeping = shouldSleep + engine?.setState(isSleeping ? .sleeping : AppState.shared.effectiveState) + } + } + + // MARK: - Event monitors + + private func addEventMonitors() { + mouseDownMonitor = NSEvent.addLocalMonitorForEvents(matching: .leftMouseDown) { [weak self] event in + guard let self else { return event } + MainActor.assumeIsolated { + guard event.window === self.panel else { return } + self.dragMouseStart = NSEvent.mouseLocation + self.dragOriginAtStart = self.panel?.frame.origin ?? .zero + } + return event + } + + mouseDraggedMonitor = NSEvent.addLocalMonitorForEvents(matching: .leftMouseDragged) { [weak self] event in + guard let self else { return event } + MainActor.assumeIsolated { + let m = NSEvent.mouseLocation + if !self.isDragging { + let dist = hypot(m.x - self.dragMouseStart.x, m.y - self.dragMouseStart.y) + guard self.dragMouseStart != .zero, dist > 3 else { return } + self.isDragging = true + } + guard let p = self.panel else { return } + let dx = m.x - self.dragMouseStart.x + let dy = m.y - self.dragMouseStart.y + let newOrigin = self.clampToVisibleFrame( + NSPoint(x: self.dragOriginAtStart.x + dx, y: self.dragOriginAtStart.y + dy)) + p.setFrameOrigin(newOrigin) + self.viewState?.lookOrigin = self.lookOriginFor(panel: p) + } + return event + } + + // Local mouseUp (cursor still within panel) + mouseUpMonitor = NSEvent.addLocalMonitorForEvents(matching: .leftMouseUp) { [weak self] event in + guard let self else { return event } + MainActor.assumeIsolated { + let wasDragging = self.isDragging + self.isDragging = false + self.dragMouseStart = .zero + if wasDragging { + self.handleDragRelease(at: NSEvent.mouseLocation) + } else if event.window === self.panel { + self.handleClick(clickCount: event.clickCount) + } + } + return event + } + + // Global mouseUp (cursor moved outside panel during drag) + globalMouseUpMonitor = NSEvent.addGlobalMonitorForEvents(matching: .leftMouseUp) { [weak self] _ in + Task { @MainActor in + guard let self, self.isDragging else { return } + self.isDragging = false + self.dragMouseStart = .zero + self.handleDragRelease(at: NSEvent.mouseLocation) + } + } + + rightClickMonitor = NSEvent.addLocalMonitorForEvents(matching: .rightMouseDown) { [weak self] event in + guard let self else { return event } + MainActor.assumeIsolated { + guard event.window === self.panel else { return } + NotificationCenter.default.post(name: .openWardrobeFromDesktop, object: nil) + } + return event + } + } + + // MARK: - Click / drag helpers + + private func handleClick(clickCount: Int) { + if clickCount >= 2 { + pendingSlapWorkItem?.cancel() + flyHome() + } else { + pendingSlapWorkItem?.cancel() + let item = DispatchWorkItem { [weak self] in self?.engine?.slap() } + pendingSlapWorkItem = item + DispatchQueue.main.asyncAfter(deadline: .now() + NSEvent.doubleClickInterval, execute: item) + } + } + + private func handleDragRelease(at mouse: NSPoint) { + let islandController = (NSApp.delegate as? AppDelegate)?.islandController + let inNotchZone = islandController?.window?.frame.contains(mouse) == true + + if inNotchZone { + flyHome() + return + } + + #if !APPSTORE + if let ctx = islandController?.windowContextAtPoint(mouse) { + // Attach window context; Mochi returns to pre-drag position + AppState.shared.promptContext = ctx + SoundEngine.shared.play("approve") + engine?.triggerEmote(.happy, duration: 0.6, silent: true) + let origin = clampToVisibleFrame(dragOriginAtStart) + panel?.setFrameOrigin(origin) + persistPosition() + islandController?.expand(to: .prompt) + return + } + #endif + // Elsewhere: keep new position + persistPosition() + } + + private func removeEventMonitors() { + if let m = mouseDownMonitor { NSEvent.removeMonitor(m); mouseDownMonitor = nil } + if let m = mouseDraggedMonitor { NSEvent.removeMonitor(m); mouseDraggedMonitor = nil } + if let m = mouseUpMonitor { NSEvent.removeMonitor(m); mouseUpMonitor = nil } + if let m = globalMouseUpMonitor { NSEvent.removeMonitor(m); globalMouseUpMonitor = nil } + if let m = rightClickMonitor { NSEvent.removeMonitor(m); rightClickMonitor = nil } + } + + // MARK: - Screen sleep / wake + + private func observeScreenSleep() { + NSWorkspace.shared.notificationCenter.addObserver( + forName: NSWorkspace.screensDidSleepNotification, object: nil, queue: .main + ) { [weak self] _ in + Task { @MainActor in + self?.screenSleeping = true + self?.viewState?.paused = true + } + } + NSWorkspace.shared.notificationCenter.addObserver( + forName: NSWorkspace.screensDidWakeNotification, object: nil, queue: .main + ) { [weak self] _ in + Task { @MainActor in + self?.screenSleeping = false + self?.viewState?.paused = false + } + } + } + + // MARK: - Screen lock / unlock + + private func observeScreenLock() { + DistributedNotificationCenter.default().addObserver( + forName: NSNotification.Name("com.apple.screenIsLocked"), object: nil, queue: .main + ) { [weak self] _ in + Task { @MainActor in + self?.screenSleeping = true + self?.viewState?.paused = true + } + } + DistributedNotificationCenter.default().addObserver( + forName: NSNotification.Name("com.apple.screenIsUnlocked"), object: nil, queue: .main + ) { [weak self] _ in + Task { @MainActor in + self?.screenSleeping = false + self?.viewState?.paused = false + } + } + } + + // MARK: - Position helpers + + private func lookOriginFor(panel: NSPanel) -> CGPoint { + let screen = panel.screen ?? NSScreen.main! + return DesktopMochiLogic.lookOrigin( + panelMinX: panel.frame.minX, + panelMinY: panel.frame.minY, + screenMinX: screen.frame.minX, + screenHeight: screen.frame.height, + panelSize: DesktopMochiController.panelSize) + } + + private func clampToVisibleFrame(_ origin: NSPoint) -> NSPoint { + let screen = NSScreen.screens.min(by: { + let da = hypot(origin.x - $0.visibleFrame.midX, origin.y - $0.visibleFrame.midY) + let db = hypot(origin.x - $1.visibleFrame.midX, origin.y - $1.visibleFrame.midY) + return da < db + }) ?? NSScreen.main! + let pt = DesktopMochiLogic.clampOrigin( + CGPoint(x: origin.x, y: origin.y), + panelSize: DesktopMochiController.panelSize, + visibleFrame: screen.visibleFrame, + margin: DesktopMochiLogic.clampMargin) + return NSPoint(x: pt.x, y: pt.y) + } + + private func loadSavedPosition() -> NSPoint { + let ud = UserDefaults.standard + guard ud.object(forKey: DesktopMochiController.posXKey) != nil else { + return defaultPosition() + } + let x = CGFloat(ud.double(forKey: DesktopMochiController.posXKey)) + let y = CGFloat(ud.double(forKey: DesktopMochiController.posYKey)) + return clampToVisibleFrame(NSPoint(x: x, y: y)) + } + + private func defaultPosition() -> NSPoint { + let s = DesktopMochiController.panelSize + let margin = DesktopMochiLogic.clampMargin + let vf = (NSScreen.main ?? NSScreen.screens[0]).visibleFrame + return NSPoint(x: vf.maxX - s - margin, y: vf.minY + margin) + } + + private func persistPosition() { + guard let p = panel else { return } + let o = p.frame.origin + UserDefaults.standard.set(Double(o.x), forKey: DesktopMochiController.posXKey) + UserDefaults.standard.set(Double(o.y), forKey: DesktopMochiController.posYKey) + } +} diff --git a/NotchBuddy/Sources/App/DesktopMochiLogic.swift b/NotchBuddy/Sources/App/DesktopMochiLogic.swift new file mode 100644 index 0000000..3f7fad7 --- /dev/null +++ b/NotchBuddy/Sources/App/DesktopMochiLogic.swift @@ -0,0 +1,73 @@ +import Foundation +import CoreGraphics + +// MARK: - Alert state machine phase + +/// Phase of the desktop Mochi lifecycle. +enum DesktopPhase: Equatable { + /// No panel on screen; `UserDefaults["mochiOnDesktop"]` is `false`. + case home + /// Panel animating from notch to saved desktop position. + case flyingOut + /// Panel live on the desktop — normal operating state. + case onDesktop + /// `pendingApproval`/`pendingQuestion` just went non-nil; panel animating toward notch. + case retracting + /// Alert cleared while retract animation was still running. + case alertResolvedDuringRetract + /// Retract complete; notch Mochi is showing the alert. + case atNotchForAlert +} + +// MARK: - Pure geometry / logic (no AppKit — fully unit-testable) + +/// Stateless helpers for `DesktopMochiController`. +enum DesktopMochiLogic { + static let panelSize: CGFloat = 120 + static let sleepTimeout: TimeInterval = 120 + static let sleepMouseDistance: CGFloat = 150 + static let clampMargin: CGFloat = 24 + static let bodyRadiusFraction: CGFloat = 0.24 + + /// Whether Mochi should enter sleeping state. + static func shouldSleep(lastAgentActiveInterval: TimeInterval, + mouseDistanceToPanelCenter: CGFloat) -> Bool { + lastAgentActiveInterval > sleepTimeout && mouseDistanceToPanelCenter >= sleepMouseDistance + } + + /// Hit-test the circular body inside a square panel (AppKit y-up local coords). + static func isOverBody(localPoint: CGPoint, panelSize: CGFloat) -> Bool { + let cx = panelSize / 2 + let cy = panelSize / 2 + let r = panelSize * bodyRadiusFraction + let dx = localPoint.x - cx + let dy = localPoint.y - cy + return dx * dx + dy * dy <= r * r + } + + /// Eye-tracking origin: panel center in screen-space with y-down from top of screen. + /// Matches the coordinate space of `AppState.mousePosition`. + static func lookOrigin(panelMinX: CGFloat, + panelMinY: CGFloat, + screenMinX: CGFloat, + screenHeight: CGFloat, + panelSize: CGFloat) -> CGPoint { + let cx = panelMinX + panelSize / 2 + let cy = panelMinY + panelSize / 2 + return CGPoint(x: cx - screenMinX, y: screenHeight - cy) + } + + /// Whether Mochi should immediately retract after landing (alert was active during the flight). + static func shouldRetractOnLanding(alertActive: Bool) -> Bool { alertActive } + + /// Clamp a panel origin so the panel stays inside `visibleFrame` with `margin` on each side. + static func clampOrigin(_ origin: CGPoint, + panelSize: CGFloat, + visibleFrame: CGRect, + margin: CGFloat) -> CGPoint { + CGPoint( + x: min(max(origin.x, visibleFrame.minX + margin), visibleFrame.maxX - panelSize - margin), + y: min(max(origin.y, visibleFrame.minY + margin), visibleFrame.maxY - panelSize - margin) + ) + } +} diff --git a/NotchBuddy/Sources/App/FileDropView.swift b/NotchBuddy/Sources/App/FileDropView.swift new file mode 100644 index 0000000..9a47a33 --- /dev/null +++ b/NotchBuddy/Sources/App/FileDropView.swift @@ -0,0 +1,124 @@ +import AppKit +import SwiftUI + +// MARK: - NSView drag destination +// Wired at the AppKit level in IslandWindowController (not via SwiftUI NSViewRepresentable) +// so it never interferes with SwiftUI hit-testing. + +final class FileDropNSView: NSView { + var onDragEntered: ((CGPoint) -> Void)? + var onDragUpdated: ((CGPoint) -> Void)? + var onDragExited: (() -> Void)? + var onFilesDropped: (([URL]) -> Void)? + + override init(frame: NSRect) { + super.init(frame: frame) + registerForDraggedTypes([.fileURL]) + } + required init?(coder: NSCoder) { fatalError() } + + // Pass all mouse events through — drag-drop uses NSDraggingDestination, not hitTest + override func hitTest(_ point: NSPoint) -> NSView? { nil } + + override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { + onDragEntered?(sender.draggingLocation) + return .copy + } + override func draggingUpdated(_ sender: NSDraggingInfo) -> NSDragOperation { + onDragUpdated?(sender.draggingLocation) + return .copy + } + override func draggingExited(_ sender: NSDraggingInfo?) { onDragExited?() } + + override func performDragOperation(_ sender: NSDraggingInfo) -> Bool { + guard let urls = sender.draggingPasteboard.readObjects( + forClasses: [NSURL.self], + options: [.urlReadingFileURLsOnly: true] + ) as? [URL], !urls.isEmpty else { return false } + onFilesDropped?(urls) + return true + } +} + +// MARK: - File drop handler + +enum FileDropHandler { + @MainActor + static func handle(urls: [URL], state: AppState) async { + guard let url = urls.first else { return } + let name = url.lastPathComponent + + // Start animation immediately — do NOT block on file copy. + // Use original URL first; swap to inbox copy once background copy finishes. + state.droppedFile = DroppedFile(url: url, name: name) + state.uploadProgress = 0 + state.fileDragOver = false + state.promptContext = .file(name: name, fileURL: url) + + let dur = 2.4 + UploadSequenceEngine.shared.performDrop(uploadDuration: dur) + + // Copy to inbox in background — update state when done + let inbox = HookServer.supportDir.appendingPathComponent("inbox") + Task.detached { + try? FileManager.default.createDirectory(at: inbox, withIntermediateDirectories: true) + let dest = inbox.appendingPathComponent(name) + try? FileManager.default.removeItem(at: dest) + if (try? FileManager.default.copyItem(at: url, to: dest)) != nil { + await MainActor.run { + state.droppedFile = DroppedFile(url: dest, name: name) + state.promptContext = .file(name: name, fileURL: dest) + } + } + } + + // Drop feedback + NotificationCenter.default.post(name: .botGulp, object: nil) + SoundEngine.shared.play("approve") + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.happy) + NotificationCenter.default.post(name: .botMorphTo, object: CGFloat(0)) + + state.uploadDuration = dur + state.uploadStartTime = Date() + state.view = .uploading // canvas stays active: uploadActive covers .uploading + + // Canvas timeline from drop: + // T_DROP → T_PROG_START : ≈1.30s gulp + shrink + bar reveal + // T_PROG_START → progEnd: dur progress bar fills + // progEnd → growEnd : 0.70s Mochi grows back to choose position + let preProgress = USC.T_PROG_START - USC.T_DROP // ≈1.30s + + // Tick sounds — delayed to sync with canvas progress start + Task { @MainActor in + var lastTens = 0 + let progStart = Date().addingTimeInterval(preProgress) + while lastTens < 9 { + try? await Task.sleep(nanoseconds: 80_000_000) + let approxP = min(1.0, max(0, Date().timeIntervalSince(progStart) / dur)) + let tens = Int(approxP * 10) + if tens > lastTens { + SoundEngine.shared.play("tick") + lastTens = tens + } + } + } + + // Wait for canvas progress to complete (gulp/shrink phase + upload duration) + try? await Task.sleep(nanoseconds: UInt64((preProgress + dur) * 1_000_000_000)) + + // Canvas shows checkmark at this point + SoundEngine.shared.play("approve") + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.happy) + + // Wait for grow-back animation + choose overlay settle + try? await Task.sleep(nanoseconds: UInt64(1_000_000_000)) + + // Clean up upload state + state.uploadProgress = 0 + state.uploadStartTime = nil + + // Switch to choose — canvas stays active (uploadActive covers .choose). + // Engine deactivates when user clicks a canvas choose button or navigates away. + state.view = .choose + } +} diff --git a/NotchBuddy/Sources/App/GitHubActivity.swift b/NotchBuddy/Sources/App/GitHubActivity.swift new file mode 100644 index 0000000..0ce7fab --- /dev/null +++ b/NotchBuddy/Sources/App/GitHubActivity.swift @@ -0,0 +1,72 @@ +import Foundation + +// MARK: - ContributionDay + +struct ContributionDay: Equatable { + var date: String // YYYY-MM-DD + var count: Int + var level: Int // 0…4 (NONE, FIRST_QUARTILE, SECOND_QUARTILE, THIRD_QUARTILE, FOURTH_QUARTILE) + var weekday: Int // 0 = Sunday … 6 = Saturday +} + +// MARK: - GitHubActivity + +struct GitHubActivity: Equatable { + var total: Int + var weeks: [[ContributionDay]] + var fetchedAt: Date + + // MARK: - Parse + + static func parse(_ data: Data) -> GitHubActivity? { + guard let root = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let dataNode = root["data"] as? [String: Any], + let viewer = dataNode["viewer"] as? [String: Any], + let cc = viewer["contributionsCollection"] as? [String: Any], + let cal = cc["contributionCalendar"] as? [String: Any], + let total = cal["totalContributions"] as? Int, + let weeksRaw = cal["weeks"] as? [[String: Any]] else { return nil } + + var weeks: [[ContributionDay]] = [] + for weekRaw in weeksRaw { + guard let daysRaw = weekRaw["contributionDays"] as? [[String: Any]] else { continue } + var days: [ContributionDay] = [] + for dayRaw in daysRaw { + guard let date = dayRaw["date"] as? String, + let count = dayRaw["contributionCount"] as? Int, + let levelStr = dayRaw["contributionLevel"] as? String, + let weekday = dayRaw["weekday"] as? Int else { continue } + let level: Int + switch levelStr { + case "FIRST_QUARTILE": level = 1 + case "SECOND_QUARTILE": level = 2 + case "THIRD_QUARTILE": level = 3 + case "FOURTH_QUARTILE": level = 4 + default: level = 0 // NONE or unknown + } + days.append(ContributionDay(date: date, count: count, level: level, weekday: weekday)) + } + if !days.isEmpty { weeks.append(days) } + } + + return GitHubActivity(total: total, weeks: weeks, fetchedAt: Date()) + } + + // MARK: - Helpers + + /// Returns the last n weeks in chronological order (oldest first). + /// The last week may be incomplete (current week in progress). + func lastWeeks(_ n: Int) -> [[ContributionDay]] { + guard n > 0 else { return [] } + let start = max(0, weeks.count - n) + return Array(weeks[start...]) + } + + /// Returns the last n days in chronological order (oldest first). + func lastDays(_ n: Int) -> [ContributionDay] { + guard n > 0 else { return [] } + let all = weeks.flatMap { $0 } + let start = max(0, all.count - n) + return Array(all[start...]) + } +} diff --git a/NotchBuddy/Sources/App/GitHubPulse.swift b/NotchBuddy/Sources/App/GitHubPulse.swift new file mode 100644 index 0000000..6cb21d4 --- /dev/null +++ b/NotchBuddy/Sources/App/GitHubPulse.swift @@ -0,0 +1,244 @@ +import Foundation + +// MARK: - CIState + +enum CIState: String, Equatable { + case pending, success, failure, unknown + + init(rawGitHub: String?) { + guard let s = rawGitHub else { self = .unknown; return } + switch s.uppercased() { + case "PENDING", "EXPECTED": self = .pending + case "SUCCESS": self = .success + case "ERROR", "FAILURE": self = .failure + default: self = .unknown + } + } +} + +// MARK: - ReviewState + +enum ReviewState: String, Equatable { + case approved, changesRequested, pending, unknown + + init(rawGitHub: String?) { + guard let s = rawGitHub else { self = .unknown; return } + switch s.uppercased() { + case "APPROVED": self = .approved + case "CHANGES_REQUESTED": self = .changesRequested + case "REVIEW_REQUIRED": self = .pending + default: self = .unknown + } + } +} + +// MARK: - GitHubPR + +struct GitHubPR: Equatable { + var id: String // "owner/repo#num" + var title: String + var url: String + var repo: String + var number: Int + var isDraft: Bool + var ci: CIState + var review: ReviewState + var headSha: String? = nil // oid of last commit; nil if not fetched +} + +// MARK: - GitHubRepoCI + +struct GitHubRepoCI: Equatable { + var repo: String + var url: String + var branch: String + var ci: CIState + var headSha: String? = nil // oid of HEAD commit; nil if not fetched +} + +// MARK: - GitHubDetailSection + +enum GitHubDetailSection { case myPRs, toReview, mainCI, activity } + +// MARK: - GitHubEvent + +enum GitHubEvent: Equatable { + case ciFailed(prId: String) + case ciPassed(prId: String) + case mainFailed(repo: String) + case reviewRequested(prId: String) +} + +// MARK: - GitHubPulse + +struct GitHubPulse: Equatable { + var login: String + var myPRs: [GitHubPR] + var toReview: [GitHubPR] + var mainCI: [GitHubRepoCI] + var fetchedAt: Date + + /// True when at least one PR CI or default-branch CI is pending — triggers 60 s poll cadence. + var hasPending: Bool { + myPRs.contains { $0.ci == .pending } || + mainCI.contains { $0.ci == .pending } + } + + // MARK: - Parse + + static func parse(_ data: Data) -> GitHubPulse? { + guard let root = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let dataNode = root["data"] as? [String: Any], + let viewer = dataNode["viewer"] as? [String: Any] else { return nil } + + let login = viewer["login"] as? String ?? "" + + // My PRs + var myPRs: [GitHubPR] = [] + if let prConn = viewer["pullRequests"] as? [String: Any], + let nodes = prConn["nodes"] as? [[String: Any]] { + var seenPR = Set() + for node in nodes { + guard let number = node["number"] as? Int, + let title = node["title"] as? String, + let url = node["url"] as? String, + let repoNode = node["repository"] as? [String: Any], + let repo = repoNode["nameWithOwner"] as? String else { continue } + let id = "\(repo)#\(number)" + guard seenPR.insert(id).inserted else { continue } // skip duplicates + let isDraft = node["isDraft"] as? Bool ?? false + let reviewDecision = node["reviewDecision"] as? String + let (ciRaw, headSha): (String?, String?) = { + guard let commits = node["commits"] as? [String: Any], + let cNodes = commits["nodes"] as? [[String: Any]], + let last = cNodes.last, + let commit = last["commit"] as? [String: Any] else { return (nil, nil) } + let rollup = commit["statusCheckRollup"] as? [String: Any] + return (rollup?["state"] as? String, commit["oid"] as? String) + }() + myPRs.append(GitHubPR( + id: id, title: title, url: url, repo: repo, number: number, + isDraft: isDraft, ci: CIState(rawGitHub: ciRaw), + review: ReviewState(rawGitHub: reviewDecision), headSha: headSha + )) + } + } + + // Main CI for recently-pushed repos (client-side filter: skip archived) + var mainCI: [GitHubRepoCI] = [] + if let repoConn = viewer["repositories"] as? [String: Any], + let nodes = repoConn["nodes"] as? [[String: Any]] { + for node in nodes { + let isArchived = node["isArchived"] as? Bool ?? false + if isArchived { continue } + guard let repo = node["nameWithOwner"] as? String, + let url = node["url"] as? String, + let branchRef = node["defaultBranchRef"] as? [String: Any], + let branch = branchRef["name"] as? String else { continue } + let (ciRaw, headSha): (String?, String?) = { + guard let target = branchRef["target"] as? [String: Any] else { return (nil, nil) } + let rollup = target["statusCheckRollup"] as? [String: Any] + return (rollup?["state"] as? String, target["oid"] as? String) + }() + mainCI.append(GitHubRepoCI(repo: repo, url: url, branch: branch, + ci: CIState(rawGitHub: ciRaw), headSha: headSha)) + } + } + + // To review + var toReview: [GitHubPR] = [] + if let searchResult = dataNode["reviewRequested"] as? [String: Any], + let nodes = searchResult["nodes"] as? [[String: Any]] { + var seenReview = Set() + for node in nodes { + guard let number = node["number"] as? Int, + let title = node["title"] as? String, + let url = node["url"] as? String, + let repoNode = node["repository"] as? [String: Any], + let repo = repoNode["nameWithOwner"] as? String else { continue } + let id = "\(repo)#\(number)" + guard seenReview.insert(id).inserted else { continue } // skip duplicates + let isDraft = node["isDraft"] as? Bool ?? false + toReview.append(GitHubPR( + id: id, + title: title, + url: url, + repo: repo, + number: number, + isDraft: isDraft, + ci: .unknown, + review: .pending + )) + } + } + + return GitHubPulse(login: login, myPRs: myPRs, toReview: toReview, + mainCI: mainCI, fetchedAt: Date()) + } + + // MARK: - Events + + /// Returns events comparing old → new. If old is nil (first poll after launch) returns empty — no + /// alerts on initial load, only on subsequent changes. + /// + /// headSha logic (catches fast CIs missed between polls): + /// - Same SHA (or both nil): classic transition rules apply. + /// - Different SHA or PR/repo absent in old: fire immediately if CI is already done. + /// If still pending, nothing — next poll with the same SHA will catch the result. + /// - Main CI: no "green" alert, only .mainFailed on new failure. + static func events(old: GitHubPulse?, new: GitHubPulse) -> [GitHubEvent] { + guard let old else { return [] } + + var result: [GitHubEvent] = [] + + // PR CI transitions + let oldPRmap = Dictionary(old.myPRs.map { ($0.id, $0) }, uniquingKeysWith: { a, _ in a }) + for pr in new.myPRs { + if let prev = oldPRmap[pr.id], prev.headSha == pr.headSha { + // Same commit: classic state-transition rules + if pr.ci == .failure && prev.ci != .failure { + result.append(.ciFailed(prId: pr.id)) + } else if pr.ci == .success && prev.ci == .pending { + result.append(.ciPassed(prId: pr.id)) + } + } else { + // New PR or new commit: alert if CI already finished + if pr.ci == .success { result.append(.ciPassed(prId: pr.id)) } + else if pr.ci == .failure { result.append(.ciFailed(prId: pr.id)) } + // pending → nothing; same-SHA rule catches it next poll + } + } + + // Default-branch CI + let oldRepoMap = Dictionary(old.mainCI.map { ($0.repo, $0) }, uniquingKeysWith: { a, _ in a }) + for repo in new.mainCI { + if let prev = oldRepoMap[repo.repo], prev.headSha == repo.headSha { + // Same commit: classic rule (failure transition only) + if repo.ci == .failure && prev.ci != .failure { + result.append(.mainFailed(repo: repo.repo)) + } + } else { + // New repo or new commit: only alert on failure (no "green" event for main) + if repo.ci == .failure { result.append(.mainFailed(repo: repo.repo)) } + } + } + + // New review requests + let oldReviewIds = Set(old.toReview.map { $0.id }) + for pr in new.toReview { + if !oldReviewIds.contains(pr.id) { + result.append(.reviewRequested(prId: pr.id)) + } + } + + return result + } + + // MARK: - Staleness + + /// Pure predicate: true when fetchedAt is nil or older than maxAge seconds before now. + static func isStale(fetchedAt: Date?, now: Date = Date(), maxAge: TimeInterval) -> Bool { + guard let t = fetchedAt else { return true } + return now.timeIntervalSince(t) > maxAge + } +} diff --git a/NotchBuddy/Sources/App/GithubPoller.swift b/NotchBuddy/Sources/App/GithubPoller.swift new file mode 100644 index 0000000..4cfb81d --- /dev/null +++ b/NotchBuddy/Sources/App/GithubPoller.swift @@ -0,0 +1,346 @@ +import Foundation + +final class GithubPoller: @unchecked Sendable { + static let shared = GithubPoller() + private var timer: DispatchSourceTimer? + // All properties below are accessed only on the main thread. + private var pulseInFlight = false + private var nextPulse: DispatchWorkItem? + private var tokenGeneration = 0 + private var activityInFlight = false + private var nextActivity: DispatchWorkItem? + private init() {} + + func start() { + guard timer == nil else { return } + // Stats poll: every 5 minutes, starting 7 s after launch + let t = DispatchSource.makeTimerSource(queue: .global(qos: .background)) + t.schedule(deadline: .now() + 7, repeating: 300) + t.setEventHandler { [weak self] in self?.pollStats() } + t.resume() + timer = t + // First pulse: 10 s after launch + DispatchQueue.main.async { [weak self] in + self?.scheduleNextPulse(hasPending: false, delay: 10) + } + // First activity: 15 s after launch, then every 30 min + DispatchQueue.main.async { [weak self] in + self?.scheduleNextActivity(delay: 15) + } + } + + /// Pull requests, CI and activity are fetched when the GitHub pill is in + /// the notch, or when the iPhone sync is on (the iPhone shows GitHub even + /// when its pill isn't in the notch). + @MainActor private static var isWanted: Bool { + if AppState.shared.activeIntegrations.contains("integration_github") { return true } + #if PHONE_LINK + return UserDefaults.standard.bool(forKey: "iPhoneSyncEnabled") + #else + return false + #endif + } + + // MARK: - Stats (unchanged logic) + + private func pollStats() { + guard let token = KeychainStore.shared.get("github-token") else { return } + fetchUser(token: token) + } + + private func fetchUser(token: String) { + guard let url = URL(string: "https://api.github.com/user") else { return } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + req.setValue("application/vnd.github+json", forHTTPHeaderField: "Accept") + + URLSession.shared.dataTask(with: req) { [weak self] data, response, _ in + guard let self else { return } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + guard let data, code == 200, + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else { return } + + let publicRepos = (json["public_repos"] as? Int) ?? 0 + let privateOwned = (json["owned_private_repos"] as? Int) + ?? (json["total_private_repos"] as? Int) + ?? 0 + self.fetchStars(token: token, totalRepos: publicRepos + privateOwned) + }.resume() + } + + private func fetchStars(token: String, totalRepos: Int) { + guard let url = URL(string: "https://api.github.com/user/repos?per_page=100&affiliation=owner&sort=pushed") else { return } + var req = URLRequest(url: url, timeoutInterval: 15) + req.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + req.setValue("application/vnd.github+json", forHTTPHeaderField: "Accept") + + URLSession.shared.dataTask(with: req) { data, response, _ in + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + guard let data, code == 200, + let repos = try? JSONSerialization.jsonObject(with: data) as? [[String: Any]] else { return } + + let totalStars = repos.reduce(0) { $0 + (($1["stargazers_count"] as? Int) ?? 0) } + DispatchQueue.main.async { + AppState.shared.githubStats = GitHubStats(totalRepos: totalRepos, totalStars: totalStars) + } + }.resume() + } + + // MARK: - Pulse (GraphQL, single chain) + + /// Dispatches guards + state reads to main, then fires network on background. + private func pollPulse() { + DispatchQueue.main.async { [weak self] in + guard let self, !self.pulseInFlight else { return } + guard let token = KeychainStore.shared.get("github-token"), + Self.isWanted else { + self.scheduleNextPulse(hasPending: false) + return + } + self.pulseInFlight = true + let gen = self.tokenGeneration + DispatchQueue.global(qos: .background).async { self.fetchPulse(token: token, generation: gen) } + } + } + + private func fetchPulse(token: String, generation: Int) { + guard let url = URL(string: "https://api.github.com/graphql") else { + finishPulse(hasPending: false); return + } + var req = URLRequest(url: url, timeoutInterval: 15) + req.httpMethod = "POST" + req.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + req.setValue("application/json", forHTTPHeaderField: "Content-Type") + guard let body = try? JSONSerialization.data(withJSONObject: ["query": Self.graphQLQuery]) else { + finishPulse(hasPending: false); return + } + req.httpBody = body + + URLSession.shared.dataTask(with: req) { [weak self] data, response, _ in + guard let self else { return } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + guard let data, code == 200 else { + self.nbLog("pulse HTTP \(code)") + self.finishPulse(hasPending: false) + return + } + // Partial GraphQL errors: if "data" is present, parse anyway and log error count. + // Only discard if "data" is absent or null. + if let root = try? JSONSerialization.jsonObject(with: data) as? [String: Any] { + if let errors = root["errors"] as? [[String: Any]], !errors.isEmpty { + self.nbLog("pulse GraphQL errors: \(errors.count)") + } + guard root["data"] is [String: Any] else { + self.finishPulse(hasPending: false); return + } + } + guard let pulse = GitHubPulse.parse(data) else { + self.finishPulse(hasPending: false); return + } + DispatchQueue.main.async { + // Discard stale response if token changed while request was in flight + guard self.tokenGeneration == generation else { return } + let old = AppState.shared.githubPulse + let events = GitHubPulse.events(old: old, new: pulse) + AppState.shared.githubPulse = pulse + // Badge and sound only for the pill in the notch, not when the + // fetch only feeds the iPhone. + if AppState.shared.activeIntegrations.contains("integration_github") { + AppState.shared.handleGitHubEvents(events) + } + } + self.finishPulse(hasPending: pulse.hasPending) + }.resume() + } + + /// Refreshes pulse data immediately if the last fetch is older than maxAge seconds (or absent). + /// No-op when a request is already in flight. Safe to call from any thread. + func refreshIfStale(maxAge: TimeInterval = 60) { + DispatchQueue.main.async { [weak self] in + guard let self, !self.pulseInFlight else { return } + guard GitHubPulse.isStale(fetchedAt: AppState.shared.githubPulse?.fetchedAt, + maxAge: maxAge) else { return } + self.nextPulse?.cancel() + self.nextPulse = nil + self.pollPulse() + } + } + + /// Cancels any scheduled next poll, increments tokenGeneration to invalidate in-flight + /// responses, then fires pollPulse immediately. If a request is already in flight, + /// does not launch another — finishPulse will reschedule. + /// Safe to call from any thread. + func triggerPulseNow() { + DispatchQueue.main.async { [weak self] in + guard let self else { return } + self.tokenGeneration += 1 + self.nextPulse?.cancel() + self.nextPulse = nil + guard !self.pulseInFlight else { return } + self.pollPulse() + } + } + + private func nbLog(_ message: String) { + appendAppLog("github.log", message) + } + + /// Called from any thread; dispatches cleanup to main then schedules next poll. + private func finishPulse(hasPending: Bool) { + DispatchQueue.main.async { [weak self] in + guard let self else { return } + self.pulseInFlight = false + self.scheduleNextPulse(hasPending: hasPending) + } + } + + /// Cancels any pending scheduled poll and schedules a new one on the main queue. + /// Must run on the main thread. + private func scheduleNextPulse(hasPending: Bool, delay: Double? = nil) { + nextPulse?.cancel() + let work = DispatchWorkItem { [weak self] in self?.pollPulse() } + nextPulse = work + let d = delay ?? (hasPending ? 60.0 : 300.0) + DispatchQueue.main.asyncAfter(deadline: .now() + d, execute: work) + } + + // MARK: - Activity (contribution calendar, 30 min cadence) + + private func pollActivity() { + DispatchQueue.main.async { [weak self] in + guard let self, !self.activityInFlight else { return } + guard let token = KeychainStore.shared.get("github-token"), + Self.isWanted else { + self.scheduleNextActivity() + return + } + self.activityInFlight = true + let gen = self.tokenGeneration + DispatchQueue.global(qos: .background).async { self.fetchActivity(token: token, generation: gen) } + } + } + + private func fetchActivity(token: String, generation: Int) { + guard let url = URL(string: "https://api.github.com/graphql") else { + finishActivity(); return + } + var req = URLRequest(url: url, timeoutInterval: 15) + req.httpMethod = "POST" + req.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + req.setValue("application/json", forHTTPHeaderField: "Content-Type") + guard let body = try? JSONSerialization.data(withJSONObject: ["query": Self.activityQuery]) else { + finishActivity(); return + } + req.httpBody = body + + URLSession.shared.dataTask(with: req) { [weak self] data, response, _ in + guard let self else { return } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + guard let data, code == 200 else { + self.nbLog("activity HTTP \(code)") + self.finishActivity() + return + } + if let root = try? JSONSerialization.jsonObject(with: data) as? [String: Any] { + if let errors = root["errors"] as? [[String: Any]], !errors.isEmpty { + self.nbLog("activity GraphQL errors: \(errors.count)") + } + guard root["data"] is [String: Any] else { + self.finishActivity(); return + } + } + guard let activity = GitHubActivity.parse(data) else { + self.finishActivity(); return + } + DispatchQueue.main.async { + guard self.tokenGeneration == generation else { return } + AppState.shared.githubActivity = activity + } + self.finishActivity() + }.resume() + } + + /// Refreshes activity data immediately if stale. Safe to call from any thread. + func refreshActivityIfStale(maxAge: TimeInterval = 300) { + DispatchQueue.main.async { [weak self] in + guard let self, !self.activityInFlight else { return } + guard GitHubPulse.isStale(fetchedAt: AppState.shared.githubActivity?.fetchedAt, + maxAge: maxAge) else { return } + self.nextActivity?.cancel() + self.nextActivity = nil + self.pollActivity() + } + } + + private func finishActivity() { + DispatchQueue.main.async { [weak self] in + guard let self else { return } + self.activityInFlight = false + self.scheduleNextActivity() + } + } + + private func scheduleNextActivity(delay: Double? = nil) { + nextActivity?.cancel() + let work = DispatchWorkItem { [weak self] in self?.pollActivity() } + nextActivity = work + let d = delay ?? 1800.0 // 30 minutes + DispatchQueue.main.asyncAfter(deadline: .now() + d, execute: work) + } + + // MARK: - GraphQL queries + + private static let graphQLQuery = """ + query { + viewer { + login + pullRequests(states: OPEN, first: 20, orderBy: {field: UPDATED_AT, direction: DESC}) { + nodes { + number title url isDraft reviewDecision + repository { nameWithOwner url } + commits(last: 1) { + nodes { commit { oid statusCheckRollup { state } } } + } + } + } + repositories(first: 10, ownerAffiliations: [OWNER], orderBy: {field: PUSHED_AT, direction: DESC}) { + nodes { + nameWithOwner url isArchived + defaultBranchRef { + name + target { ... on Commit { oid statusCheckRollup { state } } } + } + } + } + } + reviewRequested: search(query: "is:pr is:open review-requested:@me archived:false", type: ISSUE, first: 20) { + issueCount + nodes { + ... on PullRequest { + number title url isDraft + author { login } + repository { nameWithOwner url } + } + } + } + } + """ + + private static let activityQuery = """ + query { + viewer { + login + contributionsCollection { + contributionCalendar { + totalContributions + weeks { + contributionDays { + date contributionCount contributionLevel weekday + } + } + } + } + } + } + """ +} diff --git a/NotchBuddy/Sources/App/GreetingCanvasView.swift b/NotchBuddy/Sources/App/GreetingCanvasView.swift new file mode 100644 index 0000000..db0c59c --- /dev/null +++ b/NotchBuddy/Sources/App/GreetingCanvasView.swift @@ -0,0 +1,689 @@ +import SwiftUI + +// MARK: - Timing constants + +private enum GT { + static let pop0: Double = 1.30 + static let pop1: Double = 1.45 + static let content0: Double = 2.40 + static let tuck0: Double = 2.45 + static let tuck1: Double = 2.70 + static let badge: Double = 2.72 + static let down0: Double = 2.85 + static let down1: Double = 3.45 + static let blink2: Double = 3.70 + static let tint0: Double = 3.85 + static let tint1: Double = 4.15 + static let end: Double = 4.60 + static let autoLeave:Double = 4.90 + static let COLLAPSE: Double = 0.34 +} + +// MARK: - Geometry constants (640×150 reference space) + +private let GC0 = CGPoint(x: 320, y: 90) +private let GHB: CGFloat = 58 +private let GASP: CGFloat = 1.34 +private let GEAR_X: CGFloat = 40 +private let GEAR_HB:CGFloat = 17 +private let GCARD = CGRect(x: 10, y: 36, width: 620, height: 104) +private let GCARD_R:CGFloat = 20 + +// MARK: - Easing + +private enum GE { + static func out(_ t: Double) -> Double { 1 - pow(1 - t, 3) } + static func easeIn(_ t: Double) -> Double { t * t * t } + static func inOut(_ t: Double) -> Double { + t < 0.5 ? 4*t*t*t : 1 - pow(-2*t+2, 3)/2 + } + static func back(_ t: Double) -> Double { + let c1=1.70158, c3=c1+1 + return 1 + c3*pow(t-1,3) + c1*pow(t-1,2) + } +} + +private func gClamp(_ v: Double, _ a: Double, _ b: Double) -> Double { max(a, min(b, v)) } +private func gLerp(_ a: Double, _ b: Double, _ t: Double) -> Double { a + (b - a) * t } +private func gSeg(_ t: Double, _ a: Double, _ b: Double) -> Double { gClamp((t-a)/(b-a), 0, 1) } +private func gLerpF(_ a: CGFloat, _ b: CGFloat, _ t: CGFloat) -> CGFloat { a + (b-a)*t } + +// MARK: - Pose + +private enum GEyeType { case dot, happy, content } + +private struct GreetPose { + var hb, x, y, sx, sy, tilt: Double + var eye: GEyeType; var open, eyeRoll: Double + var lookX, lookY: Double + var handL, handR, wave: Double + var badge, tint, halo, haloBlue, minis, fx: Double + var header, card: Double + var iw, ih: Double +} + +// MARK: - Particle data (seeded LCG, seed=7) + +private struct GWarpStreak { let xNorm, speed, len, thick, alpha, t0: Double } +private struct GRingDot { let a, j, s, al: Double } + +private let greetParticles: (warps: [GWarpStreak], ring: [GRingDot]) = { + var seed: UInt32 = 7 + func rnd() -> Double { + seed = (seed &* 1103515245 &+ 12345) & 0x7fffffff + return Double(seed) / Double(0x7fff_ffff) + } + // ~70 white warp streaks for the fall-in (0 → 0.55 s) + let warps = (0..<70).map { _ in + GWarpStreak(xNorm: rnd(), + speed: 400 + rnd() * 300, + len: 6 + rnd() * 16, + thick: 1 + rnd() * 0.5, + alpha: 0.25 + rnd() * 0.55, + t0: rnd() * 0.35) + } + // Single burst ring at 0.45 s, ~90 dots, white + let ring = (0..<90).map { _ in + GRingDot(a: rnd() * .pi * 2, j: (rnd()-0.5)*0.22, + s: 0.7+rnd()*0.9, al: 0.45+rnd()*0.55) + } + return (warps, ring) +}() + +// MARK: - Pose computation + +private func greetPose(_ t: Double, compact: IslandRestingLayout) -> GreetPose { + // Island size (reference for clip / warp spread) + let gx = gSeg(t, 0, 0.5) + let g = sin(.pi*gx/2) + 0.04*sin(.pi*gx)*gx + let iw = gLerp(Double(compact.width - 160), 640, g) + let ih = gLerp(Double(compact.height), 150, g) + + let GH = Double(GHB) // 58 + let cx = Double(GC0.x) // 320 + let cy = Double(GC0.y) // 90 + + // Body height: invisible before 0.20, grows 0.15→1.0 with back ease + let hb: Double = t < 0.20 ? 0 : gLerp(GH * 0.15, GH, GE.back(gSeg(t, 0.20, 0.60))) + + // Landmark y positions (absolute, GC0-relative in multiples of GH) + let restY = cy + let landY = cy + 0.12 * GH // landing: y=+0.12 + let peakY = cy - 0.15 * GH // bounce peak: y=−0.15 + let dipY = cy + 0.36 * GH // plunge low: y=+0.36 + let springY = cy - 0.10 * GH // spring high: y=−0.10 + let sinkY = cy + 0.30 * GH // sink for tuck: y=+0.30 + + // Landmark x positions + let restX = cx + let drift1 = cx - 0.16 * GH + let drift2 = cx - 0.45 * GH + let drift3 = cx - 0.57 * GH + let drift4 = cx - 0.85 * GH + + // --- X (lateral travel) --- + var x: Double + if t < 0.85 { + x = restX + } else if t < 1.20 { + x = gLerp(restX, drift1, GE.inOut(gSeg(t, 0.85, 1.20))) + } else if t < 1.30 { + x = gLerp(drift1, drift2, GE.easeIn(gSeg(t, 1.20, 1.30))) + } else if t < 1.45 { + x = gLerp(drift2, drift3, GE.inOut(gSeg(t, 1.30, 1.45))) + } else if t < 2.40 { + x = gLerp(drift3, drift4, GE.inOut(gSeg(t, 1.45, 2.40))) + } else if t < 2.85 { + x = drift4 + } else { + x = gLerp(drift4, restX, GE.inOut(gSeg(t, 2.85, 3.45))) + } + + // --- Y (vertical travel, base without bob) --- + var y: Double + if t < 0.20 { + y = Double(compact.botCenterY) + } else if t < 0.60 { + y = gLerp(Double(compact.botCenterY), landY, GE.easeIn(gSeg(t, 0.20, 0.60))) + } else if t < 0.73 { + y = gLerp(landY, peakY, GE.out(gSeg(t, 0.60, 0.73))) + } else if t < 0.90 { + y = gLerp(peakY, restY, GE.inOut(gSeg(t, 0.73, 0.90))) + } else if t < 1.20 { + y = restY + } else if t < 1.30 { + y = gLerp(restY, dipY, GE.easeIn(gSeg(t, 1.20, 1.30))) + } else if t < 1.45 { + y = gLerp(dipY, springY, GE.out(gSeg(t, 1.30, 1.45))) + } else if t < 1.60 { + y = gLerp(springY, restY, GE.inOut(gSeg(t, 1.45, 1.60))) + } else if t < 2.40 { + y = restY + } else if t < 2.70 { + y = gLerp(restY, sinkY, GE.inOut(gSeg(t, 2.40, 2.70))) + } else if t < 2.85 { + y = sinkY + } else { + y = gLerp(sinkY, restY, GE.inOut(gSeg(t, 2.85, 3.45))) + } + + // Body bob: in phase with hand wave, active pop1 → tuck0, ramp-in 0.08 s + if t >= GT.pop1 && t < GT.tuck0 { + let w = t - GT.pop1 + let rampIn = gClamp(w / 0.08, 0, 1) + y += sin(w * 2 * .pi * 5.0) * 0.02 * GH * rampIn + } + + // --- Scale --- + var sx = 1.0, sy = 1.0 + + // Landing squash (peak at 0.60, pulse 0.52→0.68) + let landSqK = (t >= 0.52 && t < 0.68) ? sin(.pi * gSeg(t, 0.52, 0.68)) : 0 + // Bounce stretch (peak at 0.73, resolves 0.62→0.84) + let bounceK = (t >= 0.62 && t < 0.84) ? sin(.pi * gSeg(t, 0.62, 0.84)) : 0 + sx = 1.0 + 0.14 * landSqK - 0.10 * bounceK + sy = 1.0 - 0.14 * landSqK + 0.18 * bounceK + + // Plunge squash (peaks at 1.30, pulse 1.18→1.42) + let plungeK = (t >= 1.18 && t < 1.42) ? sin(.pi * gSeg(t, 1.18, 1.42)) : 0 + // Spring stretch (peak at 1.38, resolves 1.30→1.46) + let springK = (t >= 1.30 && t < 1.46) ? sin(.pi * gSeg(t, 1.30, 1.46)) : 0 + sx += 0.12 * plungeK - 0.18 * springK + sy -= 0.12 * plungeK - 0.25 * springK + + // Sink squash (peak at 2.70) + let sinkK: Double + if t >= 2.38 && t < 2.70 { + sinkK = GE.inOut(gSeg(t, 2.38, 2.70)) + } else if t >= 2.70 && t < 2.85 { + sinkK = 1 - GE.inOut(gSeg(t, 2.70, 2.85)) + } else { + sinkK = 0 + } + sx += 0.18 * sinkK + sy -= 0.14 * sinkK + + // Micro squash at 3.70 (with blink) + let microK = (t >= 3.70 && t < 3.82) ? sin(.pi * gSeg(t, 3.70, 3.82)) : 0 + sx += 0.08 * microK + sy -= 0.07 * microK + + // --- Eyes --- + var eye: GEyeType = .dot + if t >= 0.55 && t < 0.80 { eye = .happy } + if t >= GT.content0 && t < GT.tuck1 { eye = .content } + + let blink: (Double) -> Double = { tb in + let k = gSeg(t, tb, tb + 0.12) + return (k > 0 && k < 1) ? 1 - sin(.pi * k) * 0.94 : 1 + } + let openVal = min(blink(1.95), min(blink(3.05), blink(GT.blink2))) + + // --- Look --- + var lookX = 0.0, lookY = 0.0 + if t >= GT.pop1 && t < GT.content0 { // wave: up-right + lookX = 0.55; lookY = -0.45 + } else if t >= GT.content0 && t < GT.down0 { // tuck: down-left + lookX = -0.3; lookY = 0.6 + } else if t >= GT.down0 && t < GT.down1 { // slide: down-right (returning) + lookX = 0.3; lookY = 0.6 + } else if t >= GT.down1 { + let k = GE.inOut(gSeg(t, GT.down1, GT.down1 + 0.35)) + lookX = gLerp(0.3, 0, k); lookY = gLerp(0.6, 0, k) + } + + // --- Hands --- + let handL = t < GT.tuck0 + ? GE.back(gSeg(t, GT.pop0, GT.pop0 + 0.14)) + : 1 - GE.easeIn(gSeg(t, GT.tuck0, GT.tuck1 - 0.03)) + let handR = t < GT.tuck0 + ? GE.back(gSeg(t, GT.pop0 + 0.04, GT.pop0 + 0.18)) + : 1 - GE.easeIn(gSeg(t, GT.tuck0 + 0.03, GT.tuck1)) + let wave = (t >= GT.pop1 && t < GT.tuck0) ? t - GT.pop1 : -1.0 + + return GreetPose( + hb: hb, x: x, y: y, sx: sx, sy: sy, tilt: 0, + eye: eye, open: openVal, eyeRoll: 0, + lookX: lookX, lookY: lookY, + handL: handL, handR: handR, wave: wave, + badge: GE.back(gSeg(t, GT.badge, GT.badge + 0.28)), + tint: 0.6 * GE.inOut(gSeg(t, GT.tint0, GT.tint1)), + halo: GE.out(gSeg(t, 0.3, 0.7)), + haloBlue: gSeg(t, GT.tint0, GT.tint1), + minis: 0, fx: 1, + header: gSeg(t, 0.35, 0.6), card: gSeg(t, 0.18, 0.45), + iw: iw, ih: ih + ) +} + +private func smallPose(_ compact: IslandRestingLayout) -> GreetPose { + let sw = Double(compact.width) + return GreetPose( + hb: Double(GEAR_HB * compact.botDiameter / 20), + x: 320 - sw/2 + Double(GEAR_X), + y: Double(compact.botCenterY), + sx: 1, sy: 1, tilt: 0, + eye: .dot, open: 1, eyeRoll: 0, + lookX: 0, lookY: 0, + handL: 0, handR: 0, wave: -1, + badge: 1, tint: 0.6, halo: 0.6, haloBlue: 1, + minis: 1, fx: 1, + header: 0, card: 0, + iw: sw, ih: Double(compact.height) + ) +} + +private func pose(_ t: Double, tc: Double, compact: IslandRestingLayout) -> GreetPose { + if t < tc { return greetPose(min(t, GT.end + 10), compact: compact) } + let a = greetPose(tc, compact: compact) + let b = smallPose(compact) + let e = GE.inOut(gSeg(t, tc, tc + GT.COLLAPSE)) + var p = a + p.iw = gLerp(a.iw, b.iw, e); p.ih = gLerp(a.ih, b.ih, e) + p.x = gLerp(a.x, b.x, e); p.y = gLerp(a.y, b.y, e) + p.hb = gLerp(a.hb, b.hb, e) + p.badge = gLerp(a.badge, b.badge, e) + p.tint = gLerp(a.tint, b.tint, e) + p.halo = gLerp(a.halo, b.halo, e) + p.haloBlue = gLerp(a.haloBlue, b.haloBlue, e) + p.header = a.header * (1 - gSeg(t, tc, tc+0.1)) + p.card = a.card * (1 - gSeg(t, tc, tc+0.18)) + p.handL = a.handL * (1 - gSeg(t, tc, tc+0.15)) + p.handR = a.handR * (1 - gSeg(t, tc, tc+0.15)) + p.wave = a.wave >= 0 ? a.wave : -1 + p.tilt = a.tilt * (1 - e) + p.sx = gLerp(a.sx, 1, e); p.sy = gLerp(a.sy, 1, e) + p.eyeRoll = a.eyeRoll * (1 - e) + let bk = gSeg(t, tc+0.14, tc+0.26) + p.eye = .dot; p.open = (bk > 0 && bk < 1) ? 1 - sin(.pi*bk)*0.94 : 1 + p.lookX = a.lookX*(1-e); p.lookY = a.lookY*(1-e) + p.minis = GE.back(gSeg(t, tc+0.24, tc+0.42)) + p.fx = 1 - gSeg(t, tc, tc+0.2) + return p +} + +// MARK: - Drawing helpers + +private func gHex(_ hex: String, alpha: CGFloat = 1) -> CGColor { + let h = hex.trimmingCharacters(in: CharacterSet(charactersIn:"#")) + let v = UInt64(h, radix: 16) ?? 0 + return CGColor(red: CGFloat((v>>16)&0xFF)/255, + green: CGFloat((v>>8)&0xFF)/255, + blue: CGFloat(v&0xFF)/255, alpha: alpha) +} + +private func gRR(_ ctx: CGContext, _ x: CGFloat, _ y: CGFloat, + _ w: CGFloat, _ h: CGFloat, _ r: CGFloat) { + let r = max(0, min(r, w/2, h/2)) + ctx.beginPath() + ctx.move(to: CGPoint(x: x+r, y: y)) + ctx.addArc(tangent1End: CGPoint(x: x+w, y: y), tangent2End: CGPoint(x: x+w, y: y+h), radius: r) + ctx.addArc(tangent1End: CGPoint(x: x+w, y: y+h), tangent2End: CGPoint(x: x, y: y+h), radius: r) + ctx.addArc(tangent1End: CGPoint(x: x, y: y+h), tangent2End: CGPoint(x: x, y: y), radius: r) + ctx.addArc(tangent1End: CGPoint(x: x, y: y), tangent2End: CGPoint(x: x+r, y: y), radius: r) + ctx.closePath() +} + +private func mochiPath(hw: CGFloat, hh: CGFloat) -> CGPath { + let n: CGFloat = 3.2 + let path = CGMutablePath() + let steps = 96 + for i in 0...steps { + let a = CGFloat(i)/CGFloat(steps)*2 * .pi + let ca = cos(a), sa = sin(a) + let px = hw * (ca < 0 ? -1 : 1) * pow(abs(ca), 2/n) + let py = hh * (sa < 0 ? -1 : 1) * pow(abs(sa), 2/n) + if i == 0 { path.move(to: CGPoint(x: px, y: py)) } + else { path.addLine(to: CGPoint(x: px, y: py)) } + } + path.closeSubpath(); return path +} + +private func whiteFill(_ ctx: CGContext, _ path: CGPath, + x0: CGFloat, y0: CGFloat, x1: CGFloat, y1: CGFloat) { + let cs = CGColorSpaceCreateDeviceRGB() + let c0 = CGColor(red: 251/255, green: 251/255, blue: 252/255, alpha: 1) + let c1 = CGColor(red: 231/255, green: 233/255, blue: 236/255, alpha: 1) + guard let g = CGGradient(colorsSpace: cs, colors: [c0,c1] as CFArray, locations: [0,1]) else { return } + ctx.saveGState() + ctx.addPath(path); ctx.clip() + ctx.drawLinearGradient(g, start: CGPoint(x: x0, y: y0), + end: CGPoint(x: x1, y: y1), + options: [.drawsBeforeStartLocation, .drawsAfterEndLocation]) + ctx.restoreGState() +} + +// Left hand: ball, waves (bobs vertically) +private func drawHandL(_ ctx: CGContext, hw: CGFloat, hh: CGFloat, p: GreetPose) { + let k = CGFloat(p.handL); guard k > 0.01 else { return } + let hb = hh * 2 + let r = hb * 0.15 * k + let rx = gLerpF(-hw * 0.35, -hw - hb * 0.22, k) + let ry0 = gLerpF(hh * 0.85, hh * 0.62, k) + var ry = Double(ry0) + if p.wave >= 0 { + let w = p.wave + // Ramp in 0.08 s after pop1; ramp out over tuck0→tuck1 + let rampIn = gClamp(w / 0.08, 0, 1) + let waveEnd = GT.tuck0 - GT.pop1 // = 1.00 + let rampOut = 1 - gClamp((w - waveEnd) / (GT.tuck1 - GT.tuck0), 0, 1) + let ramp = rampIn * rampOut + ry += sin(w * 2 * .pi * 5.0) * Double(hb) * 0.14 * ramp + } + ctx.saveGState() + ctx.translateBy(x: rx, y: CGFloat(ry)) + let circ = CGPath(ellipseIn: CGRect(x: -r, y: -r, width: r*2, height: r*2), transform: nil) + whiteFill(ctx, circ, x0: r, y0: -r, x1: -r, y1: r) + ctx.addEllipse(in: CGRect(x: -r, y: -r, width: r*2, height: r*2)) + ctx.setStrokeColor(CGColor(red: 0, green: 0, blue: 0, alpha: 0.08)) + ctx.setLineWidth(0.8); ctx.strokePath() + ctx.restoreGState() +} + +// Right hand: capsule, quasi-static with breathing rotation ±0.04 rad at 2.5 Hz +private func drawHandR(_ ctx: CGContext, hw: CGFloat, hh: CGFloat, p: GreetPose) { + let k = CGFloat(p.handR); guard k > 0.01 else { return } + let hb = hh * 2, L = hb * 0.40 * k, T2 = hb * 0.22 * k + let rx0 = gLerpF(hw * 0.35, hw + hb * 0.20, k) + let ry0 = gLerpF(hh * 0.85, hh * 0.20, k) + // Breathing rotation ±0.04 rad at 2.5 Hz, only while wave is active; no displacement + let ang: CGFloat = p.wave >= 0 + ? -0.61 + CGFloat(sin(p.wave * 2 * .pi * 2.5)) * 0.04 + : -0.61 + ctx.saveGState() + ctx.translateBy(x: rx0, y: ry0) + ctx.rotate(by: ang) + let cap = CGMutablePath() + gRR(ctx, -L/2, -T2/2, L, T2, T2/2) + cap.addPath(ctx.path!) + ctx.beginPath() + whiteFill(ctx, cap, x0: L/2, y0: -T2/2, x1: -L/2, y1: T2/2) + gRR(ctx, -L/2, -T2/2, L, T2, T2/2) + ctx.setStrokeColor(CGColor(red: 0, green: 0, blue: 0, alpha: 0.08)) + ctx.setLineWidth(0.8); ctx.strokePath() + ctx.restoreGState() +} + +private func drawMochi(_ ctx: CGContext, p: GreetPose) { + let hh = CGFloat(p.hb/2), hw = hh*GASP; guard hh > 0.4 else { return } + + // Halo (golden → blue) + if p.halo > 0 { + let bl = CGFloat(p.haloBlue) + let cr = gLerpF(232/255, 59/255, bl) + let cg = gLerpF(195/255, 158/255, bl) + let cb = gLerpF(154/255, 255/255, bl) + let cs = CGColorSpaceCreateDeviceRGB() + let px = CGFloat(p.x), py = CGFloat(p.y) + let R1 = hw * 2.6 + let ic1 = CGColor(red: cr, green: cg, blue: cb, alpha: CGFloat(0.18 * p.halo)) + let oc1 = CGColor(red: cr, green: cg, blue: cb, alpha: 0) + if let g1 = CGGradient(colorsSpace: cs, colors: [ic1,oc1] as CFArray, locations: [0,1]) { + ctx.saveGState() + ctx.addEllipse(in: CGRect(x: px-R1, y: py-R1, width: R1*2, height: R1*2)) + ctx.clip() + ctx.drawRadialGradient(g1, startCenter: CGPoint(x: px,y: py), startRadius: 0, + endCenter: CGPoint(x: px,y: py), endRadius: R1, options: []) + ctx.restoreGState() + } + let R2 = hw * 4.2 + let ic2 = CGColor(red: cr, green: cg, blue: cb, alpha: CGFloat(0.07 * p.halo)) + let oc2 = CGColor(red: cr, green: cg, blue: cb, alpha: 0) + if let g2 = CGGradient(colorsSpace: cs, colors: [ic2,oc2] as CFArray, locations: [0,1]) { + ctx.saveGState() + ctx.addEllipse(in: CGRect(x: px-R2, y: py-R2, width: R2*2, height: R2*2)) + ctx.clip() + ctx.drawRadialGradient(g2, startCenter: CGPoint(x: px,y: py), startRadius: 0, + endCenter: CGPoint(x: px,y: py), endRadius: R2, options: []) + ctx.restoreGState() + } + } + + ctx.saveGState() + ctx.translateBy(x: CGFloat(p.x), y: CGFloat(p.y)) + ctx.rotate(by: CGFloat(p.tilt)) + ctx.scaleBy(x: CGFloat(p.sx), y: CGFloat(p.sy)) + + drawHandL(ctx, hw: hw, hh: hh, p: p) + drawHandR(ctx, hw: hw, hh: hh, p: p) + + let mpath = mochiPath(hw: hw, hh: hh) + whiteFill(ctx, mpath, x0: hw*0.6, y0: -hh, x1: -hw*0.6, y1: hh) + + if p.tint > 0 { + let cs = CGColorSpaceCreateDeviceRGB() + let c0 = CGColor(red: 127/255, green: 180/255, blue: 234/255, alpha: CGFloat(p.tint)) + let c1 = CGColor(red: 127/255, green: 180/255, blue: 234/255, alpha: 0) + if let g = CGGradient(colorsSpace: cs, colors: [c0,c1] as CFArray, locations: [0,1]) { + ctx.saveGState() + ctx.addPath(mpath); ctx.clip() + ctx.drawLinearGradient(g, start: CGPoint(x: 0, y: hh), + end: CGPoint(x: 0, y: -hh*0.1), options: []) + ctx.restoreGState() + } + } + + ctx.saveGState() + ctx.addPath(mpath); ctx.clip() + ctx.setFillColor(gHex("#16171A")) + ctx.setStrokeColor(gHex("#16171A")) + let er = CGFloat(p.hb*0.06) + let sp = CGFloat(p.hb*0.19) + let lx = CGFloat(p.lookX)*hw*0.42 + let ly = CGFloat(p.lookY)*hh*0.28 + hh*0.12 + CGFloat(p.eyeRoll)*hh*1.25 + for sd: CGFloat in [-1, 1] { + ctx.saveGState() + ctx.translateBy(x: sd*sp+lx, y: ly) + if p.eye == .happy { + ctx.setLineWidth(er*0.95); ctx.setLineCap(.round) + ctx.beginPath() + ctx.addArc(center: CGPoint(x: 0, y: er*0.6), radius: er*1.25, + startAngle: .pi*1.15, endAngle: .pi*1.85, clockwise: false) + ctx.strokePath() + } else if p.eye == .content { + ctx.setLineWidth(er*0.95); ctx.setLineCap(.round) + ctx.beginPath() + ctx.addArc(center: CGPoint(x: 0, y: -er*0.5), radius: er*1.25, + startAngle: .pi*0.15, endAngle: .pi*0.85, clockwise: false) + ctx.strokePath() + } else { + ctx.scaleBy(x: 1, y: max(0.12, CGFloat(p.open))) + ctx.addEllipse(in: CGRect(x: -er, y: -er, width: er*2, height: er*2)) + ctx.fillPath() + } + ctx.restoreGState() + } + ctx.restoreGState() + + // Activity badge + if p.badge > 0.01 { + let bs = CGFloat(p.badge) + let br = hh*0.3 + ctx.saveGState() + ctx.translateBy(x: -hw*0.78, y: -hh*0.72) + ctx.scaleBy(x: bs, y: bs) + ctx.setFillColor(gHex("#000000")) + ctx.addEllipse(in: CGRect(x: -(br+hh*0.07), y: -(br+hh*0.07), + width: (br+hh*0.07)*2, height: (br+hh*0.07)*2)) + ctx.fillPath() + ctx.setFillColor(gHex("#3BA0F5")) + ctx.addEllipse(in: CGRect(x: -br, y: -br, width: br*2, height: br*2)) + ctx.fillPath() + ctx.setFillColor(gHex("#0B1B3A")) + for i: CGFloat in [-1, 0, 1] { + ctx.addEllipse(in: CGRect(x: i*br*0.5-br*0.17, y: -br*0.17, + width: br*0.34, height: br*0.34)) + ctx.fillPath() + } + ctx.restoreGState() + } + + ctx.restoreGState() +} + +private func drawParticles(_ ctx: CGContext, t: Double, tc: Double, p: GreetPose) { + guard p.card > 0 || p.fx < 1 else { return } + let fx = p.fx + + // WARP STREAKS: white vertical lines, fall-in 0 → 0.55 s + if t < 0.55 { + for s in greetParticles.warps { + guard t >= s.t0 else { continue } + let elapsed = t - s.t0 + let yBot = CGFloat(elapsed * s.speed) + let yTop = yBot - CGFloat(s.len) + guard yBot > 0 else { continue } + let streakX = CGFloat(320 - p.iw/2 + s.xNorm * p.iw) + let fadeOut = 1 - gSeg(t, 0.40, 0.55) + let alpha = CGFloat(s.alpha * fx * fadeOut) + ctx.setStrokeColor(CGColor(red: 1, green: 1, blue: 1, alpha: alpha)) + ctx.setLineWidth(CGFloat(s.thick)); ctx.setLineCap(.butt) + ctx.beginPath() + ctx.move(to: CGPoint(x: streakX, y: max(0, yTop))) + ctx.addLine(to: CGPoint(x: streakX, y: min(150, yBot))) + ctx.strokePath() + } + } + + // RING: single white burst at 0.45 s, ~90 dots + let ringT0 = 0.45 + let k = gSeg(t, ringT0, ringT0 + 1.35) + if k > 0 && k < 1 { + let rx = gLerpF(14, 380, CGFloat(GE.out(k))) + let ry = rx * 0.34 + let fade = CGFloat((1-k) * (k < 0.08 ? k/0.08 : 1) * fx * p.card) + for dot in greetParticles.ring { + let r: CGFloat = 1 + CGFloat(dot.j) + ctx.setFillColor(CGColor(red: 1, green: 1, blue: 1, + alpha: CGFloat(dot.al) * fade)) + let dx = CGFloat(GC0.x) + cos(CGFloat(dot.a)) * rx * r + let dy = CGFloat(GC0.y) + sin(CGFloat(dot.a)) * ry * r + ctx.fill(CGRect(x: dx, y: dy, width: CGFloat(dot.s), height: CGFloat(dot.s))) + } + } +} + +private func drawHeader(_ ctx: CGContext, alpha: Double) { + guard alpha > 0 else { return } + ctx.saveGState() + ctx.setAlpha(CGFloat(alpha)) + gRR(ctx, 18, 4, 44, 26, 13) + ctx.setFillColor(gHex("#1D1F23")); ctx.fillPath() + ctx.setFillColor(gHex("#F5F6F8")) + ctx.beginPath() + ctx.move(to: CGPoint(x: 33, y: 20)); ctx.addLine(to: CGPoint(x: 40, y: 13)) + ctx.addLine(to: CGPoint(x: 47, y: 20)); ctx.addLine(to: CGPoint(x: 47, y: 25)) + ctx.addLine(to: CGPoint(x: 33, y: 25)); ctx.closePath(); ctx.fillPath() + ctx.setFillColor(gHex("#8E939C")) + ctx.addEllipse(in: CGRect(x: 75.5, y: 10.5, width: 13, height: 13)); ctx.fillPath() + ctx.addEllipse(in: CGRect(x: 572, y: 11, width: 12, height: 12)); ctx.fillPath() + ctx.setFillColor(gHex("#000000")) + ctx.addEllipse(in: CGRect(x: 575.6, y: 14.6, width: 4.8, height: 4.8)); ctx.fillPath() + ctx.restoreGState() +} + +private let miniColors = ["#E86A6A","#3E86E0","#EFAE5A","#8C73F2"] + +private func drawMinis(_ ctx: CGContext, alpha: Double, compact: IslandRestingLayout) { + guard alpha > 0.01 else { return } + let cx = 320 - compact.width/2 + compact.miniGridCenterX + let cy = compact.botCenterY + let sp: CGFloat = 6 * compact.miniGridScale + let offsets: [(CGFloat, CGFloat)] = [(-sp,-sp),(sp,-sp),(-sp,sp),(sp,sp)] + for (i,(dx,dy)) in offsets.enumerated() { + ctx.saveGState() + ctx.translateBy(x: cx+dx, y: cy+dy) + let scale = CGFloat(alpha) * compact.miniGridScale + ctx.scaleBy(x: scale, y: scale) + ctx.setFillColor(gHex(miniColors[i])) + ctx.addPath(mochiPath(hw: 5.3, hh: 4)); ctx.fillPath() + ctx.restoreGState() + } +} + +// MARK: - Full draw + +private func drawGreeting(_ ctx: CGContext, size: CGSize, t: Double, + tc: Double, compact: IslandRestingLayout) { + let p = pose(t, tc: tc, compact: compact) + + if p.card > 0 { + ctx.saveGState() + ctx.setAlpha(CGFloat(p.card)) + gRR(ctx, GCARD.minX, GCARD.minY, GCARD.width, GCARD.height, GCARD_R) + ctx.setFillColor(gHex("#141518")); ctx.fillPath() + ctx.restoreGState() + + ctx.saveGState() + gRR(ctx, GCARD.minX, GCARD.minY, GCARD.width, GCARD.height, GCARD_R) + ctx.clip() + drawParticles(ctx, t: t, tc: tc, p: p) + ctx.restoreGState() + } else if tc.isFinite && t >= tc { + ctx.saveGState() + drawParticles(ctx, t: t, tc: tc, p: p) + ctx.restoreGState() + } + + drawMinis(ctx, alpha: p.minis, compact: compact) + drawMochi(ctx, p: p) +} + +// MARK: - SwiftUI View + +struct GreetingCanvasView: View { + @ObservedObject var state: AppState + + @State private var startDate = Date() + @State private var tc: Double = .infinity + @State private var greetFired = false + @State private var doneWork: DispatchWorkItem? = nil + + var body: some View { + TimelineView(.animation) { timeline in + let t = timeline.date.timeIntervalSince(startDate) + Canvas { context, size in + context.withCGContext { cgCtx in + drawGreeting(cgCtx, size: size, t: t, tc: tc, + compact: IslandRestingLayout(width: state.notchWidth + 160, + height: state.notchHeight)) + } + } + .onChange(of: !greetFired && t >= GT.end && tc >= GT.autoLeave) { _, trigger in + if trigger { fireGreetComplete() } + } + } + .onAppear { + startDate = Date() + tc = .infinity + greetFired = false + // Original score plays from the start; greet.wav and blip.wav kept for other uses + SoundEngine.shared.play("greeting") + // Safety fallback: fire done if timeline onChange misses it + let item = DispatchWorkItem { fireGreetComplete() } + doneWork = item + DispatchQueue.main.asyncAfter(deadline: .now() + GT.end + 0.05, execute: item) + } + .onDisappear { + doneWork?.cancel(); doneWork = nil + SoundEngine.shared.fadeOut("greeting", duration: 0.2) + } + .onReceive(NotificationCenter.default.publisher(for: .greetingHover)) { _ in + if tc >= GT.autoLeave { tc = .infinity } + } + .onReceive(NotificationCenter.default.publisher(for: .greetingInterrupt)) { _ in + let t = Date().timeIntervalSince(startDate) + if tc.isInfinite || tc > t { tc = t } + doneWork?.cancel(); doneWork = nil + SoundEngine.shared.fadeOut("greeting", duration: 0.25) + } + } + + private func fireGreetComplete() { + guard !greetFired else { return } + greetFired = true + doneWork?.cancel(); doneWork = nil + // Note: greeting music continues for ~0.3 s after greetComplete — intentional queue overlap + NotificationCenter.default.post(name: .greetComplete, object: nil) + } +} diff --git a/NotchBuddy/Sources/App/HookServer.swift b/NotchBuddy/Sources/App/HookServer.swift new file mode 100644 index 0000000..26dde14 --- /dev/null +++ b/NotchBuddy/Sources/App/HookServer.swift @@ -0,0 +1,2418 @@ +import Foundation +import Darwin +import AppKit +import SwiftUI +import CryptoKit + +// MARK: - HookServer +// Listens on a Unix domain socket for events from nb-hook (Claude Code hooks). +// Thread-safe: socket I/O on background threads, state updates dispatched to main queue. + +final class HookServer: @unchecked Sendable { + static let shared = HookServer() + + // Support directory paths + static var supportDir: URL { + FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)[0] + .appendingPathComponent("NotchBuddy") + } + static var socketPath: String { + #if APPSTORE + // Container home root keeps path ≤ 103 bytes (sun_path limit on macOS is 104 incl. NUL) + // /Users/louis/Library/Containers/fr.louisraille.Coucou/Data/nb.sock = 66 bytes ✓ + return NSHomeDirectory() + "/nb.sock" + #else + return supportDir.appendingPathComponent("nb.sock").path + #endif + } + // hookScriptPath is only used by the non-App Store build. + // App Store build derives the command from the panel-selected claudeURL in buildHooksData(claudeURL:). + static var hookScriptPath: String { supportDir.appendingPathComponent("nb-hook").path } + + // No approval blocking state — notch is notification-only, user answers in VS Code + + private static let maxPayload = 1_048_576 // 1 MB — reject oversized messages + private static let receiveTimeoutSeconds: Int = 5 // SO_RCVTIMEO on client sockets + private static let maxConnections = 32 // concurrent connection ceiling + + private var serverFD: Int32 = -1 + private let connectionLock = NSLock() + private var connectionCount = 0 + private var pendingApprovalFD: Int32 = -1 // held open while user decides + private var approvalFDSource: (any DispatchSourceRead)? = nil // monitors pendingApprovalFD + private var pendingQuestionFD: Int32 = -1 // held open while user answers AskUserQuestion + private var questionFDSource: (any DispatchSourceRead)? = nil // monitors pendingQuestionFD + private var questionPillId: String = "" // pill that owns the pending question + private var focusBeforeQuestion: String? = nil // saved focus to restore after question + private var activeSessionId: String? = nil // current Claude Code session + private var focusBeforeApproval: String? = nil // saved focus to restore after approval + + private init() {} + + // MARK: - Approval fd helpers + + @MainActor + private func cancelApprovalFDSource() { + approvalFDSource?.cancel() + approvalFDSource = nil + } + + /// Cancels the approval fd source (which closes the fd via its cancel handler), shows a + /// 3-second note, clears approval state, then collapses the island. + @MainActor + private func dismissApprovalCard(note: String) { + // cancelApprovalFDSource() triggers the cancel handler which closes the fd. + // Never close the fd here directly — Apple requires it to happen in the cancel handler. + cancelApprovalFDSource() + pendingApprovalFD = -1 + let state = AppState.shared + let pillId = state.pendingApproval?.pillId ?? "integration_claude" + state.pendingApproval = nil + state.isPinned = false + state.updateTask(id: pillId, state: .working) + clearPillBadge(id: pillId) + // Restore focus to the pill that was focused before the approval card appeared. + if let prev = focusBeforeApproval { + focusBeforeApproval = nil + if state.focusId == pillId, state.tasks.contains(where: { $0.id == prev }) { + withAnimation(.spring(response: 0.5, dampingFraction: 0.72)) { state.focusId = prev } + } + } + state.noteMessage = note + state.view = .note + DispatchQueue.main.asyncAfter(deadline: .now() + 3) { + NotificationCenter.default.post(name: .islandCollapse, object: nil) + } + } + + // MARK: - Question fd helpers + + @MainActor + private func cancelQuestionFDSource() { + questionFDSource?.cancel() + questionFDSource = nil + } + + @MainActor + private func dismissQuestionCard(note: String) { + cancelQuestionFDSource() + pendingQuestionFD = -1 + let state = AppState.shared + let pillId = questionPillId + state.pendingQuestion = nil + state.isPinned = false + state.updateTask(id: pillId, state: .working) + clearPillBadge(id: pillId) + if let prev = focusBeforeQuestion { + focusBeforeQuestion = nil + if state.focusId == pillId, state.tasks.contains(where: { $0.id == prev }) { + withAnimation(.spring(response: 0.5, dampingFraction: 0.72)) { state.focusId = prev } + } + } + if !note.isEmpty { + state.noteMessage = note + state.view = .note + DispatchQueue.main.asyncAfter(deadline: .now() + 3) { + NotificationCenter.default.post(name: .islandCollapse, object: nil) + } + } else { + state.view = state.tasks.isEmpty ? .empty : .overview + } + } + + /// Called by QuestionView. Sends answers JSON and cleans up. + @MainActor + func sendQuestionAnswers(_ answers: [String: Any]) { + let fd = pendingQuestionFD + pendingQuestionFD = -1 + let source = questionFDSource + questionFDSource = nil + if fd >= 0, let data = try? JSONSerialization.data(withJSONObject: ["permissionDecision": "answer", "answers": answers], options: .withoutEscapingSlashes), + let json = String(data: data, encoding: .utf8) { + Task.detached { [weak self] in + self?.sendLine(fd: fd, text: json) + DispatchQueue.main.async { source?.cancel() } + } + } else { + source?.cancel() + } + dismissQuestionCard(note: "") + } + + /// Called by QuestionView.onDisappear — card left screen without an explicit answer. + /// Sends "ask" immediately to unblock nb-hook; does NOT navigate (view already changed). + @MainActor + func releaseQuestionFD() { + guard pendingQuestionFD >= 0 else { return } + let fd = pendingQuestionFD + pendingQuestionFD = -1 + let source = questionFDSource + questionFDSource = nil + AppState.shared.pendingQuestion = nil + Task.detached { [weak self] in + self?.sendLine(fd: fd, text: #"{"permissionDecision":"ask"}"#) + DispatchQueue.main.async { source?.cancel() } + } + } + + /// Called by QuestionView "Reply in terminal" button. + @MainActor + func sendQuestionAsk() { + let fd = pendingQuestionFD + pendingQuestionFD = -1 + let source = questionFDSource + questionFDSource = nil + if fd >= 0 { + Task.detached { [weak self] in + self?.sendLine(fd: fd, text: #"{"permissionDecision":"ask"}"#) + DispatchQueue.main.async { source?.cancel() } + } + } else { + source?.cancel() + } + dismissQuestionCard(note: "") + } + + /// Returns the tool_input serialized as sorted-keys JSON, "" if absent or empty. + /// Same computation used in processPermissionRequest and processEvent to match PostToolUse. + private static func approvalInputKey(_ input: [String: Any]) -> String { + guard !input.isEmpty, + let data = try? JSONSerialization.data(withJSONObject: input, options: .sortedKeys), + let str = String(data: data, encoding: .utf8) else { return "" } + return str + } + + // MARK: - Start + + func start() { + // Ensure support directory exists (mode 0700 — not world-readable) + let dir = Self.supportDir + try? FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true) + try? FileManager.default.setAttributes([.posixPermissions: 0o700 as NSNumber], ofItemAtPath: dir.path) + #if !APPSTORE + installHookScript() + #endif + Thread.detachNewThread { self.serverThread() } + } + + // MARK: - Socket server (background thread) + + private func serverThread() { + let path = Self.socketPath + // sun_path on macOS is 104 bytes including the NUL terminator → max 103 usable bytes + let maxSunPathBytes = MemoryLayout.size - MemoryLayout.size - 1 + guard path.utf8.count <= maxSunPathBytes else { + NSLog("HookServer: socket path too long (\(path.utf8.count) bytes, max \(maxSunPathBytes)): \(path)") + return + } + try? FileManager.default.removeItem(atPath: path) + + let fd = socket(AF_UNIX, SOCK_STREAM, 0) + guard fd >= 0 else { return } + serverFD = fd + + var addr = sockaddr_un() + addr.sun_family = sa_family_t(AF_UNIX) + let cpath = Array(path.utf8CString) + withUnsafeMutableBytes(of: &addr.sun_path) { raw in + for (i, c) in cpath.enumerated() where i < raw.count { raw[i] = UInt8(bitPattern: c) } + } + + let bindRC = withUnsafePointer(to: &addr) { ptr in + ptr.withMemoryRebound(to: sockaddr.self, capacity: 1) { Darwin.bind(fd, $0, socklen_t(MemoryLayout.size)) } + } + guard bindRC == 0 else { close(fd); return } + // Restrict socket to owner only + chmod(path, 0o600) + guard Darwin.listen(fd, 32) == 0 else { close(fd); return } + + while true { + let clientFD = Darwin.accept(fd, nil, nil) + guard clientFD >= 0 else { break } + // Reject connections from other users (same-UID check) + var euid: uid_t = 0 + var egid: gid_t = 0 + guard getpeereid(clientFD, &euid, &egid) == 0, euid == getuid() else { + close(clientFD) + continue + } + // Enforce concurrent connection ceiling + connectionLock.lock() + let count = connectionCount + if count < Self.maxConnections { connectionCount += 1 } + connectionLock.unlock() + guard count < Self.maxConnections else { + close(clientFD) + continue + } + Thread.detachNewThread { self.handleClient(fd: clientFD) } + } + } + + // MARK: - Client handler (background thread) + + private func handleClient(fd: Int32) { + defer { + connectionLock.lock(); connectionCount -= 1; connectionLock.unlock() + } + // 5-second receive timeout — unresponsive clients don't hold threads forever + var tv = timeval(tv_sec: Self.receiveTimeoutSeconds, tv_usec: 0) + setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, socklen_t(MemoryLayout.size)) + + // Read newline-delimited JSON + var raw = Data() + var buf = [UInt8](repeating: 0, count: 4096) + outer: while true { + let n = recv(fd, &buf, buf.count, 0) + if n <= 0 { break } + for i in 0.. Self.maxPayload { break } + } + + guard !raw.isEmpty, + let payload = try? JSONSerialization.jsonObject(with: raw) as? [String: Any] else { + sendLine(fd: fd, text: #"{"ok":true}"#) + close(fd) + return + } + + let coucouKind = payload["coucou_kind"] as? String ?? "" + + // statusline payloads are handled separately — no session, no reveal, no sound + if coucouKind == "statusline" { + Task { @MainActor in self.processStatusLine(payload: payload) } + sendLine(fd: fd, text: #"{"ok":true}"#) + close(fd) + return + } + + // AskUserQuestion via --ask PreToolUse hook — hold fd open like PermissionRequest + if coucouKind == "ask_user_question" { + let toolInput = payload["tool_input"] as? [String: Any] ?? [:] + if let parsed = AskQuestion.parse(toolInput: toolInput) { + Task { @MainActor in self.processQuestionRequest(fd: fd, parsed: parsed, payload: payload) } + } else { + // Malformed payload — fall back: send ask so Claude Code re-asks in terminal + sendLine(fd: fd, text: #"{"permissionDecision":"ask"}"#) + close(fd) + } + return + } + + let eventName = payload["hook_event_name"] as? String ?? "" + + if eventName == "PermissionRequest" { + // Hold fd open — Claude Code waits for our decision (up to 120s) + Task { @MainActor in self.processPermissionRequest(fd: fd, payload: payload) } + } else { + Task { @MainActor in self.processEvent(name: eventName, payload: payload) } + sendLine(fd: fd, text: #"{"ok":true}"#) + close(fd) + } + } + + + // MARK: - Event → AppState + // Claude Code events route to the permanent "integration_claude" task. + // Events tagged with a valid coucou_agent route to a dynamic "integration_" task. + // View switches only happen if VS Code (or the agent pill) is currently focused. + // When not focused: state updates animate the mini bot in the pill; badge shown for alerts. + + @MainActor + private func processEvent(name: String, payload: [String: Any]) { + let state = AppState.shared + let sessionId = payload["session_id"] as? String + ?? payload["conversation_id"] as? String + ?? "unknown" + let cwd = payload["cwd"] as? String ?? "" + let rawName = URL(fileURLWithPath: cwd).lastPathComponent + let projectName = aliasProjectName(rawName.isEmpty ? "Session" : rawName) + + // Determine which pill this event belongs to. + // coucou_agent must be lowercase, digits and hyphens, ≤ 24 chars. + let rawAgent = payload["coucou_agent"] as? String ?? "" + let validAgent = Self.validateAgent(rawAgent) + + let termProgram = payload["term_program"] as? String ?? "" + let bundleId = payload["bundle_id"] as? String ?? "" + + // Cursor identified solely by its stable Electron bundle ID. + // ToDesktop builds other apps too — do not match on "todesktop" alone. + let isCursorEditor = bundleId.lowercased() == "com.todesktop.230313mzl4w4u92" + let isVSCodeEditor = !isCursorEditor && ( + termProgram.lowercased().contains("vscode") || + bundleId.lowercased().contains("vscode")) + + // Routing: + // • "codex" → agent_codex (GitHub build only: workspace pill, approvals in the notch) + // • other valid coucou_agent → external pill (fire-and-forget, no approval card) + // • Cursor bundle ID → agent_cursor + // • VS Code → integration_claude + #if !APPSTORE + let isCodexEvent = rawAgent == "codex" + #else + let isCodexEvent = false + #endif + let agentId: String + let isExternalAgent: Bool + if isCodexEvent { + agentId = "agent_codex" + isExternalAgent = false + } else if let agent = validAgent { + agentId = "agent_\(agent)" + isExternalAgent = true + } else if isCursorEditor { + agentId = "agent_cursor" + isExternalAgent = false + } else if isVSCodeEditor { + agentId = "integration_claude" + isExternalAgent = false + } else { + nbLog("Ignored \(name) from \(termProgram.isEmpty ? bundleId : termProgram) (\(projectName))") + return + } + + let focused = state.focusId == agentId + + #if PHONE_LINK + // The iPhone's "last turn" (prompt, actions, diffs, answer). + if !isExternalAgent { TurnRecorder.shared.record(event: name, payload: payload, pillId: agentId) } + #endif + + // While a permission request is pending, dismiss when the resolving event arrives, + // then continue normal processing. Only skip normal processing when unresolved. + if let pending = state.pendingApproval, agentId == pending.pillId { + let handledNote: String + switch pending.pillId { + case "agent_cursor": handledNote = "Handled in Cursor." + case "agent_codex": handledNote = "Handled in Codex." + default: handledNote = "Handled in VS Code." + } + var resolved = false + switch name { + case "PostToolUse", "PostToolUseFailure": + // Only dismiss when this exact tool call finished — same session, tool and input. + // Other parallel tools finishing must not close the card. + if sessionId == pending.sessionId, + (payload["tool_name"] as? String ?? "") == pending.tool, + Self.approvalInputKey(payload["tool_input"] as? [String: Any] ?? [:]) == pending.inputKey { + dismissApprovalCard(note: handledNote) + resolved = true + } + case "Stop", "StopFailure", "UserPromptSubmit", "SessionEnd", "Interrupt": + // Turn ended or session interrupted — the permission is moot. + if sessionId == pending.sessionId { + dismissApprovalCard(note: handledNote) + resolved = true + } + default: break + } + if !resolved { return } + // Approval dismissed — fall through so the resolving event updates state normally. + } + + switch name { + + case "SessionStart": + activeSessionId = sessionId + if isExternalAgent { upsertExternalAgent(id: agentId, name: validAgent!) } else { upsertWorkspaceTask(id: agentId, projectName: projectName, cwd: cwd) } + if let idx = state.tasks.firstIndex(where: { $0.id == agentId }) { state.tasks[idx].finalLine = nil } + nbLog("SessionStart \(isExternalAgent ? agentId : projectName) (\(sessionId.prefix(8)))") + if state.isPresent { expandIfNeeded(to: .overview) } + SoundEngine.shared.play("work") + + case "UserPromptSubmit": + activeSessionId = sessionId + if isExternalAgent { upsertExternalAgent(id: agentId, name: validAgent!) } else { upsertWorkspaceTask(id: agentId, projectName: projectName, cwd: cwd) } + if let idx = state.tasks.firstIndex(where: { $0.id == agentId }) { state.tasks[idx].finalLine = nil } + state.updateTask(id: agentId, state: .thinking) + if let prompt = payload["prompt"] as? String, !prompt.isEmpty { + appendStep(id: agentId, step: String(prompt.prefix(60))) + } + if state.isPresent { expandIfNeeded(to: .overview) } + + case "PreToolUse": + activeSessionId = sessionId + let tool = payload["tool_name"] as? String ?? "Tool" + if let idx = state.tasks.firstIndex(where: { $0.id == agentId }) { state.tasks[idx].finalLine = nil } + // AskUserQuestion is handled via the dedicated --ask hook. + // Skip state/step update here to avoid flickering over the question card. + guard tool != "AskUserQuestion" else { break } + if isExternalAgent { upsertExternalAgent(id: agentId, name: validAgent!) } else { upsertWorkspaceTask(id: agentId, projectName: projectName, cwd: cwd) } + state.updateTask(id: agentId, state: .working) + let input = payload["tool_input"] as? [String: Any] ?? [:] + let step = frenchStep(tool: tool, input: input) + appendStep(id: agentId, step: step) + nbLog("PreToolUse \(tool)") + + case "PostToolUse": + state.updateTask(id: agentId, state: .working) + // Live diff for Edit / MultiEdit / Write + let diffTool = payload["tool_name"] as? String ?? "" + let diffInput = payload["tool_input"] as? [String: Any] ?? [:] + if let diff = buildFileDiff(tool: diffTool, input: diffInput, pillId: agentId) { + let idx = state.appendSessionDiff(diff, for: agentId) + let step = String.makeDiffStep(filename: diff.name, added: diff.added, removed: diff.removed, diffId: idx) + appendStep(id: agentId, step: step) + } + + case "PostToolUseFailure": + state.updateTask(id: agentId, state: .working) + appendStep(id: agentId, step: "⚠ failed") + + case "Notification": + let message = payload["message"] as? String ?? "" + let lower = message.lowercased() + if lower.contains("rate limit") || lower.contains("limite d") { + state.updateTask(id: agentId, state: .ratelimit) + SoundEngine.shared.play("rate") + } else if message.hasSuffix("?") { + state.updateTask(id: agentId, state: .question) + appendStep(id: agentId, step: message) + } + + case "Stop": + state.updateTask(id: agentId, state: .finished) + let rawFinal = (payload["last_assistant_message"] as? String) + ?? (payload["message"] as? String) ?? "" + let finalText = DiffEngine.toOneLine(rawFinal) + if !finalText.isEmpty { + appendStep(id: agentId, step: finalText) + if let idx = state.tasks.firstIndex(where: { $0.id == agentId }) { + state.tasks[idx].finalLine = finalText + } + } + SoundEngine.shared.play("finish") + if focused { + expandIfNeeded(to: .finished) + } else { + setPillBadge(id: agentId, badge: .finished) + } + DispatchQueue.main.asyncAfter(deadline: .now() + 5.2) { + if isExternalAgent { + AppState.shared.removeTask(id: agentId) + } else { + AppState.shared.updateTask(id: agentId, state: .idle) + self.clearPillBadge(id: agentId) + } + } + + case "StopFailure": + state.updateTask(id: agentId, state: .error) + SoundEngine.shared.play("error") + if focused { + expandIfNeeded(to: .error) + } else { + setPillBadge(id: agentId, badge: .error) + } + + case "Interrupt": + // Codex: user stopped the turn + activeSessionId = nil + state.updateTask(id: agentId, state: .idle) + clearPillBadge(id: agentId) + + case "SessionEnd": + activeSessionId = nil + if let idx = state.tasks.firstIndex(where: { $0.id == agentId }) { state.tasks[idx].finalLine = nil } + state.clearSessionDiffs(for: agentId) + state.removeTask(id: agentId) + + case "SubagentStart": + appendStep(id: agentId, step: "+ subagent") + + case "SubagentStop": + appendStep(id: agentId, step: "• subagent done") + + default: + break + } + } + + // MARK: - Agent validation + dynamic pill + + /// Validates a coucou_agent name: lowercase, digits and hyphens, 1–24 chars. + /// "claude" is reserved and rejected so it cannot impersonate the Claude Code pill. + /// Returns the name unchanged if valid, nil otherwise. + private static func validateAgent(_ raw: String) -> String? { + guard !raw.isEmpty, raw.count <= 24, raw != "claude" else { return nil } + for scalar in raw.unicodeScalars { + let v = scalar.value + let ok = (v >= 0x61 && v <= 0x7A) // a-z + || (v >= 0x30 && v <= 0x39) // 0-9 + || v == 0x2D // - + guard ok else { return nil } + } + return raw + } + + /// Creates a dynamic pill for a third-party agent on first event, then no-ops. + /// ID format: "agent_" — never collides with "integration_*" pills. + /// Inserted right after integration_claude so it appears in the visible prefix(4). + @MainActor + private func upsertExternalAgent(id: String, name: String) { + let state = AppState.shared + guard state.tasks.firstIndex(where: { $0.id == id }) == nil else { return } + let color = IslandConst.colorForProject(name) + let task = AgentTask(id: id, name: name, color: color, state: .idle, steps: [], source: .agent) + if let claudeIdx = state.tasks.firstIndex(where: { $0.id == "integration_claude" }) { + state.tasks.insert(task, at: claudeIdx + 1) + } else { + state.tasks.append(task) + } + if state.focusId == nil { state.focusId = id } + state.syncMode() + } + + // MARK: - Helpers + + @MainActor + private func expandIfNeeded(to view: IslandView) { + let state = AppState.shared + let isAlert: Bool + switch view { + case .approval, .question, .finished, .error, .confused: isAlert = true + default: isAlert = false + } + if state.mode == .expanded { + // Approval and question always win; other alerts are blocked while a card is showing + if view == .approval || view == .question { + state.view = view + } else if isAlert && state.pendingApproval == nil { + state.view = view + } + } else if isAlert { + // Alerts always force-expand + NotificationCenter.default.post(name: .hookExpand, object: view) + } else if state.mode == .hidden { + // Non-alert work events: reveal compact only, never force-expand + NotificationCenter.default.post(name: .hookReveal, object: nil) + } + // Already compact and non-alert: Mochi state update is enough, no expand + } + + // MARK: - Status line (plan gauge) + + @MainActor + private func processStatusLine(payload: [String: Any]) { + if let usage = ClaudePlanGauge.parse(payload: payload) { + AppState.shared.claudePlanUsage = usage + } + } + + // MARK: - Permission request (blocking — Claude Code waits for decision) + + @MainActor + private func processPermissionRequest(fd: Int32, payload: [String: Any]) { + let state = AppState.shared + let sessionId = payload["session_id"] as? String + ?? payload["conversation_id"] as? String + ?? "unknown" + let cwd = payload["cwd"] as? String ?? "" + let rawName = URL(fileURLWithPath: cwd).lastPathComponent + let projectName = aliasProjectName(rawName.isEmpty ? "Session" : rawName) + + let rawAgent = payload["coucou_agent"] as? String ?? "" + let termProgram = payload["term_program"] as? String ?? "" + let bundleId = payload["bundle_id"] as? String ?? "" + let isCursorEditor = bundleId.lowercased() == "com.todesktop.230313mzl4w4u92" + let isVSCodeEditor = !isCursorEditor && ( + termProgram.lowercased().contains("vscode") || + bundleId.lowercased().contains("vscode")) + + // Codex gets the same approval card as Claude Code / Cursor (GitHub build only). + // Other external agents (any other coucou_agent) answer immediately with "ask" + // so the agent re-asks in its own terminal — they do not get a notch card. + #if !APPSTORE + let isCodexRequest = rawAgent == "codex" + #else + let isCodexRequest = false + #endif + if !isCodexRequest && Self.validateAgent(rawAgent) != nil { + Task.detached { [weak self] in + self?.sendLine(fd: fd, text: #"{"permissionDecision":"ask"}"#) + close(fd) + } + return + } + + // Determine which workspace pill owns the request. + let pillId: String + if isCodexRequest { + pillId = "agent_codex" + } else if isCursorEditor { + pillId = "agent_cursor" + } else { + pillId = "integration_claude" + } + guard isCodexRequest || isCursorEditor || isVSCodeEditor else { + Task.detached { [weak self] in + self?.sendLine(fd: fd, text: #"{"permissionDecision":"ask"}"#) + close(fd) + } + return + } + + let tool = payload["tool_name"] as? String ?? "Tool" + let toolInput = payload["tool_input"] as? [String: Any] ?? [:] + let inputKey = Self.approvalInputKey(toolInput) + nbLog("PermissionRequest \(tool) [\(pillId)]") + + // AskUserQuestion is now handled via the dedicated --ask PreToolUse hook. + // If it still arrives here as a PermissionRequest, reply "ask" so Claude Code + // re-asks in the terminal — never show the question twice. + if tool == "AskUserQuestion" { + Task.detached { [weak self] in + self?.sendLine(fd: fd, text: #"{"permissionDecision":"ask"}"#) + close(fd) + } + return + } + + let command = toolInput["command"] as? String ?? tool + + if pendingApprovalFD >= 0 { + // Displace the previous request: write "ask" then cancel its source. + // The cancel handler closes the old fd — never close it directly. + let old = pendingApprovalFD + let oldSource = approvalFDSource + approvalFDSource = nil + Task.detached { [weak self] in + // "ask" → nb-hook outputs nothing → Claude Code re-asks + self?.sendLine(fd: old, text: #"{"permissionDecision":"ask"}"#) + DispatchQueue.main.async { oldSource?.cancel() } + } + } + pendingApprovalFD = fd + activeSessionId = sessionId + + upsertWorkspaceTask(id: pillId, projectName: projectName, cwd: cwd) + state.updateTask(id: pillId, state: .approval) + state.pendingApproval = ApprovalInfo(sessionId: sessionId, tool: tool, + command: command, inputKey: inputKey, pillId: pillId) + state.isPinned = true + SoundEngine.shared.play("approval") + + // Approval always forces the island open — user must be able to respond. + // Save current focus so we can restore it when the card is dismissed. + if focusBeforeApproval == nil { focusBeforeApproval = state.focusId } + withAnimation(.spring(response: 0.5, dampingFraction: 0.72)) { state.focusId = pillId } + expandIfNeeded(to: .approval) + + // Monitor fd: if the editor closes the connection (handled externally), dismiss the card. + // The cancel handler closes the fd — never close it anywhere else. + let capturedPillId = pillId + let source = DispatchSource.makeReadSource(fileDescriptor: fd, queue: .main) + source.setEventHandler { [weak self] in + guard let self, self.pendingApprovalFD == fd else { return } + let note: String + switch capturedPillId { + case "agent_cursor": note = "Handled in Cursor." + case "agent_codex": note = "Handled in Codex." + default: note = "Handled in VS Code." + } + self.dismissApprovalCard(note: note) + } + source.setCancelHandler { close(fd) } + source.resume() + approvalFDSource = source + + // 115s safety timeout — show a note and cancel without sending a decision. + // nb-hook reads EOF from the cancel handler's close and exits; Claude Code / Codex re-asks. + let captured = fd + DispatchQueue.main.asyncAfter(deadline: .now() + 115) { [weak self] in + guard let self, self.pendingApprovalFD == captured else { return } + let note: String + switch capturedPillId { + case "agent_cursor": note = "Still waiting in Cursor." + case "agent_codex": note = "Still waiting in Codex." + default: note = "Still waiting in VS Code." + } + self.dismissApprovalCard(note: note) + } + } + + /// Called by ApprovalView buttons. Writes the decision to the waiting nb-hook and cleans up. + @MainActor + func sendApprovalDecision(_ decision: String) { + let fd = pendingApprovalFD + pendingApprovalFD = -1 + // Capture source before nulling — we send the decision first, then cancel the source. + // The cancel handler closes the fd; never close it directly. + let source = approvalFDSource + approvalFDSource = nil + + let json: String + switch decision { + case "allow": json = #"{"permissionDecision":"allow"}"# + case "always": json = #"{"permissionDecision":"always"}"# + case "ask": json = #"{"permissionDecision":"ask"}"# + default: json = #"{"permissionDecision":"deny"}"# + } + + if fd >= 0 { + Task.detached { [weak self] in + // Write decision while fd is still valid, then cancel source → cancel handler closes fd + self?.sendLine(fd: fd, text: json) + DispatchQueue.main.async { source?.cancel() } + } + } else { + source?.cancel() + } + + let state = AppState.shared + let pillId = state.pendingApproval?.pillId ?? "integration_claude" + state.pendingApproval = nil + state.isPinned = false + state.updateTask(id: pillId, state: .working) + clearPillBadge(id: pillId) + // Restore focus to the pill that was focused before the approval card appeared. + if let prev = focusBeforeApproval { + focusBeforeApproval = nil + if state.focusId == pillId, state.tasks.contains(where: { $0.id == prev }) { + withAnimation(.spring(response: 0.5, dampingFraction: 0.72)) { state.focusId = prev } + } + } + state.view = state.tasks.isEmpty ? .empty : .overview + } + + // MARK: - Question request + + @MainActor + private func processQuestionRequest(fd: Int32, parsed: AskQuestion, payload: [String: Any]) { + let state = AppState.shared + let sessionId = payload["session_id"] as? String + ?? payload["conversation_id"] as? String + ?? "unknown" + let cwd = payload["cwd"] as? String ?? "" + let rawName = URL(fileURLWithPath: cwd).lastPathComponent + let projectName = aliasProjectName(rawName.isEmpty ? "Session" : rawName) + + let rawAgent = payload["coucou_agent"] as? String ?? "" + let termProgram = payload["term_program"] as? String ?? "" + let bundleId = payload["bundle_id"] as? String ?? "" + let isCursorEditor = bundleId.lowercased() == "com.todesktop.230313mzl4w4u92" + let isVSCodeEditor = !isCursorEditor && ( + termProgram.lowercased().contains("vscode") || + bundleId.lowercased().contains("vscode")) + #if !APPSTORE + let isCodexRequest = rawAgent == "codex" + #else + let isCodexRequest = false + #endif + let pillId: String + if isCodexRequest { + pillId = "agent_codex" + } else if isCursorEditor { + pillId = "agent_cursor" + } else { + pillId = "integration_claude" + } + guard isCodexRequest || isCursorEditor || isVSCodeEditor else { + Task.detached { [weak self] in + self?.sendLine(fd: fd, text: #"{"permissionDecision":"ask"}"#) + close(fd) + } + return + } + + // Displace any previous question waiting for an answer. + if pendingQuestionFD >= 0 { + let old = pendingQuestionFD + let oldSrc = questionFDSource + questionFDSource = nil + Task.detached { [weak self] in + self?.sendLine(fd: old, text: #"{"permissionDecision":"ask"}"#) + DispatchQueue.main.async { oldSrc?.cancel() } + } + } + pendingQuestionFD = fd + activeSessionId = sessionId + questionPillId = pillId + + upsertWorkspaceTask(id: pillId, projectName: projectName, cwd: cwd) + state.updateTask(id: pillId, state: .question) + state.pendingQuestion = parsed + state.isPinned = true + SoundEngine.shared.play("approval") + + if focusBeforeQuestion == nil { focusBeforeQuestion = state.focusId } + withAnimation(.spring(response: 0.5, dampingFraction: 0.72)) { state.focusId = pillId } + expandIfNeeded(to: .question) + + let source = DispatchSource.makeReadSource(fileDescriptor: fd, queue: .main) + source.setEventHandler { [weak self] in + guard let self, self.pendingQuestionFD == fd else { return } + self.dismissQuestionCard(note: "") + } + source.setCancelHandler { close(fd) } + source.resume() + questionFDSource = source + + let captured = fd + DispatchQueue.main.asyncAfter(deadline: .now() + 120) { [weak self] in + guard let self, self.pendingQuestionFD == captured else { return } + // Send "ask" so nb-hook exits cleanly; Claude Code re-asks in terminal. + let askFD = self.pendingQuestionFD + self.pendingQuestionFD = -1 + let src = self.questionFDSource + self.questionFDSource = nil + Task.detached { [weak self] in + self?.sendLine(fd: askFD, text: #"{"permissionDecision":"ask"}"#) + DispatchQueue.main.async { src?.cancel() } + } + self.dismissQuestionCard(note: "") + } + } + + /// Updates or transiently creates a workspace pill (VS Code or Cursor) task. + /// If the task already exists (persistent), just updates name/cwd. + /// If missing (transient), creates it and inserts after the main pill. + @MainActor + private func upsertWorkspaceTask(id: String, projectName: String, cwd: String = "") { + let state = AppState.shared + if let idx = state.tasks.firstIndex(where: { $0.id == id }) { + state.tasks[idx].name = projectName + if !cwd.isEmpty { state.tasks[idx].sessionCwd = cwd } + return + } + // Transient: create and insert after the main pill + let def = PillCatalog.definition(for: id) + let color = def?.color ?? "#C0C4CC" + let source = def?.source ?? .agent + let task = AgentTask(id: id, name: projectName, color: color, + state: .idle, steps: [], source: source, isIntegration: true) + if let mainIdx = state.tasks.firstIndex(where: { $0.id == state.mainPillId }) { + state.tasks.insert(task, at: mainIdx + 1) + } else { + state.tasks.insert(task, at: 0) + } + if state.focusId == nil { state.focusId = id } + state.syncMode() + } + + // MARK: - Badge helpers + + @MainActor + private func setPillBadge(id: String, badge: PillBadge) { + let state = AppState.shared + guard let idx = state.tasks.firstIndex(where: { $0.id == id }) else { return } + state.tasks[idx].pillBadge = badge + } + + @MainActor + private func clearPillBadge(id: String) { + let state = AppState.shared + guard let idx = state.tasks.firstIndex(where: { $0.id == id }) else { return } + state.tasks[idx].pillBadge = nil + } + + @MainActor + private func appendStep(id: String, step: String) { + let state = AppState.shared + guard let idx = state.tasks.firstIndex(where: { $0.id == id }) else { return } + state.tasks[idx].steps.append(step) + if state.tasks[idx].steps.count > 20 { state.tasks[idx].steps.removeFirst() } + state.tasks[idx].stepIndex = state.tasks[idx].steps.count - 1 + } + + // MARK: - Project name alias mapping + + private func aliasProjectName(_ name: String) -> String { + let aliases: [String: String] = [ + "notch-buddy": "Notch Buddy", + "notchbuddy": "Notch Buddy", + "notch_buddy": "Notch Buddy", + ] + return aliases[name.lowercased()] ?? name + } + + // MARK: - French step labels + + private func frenchStep(tool: String, input: [String: Any]) -> String { + let labels: [String: String] = [ + "Bash": "Exécute", + "Read": "Lit", + "Write": "Écrit", + "Edit": "Modifie", + "Glob": "Cherche", + "Grep": "Recherche", + "WebSearch": "Recherche web", + "WebFetch": "Récupère", + "TodoWrite": "Tâches", + "Task": "Agent", + "LS": "Liste", + "MultiEdit": "Modifie", + "NotebookEdit": "Notebook", + // Codex tools + "apply_patch": "Modifie", + "update_plan": "Tâches", + "spawn_agent": "Agent", + ] + var label = labels[tool] ?? tool + + // Codex MCP tools arrive as mcp__server__tool — show "server · tool" + if tool.hasPrefix("mcp__") { + let rest = String(tool.dropFirst(5)) + let parts = rest.components(separatedBy: "__") + label = parts.count >= 2 ? "\(parts[0]) · \(parts.dropFirst().joined(separator: "__"))" : rest + } + + // Bash: infer a more precise verb from the command + if tool == "Bash", let cmd = input["command"] as? String { + return "\(bashVerb(cmd)) · \(oneLine(cmd))" + } + + // apply_patch: extract the first file name from the patch + if tool == "apply_patch", let patch = input["command"] as? String { + for line in patch.split(separator: "\n") { + for prefix in ["*** Update File: ", "*** Add File: ", "*** Delete File: "] { + if line.hasPrefix(prefix) { + let path = String(line.dropFirst(prefix.count)) + return "\(label) · \(URL(fileURLWithPath: path).lastPathComponent)" + } + } + } + return label + } + + if let cmd = input["command"] as? String { + return "\(label) · \(oneLine(cmd))" + } else if let path = input["path"] as? String { + return "\(label) · \(URL(fileURLWithPath: path).lastPathComponent)" + } else if let file = input["file_path"] as? String { + return "\(label) · \(URL(fileURLWithPath: file).lastPathComponent)" + } else if let query = input["query"] as? String { + return "\(label) · \(oneLine(query))" + } + return label + } + + /// Infers a French verb from a shell command's first word. + private func bashVerb(_ command: String) -> String { + let first = command.split(whereSeparator: { $0.isWhitespace }).first.map(String.init) ?? "" + switch first { + case "cat", "bat", "head", "tail", "less", "more", "nl": return "Lit" + case "rg", "grep", "find", "fd", "ls", "tree", "wc": return "Cherche" + default: break + } + let testRunners = ["pytest", "vitest", "jest", "npm test", "npm run test", + "cargo test", "go test", "swift test", "make test", + "xcodebuild test", "unittest"] + if testRunners.contains(where: { command.contains($0) }) { return "Teste" } + return "Exécute" + } + + // MARK: - Live diff helpers + + @MainActor + private func buildFileDiff(tool: String, input: [String: Any], pillId: String) -> FileDiff? { + switch tool { + case "Edit": + guard let old = input["old_string"] as? String, + let new = input["new_string"] as? String, + let path = input["file_path"] as? String, + !old.isEmpty || !new.isEmpty else { return nil } + let d = DiffEngine.fromEdit(old: old, new: new, path: path) + return (d.added > 0 || d.removed > 0) ? d : nil + + case "MultiEdit": + guard let path = input["file_path"] as? String, + let edits = input["edits"] as? [[String: Any]], !edits.isEmpty else { return nil } + var totalAdded = 0, totalRemoved = 0, allHunks: [DiffHunk] = [], anyLarge = false + for edit in edits { + guard let old = edit["old_string"] as? String, + let new = edit["new_string"] as? String else { continue } + let d = DiffEngine.fromEdit(old: old, new: new, path: path) + totalAdded += d.added; totalRemoved += d.removed + allHunks.append(contentsOf: d.hunks); if d.tooLarge { anyLarge = true } + } + guard totalAdded > 0 || totalRemoved > 0 else { return nil } + return FileDiff(path: path, added: totalAdded, removed: totalRemoved, + hunks: allHunks, tooLarge: anyLarge, isNewFile: false) + + case "Write": + guard let path = input["file_path"] as? String, + let content = input["content"] as? String, !content.isEmpty else { return nil } + let d = DiffEngine.fromNew(content: content, path: path) + return (d.added > 0 || d.removed > 0) ? d : nil + + default: + return nil + } + } + + /// Collapses whitespace so a multi-line command stays one ticker row. + private func oneLine(_ text: String, limit: Int = 60) -> String { + let collapsed = text.split(whereSeparator: { $0.isNewline || $0 == "\t" }) + .joined(separator: " ") + return collapsed.count > limit ? String(collapsed.prefix(limit)) + "…" : collapsed + } + + // MARK: - Logging + + private func nbLog(_ message: String) { + appendAppLog("nb.log", message) + } + + private func sendLine(fd: Int32, text: String) { + let bytes = Array((text + "\n").utf8) + bytes.withUnsafeBytes { buffer in + var sent = 0 + while sent < buffer.count { + let n = Darwin.send(fd, buffer.baseAddress! + sent, buffer.count - sent, 0) + if n <= 0 { break } + sent += n + } + } + } + + // MARK: - nb-hook script installation + + func installHookScript() { + #if APPSTORE + // In App Store mode the script is written during settings hook installation + // (requires NSOpenPanel to ~/.claude chosen by the user) + #else + let dir = Self.supportDir + try? FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true) + try? FileManager.default.setAttributes([.posixPermissions: 0o700 as NSNumber], ofItemAtPath: dir.path) + // nb-hook: shell wrapper (always exits 0, calls nb-hook.py via python3) + let wrapperURL = URL(fileURLWithPath: Self.hookScriptPath) + try? nbHookShellWrapper.write(to: wrapperURL, atomically: true, encoding: .utf8) + _ = try? FileManager.default.setAttributes([.posixPermissions: 0o755 as NSNumber], ofItemAtPath: wrapperURL.path) + // nb-hook.py: Python relay + let pyURL = wrapperURL.deletingLastPathComponent().appendingPathComponent("nb-hook.py") + try? nbHookPythonGitHub.write(to: pyURL, atomically: true, encoding: .utf8) + _ = try? FileManager.default.setAttributes([.posixPermissions: 0o755 as NSNumber], ofItemAtPath: pyURL.path) + #endif + } + + // MARK: - Outdated hook detection + + /// Returns true if settings.json has a Coucou hook that needs updating: + /// either a PermissionRequest hook with timeout < 120s, or the AskUserQuestion + /// PreToolUse matcher is missing (requires Claude Code 2.1.85+). + static func hooksNeedUpdate() -> Bool { + let settingsURL = FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".claude/settings.json") + guard let data = try? Data(contentsOf: settingsURL), + let settings = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let hooks = settings["hooks"] as? [String: Any] else { + return false + } + // Track whether any Coucou hook is installed at all + var hasCoucouHooks = false + + if let permReqHooks = hooks["PermissionRequest"] as? [[String: Any]] { + for matcher in permReqHooks { + if let hookList = matcher["hooks"] as? [[String: Any]] { + for hook in hookList { + if let cmd = hook["command"] as? String, + cmd.contains("NotchBuddy") || cmd.contains("coucou") { + hasCoucouHooks = true + if let timeout = hook["timeout"] as? Int, timeout < 120 { return true } + } + } + } + } + } + + // Check that the AskUserQuestion PreToolUse entry exists + if hasCoucouHooks { + let preToolHooks = hooks["PreToolUse"] as? [[String: Any]] ?? [] + let hasAskEntry = preToolHooks.contains { m in + (m["matcher"] as? String) == "AskUserQuestion" + && (m["hooks"] as? [[String: Any]])?.contains { + let cmd = $0["command"] as? String ?? "" + return cmd.contains("NotchBuddy") || cmd.contains("coucou") + } ?? false + } + if !hasAskEntry { return true } + } + return false + } + + // MARK: - Claude Code settings.json hook installer + + private var _pendingHooksData: Data? + + /// Returns preview JSON without writing — call writeClaudeHooks() to confirm. + func previewClaudeHooks() throws -> String { + let data = try buildHooksData() + _pendingHooksData = data + return String(data: data, encoding: .utf8) ?? "" + } + + /// Writes the hooks to disk (call after user confirms preview). + func writeClaudeHooks() throws { + guard let data = _pendingHooksData else { return } + let settingsURL = FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".claude/settings.json") + // Backup first + let formatter = DateFormatter() + formatter.dateFormat = "yyyyMMdd-HHmm" + let stamp = formatter.string(from: Date()) + let backupURL = settingsURL.deletingLastPathComponent() + .appendingPathComponent("settings.json.bak-\(stamp)") + try? FileManager.default.copyItem(at: settingsURL, to: backupURL) + try? FileManager.default.createDirectory(at: settingsURL.deletingLastPathComponent(), + withIntermediateDirectories: true) + try data.write(to: settingsURL, options: .atomic) + _pendingHooksData = nil + } + + private func buildHooksData() throws -> Data { + let settingsURL = FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".claude/settings.json") + var settings: [String: Any] = [:] + if let data = try? Data(contentsOf: settingsURL), + let parsed = try? JSONSerialization.jsonObject(with: data) as? [String: Any] { + settings = parsed + } + let hookPath = Self.hookScriptPath + #if APPSTORE + // Sandboxed apps create quarantined files; /bin/sh bypasses the quarantine flag + let quotedCmd = "/bin/sh \"\(hookPath.replacingOccurrences(of: "\"", with: "\\\""))\"" + #else + let quotedCmd = "\"\(hookPath.replacingOccurrences(of: "\"", with: "\\\""))\"" + #endif + let events: [(String, Int)] = [ + ("SessionStart", 10), ("SessionEnd", 10), + ("UserPromptSubmit", 10), + ("PreToolUse", 10), ("PostToolUse", 10), ("PostToolUseFailure", 10), + ("PermissionRequest", 120), + ("Notification", 10), + ("Stop", 10), ("StopFailure", 10), + ("SubagentStart", 10), ("SubagentStop", 10), + ] + var hooks = settings["hooks"] as? [String: Any] ?? [:] + for (event, timeout) in events { + var existing = hooks[event] as? [[String: Any]] ?? [] + existing.removeAll { ($0["hooks"] as? [[String: Any]])?.contains { ($0["command"] as? String)?.contains("NotchBuddy") == true || ($0["command"] as? String)?.contains("coucou") == true } ?? false } + existing.append(["hooks": [["type": "command", "command": quotedCmd, "timeout": timeout]]]) + hooks[event] = existing + } + // Dedicated AskUserQuestion PreToolUse hook (Claude Code 2.1.85+, timeout 130s) + var preToolUse = hooks["PreToolUse"] as? [[String: Any]] ?? [] + preToolUse.append([ + "matcher": "AskUserQuestion", + "hooks": [["type": "command", "command": "\(quotedCmd) --ask", "timeout": 130]], + ]) + hooks["PreToolUse"] = preToolUse + settings["hooks"] = hooks + return try JSONSerialization.data(withJSONObject: settings, options: [.prettyPrinted, .sortedKeys]) + } + + func uninstallClaudeHooks() throws { + let settingsURL = FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".claude/settings.json") + guard let data = try? Data(contentsOf: settingsURL), + var settings = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + var hooks = settings["hooks"] as? [String: Any] else { return } + + for key in hooks.keys { + if var matchers = hooks[key] as? [[String: Any]] { + matchers.removeAll { matcher in + (matcher["hooks"] as? [[String: Any]])?.contains { + ($0["command"] as? String)?.contains("NotchBuddy") == true || + ($0["command"] as? String)?.contains("coucou") == true + } ?? false + } + if matchers.isEmpty { hooks.removeValue(forKey: key) } + else { hooks[key] = matchers } + } + } + settings["hooks"] = hooks + let newData = try JSONSerialization.data(withJSONObject: settings, options: [.prettyPrinted, .sortedKeys]) + try newData.write(to: settingsURL, options: .atomic) + } + + // MARK: - Claude plan status line installer + + private var statusLinePreviousURL: URL { + Self.supportDir.appendingPathComponent("statusline-previous.json") + } + + /// Returns true if our statusLine command is installed in ~/.claude/settings.json. + static func statusLineInstalled() -> Bool { + let url = FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".claude/settings.json") + guard let data = try? Data(contentsOf: url), + let settings = (try? JSONSerialization.jsonObject(with: data)) as? [String: Any], + let sl = settings["statusLine"] as? [String: Any], + let cmd = sl["command"] as? String else { return false } + return cmd.contains("nb-hook") + } + + private var _pendingStatusLineData: Data? + private var _pendingPreviousData: Data? + private var _pendingDeletePrevious: Bool = false + + /// Returns a diff string (only the statusLine key: before → after) without writing anything. + func previewStatusLine(install: Bool) throws -> String { + let settingsURL = FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".claude/settings.json") + var settings: [String: Any] = [:] + if let d = try? Data(contentsOf: settingsURL), + let parsed = (try? JSONSerialization.jsonObject(with: d)) as? [String: Any] { + settings = parsed + } + let hookPath = Self.hookScriptPath + let quotedPath = hookPath.replacingOccurrences(of: "\"", with: "\\\"") + let quotedCmd = "\"\(quotedPath)\" --statusline" + + // Reset pending side-effects + _pendingPreviousData = nil + _pendingDeletePrevious = false + + let oldSL = settings["statusLine"] as? [String: Any] + let newSL: [String: Any]? + + if install { + // Check that Python 3 is available (requires Command Line Tools) + let clCheck = Process() + clCheck.executableURL = URL(fileURLWithPath: "/usr/bin/xcode-select") + clCheck.arguments = ["-p"] + clCheck.standardOutput = FileHandle.nullDevice + clCheck.standardError = FileHandle.nullDevice + try? clCheck.run() + clCheck.waitUntilExit() + if clCheck.terminationStatus != 0 { + throw NSError(domain: "Coucou", code: 1, + userInfo: [NSLocalizedDescriptionKey: + "Command Line Tools are required but not installed. Run: xcode-select --install"]) + } + + if let existing = oldSL, + let cmd = existing["command"] as? String, !cmd.contains("nb-hook") { + // Keep existing object but swap command; save old for later restoration + var updated = existing + updated["command"] = quotedCmd + newSL = updated + _pendingPreviousData = try? JSONSerialization.data(withJSONObject: existing, + options: [.prettyPrinted, .sortedKeys]) + } else if let existing = oldSL, + let cmd = existing["command"] as? String, cmd.contains("nb-hook") { + // Already installed — rebuild to update path if needed, keep other fields + var updated = existing + updated["command"] = quotedCmd + newSL = updated + } else { + newSL = ["type": "command", "command": quotedCmd] + } + } else { + // Uninstall: only if it's ours + if let cur = oldSL, let cmd = cur["command"] as? String, cmd.contains("nb-hook") { + if let prevData = try? Data(contentsOf: statusLinePreviousURL), + let prevObj = (try? JSONSerialization.jsonObject(with: prevData)) as? [String: Any] { + newSL = prevObj + _pendingDeletePrevious = true + } else { + newSL = nil + } + } else { + newSL = oldSL // not ours — leave unchanged + } + } + + // Build the full settings.json with the new statusLine + var newSettings = settings + if let sl = newSL { + newSettings["statusLine"] = sl + } else { + newSettings.removeValue(forKey: "statusLine") + } + let data = try JSONSerialization.data(withJSONObject: newSettings, + options: [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]) + _pendingStatusLineData = data + + // Build a compact diff: show only the statusLine key before → after + func slJSON(_ val: [String: Any]?) throws -> String { + guard let v = val else { return "(none)" } + let d = try JSONSerialization.data(withJSONObject: v, options: [.prettyPrinted, .sortedKeys]) + return String(data: d, encoding: .utf8) ?? "(none)" + } + let before = try slJSON(oldSL) + let after = try slJSON(newSL) + return "statusLine\nBefore:\n\(before)\n\nAfter:\n\(after)" + } + + /// Writes settings.json and commits side effects (call after user confirms). + func writeStatusLine() throws { + guard let data = _pendingStatusLineData else { return } + let settingsURL = FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".claude/settings.json") + let formatter = DateFormatter() + formatter.dateFormat = "yyyyMMdd-HHmm" + let stamp = formatter.string(from: Date()) + let backupURL = settingsURL.deletingLastPathComponent() + .appendingPathComponent("settings.json.bak-\(stamp)") + try? FileManager.default.copyItem(at: settingsURL, to: backupURL) + try? FileManager.default.createDirectory(at: settingsURL.deletingLastPathComponent(), + withIntermediateDirectories: true) + try data.write(to: settingsURL, options: .atomic) + // Commit side effects only after successful write + if let prevData = _pendingPreviousData { + try? prevData.write(to: statusLinePreviousURL, options: .atomic) + } + if _pendingDeletePrevious { + try? FileManager.default.removeItem(at: statusLinePreviousURL) + } + _pendingStatusLineData = nil + _pendingPreviousData = nil + _pendingDeletePrevious = false + } + + // MARK: - App Store: hooks via security-scoped bookmark + + #if APPSTORE + /// Writes nb-hook script and updates settings.json in one shot. + /// claudeURL must be a URL from NSOpenPanel (sandbox access is granted immediately — no security scope needed). + func installAndWriteClaudeHooksAppStore(claudeURL: URL) throws { + let data = try buildHooksData(claudeURL: claudeURL) + + // Write nb-hook (shell wrapper) + nb-hook.py (Python relay) into ~/.claude/coucou/ + let coucouDir = claudeURL.appendingPathComponent("coucou") + try FileManager.default.createDirectory(at: coucouDir, withIntermediateDirectories: true) + let wrapperURL = coucouDir.appendingPathComponent("nb-hook") + try nbHookShellWrapper.write(to: wrapperURL, atomically: true, encoding: .utf8) + _ = try? FileManager.default.setAttributes([.posixPermissions: 0o755 as NSNumber], ofItemAtPath: wrapperURL.path) + let pyURL = coucouDir.appendingPathComponent("nb-hook.py") + try nbHookPythonAppStore.write(to: pyURL, atomically: true, encoding: .utf8) + _ = try? FileManager.default.setAttributes([.posixPermissions: 0o755 as NSNumber], ofItemAtPath: pyURL.path) + + // Write settings.json (with backup) + let settingsURL = claudeURL.appendingPathComponent("settings.json") + let formatter = DateFormatter() + formatter.dateFormat = "yyyyMMdd-HHmm" + let backupURL = claudeURL.appendingPathComponent("settings.json.bak-\(formatter.string(from: Date()))") + try? FileManager.default.copyItem(at: settingsURL, to: backupURL) + try data.write(to: settingsURL, options: .atomic) + UserDefaults.standard.set(true, forKey: "coucouHooksInstalled") + } + + func uninstallClaudeHooksAppStore(claudeURL: URL) throws { + let settingsURL = claudeURL.appendingPathComponent("settings.json") + guard let data = try? Data(contentsOf: settingsURL), + var settings = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + var hooks = settings["hooks"] as? [String: Any] else { return } + for key in hooks.keys { + if var matchers = hooks[key] as? [[String: Any]] { + matchers.removeAll { matcher in + (matcher["hooks"] as? [[String: Any]])?.contains { + ($0["command"] as? String)?.contains("coucou") == true || + ($0["command"] as? String)?.contains("NotchBuddy") == true + } ?? false + } + if matchers.isEmpty { hooks.removeValue(forKey: key) } + else { hooks[key] = matchers } + } + } + settings["hooks"] = hooks + let newData = try JSONSerialization.data(withJSONObject: settings, options: [.prettyPrinted, .sortedKeys]) + try newData.write(to: settingsURL, options: .atomic) + UserDefaults.standard.set(false, forKey: "coucouHooksInstalled") + } + + private func buildHooksData(claudeURL: URL) throws -> Data { + let settingsURL = claudeURL.appendingPathComponent("settings.json") + var settings: [String: Any] = [:] + if let data = try? Data(contentsOf: settingsURL), + let parsed = try? JSONSerialization.jsonObject(with: data) as? [String: Any] { + settings = parsed + } + // Derive hook path from the panel-selected claudeURL (real ~/.claude, not container) + let hookPath = claudeURL.appendingPathComponent("coucou/nb-hook").path + let quotedCmd = "/bin/sh \"\(hookPath.replacingOccurrences(of: "\"", with: "\\\""))\"" + let events: [(String, Int)] = [ + ("SessionStart", 10), ("SessionEnd", 10), + ("UserPromptSubmit", 10), + ("PreToolUse", 10), ("PostToolUse", 10), ("PostToolUseFailure", 10), + ("PermissionRequest", 120), + ("Notification", 10), + ("Stop", 10), ("StopFailure", 10), + ("SubagentStart", 10), ("SubagentStop", 10), + ] + var hooks = settings["hooks"] as? [String: Any] ?? [:] + for (event, timeout) in events { + var existing = hooks[event] as? [[String: Any]] ?? [] + existing.removeAll { ($0["hooks"] as? [[String: Any]])?.contains { + ($0["command"] as? String)?.contains("coucou") == true || + ($0["command"] as? String)?.contains("NotchBuddy") == true + } ?? false } + existing.append(["hooks": [["type": "command", "command": quotedCmd, "timeout": timeout]]]) + hooks[event] = existing + } + // Dedicated AskUserQuestion PreToolUse hook (Claude Code 2.1.85+, timeout 130s) + var preToolUse = hooks["PreToolUse"] as? [[String: Any]] ?? [] + preToolUse.append([ + "matcher": "AskUserQuestion", + "hooks": [["type": "command", "command": "\(quotedCmd) --ask", "timeout": 130]], + ]) + hooks["PreToolUse"] = preToolUse + settings["hooks"] = hooks + return try JSONSerialization.data(withJSONObject: settings, options: [.prettyPrinted, .sortedKeys]) + } + #endif + + // MARK: - Gemini CLI and Antigravity hook installers (#if !APPSTORE only) + + #if !APPSTORE + private static var geminiSettingsURL: URL { + FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent(".gemini/settings.json") + } + private static var agyHooksURL: URL { + FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent(".gemini/config/hooks.json") + } + + // MARK: Installed-state detection + + static func geminiHooksInstalled() -> Bool { + guard let data = try? Data(contentsOf: geminiSettingsURL), + let settings = (try? JSONSerialization.jsonObject(with: data)) as? [String: Any], + let hooks = settings["hooks"] as? [String: Any] else { return false } + for value in hooks.values { + guard let groups = value as? [[String: Any]] else { continue } + for group in groups { + if let innerHooks = group["hooks"] as? [[String: Any]] { + for hook in innerHooks { + if let cmd = hook["command"] as? String, + cmd.contains("nb-hook"), cmd.contains("--agent gemini") { return true } + } + } + // Legacy flat entry + if let cmd = group["command"] as? String, + cmd.contains("nb-hook"), cmd.contains("--agent gemini") { return true } + } + } + return false + } + + static func agyHooksInstalled() -> Bool { + guard let data = try? Data(contentsOf: agyHooksURL), + let root = (try? JSONSerialization.jsonObject(with: data)) as? [String: Any], + let coucou = root["coucou"] else { return false } + let json = (try? JSONSerialization.data(withJSONObject: coucou)) + .flatMap { String(data: $0, encoding: .utf8) } ?? "" + return json.contains("nb-hook") + } + + // MARK: Gemini CLI – preview / write + + private var _pendingGeminiData: Data? + private var _pendingGeminiFingerprint: String? + + func previewGeminiHooks(install: Bool) throws -> String { + let url = Self.geminiSettingsURL + let exists = FileManager.default.fileExists(atPath: url.path) + if !install && !exists { + throw NSError(domain: "CoucouNoop", code: 0, userInfo: [ + NSLocalizedDescriptionKey: "No Gemini CLI hooks to remove." + ]) + } + let current = exists ? try Data(contentsOf: url) : Data() + _pendingGeminiFingerprint = sha256Hex(current) + let newData = install ? try buildGeminiHooksData() : try withoutGeminiHooks() + _pendingGeminiData = newData + return String(data: newData, encoding: .utf8) ?? "" + } + + func writeGeminiHooks() throws { + guard let data = _pendingGeminiData, let fp = _pendingGeminiFingerprint else { return } + let url = Self.geminiSettingsURL + let current = (try? Data(contentsOf: url)) ?? Data() + guard sha256Hex(current) == fp else { + throw NSError(domain: "Coucou", code: 1, userInfo: [ + NSLocalizedDescriptionKey: "~/.gemini/settings.json changed since preview. Refresh and try again." + ]) + } + try writeJSONFile(data, to: url, suffix: "settings.json") + _pendingGeminiData = nil + _pendingGeminiFingerprint = nil + } + + private func buildGeminiHooksData() throws -> Data { + var settings = try Self.strictReadJSONObject(at: Self.geminiSettingsURL, + label: "~/.gemini/settings.json") + if let raw = settings["hooks"], !(raw is [String: Any]) { + throw NSError(domain: "Coucou", code: 2, userInfo: [ + NSLocalizedDescriptionKey: "~/.gemini/settings.json: \"hooks\" has an unexpected type — Coucou has not touched it." + ]) + } + let base = hookBase() + // (Gemini event key, normalized event name passed via argv, timeout in ms) + let events: [(String, String, Int)] = [ + ("SessionStart", "SessionStart", 10000), + ("SessionEnd", "SessionEnd", 10000), + ("BeforeTool", "PreToolUse", 5000), + ("AfterTool", "PostToolUse", 5000), + ("BeforeAgent", "UserPromptSubmit", 5000), + ("AfterAgent", "Stop", 5000), + ] + var hooks = settings["hooks"] as? [String: Any] ?? [:] + for (geminiEvent, normalizedEvent, timeout) in events { + if let raw = hooks[geminiEvent], !(raw is [[String: Any]]) { + throw NSError(domain: "Coucou", code: 2, userInfo: [ + NSLocalizedDescriptionKey: "~/.gemini/settings.json: \"hooks\"[\"\(geminiEvent)\"] has an unexpected type — Coucou has not touched it." + ]) + } + var groups = hooks[geminiEvent] as? [[String: Any]] ?? [] + // Remove legacy flat entries and groups whose inner hooks contain nb-hook + groups = removeNbHookEntries(from: groups) + let hookEntry: [String: Any] = [ + "type": "command", + "command": "\(base) --agent gemini \(normalizedEvent)", + "timeout": timeout, + ] + groups.append(["matcher": "*", "hooks": [hookEntry]]) + hooks[geminiEvent] = groups + } + settings["hooks"] = hooks + return try JSONSerialization.data(withJSONObject: settings, + options: [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]) + } + + private func withoutGeminiHooks() throws -> Data { + var settings = try Self.strictReadJSONObject(at: Self.geminiSettingsURL, + label: "~/.gemini/settings.json") + if let raw = settings["hooks"], !(raw is [String: Any]) { + throw NSError(domain: "Coucou", code: 2, userInfo: [ + NSLocalizedDescriptionKey: "~/.gemini/settings.json: \"hooks\" has an unexpected type — Coucou has not touched it." + ]) + } + if var hooks = settings["hooks"] as? [String: Any] { + for key in hooks.keys { + if let groups = hooks[key] as? [[String: Any]] { + let cleaned = removeNbHookEntries(from: groups) + if cleaned.isEmpty { hooks.removeValue(forKey: key) } else { hooks[key] = cleaned } + } + } + if hooks.isEmpty { settings.removeValue(forKey: "hooks") } else { settings["hooks"] = hooks } + } + return try JSONSerialization.data(withJSONObject: settings, + options: [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]) + } + + // MARK: Antigravity – preview / write + + private var _pendingAgyData: Data? + private var _pendingAgyFingerprint: String? + + func previewAgyHooks(install: Bool) throws -> String { + let url = Self.agyHooksURL + let exists = FileManager.default.fileExists(atPath: url.path) + if !install && !exists { + throw NSError(domain: "CoucouNoop", code: 0, userInfo: [ + NSLocalizedDescriptionKey: "No Antigravity hooks to remove." + ]) + } + let current = exists ? try Data(contentsOf: url) : Data() + _pendingAgyFingerprint = sha256Hex(current) + let newData = install ? try buildAgyHooksData() : try withoutAgyHooks() + _pendingAgyData = newData + return String(data: newData, encoding: .utf8) ?? "" + } + + func writeAgyHooks() throws { + guard let data = _pendingAgyData, let fp = _pendingAgyFingerprint else { return } + let url = Self.agyHooksURL + let current = (try? Data(contentsOf: url)) ?? Data() + guard sha256Hex(current) == fp else { + throw NSError(domain: "Coucou", code: 1, userInfo: [ + NSLocalizedDescriptionKey: "~/.gemini/config/hooks.json changed since preview. Refresh and try again." + ]) + } + try writeJSONFile(data, to: url, suffix: "hooks.json") + _pendingAgyData = nil + _pendingAgyFingerprint = nil + } + + private func buildAgyHooksData() throws -> Data { + var root = try Self.strictReadJSONObject(at: Self.agyHooksURL, + label: "~/.gemini/config/hooks.json") + let base = hookBase() + // PreToolUse / PostToolUse: tool-level hooks — use matcher group + // PreInvocation / PostInvocation / Stop: lifecycle hooks — direct handler, no matcher + var coucou: [String: Any] = [:] + for event in ["PreToolUse", "PostToolUse"] { + let hook: [String: Any] = ["type": "command", + "command": "\(base) --agent antigravity \(event)", + "timeout": 10] + coucou[event] = [["matcher": "*", "hooks": [hook]]] + } + for event in ["PreInvocation", "PostInvocation", "Stop"] { + let hook: [String: Any] = ["type": "command", + "command": "\(base) --agent antigravity \(event)", + "timeout": 10] + coucou[event] = [hook] + } + root["coucou"] = coucou + return try JSONSerialization.data(withJSONObject: root, + options: [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]) + } + + private func withoutAgyHooks() throws -> Data { + var root = try Self.strictReadJSONObject(at: Self.agyHooksURL, + label: "~/.gemini/config/hooks.json") + root.removeValue(forKey: "coucou") + return try JSONSerialization.data(withJSONObject: root, + options: [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]) + } + + // MARK: Shared helpers + + /// /bin/sh "" — quoted for paths containing spaces (Application Support). + private func hookBase() -> String { + let path = Self.hookScriptPath.replacingOccurrences(of: "\"", with: "\\\"") + return "/bin/sh \"\(path)\"" + } + + /// Reads a JSON object from url. + /// Absent file → empty dict. Present but invalid → throws with a user-facing message. + private static func strictReadJSONObject(at url: URL, label: String) throws -> [String: Any] { + guard FileManager.default.fileExists(atPath: url.path) else { return [:] } + let data: Data + do { data = try Data(contentsOf: url) } + catch { + throw NSError(domain: "Coucou", code: 2, userInfo: [ + NSLocalizedDescriptionKey: "\(label) cannot be read — Coucou has not touched it." + ]) + } + guard let obj = (try? JSONSerialization.jsonObject(with: data)) as? [String: Any] else { + throw NSError(domain: "Coucou", code: 2, userInfo: [ + NSLocalizedDescriptionKey: "\(label) is not valid JSON — Coucou has not touched it." + ]) + } + return obj + } + + /// Backs up the existing file (throws on failure), creates parent dirs, then atomically writes. + private func writeJSONFile(_ data: Data, to url: URL, suffix: String) throws { + let fm = FileManager.default + if fm.fileExists(atPath: url.path) { + let fmt = DateFormatter() + fmt.locale = Locale(identifier: "en_US_POSIX") + fmt.dateFormat = "yyyyMMdd-HHmmss" + let backupURL = url.deletingLastPathComponent() + .appendingPathComponent("\(suffix).bak-\(fmt.string(from: Date()))") + do { try fm.copyItem(at: url, to: backupURL) } + catch { + throw NSError(domain: "Coucou", code: 3, userInfo: [ + NSLocalizedDescriptionKey: "Could not back up \(url.lastPathComponent): \(error.localizedDescription)" + ]) + } + } + try fm.createDirectory(at: url.deletingLastPathComponent(), withIntermediateDirectories: true) + try data.write(to: url, options: .atomic) + } + + /// Removes entries containing "nb-hook" from a Gemini-format groups array. + /// Handles both new group format (matcher + hooks[]) and legacy flat format (command at top level). + /// Returns the cleaned array; empty groups (after inner-hook removal) are dropped. + private func removeNbHookEntries(from groups: [[String: Any]]) -> [[String: Any]] { + groups.compactMap { group -> [String: Any]? in + // Legacy flat entry — command at group level + if let cmd = group["command"] as? String, cmd.contains("nb-hook") { return nil } + // Group format — filter inner hooks + if var innerHooks = group["hooks"] as? [[String: Any]] { + innerHooks.removeAll { ($0["command"] as? String)?.contains("nb-hook") == true } + if innerHooks.isEmpty { return nil } + var updated = group + updated["hooks"] = innerHooks + return updated + } + return group + } + } + + // MARK: - Codex hook installer (#if !APPSTORE only) + + static var codexHooksURL: URL { + FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent(".codex/hooks.json") + } + + /// True when ~/.codex/hooks.json already routes Codex events to Coucou's nb-hook. + static func codexHooksInstalled() -> Bool { + guard let data = try? Data(contentsOf: codexHooksURL), + let root = (try? JSONSerialization.jsonObject(with: data)) as? [String: Any], + let hooks = root["hooks"] as? [String: Any] else { return false } + for value in hooks.values { + guard let groups = value as? [[String: Any]] else { continue } + for group in groups { + if let innerHooks = group["hooks"] as? [[String: Any]] { + for hook in innerHooks { + if let cmd = hook["command"] as? String, + cmd.contains("nb-hook"), cmd.contains("--agent codex") { return true } + } + } + } + } + return false + } + + private var _pendingCodexData: Data? + private var _pendingCodexFingerprint: String? + + func previewCodexHooks(install: Bool) throws -> String { + let url = Self.codexHooksURL + let exists = FileManager.default.fileExists(atPath: url.path) + if !install && !exists { + throw NSError(domain: "CoucouNoop", code: 0, userInfo: [ + NSLocalizedDescriptionKey: "No Codex hooks to remove." + ]) + } + let current = exists ? try Data(contentsOf: url) : Data() + _pendingCodexFingerprint = sha256Hex(current) + let newData = install ? try buildCodexHooksData() : try withoutCodexHooks() + _pendingCodexData = newData + return String(data: newData, encoding: .utf8) ?? "" + } + + func writeCodexHooks() throws { + guard let data = _pendingCodexData, let fp = _pendingCodexFingerprint else { return } + let url = Self.codexHooksURL + let current = (try? Data(contentsOf: url)) ?? Data() + guard sha256Hex(current) == fp else { + throw NSError(domain: "Coucou", code: 1, userInfo: [ + NSLocalizedDescriptionKey: "~/.codex/hooks.json changed since preview. Refresh and try again." + ]) + } + try writeJSONFile(data, to: url, suffix: "hooks.json") + _pendingCodexData = nil + _pendingCodexFingerprint = nil + } + + private func buildCodexHooksData() throws -> Data { + var root = try Self.strictReadJSONObject(at: Self.codexHooksURL, label: "~/.codex/hooks.json") + if let raw = root["hooks"], !(raw is [String: Any]) { + throw NSError(domain: "Coucou", code: 2, userInfo: [ + NSLocalizedDescriptionKey: "~/.codex/hooks.json: \"hooks\" has an unexpected type — Coucou has not touched it." + ]) + } + let base = hookBase() + // Events, timeouts in seconds (Codex format). + // PermissionRequest uses 120s + a statusMessage shown in the Codex UI while waiting. + let events: [(String, Int, String?)] = [ + ("SessionStart", 10, nil), + ("UserPromptSubmit", 10, nil), + ("PreToolUse", 10, nil), + ("PermissionRequest", 120, "Waiting for your answer in the notch (Coucou)"), + ("PostToolUse", 10, nil), + ("Stop", 10, nil), + ("SubagentStart", 10, nil), + ("SubagentStop", 10, nil), + ("Interrupt", 3, nil), + ("SessionEnd", 3, nil), + ] + var hooks = root["hooks"] as? [String: Any] ?? [:] + for (event, timeout, statusMsg) in events { + if let raw = hooks[event], !(raw is [[String: Any]]) { + throw NSError(domain: "Coucou", code: 2, userInfo: [ + NSLocalizedDescriptionKey: "~/.codex/hooks.json: \"hooks\"[\"\(event)\"] has an unexpected type — Coucou has not touched it." + ]) + } + var groups = hooks[event] as? [[String: Any]] ?? [] + // Remove existing Coucou entries + groups = removeNbHookEntries(from: groups) + var hookEntry: [String: Any] = [ + "type": "command", + "command": "\(base) --agent codex", + "timeout": timeout, + ] + if let msg = statusMsg { hookEntry["statusMessage"] = msg } + groups.append(["hooks": [hookEntry]]) + hooks[event] = groups + } + root["hooks"] = hooks + return try JSONSerialization.data(withJSONObject: root, + options: [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]) + } + + private func withoutCodexHooks() throws -> Data { + var root = try Self.strictReadJSONObject(at: Self.codexHooksURL, label: "~/.codex/hooks.json") + if let raw = root["hooks"], !(raw is [String: Any]) { + throw NSError(domain: "Coucou", code: 2, userInfo: [ + NSLocalizedDescriptionKey: "~/.codex/hooks.json: \"hooks\" has an unexpected type — Coucou has not touched it." + ]) + } + if var hooks = root["hooks"] as? [String: Any] { + for key in hooks.keys { + if let groups = hooks[key] as? [[String: Any]] { + let cleaned = removeNbHookEntries(from: groups) + if cleaned.isEmpty { hooks.removeValue(forKey: key) } else { hooks[key] = cleaned } + } + } + if hooks.isEmpty { root.removeValue(forKey: "hooks") } else { root["hooks"] = hooks } + } + return try JSONSerialization.data(withJSONObject: root, + options: [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]) + } + + // MARK: SHA-256 fingerprint + + private func sha256Hex(_ data: Data) -> String { + SHA256.hash(data: data).map { String(format: "%02x", $0) }.joined() + } + #endif +} + +// MARK: - Notification names for hook server → controller communication + +extension Notification.Name { + static let hookExpand = Notification.Name("notchBuddy.hookExpand") +} + +// MARK: - nb-hook shell wrapper (same for both GitHub and App Store) +// Invoked by Claude Code via /bin/sh or directly via shebang. +// Always exits 0 — never blocks Claude Code. +// Checks xcode-select before running python3 to avoid triggering the +// "install developer tools" dialog on machines without Xcode CLI tools. + +private let nbHookShellWrapper = """ +#!/bin/sh +# Coucou hook relay — always exits 0, never blocks Claude Code +HOOK_DIR="$(dirname "$0")" +if xcode-select -p >/dev/null 2>&1; then + out=$(/usr/bin/python3 "$HOOK_DIR/nb-hook.py" "$@" 2>/dev/null) + rc=$? + if [ "$rc" -eq 0 ] && [ -n "$out" ]; then + printf '%s\\n' "$out" + fi +fi +exit 0 +""" + +// MARK: - nb-hook Python relay (GitHub / non-sandboxed version) + +private let nbHookPythonGitHub = """ +#!/usr/bin/env python3 +# nb-hook.py — Coucou hook relay for Claude Code and third-party agents (GitHub version) +# Reads JSON from stdin, forwards to Coucou via Unix socket, translates response. +import sys, json, os, socket + +def normalize_event(name): + mapping = { + 'BeforeTool': 'PreToolUse', 'BeforeToolSelection': 'PreToolUse', + 'AfterTool': 'PostToolUse', 'AfterModel': 'PostToolUse', + 'BeforeAgent': 'UserPromptSubmit', 'AfterAgent': 'Stop', + 'startup': 'SessionStart', 'exit': 'SessionEnd', + 'PreInvocation': 'UserPromptSubmit', 'PostInvocation': 'PostToolUse', + } + return mapping.get(name, name) + +def normalize_tool_fields(payload): + if 'tool_name' in payload: + return + tool = payload.get('toolCall') + if not isinstance(tool, dict): + tool = {} + name = tool.get('name') or payload.get('tool', '') + if name: + payload['tool_name'] = name + if 'tool_input' not in payload and isinstance(tool.get('args'), dict): + flat = dict(tool['args']) + for src, dst in [('CommandLine', 'command'), ('FilePath', 'file_path'), + ('Path', 'path'), ('Url', 'url'), ('Query', 'query'), ('Pattern', 'pattern')]: + if src in flat: + flat[dst] = flat[src] + payload['tool_input'] = flat + if 'session_id' not in payload: + for k in ['conversationId', 'conversation_id', 'sessionId', 'GEMINI_SESSION_ID']: + if payload.get(k): + payload['session_id'] = payload[k] + break + if 'session_id' not in payload: + sid = os.environ.get('GEMINI_SESSION_ID', '') + if sid: + payload['session_id'] = sid + +def main(): + raw = b'' + payload = {} + try: + raw = sys.stdin.buffer.read() + if not raw: + if '--statusline' not in sys.argv[1:]: + return + else: + payload = json.loads(raw) + except Exception: + if '--statusline' not in sys.argv[1:]: + return + + socket_path = os.path.expanduser( + '~/Library/Application Support/NotchBuddy/nb.sock' + ) + + # --statusline mode: relay rate_limits to Coucou, then delegate to saved previous + if '--statusline' in sys.argv[1:]: + relay = { + 'coucou_kind': 'statusline', + 'session_id': payload.get('session_id', ''), + 'rate_limits': payload.get('rate_limits', {}), + } + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.settimeout(0.3) + s.connect(socket_path) + s.sendall((json.dumps(relay) + '\\n').encode()) + s.close() + except Exception: + pass + prev_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'statusline-previous.json') + if os.path.exists(prev_file): + try: + import subprocess + with open(prev_file) as f: + prev = json.load(f) + cmd = prev.get('command', '') + if cmd: + result = subprocess.run(['/bin/sh', '-c', cmd], input=raw, + capture_output=True, timeout=10) + if result.stdout: + sys.stdout.buffer.write(result.stdout) + sys.stdout.buffer.flush() + except Exception: + pass + return + + # --ask mode: dedicated hook for AskUserQuestion via PreToolUse (Claude Code 2.1.85+) + if '--ask' in sys.argv[1:]: + tool = payload.get('tool_name', '') + if tool != 'AskUserQuestion': + return # Not an AskUserQuestion invocation — exit cleanly (no output) + payload['coucou_kind'] = 'ask_user_question' + env = os.environ + payload.setdefault('term_program', env.get('TERM_PROGRAM', '')) + payload.setdefault('iterm_session_id', env.get('ITERM_SESSION_ID', '')) + payload.setdefault('term_session_id', env.get('TERM_SESSION_ID', '')) + payload.setdefault('bundle_id', env.get('__CFBundleIdentifier', '')) + if 'cwd' not in payload or not payload['cwd']: + paths = payload.get('workspacePaths') or payload.get('workspace_roots', []) + if isinstance(paths, list) and paths: + payload['cwd'] = paths[0] + else: + payload['cwd'] = os.getcwd() + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.settimeout(125) + s.connect(socket_path) + s.sendall((json.dumps(payload) + '\\n').encode()) + chunks = [] + while True: + chunk = s.recv(4096) + if not chunk: + break + chunks.append(chunk) + if b'\\n' in chunk: + break + s.close() + response = b''.join(chunks).decode().strip() + if response: + try: + resp_obj = json.loads(response) + decision = resp_obj.get('permissionDecision', '') + except Exception: + decision = '' + if decision == 'answer': + answers = resp_obj.get('answers', {}) + questions = payload.get('tool_input', {}).get('questions', []) + out = {'hookSpecificOutput': {'hookEventName': 'PreToolUse', 'permissionDecision': 'allow', 'updatedInput': {'questions': questions, 'answers': answers}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + # 'ask' or unknown: fall through → no output → Claude Code asks in terminal + except Exception: + pass + return + + # Parse --agent and optional positional event from argv. + # --agent tags the payload with coucou_agent so the app routes to the right pill. + # The positional arg is a fallback event name for agents that do not set hook_event_name. + args = sys.argv[1:] + agent = '' + arg_event = '' + i = 0 + while i < len(args): + if args[i] == '--agent' and i + 1 < len(args): + agent = args[i + 1] + i += 2 + else: + if not arg_event: + arg_event = args[i] + i += 1 + if agent: + payload.setdefault('coucou_agent', agent) + + # Enrich with terminal context + env = os.environ + payload.setdefault('term_program', env.get('TERM_PROGRAM', '')) + payload.setdefault('iterm_session_id', env.get('ITERM_SESSION_ID', '')) + payload.setdefault('term_session_id', env.get('TERM_SESSION_ID', '')) + payload.setdefault('bundle_id', env.get('__CFBundleIdentifier', '')) + if 'cwd' not in payload or not payload['cwd']: + paths = payload.get('workspacePaths') or payload.get('workspace_roots', []) + if isinstance(paths, list) and paths: + payload['cwd'] = paths[0] + else: + payload['cwd'] = os.getcwd() + + # Normalize event name and tool fields (Gemini CLI / Antigravity → canonical names) + try: + raw_event = payload.get('hook_event_name', '') or arg_event + if raw_event: + payload['hook_event_name'] = normalize_event(raw_event) + normalize_tool_fields(payload) + except Exception: + pass + + event = payload.get('hook_event_name', '') + # socket_path is already defined above + + if event == 'PermissionRequest': + # Block and wait for Coucou's decision (Claude Code allows up to 120s) + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.settimeout(118) + s.connect(socket_path) + s.sendall((json.dumps(payload) + '\\n').encode()) + chunks = [] + while True: + chunk = s.recv(4096) + if not chunk: + break + chunks.append(chunk) + if b'\\n' in chunk: + break + s.close() + response = b''.join(chunks).decode().strip() + if response: + try: + resp_obj = json.loads(response) + decision = resp_obj.get('permissionDecision', '') + except Exception: + decision = '' + if decision == 'allow': + out = {'hookSpecificOutput': {'hookEventName': 'PermissionRequest', 'decision': {'behavior': 'allow'}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + elif decision == 'always' and agent != 'codex': + # Let Claude Code persist the rule via updatedPermissions + suggestions = payload.get('permission_suggestions', []) + out = {'hookSpecificOutput': {'hookEventName': 'PermissionRequest', 'decision': {'behavior': 'allow', 'updatedPermissions': suggestions}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + elif decision == 'always': + # Codex rejects updatedPermissions — answer a plain allow instead + out = {'hookSpecificOutput': {'hookEventName': 'PermissionRequest', 'decision': {'behavior': 'allow'}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + elif decision == 'deny': + out = {'hookSpecificOutput': {'hookEventName': 'PermissionRequest', 'decision': {'behavior': 'deny', 'message': 'Denied from Coucou'}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + elif decision == 'answer': + # AskUserQuestion answered from the notch + answers = resp_obj.get('answers', {}) + questions = payload.get('tool_input', {}).get('questions', []) + out = {'hookSpecificOutput': {'hookEventName': 'PermissionRequest', 'decision': {'behavior': 'allow', 'updatedInput': {'questions': questions, 'answers': answers}}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + # 'ask' or unknown: fall through → no output → agent re-asks + except Exception: + pass + # App unreachable, timed out, or no explicit decision — print nothing + # Claude Code / Codex will handle the absence of output (re-ask or default behaviour) + sys.exit(0) + + # All other events: fire-and-forget (0.3s timeout, never blocks) + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.settimeout(0.3) + s.connect(socket_path) + s.sendall((json.dumps(payload) + '\\n').encode()) + s.close() + except Exception: + pass # Always exit cleanly — never block the agent + + # Gemini CLI and Antigravity expect a JSON response on stdout (empty = no decision) + if agent in ('gemini', 'antigravity'): + sys.stdout.write('{}\\n') + sys.stdout.flush() + +main() +sys.exit(0) +""" + +// MARK: - nb-hook Python relay (App Store — socket in sandboxed container) + +private let nbHookPythonAppStore = """ +#!/usr/bin/env python3 +# nb-hook.py — Coucou (App Store) hook relay for Claude Code and third-party agents +# Socket lives inside the sandboxed container; script runs outside the sandbox. +import sys, json, os, socket + +def normalize_event(name): + mapping = { + 'BeforeTool': 'PreToolUse', 'BeforeToolSelection': 'PreToolUse', + 'AfterTool': 'PostToolUse', 'AfterModel': 'PostToolUse', + 'BeforeAgent': 'UserPromptSubmit', 'AfterAgent': 'Stop', + 'startup': 'SessionStart', 'exit': 'SessionEnd', + 'PreInvocation': 'UserPromptSubmit', 'PostInvocation': 'PostToolUse', + } + return mapping.get(name, name) + +def normalize_tool_fields(payload): + if 'tool_name' in payload: + return + tool = payload.get('toolCall') + if not isinstance(tool, dict): + tool = {} + name = tool.get('name') or payload.get('tool', '') + if name: + payload['tool_name'] = name + if 'tool_input' not in payload and isinstance(tool.get('args'), dict): + flat = dict(tool['args']) + for src, dst in [('CommandLine', 'command'), ('FilePath', 'file_path'), + ('Path', 'path'), ('Url', 'url'), ('Query', 'query'), ('Pattern', 'pattern')]: + if src in flat: + flat[dst] = flat[src] + payload['tool_input'] = flat + if 'session_id' not in payload: + for k in ['conversationId', 'conversation_id', 'sessionId', 'GEMINI_SESSION_ID']: + if payload.get(k): + payload['session_id'] = payload[k] + break + if 'session_id' not in payload: + sid = os.environ.get('GEMINI_SESSION_ID', '') + if sid: + payload['session_id'] = sid + +def main(): + raw = b'' + payload = {} + try: + raw = sys.stdin.buffer.read() + if not raw: + if '--statusline' not in sys.argv[1:]: + return + else: + payload = json.loads(raw) + except Exception: + if '--statusline' not in sys.argv[1:]: + return + + socket_path = os.path.expanduser( + '~/Library/Containers/fr.louisraille.Coucou/Data/nb.sock' + ) + + # --statusline mode: relay rate_limits to Coucou, then delegate to saved previous + if '--statusline' in sys.argv[1:]: + relay = { + 'coucou_kind': 'statusline', + 'session_id': payload.get('session_id', ''), + 'rate_limits': payload.get('rate_limits', {}), + } + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.settimeout(0.3) + s.connect(socket_path) + s.sendall((json.dumps(relay) + '\\n').encode()) + s.close() + except Exception: + pass + prev_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'statusline-previous.json') + if os.path.exists(prev_file): + try: + import subprocess + with open(prev_file) as f: + prev = json.load(f) + cmd = prev.get('command', '') + if cmd: + result = subprocess.run(['/bin/sh', '-c', cmd], input=raw, + capture_output=True, timeout=10) + if result.stdout: + sys.stdout.buffer.write(result.stdout) + sys.stdout.buffer.flush() + except Exception: + pass + return + + # --ask mode: dedicated hook for AskUserQuestion via PreToolUse (Claude Code 2.1.85+) + if '--ask' in sys.argv[1:]: + tool = payload.get('tool_name', '') + if tool != 'AskUserQuestion': + return # Not an AskUserQuestion invocation — exit cleanly (no output) + payload['coucou_kind'] = 'ask_user_question' + env = os.environ + payload.setdefault('term_program', env.get('TERM_PROGRAM', '')) + payload.setdefault('iterm_session_id', env.get('ITERM_SESSION_ID', '')) + payload.setdefault('term_session_id', env.get('TERM_SESSION_ID', '')) + payload.setdefault('bundle_id', env.get('__CFBundleIdentifier', '')) + if 'cwd' not in payload or not payload['cwd']: + paths = payload.get('workspacePaths') or payload.get('workspace_roots', []) + if isinstance(paths, list) and paths: + payload['cwd'] = paths[0] + else: + payload['cwd'] = os.getcwd() + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.settimeout(125) + s.connect(socket_path) + s.sendall((json.dumps(payload) + '\\n').encode()) + chunks = [] + while True: + chunk = s.recv(4096) + if not chunk: + break + chunks.append(chunk) + if b'\\n' in chunk: + break + s.close() + response = b''.join(chunks).decode().strip() + if response: + try: + resp_obj = json.loads(response) + decision = resp_obj.get('permissionDecision', '') + except Exception: + decision = '' + if decision == 'answer': + answers = resp_obj.get('answers', {}) + questions = payload.get('tool_input', {}).get('questions', []) + out = {'hookSpecificOutput': {'hookEventName': 'PreToolUse', 'permissionDecision': 'allow', 'updatedInput': {'questions': questions, 'answers': answers}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + # 'ask' or unknown: fall through → no output → Claude Code asks in terminal + except Exception: + pass + return + + # Parse --agent and optional positional event from argv. + # --agent tags the payload with coucou_agent so the app routes to the right pill. + # The positional arg is a fallback event name for agents that do not set hook_event_name. + args = sys.argv[1:] + agent = '' + arg_event = '' + i = 0 + while i < len(args): + if args[i] == '--agent' and i + 1 < len(args): + agent = args[i + 1] + i += 2 + else: + if not arg_event: + arg_event = args[i] + i += 1 + if agent: + payload.setdefault('coucou_agent', agent) + + env = os.environ + payload.setdefault('term_program', env.get('TERM_PROGRAM', '')) + payload.setdefault('iterm_session_id', env.get('ITERM_SESSION_ID', '')) + payload.setdefault('term_session_id', env.get('TERM_SESSION_ID', '')) + payload.setdefault('bundle_id', env.get('__CFBundleIdentifier', '')) + if 'cwd' not in payload or not payload['cwd']: + paths = payload.get('workspacePaths') or payload.get('workspace_roots', []) + if isinstance(paths, list) and paths: + payload['cwd'] = paths[0] + else: + payload['cwd'] = os.getcwd() + + # Normalize event name and tool fields (Gemini CLI / Antigravity → canonical names) + try: + raw_event = payload.get('hook_event_name', '') or arg_event + if raw_event: + payload['hook_event_name'] = normalize_event(raw_event) + normalize_tool_fields(payload) + except Exception: + pass + + event = payload.get('hook_event_name', '') + # socket_path is already defined above + + if event == 'PermissionRequest': + # Block and wait for Coucou's decision (Claude Code allows up to 120s) + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.settimeout(118) + s.connect(socket_path) + s.sendall((json.dumps(payload) + '\\n').encode()) + chunks = [] + while True: + chunk = s.recv(4096) + if not chunk: + break + chunks.append(chunk) + if b'\\n' in chunk: + break + s.close() + response = b''.join(chunks).decode().strip() + if response: + try: + resp_obj = json.loads(response) + decision = resp_obj.get('permissionDecision', '') + except Exception: + decision = '' + if decision == 'allow': + out = {'hookSpecificOutput': {'hookEventName': 'PermissionRequest', 'decision': {'behavior': 'allow'}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + elif decision == 'always' and agent != 'codex': + # Let Claude Code persist the rule via updatedPermissions + suggestions = payload.get('permission_suggestions', []) + out = {'hookSpecificOutput': {'hookEventName': 'PermissionRequest', 'decision': {'behavior': 'allow', 'updatedPermissions': suggestions}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + elif decision == 'always': + # Codex rejects updatedPermissions — answer a plain allow instead + out = {'hookSpecificOutput': {'hookEventName': 'PermissionRequest', 'decision': {'behavior': 'allow'}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + elif decision == 'deny': + out = {'hookSpecificOutput': {'hookEventName': 'PermissionRequest', 'decision': {'behavior': 'deny', 'message': 'Denied from Coucou'}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + elif decision == 'answer': + # AskUserQuestion answered from the notch + answers = resp_obj.get('answers', {}) + questions = payload.get('tool_input', {}).get('questions', []) + out = {'hookSpecificOutput': {'hookEventName': 'PermissionRequest', 'decision': {'behavior': 'allow', 'updatedInput': {'questions': questions, 'answers': answers}}}} + sys.stdout.write(json.dumps(out) + '\\n') + sys.stdout.flush() + sys.exit(0) + # 'ask' or unknown: fall through → no output → agent re-asks + except Exception: + pass + # App unreachable, timed out, or no explicit decision — print nothing + sys.exit(0) + + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.settimeout(0.3) + s.connect(socket_path) + s.sendall((json.dumps(payload) + '\\n').encode()) + s.close() + except Exception: + pass # Always exit cleanly — never block the agent + + # Gemini CLI and Antigravity expect a JSON response on stdout (empty = no decision) + if agent in ('gemini', 'antigravity'): + sys.stdout.write('{}\\n') + sys.stdout.flush() + +main() +sys.exit(0) +""" diff --git a/NotchBuddy/Sources/App/HotKeyCenter.swift b/NotchBuddy/Sources/App/HotKeyCenter.swift new file mode 100644 index 0000000..2af7ee9 --- /dev/null +++ b/NotchBuddy/Sources/App/HotKeyCenter.swift @@ -0,0 +1,148 @@ +import AppKit +import Carbon.HIToolbox + +// MARK: - C-level event handler +// +// Carbon's InstallEventHandler requires a top-level C-compatible function. +// We store state in nonisolated(unsafe) globals — safe because all mutations +// happen on the main thread (Carbon dispatches hot-key events on the main thread). + +private nonisolated(unsafe) var gHotKeyHandler: EventHandlerRef? = nil +private nonisolated(unsafe) var gHotKeyTable: [UInt32: ShortcutAction] = [:] +private nonisolated(unsafe) var gOnAction: ((ShortcutAction) -> Void)? = nil + +private func coucouHotKeyEventHandler( + _: EventHandlerCallRef?, + _ event: EventRef?, + _: UnsafeMutableRawPointer? +) -> OSStatus { + guard let event else { return OSStatus(eventNotHandledErr) } + var hkid = EventHotKeyID() + let err = GetEventParameter( + event, + EventParamName(kEventParamDirectObject), + EventParamType(typeEventHotKeyID), + nil, + MemoryLayout.size, + nil, + &hkid + ) + guard err == noErr, let action = gHotKeyTable[hkid.id] else { + return OSStatus(eventNotHandledErr) + } + // Carbon events are dispatched on the main thread. + MainActor.assumeIsolated { gOnAction?(action) } + return noErr +} + +// MARK: - HotKeyCenter + +/// Manages all global keyboard shortcuts via Carbon `RegisterEventHotKey`. +/// +/// - No Accessibility permission required. +/// - Works in the App Store sandbox. +/// - The hot-key event is consumed and never forwarded to the front application. +@MainActor +final class HotKeyCenter { + static let shared = HotKeyCenter() + private init() {} + + // "COUC" in big-endian — unique signature for Coucou's hot-key IDs + private let kSignature = OSType(0x434F5543) + + // Live registered refs (action → EventHotKeyRef) + private var refs: [ShortcutAction: EventHotKeyRef] = [:] + + /// Actions whose `RegisterEventHotKey` call failed (system conflict). + private(set) var conflicts: Set = [] + + // MARK: - Lifecycle + + /// Start the hot-key engine and fire `onAction` whenever the user presses a registered shortcut. + /// Safe to call more than once — the handler is installed only once. + func start(onAction: @escaping @MainActor (ShortcutAction) -> Void) { + gOnAction = onAction + + if gHotKeyHandler == nil { + var spec = EventTypeSpec( + eventClass: OSType(kEventClassKeyboard), + eventKind: UInt32(kEventHotKeyPressed) + ) + InstallEventHandler( + GetApplicationEventTarget(), + coucouHotKeyEventHandler, + 1, &spec, + nil, &gHotKeyHandler + ) + } + + registerAll() + } + + /// Unregister every hot key. Called on app quit. + func unregisterAll() { + for (action, ref) in refs { + UnregisterEventHotKey(ref) + let idx = UInt32(ShortcutAction.allCases.firstIndex(of: action)!) + gHotKeyTable.removeValue(forKey: idx) + } + refs.removeAll() + } + + /// Re-register all shortcuts from the current UserDefaults state. + func registerAll() { + unregisterAll() + conflicts.removeAll() + + for action in ShortcutAction.allCases { + #if APPSTORE + if action.isNonAppStore { continue } + #endif + if !ShortcutLogic.isEnabled(action) { continue } + registerOne(action) + } + } + + /// Re-register a single action (called after a setting change). + func reregister(_ action: ShortcutAction) { + // Remove old registration if present + if let ref = refs[action] { + UnregisterEventHotKey(ref) + let idx = UInt32(ShortcutAction.allCases.firstIndex(of: action)!) + gHotKeyTable.removeValue(forKey: idx) + refs.removeValue(forKey: action) + } + conflicts.remove(action) + + #if APPSTORE + if action.isNonAppStore { return } + #endif + if !ShortcutLogic.isEnabled(action) { return } + registerOne(action) + } + + // MARK: - Private + + private func registerOne(_ action: ShortcutAction) { + let spec = ShortcutLogic.hotKey(for: action) + let carbon = ShortcutLogic.carbonModifiers(fromNS: spec.nsFlags) + let idx = UInt32(ShortcutAction.allCases.firstIndex(of: action)!) + let hkid = EventHotKeyID(signature: kSignature, id: idx) + var ref: EventHotKeyRef? + + let status = RegisterEventHotKey( + UInt32(spec.keyCode), + carbon, + hkid, + GetApplicationEventTarget(), + 0, + &ref + ) + if status == noErr, let ref { + refs[action] = ref + gHotKeyTable[idx] = action + } else { + conflicts.insert(action) + } + } +} diff --git a/NotchBuddy/Sources/App/IslandRootView.swift b/NotchBuddy/Sources/App/IslandRootView.swift new file mode 100644 index 0000000..eb91f23 --- /dev/null +++ b/NotchBuddy/Sources/App/IslandRootView.swift @@ -0,0 +1,631 @@ +import SwiftUI + +/// Top-level SwiftUI view rendered inside the 720×320 transparent panel. +/// The island is drawn at the top-center; everything else is transparent and click-through. +/// Note: drag-drop is handled at the AppKit level in IslandWindowController (FileDropNSView), +/// not in SwiftUI, to avoid interfering with SwiftUI hit-testing. +struct IslandRootView: View { + @EnvironmentObject var state: AppState + + var body: some View { + ZStack(alignment: .top) { + Color.clear + .frame(maxWidth: .infinity, maxHeight: .infinity) + IslandContainer(state: state) + .frame(maxWidth: .infinity, alignment: .center) + } + .ignoresSafeArea() + } +} + +// MARK: - Island container + +struct IslandContainer: View { + @ObservedObject var state: AppState + @State private var islandWidth: CGFloat = IslandConst.notchWidth + @State private var islandHeight: CGFloat = IslandConst.notchHeight + @State private var cornerRadius: CGFloat = IslandConst.roundedCorner + // topRadius > 0 → convex expanded corners; < 0 → concave ear cutouts + @State private var islandTopRadius: CGFloat = 0 + @State private var greetNotif: Bool = false + + private let openSpring = Animation.spring(response: 0.5, dampingFraction: 0.72) + private let closeEase = Animation.timingCurve(0.45, 0, 0.2, 1, duration: 0.34) + + private var chatPromptHeight: CGFloat { + let base: CGFloat = 240 + let perMsg: CGFloat = 40 + return min(300, base + CGFloat(state.chatHistory.count) * perMsg) + } + + /// Pixels the content must be pushed down to clear the concave ear transparent area. + /// = 0 in expanded mode (no ears), = earRadius in compact/notch mode. + private var earOffset: CGFloat { max(0, -islandTopRadius) } + + var body: some View { + // Canvas active during drag-over (.upload), post-drop animation (.uploading), + // AND choose overlay (.choose) — canvas handles the full sequence through user action. + // Engine deactivates when user clicks a canvas choose button or navigates away. + let uploadActive = state.mode == .expanded + && UploadSequenceEngine.shared.isActive + && (state.view == .upload || state.view == .uploading || state.view == .choose) + + let greetingActive = state.mode == .expanded && state.view == .greeting + + return ZStack(alignment: .topLeading) { + // Black island shape + IslandShape(width: islandWidth, height: islandHeight, + cornerRadius: cornerRadius, topRadius: islandTopRadius) + .fill(Color.black) + + // Content + if state.mode == .expanded { + if greetingActive { + // Greeting canvas: fixed 640-wide, centered by offset so x=320 aligns with island center + GreetingCanvasView(state: state) + .frame(width: IslandConst.expandedWidth, height: 150) + .offset(x: (islandWidth - IslandConst.expandedWidth) / 2) + .clipShape(IslandShape(width: islandWidth, height: islandHeight, + cornerRadius: cornerRadius, topRadius: islandTopRadius)) + .transition(.opacity) + } else if uploadActive { + ZStack(alignment: .topLeading) { + UploadCanvasView(state: state) + .frame(width: islandWidth, height: islandHeight) + .clipShape(IslandShape(width: islandWidth, height: islandHeight, + cornerRadius: cornerRadius, topRadius: islandTopRadius)) + // Header overlaid: canvas CARD_Y=42 aligns exactly with header bottom, + // matching normal view proportions (8pt top + 34pt header + card + 10pt bottom). + IslandHeader(state: state) + .frame(width: islandWidth, height: 34) + .offset(y: 8) + } + .transition(.opacity) + } else { + IslandContentView(state: state) + .frame(width: islandWidth, height: islandHeight - earOffset) + .offset(y: earOffset) + .clipShape(IslandShape(width: islandWidth, height: islandHeight, + cornerRadius: cornerRadius, topRadius: islandTopRadius)) + .transition(.opacity) + } + } + + // Single BotPlacement — always alive in the view tree so spring animations + // fire from the current position (e.g. choose at 60,101) when canvas deactivates. + // Hidden during upload canvas or greeting (both draw their own Mochi). + BotPlacement(state: state, islandW: islandWidth, islandH: islandHeight) + // Keep idle animations inside the resting strip. Expanded views + // retain the panel's full height for particles and hands. + .mask(alignment: .topLeading) { + Rectangle().frame(width: islandWidth, + height: state.mode == .expanded ? 320 : islandHeight) + } + .opacity(uploadActive || greetingActive ? 0 : 1) + .animation(.easeInOut(duration: 0.25), value: uploadActive || greetingActive) + + CountdownBar(state: state, islandW: islandWidth) + + Group { + if state.mode == .compact { + CompactMiniGrid(state: state) + .scaleEffect(IslandRestingLayout(width: islandWidth, height: islandHeight).miniGridScale) + .position(x: islandWidth - 40, y: islandHeight / 2) + .transition(.opacity) + } + } + .animation(.easeInOut(duration: 0.25), value: state.mode == .compact) + } + .frame(width: islandWidth, height: islandHeight, alignment: .topLeading) + .onChange(of: state.mode) { oldMode, newMode in + let shrinking = modeOrder(newMode) < modeOrder(oldMode) + let anim = shrinking ? closeEase : openSpring + let (w, h) = islandSize(mode: newMode, view: state.view, + progress: state.uploadProgress, + nw: state.notchWidth, nh: state.notchHeight) + let cr = newMode == .expanded ? IslandConst.expandedCorner : IslandConst.roundedCorner + let tr: CGFloat = 0 + withAnimation(anim) { + islandWidth = w + islandHeight = (newMode == .expanded && state.view == .prompt) ? chatPromptHeight : h + cornerRadius = cr + islandTopRadius = tr + } + } + .onChange(of: state.view) { _, newView in + guard state.mode == .expanded else { return } + // Deactivate engine if user navigates outside the upload flow + let uploadViews: Set = [.upload, .uploading, .choose] + if UploadSequenceEngine.shared.isActive && !uploadViews.contains(newView) { + UploadSequenceEngine.shared.deactivate() + } + let (w, h) = islandSize(mode: .expanded, view: newView, + progress: state.uploadProgress, + nw: state.notchWidth, nh: state.notchHeight) + withAnimation(openSpring) { + islandWidth = w + islandHeight = newView == .prompt ? chatPromptHeight : h + } + } + .onChange(of: state.chatHistory.count) { _, _ in + guard state.mode == .expanded, state.view == .prompt else { return } + withAnimation(openSpring) { islandHeight = chatPromptHeight } + } + .onAppear { + let (w, h) = islandSize(mode: state.mode, view: state.view, + progress: state.uploadProgress, + nw: state.notchWidth, nh: state.notchHeight) + islandWidth = w + islandHeight = state.view == .prompt ? chatPromptHeight : h + cornerRadius = state.mode == .expanded ? IslandConst.expandedCorner : IslandConst.roundedCorner + islandTopRadius = 0 + } + .onReceive(NotificationCenter.default.publisher(for: .botGreet)) { _ in + greetNotif.toggle() + } + } + + private func modeOrder(_ m: IslandMode) -> Int { + switch m { case .hidden: return 0; case .compact: return 1; case .expanded: return 2 } + } +} + +// MARK: - Island shape +// +// topRadius > 0 → convex rounded top corners (expanded mode) +// topRadius < 0 → concave ear cutouts, |topRadius| = ear radius (compact/notch mode) +// topRadius = 0 → sharp top corners (transient during animation) + +struct IslandShape: Shape { + var width: CGFloat + var height: CGFloat + var cornerRadius: CGFloat // bottom corners + var topRadius: CGFloat // see above + + var animatableData: AnimatablePair, CGFloat>, CGFloat> { + get { .init(.init(.init(width, height), cornerRadius), topRadius) } + set { + width = newValue.first.first.first + height = newValue.first.first.second + cornerRadius = newValue.first.second + topRadius = newValue.second + } + } + + func path(in rect: CGRect) -> Path { + let cr = max(0, cornerRadius) + var p = Path() + + if topRadius >= 0 { + // ── Convex rounded top corners (expanded) ────────────────────────── + let tr = min(topRadius, min(width / 2, height / 2)) + p.move(to: CGPoint(x: tr, y: 0)) + p.addLine(to: CGPoint(x: width - tr, y: 0)) + // Top-right convex corner + p.addArc(center: CGPoint(x: width - tr, y: tr), radius: tr, + startAngle: .degrees(270), endAngle: .degrees(0), clockwise: false) + // Right edge + p.addLine(to: CGPoint(x: width, y: height - cr)) + // Bottom-right corner + p.addArc(center: CGPoint(x: width - cr, y: height - cr), radius: cr, + startAngle: .degrees(0), endAngle: .degrees(90), clockwise: false) + // Bottom edge + p.addLine(to: CGPoint(x: cr, y: height)) + // Bottom-left corner + p.addArc(center: CGPoint(x: cr, y: height - cr), radius: cr, + startAngle: .degrees(90), endAngle: .degrees(180), clockwise: false) + // Left edge + p.addLine(to: CGPoint(x: 0, y: tr)) + // Top-left convex corner + p.addArc(center: CGPoint(x: tr, y: tr), radius: tr, + startAngle: .degrees(180), endAngle: .degrees(270), clockwise: false) + } else { + // ── Concave ear cutouts (compact / notch) ───────────────────────── + let er = -topRadius // positive ear radius + p.move(to: CGPoint(x: 0, y: 0)) + // Top-left ear + p.addArc(center: CGPoint(x: 0, y: er), radius: er, + startAngle: .degrees(270), endAngle: .degrees(0), clockwise: false) + // Top edge + p.addLine(to: CGPoint(x: width - er, y: er)) + // Top-right ear + p.addArc(center: CGPoint(x: width, y: er), radius: er, + startAngle: .degrees(180), endAngle: .degrees(270), clockwise: false) + // Right edge + p.addLine(to: CGPoint(x: width, y: height - cr)) + // Bottom-right corner + p.addArc(center: CGPoint(x: width - cr, y: height - cr), radius: cr, + startAngle: .degrees(0), endAngle: .degrees(90), clockwise: false) + // Bottom edge + p.addLine(to: CGPoint(x: cr, y: height)) + // Bottom-left corner + p.addArc(center: CGPoint(x: cr, y: height - cr), radius: cr, + startAngle: .degrees(90), endAngle: .degrees(180), clockwise: false) + // Left edge back to top-left corner + p.addLine(to: CGPoint(x: 0, y: 0)) + } + + p.closeSubpath() + return p + } +} + +// MARK: - Bot placement helper + +struct BotPlacement: View { + @ObservedObject var state: AppState + let islandW: CGFloat + let islandH: CGFloat + + var body: some View { + let (cx, cy, diameter, opacity) = botPosition(mode: state.mode, view: state.view, islandW: islandW, islandH: islandH, uploadProgress: state.uploadProgress, hasNotch: state.hasNotch) + let canvasSize = diameter / 0.6 + let overhang: CGFloat = 40 + let isUploading = state.view == .uploading + + Group { + // No glow in uploading mode — the tiny dot doesn't need it + if state.mode == .expanded && !isUploading { + Circle() + .fill(RadialGradient( + gradient: Gradient(stops: [ + .init(color: botGlowColor(state.effectiveState), location: 0), + .init(color: .clear, location: 0.62) + ]), + center: .center, + startRadius: 0, + endRadius: diameter * 1.1 + )) + .frame(width: diameter * 2.2, height: diameter * 2.2) + .blur(radius: 6) + .opacity(botGlowOpacity(state.effectiveState)) + .position(x: cx, y: cy) + .animation(.easeInOut(duration: 0.4), value: state.effectiveState) + } + + // Uploading: no particle overhang (no hearts during upload), positioned directly at cy. + // BotEngine cy = H/2 + 0 + oy*R + R*0.06 ≈ H/2 (body centered in canvas). + // With .position(x:y:) placing the frame center at (uploadCx, cy), bot is at cy ✓. + // + // Normal: extra 40pt canvas at top for heart particles; position offset up by 20pt; + // BotEngine compensates with cy = H/2 + particleOverhang/2 + oy*R + R*0.06. + if isUploading { + TimelineView(.animation) { tl in + let elapsed: Double = { + guard let start = state.uploadStartTime else { return 0 } + return tl.date.timeIntervalSince(start) + }() + let t = min(1.0, max(0, elapsed / state.uploadDuration)) + // cx = 36 + 526*t: bot center at fill right edge (bar left=36, width=526) + let uploadCx = 36 + CGFloat(t * (2 - t)) * 526 + BotCanvasView(state: state, particleOverhang: 0) + .frame(width: canvasSize, height: canvasSize) + .opacity(state.isDraggingBot || state.mochiOnDesktop ? 0 : opacity) + .position(x: uploadCx, y: cy) + } + .transition(.scale(scale: 0.01, anchor: .center).combined(with: .opacity)) + } else { + BotCanvasView(state: state, particleOverhang: overhang) + .frame(width: canvasSize, height: canvasSize + overhang) + .opacity(state.isDraggingBot || state.mochiOnDesktop ? 0 : opacity) + .position(x: cx, y: cy - overhang / 2) + .animation(.spring(response: 0.5, dampingFraction: 0.72), value: cx) + .animation(.spring(response: 0.5, dampingFraction: 0.72), value: cy) + .animation(.spring(response: 0.5, dampingFraction: 0.72), value: canvasSize) + .transition(.scale(scale: 0.01, anchor: .center).combined(with: .opacity)) + } + } + // Branch switch (uploading ↔ normal) animates with a fast spring: uploading dot + // scales out at bar-end while normal bot scales in at choose position. + .animation(.spring(response: 0.36, dampingFraction: 0.72), value: isUploading) + // Slap, drag, and hover are handled by the AppKit NSEvent monitor in + // IslandWindowController — not SwiftUI gestures — so this is safe. + .allowsHitTesting(false) + } + + private func botGlowColor(_ s: BotState) -> Color { + switch s { + case .working: return Color(hex: "#3B9EFF") + case .thinking: return Color(hex: "#A78BFA") + case .searching: return Color(hex: "#6366F1") + case .approval: return Color(hex: "#F5A524") + case .error: return Color(hex: "#F4505E") + case .finished: return Color(hex: "#34D399") + case .ratelimit: return Color(hex: "#F59E0B") + default: return Color.white + } + } + + private func botGlowOpacity(_ s: BotState) -> Double { + switch s { + case .idle, .sleeping: return 0.15 + case .dizzy: return 0.0 + default: return 0.65 + } + } +} + +func botPosition(mode: IslandMode, view: IslandView, islandW: CGFloat, islandH: CGFloat, uploadProgress: Double, hasNotch: Bool = true) -> (CGFloat, CGFloat, CGFloat, Double) { + let resting = IslandRestingLayout(width: islandW, height: islandH) + switch mode { + case .hidden: + return hasNotch ? (46, 16, 6, 0) + : (islandW / 2, resting.botCenterY, resting.botDiameter, 1) + case .compact: return (40, resting.botCenterY, resting.botDiameter, 1) + case .expanded: + let layout = IslandConst.viewLayouts[view]! + let diameter = layout.botDiameter + // Uploading: Mochi dot rides the leading edge of the progress fill. + // Bar in island coords: left=36, width=526. cx = 36 + progress*526 (dot center at fill right edge). + // cy comes from ViewLayout.botY (bar center in island coords). + if view == .uploading { + let cx = 36 + CGFloat(uploadProgress) * 526 + return (cx, layout.botY ?? 103, diameter, 1) + } + let cx = layout.botX + let cy: CGFloat + if let fixedY = layout.botY { + cy = fixedY + } else { + // Center of the fixed 84pt card (VStack top=8, header=34 → content starts at y=42) + let headerBottom: CGFloat = 42 + let cardH: CGFloat = 84 + cy = headerBottom + (islandH - headerBottom - cardH) / 2 + cardH / 2 + } + return (cx, cy, diameter, 1) + } +} + +// MARK: - Countdown bar + +struct CountdownBar: View { + @ObservedObject var state: AppState + let islandW: CGFloat + @State private var barWidth: CGFloat = 0 + @State private var timer: Timer? = nil + + var body: some View { + GeometryReader { _ in + Rectangle() + .fill(Color.white.opacity(0.35)) + .frame(width: barWidth, height: 2) + .cornerRadius(2) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .bottom) + } + .onAppear { startTimer() } + .onDisappear { timer?.invalidate() } + } + + private func startTimer() { + timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in + updateBar() + } + } + + private func updateBar() { + guard state.mode == .expanded && !state.isPinned else { + barWidth = 0 + return + } + let autoClose = state.autoCloseInterval + let window = min(10.0, autoClose * 0.6) + let elapsed = Date.now.timeIntervalSince(state.lastActivity) + let remaining = autoClose - elapsed + if remaining < window { + barWidth = max(0, CGFloat(remaining / window) * 160) + } else { + barWidth = 0 + } + } +} + +// MARK: - Island content (header + views, only in expanded mode) + +struct IslandContentView: View { + @ObservedObject var state: AppState + + var body: some View { + VStack(spacing: 0) { + IslandHeader(state: state) + .frame(height: 34) + .opacity(state.view == .confused ? 0 : 1) + .animation(.easeInOut(duration: 0.2), value: state.view == .confused) + + ZStack { + ForEach(IslandView.allCases, id: \.self) { v in + let active = state.view == v + // Views that fill available height instead of the fixed 98pt content frame: + // chat (prompt) is always flexible; mail is flexible only when active so + // it doesn't push the ZStack taller when inactive. + let isTall = v == .prompt || (v == .mail && active) + let anim: Animation = active + ? .spring(response: 0.4, dampingFraction: 0.8).delay(0.16) + : .easeIn(duration: 0.16) + IslandViewContent(view: v, state: state) + .frame(maxWidth: .infinity) + .frame(height: isTall ? nil : 98) + .frame(minHeight: (isTall && !active) ? 0 : nil, maxHeight: isTall ? .infinity : nil) + .opacity(active ? 1 : 0) + .scaleEffect(active ? 1 : 0.97) + .allowsHitTesting(active) + .animation(anim, value: state.view) + } + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .padding(.horizontal, 10) + } + .padding(.top, 8) + .padding(.bottom, 10) + .foregroundColor(Color(hex: "#F5F6F8")) + } +} + +// MARK: - Island header (tabs + icons) + +struct IslandHeader: View { + @ObservedObject var state: AppState + + var body: some View { + HStack(spacing: 0) { + // Left: tab capsules + HStack(spacing: 5) { + TabButton(icon: "house.fill", view: .overview, state: state) + TabButton(icon: "bubble.left.fill", view: .prompt, state: state, preAction: { + #if !APPSTORE + if state.promptContext == nil { + state.promptContext = WindowContextCapture.captureActive(from: state.lastExternalApp) + } + #endif + }) + TabButton(icon: "plus", view: .upload, state: state) + } + .padding(.leading, 14) + + Spacer() + + // Right: plan pill (GitHub build, home view only) + action icons + HStack(spacing: 8) { + #if !APPSTORE + if state.view == .overview && state.showPlanInNotch && state.planRelayInstalled { + ClaudePlanHeaderPill(state: state) + } + #endif + HStack(spacing: 14) { + Button(action: { + withAnimation(.spring(response: 0.3, dampingFraction: 0.8)) { + state.view = .settings + } + }) { + Image(systemName: state.view == .settings ? "gearshape.fill" : "gearshape") + .font(.system(size: 14)) + .foregroundColor(state.view == .settings ? Color(hex: "#F5F6F8") : Color(hex: "#8E939C")) + } + .buttonStyle(.plain) + + Button(action: { state.soundEnabled.toggle() }) { + Image(systemName: state.soundEnabled ? "speaker.wave.2" : "speaker.slash") + .font(.system(size: 14)) + .foregroundColor(Color(hex: "#8E939C")) + } + .buttonStyle(.plain) + } + } + .padding(.trailing, 16) + } + .frame(maxHeight: .infinity) + } +} + +struct TabButton: View { + let icon: String + let view: IslandView + @ObservedObject var state: AppState + var preAction: (() -> Void)? = nil + @State private var isHovered = false + + private var isOn: Bool { + if view == .overview { return state.view == .overview || state.view == .empty } + return state.view == view + } + + var body: some View { + Button(action: { + preAction?() + withAnimation(.spring(response: 0.3, dampingFraction: 0.8)) { + state.view = view + } + }) { + Image(systemName: icon) + .font(.system(size: 13)) + .foregroundColor(isOn ? Color(hex: "#F5F6F8") : (isHovered ? Color(hex: "#B0B5BE") : Color(hex: "#8E939C"))) + .frame(width: 30, height: 22) + .background( + isOn ? Color(hex: "#1D1F23") : + isHovered ? Color.white.opacity(0.07) : Color.clear + ) + .clipShape(Capsule()) + } + .buttonStyle(.plain) + .onHover { isHovered = $0 } + } +} + +// MARK: - Claude Plan header pill (GitHub build only) + +#if !APPSTORE +struct ClaudePlanHeaderPill: View { + @ObservedObject var state: AppState + @State private var isHovered = false + + private var effectiveColor: String { + ClaudePlanGauge.color(for: state.claudePlanUsage.flatMap { ClaudePlanGauge.dominantPct($0) }) + } + + private var label: String { + guard let usage = state.claudePlanUsage, + let pct = ClaudePlanGauge.dominantPct(usage) else { return "Claude —" } + return "Claude \(Int(pct.rounded()))%" + } + + private var isActive: Bool { state.showingPlanDetail || isHovered } + + var body: some View { + Button(action: { + withAnimation(.spring(response: 0.28, dampingFraction: 0.82)) { + state.showingPlanDetail.toggle() + } + }) { + HStack(spacing: 4) { + Circle() + .fill(Color(hex: effectiveColor)) + .frame(width: 6, height: 6) + Text(label) + .font(.system(size: 10, weight: .semibold)) + .foregroundColor(isActive + ? Color(hex: effectiveColor).lighter(by: 0.3) + : Color(hex: "#6B7079")) + .lineLimit(1) + .fixedSize() + } + .padding(.horizontal, 8) + .padding(.vertical, 4) + .background( + Capsule() + .fill(isActive + ? Color(hex: effectiveColor).opacity(0.18) + : Color(hex: "#0E0F11")) + ) + .overlay( + Capsule() + .stroke(Color(hex: effectiveColor).opacity(isActive ? 0.55 : 0.14), lineWidth: 1) + ) + } + .buttonStyle(.plain) + .onHover { h in + withAnimation(.spring(response: 0.2, dampingFraction: 0.7)) { isHovered = h } + } + } +} +#endif + +// MARK: - Compact mini mochi grid (2×2 to the right of the notch) + +struct CompactMiniGrid: View { + @ObservedObject var state: AppState + + private var others: [AgentTask] { + Array(state.tasks.filter { $0.id != state.focusId }.prefix(4)) + } + + var body: some View { + let cols = [GridItem(.fixed(12), spacing: 4), GridItem(.fixed(12), spacing: 4)] + LazyVGrid(columns: cols, spacing: 4) { + ForEach(others) { task in + MiniBotCanvasView(task: task) + .frame(width: 12 / 0.6, height: 12 / 0.6) + .frame(width: 12, height: 12, alignment: .center) + } + } + .frame(width: 28, height: 28) + } +} diff --git a/NotchBuddy/Sources/App/IslandStateMachine.swift b/NotchBuddy/Sources/App/IslandStateMachine.swift new file mode 100644 index 0000000..a8fe331 --- /dev/null +++ b/NotchBuddy/Sources/App/IslandStateMachine.swift @@ -0,0 +1,184 @@ +import Foundation + +/// Pure 4-state FSM for island open/close logic. +/// No AppKit / AppState dependencies — communicates via `onTransition`. +@MainActor +final class IslandStateMachine { + + enum State: Equatable { + case hidden // island invisible (notch size) + case petit // compact island (notch + ears) + case home // expanded, overview + case coucou // expanded, greeting animation + } + + private(set) var state: State = .hidden + + /// Fired on every transition: (from, to) + var onTransition: ((State, State) -> Void)? + + /// When non-nil and returns true, timers and mouse-leave never auto-collapse or hide the island. + var isHeldOpen: (() -> Bool)? + + /// home → petit delay (seconds). Override for debug. + var homeToPetitDelay: TimeInterval = 15 + /// petit → hidden delay (seconds). Override for debug. + var petitToHiddenDelay: TimeInterval = 60 + /// coucou → petit delay after greeting animation ends (no hover). ~0.6s syncs with canvas collapse. + var greetAutoCollapseDelay: TimeInterval = 0.6 + /// coucou → petit delay when mouse is hovering over the greeting. + var greetHoverCollapseDelay: TimeInterval = 10 + + private var petitHideWork: DispatchWorkItem? + private var homeCollapseWork: DispatchWorkItem? + private var greetCollapseWork: DispatchWorkItem? + + // MARK: – Inputs + + /// App launched or debug "launch greeting" + func launch() { + cancelTimers() + transition(to: .coucou) + } + + /// Mouse entered the island notch area + func mouseEntered() { + switch state { + case .hidden: + if isHeldOpen?() == true { + // Island already expanded by an external call — sync FSM state without transition + state = .home + } else { + cancelTimers() + transition(to: .petit) + } + case .petit: + petitHideWork?.cancel() + petitHideWork = nil + case .home: + homeCollapseWork?.cancel() + homeCollapseWork = nil + case .coucou: + // Mouse hovering during greeting — cancel short auto-collapse, extend to hover delay + scheduleGreetCollapse(delay: greetHoverCollapseDelay) + } + } + + /// Mouse left the island notch area + func mouseLeft() { + switch state { + case .hidden: + break + case .petit: + schedulePetitHide() + case .home: + if isHeldOpen?() != true { scheduleHomeCollapse() } + case .coucou: + if isHeldOpen?() != true { + // Interrupt greeting immediately → compact (overrides 10s auto-collapse) + greetCollapseWork?.cancel(); greetCollapseWork = nil + transition(to: .petit) + } + } + } + + /// Compact island clicked. + /// Also accepts `.hidden`: after an alert the island can be on screen while the + /// FSM never saw the mouse enter (it was already there), and the click must still open it. + func click() { + guard state == .petit || state == .hidden else { return } + cancelTimers() + transition(to: .home) + } + + /// The app hid the island on its own (e.g. `AppState.syncMode()` when the last + /// task ends). Mirror it without side effects, so the next hover peeks again + /// instead of being swallowed by a FSM that still thinks the island is `.petit`. + func hiddenExternally() { + guard state == .petit else { return } + cancelTimers() + state = .hidden + } + + /// The app expanded the island externally (hookExpand for an alert). + /// Cancel timers and sync state to `.home` without firing `onTransition`, so the + /// next hover/mouseLeft behave correctly instead of collapsing the island. + func openedExternally() { + cancelTimers() + guard state != .home && state != .coucou else { return } + state = .home + } + + /// The app folded the island itself (Escape, Settings, OK button, auto-close). + /// Move to `.petit` right away so hover and click keep working; waiting for the + /// 15 s home timer left the island compact on screen while the FSM still said `.home`. + func collapse() { + guard state == .home || state == .coucou else { return } + cancelTimers() + transition(to: .petit) + } + + /// Greeting animation finished (called at T.end ≈ 4.60 s). + /// Schedules auto-collapse. Does not override a longer hover timer already running. + func greetComplete() { + guard state == .coucou else { return } + // If mouse entered before this fires (hover timer already running), don't override it + if greetCollapseWork == nil { + scheduleGreetCollapse(delay: greetAutoCollapseDelay) + } + } + + private func scheduleGreetCollapse(delay: TimeInterval) { + greetCollapseWork?.cancel() + let item = DispatchWorkItem { [weak self] in + guard let self, self.state == .coucou else { return } + self.transition(to: .petit) + } + greetCollapseWork = item + DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: item) + } + + /// Non-alert work event: show compact from hidden (HookServer reveal) + func reveal() { + guard state == .hidden else { return } + cancelTimers() + transition(to: .petit) + schedulePetitHide() + } + + // MARK: – Timers + + private func schedulePetitHide() { + petitHideWork?.cancel() + let item = DispatchWorkItem { [weak self] in + guard let self, self.state == .petit, !(self.isHeldOpen?() ?? false) else { return } + self.transition(to: .hidden) + } + petitHideWork = item + DispatchQueue.main.asyncAfter(deadline: .now() + petitToHiddenDelay, execute: item) + } + + private func scheduleHomeCollapse() { + homeCollapseWork?.cancel() + let item = DispatchWorkItem { [weak self] in + guard let self, self.state == .home, !(self.isHeldOpen?() ?? false) else { return } + self.transition(to: .petit) + } + homeCollapseWork = item + DispatchQueue.main.asyncAfter(deadline: .now() + homeToPetitDelay, execute: item) + } + + func cancelTimers() { + petitHideWork?.cancel(); petitHideWork = nil + homeCollapseWork?.cancel(); homeCollapseWork = nil + greetCollapseWork?.cancel(); greetCollapseWork = nil + } + + private func transition(to new: State) { + guard new != state else { return } + let old = state + state = new + onTransition?(old, new) + } + +} diff --git a/NotchBuddy/Sources/App/IslandViewContent.swift b/NotchBuddy/Sources/App/IslandViewContent.swift new file mode 100644 index 0000000..3947f0d --- /dev/null +++ b/NotchBuddy/Sources/App/IslandViewContent.swift @@ -0,0 +1,4718 @@ +import SwiftUI + +// MARK: - Dispatch view content by IslandView + +struct IslandViewContent: View { + let view: IslandView + @ObservedObject var state: AppState + + var body: some View { + switch view { + case .overview: OverviewView(state: state) + case .empty: EmptyStateView(state: state) + case .approval: ApprovalView(state: state) + case .question: QuestionView(state: state) + case .error: ErrorView(state: state) + case .finished: FinishedView(state: state) + case .confused: ConfusedView() + case .upload: UploadView(state: state) + case .uploading: UploadingView(state: state) + case .choose: ChooseView(state: state) + case .mail: MailView(state: state) + case .prompt: PromptView(state: state) + case .searching: SearchingView(state: state) + case .result: ResultView(state: state) + case .note: NoteView(state: state) + case .settings: SettingsIslandView(state: state) + case .greeting: EmptyView() // GreetingCanvasView overlaid in IslandRootView + case .wardrobe: WardrobeView(state: state) + } + } +} + +// MARK: - Overview + +struct OverviewView: View { + @ObservedObject var state: AppState + @State private var showingN8nDetail = false + @State private var activeDiffId: Int? = nil + + var agent: AgentTask? { state.focusTask } + + var body: some View { + HStack(spacing: 10) { + // Left card: title row + ticker below + ↗ button overlay + ZStack(alignment: .topLeading) { + CardBackground(wash: nil) + + // Title row + ticker stacked (or integration card) + if let agent = agent { + if agent.isIntegration { + IntegrationCardView(task: agent, showingDetail: $showingN8nDetail, onDiffTap: { diffIdx in + withAnimation(.easeIn(duration: 0.16)) { activeDiffId = diffIdx } + }) + } else { + VStack(alignment: .leading, spacing: 0) { + HStack(spacing: 6) { + Circle() + .fill(Color(hex: agent.color)) + .frame(width: 7, height: 7) + Text(agent.name) + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + .lineLimit(1) + .truncationMode(.tail) + .layoutPriority(1) + Text({ () -> String in + switch agent.source { + case .claudeCode: return "Claude Code" + case .agent: return "Agent" + case .n8n: return "n8n" + } + }()) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + .lineLimit(1) + .truncationMode(.tail) + Spacer(minLength: 2) + if agent.steps.count > 1 { + Text("\(min(agent.stepIndex + 1, agent.steps.count))/\(agent.steps.count)") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#6B7079")) + .fixedSize() + } + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 36) + + TickerView(task: agent, onDiffTap: { diffIdx in + withAnimation(.easeIn(duration: 0.16)) { activeDiffId = diffIdx } + }) + .frame(height: 44) + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 12) + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + } + } + + // Plan detail overlays on top of normal content (GitHub build, home view only) + #if !APPSTORE + if state.showingPlanDetail { + CardBackground(wash: nil) + ClaudePlanCardView(usage: state.claudePlanUsage) + .transition(.opacity) + } + #endif + + // Diff overlay — replaces ticker when a diff step is tapped + if let diffId = activeDiffId, + let task = agent, + let diff = state.sessionDiffs[task.id]?.first(where: { $0.id == diffId }) { + CardBackground(wash: nil) + DiffCardView(diff: diff, onDismiss: { activeDiffId = nil }) + .transition(.opacity) + } + + // ↗ jump button — last in ZStack so it renders on top; hidden while any detail is open + #if !APPSTORE + let hideJumpButton = showingN8nDetail || state.showingPlanDetail || activeDiffId != nil + #else + let hideJumpButton = showingN8nDetail || activeDiffId != nil + #endif + if !hideJumpButton { + Button(action: { openAgentTarget(agent) }) { + Image(systemName: "arrow.up.right") + .font(.system(size: 8, weight: .medium)) + .foregroundColor(Color(hex: "#5F646D")) + .frame(width: 16, height: 16) + .background(Color.white.opacity(0.07)) + .clipShape(Circle()) + } + .buttonStyle(.plain) + .padding(.top, 8) + .padding(.trailing, 10) + .frame(maxWidth: .infinity, alignment: .trailing) + } + } + .frame(width: 322) + + // Right card: agent pills + CardBackground(wash: nil) { + AgentPillsView(state: state) + } + } + .onChange(of: state.focusId) { _, new in + showingN8nDetail = false + activeDiffId = nil + #if !APPSTORE + withAnimation(.easeIn(duration: 0.16)) { state.showingPlanDetail = false } + #endif + if new == "integration_github" { GithubPoller.shared.refreshIfStale() } + } + #if !APPSTORE + .onChange(of: state.view) { _, v in + if v != .overview { state.showingPlanDetail = false; activeDiffId = nil } + } + #endif + .onChange(of: state.mode) { _, m in + #if !APPSTORE + if m != .expanded { state.showingPlanDetail = false; activeDiffId = nil } + #endif + if m == .expanded && state.focusId == "integration_github" { + GithubPoller.shared.refreshIfStale() + } + } + .onReceive(NotificationCenter.default.publisher(for: .islandToggleDiff)) { _ in + if let id = activeDiffId { + withAnimation(.easeIn(duration: 0.16)) { activeDiffId = nil } + _ = id + } else if let task = state.focusTask, + let last = state.sessionDiffs[task.id]?.last { + withAnimation(.easeIn(duration: 0.16)) { activeDiffId = last.id } + } + } + } + + private func openAgentTarget(_ task: AgentTask?) { + guard let task else { return } + switch task.id { + case "integration_claude": + let vscodeBundleId = "com.microsoft.VSCode" + if let app = NSWorkspace.shared.runningApplications.first(where: { $0.bundleIdentifier == vscodeBundleId }) { + app.activate(options: .activateIgnoringOtherApps) + } else { + NSWorkspace.shared.open(URL(fileURLWithPath: "/Applications/Visual Studio Code.app")) + } + case "integration_resend": + NSWorkspace.shared.open(URL(string: "https://resend.com/emails")!) + case "integration_vercel": + NSWorkspace.shared.open(URL(string: "https://vercel.com/dashboard")!) + case "integration_github": + NSWorkspace.shared.open(URL(string: "https://github.com/pulls")!) + case "integration_n8n": + if let urlStr = KeychainStore.shared.get("n8n-url"), let url = URL(string: urlStr) { + NSWorkspace.shared.open(url) + } + case "integration_stripe": + NSWorkspace.shared.open(URL(string: "https://dashboard.stripe.com/payments")!) + case "integration_notion": + NSWorkspace.shared.open(URL(string: "https://notion.so")!) + case "integration_calcom": + NSWorkspace.shared.open(URL(string: "https://app.cal.com/bookings")!) + case "agent_cursor": + #if !APPSTORE + if let url = NSWorkspace.shared.urlForApplication( + withBundleIdentifier: "com.todesktop.230313mzl4w4u92") { + NSWorkspace.shared.openApplication(at: url, configuration: .init(), completionHandler: nil) + } + #endif + case "agent_codex": + #if !APPSTORE + if let url = NSWorkspace.shared.urlForApplication( + withBundleIdentifier: "com.openai.codex") { + NSWorkspace.shared.openApplication(at: url, configuration: .init(), completionHandler: nil) + } + #endif + case "agent_gemini", "agent_antigravity": + #if !APPSTORE + let terminalBundleIds = ["com.apple.Terminal", "com.googlecode.iterm2", + "net.kovidgoyal.kitty", "com.mitchellh.ghostty"] + if let hit = terminalBundleIds.compactMap({ id in + NSWorkspace.shared.runningApplications.first { $0.bundleIdentifier == id } + }).first { + hit.activate(options: .activateIgnoringOtherApps) + } + #endif + case "ai_anthropic": + switchChatProvider(.anthropic) + case "ai_google": + switchChatProvider(.google) + case "ai_openai": + switchChatProvider(.openai) + case "ai_ollama": + switchChatProvider(.ollama) + case "ai_lmstudio": + switchChatProvider(.lmstudio) + case "integration_music": + #if !APPSTORE + MusicController.shared.openMusic() + #endif + default: + // Non-integration real tasks + if task.source == .n8n { + if let urlStr = KeychainStore.shared.get("n8n-url"), let url = URL(string: urlStr) { + NSWorkspace.shared.open(url) + } + } else { + #if !APPSTORE + let terminalBundleIds = ["com.apple.Terminal", "com.googlecode.iterm2", + "net.kovidgoyal.kitty", "com.mitchellh.ghostty"] + if let hit = terminalBundleIds.compactMap({ id in + NSWorkspace.shared.runningApplications.first { $0.bundleIdentifier == id } + }).first { + hit.activate(options: .activateIgnoringOtherApps) + } + #endif + } + } + } +} + +// MARK: - Empty + +struct EmptyStateView: View { + @ObservedObject var state: AppState + + var body: some View { + ZStack { + CardBackground(wash: nil) + HStack(spacing: 16) { + VStack(alignment: .leading, spacing: 5) { + Text("Nothing running right now.") + .font(.system(size: 15, weight: .semibold)) + Text("Drop a file or window, or ask me anything.") + .font(.system(size: 13)) + .foregroundColor(Color(hex: "#9398A1")) + } + Spacer() + PrimaryButton("Ask Claude") { + state.view = .prompt + } + } + .padding(.leading, 118) + .padding(.trailing, 18) + } + } +} + +// MARK: - Approval + +struct ApprovalView: View { + @ObservedObject var state: AppState + + var approval: ApprovalInfo? { state.pendingApproval } + + var body: some View { + ZStack { + CardBackground(wash: .amber) + VStack(alignment: .leading, spacing: 5) { + AgentWho(task: state.focusTask, label: "needs permission") + CodeBlock(text: approval?.command ?? approval?.tool ?? "…") + HStack(spacing: 8) { + SecondaryButton("Deny") { + HookServer.shared.sendApprovalDecision("deny") + } + PrimaryButton("Allow") { + HookServer.shared.sendApprovalDecision("allow") + } + // Codex rejects updatedPermissions, so "Always" is not offered + if approval?.pillId != "agent_codex" { + SecondaryButton("Always") { + HookServer.shared.sendApprovalDecision("always") + } + } + } + } + .padding(.leading, 116) + .padding(.trailing, 16) + .padding(.vertical, 4) + .frame(maxWidth: .infinity, alignment: .leading) + } + } +} + +// MARK: - Question + +struct QuestionView: View { + @ObservedObject var state: AppState + @State private var questionIndex = 0 + // Per-question selected labels (empty = none chosen yet) + @State private var selections: [[String]] = [] + // Per-question custom "Other…" text + @State private var otherTexts: [String] = [] + // Per-question "Other…" mode active + @State private var showOther: [Bool] = [] + @FocusState private var otherFieldFocused: Bool + + var question: AskQuestion? { state.pendingQuestion } + + var body: some View { + ZStack { + CardBackground(wash: .cyan) + if let q = question, !q.questions.isEmpty { + let qi = min(questionIndex, q.questions.count - 1) + let item = q.questions[qi] + let isLast = qi == q.questions.count - 1 + let isMulti = item.multiSelect + let curSel = qi < selections.count ? selections[qi] : [] + let curOther = qi < showOther.count ? showOther[qi] : false + let curOtherText = qi < otherTexts.count ? otherTexts[qi] : "" + let canProceed = !curSel.isEmpty || (curOther && !curOtherText.isEmpty) + + VStack(alignment: .leading, spacing: 4) { + // Header row: agent name + question counter + "Reply in terminal" link + HStack(spacing: 4) { + AgentWho(task: nil, label: "Claude Code is asking") + Spacer(minLength: 4) + if q.questions.count > 1 { + Text("\(qi + 1)/\(q.questions.count)") + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + } + Button("Reply in terminal") { HookServer.shared.sendQuestionAsk() } + .buttonStyle(.plain) + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + .underline() + } + // Optional short header label above question text + if !item.header.isEmpty { + Text(item.header) + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + } + Text(item.question) + .font(.system(size: 13, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + .lineLimit(2) + // Options (wrapping) or "Other…" compact inline row + if curOther { + HStack(spacing: 6) { + TextField("Your answer…", text: Binding( + get: { qi < otherTexts.count ? otherTexts[qi] : "" }, + set: { v in if qi < otherTexts.count { otherTexts[qi] = v } } + )) + .textFieldStyle(.plain) + .font(.system(size: 12)) + .foregroundColor(Color(hex: "#F5F6F8")) + .focused($otherFieldFocused) + .onAppear { otherFieldFocused = true } + .onSubmit { commitOtherAndProceed(q: q, qi: qi, isLast: isLast) } + .onExitCommand { if qi < showOther.count { showOther[qi] = false } } + .padding(.horizontal, 8).padding(.vertical, 5) + .background(Color.white.opacity(0.07)) + .clipShape(RoundedRectangle(cornerRadius: 8)) + Button(isLast ? "Send" : "Next") { + commitOtherAndProceed(q: q, qi: qi, isLast: isLast) + } + .buttonStyle(.plain) + .font(.system(size: 11, weight: .medium)) + .foregroundColor(curOtherText.isEmpty ? Color(hex: "#6B7079") : Color(hex: "#F5F6F8")) + .padding(.horizontal, 8).padding(.vertical, 5) + .background(Color.white.opacity(curOtherText.isEmpty ? 0.05 : 0.15)) + .clipShape(Capsule()) + .disabled(curOtherText.isEmpty) + Button { if qi < showOther.count { showOther[qi] = false } } label: { + Text("✕").font(.system(size: 9)) + } + .buttonStyle(.plain) + .foregroundColor(Color(hex: "#6B7079")) + } + } else { + ChipFlowLayout(spacing: 6) { + ForEach(Array(item.options.enumerated()), id: \.offset) { idx, opt in + let isSelected = curSel.contains(opt.label) + if isMulti { + Button { + toggleSelection(qi: qi, label: opt.label) + } label: { + Text(opt.label) + .font(.system(size: 12, weight: .medium)) + .padding(.horizontal, 8).padding(.vertical, 4) + .background(isSelected ? Color(hex: "#22D3EE").opacity(0.22) : Color.white.opacity(0.07)) + .foregroundColor(isSelected ? Color(hex: "#67E8F9") : Color(hex: "#C5C8CD")) + .clipShape(RoundedRectangle(cornerRadius: 7)) + .overlay(RoundedRectangle(cornerRadius: 7).stroke(isSelected ? Color(hex: "#22D3EE").opacity(0.55) : Color.white.opacity(0.1), lineWidth: 1)) + } + .buttonStyle(.plain) + .keyboardShortcut(KeyEquivalent(Character(String(idx + 1))), modifiers: []) + } else { + SecondaryButton(opt.label) { + selectAndProceed(q: q, qi: qi, label: opt.label, isLast: isLast) + } + .keyboardShortcut(KeyEquivalent(Character(String(idx + 1))), modifiers: []) + } + } + // "Other…" implicit free-text option + SecondaryButton("Other…") { + if qi < showOther.count { showOther[qi] = true } + } + } + } + // Send/Next — only for multi-select (and not while "Other…" field is open) + if isMulti && !curOther { + PrimaryButton(isLast ? "Send" : "Next") { + proceedFromQuestion(q: q, qi: qi, isLast: isLast) + } + .disabled(!canProceed) + .opacity(canProceed ? 1 : 0.4) + } + } + .padding(.leading, 116) + .padding(.trailing, 16) + .padding(.vertical, 4) + .frame(maxWidth: .infinity, alignment: .leading) + } + } + .onAppear { resetQuestionState() } + .onChange(of: state.pendingQuestion) { _, _ in resetQuestionState() } + .onDisappear { HookServer.shared.releaseQuestionFD() } + } + + private func resetQuestionState() { + questionIndex = 0 + let count = state.pendingQuestion?.questions.count ?? 0 + selections = Array(repeating: [], count: count) + otherTexts = Array(repeating: "", count: count) + showOther = Array(repeating: false, count: count) + } + + private func toggleSelection(qi: Int, label: String) { + guard qi < selections.count else { return } + if let i = selections[qi].firstIndex(of: label) { + selections[qi].remove(at: i) + } else { + selections[qi].append(label) + } + } + + // Single-select: pick a label and immediately advance/send + private func selectAndProceed(q: AskQuestion, qi: Int, label: String, isLast: Bool) { + guard qi < selections.count else { return } + selections[qi] = [label] + if isLast { sendAnswers(q: q) } else { withAnimation { questionIndex = qi + 1 } } + } + + // Multi-select Send/Next button + private func proceedFromQuestion(q: AskQuestion, qi: Int, isLast: Bool) { + if isLast { sendAnswers(q: q) } else { withAnimation { questionIndex = qi + 1 } } + } + + // "Other…" confirm + private func commitOtherAndProceed(q: AskQuestion, qi: Int, isLast: Bool) { + let text = qi < otherTexts.count ? otherTexts[qi] : "" + guard !text.isEmpty else { return } + if qi < selections.count { selections[qi] = [text] } + if isLast { + sendAnswers(q: q) + } else { + if qi < showOther.count { showOther[qi] = false } + withAnimation { questionIndex = qi + 1 } + } + } + + private func sendAnswers(q: AskQuestion) { + let answers = AskQuestion.buildAnswers(questions: q.questions, selections: selections) + HookServer.shared.sendQuestionAnswers(answers) + } +} + +// MARK: - Error + +struct ErrorView: View { + @ObservedObject var state: AppState + + var body: some View { + ZStack { + CardBackground(wash: .red) + VStack(alignment: .leading, spacing: 5) { + AgentWho(task: state.focusTask, label: "n8n") + Text("Workflow stopped.") + .font(.system(size: 15, weight: .semibold)) + Text("Gmail node timed out after 30s. Retry or open n8n.") + .font(.system(size: 12)) + .foregroundColor(Color(hex: "#FF8D97")) + HStack(spacing: 8) { + PrimaryButton("Retry") { /* retry */ } + SecondaryButton("Open in n8n") { /* open */ } + } + } + .padding(.leading, 116) + .padding(.trailing, 16) + .padding(.vertical, 4) + .frame(maxWidth: .infinity, alignment: .leading) + } + } +} + +// MARK: - Finished + +struct FinishedView: View { + @ObservedObject var state: AppState + + var body: some View { + ZStack { + CardBackground(wash: .green) + VStack(alignment: .leading, spacing: 5) { + AgentWho(task: state.focusTask, label: "Claude Code finished") + Text({ + if let fl = state.focusTask?.finalLine { return fl } + if let s = state.focusTask?.steps.last(where: { !$0.isDiffStep }) { return s } + return "Session finished" + }()) + .font(.system(size: 15, weight: .semibold)) + .lineLimit(1) + .truncationMode(.tail) + HStack(spacing: 8) { + #if !APPSTORE + PrimaryButton("Open terminal") { + let terminalBundleIds = ["com.apple.Terminal", "com.googlecode.iterm2", "net.kovidgoyal.kitty", "com.mitchellh.ghostty"] + let activated = terminalBundleIds.compactMap { id in + NSWorkspace.shared.runningApplications.first { $0.bundleIdentifier == id } + }.first.map { $0.activate(options: .activateIgnoringOtherApps) } + if activated == nil { + NSWorkspace.shared.open(URL(fileURLWithPath: "/System/Applications/Utilities/Terminal.app")) + } + NotificationCenter.default.post(name: .islandCollapse, object: nil) + } + #endif + SecondaryButton("OK") { + NotificationCenter.default.post(name: .islandCollapse, object: nil) + } + } + } + .padding(.leading, 116) + .padding(.trailing, 16) + .padding(.vertical, 4) + .frame(maxWidth: .infinity, alignment: .leading) + } + } +} + +// MARK: - Diff Card + +struct DiffCardView: View { + let diff: FileDiff + let onDismiss: () -> Void + + private var allLines: [DiffLine] { diff.hunks.flatMap { $0.lines } } + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(spacing: 6) { + Button(action: onDismiss) { + HStack(spacing: 3) { + Image(systemName: "chevron.left") + .font(.system(size: 8, weight: .medium)) + Text(diff.name) + .font(.system(size: 12, weight: .semibold)) + .lineLimit(1) + } + .foregroundColor(Color(hex: "#F5F6F8")) + } + .buttonStyle(.plain) + Spacer(minLength: 2) + if diff.added > 0 { + Text("+\(diff.added)") + .font(.system(size: 10, weight: .medium).monospaced()) + .foregroundColor(Color(hex: "#22C55E")) + } + if diff.removed > 0 { + Text("−\(diff.removed)") + .font(.system(size: 10, weight: .medium).monospaced()) + .foregroundColor(Color(hex: "#F4505E")) + } + Button(action: { openInEditor(diff) }) { + Image(systemName: "arrow.up.right") + .font(.system(size: 8, weight: .medium)) + .foregroundColor(Color(hex: "#5F646D")) + .frame(width: 14, height: 14) + .background(Color.white.opacity(0.07)) + .clipShape(Circle()) + } + .buttonStyle(.plain) + } + .padding(.top, 6) + .padding(.bottom, 3) + + // Content + if diff.tooLarge { + Text("Diff too large") + .font(.system(size: 10.5)) + .foregroundColor(Color(hex: "#6B7079")) + } else if allLines.isEmpty { + Text("No changes") + .font(.system(size: 10.5)) + .foregroundColor(Color(hex: "#6B7079")) + } else { + ScrollView(.vertical, showsIndicators: false) { + VStack(alignment: .leading, spacing: 0) { + ForEach(Array(allLines.enumerated()), id: \.offset) { _, line in + DiffLineRowView(line: line) + } + } + } + } + } + .padding(.leading, 108) + .padding(.trailing, 10) + .padding(.vertical, 4) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) + .onExitCommand { onDismiss() } + } + + private func openInEditor(_ diff: FileDiff) { + let path = diff.path + #if !APPSTORE + let codePaths = ["/opt/homebrew/bin/code", "/usr/local/bin/code", "/usr/bin/code", + "\(NSHomeDirectory())/.nvm/current/bin/code"] + if let codePath = codePaths.first(where: { FileManager.default.fileExists(atPath: $0) }) { + let p = Process() + p.executableURL = URL(fileURLWithPath: codePath) + // Write: open at line 1; Edit/MultiEdit: open file without line number + p.arguments = diff.isNewFile ? ["-g", "\(path):1"] : [path] + try? p.run() + return + } + #endif + NSWorkspace.shared.open(URL(fileURLWithPath: path)) + } +} + +struct DiffLineRowView: View { + let line: DiffLine + + private var bgColor: Color { + switch line.kind { + case .added: return Color(hex: "#22C55E").opacity(0.12) + case .removed: return Color(hex: "#F4505E").opacity(0.12) + case .context: return Color.clear + } + } + private var fgColor: Color { + switch line.kind { + case .added: return Color(hex: "#86EFAC") + case .removed: return Color(hex: "#FCA5A5") + case .context: return Color(hex: "#6B7079") + } + } + private var symbol: String { + switch line.kind { + case .added: return "+" + case .removed: return "−" + case .context: return " " + } + } + + var body: some View { + HStack(spacing: 0) { + Text(symbol) + .font(.system(size: 10.5).monospaced()) + .foregroundColor(line.kind == .added ? Color(hex: "#22C55E") : + line.kind == .removed ? Color(hex: "#F4505E") : + Color(hex: "#454850")) + .frame(width: 12, alignment: .leading) + Text(line.text) + .font(.system(size: 10.5).monospaced()) + .foregroundColor(fgColor) + .lineLimit(1) + .truncationMode(.tail) + .frame(maxWidth: .infinity, alignment: .leading) + } + .background(bgColor) + .frame(maxWidth: .infinity) + } +} + +// MARK: - Confused + +struct ConfusedView: View { + var body: some View { + ZStack { + CardBackground(wash: .pink) + VStack(alignment: .leading, spacing: 5) { + Text("Too many hits at once.").font(.system(size: 15, weight: .semibold)) + Text("Give me a sec — back to work in three seconds.") + .font(.system(size: 13)).foregroundColor(Color(hex: "#9398A1")) + } + .padding(.leading, 128) + .padding(.trailing, 18) + .frame(maxWidth: .infinity, alignment: .leading) + } + } +} + +// MARK: - Upload (drop zone) + +struct UploadView: View { + @ObservedObject var state: AppState + @State private var dashPhase: CGFloat = 0 + @State private var breathAngle: Double = 0 + // Timer only runs while this is the active tab — killed on deactivation + @State private var animTimer: Timer? = nil + + private var borderOpacity: Double { + let breathe = 0.11 + 0.04 * (sin(breathAngle) * 0.5 + 0.5) + return state.fileDragOver ? 0.65 : breathe + } + + var body: some View { + ZStack { + RoundedRectangle(cornerRadius: 20) + .fill(Color(hex: "#0E0F11")) + RoundedRectangle(cornerRadius: 20) + .stroke( + state.fileDragOver + ? Color(hex: "#22C55E").opacity(borderOpacity) + : Color.white.opacity(borderOpacity), + style: StrokeStyle(lineWidth: 1.5, dash: [6, 5], dashPhase: dashPhase) + ) + RoundedRectangle(cornerRadius: 20) + .fill(RadialGradient( + colors: [Color(hex: "#22C55E").opacity(state.fileDragOver ? 0.13 : 0), Color.clear], + center: .bottom, startRadius: 0, endRadius: 200 + )) + VStack(alignment: .leading, spacing: 8) { + Text("Drop your files here") + .font(.system(size: 13, weight: .medium)) + .foregroundColor(state.fileDragOver ? Color(hex: "#34D399") : Color(hex: "#D5D7DB")) + HStack(spacing: 6) { + ForEach(["PDF", "Images", "Code", "Docs"], id: \.self) { label in + Text(label) + .font(.system(size: 11)) + .padding(.horizontal, 8).padding(.vertical, 3) + .background(Color.white.opacity(0.07)) + .foregroundColor(Color(hex: "#B9BDC4")) + .clipShape(Capsule()) + } + } + } + .padding(.leading, 196) + .frame(maxWidth: .infinity, alignment: .leading) + } + .onChange(of: state.view) { _, newView in + newView == .upload ? startTimer() : stopTimer() + } + .onAppear { + if state.view == .upload { startTimer() } + } + .onDisappear { stopTimer() } + } + + private func startTimer() { + guard animTimer == nil else { return } + // 20 fps — smooth enough for slow dash, 3× lighter than 60fps + animTimer = Timer.scheduledTimer(withTimeInterval: 1.0/20.0, repeats: true) { _ in + dashPhase += 1.0 // 20 pt/s march + breathAngle += 0.9 / 20.0 // advance sin phase at 0.9 rad/s + } + } + + private func stopTimer() { + animTimer?.invalidate() + animTimer = nil + } +} + +// MARK: - Uploading + +struct UploadingView: View { + @ObservedObject var state: AppState + + // Bar geometry in content coords (content has 10pt H padding each side). + // Island bar: left=36, right=562 (640-78), width=526. + // Content bar: left=26, width=526. + // barTop=58 → island y = content_start(42)+58 = 100; bot cy=103 (center = barTop+3). + private let barLeft: CGFloat = 26 + private let barWidth: CGFloat = 526 + private let barTop: CGFloat = 58 + + var body: some View { + // TimelineView fires at display refresh rate — progress derived from elapsed wall time, + // not from @Published uploadProgress (which only flips to 1.0 at completion). + TimelineView(.animation) { tl in + let elapsed: Double = { + guard let start = state.uploadStartTime else { return 0 } + return tl.date.timeIntervalSince(start) + }() + let t = min(1.0, max(0, elapsed / state.uploadDuration)) + let progress = CGFloat(t * (2 - t)) // ease-out quad + let fillWidth = max(0, barWidth * progress) + let isDone = state.uploadProgress >= 0.999 // only true after handle() sets it + + ZStack(alignment: .topLeading) { + // Background: dark base + RoundedRectangle(cornerRadius: 20) + .fill(Color(hex: "#141518")) + + // Permanent green radial wash — brighter at completion + RoundedRectangle(cornerRadius: 20) + .fill(RadialGradient( + colors: [Color(hex: "#34D399").opacity(isDone ? 0.28 : 0.14), Color.clear], + center: UnitPoint(x: 0.5, y: 1.4), + startRadius: 0, + endRadius: 260 + )) + + // Bar track + RoundedRectangle(cornerRadius: 3) + .fill(Color.white.opacity(0.09)) + .frame(width: barWidth, height: 6) + .offset(x: barLeft, y: barTop) + + // Bar fill + RoundedRectangle(cornerRadius: 3) + .fill(LinearGradient( + colors: [Color(hex: "#1FA87A"), Color(hex: "#34D399")], + startPoint: .leading, endPoint: .trailing + )) + .frame(width: fillWidth, height: 6) + .offset(x: barLeft, y: barTop) + + // Glow trail behind dot leading edge + if progress > 0.01 { + Ellipse() + .fill(Color(hex: "#6EE7B7").opacity(0.45)) + .frame(width: 28, height: 12) + .blur(radius: 5) + .offset(x: barLeft + fillWidth - 14, y: barTop - 3) + } + + // Text row — filename + % (above bar) + HStack(spacing: 0) { + if isDone { + Image(systemName: "checkmark.circle.fill") + .font(.system(size: 12)) + .foregroundColor(Color(hex: "#34D399")) + Text(" \(state.droppedFile?.name ?? "File")") + .font(.system(size: 12.5, weight: .semibold)) + .foregroundColor(Color(hex: "#34D399")) + .lineLimit(1).truncationMode(.middle) + } else { + Text("Uploading \(state.droppedFile?.name ?? "file")") + .font(.system(size: 12.5)) + .foregroundColor(Color(hex: "#A9ADB5")) + .lineLimit(1).truncationMode(.middle) + Spacer(minLength: 8) + Text("\(Int(progress * 100)) %") + .font(.system(size: 12.5, weight: .medium)) + .foregroundColor(Color(hex: "#A9ADB5")) + .monospacedDigit() + } + } + .frame(width: barWidth) + .offset(x: barLeft, y: barTop - 22) + + // Subtle top border (same as CardBackground) + RoundedRectangle(cornerRadius: 20) + .stroke(Color.white.opacity(0.035), lineWidth: 1) + } + } + } +} + +// MARK: - Choose + +struct ChooseView: View { + @ObservedObject var state: AppState + + var body: some View { + ZStack(alignment: .leading) { + CardBackground(wash: nil) + VStack(alignment: .leading, spacing: 8) { + let fileName = state.droppedFile?.name ?? "file" + (Text(fileName).font(.system(size: 14, weight: .semibold)) + Text(" is ready.").font(.system(size: 14, weight: .semibold))) + Text("What do you want to do with it?").font(.system(size: 12.5)).foregroundColor(Color(hex: "#9398A1")) + HStack(spacing: 8) { + PrimaryButton("Ask a question") { state.view = .prompt } + SecondaryButton("Send by email") { state.view = .mail } + } + } + .padding(.leading, 98) + .padding(.trailing, 18) + } + } +} + +// MARK: - Mail + +struct MailView: View { + @ObservedObject var state: AppState + @State private var to: String = "" + @State private var subject: String = "" + @State private var bodyText: String = "" + @State private var statusMsg: String = "" + @State private var isSending = false + + var body: some View { + ZStack(alignment: .leading) { + CardBackground(wash: nil) + VStack(alignment: .leading, spacing: 6) { + HStack(spacing: 6) { + Text("New email").font(.system(size: 12, weight: .semibold)) + if let name = state.droppedFile?.name { + Text("with").font(.system(size: 12)).foregroundColor(Color(hex: "#8E939C")) + Text(name).font(.system(size: 12)).foregroundColor(Color(hex: "#8E939C")) + .lineLimit(1).truncationMode(.middle) + } + } + + MailField(label: "To", placeholder: "address@example.com", text: $to) + MailField(label: "Subject", placeholder: state.droppedFile?.name ?? "Subject", text: $subject) + + // Body — TextEditor scrolls internally when text overflows + TextEditor(text: $bodyText) + .scrollContentBackground(.hidden) + .font(.system(size: 12.5)) + .foregroundColor(Color(hex: "#F5F6F8")) + .frame(height: 44) + .padding(.horizontal, 10) + .padding(.vertical, 6) + .background(Color.white.opacity(0.06)) + .clipShape(RoundedRectangle(cornerRadius: 10)) + + if !statusMsg.isEmpty { + Text(statusMsg).font(.system(size: 11)).foregroundColor(Color(hex: "#FF8D97")) + } + + HStack(spacing: 8) { + PrimaryButton(isSending ? "Sending…" : "Send") { + guard !isSending else { return } + sendMail() + } + SecondaryButton("Cancel") { state.view = .choose } + } + } + .padding(.leading, 92) + .padding(.trailing, 18) + .padding(.vertical, 8) + } + .onAppear { subject = state.droppedFile?.name ?? "" } + } + + private func sendMail() { + guard !to.isEmpty else { statusMsg = "Missing recipient."; return } + let subj = subject.isEmpty ? (state.droppedFile?.name ?? "File") : subject + + // Prefer Resend if API key + sender address are configured + let apiKey = KeychainStore.shared.get("resend-api-key") + let fromAddr = KeychainStore.shared.get("resend-from") + + if let apiKey, let fromAddr { + isSending = true + statusMsg = "" + let recipient = to + let msgBody = bodyText + let fileURL = state.droppedFile?.url + Task { + let ok = await sendViaResend(apiKey: apiKey, from: fromAddr, + to: recipient, subject: subj, + body: msgBody, fileURL: fileURL) + await MainActor.run { + isSending = false + if ok { onSuccess(recipient: recipient) } + else { statusMsg = "Resend error — check API key & sender." } + } + } + } else if apiKey != nil && fromAddr == nil { + // API key set but no sender — guide user instead of silent fallback + statusMsg = "Set sender address in Settings." + } else { + // No Resend — fallback to Mail + sendViaAppleMail(to: to, subject: subj) + } + } + + private func sendViaResend(apiKey: String, from: String, to: String, + subject: String, body: String, fileURL: URL?) async -> Bool { + guard let url = URL(string: "https://api.resend.com/emails") else { return false } + var request = URLRequest(url: url) + request.httpMethod = "POST" + request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization") + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + + var payload: [String: Any] = [ + "from": from, + "to": [to], + "subject": subject, + "text": body.isEmpty ? " " : body + ] + if let fileURL, let data = try? Data(contentsOf: fileURL) { + payload["attachments"] = [[ + "filename": fileURL.lastPathComponent, + "content": data.base64EncodedString() + ]] + } + guard let httpBody = try? JSONSerialization.data(withJSONObject: payload) else { return false } + request.httpBody = httpBody + guard let (_, response) = try? await URLSession.shared.data(for: request) else { return false } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + if code == 200 || code == 201 { return true } + print("[Resend] HTTP \(code)") + return false + } + + private func sendViaAppleMail(to: String, subject: String) { + #if APPSTORE + // App Store: no AppleScript — use NSSharingService to compose (user sends manually) + guard let service = NSSharingService(named: .composeEmail) else { + statusMsg = "Mail not available." + return + } + var items: [Any] = [bodyText.isEmpty ? " " : bodyText] + if let url = state.droppedFile?.url, + FileManager.default.fileExists(atPath: url.path) { + items.append(url) + } + service.recipients = [to] + service.subject = subject + service.perform(withItems: items) + onSuccess(recipient: to) + #else + func asEscape(_ s: String) -> String { + s.replacingOccurrences(of: "\\", with: "\\\\") + .replacingOccurrences(of: "\"", with: "\\\"") + } + + let bodyLines = bodyText.isEmpty ? [""] : bodyText.components(separatedBy: "\n") + let bodyExpr = bodyLines.map { "\"\(asEscape($0))\"" }.joined(separator: " & linefeed & ") + + " & return & return" + + let attachBlock: String + if let url = state.droppedFile?.url, + FileManager.default.fileExists(atPath: url.path) { + let escapedPath = asEscape(url.path) + attachBlock = "make new attachment with properties {file name:(POSIX file \"\(escapedPath)\")} at after the last paragraph of content" + } else { + attachBlock = "" + } + + let script = """ + tell application "Mail" + set m to make new outgoing message with properties {subject:"\(asEscape(subject))", visible:false} + set content of m to \(bodyExpr) + tell m + make new to recipient at end of to recipients with properties {address:"\(asEscape(to))"} + \(attachBlock) + end tell + delay 1 + send m + end tell + """ + var err: NSDictionary? + NSAppleScript(source: script)?.executeAndReturnError(&err) + if err == nil { onSuccess(recipient: to) } + else { statusMsg = "Mail error: \(err?["NSAppleScriptErrorMessage"] as? String ?? "unknown")" } + #endif + } + + private func onSuccess(recipient: String) { + SoundEngine.shared.play("send") + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.wink) + state.noteMessage = "Email sent to \(recipient)." + state.view = .note + DispatchQueue.main.asyncAfter(deadline: .now() + 2) { + NotificationCenter.default.post(name: .islandCollapse, object: nil) + } + } +} + +// MARK: - Prompt (chat) + +struct PromptView: View { + @ObservedObject var state: AppState + @State private var text: String = "" + @FocusState private var focused: Bool + @State private var showModelPicker = false + + var body: some View { + ZStack(alignment: .leading) { + CardBackground(wash: .indigo) + + VStack(alignment: .leading, spacing: 6) { + if let ctx = state.promptContext { + ContextChip(context: ctx).padding(.top, 4) + } + + if !state.chatHistory.isEmpty { + ScrollViewReader { proxy in + ScrollView(.vertical, showsIndicators: false) { + VStack(alignment: .leading, spacing: 6) { + ForEach(state.chatHistory) { msg in + ChatBubble(message: msg).id(msg.id) + } + if state.stateOverride != nil { + HStack { TypingDotsView(); Spacer(minLength: 32) } + .id("typing") + } + } + .padding(.vertical, 2) + } + .onChange(of: state.chatHistory) { _, _ in + if let last = state.chatHistory.last(where: { !$0.content.isEmpty }) { + proxy.scrollTo(last.id, anchor: .bottom) + } + } + .onChange(of: state.stateOverride) { _, v in + if v != nil { + withAnimation { proxy.scrollTo("typing", anchor: .bottom) } + } else if let last = state.chatHistory.last(where: { !$0.content.isEmpty }) { + withAnimation { proxy.scrollTo(last.id, anchor: .bottom) } + } + } + .onAppear { + if let last = state.chatHistory.last { + proxy.scrollTo(last.id, anchor: .bottom) + } + } + } + .frame(maxHeight: .infinity) + } else { + Spacer() + } + + HStack(spacing: 0) { + Spacer() + Button { + withAnimation(.spring(response: 0.3, dampingFraction: 0.75)) { + showModelPicker.toggle() + } + } label: { + HStack(spacing: 5) { + Circle() + .fill(Color(hex: state.chatProvider.accentHex)) + .frame(width: 6, height: 6) + Text(state.activeChatModel) + .font(.system(size: 10.5, weight: .medium)) + .foregroundColor(Color(hex: "#7B8089")) + Image(systemName: "chevron.up.chevron.down") + .font(.system(size: 8)) + .foregroundColor(Color(hex: "#5C6370")) + } + .padding(.horizontal, 8) + .padding(.vertical, 4) + .background(Color.white.opacity(0.06)) + .clipShape(Capsule()) + } + .buttonStyle(.plain) + .popover(isPresented: $showModelPicker, arrowEdge: .bottom) { + ModelPickerView(state: state, isPresented: $showModelPicker) + .frame(width: 300) + } + } + .padding(.horizontal, 10) + + HStack(spacing: 8) { + TextField(state.chatHistory.isEmpty ? "Ask me anything…" : "Continue…", text: $text) + .textFieldStyle(.plain) + .font(.system(size: 13)) + .focused($focused) + .onSubmit { sendMessage() } + + Button(action: sendMessage) { + Image(systemName: "arrow.up") + .font(.system(size: 11, weight: .semibold)) + .foregroundColor(Color(hex: "#0B0C0E")) + } + .buttonStyle(SendButtonStyle()) + .disabled(text.isEmpty) + } + .padding(.horizontal, 10).padding(.vertical, 6) + .background(Color.white.opacity(0.07)) + .clipShape(RoundedRectangle(cornerRadius: 12)) + .simultaneousGesture(TapGesture().onEnded { focused = true }) + } + .padding(.leading, 84) + .padding(.trailing, 16) + .padding(.top, 12) + .padding(.bottom, 14) + } + .padding(.bottom, 10) + .onAppear { focused = true } + .onChange(of: state.view) { _, view in + if view == .prompt { + state.fetchModelsIfNeeded(for: state.chatProvider) + } + } + .onChange(of: state.chatProvider) { _, provider in + if state.view == .prompt { + state.fetchModelsIfNeeded(for: provider) + } + } + .onReceive(NotificationCenter.default.publisher(for: .islandSendMessage)) { _ in + guard state.view == .prompt else { return } + sendMessage() + } + .onReceive(NotificationCenter.default.publisher(for: .islandNewConversation)) { _ in + guard state.view == .prompt else { return } + text = "" + state.chatHistory = [] + ClaudeService.shared.clearConversation() + focused = true + } + } + + private func sendMessage() { + let query = text.trimmingCharacters(in: .whitespacesAndNewlines) + guard !query.isEmpty else { return } + text = "" + focused = false + state.chatHistory.append(ChatMessage(role: .user, content: query)) + state.stateOverride = .thinking + Task { + await ClaudeService.shared.chat(query: query, context: state.promptContext, state: state) + await MainActor.run { focused = true } + } + } +} + + +// MARK: - Model / provider picker + +/// Wrapping horizontal flow layout — used by ModelPickerView and QuestionView. +struct ChipFlowLayout: Layout { + var spacing: CGFloat = 6 + func sizeThatFits(proposal: ProposedViewSize, subviews: Subviews, cache: inout Void) -> CGSize { + let r = rows(maxW: proposal.replacingUnspecifiedDimensions().width, subviews: subviews) + return r.size + } + func placeSubviews(in bounds: CGRect, proposal: ProposedViewSize, subviews: Subviews, cache: inout Void) { + let r = rows(maxW: bounds.width, subviews: subviews) + for (idx, pt) in r.placements.enumerated() { + subviews[idx].place(at: CGPoint(x: bounds.minX + pt.x, y: bounds.minY + pt.y), proposal: .unspecified) + } + } + private func rows(maxW: CGFloat, subviews: Subviews) -> (size: CGSize, placements: [(x: CGFloat, y: CGFloat)]) { + var x: CGFloat = 0, y: CGFloat = 0, lineH: CGFloat = 0, maxX: CGFloat = 0 + var pts: [(x: CGFloat, y: CGFloat)] = [] + for sv in subviews { + let sz = sv.sizeThatFits(.unspecified) + if x + sz.width > maxW, x > 0 { x = 0; y += lineH + spacing; lineH = 0 } + pts.append((x: x, y: y)) + x += sz.width + spacing + lineH = max(lineH, sz.height) + maxX = max(maxX, x - spacing) + } + return (CGSize(width: max(maxX, 0), height: y + lineH), pts) + } +} + +struct ModelPickerView: View { + @ObservedObject var state: AppState + @Binding var isPresented: Bool + + var body: some View { + VStack(alignment: .leading, spacing: 12) { + // Provider chips — wrap; hide local providers when not connected and not already active + let visibleProviders = ChatProvider.allCases.filter { p in + if p == .ollama { return !AppState.shared.ollamaServerURL.isEmpty || state.chatProvider == .ollama } + if p == .lmstudio { return !AppState.shared.lmstudioServerURL.isEmpty || state.chatProvider == .lmstudio } + return true + } + ChipFlowLayout(spacing: 6) { + ForEach(visibleProviders, id: \.self) { provider in + Button { + guard provider != state.chatProvider else { return } + withAnimation(.spring(response: 0.25, dampingFraction: 0.7)) { + state.chatProvider = provider + } + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.surprised) + SoundEngine.shared.play("pop") + } label: { + HStack(spacing: 5) { + Circle() + .fill(Color(hex: provider.accentHex)) + .frame(width: 7, height: 7) + Text(provider.displayName) + .font(.system(size: 12, weight: state.chatProvider == provider ? .semibold : .regular)) + } + .padding(.horizontal, 10) + .padding(.vertical, 6) + .background(state.chatProvider == provider + ? Color(hex: provider.accentHex).opacity(0.18) + : Color.white.opacity(0.06)) + .overlay(Capsule().stroke( + state.chatProvider == provider + ? Color(hex: provider.accentHex).opacity(0.5) + : Color.white.opacity(0.1), + lineWidth: 1)) + .clipShape(Capsule()) + } + .buttonStyle(.plain) + } + } + + Divider().opacity(0.2) + + // Model list for current provider — fetched dynamically + modelListView + .frame(height: 260, alignment: .top) + } + .padding(14) + .background(Color(hex: "#16171B")) + .onAppear { + // Force-refresh local providers every time the picker opens + if state.chatProvider.isLocal { + state.fetchedProviderModels[state.chatProvider] = nil + state.providerModelFetchError[state.chatProvider] = nil + } + state.fetchModelsIfNeeded(for: state.chatProvider) + } + .onChange(of: state.chatProvider) { _, provider in + if provider.isLocal { + state.fetchedProviderModels[provider] = nil + state.providerModelFetchError[provider] = nil + } + state.fetchModelsIfNeeded(for: provider) + } + } + + @ViewBuilder + private var modelListView: some View { + if state.loadingProviderModels.contains(state.chatProvider) { + HStack(spacing: 8) { + ProgressView().scaleEffect(0.7) + Text("Loading models…") + .font(.system(size: 12)) + .foregroundColor(Color(hex: "#8A8F98")) + } + .frame(maxWidth: .infinity, alignment: .leading) + .padding(.vertical, 4) + } else if let error = state.providerModelFetchError[state.chatProvider] { + Text(error) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8A8F98")) + .padding(.vertical, 4) + } else if let models = state.fetchedProviderModels[state.chatProvider] { + ScrollView { + VStack(alignment: .leading, spacing: 2) { + ForEach(models, id: \.id) { model in + Button { + switch state.chatProvider { + case .anthropic: state.claudeModel = model.id + case .google: state.googleChatModel = model.id + case .openai: state.openAIChatModel = model.id + case .ollama: state.ollamaChatModel = model.id + case .lmstudio: state.lmstudioChatModel = model.id + } + isPresented = false + SoundEngine.shared.play("blip") + } label: { + HStack { + Text(model.label) + .font(.system(size: 12)) + .foregroundColor(state.activeChatModel == model.id + ? Color(hex: state.chatProvider.accentHex) + : Color(hex: "#C8CDD4")) + Spacer() + if state.activeChatModel == model.id { + Image(systemName: "checkmark") + .font(.system(size: 10, weight: .semibold)) + .foregroundColor(Color(hex: state.chatProvider.accentHex)) + } + } + .padding(.horizontal, 8) + .padding(.vertical, 6) + .background(state.activeChatModel == model.id + ? Color(hex: state.chatProvider.accentHex).opacity(0.1) + : Color.clear) + .clipShape(RoundedRectangle(cornerRadius: 6)) + } + .buttonStyle(.plain) + } + } + } + } + } +} + +struct ChatBubble: View { + let message: ChatMessage + + var body: some View { + if !message.content.isEmpty { + HStack(alignment: .top) { + if message.role == .user { + Spacer(minLength: 32) + Text(message.content) + .font(.system(size: 12.5)) + .foregroundColor(Color(hex: "#F1F2F4")) + .fixedSize(horizontal: false, vertical: true) + .textSelection(.enabled) + .padding(.horizontal, 10).padding(.vertical, 6) + .background(Color.white.opacity(0.13)) + .clipShape(RoundedRectangle(cornerRadius: 12)) + } else { + ChatMarkdownView(markdown: message.content) + Spacer(minLength: 8) + } + } + } + } +} + +struct TypingDotsView: View { + @State private var phase = false + + var body: some View { + HStack(spacing: 4) { + ForEach(0..<3, id: \.self) { i in + Circle() + .fill(Color(hex: "#6B7079")) + .frame(width: 5, height: 5) + .scaleEffect(phase ? 1.2 : 0.6) + .animation( + .easeInOut(duration: 0.45).repeatForever().delay(Double(i) * 0.14), + value: phase + ) + } + } + .padding(.horizontal, 2).padding(.vertical, 4) + .onAppear { phase = true } + } +} + +// MARK: - Searching + +struct SearchingView: View { + @ObservedObject var state: AppState + + var label: String { + switch state.promptContext { + case .window(_, let title, _): return "Claude is reading \(title)…" + case .file(let name, _): return "Claude is reading \(name)…" + case nil: return "Claude is searching…" + } + } + + var body: some View { + ZStack(alignment: .leading) { + CardBackground(wash: .indigo) + + VStack(alignment: .leading, spacing: 8) { + if let ctx = state.promptContext { + ContextChip(context: ctx) + } + ShimmeringText(label) + .font(.system(size: 13.5)) + } + .padding(.leading, 84) + .padding(.trailing, 16) + } + } +} + +// MARK: - Result + +struct ResultView: View { + @ObservedObject var state: AppState + + var body: some View { + ZStack(alignment: .leading) { + CardBackground(wash: .green) + + if let result = state.searchResult { + VStack(alignment: .leading, spacing: 7) { + Text(result.title) + .font(.system(size: 15, weight: .semibold)) + + VStack(spacing: 4) { + ForEach(result.items.prefix(3), id: \.label) { item in + HStack { + Text(item.label).font(.system(size: 12.5, weight: .semibold)) + Spacer() + Text(item.detail).font(.system(size: 12.5)).foregroundColor(Color(hex: "#9398A1")) + } + .padding(.horizontal, 10).padding(.vertical, 6) + .background(Color.white.opacity(0.05)) + .clipShape(RoundedRectangle(cornerRadius: 10)) + } + } + + if let note = result.note { + Text(note).font(.system(size: 11)).foregroundColor(Color(hex: "#6E737C")) + } + + HStack(spacing: 8) { + // The URL comes from the model, which may have read attacker-controlled + // files or pages: only plain web links may leave the app. + let openURL = safeWebURL(result.items.first?.url) + PrimaryButton("Open") { + if let openURL { NSWorkspace.shared.open(openURL) } + } + .disabled(openURL == nil) + .help(openURL?.absoluteString ?? "") + SecondaryButton("Copy") { + let text = result.items.map { "\($0.label): \($0.detail)" }.joined(separator: "\n") + NSPasteboard.general.clearContents() + NSPasteboard.general.setString(text, forType: .string) + } + SecondaryButton("Close") { state.view = state.tasks.isEmpty ? .empty : .overview } + } + } + .padding(.leading, 84) + .padding(.trailing, 16) + } + } + } +} + +// MARK: - Note (short message, auto-closes) + +struct NoteView: View { + @ObservedObject var state: AppState + + var body: some View { + ZStack(alignment: .leading) { + CardBackground(wash: nil) + VStack(alignment: .leading, spacing: 4) { + Text(state.noteMessage ?? "") + .font(.system(size: 15, weight: .semibold)) + } + .padding(.leading, 98) + } + } +} + +// MARK: - Integration card (overview left card when an integration pill is focused) + +struct IntegrationCardView: View { + let task: AgentTask + @Binding var showingDetail: Bool + var onDiffTap: ((Int) -> Void)? = nil + @ObservedObject private var appState = AppState.shared + @State private var githubDetailSection: GitHubDetailSection = .myPRs + + private var isConfigured: Bool { + switch task.id { + case "integration_claude": + #if APPSTORE + // Sandboxed: can't read ~/.claude directly — check install flag set by HookServer + return UserDefaults.standard.bool(forKey: "coucouHooksInstalled") + #else + let url = FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent(".claude/settings.json") + guard let data = try? Data(contentsOf: url), + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let hooks = json["hooks"] as? [String: Any], + let ss = hooks["SessionStart"] as? [[String: Any]] else { return false } + return ss.contains { ($0["hooks"] as? [[String: Any]])?.contains { + let cmd = $0["command"] as? String + return cmd?.contains("NotchBuddy") == true || cmd?.contains("coucou") == true + } ?? false } + #endif + case "agent_gemini": + #if !APPSTORE + return HookServer.geminiHooksInstalled() + #else + return false + #endif + case "agent_antigravity": + #if !APPSTORE + return HookServer.agyHooksInstalled() + #else + return false + #endif + case "agent_cursor", "agent_codex": + return false // coming soon + case "integration_music": + #if !APPSTORE + return true // Apple Music is always installed on macOS + #else + return false + #endif + case "ai_anthropic": return KeychainStore.shared.get("anthropic-api-key") != nil + case "ai_google": return KeychainStore.shared.get("google-api-key") != nil + case "ai_openai": return KeychainStore.shared.get("openai-api-key") != nil + case "ai_ollama": return !AppState.shared.ollamaServerURL.isEmpty + case "ai_lmstudio": return !AppState.shared.lmstudioServerURL.isEmpty + case "integration_resend": return KeychainStore.shared.get("resend-api-key") != nil + case "integration_n8n": return KeychainStore.shared.get("n8n-api-key") != nil + case "integration_vercel": return KeychainStore.shared.get("vercel-token") != nil + case "integration_github": return KeychainStore.shared.get("github-token") != nil + case "integration_stripe": return KeychainStore.shared.get("stripe-api-key") != nil + case "integration_notion": return KeychainStore.shared.get("notion-api-key") != nil + case "integration_calcom": return KeychainStore.shared.get("calcom-api-key") != nil + default: return false + } + } + + private var openURL: URL? { + switch task.id { + case "integration_claude": return nil // uses terminal button below + case "integration_resend": return URL(string: "https://resend.com/emails") + case "integration_n8n": + if let s = KeychainStore.shared.get("n8n-url") { return URL(string: s) } + return nil + case "integration_vercel": return URL(string: "https://vercel.com/dashboard") + case "integration_github": return URL(string: "https://github.com") + case "integration_stripe": return URL(string: "https://dashboard.stripe.com/payments") + case "integration_notion": return URL(string: "https://notion.so") + case "integration_calcom": return URL(string: "https://app.cal.com/bookings") + default: return nil + } + } + + // Workspace/agent pill with active session: show ticker layout + private var agentSessionActive: Bool { + guard let def = PillCatalog.definition(for: task.id) else { return false } + guard def.category == .workspace || def.category == .agent else { return false } + return task.state != .idle || !task.steps.isEmpty + } + + // n8n with a finished execution: show result row instead of "Open n8n" button + private var n8nHasActivity: Bool { + task.id == "integration_n8n" && !task.steps.isEmpty && + (task.state == .finished || task.state == .error) + } + + // Vercel with recent deployments + private var vercelHasActivity: Bool { + task.id == "integration_vercel" && !appState.vercelDeployments.isEmpty + } + + // Resend with recent emails + private var resendHasData: Bool { + task.id == "integration_resend" && !appState.resendEmails.isEmpty + } + + // GitHub with stats or pulse loaded + private var githubHasData: Bool { + task.id == "integration_github" && (appState.githubPulse != nil || appState.githubStats != nil) + } + + // GitHub with pulse loaded (richer card) + private var githubHasPulse: Bool { + task.id == "integration_github" && appState.githubPulse != nil + } + + // Stripe: show card as soon as first poll completes (balance OR payments) + private var stripeHasData: Bool { + task.id == "integration_stripe" && appState.stripeLoaded + } + + // Cal.com: show calendar as soon as first poll completes + private var calcomHasData: Bool { + task.id == "integration_calcom" && appState.calcomLoaded + } + + // Notion: show pages as soon as first poll completes + private var notionHasData: Bool { + task.id == "integration_notion" && appState.notionLoaded + } + + // Apple Music: show card when a track is loaded (playing or paused) or automation is denied + private var musicIsActive: Bool { + #if !APPSTORE + guard task.id == "integration_music" else { return false } + if appState.musicAutomationDenied { return true } + return MusicController.shared.trackTitle != nil + #else + return false + #endif + } + + private var statusDot: Color { + #if !APPSTORE + if task.id == "integration_music" { + if appState.musicAutomationDenied { return Color(hex: "#F4505E") } + return appState.musicPlaying ? Color(hex: "#FA2D48") : Color(hex: "#22C55E") + } + #endif + if PillCatalog.definition(for: task.id)?.comingSoon == true { return Color(hex: "#6B7079") } + let svcErr = task.id == "integration_stripe" ? appState.stripeError + : task.id == "integration_calcom" ? appState.calcomError + : nil + if svcErr != nil { return Color(hex: "#F4505E") } + return isConfigured ? Color(hex: "#22C55E") : Color(hex: "#F4505E") + } + + private var statusLabel: String { + #if !APPSTORE + if task.id == "integration_music" { + if appState.musicAutomationDenied { return "Automation not allowed" } + if appState.musicPlaying { return "Playing · \(MusicController.shared.trackTitle ?? "Unknown")" } + return "Not playing" + } + #endif + if PillCatalog.definition(for: task.id)?.comingSoon == true { return "Coming soon" } + let svcErr = task.id == "integration_stripe" ? appState.stripeError + : task.id == "integration_calcom" ? appState.calcomError + : nil + if let err = svcErr { return err } + let isHooks = task.id == "agent_gemini" || task.id == "agent_antigravity" + let isAI = ChatProvider(pillID: task.id) != nil + if isConfigured { + if isHooks { return "Hooks installed" } + if isAI { + let provider = ChatProvider(pillID: task.id)! + if provider.isLocal { + let model = provider == .ollama ? appState.ollamaChatModel : appState.lmstudioChatModel + return "Connected · \(model)" + } + let model: String + switch task.id { + case "ai_anthropic": model = appState.claudeModel + case "ai_google": model = appState.googleChatModel + case "ai_openai": model = appState.openAIChatModel + default: model = "" + } + return "Key configured · \(model)" + } + return "Connected · loading…" + } else { + if isHooks { return "Hooks not installed" } + if isAI { + let provider = ChatProvider(pillID: task.id)! + return provider.isLocal ? "Not connected" : "Key not configured" + } + return "Key not configured" + } + } + + var body: some View { + if showingDetail && n8nHasActivity { + N8nDetailView(task: task) { + withAnimation(.spring(response: 0.28, dampingFraction: 0.82)) { showingDetail = false } + } + .transition(.opacity) + } else if showingDetail && vercelHasActivity { + VercelDetailView(deployment: appState.vercelDeployments[0]) { + withAnimation(.spring(response: 0.28, dampingFraction: 0.82)) { showingDetail = false } + } + .transition(.opacity) + } else if vercelHasActivity { + VercelDeploymentListView(deployments: appState.vercelDeployments, onOpenDetail: { + withAnimation(.spring(response: 0.28, dampingFraction: 0.82)) { showingDetail = true } + }) + .transition(.opacity) + } else if resendHasData { + ResendCardView(emails: appState.resendEmails, total: appState.resendTotal) + .transition(.opacity) + } else if showingDetail && githubHasPulse { + GitHubDetailView( + section: githubDetailSection, + pulse: appState.githubPulse!, + activity: appState.githubActivity, + stats: appState.githubStats, + onBack: { + withAnimation(.spring(response: 0.28, dampingFraction: 0.82)) { showingDetail = false } + } + ) + .transition(.opacity) + } else if githubHasPulse { + GitHubPulseCardView( + pulse: appState.githubPulse!, + stats: appState.githubStats, + activity: appState.githubActivity, + onTapSection: { section in + githubDetailSection = section + withAnimation(.spring(response: 0.28, dampingFraction: 0.82)) { showingDetail = true } + } + ) + .transition(.opacity) + } else if githubHasData { + GitHubStatsCardView(stats: appState.githubStats!) + .transition(.opacity) + } else if stripeHasData { + StripeCardView() + .transition(.opacity) + } else if calcomHasData { + CalcomCardView() + .transition(.opacity) + } else if notionHasData { + NotionCardView() + .transition(.opacity) + } else if musicIsActive { + #if !APPSTORE + MusicCardView() + .transition(.opacity) + #endif + } else if agentSessionActive { + // Active session view — reuse overview layout + VStack(alignment: .leading, spacing: 0) { + HStack(spacing: 6) { + Circle() + .fill(Color(hex: task.color)) + .frame(width: 7, height: 7) + Text(task.name) + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + .lineLimit(1).truncationMode(.tail) + .layoutPriority(1) + Text(PillCatalog.definition(for: task.id)?.sessionSubtitle ?? "Agent") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + .lineLimit(1).truncationMode(.tail) + Spacer(minLength: 2) + if task.steps.count > 1 { + Text("\(min(task.stepIndex + 1, task.steps.count))/\(task.steps.count)") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#6B7079")) + .fixedSize() + } + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 36) + + TickerView(task: task, onDiffTap: onDiffTap) + .frame(height: 44) + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 12) + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + } else { + // Idle / not connected view — slides in from left when returning from detail + VStack(alignment: .leading, spacing: 6) { + HStack(spacing: 6) { + Circle() + .fill(Color(hex: task.color)) + .frame(width: 7, height: 7) + Text(PillCatalog.definition(for: task.id)?.name ?? task.name) + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + Text(PillCatalog.definition(for: task.id)?.subtitle ?? "Integration") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + Spacer(minLength: 2) + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 36) + + HStack(spacing: 5) { + Circle().fill(statusDot).frame(width: 5, height: 5) + Text(statusLabel) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#6B7079")) + } + .padding(.leading, 108) + .padding(.top, 2) + + HStack(spacing: 8) { + if task.id == "integration_claude" { + Button("Open Visual Studio Code") { openVSCode() } + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: task.color).opacity(0.7)) + .buttonStyle(.plain) + } else if task.id == "agent_cursor" { + #if !APPSTORE + if let url = NSWorkspace.shared.urlForApplication( + withBundleIdentifier: "com.todesktop.230313mzl4w4u92") { + Button("Open Cursor") { + NSWorkspace.shared.openApplication(at: url, configuration: .init(), + completionHandler: nil) + } + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: task.color).opacity(0.85)) + .buttonStyle(.plain) + } + #endif + } else if task.id == "agent_codex" { + #if !APPSTORE + if let url = NSWorkspace.shared.urlForApplication( + withBundleIdentifier: "com.openai.codex") { + Button("Open Codex") { + NSWorkspace.shared.openApplication(at: url, configuration: .init(), + completionHandler: nil) + } + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: task.color).opacity(0.85)) + .buttonStyle(.plain) + } + #endif + } else if let provider = ChatProvider(pillID: task.id) { + if isConfigured { + Button("Chat with \(task.name)") { + switchChatProvider(provider) + } + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: task.color).opacity(0.85)) + .buttonStyle(.plain) + } + } else if task.id == "integration_music" { + #if !APPSTORE + Button("Open Music") { MusicController.shared.openMusic() } + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: task.color).opacity(0.85)) + .buttonStyle(.plain) + if appState.musicAutomationDenied { + Button("Open Settings…") { MusicController.shared.openAutomationSettings() } + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + .buttonStyle(.plain) + } + #endif + } else if n8nHasActivity { + // Clickable pill — tap to open execution detail + let success = task.state == .finished + let accent = success ? Color(hex: "#22C55E") : Color(hex: "#F4505E") + Button(action: { + withAnimation(.spring(response: 0.28, dampingFraction: 0.82)) { showingDetail = true } + }) { + HStack(spacing: 5) { + Circle().fill(accent).frame(width: 5, height: 5) + Text(task.steps.first ?? "Workflow") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#C5C8CD")) + .lineLimit(1).truncationMode(.tail) + Image(systemName: "ellipsis") + .font(.system(size: 8, weight: .medium)) + .foregroundColor(Color(hex: "#6B7079")) + } + .padding(.horizontal, 8).padding(.vertical, 3) + .background(accent.opacity(0.1)) + .clipShape(Capsule()) + .overlay(Capsule().stroke(accent.opacity(0.22), lineWidth: 1)) + } + .buttonStyle(.plain) + } else if let url = openURL { + Button("Open \(task.name)") { NSWorkspace.shared.open(url) } + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: task.color).opacity(0.85)) + .buttonStyle(.plain) + } + if task.id == "integration_stripe" && isConfigured { + Button("Refresh") { Task { @MainActor in StripePoller.shared.pollNow() } } + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: "#0570DE").opacity(0.85)) + .buttonStyle(.plain) + } + if task.id == "integration_calcom" && isConfigured { + Button("Refresh") { Task { @MainActor in CalcomPoller.shared.pollNow() } } + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: "#C9956A").opacity(0.85)) + .buttonStyle(.plain) + } + // Settings button: shown when not configured, except cursor/codex and music + if !isConfigured + && task.id != "agent_cursor" + && task.id != "agent_codex" + && task.id != "integration_music" { + Button("Settings…") { + let section: String + switch PillCatalog.definition(for: task.id)?.category { + case .workspace, .agent: section = "agents" + case .ai: section = "chat" + default: section = "integrations" + } + NotificationCenter.default.post(name: .openFullSettings, object: section) + } + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + .buttonStyle(.plain) + } + } + .padding(.leading, 108) + .padding(.top, 2) + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + .transition(.opacity) + } + } + + private func openVSCode() { + let ids = ["com.microsoft.VSCode", "com.microsoft.VSCodeInsiders", "com.vscodium.codium"] + let appURL = ids.compactMap { NSWorkspace.shared.urlForApplication(withBundleIdentifier: $0) }.first + + // If we have a project folder, open it directly in VS Code + if let cwd = task.sessionCwd, !cwd.isEmpty, let appURL = appURL { + NSWorkspace.shared.open( + [URL(fileURLWithPath: cwd)], + withApplicationAt: appURL, + configuration: .init(), + completionHandler: nil + ) + return + } + + // No cwd: activate running instance or launch fresh + if let running = ids.compactMap({ id in + NSWorkspace.shared.runningApplications.first { $0.bundleIdentifier == id } + }).first { + running.activate(options: .activateIgnoringOtherApps) + return + } + if let appURL = appURL { + NSWorkspace.shared.openApplication(at: appURL, configuration: .init(), completionHandler: nil) + } + } + +} + +// MARK: - Vercel Deployment List View + +struct VercelDeploymentListView: View { + let deployments: [VercelDeployment] + let onOpenDetail: () -> Void + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(spacing: 6) { + Circle() + .fill(Color(hex: "#7C5CFF")) + .frame(width: 7, height: 7) + Text("Vercel") + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + Text("Deployments") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 36) + + // Deployment rows + VStack(alignment: .leading, spacing: 3) { + // First deployment — highlighted, with detail button + if let first = deployments.first { + let accent = Color(hex: first.isSuccess ? "#22C55E" : "#F4505E") + HStack(spacing: 5) { + Circle().fill(accent).frame(width: 5, height: 5) + Text(first.projectName) + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: "#C5C8CD")) + .lineLimit(1).truncationMode(.tail) + .layoutPriority(1) + Text(first.timeAgo) + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + Button(action: onOpenDetail) { + Image(systemName: "ellipsis") + .font(.system(size: 8, weight: .medium)) + .foregroundColor(Color(hex: "#6B7079")) + .frame(width: 18, height: 18) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + } + .padding(.horizontal, 8).padding(.vertical, 3) + .frame(maxWidth: .infinity, alignment: .leading) + .background(accent.opacity(0.08)) + .clipShape(RoundedRectangle(cornerRadius: 5)) + } + + // Remaining deployments — plain rows, identical structure → perfect alignment + ForEach(Array(deployments.dropFirst().prefix(2))) { dep in + let accent = Color(hex: dep.isSuccess ? "#22C55E" : "#F4505E") + HStack(spacing: 5) { + Circle().fill(accent).frame(width: 5, height: 5) + Text(dep.projectName) + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: "#9398A1")) + .lineLimit(1).truncationMode(.tail) + .layoutPriority(1) + Text(dep.timeAgo) + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + } + .padding(.horizontal, 8).padding(.vertical, 3) + .frame(maxWidth: .infinity, alignment: .leading) + } + } + .padding(.top, 5) + .padding(.leading, 108) + .padding(.trailing, 12) + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + } +} + +// MARK: - Vercel Deployment Detail View + +struct VercelDetailView: View { + let deployment: VercelDeployment + let onClose: () -> Void + + private var accent: Color { Color(hex: deployment.isSuccess ? "#22C55E" : "#F4505E") } + + var body: some View { + VStack(alignment: .leading, spacing: 8) { + // Header + HStack(spacing: 7) { + Button(action: onClose) { + Image(systemName: "chevron.left") + .font(.system(size: 10, weight: .semibold)) + .foregroundColor(Color(hex: "#6B7079")) + .frame(width: 28, height: 28) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + + Circle().fill(accent).frame(width: 6, height: 6) + Text(deployment.projectName) + .font(.system(size: 11, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + .lineLimit(1).truncationMode(.middle) + .layoutPriority(1) + Spacer(minLength: 2) + Text(deployment.statusLabel) + .font(.system(size: 10, weight: .medium)) + .foregroundColor(accent) + .padding(.horizontal, 6).padding(.vertical, 2) + .background(accent.opacity(0.14)) + .clipShape(Capsule()) + } + + // Details + VStack(alignment: .leading, spacing: 4) { + if let commit = deployment.commitMessage { + Text(commit) + .font(.system(size: 10.5)) + .foregroundColor(Color(hex: "#C5C8CD")) + .lineLimit(2) + } + HStack(spacing: 8) { + if let branch = deployment.branch { + Label(branch, systemImage: "arrow.branch") + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + } + Text(deployment.timeAgo + " ago") + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + } + Button(action: { + if let url = URL(string: "https://\(deployment.url)") { + NSWorkspace.shared.open(url) + } + }) { + Text(deployment.url) + .font(.system(size: 10, design: .monospaced)) + .foregroundColor(Color(hex: "#7C5CFF").opacity(0.85)) + .lineLimit(1).truncationMode(.middle) + } + .buttonStyle(.plain) + } + } + .padding(.top, 8) + .padding(.leading, 108) + .padding(.trailing, 12) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) + .contentShape(Rectangle()) + } +} + +// MARK: - Resend Card View + +struct ResendPulseDot: View { + @State private var on = false + var body: some View { + Circle() + .fill(Color(hex: "#22C55E")) + .frame(width: 4, height: 4) + .opacity(on ? 1 : 0.2) + .onAppear { + withAnimation(.easeInOut(duration: 0.9).repeatForever(autoreverses: true)) { on = true } + } + } +} + +struct ResendCardView: View { + let emails: [ResendEmail] + let total: Int? + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(spacing: 6) { + Circle() + .fill(Color(hex: "#22C55E")) + .frame(width: 7, height: 7) + Text("Resend") + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + Text("Emails") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + if let total { + ResendPulseDot() + Text("\(total)") + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: "#C5C8CD")) + .monospacedDigit() + } + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 36) + + // Email rows — first is highlighted, rest plain (same structure as Vercel list) + VStack(alignment: .leading, spacing: 3) { + if let first = emails.first { + let accent = Color(hex: first.isDelivered ? "#22C55E" : "#F4505E") + HStack(spacing: 5) { + Circle().fill(accent).frame(width: 5, height: 5) + Text(first.recipientShort) + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: "#C5C8CD")) + .lineLimit(1).truncationMode(.tail) + .layoutPriority(1) + Text(first.timeAgo) + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + if !first.subject.isEmpty { + Text(first.subject) + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#4D5159")) + .lineLimit(1).truncationMode(.tail) + } + } + .padding(.horizontal, 8).padding(.vertical, 3) + .frame(maxWidth: .infinity, alignment: .leading) + .background(accent.opacity(0.08)) + .clipShape(RoundedRectangle(cornerRadius: 5)) + } + + ForEach(Array(emails.dropFirst().prefix(2))) { email in + let accent = Color(hex: email.isDelivered ? "#22C55E" : "#F4505E") + HStack(spacing: 5) { + Circle().fill(accent).frame(width: 5, height: 5) + Text(email.recipientShort) + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: "#9398A1")) + .lineLimit(1).truncationMode(.tail) + .layoutPriority(1) + Text(email.timeAgo) + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + } + .padding(.horizontal, 8).padding(.vertical, 3) + .frame(maxWidth: .infinity, alignment: .leading) + } + } + .padding(.top, 5) + .padding(.leading, 108) + .padding(.trailing, 12) + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + } +} + +// MARK: - GitHub Pulse Card View + +private func ciWorstState(_ prs: [GitHubPR]) -> CIState { + if prs.contains(where: { $0.ci == .failure }) { return .failure } + if prs.contains(where: { $0.ci == .pending }) { return .pending } + if prs.contains(where: { $0.ci == .success }) { return .success } + return .unknown +} + +private func ciColor(_ state: CIState) -> String { + switch state { + case .failure: return "#F4505E" + case .pending: return "#F5A524" + case .success: return "#22C55E" + case .unknown: return "#6B7079" + } +} + +private func mainCIWorst(_ repos: [GitHubRepoCI]) -> CIState { + if repos.contains(where: { $0.ci == .failure }) { return .failure } + if repos.contains(where: { $0.ci == .pending }) { return .pending } + if repos.contains(where: { $0.ci == .success }) { return .success } + return .unknown +} + +struct GitHubPulseCardView: View { + let pulse: GitHubPulse + let stats: GitHubStats? + let activity: GitHubActivity? + let onTapSection: (GitHubDetailSection) -> Void + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(spacing: 6) { + Circle() + .fill(Color(hex: "#F4505E")) + .frame(width: 7, height: 7) + Text("GitHub") + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + if let s = stats { + // Stars + 7-day mini-row → opens Activity detail + Button(action: { onTapSection(.activity) }) { + HStack(spacing: 4) { + Text("★ \(formatCount(s.totalStars))") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + .lineLimit(1) + if let act = activity { + HStack(spacing: 2) { + ForEach(act.lastDays(7), id: \.date) { day in + RoundedRectangle(cornerRadius: 1.5) + .fill(contributionColor(day.level)) + .frame(width: 7, height: 7) + } + } + } + } + } + .buttonStyle(.plain) + } else if let act = activity { + // No stats yet but activity loaded — show mini-row only + Button(action: { onTapSection(.activity) }) { + HStack(spacing: 2) { + ForEach(act.lastDays(7), id: \.date) { day in + RoundedRectangle(cornerRadius: 1.5) + .fill(contributionColor(day.level)) + .frame(width: 7, height: 7) + } + } + } + .buttonStyle(.plain) + } else { + Text("Overview") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + } + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 36) + + // Stat rows + VStack(alignment: .leading, spacing: 4) { + // My PRs + let prWorst = ciWorstState(pulse.myPRs) + let prValue: String = { + let n = pulse.myPRs.count + if n == 0 { return "0" } + let failing = pulse.myPRs.filter { $0.ci == .failure }.count + let pending = pulse.myPRs.filter { $0.ci == .pending }.count + if failing > 0 { return "\(n) · \(failing) failing" } + if pending > 0 { return "\(n) · running" } + return "\(n)" + }() + GitHubStatRow( + icon: "arrow.triangle.pull", iconColor: ciColor(prWorst), + label: "My PRs", value: prValue + ) { onTapSection(.myPRs) } + + // To review + let reviewCount = pulse.toReview.count + GitHubStatRow( + icon: "eye", + iconColor: reviewCount > 0 ? "#8AB4F8" : "#6B7079", + label: "To review", + value: "\(reviewCount)" + ) { onTapSection(.toReview) } + + // Default branch CI + let mainWorst = mainCIWorst(pulse.mainCI) + let (ciIcon, ciIconColor, ciValue): (String, String, String) = { + switch mainWorst { + case .failure: + let n = pulse.mainCI.filter { $0.ci == .failure }.count + return ("xmark.octagon.fill", "#F4505E", "\(n) failing") + case .pending: + return ("checkmark.seal.fill", "#F5A524", "running") + case .success: + return ("checkmark.seal.fill", "#22C55E", "all green") + case .unknown: + return ("checkmark.seal.fill", "#6B7079", pulse.mainCI.isEmpty ? "no repos" : "unknown") + } + }() + GitHubStatRow( + icon: ciIcon, iconColor: ciIconColor, + label: "Default branch CI", value: ciValue + ) { onTapSection(.mainCI) } + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 12) + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + .clipped() + } + + private func formatCount(_ n: Int) -> String { + if n >= 1000 { return String(format: "%.1fk", Double(n) / 1000) } + return "\(n)" + } +} + +private struct GitHubStatRow: View { + let icon: String + let iconColor: String + let label: String + let value: String + let action: () -> Void + + var body: some View { + Button(action: action) { + HStack(spacing: 7) { + Image(systemName: icon) + .font(.system(size: 10)) + .foregroundColor(Color(hex: iconColor)) + .frame(width: 14) + Text(label) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#6B7079")) + Spacer() + Text(value) + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#C5C8CD")) + .monospacedDigit() + } + .frame(maxWidth: .infinity) + } + .buttonStyle(.plain) + } +} + +// MARK: - GitHub Detail View + +struct GitHubDetailView: View { + let section: GitHubDetailSection + let pulse: GitHubPulse + let activity: GitHubActivity? + let stats: GitHubStats? + let onBack: () -> Void + @ObservedObject private var appState = AppState.shared + + private var title: String { + switch section { + case .myPRs: return "My PRs" + case .toReview: return "To review" + case .mainCI: return "Default branch CI" + case .activity: return "Activity" + } + } + + private var items: [GitHubPR] { + switch section { + case .myPRs: return pulse.myPRs + case .toReview: return pulse.toReview + case .mainCI, .activity: return [] + } + } + + private var repoItems: [GitHubRepoCI] { + section == .mainCI ? pulse.mainCI : [] + } + + private var totalItems: Int { items.count + repoItems.count } + + var body: some View { + if section == .activity { + GitHubActivityDetailContent( + activity: activity, + stats: stats, + login: pulse.login, + onBack: onBack + ) + } else { + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(spacing: 6) { + Button(action: onBack) { + HStack(spacing: 3) { + Image(systemName: "chevron.left") + .font(.system(size: 8, weight: .medium)) + Text(title) + .font(.system(size: 12, weight: .semibold)) + } + .foregroundColor(Color(hex: "#F5F6F8")) + } + .buttonStyle(.plain) + Spacer(minLength: 2) + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 12) + + // List + if items.isEmpty && repoItems.isEmpty { + Text("Nothing here") + .font(.system(size: 10.5)) + .foregroundColor(Color(hex: "#6B7079")) + .padding(.top, 8) + .padding(.leading, 108) + } else { + ScrollView(.vertical, showsIndicators: false) { + VStack(alignment: .leading, spacing: 0) { + ForEach(Array(items.enumerated()), id: \.element.id) { idx, pr in + GitHubPRRowView(pr: pr, showCI: section == .myPRs, + selected: appState.cardSelection == idx) + } + ForEach(Array(repoItems.enumerated()), id: \.element.repo) { idx, repo in + GitHubRepoCIRowView(repo: repo, + selected: appState.cardSelection == items.count + idx) + } + } + } + .frame(maxHeight: 60) // 3 rows × 20 pt; rest scrolls + .mask( + Group { + if totalItems > 3 { + LinearGradient( + stops: [ + .init(color: .black, location: 0), + .init(color: .black, location: 0.8), + .init(color: .clear, location: 1.0) + ], + startPoint: .top, endPoint: .bottom + ) + } else { + Color.black + } + } + ) + .padding(.top, 4) + .padding(.leading, 108) + .padding(.trailing, 8) + } + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + .clipped() + .onAppear { + GithubPoller.shared.refreshIfStale() + appState.cardItemCount = totalItems + } + .onDisappear { appState.cardItemCount = 0 } + .onReceive(NotificationCenter.default.publisher(for: .islandActivateCardSelection)) { _ in + guard let sel = appState.cardSelection else { return } + if sel < items.count { + let pr = items[sel] + if let url = safeWebURL(pr.url), url.host == "github.com" { + NSWorkspace.shared.open(url) + } + } else { + let repoIdx = sel - items.count + guard repoIdx < repoItems.count else { return } + let repo = repoItems[repoIdx] + let actionsURL = repo.url.hasSuffix("/") ? repo.url + "actions" : repo.url + "/actions" + if let url = safeWebURL(actionsURL), url.host == "github.com" { + NSWorkspace.shared.open(url) + } + } + } + .onExitCommand { onBack() } + } + } +} + +// MARK: - GitHub Activity Detail + +private struct GitHubActivityDetailContent: View { + let activity: GitHubActivity? + let stats: GitHubStats? + let login: String + let onBack: () -> Void + + @State private var hoveredDay: ContributionDay? = nil + + // Dynamic grid: s=7pt, spacing=1.5pt; numWeeks = floor((202 + 1.5) / (7 + 1.5)) = 23 + private let squareSize: CGFloat = 7 + private let spacing: CGFloat = 1.5 + private var numWeeks: Int { Int((202 + spacing) / (squareSize + spacing)) } + + private var headerRight: String { + if let day = hoveredDay { + let label: String + switch day.count { + case 0: label = "No contributions" + case 1: label = "1 contribution" + default: label = "\(day.count) contributions" + } + return "\(activityDateLabel(day.date)) · \(label)" + } + guard let act = activity else { return "" } + let total = activityTotalLabel(act.total) + if let s = stats { return "\(total) past year · \(s.totalRepos) repos" } + return "\(total) past year" + } + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(spacing: 6) { + Button(action: onBack) { + HStack(spacing: 3) { + Image(systemName: "chevron.left") + .font(.system(size: 8, weight: .medium)) + Text("Activity") + .font(.system(size: 12, weight: .semibold)) + } + .foregroundColor(Color(hex: "#F5F6F8")) + } + .buttonStyle(.plain) + Spacer(minLength: 2) + if activity != nil { + Button(action: { + let urlStr = "https://github.com/\(login)" + if let url = safeWebURL(urlStr), url.host == "github.com" { + NSWorkspace.shared.open(url) + } + }) { + Text(headerRight) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + .lineLimit(1) + } + .buttonStyle(.plain) + } + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 12) + + // Grid + if let act = activity { + let weeks = act.lastWeeks(numWeeks) + HStack(alignment: .top, spacing: spacing) { + ForEach(weeks.indices, id: \.self) { wi in + VStack(spacing: spacing) { + ForEach(0..<7, id: \.self) { dow in + if let day = weeks[wi].first(where: { $0.weekday == dow }) { + RoundedRectangle(cornerRadius: 1.5) + .fill(contributionColor(day.level)) + .frame(width: squareSize, height: squareSize) + .onHover { hovering in hoveredDay = hovering ? day : nil } + .onTapGesture { + hoveredDay = (hoveredDay?.date == day.date) ? nil : day + } + } else { + Color.clear.frame(width: squareSize, height: squareSize) + } + } + } + } + } + .padding(.top, 5) + .padding(.leading, 108) + .padding(.trailing, 12) + } else { + Text("Loading…") + .font(.system(size: 10.5)) + .foregroundColor(Color(hex: "#6B7079")) + .padding(.top, 8) + .padding(.leading, 108) + } + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + .clipped() + .onAppear { GithubPoller.shared.refreshActivityIfStale() } + .onExitCommand { onBack() } + } + + private func activityDateLabel(_ dateStr: String) -> String { + let parts = dateStr.split(separator: "-") + guard parts.count == 3, + let month = Int(parts[1]), month >= 1 && month <= 12, + let day = Int(parts[2]) else { return dateStr } + let months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"] + return "\(months[month - 1]) \(day)" + } + + private func activityTotalLabel(_ n: Int) -> String { + let nf = NumberFormatter() + nf.numberStyle = .decimal + nf.locale = Locale(identifier: "en_US") + return nf.string(from: NSNumber(value: n)) ?? "\(n)" + } +} + +private func contributionColor(_ level: Int) -> Color { + switch level { + case 1: return Color(hex: "#0E4429") + case 2: return Color(hex: "#006D32") + case 3: return Color(hex: "#26A641") + case 4: return Color(hex: "#39D353") + default: return Color.white.opacity(0.06) + } +} + +private func ghCIDot(_ ci: CIState) -> Color { + switch ci { + case .failure: return Color(hex: "#F4505E") + case .pending: return Color(hex: "#F5A524") + case .success: return Color(hex: "#22C55E") + case .unknown: return Color.clear + } +} + +private struct GitHubPRRowView: View { + let pr: GitHubPR + let showCI: Bool + var selected: Bool = false + + var body: some View { + Button(action: { + if let url = safeWebURL(pr.url), url.host == "github.com" { + NSWorkspace.shared.open(url) + } + }) { + HStack(spacing: 5) { + if showCI { + Circle() + .fill(ghCIDot(pr.ci)) + .frame(width: 5, height: 5) + .opacity(pr.ci == .unknown ? 0 : 1) + } else { + Spacer().frame(width: 5) + } + Text("\(pr.repo.components(separatedBy: "/").last ?? pr.repo)#\(pr.number)") + .font(.system(size: 10.5)) + .foregroundColor(Color(hex: "#9398A1")) + .lineLimit(1) + Text(pr.title) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#C5C8CD")) + .lineLimit(1) + .truncationMode(.tail) + if pr.isDraft { + Text("Draft") + .font(.system(size: 9.5)) + .foregroundColor(Color(hex: "#6B7079")) + } + } + .frame(maxWidth: .infinity, alignment: .leading) + .frame(height: 20) + .overlay( + RoundedRectangle(cornerRadius: 4) + .fill(Color.white.opacity(0.12)) + .opacity(selected ? 1 : 0) + ) + } + .buttonStyle(.plain) + } +} + +private struct GitHubRepoCIRowView: View { + let repo: GitHubRepoCI + var selected: Bool = false + + private var ciStateWord: String? { + switch repo.ci { + case .failure: return "failing" + case .pending: return "running" + case .success: return "passing" + case .unknown: return nil + } + } + + var body: some View { + Button(action: { + let actionsURL = repo.url.hasSuffix("/") ? repo.url + "actions" : repo.url + "/actions" + if let url = safeWebURL(actionsURL), url.host == "github.com" { + NSWorkspace.shared.open(url) + } + }) { + HStack(spacing: 5) { + Circle() + .fill(ghCIDot(repo.ci)) + .frame(width: 5, height: 5) + .opacity(repo.ci == .unknown ? 0 : 1) + Text(repo.repo.components(separatedBy: "/").last ?? repo.repo) + .font(.system(size: 10.5)) + .foregroundColor(Color(hex: "#9398A1")) + .lineLimit(1) + Text(repo.branch) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#C5C8CD")) + .lineLimit(1) + .truncationMode(.tail) + Spacer(minLength: 4) + if let word = ciStateWord { + Text(word) + .font(.system(size: 10)) + .foregroundColor(ghCIDot(repo.ci)) + .lineLimit(1) + } + } + .frame(maxWidth: .infinity, alignment: .leading) + .frame(height: 20) + .overlay( + RoundedRectangle(cornerRadius: 4) + .fill(Color.white.opacity(0.12)) + .opacity(selected ? 1 : 0) + ) + } + .buttonStyle(.plain) + } +} + +// MARK: - GitHub Stats Card View + +struct GitHubStatsCardView: View { + let stats: GitHubStats + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(spacing: 6) { + Circle() + .fill(Color(hex: "#F4505E")) + .frame(width: 7, height: 7) + Text("GitHub") + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + Text("Overview") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 36) + + // Stats rows + VStack(alignment: .leading, spacing: 5) { + StatRow(icon: "star.fill", color: "#F5A524", + label: "Total stars", value: formatCount(stats.totalStars)) + StatRow(icon: "square.stack.fill", color: "#6B7079", + label: "Repositories", value: "\(stats.totalRepos)") + } + .padding(.top, 8) + .padding(.leading, 108) + .padding(.trailing, 12) + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + } + + private func formatCount(_ n: Int) -> String { + if n >= 1000 { return String(format: "%.1fk", Double(n) / 1000) } + return "\(n)" + } +} + +private struct StatRow: View { + let icon: String + let color: String + let label: String + let value: String + + var body: some View { + HStack(spacing: 7) { + Image(systemName: icon) + .font(.system(size: 10)) + .foregroundColor(Color(hex: color)) + .frame(width: 14) + Text(label) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#6B7079")) + Spacer() + Text(value) + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#C5C8CD")) + .monospacedDigit() + } + .frame(maxWidth: .infinity) + } +} + +// MARK: - Stripe Card View + +struct StripeCardView: View { + @ObservedObject private var appState = AppState.shared + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(spacing: 6) { + Circle() + .fill(Color(hex: "#0570DE")) + .frame(width: 7, height: 7) + Text("Stripe") + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + Text("Payments") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 36) + + // Balance + HStack(alignment: .firstTextBaseline, spacing: 3) { + Text(balanceFormatted) + .font(.system(size: 20, weight: .bold, design: .monospaced)) + .foregroundColor(Color(hex: "#F5F6F8")) + .contentTransition(.numericText(countsDown: false)) + .animation(.easeOut(duration: 1.2), value: appState.stripeDisplayBalance) + Text(appState.stripeCurrency.uppercased()) + .font(.system(size: 9, weight: .semibold)) + .foregroundColor(Color(hex: "#6B7079")) + .padding(.bottom, 1) + } + .padding(.leading, 108) + .padding(.top, 4) + + // Payment rows (animated list) + VStack(alignment: .leading, spacing: 2) { + ForEach(appState.stripePayments) { payment in + StripePaymentRow(payment: payment) + .transition(.asymmetric( + insertion: .move(edge: .top).combined(with: .opacity), + removal: .move(edge: .bottom).combined(with: .opacity) + )) + } + } + .animation(.spring(response: 0.38, dampingFraction: 0.82), + value: appState.stripePayments.map(\.id)) + .padding(.leading, 108) + .padding(.trailing, 12) + .padding(.top, 4) + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + } + + private var balanceFormatted: String { + String(format: "%.2f", Double(appState.stripeDisplayBalance) / 100.0) + } +} + +private struct StripePaymentRow: View { + let payment: StripePayment + + var body: some View { + let accent = payment.isSuccess ? Color(hex: "#22C55E") : Color(hex: "#F4505E") + HStack(spacing: 5) { + Circle().fill(accent).frame(width: 5, height: 5) + Text(payment.description ?? "Payment") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#C5C8CD")) + .lineLimit(1).truncationMode(.tail) + .layoutPriority(1) + Spacer(minLength: 4) + Text("+\(payment.amountFormatted)") + .font(.system(size: 11, weight: .medium, design: .monospaced)) + .foregroundColor(Color(hex: "#22C55E")) + .fixedSize() + Text(payment.timeAgo) + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#6B7079")) + .fixedSize() + } + .frame(maxWidth: .infinity) + } +} + +// MARK: - Cal.com Card View + +struct CalcomCardView: View { + @ObservedObject private var appState = AppState.shared + @State private var selectedDate: Date? = nil + @State private var selectedBooking: CalcomBooking? = nil + @State private var displayMonth: Date = Date() + @State private var displayHalf: Int = 1 // 1 = first half, 2 = second half + + var body: some View { + Group { + if let booking = selectedBooking { + CalcomBookingDetailView(booking: booking) { + withAnimation(.easeOut(duration: 0.2)) { selectedBooking = nil } + } + } else if let date = selectedDate { + CalcomDayView( + date: date, + bookings: bookingsFor(date), + onSelect: { b in withAnimation(.easeOut(duration: 0.2)) { selectedBooking = b } }, + onBack: { withAnimation(.easeOut(duration: 0.2)) { selectedDate = nil } } + ) + } else { + CalcomCalendarView( + displayMonth: $displayMonth, + displayHalf: $displayHalf, + bookings: appState.calcomBookings, + onSelect: { d in withAnimation(.easeOut(duration: 0.2)) { selectedDate = d } } + ) + } + } + .onChange(of: appState.focusId) { _, _ in + selectedDate = nil; selectedBooking = nil; displayHalf = 1 + } + } + + private func bookingsFor(_ date: Date) -> [CalcomBooking] { + let c = Calendar.current.dateComponents([.year, .month, .day], from: date) + let key = "\(c.year!)-\(String(format: "%02d", c.month!))-\(String(format: "%02d", c.day!))" + return appState.calcomBookings.filter { $0.dayKey == key } + .sorted { $0.startTime < $1.startTime } + } +} + +struct CalcomCalendarView: View { + @Binding var displayMonth: Date + @Binding var displayHalf: Int + let bookings: [CalcomBooking] + let onSelect: (Date) -> Void + + private let cal = Calendar.current + + private var navLabel: String { + let f = DateFormatter(); f.dateFormat = "MMMM yyyy" + return "\(f.string(from: displayMonth)) Q\(displayHalf)" + } + + // 7 consecutive days per row, day 1 always at far left — no weekday alignment + private var allWeeks: [[Date?]] { + let comps = cal.dateComponents([.year, .month], from: displayMonth) + let monthStart = cal.date(from: comps)! + let daysInMonth = cal.range(of: .day, in: .month, for: displayMonth)!.count + var result: [[Date?]] = [] + var chunk: [Date?] = [] + for i in 0.. Bool { + let c = cal.dateComponents([.year, .month, .day], from: d) + let key = "\(c.year!)-\(String(format: "%02d", c.month!))-\(String(format: "%02d", c.day!))" + return bookings.contains { $0.dayKey == key } + } + + private func goBack() { + if displayHalf == 1 { + displayMonth = cal.date(byAdding: .month, value: -1, to: displayMonth) ?? displayMonth + displayHalf = 2 + } else { + displayHalf = 1 + } + } + + private func goForward() { + if displayHalf == 1 { + displayHalf = 2 + } else { + displayMonth = cal.date(byAdding: .month, value: 1, to: displayMonth) ?? displayMonth + displayHalf = 1 + } + } + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + HStack(spacing: 6) { + Circle().fill(Color(hex: "#C9956A")).frame(width: 7, height: 7) + Text("Cal.com").font(.system(size: 12, weight: .semibold)).foregroundColor(Color(hex: "#F5F6F8")) + Text("Schedule").font(.system(size: 11)).foregroundColor(Color(hex: "#8E939C")) + } + .padding(.top, 6).padding(.leading, 108).padding(.trailing, 36) + + HStack(spacing: 0) { + Button { goBack() } label: { + Image(systemName: "chevron.left").font(.system(size: 8, weight: .semibold)) + .foregroundColor(Color(hex: "#6B7079")).frame(width: 18, height: 16) + }.buttonStyle(.plain) + Text(navLabel).font(.system(size: 10, weight: .semibold)) + .foregroundColor(Color(hex: "#C5C8CD")).frame(maxWidth: .infinity) + Button { goForward() } label: { + Image(systemName: "chevron.right").font(.system(size: 8, weight: .semibold)) + .foregroundColor(Color(hex: "#6B7079")).frame(width: 18, height: 16) + }.buttonStyle(.plain) + } + .padding(.leading, 108).padding(.trailing, 12).padding(.top, 2) + + VStack(spacing: 1) { + ForEach(visibleWeeks.indices, id: \.self) { i in + CalcomWeekRow(week: visibleWeeks[i], hasBookings: hasBookings, + isToday: cal.isDateInToday, onSelect: onSelect) + } + } + .padding(.leading, 108).padding(.trailing, 12).padding(.top, 2) + } + .frame(maxWidth: .infinity, alignment: .topLeading).padding(.top, 4) + .transition(.opacity) + } +} + +private struct CalcomWeekRow: View { + let week: [Date?] + let hasBookings: (Date) -> Bool + let isToday: (Date) -> Bool + let onSelect: (Date) -> Void + + private var weekLabel: String { + guard let first = week.compactMap({ $0 }).first else { return "" } + let f = DateFormatter(); f.dateFormat = "dd/MM" + return f.string(from: first) + } + + var body: some View { + HStack(spacing: 0) { + Text(weekLabel).font(.system(size: 7)).foregroundColor(Color(hex: "#4B5563")) + .frame(width: 26, alignment: .leading) + ForEach(0..<7, id: \.self) { i in + if let day = week[i] { + CalcomDayCell(day: day, hasEvents: hasBookings(day), isToday: isToday(day)) + .contentShape(Rectangle()).onTapGesture { onSelect(day) }.frame(maxWidth: .infinity) + } else { + Color.clear.frame(maxWidth: .infinity).frame(height: 18) + } + } + } + } +} + +private struct CalcomDayCell: View { + let day: Date + let hasEvents: Bool + let isToday: Bool + var body: some View { + VStack(spacing: 1) { + Text("\(Calendar.current.component(.day, from: day))") + .font(.system(size: 9, weight: isToday ? .bold : .regular)) + .foregroundColor(isToday ? .white : Color(hex: "#9398A1")) + .frame(width: 13, height: 13) + .background(isToday ? Color(hex: "#C9956A").opacity(0.55) : Color.clear) + .clipShape(Circle()) + Circle().fill(hasEvents ? Color(hex: "#C9956A") : Color.clear).frame(width: 3, height: 3) + } + .frame(height: 18) + } +} + +struct CalcomDayView: View { + let date: Date + let bookings: [CalcomBooking] + let onSelect: (CalcomBooking) -> Void + let onBack: () -> Void + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + HStack(spacing: 4) { + Button(action: onBack) { + Image(systemName: "chevron.left").font(.system(size: 9, weight: .semibold)) + .foregroundColor(Color(hex: "#6B7079")).frame(width: 22, height: 22).contentShape(Rectangle()) + }.buttonStyle(.plain).padding(.leading, 108) + Text(dayLabel).font(.system(size: 11, weight: .semibold)).foregroundColor(Color(hex: "#C5C8CD")) + Spacer() + } + .padding(.top, 6).padding(.trailing, 12) + + if bookings.isEmpty { + Text("No calls scheduled").font(.system(size: 11)).foregroundColor(Color(hex: "#6B7079")) + .padding(.leading, 116).padding(.top, 8) + } else { + VStack(alignment: .leading, spacing: 3) { + ForEach(bookings) { b in + Button { onSelect(b) } label: { + HStack(spacing: 6) { + Circle().fill(Color(hex: "#C9956A")).frame(width: 4, height: 4) + Text(b.timeLabel) + .font(.system(size: 10, weight: .medium, design: .monospaced)) + .foregroundColor(Color(hex: "#C9956A")).fixedSize() + Text(b.title).font(.system(size: 11)).foregroundColor(Color(hex: "#C5C8CD")) + .lineLimit(1).truncationMode(.tail).layoutPriority(1) + Spacer(minLength: 2) + Image(systemName: "chevron.right").font(.system(size: 8)) + .foregroundColor(Color(hex: "#4B5563")) + } + .padding(.horizontal, 6).padding(.vertical, 3) + .background(Color(hex: "#C9956A").opacity(0.06)) + .clipShape(RoundedRectangle(cornerRadius: 4)) + }.buttonStyle(.plain) + } + } + .padding(.leading, 108).padding(.trailing, 12).padding(.top, 5) + } + } + .frame(maxWidth: .infinity, alignment: .topLeading).padding(.top, 4) + .transition(.opacity) + } + private var dayLabel: String { + let f = DateFormatter(); f.dateFormat = "EEEE d MMMM"; return f.string(from: date) + } +} + +struct CalcomBookingDetailView: View { + let booking: CalcomBooking + let onBack: () -> Void + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + HStack(spacing: 4) { + Button(action: onBack) { + Image(systemName: "chevron.left").font(.system(size: 9, weight: .semibold)) + .foregroundColor(Color(hex: "#6B7079")).frame(width: 22, height: 22).contentShape(Rectangle()) + }.buttonStyle(.plain).padding(.leading, 108) + Text(booking.timeLabel) + .font(.system(size: 10, weight: .medium, design: .monospaced)) + .foregroundColor(Color(hex: "#C9956A")) + Spacer() + } + .padding(.top, 6).padding(.trailing, 12) + + VStack(alignment: .leading, spacing: 4) { + Text(booking.title).font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")).lineLimit(1) + if let name = booking.attendeeName, !name.isEmpty { + CalcomDetailRow(icon: "person.fill", text: name, size: 11) + } + if let email = booking.attendeeEmail, !email.isEmpty { + CalcomDetailRow(icon: "envelope.fill", text: email, size: 10, truncate: true) + } + if let notes = booking.attendeeNotes, !notes.isEmpty { + CalcomDetailRow(icon: "note.text", text: notes, size: 10, lines: 2) + } + } + .padding(.leading, 114).padding(.trailing, 12).padding(.top, 5) + } + .frame(maxWidth: .infinity, alignment: .topLeading).padding(.top, 4) + .transition(.opacity) + } +} + +private struct CalcomDetailRow: View { + let icon: String + let text: String + var size: CGFloat = 11 + var truncate: Bool = false + var lines: Int = 1 + var body: some View { + HStack(alignment: .top, spacing: 4) { + Image(systemName: icon).font(.system(size: 9)).foregroundColor(Color(hex: "#6B7079")).frame(width: 10) + Text(text).font(.system(size: size)).foregroundColor(Color(hex: "#9398A1")) + .lineLimit(lines).truncationMode(truncate ? .middle : .tail) + } + } +} + +// MARK: - Notion Card View + +struct NotionCardView: View { + @ObservedObject private var appState = AppState.shared + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + HStack(spacing: 6) { + Circle().fill(Color(hex: "#E8E8E8")).frame(width: 7, height: 7) + Text("Notion").font(.system(size: 12, weight: .semibold)).foregroundColor(Color(hex: "#F5F6F8")) + Text("Recent").font(.system(size: 11)).foregroundColor(Color(hex: "#8E939C")) + } + .padding(.top, 6).padding(.leading, 108).padding(.trailing, 36) + + VStack(alignment: .leading, spacing: 2) { + ForEach(appState.notionPages.prefix(3)) { page in + Button { + if let url = safeWebURL(page.url) { NSWorkspace.shared.open(url) } + } label: { + HStack(spacing: 6) { + if let emoji = page.emoji { + Text(emoji).font(.system(size: 10)).frame(width: 14) + } else { + Image(systemName: "doc.text").font(.system(size: 9)) + .foregroundColor(Color(hex: "#6B7079")).frame(width: 14) + } + Text(page.title).font(.system(size: 11)) + .foregroundColor(Color(hex: "#C5C8CD")) + .lineLimit(1).truncationMode(.tail).layoutPriority(1) + Spacer(minLength: 4) + Text(page.timeAgo).font(.system(size: 9)) + .foregroundColor(Color(hex: "#4B5563")) + } + .padding(.horizontal, 6).padding(.vertical, 4) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + } + } + .padding(.leading, 102).padding(.trailing, 12).padding(.top, 5) + } + .frame(maxWidth: .infinity, alignment: .topLeading).padding(.top, 4) + .transition(.opacity) + } +} + +// MARK: - n8n Execution Detail View + +struct N8nDetailView: View { + let task: AgentTask + let onClose: () -> Void + + private var success: Bool { task.state == .finished } + private var accent: Color { success ? Color(hex: "#22C55E") : Color(hex: "#F4505E") } + private var statusLabel: String { success ? "Success" : "Failed" } + private var detail: String? { task.steps.dropFirst().first } + + var body: some View { + VStack(alignment: .leading, spacing: 8) { + + // Header: back button + workflow name + status badge + HStack(spacing: 7) { + Button(action: onClose) { + Image(systemName: "chevron.left") + .font(.system(size: 10, weight: .semibold)) + .foregroundColor(Color(hex: "#6B7079")) + .frame(width: 28, height: 28) // large hit area + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + + Circle().fill(accent).frame(width: 6, height: 6) + + Text(task.steps.first ?? "Workflow") + .font(.system(size: 11, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + .lineLimit(1).truncationMode(.middle) + .layoutPriority(1) + + Spacer(minLength: 2) + + Text(statusLabel) + .font(.system(size: 10, weight: .medium)) + .foregroundColor(accent) + .padding(.horizontal, 6).padding(.vertical, 2) + .background(accent.opacity(0.14)) + .clipShape(Capsule()) + } + + // Detail body — monospaced, selectable + if let detail { + ScrollView(.vertical, showsIndicators: false) { + Text(detail) + .font(.system(size: 10.5, design: .monospaced)) + .foregroundColor(Color(hex: "#9398A1")) + .frame(maxWidth: .infinity, alignment: .leading) + .lineSpacing(2) + .textSelection(.enabled) + } + .frame(maxHeight: 88) + } else { + Text(success ? "Completed successfully." : "No error details available.") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#6B7079")) + } + } + .padding(.top, 8) + .padding(.leading, 108) + .padding(.trailing, 12) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) + .contentShape(Rectangle()) // prevent taps falling through transparent areas + } +} + +// MARK: - Ticker (overview scrolling task steps) V2 + +struct TickerView: View { + let task: AgentTask? + var onDiffTap: ((Int) -> Void)? = nil + + @State private var rowA: String = "…" // completed (above, left-shifted) + @State private var rowB: String = "…" // current (below) → animates diagonally up-left + @State private var rowC: String = "" // incoming current — slides in from below + + @State private var rowAOffset: CGFloat = 0 + @State private var rowAOpacity: Double = 1 + @State private var rowBOffset: CGFloat = 22 + @State private var rowBPhase: Double = 0 // 0=current, 1=completed (drives X+scale) + @State private var rowCOffset: CGFloat = 44 + @State private var rowCOpacity: Double = 0 + + @State private var displayIndex: Int = -1 + @State private var isTransitioning = false + + private let completedScale: CGFloat = 11.5 / 13 // 0.885 — matches completed font size + + var steps: [String] { + let raw = task?.steps ?? [] + return raw.isEmpty ? ["…"] : raw + } + + var body: some View { + let isActive = task?.state == .thinking || task?.state == .working + let rowADiffTap: (() -> Void)? = rowA.parseDiffStep().map { dp in { onDiffTap?(dp.diffId) } } + let rowBDiffTap: (() -> Void)? = rowB.parseDiffStep().map { dp in { onDiffTap?(dp.diffId) } } + + ZStack(alignment: .topLeading) { + Color.clear + + // Row A: completed row — always rendered at phase=1 + completedScale + TickerRowView(text: rowA, phase: 1.0, isActive: isActive, onDiffTap: rowADiffTap) + .scaleEffect(completedScale, anchor: .leading) + .offset(x: -10, y: rowAOffset) + .opacity(rowAOpacity) + + // Row B: current step → animates diagonally up-left, phase 0→1, scale 1→completedScale + TickerRowView(text: rowB, phase: rowBPhase, isActive: isActive, onDiffTap: rowBDiffTap) + .scaleEffect(1 - rowBPhase * (1 - completedScale), anchor: .leading) + .offset(x: -rowBPhase * 10, y: rowBOffset) + + // Row C: incoming new step — slides in from below at phase=0 + TickerRowView(text: rowC, phase: 0.0, isActive: isActive) + .offset(y: rowCOffset) + .opacity(rowCOpacity) + } + .frame(height: 44) + .clipped() + .mask(LinearGradient( + stops: [ + .init(color: .clear, location: 0), + .init(color: .black, location: 0.12), + .init(color: .black, location: 0.85), + .init(color: .clear, location: 1) + ], + startPoint: .top, endPoint: .bottom + )) + .onAppear { + let idx = task?.stepIndex ?? -1 + displayIndex = idx + if idx >= 0, !steps.isEmpty { + rowA = idx > 0 ? steps[max(0, idx - 1)] : "…" + rowB = steps[min(idx, steps.count - 1)] + } + } + .onChange(of: task?.steps.count) { _, _ in + guard let task, !task.steps.isEmpty, !isTransitioning else { return } + let newIdx = task.stepIndex + if displayIndex < 0 { + displayIndex = newIdx + rowA = newIdx > 0 ? steps[max(0, newIdx - 1)] : "…" + rowB = steps[min(newIdx, steps.count - 1)] + return + } + guard newIdx != displayIndex else { return } + tickerAnimate(to: newIdx) + } + } + + private func tickerAnimate(to newIdx: Int) { + isTransitioning = true + rowC = steps[min(newIdx, steps.count - 1)] + rowCOffset = 44 + rowCOpacity = 0 + + // Old completed (rowA): fades + slides further up + withAnimation(.easeOut(duration: 0.28)) { + rowAOffset = -22 + rowAOpacity = 0 + } + + // Current (rowB): moves diagonally up-left + shrinks to completed size + withAnimation(.timingCurve(0.4, 0, 0.2, 1, duration: 0.38)) { + rowBOffset = 0 + rowBPhase = 1 + } + + // New current (rowC): slides in from below + withAnimation(.timingCurve(0.4, 0, 0.2, 1, duration: 0.38)) { + rowCOffset = 22 + rowCOpacity = 1 + } + + DispatchQueue.main.asyncAfter(deadline: .now() + 0.50) { + self.displayIndex = newIdx + self.rowA = self.rowB + self.rowAOffset = 0 + self.rowAOpacity = 1 + self.rowB = self.rowC + self.rowBOffset = 22 + self.rowBPhase = 0 + self.rowCOffset = 44 + self.rowCOpacity = 0 + self.isTransitioning = false + } + } +} + +struct TickerRowView: View { + let text: String + let phase: Double // 0 = current (shimmer, large), 1 = completed (dim, scaled down by caller) + var isActive: Bool = true + var onDiffTap: (() -> Void)? = nil + + var body: some View { + let chevronOpacity: Double = isActive ? max(0, 1 - phase * 2) : 0 + let checkmarkOpacity: Double = isActive ? max(0, phase * 2 - 1) : 1 + let shimmerOpacity: Double = isActive ? max(0, 1 - phase * 1.6) : 0 + let staticOpacity: Double = isActive ? min(1, max(0, phase * 2 - 0.4)) : 1 + let staticColor = (!isActive && phase < 0.5) ? Color(hex: "#C9CDD4") : Color(hex: "#6B7079") + + if let dp = text.parseDiffStep() { + HStack(spacing: 6) { + ZStack { + Image(systemName: "chevron.right") + .font(.system(size: 9, weight: .medium)) + .foregroundColor(Color(hex: "#8E939C")) + .opacity(chevronOpacity) + Image(systemName: "checkmark") + .font(.system(size: 8, weight: .regular)) + .foregroundColor(Color(hex: "#454850")) + .opacity(checkmarkOpacity) + } + .frame(width: 12, alignment: .center) + // Filename + counts + HStack(spacing: 0) { + ZStack(alignment: .leading) { + TickerShimmerText(text: dp.filename) + .opacity(shimmerOpacity) + Text(dp.filename) + .font(.system(size: 13, weight: .medium)) + .foregroundColor(staticColor) + .lineLimit(1).truncationMode(.tail) + .opacity(staticOpacity) + } + if dp.added > 0 { + Text(" +\(dp.added)") + .font(.system(size: 10, weight: .medium).monospaced()) + .foregroundColor(Color(hex: "#22C55E")) + .fixedSize() + } + if dp.removed > 0 { + Text(" −\(dp.removed)") + .font(.system(size: 10, weight: .medium).monospaced()) + .foregroundColor(Color(hex: "#F4505E")) + .fixedSize() + } + } + } + .frame(height: 22, alignment: .leading) + .frame(maxWidth: .infinity, alignment: .leading) + .contentShape(Rectangle()) + .onTapGesture { onDiffTap?() } + } else { + HStack(spacing: 6) { + // Icon: chevron fades out first half, checkmark fades in second half + ZStack { + Image(systemName: "chevron.right") + .font(.system(size: 9, weight: .medium)) + .foregroundColor(Color(hex: "#8E939C")) + .opacity(chevronOpacity) + Image(systemName: "checkmark") + .font(.system(size: 8, weight: .regular)) + .foregroundColor(Color(hex: "#454850")) + .opacity(checkmarkOpacity) + } + .frame(width: 12, alignment: .center) + + // Text: shimmer fades out, dim completed text fades in (overlapping cross-fade) + ZStack(alignment: .leading) { + TickerShimmerText(text: text) + .opacity(shimmerOpacity) + Text(text) + .font(.system(size: 13, weight: .medium)) + .foregroundColor(staticColor) + .lineLimit(1).truncationMode(.tail) + .opacity(staticOpacity) + } + } + .frame(height: 22, alignment: .leading) + .frame(maxWidth: .infinity, alignment: .leading) + } + } +} + +struct TickerShimmerText: View { + let text: String + + var body: some View { + TimelineView(.animation) { tl in + let t = tl.date.timeIntervalSinceReferenceDate + let p = CGFloat(t.truncatingRemainder(dividingBy: 2.2) / 2.2) + // phase sweeps -0.1 → 1.1 so white peak enters from left and exits right + let phase = p * 1.2 - 0.1 + Text(text) + .font(.system(size: 13, weight: .medium)) + .lineLimit(1) + .truncationMode(.tail) + .foregroundStyle(LinearGradient(stops: [ + .init(color: Color(hex: "#7c818a"), location: max(0, phase - 0.3)), + .init(color: Color(hex: "#F2F3F5"), location: max(0, min(1, phase))), + .init(color: Color(hex: "#7c818a"), location: min(1, phase + 0.3)), + ], startPoint: .leading, endPoint: .trailing)) + } + } +} + +// MARK: - Agent pills (overview right card) + +struct AgentPillsView: View { + @ObservedObject var state: AppState + @State private var swapping = false + + private var others: [AgentTask] { + state.tasks.filter { $0.id != state.focusId } + } + + private var displayTasks: [AgentTask] { + Array(others.prefix(4)) + } + + private let columns = [ + GridItem(.flexible(), spacing: 4), + GridItem(.flexible(), spacing: 4) + ] + + var body: some View { + VStack(spacing: 0) { + Spacer(minLength: 0) + LazyVGrid(columns: columns, spacing: 4) { + ForEach(displayTasks) { task in + #if !APPSTORE + if task.id == "integration_music" { + MusicPill(task: task, state: state, swapping: $swapping) { + swapping = true + state.setFocus(task.id) + SoundEngine.shared.play("blip") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { swapping = false } + } + } else { + AgentPill(task: task, state: state, swapping: $swapping) { + swapping = true + state.setFocus(task.id) + SoundEngine.shared.play("blip") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { swapping = false } + } + } + #else + AgentPill(task: task, state: state, swapping: $swapping) { + swapping = true + state.setFocus(task.id) + SoundEngine.shared.play("blip") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { swapping = false } + } + #endif + } + } + .padding(.horizontal, 8) + Spacer(minLength: 0) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + } +} + +struct AgentPill: View { + let task: AgentTask + @ObservedObject var state: AppState + @Binding var swapping: Bool + let onTap: () -> Void + @State private var isHovered = false + + private var effectiveColor: String { task.color } + + // VS Code pill always shows "VS Code" label regardless of active project name + private var displayName: String { + task.id == "integration_claude" ? "VS Code" : task.name + } + + var body: some View { + Button(action: { onTap() }) { + ZStack(alignment: .topTrailing) { + ZStack { + Capsule() + .fill(isHovered + ? Color(hex: effectiveColor).opacity(0.18) + : Color(hex: "#0E0F11")) + Capsule() + .stroke(Color(hex: effectiveColor).opacity(isHovered ? 0.55 : 0.14), lineWidth: 1) + HStack(spacing: 0) { + MiniBotCanvasView(task: task) + .frame(width: 22 / 0.6, height: 22 / 0.6) + .frame(width: 22, height: 22, alignment: .center) + .padding(.leading, 8) + Spacer() + } + Text(displayName) + .font(.system(size: 10, weight: .semibold)) + .foregroundColor(isHovered + ? Color(hex: effectiveColor).lighter(by: 0.3) + : Color(hex: "#6B7079")) + .lineLimit(1) + .truncationMode(.tail) + .frame(maxWidth: .infinity, alignment: .center) + } + .frame(maxWidth: .infinity) + .frame(height: 28) + .shadow(color: Color(hex: effectiveColor).opacity(isHovered ? 0.35 : 0), radius: 10, x: 0, y: 2) + + // Alert badge (approval / finished / error) + if let badge = task.pillBadge { + PillBadgeView(badge: badge, taskColor: effectiveColor) + .offset(x: 3, y: -3) + } + } + } + .buttonStyle(.plain) + .scaleEffect(isHovered ? 1.04 : 1.0) + .brightness(isHovered ? 0.06 : 0) + .onHover { newHover in + guard !swapping else { return } + withAnimation(.spring(response: 0.2, dampingFraction: 0.7)) { isHovered = newHover } + } + } +} + +// MARK: - Music Pill (GitHub build only) + +#if !APPSTORE +struct MusicPill: View { + let task: AgentTask + @ObservedObject var state: AppState + @Binding var swapping: Bool + let onTap: () -> Void + @State private var isHovered = false + + private var isPlaying: Bool { AppState.shared.musicPlaying } + private var showControls: Bool { isHovered && MusicController.shared.trackTitle != nil } + + var body: some View { + ZStack { + // Selection target — full pill area, receives taps where controls don't + Capsule() + .fill(Color.clear) + .contentShape(Capsule()) + .onTapGesture { onTap() } + + // Visual fills + Capsule() + .fill(isHovered ? Color(hex: task.color).opacity(0.18) : Color(hex: "#0E0F11")) + .allowsHitTesting(false) + Capsule() + .stroke(Color(hex: task.color).opacity(isHovered ? 0.55 : 0.14), lineWidth: 1) + .allowsHitTesting(false) + + // Mini Mochi at leading edge + HStack(spacing: 0) { + MiniBotCanvasView(task: task, isDancing: isPlaying) + .frame(width: 22 / 0.6, height: 22 / 0.6) + .frame(width: 22, height: 22, alignment: .center) + .padding(.leading, 8) + Spacer() + } + .allowsHitTesting(false) + + // Title — trailing padding grows on hover to make room for buttons + Text(task.name) + .font(.system(size: 10, weight: .semibold)) + .foregroundColor(isHovered ? Color(hex: task.color).lighter(by: 0.3) : Color(hex: "#6B7079")) + .lineLimit(1) + .truncationMode(.tail) + .padding(.leading, 34) + .padding(.trailing, showControls ? 52 : 10) + .frame(maxWidth: .infinity, alignment: .center) + .animation(.spring(response: 0.2, dampingFraction: 0.7), value: showControls) + .allowsHitTesting(false) + + // Playback controls — appear on hover when a track is loaded + if showControls { + HStack(spacing: 0) { + Spacer() + HStack(spacing: 2) { + MusicControlButton(icon: isPlaying ? "pause.fill" : "play.fill", color: task.color) { + MusicController.shared.playPause() + } + MusicControlButton(icon: "forward.fill", color: task.color) { + MusicController.shared.nextTrack() + } + } + .padding(.trailing, 4) + } + .transition(.opacity.combined(with: .scale(scale: 0.85, anchor: .trailing))) + } + } + .frame(maxWidth: .infinity) + .frame(height: 28) + .shadow(color: Color(hex: task.color).opacity(isHovered ? 0.35 : 0), radius: 10, x: 0, y: 2) + .scaleEffect(isHovered ? 1.04 : 1.0) + .brightness(isHovered ? 0.06 : 0) + .onHover { newHover in + guard !swapping else { return } + withAnimation(.spring(response: 0.2, dampingFraction: 0.7)) { isHovered = newHover } + } + } +} + +struct MusicControlButton: View { + let icon: String + let color: String + let action: () -> Void + @State private var isHovered = false + + var body: some View { + Button(action: action) { + ZStack { + Circle() + .fill(isHovered ? Color(hex: color).opacity(0.18) : Color(hex: "#0E0F11")) + Circle() + .stroke(Color(hex: color).opacity(isHovered ? 0.55 : 0.14), lineWidth: 1) + Image(systemName: icon) + .font(.system(size: 8, weight: .semibold)) + .foregroundColor(isHovered ? Color(hex: color).lighter(by: 0.3) : Color(hex: "#6B7079")) + } + .frame(width: 20, height: 20) + .shadow(color: Color(hex: color).opacity(isHovered ? 0.35 : 0), radius: 6) + } + .buttonStyle(.plain) + .scaleEffect(isHovered ? 1.1 : 1.0) + .onHover { newHover in + withAnimation(.spring(response: 0.2, dampingFraction: 0.7)) { isHovered = newHover } + } + } +} +#endif + +// MARK: - Music Card View (GitHub build only) + +#if !APPSTORE +struct MusicCardView: View { + @ObservedObject private var controller = MusicController.shared + @ObservedObject private var appState = AppState.shared + + var body: some View { + VStack(alignment: .leading, spacing: 4) { + if appState.musicAutomationDenied { + // Automation denied — prompt user to fix + HStack(spacing: 6) { + Circle() + .fill(Color(hex: "#F4505E")) + .frame(width: 7, height: 7) + Text("Apple Music") + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + Spacer(minLength: 2) + } + .padding(.top, 6) + .padding(.leading, 108) + .padding(.trailing, 36) + + Text("Allow Coucou to control Music") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + .padding(.leading, 108) + .padding(.trailing, 12) + + Button("Open Settings…") { MusicController.shared.openAutomationSettings() } + .font(.system(size: 11, weight: .medium)) + .foregroundColor(Color(hex: "#FA2D48").opacity(0.85)) + .buttonStyle(.plain) + .padding(.leading, 108) + .padding(.top, 2) + } else { + // Line 1: dot + title + HStack(spacing: 6) { + Circle() + .fill(Color(hex: "#FA2D48")) + .frame(width: 7, height: 7) + if let title = controller.trackTitle { + Text(title) + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + .lineLimit(1).truncationMode(.tail) + .frame(maxWidth: 150, alignment: .leading) + } + } + .padding(.top, 6) + .padding(.leading, 108) + + // Line 2: artist + if let artist = controller.artist { + Text(artist) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + .lineLimit(1).truncationMode(.tail) + .frame(maxWidth: 150, alignment: .leading) + .padding(.leading, 108) + } + + // Line 3: controls + HStack(spacing: 8) { + Button(action: { MusicController.shared.previousTrack() }) { + Image(systemName: "backward.fill") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + } + .buttonStyle(.plain) + Button(action: { MusicController.shared.playPause() }) { + Image(systemName: appState.musicPlaying ? "pause.fill" : "play.fill") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#FA2D48")) + } + .buttonStyle(.plain) + Button(action: { MusicController.shared.nextTrack() }) { + Image(systemName: "forward.fill") + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + } + .buttonStyle(.plain) + } + .padding(.leading, 108) + .padding(.top, 6) + } + } + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(.top, 4) + } +} +#endif + +struct PillBadgeView: View { + let badge: PillBadge + let taskColor: String + + private var badgeColor: Color { + switch badge { + case .approval: return Color(hex: "#F5A524") + case .finished: return Color(hex: "#22C55E") + case .error: return Color(hex: "#F4505E") + } + } + + private var icon: String { + switch badge { + case .approval: return "exclamationmark" + case .finished: return "checkmark" + case .error: return "xmark" + } + } + + var body: some View { + ZStack { + Circle() + .fill(Color(hex: "#0B0C0E")) + .frame(width: 14, height: 14) + Circle() + .fill(badgeColor) + .frame(width: 12, height: 12) + Image(systemName: icon) + .font(.system(size: 6, weight: .bold)) + .foregroundColor(.black) + } + .shadow(color: badgeColor.opacity(0.6), radius: 4, x: 0, y: 0) + } +} + +// MARK: - Column agents (right side of non-overview views) + +struct ColumnAgentsView: View { + @ObservedObject var state: AppState + + var others: [AgentTask] { + state.tasks.filter { $0.id != state.focusId } + } + + var body: some View { + VStack(spacing: 0) { + ForEach(Array(others.prefix(4).enumerated()), id: \.1.id) { idx, task in + MiniBotCanvasView(task: task) + .frame(width: 16 / 0.6, height: 16 / 0.6) + .frame(width: 16, height: 16) + .position(x: 0, y: CGFloat(50 + idx * 24)) + .animation(.spring(response: 0.5, dampingFraction: 0.72).delay(Double(idx) * 0.035), value: idx) + } + } + } +} + +// MARK: - Wardrobe + +struct WardrobeView: View { + @ObservedObject var state: AppState + @State private var hoveredOutfit: Outfit? = nil + + private let columns = Array(repeating: GridItem(.fixed(30), spacing: 5), count: 14) + + private var headerRight: String { + // Hover takes priority: show hovered outfit name + if let h = hoveredOutfit { + if h == .auto { + let seasonal = Outfit.seasonal(for: Date(), calendar: .current) + let name = seasonal == .none ? "None" : seasonal.displayName + return "Auto · follows the seasons (now: \(name))" + } + return h.displayName + } + // Fall back to current selection + let sel = state.mochiOutfitSelection + if sel == .auto { + let seasonal = Outfit.seasonal(for: Date(), calendar: .current) + let name = seasonal == .none ? "None" : seasonal.displayName + return "Auto · \(name)" + } + return sel.displayName + } + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(spacing: 6) { + Text("Wardrobe") + .font(.system(size: 12, weight: .semibold)) + .foregroundColor(Color(hex: "#F5F6F8")) + Spacer(minLength: 4) + Text(headerRight) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + .lineLimit(1) + } + .padding(.top, 6) + .padding(.horizontal, 10) + + // Grid + let allOutfits = Outfit.allCases.filter { $0 != .auto } + let withAuto = [Outfit.auto] + allOutfits + ScrollView(.vertical, showsIndicators: false) { + LazyVGrid(columns: columns, spacing: 5) { + ForEach(withAuto, id: \.rawValue) { outfit in + OutfitPillView( + outfit: outfit, + isSelected: state.mochiOutfitSelection == outfit, + isHovered: hoveredOutfit == outfit, + onHover: { h in + hoveredOutfit = h ? outfit : nil + if h { + // Preview on main Mochi + let preview: Outfit = outfit == .auto + ? Outfit.seasonal(for: Date(), calendar: .current) + : outfit + state.wardrobePreviewOutfit = preview + } else if hoveredOutfit == nil { + state.wardrobePreviewOutfit = nil + } + }, + onTap: { + guard state.mochiOutfitSelection != outfit else { return } + state.mochiOutfitSelection = outfit + SoundEngine.shared.play("pop") + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.proud) + }, + seasonalOutfit: outfit == .auto ? state.resolvedOutfit : .none + ) + } + } + .padding(.vertical, 6) + .padding(.horizontal, 8) + } + .frame(maxHeight: .infinity) + .mask( + LinearGradient( + stops: [ + .init(color: .white, location: 0), + .init(color: .white, location: 0.85), + .init(color: .clear, location: 1) + ], + startPoint: .top, endPoint: .bottom + ) + ) + } + .padding(.leading, 108) + .padding(.trailing, 12) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) + .onDisappear { + state.wardrobePreviewOutfit = nil + hoveredOutfit = nil + } + .onExitCommand { + withAnimation(.spring(response: 0.3, dampingFraction: 0.8)) { + state.view = .overview + } + } + } +} + +struct OutfitPillView: View { + let outfit: Outfit + let isSelected: Bool + let isHovered: Bool + let onHover: (Bool) -> Void + let onTap: () -> Void + var seasonalOutfit: Outfit = .none + + var body: some View { + Canvas { context, size in + drawOutfitIcon(context: context, size: size, outfit: outfit, seasonal: seasonalOutfit) + } + .frame(width: 30, height: 30) + .background( + RoundedRectangle(cornerRadius: 7) + .fill(isHovered ? Color.white.opacity(0.10) : Color.white.opacity(0.06)) + ) + .overlay( + RoundedRectangle(cornerRadius: 7) + .stroke(isSelected ? Color.white.opacity(0.40) : Color.white.opacity(0.08), lineWidth: 1) + ) + .onHover { onHover($0) } + .onTapGesture { onTap() } + } +} + +private func drawOutfitIcon(context: GraphicsContext, size: CGSize, outfit: Outfit, seasonal: Outfit = .none) { + let W = size.width, H = size.height + let cx = W / 2, cy = H / 2 + let R: CGFloat = 6.5 // small scale for icon + + switch outfit { + case .auto: + let iconR: CGFloat = 10.0 + let rx = iconR * 1.14, ry = iconR * 0.88 + let mH = MochiH(R: iconR, yaw: 0, pitch: 0) + let bodyPath = mochiOutfitPath(rx, ry) + let iconCY = cy + iconR * 0.62 + + // Draw the seasonal outfit behind body + if seasonal != .none && seasonal != .auto { + drawOutfitBehindStatic(context: context, outfit: seasonal, H: mH, + cx: cx, cy: iconCY, tilt: 0, sx: 1, sy: 1, + roll: 0, morph: 0, isMini: false) + } + // Body + var ctx = context + ctx.translateBy(x: cx, y: iconCY) + ctx.fill(bodyPath, with: .linearGradient( + Gradient(colors: [Color(red: 0.929, green: 0.929, blue: 0.937), + Color(red: 0.769, green: 0.773, blue: 0.792)]), + startPoint: CGPoint(x: rx*0.7, y: -ry*0.85), + endPoint: CGPoint(x: -rx*0.8, y: ry*0.9) + )) + ctx.fill(bodyPath, with: .radialGradient( + Gradient(stops: [.init(color: .clear, location: 0.6), + .init(color: Color.black.opacity(0.2), location: 1)]), + center: .zero, startRadius: iconR*0.15, endRadius: iconR*1.25 + )) + // Eyes + var eyeCtx = ctx; eyeCtx.clip(to: bodyPath) + let ink = Color(red: 0.102, green: 0.082, blue: 0.071) + for f in mEyeFrames(mH) { + guard f.visible else { continue } + var ec = eyeCtx; ec.translateBy(x: f.x, y: f.y); ec.scaleBy(x: f.fx, y: f.fy) + let hh = max(f.h, f.w*0.3) + var pill = Path() + pill.addRoundedRect(in: CGRect(x: -f.w/2, y: -hh/2, width: f.w, height: hh), + cornerSize: CGSize(width: min(f.w/2,hh/2), height: min(f.w/2,hh/2))) + ec.fill(pill, with: .color(ink)) + } + // Front outfit + if seasonal != .none && seasonal != .auto { + drawOutfitFrontStatic(context: context, outfit: seasonal, H: mH, + cx: cx, cy: iconCY, tilt: 0, sx: 1, sy: 1, + roll: 0, morph: 0, isMini: false) + } + // AUTO badge at bottom + var badgeCtx = context + let badgeCY = iconCY + ry * 0.72 + badgeCtx.translateBy(x: cx, y: badgeCY) + let bw: CGFloat = 14, bh: CGFloat = 6.5 + var badge = Path() + badge.addRoundedRect(in: CGRect(x: -bw/2, y: -bh/2, width: bw, height: bh), + cornerSize: CGSize(width: bh/2, height: bh/2)) + badgeCtx.fill(badge, with: .color(Color.black.opacity(0.60))) + badgeCtx.draw(Text("AUTO").font(.system(size: 4.2, weight: .semibold)).foregroundColor(.white), + at: .zero) + + case .none: + var ctx = context + ctx.translateBy(x: cx, y: cy) + // Circle with diagonal slash (⊘) + var circle = Path() + circle.addEllipse(in: CGRect(x: -R * 0.82, y: -R * 0.82, width: R * 1.64, height: R * 1.64)) + ctx.stroke(circle, with: .color(Color(hex: "#454850")), style: StrokeStyle(lineWidth: 1.4, lineCap: .round)) + var slash = Path() + slash.move(to: CGPoint(x: -R * 0.56, y: R * 0.56)) + slash.addLine(to: CGPoint(x: R * 0.56, y: -R * 0.56)) + ctx.stroke(slash, with: .color(Color(hex: "#454850")), style: StrokeStyle(lineWidth: 1.4, lineCap: .round)) + + default: + // Small Mochi wearing the outfit + let iconR: CGFloat = 10.0 + let rx = iconR * 1.14, ry = iconR * 0.88 + let mH = MochiH(R: iconR, yaw: 0, pitch: 0) + let bodyPath = mochiOutfitPath(rx, ry) + let iconCY = cy + iconR * 0.62 + + // Draw outfit behind + drawOutfitBehindStatic(context: context, outfit: outfit, H: mH, + cx: cx, cy: iconCY, tilt: 0, sx: 1, sy: 1, + roll: 0, morph: 0, isMini: false) + + // Draw body + var ctx = context + ctx.translateBy(x: cx, y: iconCY) + let pumpkin = outfit == .pumpkin + let top = pumpkin ? Color(hex: "#FFA94D") : Color(red: 0.929, green: 0.929, blue: 0.937) + let bot = pumpkin ? Color(hex: "#E8590C") : Color(red: 0.769, green: 0.773, blue: 0.792) + ctx.fill(bodyPath, with: .linearGradient( + Gradient(colors: [top, bot]), + startPoint: CGPoint(x: rx * 0.7, y: -ry * 0.85), + endPoint: CGPoint(x: -rx * 0.8, y: ry * 0.9) + )) + ctx.fill(bodyPath, with: .radialGradient( + Gradient(stops: [ + .init(color: .clear, location: 0), + .init(color: .clear, location: 0.6), + .init(color: Color.black.opacity(0.2), location: 1) + ]), + center: .zero, startRadius: iconR * 0.15, endRadius: iconR * 1.25 + )) + ctx.fill(bodyPath, with: .radialGradient( + Gradient(stops: [ + .init(color: Color.white.opacity(0.55), location: 0), + .init(color: .clear, location: 1) + ]), + center: CGPoint(x: rx * 0.34, y: -ry * 0.46), + startRadius: 0, endRadius: iconR * 0.42 + )) + + // Draw eyes + var eyeCtx = ctx + eyeCtx.clip(to: bodyPath) + let ink = Color(red: 0.102, green: 0.082, blue: 0.071) + for f in mEyeFrames(mH) { + guard f.visible else { continue } + var ec = eyeCtx + ec.translateBy(x: f.x, y: f.y) + ec.scaleBy(x: f.fx, y: f.fy) + let hh = max(f.h, f.w * 0.3) + var pill = Path() + pill.addRoundedRect( + in: CGRect(x: -f.w / 2, y: -hh / 2, width: f.w, height: hh), + cornerSize: CGSize(width: min(f.w / 2, hh / 2), height: min(f.w / 2, hh / 2)) + ) + ec.fill(pill, with: .color(ink)) + } + + // Draw outfit front + drawOutfitFrontStatic(context: context, outfit: outfit, H: mH, + cx: cx, cy: iconCY, tilt: 0, sx: 1, sy: 1, + roll: 0, morph: 0, isMini: false) + } +} +// MARK: - Card background + +struct CardBackground: View { + enum Wash { case red, green, pink, amber, cyan, indigo, soft } + + let wash: Wash? + let content: (() -> Content)? + + init(wash: Wash?, @ViewBuilder content: @escaping () -> Content) { + self.wash = wash + self.content = content + } + + var washColor: Color { + switch wash { + case .red: return Color(hex: "#F4505E").opacity(0.55) + case .green: return Color(hex: "#34D399").opacity(0.5) + case .pink: return Color(hex: "#F472B6").opacity(0.55) + case .amber: return Color(hex: "#F5A524").opacity(0.42) + case .cyan: return Color(hex: "#22D3EE").opacity(0.38) + case .indigo: return Color(hex: "#6366F1").opacity(0.5) + case .soft: return Color.white.opacity(0.08) + case nil: return Color.clear + } + } + + var body: some View { + ZStack { + RoundedRectangle(cornerRadius: 20) + .fill(Color(hex: "#141518")) + .overlay( + RadialGradient( + gradient: Gradient(stops: [ + .init(color: washColor, location: 0), + .init(color: .clear, location: 0.7) + ]), + center: UnitPoint(x: 0.5, y: 1.3), + startRadius: 0, + endRadius: 280 + ) + .clipShape(RoundedRectangle(cornerRadius: 20)) + ) + .overlay( + RoundedRectangle(cornerRadius: 20) + .stroke(Color.white.opacity(0.035), lineWidth: 1) + ) + + if let content = content { + content() + } + } + } +} + +extension CardBackground where Content == EmptyView { + init(wash: Wash?) { + self.wash = wash + self.content = nil + } + + var body: some View { + ZStack { + RoundedRectangle(cornerRadius: 20) + .fill(Color(hex: "#141518")) + .overlay( + RadialGradient( + gradient: Gradient(stops: [ + .init(color: washColor, location: 0), + .init(color: .clear, location: 0.7) + ]), + center: UnitPoint(x: 0.5, y: 1.3), + startRadius: 0, + endRadius: 280 + ) + .clipShape(RoundedRectangle(cornerRadius: 20)) + ) + .overlay( + RoundedRectangle(cornerRadius: 20) + .stroke(Color.white.opacity(0.035), lineWidth: 1) + ) + } + } +} + +// MARK: - Shared sub-components + +struct AgentWho: View { + let task: AgentTask? + let label: String + + var body: some View { + HStack(spacing: 7) { + if let task = task { + Circle().fill(Color(hex: task.color)).frame(width: 8, height: 8) + Text(task.name).font(.system(size: 12, weight: .semibold)).foregroundColor(Color(hex: "#F5F6F8")) + } + Text(label).font(.system(size: 12)).foregroundColor(Color(hex: "#8E939C")) + } + } +} + +struct CodeBlock: View { + let text: String + + var body: some View { + Text(text) + .font(.system(size: 12, design: .monospaced)) + .padding(.horizontal, 10).padding(.vertical, 5) + .background(Color.white.opacity(0.07)) + .overlay(RoundedRectangle(cornerRadius: 10).stroke(Color.white.opacity(0.06))) + .clipShape(RoundedRectangle(cornerRadius: 10)) + .foregroundColor(Color(hex: "#E8E9EC")) + } +} + +struct ContextChip: View { + let context: PromptContext + @State private var glowing = false + + var label: String { + switch context { + case .window(let app, _, let url): + if let url = url, let host = URL(string: url)?.host { return "\(app) · \(host)" } + return app + case .file(let name, _): return name + } + } + + var body: some View { + HStack(spacing: 6) { + Circle() + .fill(LinearGradient(colors: [Color(hex: "#FF6B5B"), Color(hex: "#F7B32B"), Color(hex: "#2DD4A7"), Color(hex: "#38BDF8"), Color(hex: "#A78BFA")], startPoint: .topLeading, endPoint: .bottomTrailing)) + .frame(width: 7, height: 7) + Text(label) + .font(.system(size: 11.5)) + .foregroundColor(Color(hex: "#F1F2F4")) + } + .padding(.horizontal, 10).padding(.vertical, 4) + .background(Color.white.opacity(0.1)) + .clipShape(Capsule()) + .overlay(Capsule().stroke(Color.white.opacity(glowing ? 0.75 : 0), lineWidth: 1.5)) + .scaleEffect(glowing ? 1.06 : 1.0) + .onAppear { + withAnimation(.spring(response: 0.25, dampingFraction: 0.55)) { glowing = true } + DispatchQueue.main.asyncAfter(deadline: .now() + 0.45) { + withAnimation(.easeOut(duration: 0.3)) { glowing = false } + } + } + } +} + +struct MailField: View { + let label: String + let placeholder: String + @Binding var text: String + + var body: some View { + HStack(spacing: 8) { + Text(label) + .font(.system(size: 12.5)) + .foregroundColor(Color(hex: "#80858E")) + .frame(width: 44, alignment: .leading) + TextField(placeholder, text: $text) + .textFieldStyle(.plain) + .font(.system(size: 12.5)) + .foregroundColor(Color(hex: "#F5F6F8")) + } + .padding(.horizontal, 10).padding(.vertical, 6) + .background(Color.white.opacity(0.06)) + .clipShape(RoundedRectangle(cornerRadius: 10)) + } +} + +struct ShimmeringText: View { + let text: String + init(_ text: String) { self.text = text } + + var body: some View { + Text(text) + .foregroundStyle( + LinearGradient( + stops: [ + .init(color: Color(hex: "#7c818a"), location: 0), + .init(color: .white, location: 0.4), + .init(color: Color(hex: "#7c818a"), location: 0.7) + ], + startPoint: .leading, + endPoint: .trailing + ) + ) + } +} + +struct ShimmerOverlay: View { + @State private var phase: CGFloat = 0.0 + + var body: some View { + LinearGradient( + stops: [ + // Clamp all locations to [0,1] and keep them ordered + .init(color: .clear, location: max(0, phase - 0.3)), + .init(color: Color.white.opacity(0.6), location: max(0, min(1, phase))), + .init(color: .clear, location: min(1, phase + 0.3)) + ], + startPoint: .leading, endPoint: .trailing + ) + .blendMode(.overlay) + .onAppear { + withAnimation(.linear(duration: 2.2).repeatForever(autoreverses: false)) { + phase = 1.3 // travels left→right, exits right edge cleanly + } + } + } +} + +// MARK: - Button styles + +struct PrimaryButton: View { + let title: String + let kbd: String? + let action: () -> Void + + init(_ title: String, kbd: String? = nil, action: @escaping () -> Void) { + self.title = title; self.kbd = kbd; self.action = action + } + + var body: some View { + Button(action: action) { + HStack(spacing: 7) { + Text(title).font(.system(size: 12.5, weight: .medium)) + if let k = kbd { + Text(k).font(.system(size: 10.5)) + .padding(.horizontal, 4) + .overlay(RoundedRectangle(cornerRadius: 4).stroke(Color.black.opacity(0.4))) + .opacity(0.55) + } + } + .padding(.horizontal, 13).padding(.vertical, 7) + .background(Color(hex: "#F5F6F8")) + .foregroundColor(Color(hex: "#0B0C0E")) + .clipShape(Capsule()) + } + .buttonStyle(.plain) + } +} + +struct SecondaryButton: View { + let title: String + let kbd: String? + let action: () -> Void + + init(_ title: String, kbd: String? = nil, action: @escaping () -> Void) { + self.title = title; self.kbd = kbd; self.action = action + } + + var body: some View { + Button(action: action) { + HStack(spacing: 7) { + Text(title).font(.system(size: 12.5, weight: .medium)) + if let k = kbd { + Text(k).font(.system(size: 10.5)) + .padding(.horizontal, 4) + .overlay(RoundedRectangle(cornerRadius: 4).stroke(Color.white.opacity(0.4))) + .opacity(0.55) + } + } + .padding(.horizontal, 13).padding(.vertical, 7) + .background(Color.white.opacity(0.09)) + .foregroundColor(Color(hex: "#F1F2F4")) + .clipShape(Capsule()) + } + .buttonStyle(.plain) + } +} + +struct IconButtonStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + configuration.label + .frame(width: 28, height: 28) + .background(Color.white.opacity(0.08)) + .clipShape(Circle()) + .scaleEffect(configuration.isPressed ? 0.94 : 1) + } +} + +struct SendButtonStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + configuration.label + .frame(width: 28, height: 28) + .background(Color(hex: "#F5F6F8")) + .clipShape(Circle()) + .scaleEffect(configuration.isPressed ? 0.94 : 1) + } +} + +// MARK: - Settings island view (Point 7) + +struct SettingsIslandView: View { + @ObservedObject var state: AppState + + private var claudeConnected: Bool { + let url = FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent(".claude/settings.json") + guard let data = try? Data(contentsOf: url), + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let hooks = json["hooks"] as? [String: Any], + let ss = hooks["SessionStart"] as? [[String: Any]] else { return false } + return ss.contains { matcher in + (matcher["hooks"] as? [[String: Any]])?.contains { + ($0["command"] as? String)?.contains("NotchBuddy") == true + } ?? false + } + } + + private var apiConnected: Bool { + KeychainStore.shared.get("anthropic-api-key") != nil + } + + var body: some View { + ZStack(alignment: .leading) { + CardBackground(wash: nil) + VStack(alignment: .leading, spacing: 10) { + // Sound row + HStack(spacing: 10) { + Toggle("", isOn: $state.soundEnabled) + .toggleStyle(.switch) + .labelsHidden() + .scaleEffect(0.75) + .frame(width: 44) + Text("Sound") + .font(.system(size: 12.5)) + .foregroundColor(Color(hex: "#C5C8CD")) + Slider(value: $state.soundVolume, in: 0...0.2) + .frame(width: 72) + .opacity(state.soundEnabled ? 1 : 0.4) + } + + // Auto-close row + HStack(spacing: 10) { + Image(systemName: "timer") + .font(.system(size: 12)) + .foregroundColor(Color(hex: "#8E939C")) + .frame(width: 16) + Text("Auto-close · \(Int(state.autoCloseInterval))s") + .font(.system(size: 12)) + .foregroundColor(Color(hex: "#C5C8CD")) + Spacer() + HStack(spacing: 6) { + ForEach([10, 15, 30], id: \.self) { s in + Button("\(s)s") { + state.autoCloseInterval = Double(s) + } + .font(.system(size: 11)) + .padding(.horizontal, 7).padding(.vertical, 3) + .background(state.autoCloseInterval == Double(s) ? Color(hex: "#252830") : Color.clear) + .foregroundColor(state.autoCloseInterval == Double(s) ? Color(hex: "#F5F6F8") : Color(hex: "#6B7079")) + .clipShape(Capsule()) + .buttonStyle(.plain) + } + } + } + + // Connection status + HStack(spacing: 14) { + StatusBadge(label: "Claude Code", ok: claudeConnected) + StatusBadge(label: "API", ok: apiConnected) + Spacer() + Button("Settings…") { + NotificationCenter.default.post(name: .openFullSettings, object: nil) + } + .font(.system(size: 11.5)) + .foregroundColor(Color(hex: "#8E939C")) + .buttonStyle(.plain) + } + } + .padding(.leading, 84) + .padding(.trailing, 16) + .padding(.vertical, 14) + } + } +} + +struct StatusBadge: View { + let label: String + let ok: Bool + + var body: some View { + HStack(spacing: 4) { + Circle() + .fill(ok ? Color(hex: "#22C55E") : Color(hex: "#F4505E")) + .frame(width: 6, height: 6) + Text(label) + .font(.system(size: 11)) + .foregroundColor(Color(hex: "#8E939C")) + } + } +} + +// MARK: - Color extension (lighten) + +// MARK: - Chat-provider switch (used by AI pill buttons and ↗ action) + +/// Mirrors ModelPickerView provider-chip tap: animates, fires surprised emote + "pop" sound, +/// then opens the chat view. No-op if provider is already selected (just opens chat). +@MainActor +func switchChatProvider(_ provider: ChatProvider) { + let state = AppState.shared + if provider != state.chatProvider { + withAnimation(.spring(response: 0.25, dampingFraction: 0.7)) { + state.chatProvider = provider + } + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.surprised) + SoundEngine.shared.play("pop") + } + state.view = .prompt +} + +extension Color { + func lighter(by amount: Double) -> Color { + guard let components = NSColor(self).usingColorSpace(.sRGB) else { return self } + return Color( + red: min(1, Double(components.redComponent) + amount), + green: min(1, Double(components.greenComponent) + amount), + blue: min(1, Double(components.blueComponent) + amount) + ) + } +} diff --git a/NotchBuddy/Sources/App/IslandWindowController.swift b/NotchBuddy/Sources/App/IslandWindowController.swift new file mode 100644 index 0000000..c49e37f --- /dev/null +++ b/NotchBuddy/Sources/App/IslandWindowController.swift @@ -0,0 +1,1154 @@ +import AppKit +import Combine +import SwiftUI + +@MainActor +final class IslandWindowController: NSWindowController { + + private var islandPanel: IslandPanel! + private var state: AppState { AppState.shared } + + // State machine (replaces all hover/absence/auto-close timers) + let fsm = IslandStateMachine() + + private var wasInIsland = false + private var frameTimer: Timer? + private var keyMonitor: Any? + private var viewSubscription: AnyCancellable? + + // Confused recovery timer (set by handleDizzy) + private var confusedRecoveryTimer: DispatchWorkItem? + + // Suppress peek sound on next reveal (e.g. musicReveal) + var silentNextReveal = false + + // Finished-pin timer + private var finishedPinTimer: DispatchWorkItem? + + // Bot-head hover (love emote — mirrors prototype botHover()) + private var hoverTimer: DispatchWorkItem? + private var botHoverTimer: DispatchWorkItem? + private var botHovering: Bool = false + private var lastLoveTime: Double = 0 + private var botHoverStartPos: CGPoint = .zero + + // Window attach drag (M8) + private var attachDragStart: NSPoint? = nil + private var pendingIslandClick = false // any island click → expand on mouseUp + private var inAttachDrag = false + private var dragGhostPanel: NSPanel? = nil + private var dragGhostSize: CGFloat = 0 + private var ghostCurrentOrigin: NSPoint = .zero + private var highlightPanel: NSPanel? = nil + private var highlightWindowPid: pid_t = 0 + + // Notch real dimensions (set on init) + private var notchW: CGFloat = IslandConst.notchWidth + private var notchH: CGFloat = IslandConst.notchHeight + private var hasNotch = true + + // Island-local key monitor (active only when island is key window) + private var localKeyMonitor: Any? + + convenience init() { + let screen = Self.notchScreen() ?? NSScreen.main! + let geometry = Self.screenGeometry(for: screen) + let nW = geometry.width + let nH = geometry.height + + let panelW: CGFloat = 720 + let panelH: CGFloat = 320 + let sf = screen.frame + let panel = IslandPanel( + contentRect: NSRect(x: sf.midX - panelW/2, y: sf.maxY - panelH, + width: panelW, height: panelH), + styleMask: [.borderless, .nonactivatingPanel], + backing: .buffered, defer: false + ) + panel.notchWidth = nW + panel.notchHeight = nH + + self.init(window: panel) + self.islandPanel = panel + self.notchW = nW + self.notchH = nH + self.hasNotch = geometry.hasNotch + setupPanel(screen: screen) + } + + private func setupPanel(screen: NSScreen) { + guard let panel = window as? IslandPanel else { return } + panel.backgroundColor = .clear + panel.isOpaque = false + panel.hasShadow = false + panel.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.mainMenuWindow)) + 3) + panel.collectionBehavior = [.canJoinAllSpaces, .stationary, .fullScreenAuxiliary, .ignoresCycle] + panel.ignoresMouseEvents = true + + // Propagate real notch dimensions to AppState + AppState.shared.notchWidth = notchW + AppState.shared.notchHeight = notchH + AppState.shared.hasNotch = hasNotch + + let contentSize = panel.contentRect(forFrameRect: panel.frame).size + + // Apple-recommended pattern: put NSHostingView and drag destination as siblings + // inside a common superview, rather than embedding one inside the other. + let container = NSView(frame: NSRect(origin: .zero, size: contentSize)) + container.autoresizingMask = [.width, .height] + + let hosting = NSHostingView(rootView: IslandRootView().environmentObject(AppState.shared)) + hosting.frame = NSRect(origin: .zero, size: contentSize) + hosting.autoresizingMask = [.width, .height] + + // FileDropNSView sits below the hosting view (hitTest returns nil → no mouse interference). + // AppKit routes NSDraggingDestination events to registered views independently of hitTest. + let dropView = FileDropNSView(frame: NSRect(origin: .zero, size: contentSize)) + dropView.autoresizingMask = [.width, .height] + dropView.onDragEntered = { [weak self] loc in + Task { @MainActor in + let iLoc = self?.windowToIsland(loc) ?? CGPoint(x: 320, y: 88) + AppState.shared.fileDragOver = true + // enterZone sets isActive=true BEFORE hookExpand triggers re-render, + // so IslandContainer sees isActive=true when state.view becomes .upload. + UploadSequenceEngine.shared.enterZone(x: iLoc.x, y: iLoc.y) + NotificationCenter.default.post(name: .hookExpand, object: IslandView.upload) + NotificationCenter.default.post(name: .botMorphTo, object: CGFloat(1)) + } + } + dropView.onDragUpdated = { [weak self] loc in + Task { @MainActor in + let iLoc = self?.windowToIsland(loc) ?? CGPoint(x: 320, y: 88) + UploadSequenceEngine.shared.updateCursor(x: iLoc.x, y: iLoc.y) + } + } + dropView.onDragExited = { + Task { @MainActor in + AppState.shared.fileDragOver = false + // Do NOT collapse — drag session still active; island stays open. + NotificationCenter.default.post(name: .botMorphTo, object: CGFloat(0)) + UploadSequenceEngine.shared.exitZone() + } + } + dropView.onFilesDropped = { urls in + Task { @MainActor in + await FileDropHandler.handle(urls: urls, state: AppState.shared) + } + } + + container.addSubview(hosting) // z-bottom: SwiftUI + mouse events + container.addSubview(dropView) // z-top: drag only (hitTest→nil, transparent to mouse) + panel.contentView = container + + startPolling() + startKeyMonitor() + startLocalKeyMonitor() + startHotKeys() + wireFSM() + + // Make panel key whenever the prompt/chat view becomes active + // (nonactivatingPanel never auto-becomes key, but TextField needs it) + viewSubscription = state.$view + .receive(on: DispatchQueue.main) + .sink { [weak self] newView in + guard let self else { return } + if newView == .prompt { + self.islandPanel.makeKey() + } + } + } + + // MARK: - FSM wiring + + private func wireFSM() { + fsm.onTransition = { [weak self] from, to in + guard let self else { return } + switch to { + case .hidden: + self.setMode(.hidden) + + case .petit: + if from == .coucou { + // Fire interrupt first so canvas collapse starts before mode change + NotificationCenter.default.post(name: .greetingInterrupt, object: nil) + } else if from == .hidden { + if self.silentNextReveal { + self.silentNextReveal = false + } else { + SoundEngine.shared.play("peek") + } + } + // setMode BEFORE changing view: onChange(of: state.view) guards on .expanded, + // so setting view while already compact won't trigger a spurious open animation. + self.setMode(.compact) + if from == .coucou { self.state.view = self.defaultView() } + // Start 60s hide timer if mouse is not currently over the island + if !self.wasInIsland { self.fsm.mouseLeft() } + + case .home: + self.expand(to: self.defaultView()) + // Start collapse timer if mouse not currently hovering + if !self.wasInIsland { + self.fsm.mouseLeft() + } + + case .coucou: + self.expand(to: .greeting) + } + } + + // FSM observes greetComplete notification + NotificationCenter.default.addObserver( + forName: .greetComplete, object: nil, queue: .main + ) { [weak self] _ in + self?.fsm.greetComplete() + } + + fsm.isHeldOpen = { AppState.shared.pendingApproval != nil } + } + + // MARK: - 60 Hz polling loop + + private func startPolling() { + frameTimer = Timer.scheduledTimer(withTimeInterval: 1.0/60.0, repeats: true) { [weak self] _ in + guard let self else { return } + Task { @MainActor in self.pollFrame() } + } + RunLoop.main.add(frameTimer!, forMode: .common) + } + + private func pollFrame() { + guard let panel = window as? IslandPanel else { return } + + let mouse = NSEvent.mouseLocation + + // Convert mouse to panel-local coords (macOS: origin bottom-left) + let pf = panel.frame + let local = CGPoint(x: mouse.x - pf.minX, y: mouse.y - pf.minY) + + // Island rect in panel coords + let islandRect = panel.currentIslandFrame(nw: notchW, nh: notchH) + // On a screen without a notch, the resting bar must not intercept clicks + // in the app window immediately below the menu bar. + let hoverRect = !hasNotch && state.mode != .expanded + ? islandRect : islandRect.insetBy(dx: -6, dy: -6) + let inIsland = hoverRect.contains(local) + + // Toggle click-through + let shouldAcceptMouse = inIsland || inAttachDrag || attachDragStart != nil + if panel.ignoresMouseEvents == shouldAcceptMouse { + panel.ignoresMouseEvents = !shouldAcceptMouse + if shouldAcceptMouse, let cv = panel.contentView { + panel.invalidateCursorRects(for: cv) + } + } + + // Mouse in screen coords (Y flipped, origin top-left) for Bot look-at + let screenH = panel.screen?.frame.height ?? NSScreen.main!.frame.height + let newPos = CGPoint(x: mouse.x - (panel.screen?.frame.minX ?? 0), y: screenH - mouse.y) + let cur = AppState.shared.mousePosition + if abs(newPos.x - cur.x) > 1 || abs(newPos.y - cur.y) > 1 { + AppState.shared.mousePosition = newPos + } + + // AppState can hide the island by itself (last task ended): keep the FSM in step. + if state.mode == .hidden && fsm.state == .petit { fsm.hiddenExternally() } + + // Feed FSM hover enter/leave + if inIsland && !wasInIsland { + guard !inAttachDrag else { wasInIsland = inIsland; return } + // If in coucou: tell greeting to stay open (tc → infinity) + if fsm.state == .coucou { + NotificationCenter.default.post(name: .greetingHover, object: nil) + } + fsm.mouseEntered() + } + if !inIsland && wasInIsland { + fsm.mouseLeft() + } + wasInIsland = inIsland + + // Bot-head hover (love emote) + let overBot = state.mode == .expanded && state.stateOverride == nil && isBotHit(local) + if overBot && !botHovering { botHoverIn(mousePos: NSEvent.mouseLocation) } + if !overBot && botHovering { botHoverOut() } + botHovering = overBot + if botHovering { + let m = NSEvent.mouseLocation + let dist = hypot(m.x - botHoverStartPos.x, m.y - botHoverStartPos.y) + if dist > 40 { + botHoverStartPos = m + botHoverTimer?.cancel() + scheduleLoveTimer() + } + } + + // Ghost Mochi follows cursor + window highlight during drag (60 Hz, no throttle) + if inAttachDrag { + updateDragGhost() + updateWindowHighlight() + } + } + + private var lastMouse: CGPoint = .zero + + // MARK: - Bot-head hover (love emote — mirrors prototype botHover()) + + private func botHoverIn(mousePos: CGPoint) { + guard state.mode == .expanded, state.stateOverride == nil else { return } + guard CACurrentMediaTime() - lastLoveTime > 6 else { return } + botHoverStartPos = mousePos + NotificationCenter.default.post(name: .botBlink, object: nil) + NotificationCenter.default.post(name: .botSetTgEs, object: CGFloat(1.08)) + SoundEngine.shared.play("hover") + scheduleLoveTimer() + } + + private func botHoverOut() { + botHoverTimer?.cancel() + NotificationCenter.default.post(name: .botSetTgEs, object: CGFloat(1)) + } + + private func scheduleLoveTimer() { + botHoverTimer?.cancel() + let item = DispatchWorkItem { [weak self] in + guard let self, self.botHovering, self.state.stateOverride == nil else { return } + guard CACurrentMediaTime() - self.lastLoveTime > 6 else { return } + self.lastLoveTime = CACurrentMediaTime() + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.love) + SoundEngine.shared.play("love") + } + botHoverTimer = item + DispatchQueue.main.asyncAfter(deadline: .now() + 1.9, execute: item) + } + + private func scheduleHover(after delay: TimeInterval, action: @escaping () -> Void) { + hoverTimer?.cancel() + let item = DispatchWorkItem(block: action) + hoverTimer = item + DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: item) + } + + // MARK: - Mode transitions + + private func modeLevel(_ m: IslandMode) -> Int { + switch m { case .hidden: return 0; case .compact: return 1; case .expanded: return 2 } + } + + func setMode(_ mode: IslandMode) { + let prev = state.mode + guard mode != prev else { return } + let shrinking = modeLevel(mode) < modeLevel(prev) + let anim: Animation = shrinking + ? .timingCurve(0.45, 0, 0.2, 1, duration: 0.34) + : .spring(response: 0.5, dampingFraction: 0.72) + withAnimation(anim) { state.mode = mode } + if mode == .expanded { SoundEngine.shared.play("open") } + if prev == .expanded { + SoundEngine.shared.play("close") + if fsm.isHeldOpen?() != true { state.isPinned = false } + } + } + + func expand(to view: IslandView) { + state.view = view + if state.mode == .expanded { + // Already expanded — just switch view + } else { + setMode(.expanded) + } + state.lastActivity = .now + } + + func collapse() { + guard fsm.isHeldOpen?() != true else { return } + state.isPinned = false + finishedPinTimer?.cancel() + // Keep the FSM in step with what is on screen (home/coucou → petit now). + fsm.collapse() + setMode(.compact) + window?.resignKey() + } + + // MARK: - Global hot keys (Carbon) + + private func startHotKeys() { + HotKeyCenter.shared.start { [weak self] action in + self?.handleHotKey(action) + } + } + + func handleHotKey(_ action: ShortcutAction) { + switch action { + case .toggleIsland: + if state.mode == .expanded { + collapse() + } else { + islandPanel.makeKey() + expand(to: defaultView()) + } + + case .openChat: + islandPanel.makeKey() + expand(to: .prompt) + + case .goToAlert: + if state.pendingApproval != nil { + islandPanel.makeKey() + expand(to: .approval) + } else if state.pendingQuestion != nil { + islandPanel.makeKey() + expand(to: .question) + } else { + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.annoyed) + SoundEngine.shared.play("error") + } + + case .jumpToTerminal: + #if !APPSTORE + performJumpToTerminal() + #endif + + case .attachFrontWindow: + #if !APPSTORE + performAttachFrontWindow() + #endif + + case .nextPill: + cyclePill(by: +1) + + case .prevPill: + cyclePill(by: -1) + + case .muteToggle: + state.soundEnabled.toggle() + if state.soundEnabled { SoundEngine.shared.play("tick") } + NotificationCenter.default.post( + name: .triggerEmote, + object: state.soundEnabled ? BotEmote.happy : BotEmote.annoyed) + + case .desktopToggle: + DesktopMochiController.shared.flyOutOrHome() + + case .wardrobeToggle: + if state.mode == .expanded && state.view == .wardrobe { + collapse() + } else { + islandPanel.makeKey() + expand(to: .wardrobe) + } + } + } + + // MARK: - Island-local shortcuts + + private func startLocalKeyMonitor() { + localKeyMonitor = NSEvent.addLocalMonitorForEvents(matching: .keyDown) { [weak self] event in + guard let self, self.islandPanel.isKeyWindow else { return event } + return self.handleIslandKey(event) ? nil : event + } + } + + @discardableResult + private func handleIslandKey(_ event: NSEvent) -> Bool { + let raw = event.modifierFlags.intersection([.command, .control, .option, .shift]) + let cmd = raw == .command + + // ⌘→ — next pill + if cmd && event.keyCode == 124 { cyclePill(by: +1); return true } + // ⌘← — previous pill + if cmd && event.keyCode == 123 { cyclePill(by: -1); return true } + // ⌘↓ — navigate list down + if cmd && event.keyCode == 125 { navigateCard(by: +1); return true } + // ⌘↑ — navigate list up + if cmd && event.keyCode == 126 { navigateCard(by: -1); return true } + // ⌘O — open selected card item + if cmd && event.keyCode == 31 { openCardSelection(); return true } + // ⌘E — toggle diff + if cmd && event.keyCode == 14 && state.view == .overview { + NotificationCenter.default.post(name: .islandToggleDiff, object: nil) + return true + } + // ⌘↩ — send chat message + if cmd && event.keyCode == 36 && state.view == .prompt { + NotificationCenter.default.post(name: .islandSendMessage, object: nil) + return true + } + // ⌘K — new conversation + if cmd && event.keyCode == 40 && state.view == .prompt { + NotificationCenter.default.post(name: .islandNewConversation, object: nil) + return true + } + // ⌘, — open Settings + if cmd && event.keyCode == 43 { + NotificationCenter.default.post(name: .openFullSettings, object: nil) + return true + } + // ⌘P — pin / unpin + if cmd && event.keyCode == 35 { + state.isPinned.toggle() + return true + } + // ⌘1–⌘9 — switch to pill by number + let digitCodes: [UInt16: Int] = [18:1,19:2,20:3,21:4,23:5,22:6,26:7,28:8,25:9] + if cmd, let n = digitCodes[event.keyCode] { + switchToPill(number: n); return true + } + // ⎋ Escape — focused views (.onExitCommand) have first crack; fall back to collapse + if event.keyCode == 53 && raw.isEmpty { + let consumed = NSApp.sendAction(Selector(("cancelOperation:")), to: nil, from: nil) + if !consumed && state.mode == .expanded && !state.isPinned { + collapse() + } + return true + } + return false + } + + // MARK: - Pill cycling helpers + + private func cyclePill(by delta: Int) { + guard !state.tasks.isEmpty else { return } + let ids = state.tasks.map { $0.id } + let cur = ids.firstIndex(of: state.focusId ?? "") ?? 0 + state.setFocus(ids[(cur + delta + ids.count) % ids.count]) + state.cardSelection = nil + expand(to: .overview) + } + + private func switchToPill(number: Int) { + guard number >= 1, number <= state.tasks.count else { return } + state.setFocus(state.tasks[number - 1].id) + state.cardSelection = nil + expand(to: .overview) + } + + private func navigateCard(by delta: Int) { + guard state.cardItemCount > 0 else { return } + state.cardSelection = ShortcutLogic.navigate( + selection: state.cardSelection, delta: delta, itemCount: state.cardItemCount) + } + + private func openCardSelection() { + guard state.cardSelection != nil else { return } + NotificationCenter.default.post(name: .islandActivateCardSelection, object: nil) + } + + // MARK: - Terminal jump + + #if !APPSTORE + private func performJumpToTerminal() { + guard state.focusTask != nil else { + SoundEngine.shared.play("error") + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.annoyed) + return + } + let terminalBundleIds = ["com.apple.Terminal", "com.googlecode.iterm2", + "net.kovidgoyal.kitty", "com.mitchellh.ghostty"] + let activated = terminalBundleIds.compactMap { id in + NSWorkspace.shared.runningApplications.first { $0.bundleIdentifier == id } + }.first.map { $0.activate(options: .activateIgnoringOtherApps) } + if activated == nil { + NSWorkspace.shared.open( + URL(fileURLWithPath: "/System/Applications/Utilities/Terminal.app")) + } + collapse() + } + + private func performAttachFrontWindow() { + guard let app = state.lastExternalApp else { + SoundEngine.shared.play("error"); return + } + guard let ctx = WindowContextCapture.captureActive(from: app) else { + SoundEngine.shared.play("error"); return + } + state.promptContext = ctx + SoundEngine.shared.play("approve") + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.happy) + islandPanel.makeKey() + expand(to: .prompt) + } + #endif + + // MARK: - Keyboard (Escape closes) + + private func startKeyMonitor() { + keyMonitor = NSEvent.addGlobalMonitorForEvents(matching: .keyDown) { [weak self] event in + Task { @MainActor in + guard let self = self else { return } + if event.keyCode == 53 { // Escape + if self.state.mode == .expanded && !self.state.isPinned { + self.collapse() + } + } + } + } + + // Hook server expand requests (alerts only) + NotificationCenter.default.addObserver(forName: .hookExpand, object: nil, queue: .main) { [weak self] note in + guard let self, let view = note.object as? IslandView else { return } + self.fsm.openedExternally() + self.expand(to: view) + } + + // Hook server compact reveal (non-alert work events: session start, tool use, etc.) + NotificationCenter.default.addObserver(forName: .hookReveal, object: nil, queue: .main) { [weak self] _ in + guard let self else { return } + self.fsm.reveal() + } + + // Music started playing: reveal silently (no peek sound) + NotificationCenter.default.addObserver(forName: .musicReveal, object: nil, queue: .main) { [weak self] _ in + guard let self else { return } + self.silentNextReveal = true + self.fsm.reveal() + self.silentNextReveal = false + } + + // Collapse requests from views (OK button, etc.) + NotificationCenter.default.addObserver(forName: .islandCollapse, object: nil, queue: .main) { [weak self] _ in + self?.collapse() + } + + // Wardrobe open/close from desktop Mochi right-click (does NOT post .hookExpand) + NotificationCenter.default.addObserver(forName: .openWardrobeFromDesktop, object: nil, queue: .main) { [weak self] _ in + guard let self else { return } + if self.state.mode == .expanded && self.state.view == .wardrobe { + withAnimation(.spring(response: 0.3, dampingFraction: 0.8)) { + self.state.view = .overview + } + } else { + self.expand(to: .wardrobe) + } + } + + // .botDizzy — posted by BotEngine.slap() on 3rd hit; show confused view + recover after 3.3s + NotificationCenter.default.addObserver(forName: .botDizzy, object: nil, queue: .main) { [weak self] _ in + self?.handleDizzy() + } + + // Window attach drag. + // Uses MainActor.assumeIsolated (synchronous) to avoid race with pollFrame(). + // Global mouseUp is the reliable fallback when cursor is outside our panel frame. + NSEvent.addLocalMonitorForEvents(matching: .leftMouseDown) { [weak self] event in + guard let self else { return event } + MainActor.assumeIsolated { + guard self.wasInIsland else { return } + self.pendingIslandClick = true + self.hoverTimer?.cancel() + self.botHoverTimer?.cancel() + self.botHovering = false + // Drag only starts when clicking directly on the bot head + guard self.isBotHit(event.locationInWindow) else { return } + // Notch Mochi is invisible when on desktop — no drag, no slap + guard !self.state.mochiOnDesktop else { return } + self.attachDragStart = NSEvent.mouseLocation + // Post slap only when expanded + guard self.state.mode == .expanded else { return } + NotificationCenter.default.post(name: .triggerSlap, object: nil) + } + return event + } + NSEvent.addLocalMonitorForEvents(matching: .leftMouseDragged) { [weak self] event in + guard let self else { return event } + MainActor.assumeIsolated { + guard let start = self.attachDragStart, !self.inAttachDrag else { return } + let m = NSEvent.mouseLocation + guard hypot(m.x - start.x, m.y - start.y) > 3 else { return } + self.inAttachDrag = true + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.love) + self.showDragGhost() + } + return event + } + + // mouseUp — local (cursor still in panel) + global (cursor moved outside panel frame) + let finishDrag: @Sendable () -> Void = { [weak self] in + Task { @MainActor in + guard let self, self.inAttachDrag else { return } + let mouse = NSEvent.mouseLocation + self.inAttachDrag = false + self.attachDragStart = nil + self.state.stateOverride = nil + + #if !APPSTORE + let windowCtx = self.windowContextAtPoint(mouse) + let inNotchZone = self.window?.frame.contains(mouse) == true + + if let ctx = windowCtx { + // Drop on a window → attach context as before + self.hideDragGhost() + self.state.promptContext = ctx + SoundEngine.shared.play("approve") + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.happy) + self.expand(to: .prompt) + } else if !inNotchZone { + // Drop outside notch zone → install Mochi on the desktop. + // Prevent hideDragGhost from closing the ghost panel so we can promote it. + let ghost = self.dragGhostPanel + self.dragGhostPanel = nil // nil first so hideDragGhost skips close + self.hideDragGhost() // resets isDraggingBot, closes highlight panel + DesktopMochiController.shared.install(ghostPanel: ghost, at: mouse) + } else { + // Drop back in notch zone → Mochi returns to notch + self.hideDragGhost() + } + #else + let inNotchZoneAS = self.window?.frame.contains(mouse) == true + if !inNotchZoneAS { + let ghost = self.dragGhostPanel + self.dragGhostPanel = nil + self.hideDragGhost() + DesktopMochiController.shared.install(ghostPanel: ghost, at: mouse) + } else { + self.hideDragGhost() + } + #endif + } + } + NSEvent.addLocalMonitorForEvents(matching: .leftMouseUp) { [weak self] event in + guard let self else { return event } + MainActor.assumeIsolated { + let hadPendingClick = self.pendingIslandClick + let wasDragging = self.inAttachDrag + self.pendingIslandClick = false + if wasDragging { + finishDrag() + } else { + self.attachDragStart = nil + if hadPendingClick && self.state.mode != .expanded { + if self.fsm.state == .home { + // FSM already thinks it's open (e.g. the view folded it): just reopen. + self.expand(to: self.defaultView()) + } else { + self.fsm.click() // FSM petit/hidden→home; onTransition calls expand(to:) + } + } + } + } + return event + } + NSEvent.addGlobalMonitorForEvents(matching: .leftMouseUp) { _ in + finishDrag() + } + + NSEvent.addLocalMonitorForEvents(matching: .rightMouseDown) { [weak self] event in + guard let self else { return event } + MainActor.assumeIsolated { + guard self.wasInIsland, self.isBotHit(event.locationInWindow) else { return } + guard !self.state.mochiOnDesktop else { return } + if self.state.mode == .expanded && self.state.view == .wardrobe { + withAnimation(.spring(response: 0.3, dampingFraction: 0.8)) { + self.state.view = .overview + } + } else { + self.expand(to: .wardrobe) + } + } + return event + } + + // Track last external app for window context capture + let ourBundle = Bundle.main.bundleIdentifier ?? "" + NSWorkspace.shared.notificationCenter.addObserver( + forName: NSWorkspace.didActivateApplicationNotification, + object: nil, queue: .main + ) { [weak self] note in + guard let self else { return } + if let app = note.userInfo?[NSWorkspace.applicationUserInfoKey] as? NSRunningApplication, + app.bundleIdentifier != ourBundle { + self.state.lastExternalApp = app + } + } + } + + // MARK: - Drag ghost window (Mochi follows cursor during drag) + + private func showDragGhost() { + guard dragGhostPanel == nil else { return } + // Same size as compact bot: diameter=20 → canvasSize≈33, scale 2× for grab comfort + let canvasSize: CGFloat = 40 / 0.6 // ~67 + dragGhostSize = canvasSize + + let mouse = NSEvent.mouseLocation + let s = dragGhostSize + ghostCurrentOrigin = NSPoint(x: mouse.x - s/2, y: mouse.y - s/2) + + let panel = NSPanel( + contentRect: NSRect(x: ghostCurrentOrigin.x, y: ghostCurrentOrigin.y, width: s, height: s), + styleMask: [.borderless, .nonactivatingPanel], + backing: .buffered, + defer: false + ) + panel.backgroundColor = .clear + panel.isOpaque = false + panel.hasShadow = false + panel.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.mainMenuWindow)) + 4) + panel.collectionBehavior = [.canJoinAllSpaces, .stationary, .ignoresCycle] + panel.ignoresMouseEvents = true + + let hosting = NSHostingView( + rootView: GhostBotView(canvasSize: canvasSize) + ) + hosting.frame = NSRect(x: 0, y: 0, width: s, height: s) + panel.contentView = hosting + panel.alphaValue = 0 + panel.orderFront(nil) + dragGhostPanel = panel + AppState.shared.isDraggingBot = true + + // Fade + scale-in handled by GhostBotView SwiftUI animation; + // also fade in the window itself for extra smoothness + NSAnimationContext.runAnimationGroup { ctx in + ctx.duration = 0.18 + ctx.timingFunction = CAMediaTimingFunction(name: .easeOut) + panel.animator().alphaValue = 1 + } + } + + private func hideDragGhost() { + dragGhostPanel?.close() + dragGhostPanel = nil + highlightPanel?.close() + highlightPanel = nil + highlightWindowPid = 0 + AppState.shared.isDraggingBot = false + } + + private func updateDragGhost() { + guard let panel = dragGhostPanel else { return } + let s = dragGhostSize + let mouse = NSEvent.mouseLocation + // Direct follow — bot is "held", no trailing lag + ghostCurrentOrigin = NSPoint(x: mouse.x - s/2, y: mouse.y - s/2) + panel.setFrameOrigin(ghostCurrentOrigin) + } + + // MARK: - Window highlight overlay (white border on target window during drag) + + private func updateWindowHighlight() { + let mouse = NSEvent.mouseLocation + guard let (appKitBounds, pid) = windowBoundsAtScreenPoint(mouse) else { + // Fade out + close if no window under cursor + if let old = highlightPanel { + let captured = old + highlightPanel = nil + highlightWindowPid = 0 + NSAnimationContext.runAnimationGroup({ ctx in + ctx.duration = 0.12 + ctx.timingFunction = CAMediaTimingFunction(name: .easeIn) + captured.animator().alphaValue = 0 + }, completionHandler: { captured.close() }) + } + return + } + + if pid == highlightWindowPid, let existing = highlightPanel { + // Same window — just track position (windows rarely move, instant is fine) + existing.setFrame(appKitBounds, display: false) + } else { + // New window — close old immediately, fade-in new + highlightPanel?.close() + highlightPanel = nil + highlightWindowPid = pid + + let panel = NSPanel( + contentRect: appKitBounds, + styleMask: [.borderless, .nonactivatingPanel], + backing: .buffered, defer: false + ) + panel.backgroundColor = .clear + panel.isOpaque = false + panel.hasShadow = false + panel.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.mainMenuWindow)) + 2) + panel.collectionBehavior = [.canJoinAllSpaces, .stationary, .ignoresCycle] + panel.ignoresMouseEvents = true + + let hosting = NSHostingView(rootView: + RoundedRectangle(cornerRadius: 12) + .stroke(Color.white.opacity(0.75), lineWidth: 3) + .shadow(color: Color.white.opacity(0.5), radius: 16) + .padding(2) + .ignoresSafeArea() + ) + hosting.frame = CGRect(origin: .zero, size: appKitBounds.size) + hosting.autoresizingMask = [.width, .height] + panel.contentView = hosting + panel.alphaValue = 0 + panel.orderFront(nil) + highlightPanel = panel + + NSAnimationContext.runAnimationGroup { ctx in + ctx.duration = 0.14 + ctx.timingFunction = CAMediaTimingFunction(name: .easeOut) + panel.animator().alphaValue = 1 + } + } + } + + private func windowBoundsAtScreenPoint(_ screenPoint: NSPoint) -> (CGRect, pid_t)? { + guard let screen = window?.screen ?? NSScreen.main else { return nil } + let screenMaxY = screen.frame.maxY + let cgPoint = CGPoint(x: screenPoint.x, y: screenMaxY - screenPoint.y) + + guard let list = CGWindowListCopyWindowInfo( + [.optionOnScreenOnly, .excludeDesktopElements], kCGNullWindowID + ) as? [[String: Any]] else { return nil } + + let ourBundle = Bundle.main.bundleIdentifier ?? "" + for info in list { + guard let b = info[kCGWindowBounds as String] as? [String: Any], + let x = b["X"] as? CGFloat, let y = b["Y"] as? CGFloat, + let w = b["Width"] as? CGFloat, let h = b["Height"] as? CGFloat else { continue } + guard CGRect(x: x, y: y, width: w, height: h).contains(cgPoint) else { continue } + let pid = info[kCGWindowOwnerPID as String] as? pid_t ?? 0 + guard let app = NSRunningApplication(processIdentifier: pid), + app.bundleIdentifier != ourBundle, + app.activationPolicy == .regular else { continue } + // CG → AppKit: flip Y + return (CGRect(x: x, y: screenMaxY - y - h, width: w, height: h), pid) + } + return nil + } + + // MARK: - Window context at screen point (for drag-attach) + + func windowContextAtPoint(_ screenPoint: NSPoint) -> PromptContext? { + let screen = window?.screen ?? NSScreen.main + // CGWindowList uses top-left origin; NSEvent.mouseLocation uses bottom-left + let screenMaxY = screen?.frame.maxY ?? NSScreen.main!.frame.maxY + let cgPoint = CGPoint(x: screenPoint.x, y: screenMaxY - screenPoint.y) + + guard let windowList = CGWindowListCopyWindowInfo( + [.optionOnScreenOnly, .excludeDesktopElements], kCGNullWindowID + ) as? [[String: Any]] else { return nil } + + let ourBundle = Bundle.main.bundleIdentifier ?? "" + + for info in windowList { + guard let b = info[kCGWindowBounds as String] as? [String: Any], + let x = b["X"] as? CGFloat, let y = b["Y"] as? CGFloat, + let w = b["Width"] as? CGFloat, let h = b["Height"] as? CGFloat else { continue } + guard CGRect(x: x, y: y, width: w, height: h).contains(cgPoint) else { continue } + + let pid = info[kCGWindowOwnerPID as String] as? pid_t ?? 0 + guard let app = NSRunningApplication(processIdentifier: pid), + app.bundleIdentifier != ourBundle, + app.activationPolicy == .regular else { continue } + + return WindowContextCapture.captureActive(from: app) + } + return nil + } + + // MARK: - Coordinate conversion: window (AppKit, y-up) → island coords (y-down, 0,0 = island top-left) + + func windowToIsland(_ loc: CGPoint) -> CGPoint { + let panelH = window?.frame.height ?? 320 + let panelW = window?.frame.width ?? 720 + let islandLeft = (panelW - IslandConst.expandedWidth) / 2 + // Island is glued to panel top; its bottom in AppKit = panelH - 176 + return CGPoint( + x: loc.x - islandLeft, + y: panelH - loc.y // AppKit y is from bottom; island y from top + ) + } + + // MARK: - Helpers + + func defaultView() -> IslandView { + if state.pendingApproval != nil { return .approval } + return state.tasks.isEmpty ? .empty : .overview + } + + func baseMode() -> IslandMode { + guard state.isPresent else { return .hidden } + return state.tasks.isEmpty ? .hidden : .compact + } + + // MARK: - Activity reset (call on any user interaction in island) + + func resetActivity() { + state.lastActivity = .now + } + + // MARK: - Finished task pin (5.2s) + + func pinForFinished(taskId: String) { + state.isPinned = true + finishedPinTimer?.cancel() + let item = DispatchWorkItem { [weak self] in + guard let self else { return } + self.state.removeTask(id: taskId) + self.state.isPinned = false + self.collapse() + } + finishedPinTimer = item + DispatchQueue.main.asyncAfter(deadline: .now() + 5.2, execute: item) + } + + // MARK: - Dizzy recovery (triggered by BotEngine.slap via .botDizzy) + + private func handleDizzy() { + let prevView = state.view + state.stateOverride = .dizzy + expand(to: .confused) + confusedRecoveryTimer?.cancel() + let recovery = DispatchWorkItem { [weak self] in + guard let self else { return } + self.state.stateOverride = nil + if self.state.view == .confused { + let fallback = self.state.tasks.isEmpty ? IslandView.empty : .overview + self.state.view = (prevView == .confused) ? fallback : prevView + } + NotificationCenter.default.post(name: .triggerEmote, object: BotEmote.happy) + } + confusedRecoveryTimer = recovery + DispatchQueue.main.asyncAfter(deadline: .now() + 3.3, execute: recovery) + } + + // MARK: - Bot hit test (for slap trigger) + + private func isBotHit(_ windowPoint: CGPoint) -> Bool { + let s = AppState.shared + let panelH = window?.frame.height ?? 320 + let panelW = window?.frame.width ?? 720 + let (islandW, fixedH) = islandSize(mode: s.mode, view: s.view, + progress: s.uploadProgress, nw: notchW, nh: notchH) + // Chat view resizes dynamically — must match IslandContainer.chatPromptHeight + let islandH: CGFloat + if s.mode == .expanded && s.view == .prompt { + let base: CGFloat = 240 + let perMsg: CGFloat = 40 + islandH = min(300, base + CGFloat(s.chatHistory.count) * perMsg) + } else { + islandH = fixedH + } + let islandMinX = (panelW - islandW) / 2 + let (cx, cy, diameter, _) = botPosition(mode: s.mode, view: s.view, + islandW: islandW, islandH: islandH, + uploadProgress: s.uploadProgress, hasNotch: s.hasNotch) + let radius = (diameter / 0.6) / 2 + // botPosition cy is from island TOP; panel AppKit coords have y=0 at bottom + // island top in AppKit coords = panelH (island glued to top of panel/screen) + let botX = islandMinX + cx + let botY = panelH - cy + let dx = windowPoint.x - botX + let dy = windowPoint.y - botY + return dx*dx + dy*dy <= radius * radius + } + + // MARK: - Notch detection (static) + + static func notchScreen() -> NSScreen? { + NSScreen.screens.first { $0.safeAreaInsets.top > 0 } + } + + static func screenGeometry(for screen: NSScreen) -> IslandScreenGeometry { + let visibleMenuBarHeight = screen.frame.maxY - screen.visibleFrame.maxY + // visibleFrame includes the menu bar only while it is visible. Keep a + // small resting bar when menus auto-hide or the app is in full screen. + let menuBarHeight = visibleMenuBarHeight > 0 + ? visibleMenuBarHeight : NSStatusBar.system.thickness + return IslandScreenGeometry( + screenWidth: screen.frame.width, safeAreaTop: screen.safeAreaInsets.top, + auxiliaryLeftWidth: screen.auxiliaryTopLeftArea?.width, + auxiliaryRightWidth: screen.auxiliaryTopRightArea?.width, + menuBarHeight: menuBarHeight + ) + } + + nonisolated func cleanup() { + // Called explicitly before release if needed + } +} + +// MARK: - IslandPanel + +final class IslandPanel: NSPanel { + var notchWidth: CGFloat = IslandConst.notchWidth + var notchHeight: CGFloat = IslandConst.notchHeight + + override var canBecomeKey: Bool { true } + override var canBecomeMain: Bool { false } + + /// Allow panel to sit in the menu bar / notch area — don't let macOS push it down. + override func constrainFrameRect(_ frameRect: NSRect, to screen: NSScreen?) -> NSRect { + return frameRect + } + + func currentIslandFrame(nw: CGFloat, nh: CGFloat) -> CGRect { + let s = AppState.shared + let (w, fixedH) = islandSize(mode: s.mode, view: s.view, + progress: s.uploadProgress, nw: nw, nh: nh) + let h: CGFloat + if s.mode == .expanded && s.view == .prompt { + let base: CGFloat = 240 + let perMsg: CGFloat = 40 + h = min(300, base + CGFloat(s.chatHistory.count) * perMsg) + } else { + h = fixedH + } + return CGRect(x: (frame.width - w) / 2, y: frame.height - h, width: w, height: h) + } +} + +// MARK: - Ghost bot view (animated scale-in on appear) + +struct GhostBotView: View { + let canvasSize: CGFloat + @State private var scale: CGFloat = 0.35 + + var body: some View { + BotCanvasView(state: AppState.shared) + .frame(width: canvasSize, height: canvasSize) + .scaleEffect(scale) + .onAppear { + withAnimation(.spring(response: 0.28, dampingFraction: 0.55)) { + scale = 1.0 + } + } + } +} + +// MARK: - Notification names + +extension Notification.Name { + static let triggerEmote = Notification.Name("notchBuddy.triggerEmote") + static let triggerSlap = Notification.Name("notchBuddy.triggerSlap") + static let botDizzy = Notification.Name("notchBuddy.botDizzy") + static let botGreet = Notification.Name("notchBuddy.botGreet") + static let botBlink = Notification.Name("notchBuddy.botBlink") + static let botSetTgEs = Notification.Name("notchBuddy.botSetTgEs") + static let botGulp = Notification.Name("notchBuddy.botGulp") + static let botMorphTo = Notification.Name("notchBuddy.botMorphTo") + static let islandAction = Notification.Name("notchBuddy.islandAction") + static let islandCollapse = Notification.Name("notchBuddy.islandCollapse") + static let islandSendMessage = Notification.Name("notchBuddy.islandSendMessage") + static let islandNewConversation = Notification.Name("notchBuddy.islandNewConversation") + static let islandToggleDiff = Notification.Name("notchBuddy.islandToggleDiff") + static let islandActivateCardSelection = Notification.Name("notchBuddy.islandActivateCardSelection") + static let openFullSettings = Notification.Name("notchBuddy.openFullSettings") + static let hookReveal = Notification.Name("notchBuddy.hookReveal") + static let musicReveal = Notification.Name("notchBuddy.musicReveal") + // Greeting ↔ IslandWindowController + static let greetComplete = Notification.Name("notchBuddy.greetComplete") + static let greetingHover = Notification.Name("notchBuddy.greetingHover") + static let greetingInterrupt = Notification.Name("notchBuddy.greetingInterrupt") + static let openWardrobeFromDesktop = Notification.Name("notchBuddy.openWardrobeFromDesktop") +} + +// MARK: - islandSize (takes real notch dimensions) + +func islandSize(mode: IslandMode, view: IslandView, + progress: Double = 0, + nw: CGFloat = IslandConst.notchWidth, + nh: CGFloat = IslandConst.notchHeight) -> (CGFloat, CGFloat) { + switch mode { + case .hidden: return (nw, nh) + case .compact: return (nw + 160, nh) + case .expanded: + let layout = IslandConst.viewLayouts[view]! + return (IslandConst.expandedWidth, layout.height) + } +} diff --git a/NotchBuddy/Sources/App/LocalChat.swift b/NotchBuddy/Sources/App/LocalChat.swift new file mode 100644 index 0000000..0bb3e0a --- /dev/null +++ b/NotchBuddy/Sources/App/LocalChat.swift @@ -0,0 +1,208 @@ +import Foundation + +// MARK: - Typed error for local model calls + +enum LocalChatError: Error { + /// The server is not reachable (wrong URL, not running, network error). + case serverUnreachable(String) + /// The model was requested but is not installed on the server. + case modelNotFound(String) + /// The server replied with an error message. + case serverError(String) + + var localizedDescription: String { + switch self { + case .serverUnreachable(let url): return "Cannot reach \(url). Is the server running?" + case .modelNotFound(let model): return "Model '\(model)' is not installed." + case .serverError(let msg): return msg + } + } +} + +// MARK: - Local model helpers (Foundation only) + +enum LocalChat { + + // MARK: URL normalisation + + /// Removes trailing slashes and common documentation sub-paths (/api, /v1). + static func normaliseURL(_ raw: String) -> String { + var s = raw.trimmingCharacters(in: .whitespacesAndNewlines) + while s.hasSuffix("/") { s = String(s.dropLast()) } + for suffix in ["/api", "/v1"] { + if s.hasSuffix(suffix) { s = String(s.dropLast(suffix.count)) } + } + return s + } + + // MARK: SSE parsing + + /// Parses `delta.content` from one OpenAI-SSE event line. + /// Returns nil for non-data lines, `[DONE]`, missing or null content. + static func parseSSEDelta(_ line: String) -> String? { + guard line.hasPrefix("data: ") else { return nil } + let payload = String(line.dropFirst(6)) + guard payload != "[DONE]" else { return nil } + guard let data = payload.data(using: .utf8), + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let choices = json["choices"] as? [[String: Any]], + let delta = choices.first?["delta"] as? [String: Any], + let content = delta["content"] as? String else { return nil } + return content + } + + // MARK: Think-block filtering + + /// Removes completed `…` blocks (reasoning models like DeepSeek-R1). + static func filterThinkingBlocks(_ text: String) -> String { + let pattern = "[\\s\\S]*?" + guard let regex = try? NSRegularExpression(pattern: pattern) else { return text } + let range = NSRange(text.startIndex..., in: text) + return regex.stringByReplacingMatches(in: text, options: [], range: range, withTemplate: "") + .trimmingCharacters(in: .whitespacesAndNewlines) + } + + /// For streaming: removes closed think blocks AND hides content inside an + /// open (unclosed) `` block that hasn't received its closing tag yet. + static func progressiveFilter(_ text: String) -> String { + let cleaned = filterThinkingBlocks(text) + if let range = cleaned.range(of: "") { + return String(cleaned[.. Result<[(id: String, label: String)], LocalChatError> { + guard let url = URL(string: "\(baseURL)/v1/models") else { + return .failure(.serverUnreachable(baseURL)) + } + var req = URLRequest(url: url, timeoutInterval: 5) + req.setValue("Bearer ollama", forHTTPHeaderField: "Authorization") + do { + let (data, response) = try await URLSession.shared.data(for: req) + guard let http = response as? HTTPURLResponse, http.statusCode == 200, + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let items = json["data"] as? [[String: Any]] else { + return .failure(.serverUnreachable(baseURL)) + } + let excluded = ["embed", "bge-", "all-minilm", "clip", "rerank"] + let models = items.compactMap { item -> (id: String, label: String)? in + guard let id = item["id"] as? String else { return nil } + let lower = id.lowercased() + guard !excluded.contains(where: { lower.contains($0) }) else { return nil } + return (id: id, label: id) + } + return .success(models) + } catch { + return .failure(.serverUnreachable(baseURL)) + } + } + + /// Fetches models from a local OpenAI-compatible server (`GET /v1/models`). + /// Filters out embedding and non-chat models (nomic-embed, bge, clip, rerank…). + static func fetchModels(baseURL: String) async -> [(id: String, label: String)] { + if case .success(let models) = await fetchModelsResult(baseURL: baseURL) { return models } + return [] + } + + // MARK: Streaming chat + + /// Sends a conversation to a local OpenAI-compatible server and streams the reply. + /// + /// - Parameters: + /// - baseURL: Base URL of the server (e.g. `http://localhost:11434`). + /// - model: Model identifier. + /// - messages: OpenAI-format message array (`[{"role":…,"content":…}]`). + /// - onToken: Called on the **main actor** with the current visible text after + /// each new token. Think-block content is hidden while the block is open. + /// - Returns: The complete final response with thinking blocks removed. + /// - Throws: `LocalChatError` + /// Convenience overload that accepts messages as `[[String: Any]]`. + /// Serialises the body on the caller's actor before crossing the isolation boundary. + static func streamChat( + baseURL: String, + model: String, + messages: [[String: Any]], + onToken: @MainActor @escaping (String) -> Void + ) async throws -> String { + let body: [String: Any] = [ + "model": model, + "messages": messages, + "stream": true, + "max_tokens": 4096, + ] + let bodyData = (try? JSONSerialization.data(withJSONObject: body)) ?? Data() + return try await streamChat(baseURL: baseURL, encodedBody: bodyData, model: model, onToken: onToken) + } + + static func streamChat( + baseURL: String, + encodedBody: Data, + model: String, + onToken: @MainActor @escaping (String) -> Void + ) async throws -> String { + guard let url = URL(string: "\(baseURL)/v1/chat/completions") else { + throw LocalChatError.serverUnreachable(baseURL) + } + + var req = URLRequest(url: url, timeoutInterval: 300) + req.httpMethod = "POST" + req.setValue("application/json", forHTTPHeaderField: "Content-Type") + req.setValue("Bearer ollama", forHTTPHeaderField: "Authorization") + req.httpBody = encodedBody + + let bytes: URLSession.AsyncBytes + let response: URLResponse + do { + (bytes, response) = try await URLSession.shared.bytes(for: req) + } catch { + throw LocalChatError.serverUnreachable(baseURL) + } + + let status = (response as? HTTPURLResponse)?.statusCode ?? 0 + + if status == 404 { + throw LocalChatError.modelNotFound(model) + } + + if status != 200 { + var raw = "" + do { for try await byte in bytes { raw.append(Character(UnicodeScalar(byte))); if raw.count > 4096 { break } } } catch {} + if let data = raw.data(using: .utf8), + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let msg = ((json["error"] as? [String: Any])?["message"] as? String) { + throw LocalChatError.serverError(msg) + } + throw LocalChatError.serverError("HTTP \(status)") + } + + var accumulated = "" + var lastUpdate = Date.distantPast + let minInterval: TimeInterval = 1.0 / 15.0 + do { + for try await line in bytes.lines { + guard let delta = parseSSEDelta(line) else { continue } + accumulated += delta + let now = Date() + if now.timeIntervalSince(lastUpdate) >= minInterval { + lastUpdate = now + let visible = progressiveFilter(accumulated) + await MainActor.run { onToken(visible) } + } + } + } catch { + throw LocalChatError.serverUnreachable(baseURL) + } + // Always send the final filtered state + let visible = progressiveFilter(accumulated) + await MainActor.run { onToken(visible) } + + return filterThinkingBlocks(accumulated) + .trimmingCharacters(in: .whitespacesAndNewlines) + } +} diff --git a/NotchBuddy/Sources/App/MusicController.swift b/NotchBuddy/Sources/App/MusicController.swift new file mode 100644 index 0000000..3578e38 --- /dev/null +++ b/NotchBuddy/Sources/App/MusicController.swift @@ -0,0 +1,279 @@ +#if !APPSTORE +import Foundation +import AppKit +import Combine + +// MARK: - Music Controller + +/// Observes Apple Music state via distributed notifications and provides playback controls. +/// Singleton, @MainActor, GitHub build only. +@MainActor +final class MusicController: ObservableObject { + static let shared = MusicController() + + @Published var trackTitle: String? + @Published var artist: String? + @Published var album: String? + + private var notifTokens: [Any] = [] + private var cancellables = Set() + private let queue = DispatchQueue(label: "fr.louisraille.coucou.music") + + private var isPillActive: Bool { + AppState.shared.activeIntegrations.contains("integration_music") + } + + private init() { + // playerInfo fires whenever Music state changes (play/pause/track change). + // Extract Sendable String? values before crossing into @MainActor. + let tok1 = DistributedNotificationCenter.default().addObserver( + forName: NSNotification.Name("com.apple.Music.playerInfo"), + object: nil, + queue: .main + ) { [weak self] notif in + let info = notif.userInfo + let playerState = info?["Player State"] as? String + let name = info?["Name"] as? String + let artist = info?["Artist"] as? String + let album = info?["Album"] as? String + Task { @MainActor [weak self] in + self?.handlePlayerInfo(playerState: playerState, name: name, artist: artist, album: album) + } + } + notifTokens.append(tok1) + + // Track Music launch — read current state only if granted and pill active + let tok2 = NSWorkspace.shared.notificationCenter.addObserver( + forName: NSWorkspace.didLaunchApplicationNotification, + object: nil, + queue: .main + ) { [weak self] notif in + let bundleId = (notif.userInfo?[NSWorkspace.applicationUserInfoKey] + as? NSRunningApplication)?.bundleIdentifier + guard bundleId == "com.apple.Music" else { return } + Task { @MainActor [weak self] in + guard let self else { return } + guard self.isPillActive, + UserDefaults.standard.bool(forKey: "coucou.musicAutomationGranted") else { return } + self.fetchAndApply() + } + } + notifTokens.append(tok2) + + // Clear state when Music quits + let tok3 = NSWorkspace.shared.notificationCenter.addObserver( + forName: NSWorkspace.didTerminateApplicationNotification, + object: nil, + queue: .main + ) { [weak self] notif in + let bundleId = (notif.userInfo?[NSWorkspace.applicationUserInfoKey] + as? NSRunningApplication)?.bundleIdentifier + guard bundleId == "com.apple.Music" else { return } + Task { @MainActor [weak self] in self?.clearState() } + } + notifTokens.append(tok3) + + // Observe activeIntegrations — pill activated → initial read; deactivated → clear + AppState.shared.$activeIntegrations + .sink { [weak self] integrations in + guard let self else { return } + if integrations.contains("integration_music") { + if self.isMusicRunning(), + UserDefaults.standard.bool(forKey: "coucou.musicAutomationGranted") { + self.fetchAndApply() + } + } else { + self.clearState() + } + } + .store(in: &cancellables) + } + + // MARK: - Private helpers + + private func isMusicRunning() -> Bool { + NSWorkspace.shared.runningApplications.contains { $0.bundleIdentifier == "com.apple.Music" } + } + + // MARK: - Metadata cleaners + + private static func shortTitle(_ raw: String) -> String { + guard !raw.isEmpty else { return raw } + var s = raw + // Cut at first " - " + if let r = s.range(of: " - ") { + s = String(s[.. String { + guard !raw.isEmpty else { return raw } + let lower = raw.lowercased() + for tag in [" feat.", " ft."] { + if let r = lower.range(of: tag) { + let result = String(raw[..= 4 else { return } + let playing = values[0] == "playing" + let wasPlaying = AppState.shared.musicPlaying + trackTitle = values[1].isEmpty ? nil : Self.shortTitle(values[1]) + artist = values[2].isEmpty ? nil : Self.shortArtist(values[2]) + album = values[3].isEmpty ? nil : values[3] + AppState.shared.musicPlaying = playing + syncTaskName() + if playing && !wasPlaying { + NotificationCenter.default.post(name: .musicReveal, object: nil) + } + } + } + + private func clearState() { + trackTitle = nil; artist = nil; album = nil + AppState.shared.musicPlaying = false + syncTaskName() + } + + private func syncTaskName() { + guard let idx = AppState.shared.tasks.firstIndex(where: { $0.id == "integration_music" }) else { return } + let title = trackTitle ?? "" + AppState.shared.tasks[idx].name = title.isEmpty + ? (PillCatalog.definition(for: "integration_music")?.name ?? "Apple Music") + : title + } + + // MARK: - Playback controls + + func playPause() { + guard isMusicRunning() else { return } + Task { await runAppleScript(#"tell application id "com.apple.Music" to playpause"#) } + } + + func nextTrack() { + guard isMusicRunning() else { return } + Task { await runAppleScript(#"tell application id "com.apple.Music" to next track"#) } + } + + func previousTrack() { + guard isMusicRunning() else { return } + Task { await runAppleScript(#"tell application id "com.apple.Music" to back track"#) } + } + + func openMusic() { + if let app = NSWorkspace.shared.runningApplications.first(where: { $0.bundleIdentifier == "com.apple.Music" }) { + app.activate(options: .activateIgnoringOtherApps) + } else { + NSWorkspace.shared.open(URL(fileURLWithPath: "/System/Applications/Music.app")) + } + } + + func openAutomationSettings() { + if let url = URL(string: "x-apple.systempreferences:com.apple.preference.security?Privacy_Automation") { + NSWorkspace.shared.open(url) + } + } + + // MARK: - AppleScript runner + + enum ScriptResult { case success([String]), denied, error } + + @discardableResult + private func runAppleScript(_ source: String) async -> ScriptResult { + await withCheckedContinuation { cont in + queue.async { + let script = NSAppleScript(source: source)! + var errDict: NSDictionary? + let desc = script.executeAndReturnError(&errDict) + if let errDict { + let code = (errDict[NSAppleScript.errorNumber] as? Int) ?? 0 + if code == -1743 { + Task { @MainActor in + AppState.shared.musicAutomationDenied = true + UserDefaults.standard.set(false, forKey: "coucou.musicAutomationGranted") + } + cont.resume(returning: .denied) + } else { + cont.resume(returning: .error) + } + return + } + Task { @MainActor in + UserDefaults.standard.set(true, forKey: "coucou.musicAutomationGranted") + AppState.shared.musicAutomationDenied = false + } + // Extract values on this queue before resuming (avoids NSAppleEventDescriptor Sendable issues) + var values: [String] = [] + let count = desc.numberOfItems + if count > 0 { + for i in 1...count { + values.append(desc.atIndex(i)?.stringValue ?? "") + } + } else { + values = [desc.stringValue ?? ""] + } + cont.resume(returning: .success(values)) + } + } + } +} +#endif diff --git a/NotchBuddy/Sources/App/N8nPoller.swift b/NotchBuddy/Sources/App/N8nPoller.swift new file mode 100644 index 0000000..3ce76e4 --- /dev/null +++ b/NotchBuddy/Sources/App/N8nPoller.swift @@ -0,0 +1,259 @@ +import Foundation + +// MARK: - N8nPoller +// Polls n8n for the latest workflow execution every 15s. +// Tries /api/v1/executions first, falls back to /rest/executions. +// On a new terminal execution: fetches full details, stores [name, detail] in steps. + +final class N8nPoller: @unchecked Sendable { + static let shared = N8nPoller() + private var timer: DispatchSourceTimer? + private var lastExecutionId: String = "" + + private init() {} + + func start() { + guard timer == nil else { return } + let t = DispatchSource.makeTimerSource(queue: .global(qos: .background)) + t.schedule(deadline: .now() + 3, repeating: 15) + t.setEventHandler { [weak self] in self?.poll() } + t.resume() + timer = t + } + + // MARK: - Poll list endpoint + + private func poll() { + guard let apiKey = KeychainStore.shared.get("n8n-api-key"), + let rawBase = KeychainStore.shared.get("n8n-url") else { + n8nLog("No API key or URL configured") + return + } + let base = rawBase.trimmingCharacters(in: CharacterSet(charactersIn: "/")) + let endpoints = [ + "\(base)/api/v1/executions?limit=1&includeData=false", + "\(base)/rest/executions?limit=1&includeData=false", + ] + tryList(endpoints, apiKey: apiKey, base: base, idx: 0) + } + + private func tryList(_ urls: [String], apiKey: String, base: String, idx: Int) { + guard idx < urls.count, let url = URL(string: urls[idx]) else { + n8nLog("All list endpoints failed") + return + } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue(apiKey, forHTTPHeaderField: "X-N8N-API-KEY") + req.setValue("application/json", forHTTPHeaderField: "Accept") + n8nLog("Polling \(url.host ?? "?")\(url.path)") + + URLSession.shared.dataTask(with: req) { [weak self] data, response, error in + guard let self else { return } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + if let error { + self.n8nLog("Network error: \(error.localizedDescription)") + self.tryList(urls, apiKey: apiKey, base: base, idx: idx + 1) + return + } + guard let data else { + self.tryList(urls, apiKey: apiKey, base: base, idx: idx + 1) + return + } + self.n8nLog("HTTP \(code) · \(data.count) bytes") + guard code == 200 else { + self.tryList(urls, apiKey: apiKey, base: base, idx: idx + 1) + return + } + guard let json = try? JSONSerialization.jsonObject(with: data) else { return } + + // Response is either { "data": [...] } or [...] + let items: [[String: Any]] + if let obj = json as? [String: Any], let arr = obj["data"] as? [[String: Any]] { + items = arr + } else if let arr = json as? [[String: Any]] { + items = arr + } else { + self.n8nLog("Unexpected response shape") + return + } + + guard let first = items.first else { self.n8nLog("No executions found"); return } + + let id: String + if let s = first["id"] as? String { id = s } + else if let n = first["id"] as? Int { id = "\(n)" } + else { self.n8nLog("No id in execution"); return } + + guard id != self.lastExecutionId else { + self.n8nLog("Same id=\(id) — no change") + return + } + + // Terminal check: use status field — more reliable than the `finished` bool + // (published workflows often have finished=false on error) + let status = first["status"] as? String ?? "" + let isTerminal = ["success", "error", "crashed", "canceled", "failed"].contains(status) + guard isTerminal else { + self.n8nLog("id=\(id) status=\(status.isEmpty ? "?" : status) — not terminal") + return + } + + self.lastExecutionId = id + let success = status == "success" + self.n8nLog("New execution id=\(id) status=\(status)") + + // Fetch full detail (includeData=true required in some n8n versions) + let detailUrls = [ + "\(base)/api/v1/executions/\(id)?includeData=true", + "\(base)/api/v1/executions/\(id)", + "\(base)/rest/executions/\(id)?includeData=true", + "\(base)/rest/executions/\(id)", + ] + self.fetchDetail(detailUrls, apiKey: apiKey, success: success, idx: 0) + }.resume() + } + + // MARK: - Fetch full execution detail + + private func fetchDetail(_ urls: [String], apiKey: String, success: Bool, idx: Int) { + guard idx < urls.count, let url = URL(string: urls[idx]) else { + dispatch(success: success, name: "Workflow", detail: nil) + return + } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue(apiKey, forHTTPHeaderField: "X-N8N-API-KEY") + req.setValue("application/json", forHTTPHeaderField: "Accept") + + URLSession.shared.dataTask(with: req) { [weak self] data, response, _ in + guard let self else { return } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + guard let data, code == 200 else { + self.n8nLog("Detail HTTP \(code) \(url.host ?? "?")\(url.path)") + self.fetchDetail(urls, apiKey: apiKey, success: success, idx: idx + 1) + return + } + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else { + self.fetchDetail(urls, apiKey: apiKey, success: success, idx: idx + 1) + return + } + let name = self.extractWorkflowName(from: json) + let detail = self.parseDetail(from: json, success: success) + self.n8nLog("Parsed: \(name)") + self.dispatch(success: success, name: name, detail: detail) + }.resume() + } + + private func extractWorkflowName(from json: [String: Any]) -> String { + if let wd = json["workflowData"] as? [String: Any], let name = wd["name"] as? String { return name } + if let name = json["name"] as? String { return name } + return "Workflow" + } + + // MARK: - Parse execution output / error message + + private func parseDetail(from json: [String: Any], success: Bool) -> String? { + guard let execData = json["data"] as? [String: Any], + let resultData = execData["resultData"] as? [String: Any] else { return nil } + + if success { + return parseSuccessDetail(resultData: resultData) + } else { + return parseErrorDetail(resultData: resultData) + } + } + + private func parseErrorDetail(resultData: [String: Any]) -> String? { + // Top-level error + if let error = resultData["error"] as? [String: Any] { + let msg = error["message"] as? String ?? "" + if let node = (error["node"] as? [String: Any])?["name"] as? String, !node.isEmpty { + return "\(node)\n\(msg)" + } + return msg + } + // Scan runData for first node error + if let runData = resultData["runData"] as? [String: Any] { + for (nodeName, runs) in runData { + if let runs = runs as? [[String: Any]], + let run = runs.first, + let err = run["error"] as? [String: Any], + let msg = err["message"] as? String { + return "\(nodeName)\n\(msg)" + } + } + } + return nil + } + + private func parseSuccessDetail(resultData: [String: Any]) -> String? { + guard let lastNode = resultData["lastNodeExecuted"] as? String, + let runData = resultData["runData"] as? [String: Any], + let nodeRuns = runData[lastNode] as? [[String: Any]], + let run = nodeRuns.first, + let data = run["data"] as? [String: Any], + let main = data["main"] as? [[[String: Any]]], + let items = main.first else { return nil } + + let count = items.count + let header = "→ \(lastNode) · \(count) item\(count == 1 ? "" : "s")" + + // Preview first item's JSON keys (up to 4) + if let firstItem = items.first, + let jsonObj = firstItem["json"] as? [String: Any], !jsonObj.isEmpty { + let lines = jsonObj.prefix(4).map { "\($0.key): \(fmtValue($0.value))" } + return "\(header)\n\(lines.joined(separator: "\n"))" + } + return header + } + + private func fmtValue(_ v: Any) -> String { + if let s = v as? String { return String(s.prefix(50)) } + if let n = v as? NSNumber { return n.stringValue } + if let a = v as? [Any] { return "[\(a.count)]" } + if v is [String: Any] { return "{…}" } + return "\(v)" + } + + // MARK: - Dispatch to main + + private func dispatch(success: Bool, name: String, detail: String?) { + DispatchQueue.main.async { self.handleExecution(success: success, name: name, detail: detail) } + } + + @MainActor + private func handleExecution(success: Bool, name: String, detail: String?) { + let state = AppState.shared + + // Apply workflow filter (empty = all workflows) + if !state.n8nWorkflowFilter.isEmpty && !state.n8nWorkflowFilter.contains(name) { return } + + state.n8nRuns = Array(([N8nRun(workflow: name, detail: detail, success: success, date: Date())] + + state.n8nRuns).prefix(10)) + + guard let idx = state.tasks.firstIndex(where: { $0.id == "integration_n8n" }) else { return } + let focused = state.focusId == "integration_n8n" + + state.tasks[idx].state = success ? .finished : .error + state.tasks[idx].steps = detail != nil ? [name, detail!] : [name] + + if !focused { + state.tasks[idx].pillBadge = success ? .finished : .error + } + SoundEngine.shared.play(success ? "finish" : "error") + + // Auto-clear after 60s (user needs time to read detail) + DispatchQueue.main.asyncAfter(deadline: .now() + 60) { + guard let i = state.tasks.firstIndex(where: { $0.id == "integration_n8n" }) else { return } + guard state.tasks[i].state == .finished || state.tasks[i].state == .error else { return } + state.tasks[i].state = .idle + state.tasks[i].steps = [] + state.tasks[i].pillBadge = nil + } + } + + // MARK: - Logging + + private func n8nLog(_ message: String) { + appendAppLog("n8n.log", message, timestampFormat: "HH:mm:ss") + } +} diff --git a/NotchBuddy/Sources/App/NotchBuddyApp.swift b/NotchBuddy/Sources/App/NotchBuddyApp.swift new file mode 100644 index 0000000..2adffe9 --- /dev/null +++ b/NotchBuddy/Sources/App/NotchBuddyApp.swift @@ -0,0 +1,13 @@ +import SwiftUI +import AppKit + +@main +struct NotchBuddyApp: App { + @NSApplicationDelegateAdaptor(AppDelegate.self) var delegate + + var body: some Scene { + Settings { + SettingsView() + } + } +} diff --git a/NotchBuddy/Sources/App/NotionPoller.swift b/NotchBuddy/Sources/App/NotionPoller.swift new file mode 100644 index 0000000..1e6b7c3 --- /dev/null +++ b/NotchBuddy/Sources/App/NotionPoller.swift @@ -0,0 +1,99 @@ +import Foundation + +final class NotionPoller: @unchecked Sendable { + static let shared = NotionPoller() + private var timer: DispatchSourceTimer? + private init() {} + + func start() { + guard timer == nil else { return } + let t = DispatchSource.makeTimerSource(queue: .global(qos: .background)) + t.schedule(deadline: .now() + 9, repeating: 300) + t.setEventHandler { [weak self] in self?.poll() } + t.resume() + timer = t + } + + func pollNow() { poll() } + + private func poll() { + guard let token = KeychainStore.shared.get("notion-api-key") else { return } + guard let url = URL(string: "https://api.notion.com/v1/search") else { return } + var req = URLRequest(url: url, timeoutInterval: 10) + req.httpMethod = "POST" + req.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + req.setValue("2022-06-28", forHTTPHeaderField: "Notion-Version") + req.setValue("application/json", forHTTPHeaderField: "Content-Type") + let body: [String: Any] = [ + "sort": ["direction": "descending", "timestamp": "last_edited_time"], + "page_size": 3 + ] + req.httpBody = try? JSONSerialization.data(withJSONObject: body) + + URLSession.shared.dataTask(with: req) { [weak self] data, response, error in + guard let self else { return } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + if code != 200 { + let msg: String + if code == 401 { msg = "Invalid API key (401)" } + else if code == 0 { msg = error?.localizedDescription ?? "No connection" } + else { msg = "API error \(code)" } + DispatchQueue.main.async { AppState.shared.notionError = msg } + return + } + guard let data, + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let results = json["results"] as? [[String: Any]] else { return } + + let pages = results.compactMap { self.parsePage($0) } + DispatchQueue.main.async { + AppState.shared.notionError = nil + AppState.shared.notionPages = pages + AppState.shared.notionLoaded = true + } + }.resume() + } + + private func parsePage(_ obj: [String: Any]) -> NotionPage? { + guard let id = obj["id"] as? String else { return nil } + let objType = obj["object"] as? String ?? "page" + + var title = "Untitled" + if objType == "database" { + if let arr = obj["title"] as? [[String: Any]], + let text = arr.first?["plain_text"] as? String, !text.isEmpty { + title = text + } + } else { + if let props = obj["properties"] as? [String: Any] { + for (_, val) in props { + guard let prop = val as? [String: Any], + (prop["type"] as? String) == "title", + let arr = prop["title"] as? [[String: Any]], + let text = arr.first?["plain_text"] as? String, !text.isEmpty else { continue } + title = text; break + } + } + } + + var emoji: String? = nil + if let icon = obj["icon"] as? [String: Any], + (icon["type"] as? String) == "emoji", + let em = icon["emoji"] as? String { + emoji = em + } + + guard let editedStr = obj["last_edited_time"] as? String else { return nil } + let iso = ISO8601DateFormatter() + iso.formatOptions = [.withInternetDateTime, .withFractionalSeconds] + var lastEdited = iso.date(from: editedStr) + if lastEdited == nil { + let iso2 = ISO8601DateFormatter(); iso2.formatOptions = [.withInternetDateTime] + lastEdited = iso2.date(from: editedStr) + } + guard let lastEdited else { return nil } + + let pageURL = (obj["url"] as? String) ?? "https://notion.so" + return NotionPage(id: id, title: title, emoji: emoji, lastEditedAt: lastEdited, url: pageURL) + } +} diff --git a/NotchBuddy/Sources/App/PhoneLink/ApprovalRelay.swift b/NotchBuddy/Sources/App/PhoneLink/ApprovalRelay.swift new file mode 100644 index 0000000..0f52846 --- /dev/null +++ b/NotchBuddy/Sources/App/PhoneLink/ApprovalRelay.swift @@ -0,0 +1,163 @@ +#if PHONE_LINK +import AppKit +import CloudKit +import Combine +import CryptoKit + +// MARK: - iPhone plan, step 7: approve or deny from the iPhone +// +// While Claude Code (or Cursor, Codex) waits for a permission: +// 1. an `ApprovalRequest` record goes to iCloud; the iPhone's query subscription +// turns it into a notification; +// 2. the Mac looks for a `Decision` record every 2 s — only while a request is +// pending, so nothing runs at rest; +// 3. a decision is applied only if its fingerprint matches the request still +// pending (same session, tool, command and input). A late decision, or one +// meant for another command, is ignored. Only "allow" and "deny" exist: no +// "always" from the phone. +// The request record is deleted as soon as the approval is resolved, on either side. + +@MainActor +final class ApprovalRelay { + static let shared = ApprovalRelay() + + private let container = CKContainer(identifier: "iCloud.fr.louisraille.Coucou") + private var database: CKDatabase { container.privateCloudDatabase } + private var zoneID: CKRecordZone.ID { SessionSnapshot.zoneID } + + private var cancellable: AnyCancellable? + private var current: (fingerprint: String, since: Date)? + private var pollTask: Task? + private var changeToken: CKServerChangeToken? + + /// Stable identifier of one pending request. + nonisolated static func fingerprint(_ approval: ApprovalInfo) -> String { + let raw = [approval.pillId, approval.sessionId, approval.tool, approval.command, approval.inputKey] + .joined(separator: "\u{1F}") + return SHA256.hash(data: Data(raw.utf8)).map { String(format: "%02x", $0) }.joined() + } + + func start() { + guard cancellable == nil else { return } + // @Published sends the new value before the property changes, so the + // value is passed along rather than read back from AppState. + cancellable = AppState.shared.$pendingApproval + .removeDuplicates { $0.map(Self.fingerprint) == $1.map(Self.fingerprint) } + .sink { [weak self] approval in + MainActor.assumeIsolated { self?.pendingChanged(to: approval) } + } + log("relay on") + } + + func stop() { + cancellable = nil + pendingChanged(to: nil) + } + + // MARK: Request lifecycle + + private func pendingChanged(to approval: ApprovalInfo?) { + let fingerprint = approval.map(Self.fingerprint) + if let old = current, old.fingerprint != fingerprint { + pollTask?.cancel() + pollTask = nil + current = nil + let id = requestID(old.fingerprint) + Task { _ = try? await database.modifyRecords(saving: [], deleting: [id]) } + } + guard let fingerprint, let approval, current?.fingerprint != fingerprint else { return } + current = (fingerprint, Date()) + Task { await publishRequest(approval, fingerprint: fingerprint) } + pollTask = Task { [weak self] in + // The Mac dismisses the request after 115 s anyway. + for _ in 0..<60 { + try? await Task.sleep(for: .seconds(2)) + guard !Task.isCancelled, let self else { return } + if await self.checkDecisions(for: fingerprint) { return } + } + } + } + + private func requestID(_ fingerprint: String) -> CKRecord.ID { + CKRecord.ID(recordName: "approval-\(fingerprint.prefix(32))", zoneID: zoneID) + } + + private func publishRequest(_ approval: ApprovalInfo, fingerprint: String) async { + let record = CKRecord(recordType: "ApprovalRequest", recordID: requestID(fingerprint)) + record["pillId"] = approval.pillId + record["fingerprint"] = fingerprint + record["createdAt"] = Date() + record.encryptedValues["tool"] = approval.tool + record.encryptedValues["command"] = approval.command + do { + _ = try await database.modifyRecords(saving: [record], deleting: [], savePolicy: .allKeys) + log("approval request sent to the iPhone (\(approval.tool))") + } catch { + log("approval request failed: \(error.localizedDescription)") + } + } + + // MARK: Decisions + + /// Returns true once a matching decision was applied. + private func checkDecisions(for fingerprint: String) async -> Bool { + guard current?.fingerprint == fingerprint, let since = current?.since else { return true } + var found: [(CKRecord.ID, String, String)] = [] // id, fingerprint, decision + do { + var more = true + while more { + let changes = try await database.recordZoneChanges(inZoneWith: zoneID, since: changeToken) + for (id, result) in changes.modificationResultsByID { + guard case .success(let mod) = result, mod.record.recordType == "Decision" else { continue } + let record = mod.record + let decidedAt = record["decidedAt"] as? Date ?? .distantPast + guard decidedAt >= since.addingTimeInterval(-5) else { continue } + found.append((id, record["fingerprint"] as? String ?? "", record["decision"] as? String ?? "")) + } + changeToken = changes.changeToken + more = changes.moreComing + } + } catch let error as CKError where error.code == .changeTokenExpired { + changeToken = nil + return false + } catch { + log("decision check failed: \(error.localizedDescription)") + return false + } + guard !found.isEmpty else { return false } + // Decisions are single use. + let ids = found.map(\.0) + Task { _ = try? await database.modifyRecords(saving: [], deleting: ids) } + + guard let match = found.first(where: { $0.1 == fingerprint }) else { + log("ignored \(found.count) decision(s) for another request") + return false + } + apply(match.2, fingerprint: fingerprint) + return true + } + + private func apply(_ decision: String, fingerprint: String) { + // Check again on the main actor, right before answering the hook. + guard let pending = AppState.shared.pendingApproval, + Self.fingerprint(pending) == fingerprint else { + log("decision arrived after the request was resolved, ignored") + return + } + switch decision { + case "allow": + log("allowed from the iPhone: \(pending.tool)") + HookServer.shared.sendApprovalDecision("allow") + case "deny": + log("denied from the iPhone: \(pending.tool)") + HookServer.shared.sendApprovalDecision("deny") + default: + log("unknown decision '\(decision)', ignored") + } + } + + private func log(_ message: String) { + CloudProbe.shared.log("[approval] \(message)") + } +} +#endif diff --git a/NotchBuddy/Sources/App/PhoneLink/CloudProbe.swift b/NotchBuddy/Sources/App/PhoneLink/CloudProbe.swift new file mode 100644 index 0000000..24a6507 --- /dev/null +++ b/NotchBuddy/Sources/App/PhoneLink/CloudProbe.swift @@ -0,0 +1,277 @@ +#if PHONE_LINK +import AppKit +import CloudKit + +// MARK: - iPhone link +// +// Starts and stops the iPhone sync (Settings → General → iPhone, off by +// default): push registration and SessionPublisher. Nothing runs and nothing +// is sent to iCloud while it is off. +// +// Step 1 spike, kept for testing: when the phoneLinkPing default is on, proves +// that the Mac and the iPhone app share a private CloudKit database: +// writes a `Ping` every 60 s, waits for the iPhone's `Pong`, and logs the +// round trip to ~/Library/Logs/NotchBuddy/nb.log. Pongs arrive both through a +// silent push (CKDatabaseSubscription) and a 5 s poll, so the log shows which +// path is faster. Compiled only with PHONE_LINK; normal builds never see it. + +@MainActor +final class CloudProbe { + static let shared = CloudProbe() + + static let containerID = "iCloud.fr.louisraille.Coucou" + static let zoneID = CKRecordZone.ID(zoneName: "Coucou", ownerName: CKCurrentUserDefaultName) + private static let subscriptionID = "coucou-zone-mac" + + private let container = CKContainer(identifier: CloudProbe.containerID) + private var database: CKDatabase { container.privateCloudDatabase } + + private let launchDate = Date() + private var ready = false + private var pingCount = 0 + private var changeToken: CKServerChangeToken? + private var seenPongs = Set() + private var fetching = false + private var lastPushAt: Date? + private var started = false + private var pingTask: Task? + private var pollTask: Task? + + private var appLabel: String { + #if APPSTORE + "CoucouAppStore" + #else + "NotchBuddy" + #endif + } + + private var macName: String { + Host.current().localizedName ?? ProcessInfo.processInfo.hostName + } + + static let enabledKey = "iPhoneSyncEnabled" + + static var isEnabled: Bool { UserDefaults.standard.bool(forKey: enabledKey) } + + /// Called at launch: starts only if the user turned the iPhone sync on. + func startIfEnabled() { + if Self.isEnabled { start() } + } + + func setEnabled(_ on: Bool) { + UserDefaults.standard.set(on, forKey: Self.enabledKey) + if on { start() } else { stop() } + } + + private func stop() { + guard started else { return } + started = false + pingTask?.cancel(); pingTask = nil + pollTask?.cancel(); pollTask = nil + NSApplication.shared.unregisterForRemoteNotifications() + SessionPublisher.shared.stop() + ApprovalRelay.shared.stop() + QuestionRelay.shared.stop() + ServiceDetailRunner.shared.stop() + ServicePublisher.shared.stop() + TurnRecorder.shared.stop() + #if !APPSTORE + InstructionRunner.shared.stop() + #endif + LiveActivityRelay.shared.stop() + log("iPhone sync off") + } + + private func start() { + guard !started else { return } + started = true + #if DEBUG + let build = "debug" + #else + let build = "release" + #endif + log("starting (\(appLabel), \(build) build, container \(Self.containerID))") + NSApplication.shared.registerForRemoteNotifications() + SessionPublisher.shared.start() + ApprovalRelay.shared.start() + QuestionRelay.shared.start() + ServiceDetailRunner.shared.start() + ServicePublisher.shared.start() + TurnRecorder.shared.start() + #if !APPSTORE + InstructionRunner.shared.startIfEnabled() + #endif + LiveActivityRelay.shared.startIfEnabled() + // The silent database subscription, so the iPhone's requests (services) wake this Mac. + Task { _ = await prepare() } + + // Step 1 Ping/Pong test: off unless asked for, so the Mac stays idle at rest + // (defaults write fr.louisraille.NotchBuddy phoneLinkPing -bool YES). + guard UserDefaults.standard.bool(forKey: "phoneLinkPing") else { + log("ping test off (phoneLinkPing)") + return + } + pingTask = Task { [weak self] in + while !Task.isCancelled { + await self?.pingTick() + try? await Task.sleep(for: .seconds(60)) + } + } + pollTask = Task { [weak self] in + while !Task.isCancelled { + try? await Task.sleep(for: .seconds(5)) + await self?.fetchChanges(source: "poll") + } + } + } + + // MARK: Setup + + /// Checks the iCloud account, creates the zone and the subscription. + /// Returns false (and logs why) when iCloud isn't usable yet; retried on the next tick. + private func prepare() async -> Bool { + if ready { return true } + do { + let status = try await container.accountStatus() + guard status == .available else { + log("iCloud account not available (status \(describe(status))), will retry in 60 s") + return false + } + _ = try await database.modifyRecordZones(saving: [CKRecordZone(zoneID: Self.zoneID)], deleting: []) + log("zone Coucou ready") + + let sub = CKDatabaseSubscription(subscriptionID: Self.subscriptionID) + let info = CKSubscription.NotificationInfo() + info.shouldSendContentAvailable = true // silent push + sub.notificationInfo = info + _ = try await database.modifySubscriptions(saving: [sub], deleting: []) + log("database subscription saved") + let subs = try await database.allSubscriptions() + log("subscriptions on this iCloud account: \(subs.map(\.subscriptionID).sorted().joined(separator: ", "))") + ready = true + return true + } catch { + log("setup failed: \(error.localizedDescription)") + return false + } + } + + // MARK: Ping + + private func pingTick() async { + guard await prepare() else { return } + pingCount += 1 + let record = CKRecord(recordType: "Ping", + recordID: CKRecord.ID(recordName: UUID().uuidString, zoneID: Self.zoneID)) + let sentAt = Date() + record["macName"] = macName + record["app"] = appLabel + record["sentAt"] = sentAt + record.encryptedValues["message"] = "Ping #\(pingCount) from \(appLabel)" + do { + _ = try await database.save(record) + log("Ping #\(pingCount) saved in \(String(format: "%.1f", Date().timeIntervalSince(sentAt))) s") + } catch { + log("Ping #\(pingCount) failed: \(error.localizedDescription)") + } + } + + // MARK: Pong + + func handleRemoteNotification(_ userInfo: [String: Any]) { + guard CKNotification(fromRemoteNotificationDictionary: userInfo) != nil else { + log("remote notification received, not from CloudKit (keys: \(userInfo.keys.sorted().joined(separator: ", ")))") + return + } + lastPushAt = Date() + // A request from the iPhone (a service to read, an action) may be waiting. + Task { await ServiceDetailRunner.shared.checkNow() } + guard pingTask != nil else { return } // the Pong fetch is only for the ping test + log("push received") + Task { await fetchChanges(source: "push") } + } + + private func fetchChanges(source: String) async { + guard ready, !fetching else { return } + fetching = true + defer { fetching = false } + do { + var more = true + while more { + let changes = try await database.recordZoneChanges(inZoneWith: Self.zoneID, since: changeToken) + for (_, result) in changes.modificationResultsByID { + if case .success(let mod) = result { handle(mod.record, source: source) } + } + changeToken = changes.changeToken + more = changes.moreComing + } + } catch let error as CKError where error.code == .changeTokenExpired { + changeToken = nil + } catch let error as CKError where error.code == .zoneNotFound { + log("zone Coucou missing, recreating") + ready = false + } catch { + log("fetch (\(source)) failed: \(error.localizedDescription)") + } + } + + private func handle(_ record: CKRecord, source: String) { + guard record.recordType == "Pong" else { return } + let id = record.recordID.recordName + guard !seenPongs.contains(id) else { return } + seenPongs.insert(id) + // Older pongs from previous runs: remember them, don't log them. + guard let created = record.creationDate, created >= launchDate else { return } + + let message = record.encryptedValues["message"] as? String ?? "?" + var line = "Pong from iPhone: \(message)" + if let pingSentAt = record["pingSentAt"] as? Date { + line += String(format: ", round trip %.1f s", Date().timeIntervalSince(pingSentAt)) + } + if let repliedAt = record["repliedAt"] as? Date { + line += String(format: ", %.1f s after the tap", Date().timeIntervalSince(repliedAt)) + } + line += " (via \(source)" + if source == "poll", let push = lastPushAt, Date().timeIntervalSince(push) < 10 { + line += ", push came \(String(format: "%.1f", Date().timeIntervalSince(push))) s ago" + } + line += ")" + log(line) + } + + // MARK: Helpers + + private func describe(_ status: CKAccountStatus) -> String { + switch status { + case .available: "available" + case .noAccount: "no account" + case .restricted: "restricted" + case .couldNotDetermine: "could not determine" + case .temporarilyUnavailable: "temporarily unavailable" + @unknown default: "unknown" + } + } + + /// Writes to nb.log and to the Xcode console (the sandboxed build's nb.log + /// sits in its container, which Terminal can't read). + func log(_ message: String) { + appendAppLog("nb.log", "[PhoneLink] \(message)") + print("[PhoneLink] \(message)") + } +} + +extension AppDelegate { + @objc func application(_ application: NSApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { + let token = deviceToken.prefix(4).map { String(format: "%02x", $0) }.joined() + CloudProbe.shared.log("registered for remote notifications (token \(token)…)") + } + + @objc func application(_ application: NSApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { + CloudProbe.shared.log("remote notification registration failed: \(error.localizedDescription)") + } + + @objc func application(_ application: NSApplication, didReceiveRemoteNotification userInfo: [String: Any]) { + CloudProbe.shared.handleRemoteNotification(userInfo) + } +} +#endif diff --git a/NotchBuddy/Sources/App/PhoneLink/InstructionRunner.swift b/NotchBuddy/Sources/App/PhoneLink/InstructionRunner.swift new file mode 100644 index 0000000..b7aa07d --- /dev/null +++ b/NotchBuddy/Sources/App/PhoneLink/InstructionRunner.swift @@ -0,0 +1,182 @@ +#if PHONE_LINK && !APPSTORE +import AppKit +import CloudKit + +// MARK: - Instructions from the iPhone +// +// The iPhone writes an `Instruction` record (text encrypted) for a session. +// When the user turned it on (Settings → General → iPhone, off by default), +// this Mac checks every 15 s, takes each instruction once (the record is +// deleted on read), and continues that same Claude Code conversation in the +// background: `claude -p --resume `, in the session's own +// folder. The folder and the session come from what this Mac saw in the +// hooks, never from the iPhone. Hooks keep working, so the notch, the iPhone +// and the permission requests (approved by hand, with Face ID on the phone) +// follow the run like any other turn. +// GitHub build only: the App Store build is sandboxed and can't start `claude`. + +@MainActor +final class InstructionRunner { + static let shared = InstructionRunner() + + nonisolated static let enabledKey = "iPhoneInstructionsEnabled" + nonisolated static var isEnabled: Bool { UserDefaults.standard.bool(forKey: enabledKey) } + + private var database: CKDatabase { CKContainer(identifier: CloudProbe.containerID).privateCloudDatabase } + private var pollTask: Task? + private var changeToken: CKServerChangeToken? + private var running: [String: Process] = [:] // by session id + + /// Instructions older than this are dropped instead of run. + private let maxAge: TimeInterval = 10 * 60 + + func setEnabled(_ on: Bool) { + UserDefaults.standard.set(on, forKey: Self.enabledKey) + if on && CloudProbe.isEnabled { start() } else { stop() } + } + + func startIfEnabled() { + if Self.isEnabled { start() } + } + + func start() { + guard pollTask == nil else { return } + log("on: checking for instructions every 15 s") + pollTask = Task { [weak self] in + while !Task.isCancelled { + await self?.check() + try? await Task.sleep(for: .seconds(15)) + } + } + } + + func stop() { + guard pollTask != nil else { return } + pollTask?.cancel() + pollTask = nil + log("off") + } + + // MARK: Reading + + private func check() async { + var found: [CKRecord] = [] + do { + var more = true + while more { + let changes = try await database.recordZoneChanges(inZoneWith: SessionSnapshot.zoneID, since: changeToken) + for (_, result) in changes.modificationResultsByID { + if case .success(let mod) = result, mod.record.recordType == "Instruction" { found.append(mod.record) } + } + changeToken = changes.changeToken + more = changes.moreComing + } + } catch let error as CKError where error.code == .changeTokenExpired { + changeToken = nil + return + } catch { + return + } + guard !found.isEmpty else { return } + // Single use: gone from iCloud before anything runs. + _ = try? await database.modifyRecords(saving: [], deleting: found.map(\.recordID)) + for record in found.sorted(by: { ($0["createdAt"] as? Date ?? .distantPast) < ($1["createdAt"] as? Date ?? .distantPast) }) { + handle(record) + } + } + + private func handle(_ record: CKRecord) { + let pillId = record["pillId"] as? String ?? "" + let createdAt = record["createdAt"] as? Date ?? .distantPast + let text = (record.encryptedValues["text"] as? String ?? "").trimmingCharacters(in: .whitespacesAndNewlines) + guard Self.isEnabled else { log("ignored: instructions are off"); return } + guard Date().timeIntervalSince(createdAt) < maxAge else { log("ignored: older than 10 min"); return } + guard !text.isEmpty, text.count <= 8000 else { log("ignored: empty or too long"); return } + guard pillId == "integration_claude" || pillId == "agent_cursor" else { log("ignored: \(pillId) can't take instructions"); return } + guard let session = TurnRecorder.shared.lastSession(for: pillId) else { + log("ignored: no Claude Code session seen for \(pillId) yet") + return + } + var isDirectory: ObjCBool = false + guard FileManager.default.fileExists(atPath: session.cwd, isDirectory: &isDirectory), isDirectory.boolValue else { + log("ignored: the session's folder is gone") + return + } + guard running[session.sessionId] == nil else { + log("ignored: an instruction is already running for this session") + return + } + guard let claude = Self.claudeExecutable() else { + log("can't find the claude command (looked in ~/.claude/local, Homebrew, /usr/local/bin, ~/.npm-global/bin)") + return + } + run(claude: claude, text: text, sessionId: session.sessionId, cwd: session.cwd, pillId: pillId) + } + + // MARK: Running + + private func run(claude: String, text: String, sessionId: String, cwd: String, pillId: String) { + let process = Process() + process.executableURL = URL(fileURLWithPath: claude) + process.arguments = ["-p", text, "--resume", sessionId] + process.currentDirectoryURL = URL(fileURLWithPath: cwd) + var env = ProcessInfo.processInfo.environment + let home = FileManager.default.homeDirectoryForCurrentUser.path + env["PATH"] = [URL(fileURLWithPath: claude).deletingLastPathComponent().path, "/opt/homebrew/bin", "/usr/local/bin", + "/usr/bin", "/bin", "/usr/sbin", "/sbin", "\(home)/.local/bin", env["PATH"] ?? ""].joined(separator: ":") + // The hooks route events by editor: keep them on the same pill. + if pillId == "agent_cursor" { + env["__CFBundleIdentifier"] = "com.todesktop.230313mzl4w4u92" + } else { + env["TERM_PROGRAM"] = "vscode" + } + process.environment = env + process.standardInput = FileHandle.nullDevice + // Output goes to a file (a pipe could fill up and stall claude); its + // end is logged if the run fails. + let logURL = FileManager.default.homeDirectoryForCurrentUser + .appendingPathComponent("Library/Logs/NotchBuddy/instruction-last.log") + try? FileManager.default.createDirectory(at: logURL.deletingLastPathComponent(), withIntermediateDirectories: true) + FileManager.default.createFile(atPath: logURL.path, contents: nil) + let output = try? FileHandle(forWritingTo: logURL) + process.standardOutput = output ?? FileHandle.nullDevice + process.standardError = output ?? FileHandle.nullDevice + process.terminationHandler = { [weak self] finished in + try? output?.close() + let data = (try? Data(contentsOf: logURL)) ?? Data() + let tail = String(decoding: data.suffix(400), as: UTF8.self) + .replacingOccurrences(of: "\n", with: " ") + let status = finished.terminationStatus + Task { @MainActor in + self?.running[sessionId] = nil + self?.log(status == 0 ? "finished (\(sessionId.prefix(8)))" : "ended with \(status): \(tail)") + } + } + do { + try process.run() + running[sessionId] = process + log("running in \(URL(fileURLWithPath: cwd).lastPathComponent) (\(sessionId.prefix(8))): \(text.count) chars") + } catch { + log("couldn't start claude: \(error.localizedDescription)") + } + } + + /// Where `claude` usually lives; the app doesn't get the shell's PATH. + static func claudeExecutable() -> String? { + let home = FileManager.default.homeDirectoryForCurrentUser.path + let candidates = [ + "\(home)/.claude/local/claude", + "\(home)/.local/bin/claude", + "/opt/homebrew/bin/claude", + "/usr/local/bin/claude", + "\(home)/.npm-global/bin/claude", + "\(home)/.bun/bin/claude", + ] + return candidates.first { FileManager.default.isExecutableFile(atPath: $0) } + } + + private func log(_ message: String) { + CloudProbe.shared.log("[instruction] \(message)") + } +} +#endif diff --git a/NotchBuddy/Sources/App/PhoneLink/LiveActivityRelay.swift b/NotchBuddy/Sources/App/PhoneLink/LiveActivityRelay.swift new file mode 100644 index 0000000..80e3dcf --- /dev/null +++ b/NotchBuddy/Sources/App/PhoneLink/LiveActivityRelay.swift @@ -0,0 +1,413 @@ +#if PHONE_LINK +import AppKit +import CloudKit +import Combine + +// MARK: - iPhone plan, step 8: Mochi leaves for the iPhone +// +// When the Mac locks while an agent is working, Mochi moves to the iPhone's +// Dynamic Island and Lock Screen (a Live Activity), and comes back when the +// Mac unlocks. Live Activity pushes need the APNs key, which can't ship in the +// app, so they go through the user's relay (relay/ in this repo, a stateless +// Cloudflare Worker). The iPhone's push tokens come from iCloud (`PhoneToken` +// records, written by LiveActivityLink on the iPhone). +// +// Sent to the relay: the iPhone's token and MochiActivityState (agent, state, +// counts). Never a project name, a step, a command or a path. +// Runs only while the Mac is locked with an agent going: lock notifications +// and AppState changes, no timer at rest. + +@MainActor +final class LiveActivityRelay { + static let shared = LiveActivityRelay() + + static let enabledKey = "iPhoneLiveActivityEnabled" + /// Overrides the relay address (defaults write fr.louisraille.NotchBuddy phoneRelayURL ). + static let relayURLKey = "phoneRelayURL" + /// The deployed relay (relay/README.md). + static let defaultRelayURL = "https://coucou-relay.raillelouis.workers.dev" + + static var isEnabled: Bool { UserDefaults.standard.bool(forKey: enabledKey) } + + private struct Phone { + var env: String + var startToken: String + var updateToken: String + var updatedAt: Date + } + + private var database: CKDatabase { CKContainer(identifier: CloudProbe.containerID).privateCloudDatabase } + private var observers: [NSObjectProtocol] = [] + private var cancellable: AnyCancellable? + private var phones: [String: Phone] = [:] + private var changeToken: CKServerChangeToken? + + private var locked = false + private var latest: MochiActivityState? + /// Set while a Live Activity runs on the iPhone(s). + private var startedAt: Date? + /// Sent with every push of an activity, so the iPhone shows the time since. + private var activitySince: Int? + /// The startedAt whose start push actually went out. + private var startSent: Date? + private var sent: MochiActivityState? + private var sending = false + private var retryTask: Task? + private var retries = 0 + /// The phase a start was sent again for, so it is only tried once each. + private var restartedFor: String? + /// A start waiting to see if the Mac stays locked, and an end waiting to + /// see if it stays unlocked: iOS allows only so many starts an hour, so a + /// quick lock and unlock doesn't spend one. + private var lockTask: Task? + private var unlockTask: Task? + /// Ends the activity 10 minutes after the agents are done, if nothing restarts. + private var doneTask: Task? + + private var relayURL: URL? { + let value = UserDefaults.standard.string(forKey: Self.relayURLKey) ?? Self.defaultRelayURL + return value.isEmpty ? nil : URL(string: value)?.appendingPathComponent("v1/live-activity") + } + + // MARK: Lifecycle + + func setEnabled(_ on: Bool) { + UserDefaults.standard.set(on, forKey: Self.enabledKey) + if on && CloudProbe.isEnabled { start() } else { stop() } + } + + func startIfEnabled() { + if Self.isEnabled { start() } + } + + func start() { + guard cancellable == nil else { return } + let center = DistributedNotificationCenter.default() + observers = [ + center.addObserver(forName: NSNotification.Name("com.apple.screenIsLocked"), object: nil, queue: .main) { [weak self] _ in + MainActor.assumeIsolated { self?.lockChanged(true) } + }, + center.addObserver(forName: NSNotification.Name("com.apple.screenIsUnlocked"), object: nil, queue: .main) { [weak self] _ in + MainActor.assumeIsolated { self?.lockChanged(false) } + }, + ] + let state = AppState.shared + cancellable = state.$tasks + .combineLatest(state.$pendingApproval) + .map { tasks, approval in Self.leadState(tasks: tasks, approval: approval) } + .removeDuplicates() + .debounce(for: .seconds(1), scheduler: RunLoop.main) + .sink { [weak self] lead in + MainActor.assumeIsolated { self?.stateChanged(lead) } + } + log(relayURL == nil ? "on, but no relay address yet (relay/README.md)" : "on") + } + + func stop() { + guard cancellable != nil else { return } + observers.forEach { DistributedNotificationCenter.default().removeObserver($0) } + observers = [] + cancellable = nil + lockTask?.cancel(); lockTask = nil + unlockTask?.cancel(); unlockTask = nil + if startedAt != nil { finish(dismissAfter: 0) } + log("off") + } + + // MARK: Events + + private func lockChanged(_ isLocked: Bool) { + locked = isLocked + if isLocked { + log("Mac locked") + unlockTask?.cancel(); unlockTask = nil + if startedAt != nil { + // Locked again before the activity left: it carries on. + flush() + return + } + if let latest, latest.isActive { beginSoon(latest) } + } else { + log("Mac unlocked") + lockTask?.cancel(); lockTask = nil + guard startedAt != nil else { return } + // Mochi comes back to the notch, unless the Mac locks again within 30 s. + unlockTask = Task { + try? await Task.sleep(for: .seconds(30)) + guard !Task.isCancelled, !locked else { return } + unlockTask = nil + finish(dismissAfter: 0) + } + } + } + + /// Starts right away when an agent needs you; otherwise once the Mac has + /// stayed locked for 20 s. + private func beginSoon(_ state: MochiActivityState) { + if state.tone == "waiting" || state.tone == "question" { + lockTask?.cancel(); lockTask = nil + begin(state) + return + } + guard lockTask == nil else { return } + lockTask = Task { + try? await Task.sleep(for: .seconds(20)) + lockTask = nil + guard !Task.isCancelled, locked, startedAt == nil, let latest, latest.isActive else { return } + begin(latest) + } + } + + private func stateChanged(_ lead: MochiActivityState?) { + if lead?.tone != latest?.tone, let lead { log("phase: \(lead.agent) \(lead.statusText)\(locked ? "" : " (Mac unlocked, stays on the Mac)")") } + latest = lead + guard locked else { return } + if startedAt == nil { + if let lead, lead.isActive { beginSoon(lead) } + return + } + if let lead, lead.isActive { + // Back to work: the same activity carries on. + doneTask?.cancel(); doneTask = nil + flush() + } else if doneTask == nil { + // Nothing going any more: show "done" for 10 minutes, then leave, + // unless an agent starts again meanwhile. + if lead != nil { flush() } + doneTask = Task { + try? await Task.sleep(for: .seconds(10 * 60)) + guard !Task.isCancelled else { return } + doneTask = nil + finish(dismissAfter: 0) + } + } + } + + // MARK: Sending + + private func begin(_ state: MochiActivityState) { + let start = Date() + activitySince = Int(start.timeIntervalSince1970) + startedAt = start + sent = state + retries = 0 + Task { + await refreshPhones() + // The Mac unlocked meanwhile: don't leave. + guard startedAt == start, locked else { return } + startSent = start + let targets = phones.filter { !$0.value.startToken.isEmpty } + if targets.isEmpty { + log("no iPhone token yet: open Coucou on the iPhone once, with Live Activities allowed") + return + } + var reached = 0 + for (id, phone) in targets { + if await post(event: "start", token: phone.startToken, env: phone.env, state: state, phoneID: id) { + reached += 1 + } + } + if reached > 0 { + log("Mochi left for the iPhone (\(state.agent), \(state.statusText))") + } else { + log("Mochi couldn't reach the iPhone (see the relay line above)") + } + } + } + + /// Sends the latest state if it changed, one request at a time. + private func flush() { + guard !sending, let startedAt, let state = latest, state != sent else { return } + sending = true + Task { + let targets = await updateTargets(since: startedAt) + guard !targets.isEmpty else { + sending = false + // No update token: iOS didn't bring the activity up (it can hold + // back starts after many in a row). When an agent needs you, start + // it again with that state, once per request. + let key = state.approval ?? "\(state.tone)|\(state.statusText)" + if state.tone == "waiting" || state.tone == "question", restartedFor != key, + let sentAt = startSent, Date().timeIntervalSince(sentAt) > 15 { + restartedFor = key + log("the Live Activity isn't on the iPhone: starting it again for \(state.statusText)") + begin(state) + return + } + log("update \(state.tone) waits: no update token from the iPhone yet") + scheduleRetry() + return + } + retries = 0 + let urgent = state.tone == "waiting" || state.tone == "question" + for (id, phone) in targets { + let ok = await post(event: "update", token: phone.updateToken, env: phone.env, state: state, + urgent: urgent, phoneID: id) + // Every change of phase is logged; step counts only when they fail. + if ok && (urgent || sent?.tone != state.tone) { + log("update sent: \(state.agent) \(state.statusText)\(state.approval == nil ? "" : " (with Allow / Deny)")") + } + } + sent = state + sending = false + // Something changed while this one was on its way. + if latest != sent { flush() } + } + } + + private func finish(dismissAfter: Int) { + guard let startedAt else { return } + self.startedAt = nil + retryTask?.cancel(); retryTask = nil + doneTask?.cancel(); doneTask = nil + let last = latest ?? sent ?? .placeholder + sent = nil + guard startSent == startedAt else { + // The start never went out: nothing to end on the iPhone. + log("Mochi is back on the Mac") + return + } + Task { + // A start sent a moment ago: its update token is still on its way. + var targets = await updateTargets(since: startedAt) + for _ in 0..<6 where targets.isEmpty { + try? await Task.sleep(for: .seconds(3)) + targets = await updateTargets(since: startedAt) + } + if targets.isEmpty { log("can't end the Live Activity: no update token from the iPhone") } + for (id, phone) in targets { + await post(event: "end", token: phone.updateToken, env: phone.env, state: last, + dismissAfter: dismissAfter, phoneID: id) + } + log(dismissAfter == 0 ? "Mochi is back on the Mac" : "agents done, the iPhone shows it for \(dismissAfter / 60) min") + } + } + + /// The update token arrives a moment after the start (the iPhone gets it + /// from iOS, then writes it to iCloud): retry a few times. + private func scheduleRetry() { + guard retryTask == nil, retries < 10 else { return } + retries += 1 + retryTask = Task { + try? await Task.sleep(for: .seconds(3)) + retryTask = nil + guard !Task.isCancelled else { return } + flush() + } + } + + private func updateTargets(since date: Date) async -> [String: Phone] { + func fresh() -> [String: Phone] { + phones.filter { !$0.value.updateToken.isEmpty && $0.value.updatedAt >= date.addingTimeInterval(-2) } + } + if fresh().isEmpty { await refreshPhones() } + return fresh() + } + + /// Sends one push through the relay. Returns true when Apple accepted it. + @discardableResult + private func post(event: String, token: String, env: String, state: MochiActivityState, + urgent: Bool = false, dismissAfter: Int? = nil, phoneID: String) async -> Bool { + guard let url = relayURL else { return false } + var state = state + if state.since == nil { state.since = activitySince } + var body: [String: Any] = ["token": token, "env": env, "event": event, "urgent": urgent] + if let dismissAfter { body["dismissAfter"] = dismissAfter } + guard let stateData = try? JSONEncoder().encode(state), + let stateObject = try? JSONSerialization.jsonObject(with: stateData) else { return false } + body["state"] = stateObject + var request = URLRequest(url: url, timeoutInterval: 10) + request.httpMethod = "POST" + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = try? JSONSerialization.data(withJSONObject: body) + do { + let (data, response) = try await URLSession.shared.data(for: request) + let status = (response as? HTTPURLResponse)?.statusCode ?? 0 + if status == 200 { return true } + let reason = String(data: data, encoding: .utf8) ?? "" + if reason.contains("BadDeviceToken") { + // A token only works on one of Apple's two push servers (sandbox for + // builds run from Xcode, production for TestFlight and the App Store). + // Try the other one once and keep it if it works. + let other = env == "production" ? "development" : "production" + if phones[phoneID]?.env == env { + phones[phoneID]?.env = other + log("relay \(event): token not valid on \(env), trying \(other)") + return await post(event: event, token: token, env: other, state: state, + urgent: urgent, dismissAfter: dismissAfter, phoneID: phoneID) + } + } + if status == 410 { + // That token is gone (activity ended on the iPhone, app deleted…). + if event == "start" { phones[phoneID]?.startToken = "" } else { phones[phoneID]?.updateToken = "" } + } + log("relay \(event) on \(env) → \(status) \(reason.prefix(120))") + } catch { + log("relay \(event) failed: \(error.localizedDescription)") + } + return false + } + + // MARK: Tokens + + private func refreshPhones() async { + do { + var more = true + while more { + let changes = try await database.recordZoneChanges(inZoneWith: CloudProbe.zoneID, since: changeToken) + for (id, result) in changes.modificationResultsByID { + guard case .success(let mod) = result, mod.record.recordType == "PhoneToken" else { continue } + let record = mod.record + phones[id.recordName] = Phone( + env: record["env"] as? String ?? "production", + startToken: record.encryptedValues["startToken"] as? String ?? "", + updateToken: record.encryptedValues["updateToken"] as? String ?? "", + updatedAt: record["updatedAt"] as? Date ?? .distantPast) + } + for deletion in changes.deletions where deletion.recordType == "PhoneToken" { + phones[deletion.recordID.recordName] = nil + } + changeToken = changes.changeToken + more = changes.moreComing + } + } catch let error as CKError where error.code == .changeTokenExpired { + changeToken = nil + } catch { + log("token fetch failed: \(error.localizedDescription)") + } + } + + // MARK: State + + /// The most urgent session, as the iPhone's Live Activity shows it. + nonisolated static func leadState(tasks: [AgentTask], approval: ApprovalInfo?) -> MochiActivityState? { + let ranked = tasks + .filter { $0.source != .n8n && PillCatalog.isSession($0.id) } // same sessions as SessionPublisher + .map { task -> (AgentTask, Int) in + let urgency = MochiActivityState.urgency(state: task.state, + waitingForOK: approval?.pillId == task.id, + hasQuestion: task.state == .question) + return (task, urgency) + } + guard let lead = ranked.min(by: { $0.1 < $1.1 }) else { return nil } + let (task, urgency) = lead + let others = ranked.filter { $0.0.id != task.id && $0.1 <= 3 }.count + return MochiActivityState( + pillId: task.id, + agent: PillCatalog.definition(for: task.id)?.name ?? "Agent", + color: task.color, + state: (urgency == 0 ? BotState.approval : task.state).rawValue, + statusText: MochiActivityState.statusText(state: task.state, urgency: urgency, + stepIndex: task.stepIndex, stepCount: task.steps.count), + tone: MochiActivityState.tone(urgency: urgency), + stepIndex: max(0, task.stepIndex), + stepCount: task.steps.count, + others: others, + approval: approval?.pillId == task.id ? approval.map(ApprovalRelay.fingerprint) : nil) + } + + private func log(_ message: String) { + CloudProbe.shared.log("[live] \(message)") + } +} +#endif diff --git a/NotchBuddy/Sources/App/PhoneLink/QuestionRelay.swift b/NotchBuddy/Sources/App/PhoneLink/QuestionRelay.swift new file mode 100644 index 0000000..51e0238 --- /dev/null +++ b/NotchBuddy/Sources/App/PhoneLink/QuestionRelay.swift @@ -0,0 +1,132 @@ +#if PHONE_LINK +import AppKit +import CloudKit +import Combine + +// MARK: - Answer Claude's questions from the iPhone +// +// While Claude Code waits on an AskUserQuestion, the session record carries +// the question and its choices (SessionPublisher). The iPhone answers with an +// `Answer` record: the question's fingerprint and the labels picked. This Mac +// looks for answers every 2 s, only while a question waits, and applies one +// only if it matches the question still waiting and every label is one of its +// choices. Answers are single use: deleted as soon as they are read. + +@MainActor +final class QuestionRelay { + static let shared = QuestionRelay() + + private let container = CKContainer(identifier: "iCloud.fr.louisraille.Coucou") + private var database: CKDatabase { container.privateCloudDatabase } + private var zoneID: CKRecordZone.ID { SessionSnapshot.zoneID } + + private var cancellable: AnyCancellable? + private var current: (fingerprint: String, since: Date)? + private var pollTask: Task? + private var changeToken: CKServerChangeToken? + + func start() { + guard cancellable == nil else { return } + // @Published sends the new value before the property changes: use the value passed along. + cancellable = AppState.shared.$pendingQuestion + .map { $0.map(QuestionPayload.init(ask:)) } + .removeDuplicates() + .sink { [weak self] payload in + MainActor.assumeIsolated { self?.pendingChanged(to: payload) } + } + } + + func stop() { + cancellable = nil + pendingChanged(to: nil) + } + + private func pendingChanged(to payload: QuestionPayload?) { + let fingerprint = payload?.fingerprint + guard current?.fingerprint != fingerprint else { return } + pollTask?.cancel() + pollTask = nil + current = nil + guard let fingerprint else { return } + current = (fingerprint, Date()) + pollTask = Task { [weak self] in + // The Mac gives the question back to the terminal after 120 s. + for _ in 0..<62 { + try? await Task.sleep(for: .seconds(2)) + guard !Task.isCancelled, let self else { return } + if await self.checkAnswers(for: fingerprint) { return } + } + } + } + + /// Returns true once a matching answer was applied. + private func checkAnswers(for fingerprint: String) async -> Bool { + guard current?.fingerprint == fingerprint, let since = current?.since else { return true } + var found: [(id: CKRecord.ID, fingerprint: String, selections: String)] = [] + do { + var more = true + while more { + let changes = try await database.recordZoneChanges(inZoneWith: zoneID, since: changeToken) + for (id, result) in changes.modificationResultsByID { + guard case .success(let mod) = result, mod.record.recordType == "Answer" else { continue } + let record = mod.record + let answeredAt = record["answeredAt"] as? Date ?? .distantPast + guard answeredAt >= since.addingTimeInterval(-5) else { continue } + found.append((id, record["fingerprint"] as? String ?? "", + record.encryptedValues["selections"] as? String ?? "")) + } + changeToken = changes.changeToken + more = changes.moreComing + } + } catch let error as CKError where error.code == .changeTokenExpired { + changeToken = nil + return false + } catch { + log("answer check failed: \(error.localizedDescription)") + return false + } + guard !found.isEmpty else { return false } + let ids = found.map { $0.id } + Task { _ = try? await database.modifyRecords(saving: [], deleting: ids) } + guard let match = found.first(where: { $0.fingerprint == fingerprint }) else { + log("ignored \(found.count) answer(s) for another question") + return false + } + apply(match.selections, fingerprint: fingerprint) + return true + } + + private func apply(_ json: String, fingerprint: String) { + // Check again right before answering the hook. + guard let pending = AppState.shared.pendingQuestion else { + log("answer arrived after the question was resolved, ignored") + return + } + let payload = QuestionPayload(ask: pending) + guard payload.fingerprint == fingerprint else { + log("answer for an older question, ignored") + return + } + guard let selections = QuestionPayload.decodeSelections(json), payload.accepts(selections) else { + log("answer with unknown choices, ignored") + return + } + log("answered from the iPhone") + HookServer.shared.sendQuestionAnswers(AskQuestion.buildAnswers(questions: pending.questions, selections: selections)) + } + + private func log(_ message: String) { + CloudProbe.shared.log("[question] \(message)") + } +} + +extension QuestionPayload { + init(ask: AskQuestion) { + self.init(items: ask.questions.map { item in + Item(question: item.question, header: item.header, + options: item.options.map { Option(label: $0.label, description: $0.description) }, + multiSelect: item.multiSelect) + }) + } +} +#endif diff --git a/NotchBuddy/Sources/App/PhoneLink/ServiceDetailRunner.swift b/NotchBuddy/Sources/App/PhoneLink/ServiceDetailRunner.swift new file mode 100644 index 0000000..154450d --- /dev/null +++ b/NotchBuddy/Sources/App/PhoneLink/ServiceDetailRunner.swift @@ -0,0 +1,802 @@ +#if PHONE_LINK +import AppKit +import CloudKit + +// MARK: - Services up close, for the iPhone +// +// When a service's screen opens on the iPhone, it writes a `ServiceAction` +// record of kind "refresh"; to act (redeploy, re-run, merge…) it writes one +// with that action's kind and target. The CloudKit push wakes this Mac (with +// a check every minute in case a push is missed); it takes each request once +// (deleted on read, and only those it could delete), reads the service's API +// with the key in its Keychain and writes a `ServiceDetail` record, +// encrypted. An action runs only if it was offered on an item of the last +// detail sent for that service, and was asked for in the last 5 minutes. +// Nothing that moves money or sends an email is ever offered. + +@MainActor +final class ServiceDetailRunner { + static let shared = ServiceDetailRunner() + + private var database: CKDatabase { CKContainer(identifier: CloudProbe.containerID).privateCloudDatabase } + private var pollTask: Task? + private var changeToken: CKServerChangeToken? + /// The last detail sent per service: actions are checked against it. + private var lastDetails: [String: ServiceDetail] = [:] + private let maxAge: TimeInterval = 5 * 60 + private var checking = false + private var again = false + + func start() { + guard pollTask == nil else { return } + pollTask = Task { [weak self] in + while !Task.isCancelled { + await self?.checkNow() + // In case a push is missed. + try? await Task.sleep(for: .seconds(60)) + } + } + } + + /// Stops and deletes the details this Mac wrote to iCloud. + func stop() { + pollTask?.cancel() + pollTask = nil + lastDetails = [:] + let ids = PillCatalog.phoneServices.map { + CKRecord.ID(recordName: ServiceDetail.recordName(for: $0), zoneID: SessionSnapshot.zoneID) + } + Task { _ = try? await database.modifyRecords(saving: [], deleting: ids, savePolicy: .changedKeys, atomically: false) } + } + + /// From the CloudKit push and the fallback check. One check at a time: two + /// overlapping checks would share the change token and could run an action twice. + func checkNow() async { + guard pollTask != nil else { return } + guard !checking else { again = true; return } + checking = true + repeat { + again = false + await check() + } while again + checking = false + } + + // MARK: Requests + + private func check() async { + var found: [CKRecord] = [] + do { + var more = true + while more { + let changes = try await database.recordZoneChanges(inZoneWith: SessionSnapshot.zoneID, since: changeToken, + desiredKeys: ["pillId", "kind", "requestedAt", "target"]) + for (_, result) in changes.modificationResultsByID { + if case .success(let mod) = result, mod.record.recordType == ServiceDetail.requestType { + found.append(mod.record) + } + } + changeToken = changes.changeToken + more = changes.moreComing + } + } catch let error as CKError where error.code == .changeTokenExpired { + changeToken = nil + return + } catch { + return + } + guard !found.isEmpty else { return } + // Single use: act only on the requests this Mac actually removed from iCloud. + guard let removed = try? await database.modifyRecords(saving: [], deleting: found.map(\.recordID), + savePolicy: .changedKeys, atomically: false) else { + log("couldn't take \(found.count) request(s) off iCloud; skipped") + return + } + let taken = found.filter { + guard case .success? = removed.deleteResults[$0.recordID] else { return false } + return true + } + + // Several refreshes for one service count once. + var refreshed: Set = [] + for record in taken.sorted(by: { ($0["requestedAt"] as? Date ?? .distantPast) < ($1["requestedAt"] as? Date ?? .distantPast) }) { + let pillId = record["pillId"] as? String ?? "" + let kind = record["kind"] as? String ?? "" + let target = record.encryptedValues["target"] as? String ?? "" + let requestedAt = record["requestedAt"] as? Date ?? .distantPast + guard Date().timeIntervalSince(requestedAt) < maxAge, PillCatalog.phoneServices.contains(pillId) else { continue } + if kind == ServiceDetail.refreshKind { + guard refreshed.insert(pillId).inserted else { continue } + await publish(pillId: pillId, lastAction: lastDetails[pillId]?.lastAction) + } else { + await run(kind: kind, target: target, pillId: pillId) + } + } + } + + private func run(kind: String, target: String, pillId: String) async { + guard let action = lastDetails[pillId]?.offered(kind: kind, target: target), + ServiceAPI.allowedKinds.contains(kind), kind.hasPrefix(ServiceAPI.prefix(of: pillId)) else { + log("ignored an action that wasn't offered: \(kind)") + await publish(pillId: pillId, lastAction: ServiceActionResult( + title: "Not done", ok: false, + message: "This action isn't offered any more. The list was refreshed.", date: Date())) + return + } + log("\(action.title) (\(pillId)) asked from the iPhone") + let result: ServiceActionResult + do { + let message = try await ServiceAPI.perform(kind: kind, target: target) + result = ServiceActionResult(title: action.title, ok: true, message: message, date: Date()) + } catch { + result = ServiceActionResult(title: action.title, ok: false, message: ServiceAPI.describe(error), date: Date()) + } + log("\(action.title): \(result.ok ? "done" : "failed, \(result.message)")") + // Give the service a moment, then show where things are. + try? await Task.sleep(for: .seconds(2)) + await publish(pillId: pillId, lastAction: result) + } + + private func publish(pillId: String, lastAction: ServiceActionResult?) async { + var detail = await ServiceAPI.detail(for: pillId) + // The iPhone sync was turned off while the API was read: write nothing. + guard !Task.isCancelled, pollTask != nil else { return } + detail.lastAction = lastAction + lastDetails[pillId] = detail + guard let json = try? JSONEncoder().encode(detail), let payload = String(data: json, encoding: .utf8) else { return } + let record = CKRecord(recordType: ServiceDetail.recordType, + recordID: CKRecord.ID(recordName: ServiceDetail.recordName(for: pillId), zoneID: SessionSnapshot.zoneID)) + record["pillId"] = pillId + record["fetchedAt"] = detail.fetchedAt + record.encryptedValues["payload"] = payload + do { + _ = try await database.modifyRecords(saving: [record], deleting: [], savePolicy: .allKeys) + } catch { + log("detail for \(pillId) not saved: \(error.localizedDescription)") + } + } + + private func log(_ message: String) { + CloudProbe.shared.log("[services] \(message)") + } +} + +// MARK: - The services' APIs + +enum ServiceAPI { + struct Failure: Error { + let status: Int + let message: String + } + + /// Every action the iPhone can ask for. Nothing moves money or sends an email. + static let allowedKinds: Set = [ + "vercel.redeploy", "vercel.promote", "vercel.cancel", + "github.rerun", "github.approve", "github.merge", + "n8n.activate", "n8n.deactivate", "n8n.retry", + ] + + static func prefix(of pillId: String) -> String { + pillId.replacingOccurrences(of: "integration_", with: "") + "." + } + + static func describe(_ error: Error) -> String { + if let failure = error as? Failure { + switch failure.status { + case 401: + if failure.message.localizedCaseInsensitiveContains("restricted") { + // Resend `restricted_api_key`: a Sending-access key can't read emails or domains. + return "This key can only send emails. Use a Full access key in Coucou's Settings on your Mac to see them here." + } + return "The key was refused (401). Check it in Coucou's Settings on your Mac." + case 403: return "Not allowed with this key (403). \(failure.message)" + case 404: return "Not found (404)." + default: return failure.message.isEmpty ? "Error \(failure.status)" : String(failure.message.prefix(160)) + } + } + return error.localizedDescription + } + + // MARK: HTTP + + private static func request(_ urlString: String, method: String = "GET", headers: [String: String], + body: [String: Any]? = nil) async throws -> Any { + guard let url = URL(string: urlString) else { throw Failure(status: 0, message: "Bad address") } + var request = URLRequest(url: url, timeoutInterval: 15) + request.httpMethod = method + for (key, value) in headers { request.setValue(value, forHTTPHeaderField: key) } + if let body { + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = try JSONSerialization.data(withJSONObject: body) + } + let (data, response) = try await URLSession.shared.data(for: request) + let status = (response as? HTTPURLResponse)?.statusCode ?? 0 + guard (200..<300).contains(status) else { + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] + let message = (json?["message"] as? String) + ?? ((json?["error"] as? [String: Any])?["message"] as? String) + ?? (json?["error"] as? String) + ?? String(decoding: data.prefix(200), as: UTF8.self) + throw Failure(status: status, message: message) + } + if data.isEmpty { return [String: Any]() } + return try JSONSerialization.jsonObject(with: data) + } + + private static func date(_ value: Any?) -> Date? { + if let ms = value as? Double { return Date(timeIntervalSince1970: ms > 1e11 ? ms / 1000 : ms) } + if let ms = value as? Int { return Date(timeIntervalSince1970: ms > 100_000_000_000 ? Double(ms) / 1000 : Double(ms)) } + guard let text = value as? String else { return nil } + let fractional = ISO8601DateFormatter() + fractional.formatOptions = [.withInternetDateTime, .withFractionalSeconds] + if let date = fractional.date(from: text) { return date } + let plain = ISO8601DateFormatter() + if let date = plain.date(from: text) { return date } + // Resend: "2024-05-01 10:00:00.123456+00" + let formatter = DateFormatter() + formatter.locale = Locale(identifier: "en_US_POSIX") + for format in ["yyyy-MM-dd HH:mm:ss.SSSSSSZ", "yyyy-MM-dd HH:mm:ss.SSSZ", "yyyy-MM-dd HH:mm:ssZ"] { + formatter.dateFormat = format + if let date = formatter.date(from: text.count > 3 && text.hasSuffix("+00") ? text + "00" : text) { return date } + } + return nil + } + + private static func money(_ cents: Int, _ currency: String) -> String { + let formatter = NumberFormatter() + formatter.numberStyle = .currency + formatter.currencyCode = currency.uppercased() + // Stripe zero-decimal currencies (docs.stripe.com/currencies#zero-decimal). UGX and ISK stay ×100 + // for backward compatibility; HUF and TWD charges are two-decimal. + let zeroDecimal: Set = ["bif", "clp", "djf", "gnf", "jpy", "kmf", "krw", "mga", "pyg", "rwf", + "vnd", "vuv", "xaf", "xof", "xpf"] + let amount = zeroDecimal.contains(currency.lowercased()) ? Double(cents) : Double(cents) / 100 + return formatter.string(from: NSNumber(value: amount)) ?? "\(amount) \(currency.uppercased())" + } + + // MARK: Reading + + static func detail(for pillId: String) async -> ServiceDetail { + do { + switch pillId { + case "integration_vercel": return try await vercel() + case "integration_github": return try await github() + case "integration_stripe": return try await stripe() + case "integration_resend": return try await resend() + case "integration_calcom": return try await calcom() + case "integration_n8n": return try await n8n() + case "integration_notion": return try await notion() + default: return ServiceDetail(pillId: pillId, fetchedAt: Date(), error: "Not available from the iPhone yet.") + } + } catch { + return ServiceDetail(pillId: pillId, fetchedAt: Date(), error: describe(error)) + } + } + + private static func secret(_ name: String, _ service: String) throws -> String { + guard let value = KeychainStore.shared.get(name), !value.isEmpty else { + throw Failure(status: 0, message: "No \(service) key on your Mac. Add it in Coucou's Settings.") + } + return value + } + + // Vercel: deployments (redeploy, promote to production, cancel) and projects. + private static func vercel() async throws -> ServiceDetail { + let token = try secret("vercel-token", "Vercel") + let headers = ["Authorization": "Bearer \(token)", "Accept": "application/json"] + let deploymentsJSON = try await request("https://api.vercel.com/v6/deployments?limit=20", headers: headers) + let deployments = (deploymentsJSON as? [String: Any])?["deployments"] as? [[String: Any]] ?? [] + let projectsJSON = try? await request("https://api.vercel.com/v9/projects?limit=20", headers: headers) + let projects = (projectsJSON as? [String: Any])?["projects"] as? [[String: Any]] ?? [] + + var items: [DetailItem] = [] + var ready = 0, failed = 0, building = 0 + for d in deployments { + guard let uid = d["uid"] as? String else { continue } + let name = d["name"] as? String ?? "Deployment" + let state = (d["state"] as? String ?? d["readyState"] as? String ?? "").uppercased() + let target = d["target"] as? String + let meta = d["meta"] as? [String: Any] ?? [:] + let message = meta["githubCommitMessage"] as? String ?? "" + let branch = meta["githubCommitRef"] as? String ?? "" + let creator = (d["creator"] as? [String: Any])?["username"] as? String ?? "" + var tone: ServiceTone = .idle + var actions: [ServiceActionDef] = [] + switch state { + case "READY": + ready += 1 + tone = .ok + actions.append(ServiceActionDef(kind: "vercel.redeploy", title: "Redeploy", symbol: "arrow.clockwise", + target: "\(uid)|\(name)|\(target ?? "")")) + if target != "production" { + actions.append(ServiceActionDef(kind: "vercel.promote", title: "Promote to production", + symbol: "arrow.up.circle", target: "\(uid)|\(name)", + confirm: "A new production build starts from this deployment, using your production environment variables.")) + } + case "ERROR": + failed += 1 + tone = .error + actions.append(ServiceActionDef(kind: "vercel.redeploy", title: "Redeploy", symbol: "arrow.clockwise", + target: "\(uid)|\(name)|\(target ?? "")")) + case "BUILDING", "QUEUED", "INITIALIZING": + building += 1 + tone = .warning + actions.append(ServiceActionDef(kind: "vercel.cancel", title: "Cancel build", symbol: "xmark.circle", + target: uid, destructive: true, confirm: "Stop this build?")) + case "CANCELED": tone = .idle + default: break + } + let subtitle = [branch, message.split(separator: "\n").first.map(String.init) ?? "", creator] + .filter { !$0.isEmpty }.joined(separator: " · ") + items.append(DetailItem(title: name, subtitle: subtitle.isEmpty ? state.capitalized : subtitle, tone: tone, + date: date(d["created"] ?? d["createdAt"]), + url: (d["url"] as? String).map { "https://\($0)" }, + badge: target == "production" ? "Production" : (state == "READY" ? "Preview" : state.capitalized), + actions: actions)) + } + let projectItems = projects.prefix(20).map { p in + DetailItem(title: p["name"] as? String ?? "Project", + subtitle: (p["framework"] as? String).map { $0.capitalized } ?? "", + date: date(p["updatedAt"])) + } + var sections = [DetailSection(title: "Deployments", items: items)] + if !projectItems.isEmpty { sections.append(DetailSection(title: "Projects · \(projectItems.count)", items: Array(projectItems))) } + return ServiceDetail(pillId: "integration_vercel", + stats: [DetailStat(label: "Ready", value: "\(ready)", tone: .ok), + DetailStat(label: "Building", value: "\(building)", tone: building > 0 ? .warning : .idle), + DetailStat(label: "Failed", value: "\(failed)", tone: failed > 0 ? .error : .idle), + DetailStat(label: "Projects", value: "\(projects.count)")], + sections: sections, fetchedAt: Date()) + } + + // GitHub: your pull requests (merge), reviews asked of you (approve), CI runs (re-run failed jobs). + private static func github() async throws -> ServiceDetail { + let token = try secret("github-token", "GitHub") + let headers = ["Authorization": "Bearer \(token)", "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28"] + let user = try await request("https://api.github.com/user", headers: headers) as? [String: Any] ?? [:] + let login = user["login"] as? String ?? "" + + func search(_ query: String) async -> [[String: Any]] { + var components = URLComponents(string: "https://api.github.com/search/issues")! + components.queryItems = [URLQueryItem(name: "q", value: query), URLQueryItem(name: "per_page", value: "10"), + URLQueryItem(name: "sort", value: "updated")] + let json = try? await request(components.url!.absoluteString, headers: headers) + return (json as? [String: Any])?["items"] as? [[String: Any]] ?? [] + } + /// "owner/repo#12" from a search result. + func pullRef(_ item: [String: Any]) -> String? { + guard let repoURL = item["repository_url"] as? String, let number = item["number"] as? Int else { return nil } + let parts = repoURL.split(separator: "/").suffix(2).joined(separator: "/") + return "\(parts)#\(number)" + } + + let mine = await search("is:pr is:open author:\(login) archived:false") + let asked = await search("is:pr is:open review-requested:\(login) archived:false") + + let mineItems = mine.compactMap { item -> DetailItem? in + guard let ref = pullRef(item) else { return nil } + let draft = item["draft"] as? Bool ?? false + return DetailItem(title: item["title"] as? String ?? "Pull request", subtitle: ref, + tone: draft ? .idle : .info, date: date(item["updated_at"]), + url: item["html_url"] as? String, badge: draft ? "Draft" : nil, + actions: draft ? [] : [ServiceActionDef(kind: "github.merge", title: "Squash and merge", + symbol: "arrow.triangle.merge", target: ref, + confirm: "Merge \(ref) into its base branch?")]) + } + let askedItems = asked.compactMap { item -> DetailItem? in + guard let ref = pullRef(item) else { return nil } + let author = (item["user"] as? [String: Any])?["login"] as? String ?? "" + return DetailItem(title: item["title"] as? String ?? "Pull request", + subtitle: author.isEmpty ? ref : "\(ref) · \(author)", tone: .warning, + date: date(item["updated_at"]), url: item["html_url"] as? String, + actions: [ServiceActionDef(kind: "github.approve", title: "Approve", symbol: "checkmark.seal", + target: ref)]) + } + + // CI on the repos you pushed to last. + let reposJSON = try? await request("https://api.github.com/user/repos?sort=pushed&per_page=5&affiliation=owner,collaborator", + headers: headers) + let repos = (reposJSON as? [[String: Any]] ?? []).compactMap { $0["full_name"] as? String } + var runItems: [DetailItem] = [] + var failing = 0 + for repo in repos { + let runsJSON = try? await request("https://api.github.com/repos/\(repo)/actions/runs?per_page=3", headers: headers) + let runs = (runsJSON as? [String: Any])?["workflow_runs"] as? [[String: Any]] ?? [] + for run in runs { + guard let id = run["id"] as? Int else { continue } + let status = run["status"] as? String ?? "" + let conclusion = run["conclusion"] as? String ?? "" + var tone: ServiceTone = .idle + var actions: [ServiceActionDef] = [] + if status != "completed" { + tone = .warning + } else if conclusion == "success" { + tone = .ok + } else if conclusion == "failure" || conclusion == "timed_out" { + tone = .error + failing += 1 + actions.append(ServiceActionDef(kind: "github.rerun", title: "Re-run failed jobs", + symbol: "arrow.clockwise", target: "\(repo)/\(id)")) + } + let label = status == "completed" ? conclusion.replacingOccurrences(of: "_", with: " ") : status.replacingOccurrences(of: "_", with: " ") + runItems.append(DetailItem(title: run["name"] as? String ?? "Workflow", + subtitle: "\(repo) · \(run["head_branch"] as? String ?? "")", + tone: tone, date: date(run["created_at"]), + url: run["html_url"] as? String, badge: label.capitalized, actions: actions)) + } + } + + var sections: [DetailSection] = [] + if !askedItems.isEmpty { sections.append(DetailSection(title: "Reviews asked of you", items: askedItems)) } + sections.append(DetailSection(title: "Your pull requests", items: mineItems, + footer: mineItems.isEmpty ? "No open pull request." : nil)) + if !runItems.isEmpty { sections.append(DetailSection(title: "CI on your latest repos", items: runItems)) } + return ServiceDetail(pillId: "integration_github", + stats: [DetailStat(label: "Your PRs", value: "\(mineItems.count)", tone: .info), + DetailStat(label: "Reviews", value: "\(askedItems.count)", tone: askedItems.isEmpty ? .idle : .warning), + DetailStat(label: "CI failing", value: "\(failing)", tone: failing > 0 ? .error : .ok)], + sections: sections, fetchedAt: Date()) + } + + // Stripe: balance, payments, payouts, subscriptions. Read only. + private static func stripe() async throws -> ServiceDetail { + let key = try secret("stripe-api-key", "Stripe") + let headers = ["Authorization": "Bearer \(key)"] + let balance = try await request("https://api.stripe.com/v1/balance", headers: headers) as? [String: Any] ?? [:] + // One entry per currency in each list, in no set order: pair them by currency. + let availableList = balance["available"] as? [[String: Any]] ?? [] + let pendingList = balance["pending"] as? [[String: Any]] ?? [] + let currency = ((availableList.first ?? pendingList.first)?["currency"] as? String ?? "eur").lowercased() + func amount(_ list: [[String: Any]]) -> Int { + list.first { ($0["currency"] as? String)?.lowercased() == currency }?["amount"] as? Int ?? 0 + } + let available = amount(availableList) + let pending = amount(pendingList) + + /// A list, or why it couldn't be read (shown instead of a made-up zero). + func list(_ path: String) async -> ([[String: Any]], [String: Any], String?) { + do { + let json = try await request("https://api.stripe.com/v1/\(path)", headers: headers) as? [String: Any] ?? [:] + return (json["data"] as? [[String: Any]] ?? [], json, nil) + } catch { + return ([], [:], describe(error)) + } + } + + let (charges, _, chargesError) = await list("charges?limit=15") + let chargeItems = charges.map { c -> DetailItem in + let status = c["status"] as? String ?? "" + let refunded = c["refunded"] as? Bool ?? false + let partlyRefunded = !refunded && (c["amount_refunded"] as? Int ?? 0) > 0 + let uncaptured = !refunded && status == "succeeded" && (c["captured"] as? Bool) == false + let who = ((c["billing_details"] as? [String: Any])?["name"] as? String) + ?? (c["receipt_email"] as? String) ?? (c["description"] as? String) ?? "" + let tone: ServiceTone = refunded ? .idle + : (uncaptured || partlyRefunded) ? .warning + : status == "succeeded" ? .ok : status == "failed" ? .error : .warning + let badge = refunded ? "Refunded" : uncaptured ? "Uncaptured" + : partlyRefunded ? "Partly refunded" : status.capitalized + return DetailItem(title: money(c["amount"] as? Int ?? 0, c["currency"] as? String ?? currency), + subtitle: who, tone: tone, date: date(c["created"]), badge: badge) + } + let (payouts, _, payoutsError) = await list("payouts?limit=5") + let payoutItems = payouts.map { p in + DetailItem(title: money(p["amount"] as? Int ?? 0, p["currency"] as? String ?? currency), + subtitle: "Arrives", tone: (p["status"] as? String) == "failed" ? .error : .info, + date: date(p["arrival_date"]), badge: (p["status"] as? String)?.replacingOccurrences(of: "_", with: " ").capitalized) + } + + // Active subscriptions, every page (up to 1 000). + var subs: [[String: Any]] = [] + var moreSubs = false + var subsError: String? + var cursor: String? + for _ in 0..<10 { + let (page, json, error) = await list("subscriptions?status=active&limit=100" + (cursor.map { "&starting_after=\($0)" } ?? "")) + if let error { subsError = error; break } + subs += page + moreSubs = json["has_more"] as? Bool ?? false + guard moreSubs, let last = subs.last?["id"] as? String else { break } + cursor = last + } + // Estimated monthly revenue, one total per currency. Metered and tiered + // prices have no fixed amount per period and discounts aren't applied. + var monthlyByCurrency: [String: Double] = [:] + for sub in subs { + let subCurrency = (sub["currency"] as? String)?.lowercased() + let items = (sub["items"] as? [String: Any])?["data"] as? [[String: Any]] ?? [] + for item in items { + let price = item["price"] as? [String: Any] ?? [:] + let recurring = price["recurring"] as? [String: Any] ?? [:] + if recurring["usage_type"] as? String == "metered" || price["billing_scheme"] as? String == "tiered" { continue } + let perUnit = (price["unit_amount"] as? Int).map { Double($0) } + ?? Double(price["unit_amount_decimal"] as? String ?? "") ?? 0 + let unit = perUnit * Double(item["quantity"] as? Int ?? 1) + let count = Double(recurring["interval_count"] as? Int ?? 1) + let perMonth: Double + switch recurring["interval"] as? String { + case "year": perMonth = unit / (12 * count) + case "week": perMonth = unit * 4.345 / count + case "day": perMonth = unit * 30.4 / count + default: perMonth = unit / count + } + let itemCurrency = subCurrency ?? (price["currency"] as? String)?.lowercased() ?? currency + monthlyByCurrency[itemCurrency, default: 0] += perMonth + } + } + let largest = monthlyByCurrency.max { $0.value < $1.value } + let mrrCurrency = monthlyByCurrency[currency] != nil ? currency : (largest?.key ?? currency) + let monthly = monthlyByCurrency[mrrCurrency] ?? 0 + + var sections = [DetailSection(title: "Payments", items: chargeItems, footer: chargesError)] + if !payoutItems.isEmpty || payoutsError != nil { + sections.append(DetailSection(title: "Payouts", items: payoutItems, footer: payoutsError)) + } + if let subsError { sections.append(DetailSection(title: "Subscriptions", items: [], footer: subsError)) } + return ServiceDetail(pillId: "integration_stripe", + stats: [DetailStat(label: "Available", value: money(available, currency), tone: .ok), + DetailStat(label: "Pending", value: money(pending, currency)), + DetailStat(label: "Subscriptions", + value: subsError != nil ? "—" : (moreSubs ? "\(subs.count)+" : "\(subs.count)"), + tone: .info), + DetailStat(label: "Est. MRR", + value: subsError != nil ? "—" : money(Int(monthly.rounded()), mrrCurrency), + tone: .info)], + sections: sections, fetchedAt: Date()) + } + + // Resend: the latest emails and how they went, and the domains. Read only. + private static func resend() async throws -> ServiceDetail { + let key = try secret("resend-api-key", "Resend") + let headers = ["Authorization": "Bearer \(key)"] + let emailsJSON = try await request("https://api.resend.com/emails?limit=20", headers: headers) + let emails = (emailsJSON as? [String: Any])?["data"] as? [[String: Any]] ?? [] + var bounced = 0, delivered = 0 + let emailItems = emails.map { e -> DetailItem in + let event = e["last_event"] as? String ?? "sent" + let tone: ServiceTone + switch event { + case "delivered", "opened", "clicked": tone = .ok; delivered += 1 + case "bounced", "complained", "failed", "suppressed": tone = .error; bounced += 1 + case "delivery_delayed": tone = .warning + default: tone = .info + } + let to = (e["to"] as? [String])?.joined(separator: ", ") ?? "" + return DetailItem(title: e["subject"] as? String ?? "(no subject)", subtitle: to, tone: tone, + date: date(e["created_at"]), badge: event.replacingOccurrences(of: "_", with: " ").capitalized) + } + let domainsJSON = try? await request("https://api.resend.com/domains", headers: headers) + let domains = (domainsJSON as? [String: Any])?["data"] as? [[String: Any]] ?? [] + let domainItems = domains.map { d in + let status = d["status"] as? String ?? "" + return DetailItem(title: d["name"] as? String ?? "Domain", subtitle: d["region"] as? String ?? "", + tone: status == "verified" ? .ok : (status == "failed" ? .error : .warning), + badge: status.replacingOccurrences(of: "_", with: " ").capitalized) + } + var sections = [DetailSection(title: "Latest emails", items: emailItems)] + if !domainItems.isEmpty { sections.append(DetailSection(title: "Domains", items: domainItems)) } + return ServiceDetail(pillId: "integration_resend", + stats: [DetailStat(label: "Delivered", value: "\(delivered)", tone: .ok), + DetailStat(label: "Bounced", value: "\(bounced)", tone: bounced > 0 ? .error : .idle), + DetailStat(label: "Domains", value: "\(domains.count)")], + sections: sections, fetchedAt: Date()) + } + + // Cal.com: upcoming bookings. Read only: cancelling emails the guest and can refund or charge them. + private static func calcom() async throws -> ServiceDetail { + let key = try secret("calcom-api-key", "Cal.com") + let headers = ["Authorization": "Bearer \(key)", "cal-api-version": "2024-08-13"] + let iso = ISO8601DateFormatter() + let now = Date() + var components = URLComponents(string: "https://api.cal.com/v2/bookings")! + components.queryItems = [URLQueryItem(name: "status", value: "upcoming"), + URLQueryItem(name: "afterStart", value: iso.string(from: now)), + URLQueryItem(name: "take", value: "30")] + let json = try await request(components.url!.absoluteString, headers: headers) + let bookings = (json as? [String: Any])?["data"] as? [[String: Any]] ?? [] + let calendar = Calendar.current + var today = 0, week = 0 + let items = bookings.compactMap { b -> DetailItem? in + guard let start = date(b["start"] ?? b["startTime"]) else { return nil } + if calendar.isDateInToday(start) { today += 1 } + if start.timeIntervalSince(now) < 7 * 24 * 3600 { week += 1 } + let attendee = (b["attendees"] as? [[String: Any]])?.first + let who = attendee?["name"] as? String ?? attendee?["email"] as? String ?? "" + let when = start.formatted(.dateTime.weekday(.abbreviated).day().month(.abbreviated).hour().minute()) + return DetailItem(title: b["title"] as? String ?? "Meeting", + subtitle: who.isEmpty ? when : "\(when) · \(who)", + tone: calendar.isDateInToday(start) ? .warning : .info, + date: start, url: (b["meetingUrl"] as? String) ?? (b["location"] as? String).flatMap { $0.hasPrefix("https://") ? $0 : nil }, + badge: (b["status"] as? String)?.capitalized) + } + return ServiceDetail(pillId: "integration_calcom", + stats: [DetailStat(label: "Today", value: "\(today)", tone: today > 0 ? .warning : .idle), + DetailStat(label: "Next 7 days", value: "\(week)", tone: .info), + DetailStat(label: "Upcoming", value: "\(items.count)")], + sections: [DetailSection(title: "Upcoming bookings", items: items, + footer: items.isEmpty ? "Nothing booked." : nil)], + fetchedAt: Date()) + } + + // n8n: workflows (activate, deactivate) and executions (retry a failed one). + private static func n8n() async throws -> ServiceDetail { + let key = try secret("n8n-api-key", "n8n") + let base = try secret("n8n-url", "n8n").trimmingCharacters(in: CharacterSet(charactersIn: "/")) + let headers = ["X-N8N-API-KEY": key, "Accept": "application/json"] + // The list comes in pages (at most 250, then `cursor` = the previous `nextCursor`): read + // them all so the counts are right. + var workflows: [[String: Any]] = [] + var cursor: String? + repeat { + var url = "\(base)/api/v1/workflows?limit=250" + if let cursor, let encoded = cursor.addingPercentEncoding(withAllowedCharacters: .alphanumerics) { + url += "&cursor=\(encoded)" + } + let page = try await request(url, headers: headers) as? [String: Any] + workflows += page?["data"] as? [[String: Any]] ?? [] + cursor = page?["nextCursor"] as? String + } while !(cursor ?? "").isEmpty && workflows.count < 5_000 + var names: [String: String] = [:] + var active = 0 + let workflowItems = workflows.compactMap { w -> DetailItem? in + guard let id = (w["id"] as? String) ?? (w["id"] as? Int).map(String.init) else { return nil } + let name = w["name"] as? String ?? "Workflow" + names[id] = name + // Archived workflows are listed but can't be turned on (n8n answers 400). + if w["isArchived"] as? Bool ?? false { return nil } + let isActive = w["active"] as? Bool ?? false + if isActive { active += 1 } + return DetailItem(title: name, tone: isActive ? .ok : .idle, date: date(w["updatedAt"]), + url: "\(base)/workflow/\(id)", badge: isActive ? "Active" : "Off", + actions: [isActive + ? ServiceActionDef(kind: "n8n.deactivate", title: "Turn off", symbol: "pause.circle", + target: id, destructive: true, confirm: "Stop \(name) from running?") + : ServiceActionDef(kind: "n8n.activate", title: "Turn on", symbol: "play.circle", target: id)]) + } + let executionsJSON = try? await request("\(base)/api/v1/executions?limit=15", headers: headers) + let executions = (executionsJSON as? [String: Any])?["data"] as? [[String: Any]] ?? [] + var failed = 0 + let executionItems = executions.compactMap { e -> DetailItem? in + guard let id = (e["id"] as? String) ?? (e["id"] as? Int).map(String.init) else { return nil } + let workflowId = (e["workflowId"] as? String) ?? (e["workflowId"] as? Int).map(String.init) ?? "" + let status = e["status"] as? String ?? ((e["finished"] as? Bool ?? false) ? "success" : "error") + let isFailure = status == "error" || status == "crashed" || status == "failed" + if isFailure { failed += 1 } + return DetailItem(title: names[workflowId] ?? "Workflow \(workflowId)", subtitle: "Execution \(id)", + tone: isFailure ? .error : (status == "success" ? .ok : .warning), + date: date(e["startedAt"]), url: "\(base)/workflow/\(workflowId)/executions/\(id)", + badge: status.capitalized, + actions: isFailure ? [ServiceActionDef(kind: "n8n.retry", title: "Retry", symbol: "arrow.clockwise", target: id)] : []) + } + return ServiceDetail(pillId: "integration_n8n", + stats: [DetailStat(label: "Workflows", value: "\(workflowItems.count)"), + DetailStat(label: "Active", value: "\(active)", tone: .ok), + DetailStat(label: "Failed runs", value: "\(failed)", tone: failed > 0 ? .error : .idle)], + sections: [DetailSection(title: "Latest runs", items: executionItems), + DetailSection(title: "Workflows", + items: Array(workflowItems.sorted { ($0.date ?? .distantPast) > ($1.date ?? .distantPast) }.prefix(50)))], + fetchedAt: Date()) + } + + // Notion: the pages and databases edited last. Read only. + private static func notion() async throws -> ServiceDetail { + let key = try secret("notion-api-key", "Notion") + let headers = ["Authorization": "Bearer \(key)", "Notion-Version": "2022-06-28"] + let json = try await request("https://api.notion.com/v1/search", method: "POST", headers: headers, + body: ["sort": ["direction": "descending", "timestamp": "last_edited_time"], "page_size": 25]) + let results = (json as? [String: Any])?["results"] as? [[String: Any]] ?? [] + var pages: [DetailItem] = [] + var databases: [DetailItem] = [] + for object in results { + let kind = object["object"] as? String ?? "page" + var title = "" + if kind == "database" { + title = ((object["title"] as? [[String: Any]])?.compactMap { $0["plain_text"] as? String }.joined()) ?? "" + } else if let properties = object["properties"] as? [String: Any] { + for case let property as [String: Any] in properties.values where property["type"] as? String == "title" { + title = ((property["title"] as? [[String: Any]])?.compactMap { $0["plain_text"] as? String }.joined()) ?? "" + } + } + var emoji = "" + if let icon = object["icon"] as? [String: Any], icon["type"] as? String == "emoji" { emoji = (icon["emoji"] as? String ?? "") + " " } + let item = DetailItem(title: emoji + (title.isEmpty ? "Untitled" : title), + date: date(object["last_edited_time"]), url: object["url"] as? String, + badge: (object["archived"] as? Bool ?? false) ? "Archived" : nil) + if kind == "database" { databases.append(item) } else { pages.append(item) } + } + var sections = [DetailSection(title: "Edited lately", items: pages)] + if !databases.isEmpty { sections.append(DetailSection(title: "Databases", items: databases)) } + let editedToday = results.filter { date($0["last_edited_time"]).map(Calendar.current.isDateInToday) ?? false }.count + return ServiceDetail(pillId: "integration_notion", + stats: [DetailStat(label: "Edited today", value: "\(editedToday)", tone: editedToday > 0 ? .info : .idle), + DetailStat(label: "Pages", value: "\(pages.count)"), + DetailStat(label: "Databases", value: "\(databases.count)")], + sections: sections, fetchedAt: Date()) + } + + // MARK: Acting + + /// Runs one action. Returns a short line for the iPhone. + static func perform(kind: String, target: String) async throws -> String { + switch kind { + case "vercel.redeploy": + let parts = target.split(separator: "|", omittingEmptySubsequences: false).map(String.init) + guard parts.count == 3 else { throw Failure(status: 0, message: "Unknown deployment") } + var body: [String: Any] = ["name": parts[1], "deploymentId": parts[0]] + if !parts[2].isEmpty { body["target"] = parts[2] } + let json = try await request("https://api.vercel.com/v13/deployments", method: "POST", + headers: try vercelHeaders(), body: body) + let url = (json as? [String: Any])?["url"] as? String + return url.map { "Building \($0)" } ?? "New deployment started" + case "vercel.promote": + // Vercel only promotes production builds in place: a preview is rebuilt for + // production, as `vercel promote` does. + let parts = target.split(separator: "|", omittingEmptySubsequences: false).map(String.init) + guard parts.count == 2 else { throw Failure(status: 0, message: "Unknown deployment") } + let json = try await request("https://api.vercel.com/v13/deployments", method: "POST", + headers: try vercelHeaders(), + body: ["deploymentId": parts[0], "name": parts[1], "target": "production", + "meta": ["action": "promote"]]) + let url = (json as? [String: Any])?["url"] as? String + return url.map { "Building \($0) for production" } ?? "Production build started" + case "vercel.cancel": + _ = try await request("https://api.vercel.com/v12/deployments/\(target)/cancel", method: "PATCH", + headers: try vercelHeaders()) + return "Build canceled" + case "github.rerun": + // "owner/repo/123" + let parts = target.split(separator: "/").map(String.init) + guard parts.count == 3 else { throw Failure(status: 0, message: "Unknown run") } + _ = try await request("https://api.github.com/repos/\(parts[0])/\(parts[1])/actions/runs/\(parts[2])/rerun-failed-jobs", + method: "POST", headers: try githubHeaders()) + return "Failed jobs started again" + case "github.approve", "github.merge": + // "owner/repo#12" + let pieces = target.split(separator: "#").map(String.init) + guard pieces.count == 2 else { throw Failure(status: 0, message: "Unknown pull request") } + if kind == "github.approve" { + _ = try await request("https://api.github.com/repos/\(pieces[0])/pulls/\(pieces[1])/reviews", method: "POST", + headers: try githubHeaders(), body: ["event": "APPROVE"]) + return "Approved" + } + _ = try await request("https://api.github.com/repos/\(pieces[0])/pulls/\(pieces[1])/merge", method: "PUT", + headers: try githubHeaders(), body: ["merge_method": "squash"]) + return "Merged" + case "n8n.activate", "n8n.deactivate", "n8n.retry": + let key = try secret("n8n-api-key", "n8n") + let base = try secret("n8n-url", "n8n").trimmingCharacters(in: CharacterSet(charactersIn: "/")) + let headers = ["X-N8N-API-KEY": key, "Accept": "application/json"] + switch kind { + case "n8n.activate": + _ = try await request("\(base)/api/v1/workflows/\(target)/activate", method: "POST", headers: headers) + return "Turned on" + case "n8n.deactivate": + _ = try await request("\(base)/api/v1/workflows/\(target)/deactivate", method: "POST", headers: headers) + return "Turned off" + default: + do { + _ = try await request("\(base)/api/v1/executions/\(target)/retry", method: "POST", headers: headers) + } catch let failure as Failure where failure.status == 404 || failure.status == 405 { + // POST /api/v1/executions/{id}/retry only exists from n8n 1.112.0. + throw Failure(status: 0, message: "Couldn't retry this run. It may have been deleted, or your n8n is older than 1.112, which is needed to retry from the iPhone.") + } + return "Running again" + } + default: + throw Failure(status: 0, message: "This action isn't available") + } + } + + private static func vercelHeaders() throws -> [String: String] { + let token = try secret("vercel-token", "Vercel") + return ["Authorization": "Bearer \(token)", "Accept": "application/json"] + } + + private static func githubHeaders() throws -> [String: String] { + let token = try secret("github-token", "GitHub") + return ["Authorization": "Bearer \(token)", "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28"] + } +} +#endif diff --git a/NotchBuddy/Sources/App/PhoneLink/ServicePublisher.swift b/NotchBuddy/Sources/App/PhoneLink/ServicePublisher.swift new file mode 100644 index 0000000..7bb6ab9 --- /dev/null +++ b/NotchBuddy/Sources/App/PhoneLink/ServicePublisher.swift @@ -0,0 +1,395 @@ +#if PHONE_LINK +import AppKit +import CloudKit +import Combine + +// MARK: - Services on the iPhone +// +// One `Service` record per service Mochi (GitHub, Stripe, Vercel, Resend, +// Cal.com, n8n, Notion), built from the data the Mac's pollers already keep in +// AppState: no extra API call, no key sent anywhere. The whole snapshot +// (amounts, titles, emails, links) is one field encrypted with the user's +// iCloud keys; only the pill ID, the state dot and the date are in clear. +// Driven by AppState changes (debounced), never by a timer. + +@MainActor +final class ServicePublisher { + static let shared = ServicePublisher() + + private let container = CKContainer(identifier: CloudProbe.containerID) + private var database: CKDatabase { container.privateCloudDatabase } + private var cancellable: AnyCancellable? + private var published: [String: ServiceSnapshot] = [:] + private var cleanedUp = false + private var writing = false + private var again = false + + func start() { + guard cancellable == nil else { return } + let s = AppState.shared + let changes: [AnyPublisher] = [ + s.$stripePayments.map { _ in () }.eraseToAnyPublisher(), + s.$stripeBalance.map { _ in () }.eraseToAnyPublisher(), + s.$stripeError.map { _ in () }.eraseToAnyPublisher(), + s.$githubPulse.map { _ in () }.eraseToAnyPublisher(), + s.$githubActivity.map { _ in () }.eraseToAnyPublisher(), + s.$vercelDeployments.map { _ in () }.eraseToAnyPublisher(), + s.$resendEmails.map { _ in () }.eraseToAnyPublisher(), + s.$calcomBookings.map { _ in () }.eraseToAnyPublisher(), + s.$calcomError.map { _ in () }.eraseToAnyPublisher(), + s.$notionPages.map { _ in () }.eraseToAnyPublisher(), + s.$notionError.map { _ in () }.eraseToAnyPublisher(), + s.$n8nRuns.map { _ in () }.eraseToAnyPublisher(), + ] + cancellable = Publishers.MergeMany(changes) + .debounce(for: .seconds(2), scheduler: RunLoop.main) + .sink { [weak self] in + MainActor.assumeIsolated { self?.publish() } + } + log("service publisher on") + } + + /// Stops and deletes this Mac's services from iCloud. + func stop() { + cancellable = nil + let ids = PillCatalog.phoneServices.map { + CKRecord.ID(recordName: ServiceSnapshot.recordName(for: $0), zoneID: SessionSnapshot.zoneID) + } + published = [:] + cleanedUp = false + Task { _ = try? await database.modifyRecords(saving: [], deleting: ids, savePolicy: .changedKeys, atomically: false) } + log("service publisher off") + } + + private func publish() { + guard !writing else { again = true; return } + writing = true + let snapshots = ServiceSnapshots.all(from: AppState.shared) + Task { + await write(snapshots) + writing = false + if again { again = false; publish() } + } + } + + private func write(_ snapshots: [String: ServiceSnapshot]) async { + var deletions: [CKRecord.ID] = [] + if !cleanedUp { + // Services this Mac no longer has (key removed since the last run). + deletions = PillCatalog.phoneServices.filter { snapshots[$0] == nil }.map { + CKRecord.ID(recordName: ServiceSnapshot.recordName(for: $0), zoneID: SessionSnapshot.zoneID) + } + cleanedUp = true + } + let changed = snapshots.values.filter { snapshot in + guard let old = published[snapshot.pillId] else { return true } + return !old.sameContent(as: snapshot) + } + let removed = published.keys.filter { snapshots[$0] == nil } + deletions += removed.map { CKRecord.ID(recordName: ServiceSnapshot.recordName(for: $0), zoneID: SessionSnapshot.zoneID) } + guard !changed.isEmpty || !deletions.isEmpty else { return } + + let records = changed.compactMap { record(for: $0) } + do { + let result = try await database.modifyRecords(saving: records, deleting: deletions, + savePolicy: .changedKeys, atomically: false) + for (id, outcome) in result.saveResults { + guard let pillId = ServiceSnapshot.pillId(fromRecordName: id.recordName) else { continue } + if case .success = outcome { published[pillId] = snapshots[pillId] } + } + for id in removed { published[id] = nil } + let names = changed.map { "\($0.pillId.replacingOccurrences(of: "integration_", with: ""))=\($0.tone.rawValue)" } + log("published \(changed.count) service(s) [\(names.sorted().joined(separator: ", "))], removed \(deletions.count)") + } catch { + log("publish failed: \(error.localizedDescription)") + } + } + + private func record(for snapshot: ServiceSnapshot) -> CKRecord? { + guard let json = try? JSONEncoder().encode(snapshot), let payload = String(data: json, encoding: .utf8) else { return nil } + let record = CKRecord(recordType: ServiceSnapshot.recordType, + recordID: CKRecord.ID(recordName: ServiceSnapshot.recordName(for: snapshot.pillId), + zoneID: SessionSnapshot.zoneID)) + record["pillId"] = snapshot.pillId + record["tone"] = snapshot.tone.rawValue + record["updatedAt"] = snapshot.updatedAt + record["macName"] = Host.current().localizedName ?? "" + record.encryptedValues["payload"] = payload + return record + } + + private func log(_ message: String) { + CloudProbe.shared.log("[services] \(message)") + } +} + +// MARK: - Building the snapshots + +/// One snapshot per service that has data on this Mac. A service without its +/// key (nothing loaded) is left out, and the iPhone shows "connect it on your Mac". +@MainActor +enum ServiceSnapshots { + static func all(from s: AppState) -> [String: ServiceSnapshot] { + let built = [github(s), stripe(s), vercel(s), resend(s), calcom(s), n8n(s), notion(s)].compactMap { $0 } + return Dictionary(uniqueKeysWithValues: built.map { ($0.pillId, $0) }) + } + + // MARK: GitHub + + static func github(_ s: AppState) -> ServiceSnapshot? { + guard let pulse = s.githubPulse else { return nil } + func tone(_ ci: CIState) -> ServiceTone { + switch ci { + case .success: .ok + case .failure: .error + case .pending: .warning + case .unknown: .idle + } + } + func ciLabel(_ ci: CIState) -> String { + switch ci { + case .success: "checks passed" + case .failure: "checks failing" + case .pending: "checks running" + case .unknown: "no checks" + } + } + func reviewLabel(_ review: ReviewState) -> String { + switch review { + case .approved: " · approved" + case .changesRequested: " · changes requested" + case .pending: " · review required" + case .unknown: "" + } + } + let failingPR = pulse.myPRs.first { $0.ci == .failure } + let failingMain = pulse.mainCI.first { $0.ci == .failure } + let pending = pulse.myPRs.contains { $0.ci == .pending } || pulse.mainCI.contains { $0.ci == .pending } + let anyGreen = pulse.myPRs.contains { $0.ci == .success } || pulse.mainCI.contains { $0.ci == .success } + + let overall: ServiceTone + let reason: String + if let main = failingMain { + overall = .error + reason = "CI failing on \(main.repo) · \(main.branch)" + } else if let pr = failingPR { + overall = .error + reason = "Checks failing on \(pr.repo) #\(pr.number): \(pr.title)" + } else if pending { + overall = .warning + reason = "Checks are running" + } else if !pulse.toReview.isEmpty { + overall = .warning + reason = pulse.toReview.count == 1 + ? "1 pull request waits for your review" + : "\(pulse.toReview.count) pull requests wait for your review" + } else if anyGreen { + overall = .ok + reason = "All checks passed" + } else { + overall = .idle + reason = "Nothing going on" + } + + var sections: [ServiceSection] = [] + if !pulse.myPRs.isEmpty { + sections.append(ServiceSection(title: "Your pull requests", items: pulse.myPRs.prefix(8).map { + ServiceItem(title: "#\($0.number) \($0.title)", + detail: "\($0.repo) · \(ciLabel($0.ci))\(reviewLabel($0.review))\($0.isDraft ? " · draft" : "")", + tone: tone($0.ci), url: $0.url) + })) + } + if !pulse.toReview.isEmpty { + sections.append(ServiceSection(title: "Waiting for your review", items: pulse.toReview.prefix(8).map { + ServiceItem(title: "#\($0.number) \($0.title)", detail: $0.repo, tone: .warning, url: $0.url) + })) + } + if !pulse.mainCI.isEmpty { + sections.append(ServiceSection(title: "Default branches", items: pulse.mainCI.prefix(8).map { + ServiceItem(title: $0.repo, detail: "\($0.branch) · \(ciLabel($0.ci))", tone: tone($0.ci), url: $0.url) + })) + } + var headline = "\(pulse.myPRs.count) open pull request\(pulse.myPRs.count == 1 ? "" : "s")" + if let total = s.githubActivity?.total { headline += " · \(total) contributions this year" } + return ServiceSnapshot(pillId: "integration_github", tone: overall, headline: headline, reason: reason, + sections: sections, updatedAt: pulse.fetchedAt) + } + + // MARK: Stripe + + static func stripe(_ s: AppState) -> ServiceSnapshot? { + if let error = s.stripeError, !s.stripeLoaded { + return ServiceSnapshot(pillId: "integration_stripe", tone: .error, headline: "Can't reach Stripe", + reason: error, sections: [], updatedAt: Date()) + } + guard s.stripeLoaded else { return nil } + let currency = s.stripeCurrency.uppercased() + func money(_ cents: Int, _ code: String) -> String { + String(format: "%.2f %@", Double(cents) / 100, code.uppercased()) + } + let latest = s.stripePayments.first + let overall: ServiceTone + let reason: String + if let error = s.stripeError { + overall = .error + reason = "Stripe answered with an error: \(error)" + } else if let latest { + let what = latest.description.map { " · \($0)" } ?? "" + switch latest.status { + case "succeeded": + overall = Date().timeIntervalSince(latest.createdAt) < 86_400 ? .ok : .idle + reason = "Last payment received: \(money(latest.amount, latest.currency))\(what)" + case "failed": + overall = .error + reason = "Last payment failed: \(money(latest.amount, latest.currency))\(what)" + default: + overall = .warning + reason = "Last payment pending: \(money(latest.amount, latest.currency))\(what)" + } + } else { + overall = .idle + reason = "No payment yet" + } + let items = s.stripePayments.prefix(10).map { + ServiceItem(title: money($0.amount, $0.currency), + detail: [$0.description, $0.status].compactMap { $0 }.joined(separator: " · "), + tone: $0.isSuccess ? .ok : ($0.status == "failed" ? .error : .warning), + date: $0.createdAt) + } + return ServiceSnapshot(pillId: "integration_stripe", tone: overall, + headline: "Balance \(money(s.stripeBalance, currency))", reason: reason, + sections: items.isEmpty ? [] : [ServiceSection(title: "Recent payments", items: items)], + updatedAt: latest?.createdAt ?? Date()) + } + + // MARK: Vercel + + static func vercel(_ s: AppState) -> ServiceSnapshot? { + let filter = s.vercelProjectFilter + let deployments = filter.isEmpty ? s.vercelDeployments : s.vercelDeployments.filter { filter.contains($0.projectName) } + guard let latest = deployments.first else { return nil } + func tone(_ d: VercelDeployment) -> ServiceTone { + d.isSuccess ? .ok : (d.state == "CANCELED" ? .warning : .error) + } + let branch = latest.branch.map { " · \($0)" } ?? "" + let reason: String + switch latest.state { + case "READY": reason = "Last deploy is live: \(latest.projectName)\(branch)" + case "CANCELED": reason = "Last deploy was canceled: \(latest.projectName)\(branch)" + default: reason = "Last deploy failed: \(latest.projectName)\(branch)" + } + let items = deployments.prefix(10).map { d in + ServiceItem(title: d.projectName, + detail: [d.statusLabel, d.branch, d.commitMessage].compactMap { $0 }.joined(separator: " · "), + tone: tone(d), date: d.createdAt, + url: d.url.isEmpty ? nil : "https://\(d.url)") + } + return ServiceSnapshot(pillId: "integration_vercel", tone: tone(latest), + headline: "\(latest.projectName) · \(latest.statusLabel)", reason: reason, + sections: [ServiceSection(title: "Deployments", items: items)], + updatedAt: latest.createdAt) + } + + // MARK: Resend + + static func resend(_ s: AppState) -> ServiceSnapshot? { + guard let latest = s.resendEmails.first else { return nil } + func tone(_ event: String) -> ServiceTone { + switch event { + case "bounced", "complained", "failed": .error + case "delivered", "opened", "clicked": .ok + case "delivery_delayed": .warning + default: .info + } + } + let reason: String + switch tone(latest.lastEvent) { + case .error: reason = "Last email \(latest.lastEvent): \(latest.subject)" + case .warning: reason = "Last email is delayed: \(latest.subject)" + case .ok: reason = "Last email \(latest.lastEvent): \(latest.subject)" + default: reason = "Last email \(latest.lastEvent): \(latest.subject)" + } + let items = s.resendEmails.prefix(10).map { + ServiceItem(title: $0.subject, detail: "to \($0.to.joined(separator: ", ")) · \($0.lastEvent)", + tone: tone($0.lastEvent), date: $0.createdAt) + } + let total = s.resendTotal.map { "\($0) emails sent" } ?? "Emails" + return ServiceSnapshot(pillId: "integration_resend", tone: tone(latest.lastEvent), headline: total, + reason: reason, sections: [ServiceSection(title: "Recent emails", items: items)], + updatedAt: latest.createdAt) + } + + // MARK: Cal.com + + static func calcom(_ s: AppState) -> ServiceSnapshot? { + if let error = s.calcomError, !s.calcomLoaded { + return ServiceSnapshot(pillId: "integration_calcom", tone: .error, headline: "Can't reach Cal.com", + reason: error, sections: [], updatedAt: Date()) + } + guard s.calcomLoaded else { return nil } + let upcoming = s.calcomBookings.filter { $0.endTime > Date() }.sorted { $0.startTime < $1.startTime } + let next = upcoming.first { $0.isActive } + let time = Date.FormatStyle(date: .abbreviated, time: .shortened) + let overall: ServiceTone + let reason: String + if let next { + let soon = next.startTime.timeIntervalSinceNow < 3600 + overall = soon ? .warning : .info + let with = next.attendeeName.map { " with \($0)" } ?? "" + reason = "\(soon ? "Starting soon" : "Next"): \(next.title)\(with), \(next.startTime.formatted(time))" + } else { + overall = .idle + reason = "No upcoming booking" + } + let items = upcoming.prefix(10).map { + ServiceItem(title: $0.title, + detail: [$0.attendeeName, $0.status.lowercased()].compactMap { $0 }.joined(separator: " · "), + tone: $0.isActive ? .info : .idle, date: $0.startTime) + } + let count = upcoming.filter(\.isActive).count + return ServiceSnapshot(pillId: "integration_calcom", tone: overall, + headline: "\(count) upcoming booking\(count == 1 ? "" : "s")", reason: reason, + sections: items.isEmpty ? [] : [ServiceSection(title: "Upcoming", items: items)], + updatedAt: Date()) + } + + // MARK: n8n + + static func n8n(_ s: AppState) -> ServiceSnapshot? { + guard let latest = s.n8nRuns.first else { return nil } + let reason = latest.success + ? "Last run succeeded: \(latest.workflow)" + : "Last run failed: \(latest.workflow)\(latest.detail.map { " · \($0)" } ?? "")" + let items = s.n8nRuns.map { + ServiceItem(title: $0.workflow, detail: $0.detail ?? ($0.success ? "succeeded" : "failed"), + tone: $0.success ? .ok : .error, date: $0.date) + } + let failed = s.n8nRuns.filter { !$0.success }.count + return ServiceSnapshot(pillId: "integration_n8n", tone: latest.success ? .ok : .error, + headline: failed == 0 ? "All recent runs succeeded" : "\(failed) failed run\(failed == 1 ? "" : "s")", + reason: reason, sections: [ServiceSection(title: "Recent runs", items: items)], + updatedAt: latest.date) + } + + // MARK: Notion + + static func notion(_ s: AppState) -> ServiceSnapshot? { + if let error = s.notionError, !s.notionLoaded { + return ServiceSnapshot(pillId: "integration_notion", tone: .error, headline: "Can't reach Notion", + reason: error, sections: [], updatedAt: Date()) + } + guard s.notionLoaded else { return nil } + let pages = s.notionPages.sorted { $0.lastEditedAt > $1.lastEditedAt } + let items = pages.prefix(10).map { + ServiceItem(title: [$0.emoji, $0.title].compactMap { $0 }.joined(separator: " "), + tone: .info, date: $0.lastEditedAt, url: $0.url) + } + let reason = pages.first.map { "Last edited: \($0.title)" } ?? "No recent page" + let recent = (pages.first?.lastEditedAt.timeIntervalSinceNow ?? -.infinity) > -3600 + return ServiceSnapshot(pillId: "integration_notion", tone: recent ? .info : .idle, + headline: "\(pages.count) recent page\(pages.count == 1 ? "" : "s")", reason: reason, + sections: items.isEmpty ? [] : [ServiceSection(title: "Recently edited", items: items)], + updatedAt: pages.first?.lastEditedAt ?? Date()) + } +} +#endif diff --git a/NotchBuddy/Sources/App/PhoneLink/SessionPublisher.swift b/NotchBuddy/Sources/App/PhoneLink/SessionPublisher.swift new file mode 100644 index 0000000..237e130 --- /dev/null +++ b/NotchBuddy/Sources/App/PhoneLink/SessionPublisher.swift @@ -0,0 +1,257 @@ +#if PHONE_LINK +import AppKit +import CloudKit +import Combine + +// MARK: - iPhone plan, step 4: publish agent sessions to iCloud +// +// One `Session` record per agent pill (VS Code / Claude Code, Cursor, Codex, +// Antigravity, Gemini CLI…) in the private zone `Coucou`, so the iPhone can show +// them. Driven only by AppState changes (debounced), never by a timer: nothing +// runs while no agent changes. Integrations (Stripe, Vercel…) are not sessions. +// +// In clear (needed for sorting and widgets): pillId, state, step counts, flags, +// dates. Encrypted with the user's iCloud keys: project name, steps, cwd, +// last message, the pending command and question. + +@MainActor +final class SessionPublisher { + static let shared = SessionPublisher() + + private let container = CKContainer(identifier: "iCloud.fr.louisraille.Coucou") + private var database: CKDatabase { container.privateCloudDatabase } + private var cancellable: AnyCancellable? + + /// What was last written to iCloud, by pill ID. + private var published: [String: SessionSnapshot] = [:] + private var zoneReady = false + private var cleanedUp = false + private var publishing = false + private var pending: [String: SessionSnapshot]? + + /// Stops publishing and deletes this Mac's sessions from iCloud. + func stop() { + cancellable = nil + pending = nil + Task { + do { + let existing = try await existingSessions() + let ids = existing.keys.map { SessionSnapshot.recordID(for: $0) } + if !ids.isEmpty { + _ = try await database.modifyRecords(saving: [], deleting: ids, savePolicy: .changedKeys, atomically: false) + } + log("publisher off, removed \(ids.count) session(s) from iCloud") + } catch let error as CKError where error.code == .zoneNotFound || error.code == .userDeletedZone { + log("publisher off, nothing in iCloud") + } catch { + log("publisher off, cleanup failed: \(error.localizedDescription)") + } + published = [:] + cleanedUp = false + } + } + + func start() { + guard cancellable == nil else { return } + let state = AppState.shared + cancellable = state.$tasks + .combineLatest(state.$pendingApproval, state.$pendingQuestion) + .map { tasks, approval, question in + SessionSnapshot.all(tasks: tasks, approval: approval, question: question) + } + .removeDuplicates() + .debounce(for: .milliseconds(500), scheduler: RunLoop.main) + .sink { [weak self] snapshots in + MainActor.assumeIsolated { self?.publish(snapshots) } + } + log("session publisher on") + } + + // MARK: Publishing + + private func publish(_ snapshots: [String: SessionSnapshot]) { + guard !publishing else { pending = snapshots; return } + publishing = true + Task { + await write(snapshots) + publishing = false + if let next = pending { + pending = nil + publish(next) + } + } + } + + private func write(_ snapshots: [String: SessionSnapshot]) async { + do { + if !zoneReady { + _ = try await database.modifyRecordZones(saving: [CKRecordZone(zoneID: SessionSnapshot.zoneID)], deleting: []) + zoneReady = true + } + if !cleanedUp { + // Sessions left by a previous run (the Mac quit or crashed). + published = try await existingSessions() + cleanedUp = true + } + + let changed = snapshots.values.filter { published[$0.pillId] != $0 } + let removed = published.keys.filter { snapshots[$0] == nil } + guard !changed.isEmpty || !removed.isEmpty else { return } + + let records = changed.map { $0.record() } + let deletions = removed.map { SessionSnapshot.recordID(for: $0) } + let result = try await database.modifyRecords(saving: records, deleting: deletions, + savePolicy: .changedKeys, atomically: false) + for (id, outcome) in result.saveResults { + guard let pillId = SessionSnapshot.pillId(from: id) else { continue } + switch outcome { + case .success: published[pillId] = snapshots[pillId] + case .failure(let error): log("save \(pillId) failed: \(error.localizedDescription)") + } + } + for (id, outcome) in result.deleteResults { + guard let pillId = SessionSnapshot.pillId(from: id) else { continue } + switch outcome { + case .success: published[pillId] = nil + case .failure(let error): log("delete \(pillId) failed: \(error.localizedDescription)") + } + } + let summary = changed.map { "\($0.pillId)=\($0.state)" }.sorted().joined(separator: ", ") + log("published \(changed.count) session(s)\(summary.isEmpty ? "" : " [\(summary)]"), removed \(removed.count)") + } catch let error as CKError where error.code == .zoneNotFound || error.code == .userDeletedZone { + zoneReady = false + log("zone missing, will recreate on the next change") + } catch { + log("publish failed: \(error.localizedDescription)") + } + } + + /// Session records already in the zone, so the first write can delete stale ones. + private func existingSessions() async throws -> [String: SessionSnapshot] { + var found: [String: SessionSnapshot] = [:] + var token: CKServerChangeToken? + var more = true + while more { + let changes = try await database.recordZoneChanges(inZoneWith: CloudProbe.zoneID, since: token) + for (id, result) in changes.modificationResultsByID { + guard case .success(let mod) = result, mod.record.recordType == SessionSnapshot.recordType, + let pillId = SessionSnapshot.pillId(from: id) else { continue } + // Unknown content: a placeholder that never equals a real snapshot, + // so it is rewritten if the session still exists, deleted otherwise. + found[pillId] = SessionSnapshot.placeholder(pillId: pillId) + } + token = changes.changeToken + more = changes.moreComing + } + return found + } + + private func log(_ message: String) { + CloudProbe.shared.log("[sessions] \(message)") + } +} + +// MARK: - Snapshot + +/// The part of an AgentTask the iPhone needs. Equatable so unchanged sessions +/// are not rewritten. +struct SessionSnapshot: Equatable { + static let recordType = "Session" + + let pillId: String + let name: String + let color: String + let state: String + let stepIndex: Int + let steps: [String] + let cwd: String + let finalLine: String + let approvalTool: String + let approvalCommand: String + let approvalFingerprint: String + let question: String + /// The question's choices (QuestionPayload JSON) and its fingerprint, for answering from the iPhone. + var questionPayload: String = "" + var questionFingerprint: String = "" + + static func all(tasks: [AgentTask], approval: ApprovalInfo?, + question: AskQuestion?) -> [String: SessionSnapshot] { + var result: [String: SessionSnapshot] = [:] + // Services (Stripe, GitHub…) go through ServicePublisher, with their data. + for task in tasks where task.source != .n8n && PillCatalog.isSession(task.id) { + let hasApproval = approval?.pillId == task.id + let questionText = task.state == .question + ? (question?.questions.map(\.question).joined(separator: "\n") ?? "") + : "" + let payload = task.state == .question ? question.map(QuestionPayload.init(ask:)) : nil + result[task.id] = SessionSnapshot( + pillId: task.id, + name: task.name, + color: task.color, + state: task.state.rawValue, + stepIndex: task.stepIndex, + steps: task.steps, + cwd: task.sessionCwd ?? "", + finalLine: task.finalLine ?? "", + approvalTool: hasApproval ? (approval?.tool ?? "") : "", + approvalCommand: hasApproval ? (approval?.command ?? "") : "", + approvalFingerprint: hasApproval ? (approval.map(ApprovalRelay.fingerprint) ?? "") : "", + question: questionText, + questionPayload: payload?.json ?? "", + questionFingerprint: payload?.fingerprint ?? "") + } + return result + } + + static func placeholder(pillId: String) -> SessionSnapshot { + SessionSnapshot(pillId: pillId, name: "", color: "", state: "", stepIndex: -1, steps: [], + cwd: "", finalLine: "", approvalTool: "", approvalCommand: "", approvalFingerprint: "", question: "") + } + + /// Same zone as CloudProbe.zoneID, rebuilt here because that one is main-actor isolated. + static var zoneID: CKRecordZone.ID { + CKRecordZone.ID(zoneName: "Coucou", ownerName: CKCurrentUserDefaultName) + } + + static func recordID(for pillId: String) -> CKRecord.ID { + CKRecord.ID(recordName: "session-\(pillId)", zoneID: zoneID) + } + + static func pillId(from id: CKRecord.ID) -> String? { + let name = id.recordName + guard name.hasPrefix("session-") else { return nil } + return String(name.dropFirst("session-".count)) + } + + func record() -> CKRecord { + let record = CKRecord(recordType: Self.recordType, recordID: Self.recordID(for: pillId)) + record["pillId"] = pillId + record["color"] = color + record["state"] = state + record["stepIndex"] = stepIndex + record["stepCount"] = steps.count + record["needsApproval"] = !approvalCommand.isEmpty || !approvalTool.isEmpty + // Identifies the exact request; the iPhone sends it back with its decision. + record["approvalFingerprint"] = approvalFingerprint + record["needsAnswer"] = !question.isEmpty + record["questionFingerprint"] = questionFingerprint + record["updatedAt"] = Date() + record["macName"] = Host.current().localizedName ?? "" + // Whether this Mac runs instructions sent from the iPhone (GitHub build, switch on). + #if APPSTORE + record["acceptsInstructions"] = false + #else + record["acceptsInstructions"] = InstructionRunner.isEnabled && (pillId == "integration_claude" || pillId == "agent_cursor") + #endif + record.encryptedValues["name"] = name + record.encryptedValues["steps"] = steps + record.encryptedValues["cwd"] = cwd + record.encryptedValues["finalLine"] = finalLine + record.encryptedValues["approvalTool"] = approvalTool + record.encryptedValues["approvalCommand"] = approvalCommand + record.encryptedValues["question"] = question + record.encryptedValues["questionPayload"] = questionPayload + return record + } +} +#endif diff --git a/NotchBuddy/Sources/App/PhoneLink/TurnRecorder.swift b/NotchBuddy/Sources/App/PhoneLink/TurnRecorder.swift new file mode 100644 index 0000000..3aed1dd --- /dev/null +++ b/NotchBuddy/Sources/App/PhoneLink/TurnRecorder.swift @@ -0,0 +1,217 @@ +#if PHONE_LINK +import AppKit +import CloudKit + +// MARK: - The last turn, for the iPhone +// +// Built from the hook events HookServer already receives: UserPromptSubmit +// starts a turn, Pre/PostToolUse add actions (commands with their output, +// edits with their diff), Stop adds the final answer. One encrypted `Turn` +// record per session pill, replaced at each turn; nothing else is kept. +// Runs only while the iPhone sync is on; no timer. + +@MainActor +final class TurnRecorder { + static let shared = TurnRecorder() + + private let container = CKContainer(identifier: CloudProbe.containerID) + private var database: CKDatabase { container.privateCloudDatabase } + private var running = false + private var turns: [String: TurnSnapshot] = [:] + private var dirty: Set = [] + private var flushTask: Task? + + // Size limits: a turn stays well under CloudKit's 1 MB per record. + private let maxActions = 200 + private let maxLinesPerFile = 600 + private let maxTotalLines = 4000 + private let maxOutput = 1500 + private let maxFinal = 12_000 + + /// The Claude Code session last seen on a pill and its folder, for + /// instructions sent from the iPhone (InstructionRunner). + func lastSession(for pillId: String) -> (sessionId: String, cwd: String)? { + guard let info = sessions[pillId], !info.sessionId.isEmpty, !info.cwd.isEmpty else { return nil } + return info + } + private var sessions: [String: (sessionId: String, cwd: String)] = [:] + + func start() { + running = true + log("turn recorder on") + } + + func stop() { + running = false + flushTask?.cancel(); flushTask = nil + let ids = turns.keys.map { + CKRecord.ID(recordName: TurnSnapshot.recordName(for: $0), zoneID: SessionSnapshot.zoneID) + } + turns = [:] + dirty = [] + if !ids.isEmpty { + Task { _ = try? await database.modifyRecords(saving: [], deleting: ids, savePolicy: .changedKeys, atomically: false) } + } + } + + /// Called by HookServer for every event of a session pill. + func record(event: String, payload: [String: Any], pillId: String) { + guard running, PillCatalog.isSession(pillId) else { return } + let sessionId = payload["session_id"] as? String ?? payload["conversation_id"] as? String ?? "" + let cwd = payload["cwd"] as? String ?? "" + let now = Date() + if !sessionId.isEmpty, !cwd.isEmpty { sessions[pillId] = (sessionId, cwd) } + + switch event { + case "UserPromptSubmit": + let prompt = payload["prompt"] as? String ?? "" + turns[pillId] = TurnSnapshot(pillId: pillId, sessionId: sessionId, + project: URL(fileURLWithPath: cwd).lastPathComponent, + prompt: String(prompt.prefix(8000)), actions: [], files: [], + finalMessage: "", startedAt: now, endedAt: nil) + + case "PreToolUse": + let tool = payload["tool_name"] as? String ?? "Tool" + guard tool != "AskUserQuestion" else { return } + var turn = current(pillId, sessionId: sessionId, cwd: cwd) + guard turn.actions.count < maxActions else { return } + let input = payload["tool_input"] as? [String: Any] ?? [:] + turn.actions.append(TurnAction(tool: tool, summary: Self.summary(tool: tool, input: input), date: now)) + turns[pillId] = turn + + case "PostToolUse", "PostToolUseFailure": + let tool = payload["tool_name"] as? String ?? "Tool" + guard tool != "AskUserQuestion" else { return } + var turn = current(pillId, sessionId: sessionId, cwd: cwd) + let input = payload["tool_input"] as? [String: Any] ?? [:] + let summary = Self.summary(tool: tool, input: input) + // The matching PreToolUse action, latest first; one is added if it was missed. + var index = turn.actions.lastIndex { $0.tool == tool && $0.summary == summary && $0.output.isEmpty && $0.fileIndex == nil } + if index == nil, turn.actions.count < maxActions { + turn.actions.append(TurnAction(tool: tool, summary: summary, date: now)) + index = turn.actions.count - 1 + } + guard let index else { return } + turn.actions[index].failed = event == "PostToolUseFailure" + turn.actions[index].output = Self.output(payload, limit: maxOutput) + if event == "PostToolUse", let diff = Self.fileDiff(tool: tool, input: input) { + let used = turn.files.reduce(0) { $0 + $1.lines.count } + let budget = max(0, min(maxLinesPerFile, maxTotalLines - used)) + turn.files.append(TurnFile(diff: diff, maxLines: budget)) + turn.actions[index].fileIndex = turn.files.count - 1 + } + turns[pillId] = turn + + case "Stop", "StopFailure": + var turn = current(pillId, sessionId: sessionId, cwd: cwd) + let final = (payload["last_assistant_message"] as? String) ?? (payload["message"] as? String) ?? "" + turn.finalMessage = String(final.prefix(maxFinal)) + turn.endedAt = now + turns[pillId] = turn + + default: + return + } + dirty.insert(pillId) + scheduleFlush(soon: event == "Stop" || event == "StopFailure" || event == "UserPromptSubmit") + } + + /// The turn in progress, or a new one when the prompt wasn't seen (Codex, app started mid-turn). + private func current(_ pillId: String, sessionId: String, cwd: String) -> TurnSnapshot { + if let turn = turns[pillId], turn.endedAt == nil { return turn } + return TurnSnapshot(pillId: pillId, sessionId: sessionId, + project: URL(fileURLWithPath: cwd).lastPathComponent, + prompt: "", actions: [], files: [], finalMessage: "", startedAt: Date(), endedAt: nil) + } + + // MARK: Writing + + private func scheduleFlush(soon: Bool) { + if soon { flushTask?.cancel(); flushTask = nil } + guard flushTask == nil else { return } + flushTask = Task { + try? await Task.sleep(for: .seconds(soon ? 0.5 : 2)) + guard !Task.isCancelled else { return } + flushTask = nil + await flush() + } + } + + private func flush() async { + let ids = dirty + dirty = [] + let records = ids.compactMap { id -> CKRecord? in + guard let turn = turns[id], let json = try? JSONEncoder().encode(turn), + let payload = String(data: json, encoding: .utf8) else { return nil } + let record = CKRecord(recordType: TurnSnapshot.recordType, + recordID: CKRecord.ID(recordName: TurnSnapshot.recordName(for: id), + zoneID: SessionSnapshot.zoneID)) + record["pillId"] = id + record["updatedAt"] = Date() + record.encryptedValues["payload"] = payload + return record + } + guard !records.isEmpty else { return } + do { + _ = try await database.modifyRecords(saving: records, deleting: [], savePolicy: .allKeys, atomically: false) + } catch { + log("turn publish failed: \(error.localizedDescription)") + } + } + + // MARK: Reading the hook payloads + + static func summary(tool: String, input: [String: Any]) -> String { + let keys = ["command", "file_path", "path", "pattern", "url", "query", "description", "prompt"] + for key in keys { + if let value = input[key] as? String, !value.isEmpty { return String(value.prefix(600)) } + } + return "" + } + + /// What a command printed, or the error. + static func output(_ payload: [String: Any], limit: Int) -> String { + var text = "" + if let error = payload["error"] as? String { + text = error + } else if let response = payload["tool_response"] as? [String: Any] { + let stdout = response["stdout"] as? String ?? "" + let stderr = response["stderr"] as? String ?? "" + text = [stdout, stderr].filter { !$0.isEmpty }.joined(separator: "\n") + } else if let response = payload["tool_response"] as? String { + text = response + } + let trimmed = text.trimmingCharacters(in: .whitespacesAndNewlines) + return trimmed.count > limit ? String(trimmed.prefix(limit)) + "\n…" : trimmed + } + + static func fileDiff(tool: String, input: [String: Any]) -> FileDiff? { + guard let path = input["file_path"] as? String else { return nil } + switch tool { + case "Edit": + guard let old = input["old_string"] as? String, let new = input["new_string"] as? String else { return nil } + return DiffEngine.fromEdit(old: old, new: new, path: path) + case "MultiEdit": + guard let edits = input["edits"] as? [[String: Any]] else { return nil } + var added = 0, removed = 0, hunks: [DiffHunk] = [], tooLarge = false + for edit in edits { + guard let old = edit["old_string"] as? String, let new = edit["new_string"] as? String else { continue } + let d = DiffEngine.fromEdit(old: old, new: new, path: path) + added += d.added; removed += d.removed + hunks += d.hunks + tooLarge = tooLarge || d.tooLarge + } + return FileDiff(path: path, added: added, removed: removed, hunks: hunks, tooLarge: tooLarge, isNewFile: false) + case "Write": + guard let content = input["content"] as? String else { return nil } + return DiffEngine.fromNew(content: content, path: path) + default: + return nil + } + } + + private func log(_ message: String) { + CloudProbe.shared.log("[turn] \(message)") + } +} +#endif diff --git a/NotchBuddy/Sources/App/ResendPoller.swift b/NotchBuddy/Sources/App/ResendPoller.swift new file mode 100644 index 0000000..a1f6e39 --- /dev/null +++ b/NotchBuddy/Sources/App/ResendPoller.swift @@ -0,0 +1,62 @@ +import Foundation + +final class ResendPoller: @unchecked Sendable { + static let shared = ResendPoller() + private var timer: DispatchSourceTimer? + private init() {} + + func start() { + guard timer == nil else { return } + let t = DispatchSource.makeTimerSource(queue: .global(qos: .background)) + t.schedule(deadline: .now() + 6, repeating: 60) + t.setEventHandler { [weak self] in self?.poll() } + t.resume() + timer = t + } + + private func poll() { + guard let apiKey = KeychainStore.shared.get("resend-api-key") else { return } + guard let url = URL(string: "https://api.resend.com/emails?limit=100") else { return } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization") + req.setValue("application/json", forHTTPHeaderField: "Accept") + + URLSession.shared.dataTask(with: req) { [weak self] data, response, _ in + guard let self else { return } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + guard let data, code == 200 else { return } + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let rawList = json["data"] as? [[String: Any]] else { return } + + let total = (json["total"] as? Int) ?? (json["count"] as? Int) + let emails = rawList.compactMap { self.parseEmail($0) } + + DispatchQueue.main.async { + AppState.shared.resendEmails = Array(emails.prefix(5)) + AppState.shared.resendTotal = total ?? (emails.isEmpty ? nil : emails.count) + } + }.resume() + } + + private func parseEmail(_ d: [String: Any]) -> ResendEmail? { + guard let id = d["id"] as? String, + let createdAt = d["created_at"] as? String else { return nil } + + let to: [String] + if let arr = d["to"] as? [String] { to = arr } + else if let single = d["to"] as? String { to = [single] } + else { to = [] } + + let subject = (d["subject"] as? String) ?? "" + let lastEvent = (d["last_event"] as? String) ?? "" + + // Parse ISO8601 date + let formatter = ISO8601DateFormatter() + formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] + let date = formatter.date(from: createdAt) + ?? ISO8601DateFormatter().date(from: createdAt) + ?? Date() + + return ResendEmail(id: id, to: to, subject: subject, createdAt: date, lastEvent: lastEvent) + } +} diff --git a/NotchBuddy/Sources/App/SafeWebURL.swift b/NotchBuddy/Sources/App/SafeWebURL.swift new file mode 100644 index 0000000..d2e8d9b --- /dev/null +++ b/NotchBuddy/Sources/App/SafeWebURL.swift @@ -0,0 +1,12 @@ +import Foundation + +/// Returns the URL only if it is a plain web link (http/https with a host). Model output +/// and API data can carry file://, smb:// or custom app schemes that would launch local apps +/// or deep links; those never reach NSWorkspace.open. +func safeWebURL(_ string: String?) -> URL? { + guard let string, + let url = URL(string: string.trimmingCharacters(in: .whitespacesAndNewlines)), + let scheme = url.scheme?.lowercased(), scheme == "https" || scheme == "http", + let host = url.host, !host.isEmpty else { return nil } + return url +} diff --git a/NotchBuddy/Sources/App/SettingsView.swift b/NotchBuddy/Sources/App/SettingsView.swift new file mode 100644 index 0000000..9a3d040 --- /dev/null +++ b/NotchBuddy/Sources/App/SettingsView.swift @@ -0,0 +1,1422 @@ +import SwiftUI +import ServiceManagement +import AppKit + +struct SettingsView: View { + @ObservedObject private var state = AppState.shared + @State private var apiKey: String = KeychainStore.shared.get("anthropic-api-key") ?? "" + + // Claude model — dynamic list fetched from the API, static fallback if unavailable + private static let fallbackModels: [(id: String, label: String)] = [ + ("claude-sonnet-4-6", "Claude Sonnet 4.6"), + ("claude-sonnet-5-5", "Claude Sonnet 5.5"), + ("claude-opus-5-5", "Claude Opus 5.5"), + ("claude-haiku-4-5-20251001", "Claude Haiku 4.5"), + ] + private static let customModelTag = "__custom__" + @State private var fetchedModels: [(id: String, label: String)] = [] + @State private var modelChoice: String = { + let m = AppState.shared.claudeModel + return SettingsView.fallbackModels.contains { $0.id == m } ? m : SettingsView.customModelTag + }() + @State private var customModel: String = { + let m = AppState.shared.claudeModel + return SettingsView.fallbackModels.contains { $0.id == m } ? "" : m + }() + private var displayModels: [(id: String, label: String)] { + fetchedModels.isEmpty ? Self.fallbackModels : fetchedModels + } + @State private var launchAtStartup: Bool = (SMAppService.mainApp.status == .enabled) + @State private var statusMessage: String = "" + @State private var showDiff: Bool = false + @State private var pendingHookJSON: String = "" + @State private var hookNeedsUpdate: Bool = HookServer.hooksNeedUpdate() + + #if !APPSTORE + @State private var showStatusLineDiff: Bool = false + @State private var pendingStatusLineJSON: String = "" + @State private var statusLinePendingInstall: Bool = true + @State private var planTogglePending: Bool = false + + @State private var geminiHooksInstalled: Bool = HookServer.geminiHooksInstalled() + @State private var showGeminiDiff: Bool = false + @State private var pendingGeminiJSON: String = "" + @State private var geminiPendingInstall: Bool = true + + @State private var agyHooksInstalled: Bool = HookServer.agyHooksInstalled() + @State private var showAgyDiff: Bool = false + @State private var pendingAgyJSON: String = "" + @State private var agyPendingInstall: Bool = true + + @State private var codexHooksInstalled: Bool = HookServer.codexHooksInstalled() + @State private var showCodexDiff: Bool = false + @State private var pendingCodexJSON: String = "" + @State private var codexPendingInstall: Bool = true + #endif + + // Multi-provider chat keys + @State private var googleKey: String = KeychainStore.shared.get("google-api-key") ?? "" + @State private var openAIKey: String = KeychainStore.shared.get("openai-api-key") ?? "" + @State private var ollamaURL: String = AppState.shared.ollamaServerURL + @State private var lmstudioURL: String = AppState.shared.lmstudioServerURL + @State private var connectingOllama: Bool = false + @State private var connectingLMStudio: Bool = false + + // Integration keys + @State private var resendKey: String = KeychainStore.shared.get("resend-api-key") ?? "" + @State private var resendFrom: String = KeychainStore.shared.get("resend-from") ?? "" + @State private var n8nUrl: String = KeychainStore.shared.get("n8n-url") ?? "" + @State private var n8nKey: String = KeychainStore.shared.get("n8n-api-key") ?? "" + @State private var vercelToken: String = KeychainStore.shared.get("vercel-token") ?? "" + @State private var githubToken: String = KeychainStore.shared.get("github-token") ?? "" + @State private var stripeKey: String = KeychainStore.shared.get("stripe-api-key") ?? "" + @State private var calcomKey: String = KeychainStore.shared.get("calcom-api-key") ?? "" + @State private var notionKey: String = KeychainStore.shared.get("notion-api-key") ?? "" + + // Hotkey + @State private var hotkeyFlags: UInt = AppState.shared.hotkeyFlags + @State private var hotkeyCode: UInt16 = AppState.shared.hotkeyCode + + // Vercel project filter + @State private var vercelProjects: [String] = [] + @State private var loadingVercel: Bool = false + + // n8n workflow filter + @State private var n8nWorkflows: [String] = [] + @State private var loadingN8n: Bool = false + + // Bindings in minutes for the absence field + private var absenceMinutes: Binding { + Binding( + get: { state.absenceInterval / 60 }, + set: { state.absenceInterval = max(1, $0) * 60 } + ) + } + + // Sidebar selection persisted across sessions + @AppStorage("settingsSection") private var selectedSection: String = "general" + #if PHONE_LINK + @AppStorage("iPhoneSyncEnabled") private var iPhoneSyncEnabled = false + @AppStorage("iPhoneLiveActivityEnabled") private var iPhoneLiveActivityEnabled = false + @AppStorage("iPhoneInstructionsEnabled") private var iPhoneInstructionsEnabled = false + #endif + + private var appVersion: String { + Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "" + } + + // MARK: - Body + + var body: some View { + HStack(spacing: 0) { + // Sidebar — 200 pt, sidebar visual effect background + ZStack(alignment: .topLeading) { + SidebarBackground() + VStack(alignment: .leading, spacing: 0) { + // Header + HStack(alignment: .center, spacing: 10) { + Image(nsImage: NSApplication.shared.applicationIconImage) + .resizable() + .frame(width: 32, height: 32) + VStack(alignment: .leading, spacing: 1) { + Text("Coucou") + .font(.system(size: 13, weight: .semibold)) + Text(appVersion) + .font(.system(size: 11)) + .foregroundColor(.secondary) + } + } + .padding(.horizontal, 16) + .padding(.top, 16) + .padding(.bottom, 10) + Divider() + List(selection: Binding( + get: { Optional(selectedSection) }, + set: { if let v = $0 { selectedSection = v; statusMessage = "" } } + )) { + SettingsSidebarRow(title: "General", icon: "gearshape.fill", color: "#8E939C").tag("general") + SettingsSidebarRow(title: "Active pills", icon: "square.grid.2x2.fill", color: "#F5A524").tag("activepills") + SettingsSidebarRow(title: "Agents", icon: "terminal.fill", color: "#3B9EFF").tag("agents") + SettingsSidebarRow(title: "Chat", icon: "bubble.left.and.bubble.right.fill", color: "#E07950").tag("chat") + SettingsSidebarRow(title: "Integrations", icon: "puzzlepiece.extension.fill", color: "#7C5CFF").tag("integrations") + SettingsSidebarRow(title: "Shortcuts", icon: "keyboard.fill", color: "#6366F1").tag("shortcuts") + } + .listStyle(.sidebar) + .scrollContentBackground(.hidden) + } + } + .frame(width: 200) + + Divider() + + // Detail panel + VStack(alignment: .leading, spacing: 0) { + Text(sectionTitle) + .font(.title2) + .fontWeight(.semibold) + .padding(.horizontal, 20) + .padding(.top, 20) + .padding(.bottom, 12) + ScrollView { + VStack(alignment: .leading, spacing: 18) { + sectionContent + } + .padding(.horizontal, 20) + .padding(.bottom, 16) + } + if !statusMessage.isEmpty { + Divider() + Text(statusMessage) + .font(.system(size: 12)) + .foregroundColor(statusMessage.hasPrefix("❌") ? .red : .secondary) + .padding(.horizontal, 20) + .padding(.vertical, 8) + } + } + } + .onAppear { + #if !APPSTORE + state.refreshPlanRelayState() + #endif + guard fetchedModels.isEmpty, + let key = KeychainStore.shared.get("anthropic-api-key"), !key.isEmpty else { return } + Task { + let models = await ClaudeService.fetchModels(apiKey: key) + guard !models.isEmpty else { return } + await MainActor.run { + fetchedModels = models + let m = state.claudeModel + if models.contains(where: { $0.id == m }) { + modelChoice = m + customModel = "" + } else if modelChoice != Self.customModelTag { + modelChoice = Self.customModelTag + customModel = m + } + } + } + } + } + + // MARK: - Section routing + + private var sectionTitle: String { + switch selectedSection { + case "general": return "General" + case "activepills": return "Active pills" + case "agents": return "Agents" + case "chat": return "Chat" + case "integrations": return "Integrations" + case "shortcuts": return "Shortcuts" + default: return "General" + } + } + + @ViewBuilder private var sectionContent: some View { + switch selectedSection { + case "activepills": activePillsSection + case "agents": agentsSection + case "chat": chatSection + case "integrations": integrationsSection + case "shortcuts": ShortcutsSettingsView() + default: generalSection + } + } + + // MARK: - General section + + @ViewBuilder private var generalSection: some View { + GroupBox("Sound") { + VStack(alignment: .leading, spacing: 10) { + Toggle("Enable sounds", isOn: $state.soundEnabled) + HStack(spacing: 8) { + Text("Volume") + .frame(width: 56, alignment: .leading) + Slider(value: $state.soundVolume, in: 0...0.2) + .disabled(!state.soundEnabled) + Text("\(Int(state.soundVolume / 0.2 * 100)) %") + .frame(width: 36, alignment: .trailing) + .monospacedDigit() + } + } + .padding(6) + } + + GroupBox("Behavior") { + VStack(alignment: .leading, spacing: 10) { + HStack(spacing: 8) { + Text("Close after") + TextField("60", value: $state.autoCloseInterval, format: .number) + .textFieldStyle(.roundedBorder) + .frame(width: 64) + Text("s inactive") + } + HStack(spacing: 8) { + Text("Hide after") + TextField("3", value: absenceMinutes, format: .number) + .textFieldStyle(.roundedBorder) + .frame(width: 48) + Text("min without movement") + } + } + .padding(6) + } + + GroupBox("Hotkey") { + VStack(alignment: .leading, spacing: 10) { + Toggle("Show island with shortcut", isOn: $state.hotkeyEnabled) + .onChange(of: state.hotkeyEnabled) { _, _ in + HotKeyCenter.shared.reregister(.toggleIsland) + } + if state.hotkeyEnabled { + HStack(spacing: 8) { + Text("Shortcut") + .frame(width: 70, alignment: .leading) + ShortcutRecorderButton(flags: $hotkeyFlags, code: $hotkeyCode) + .onChange(of: hotkeyFlags) { _, v in + state.hotkeyFlags = v + HotKeyCenter.shared.reregister(.toggleIsland) + } + .onChange(of: hotkeyCode) { _, v in + state.hotkeyCode = v + HotKeyCenter.shared.reregister(.toggleIsland) + } + Text("presses this → island opens") + .font(.system(size: 11)) + .foregroundColor(.secondary) + } + } + } + .padding(6) + } + + GroupBox("Startup") { + Toggle("Launch at Mac startup", isOn: $launchAtStartup) + .onChange(of: launchAtStartup) { _, on in toggleStartup(on) } + .padding(6) + } + + #if PHONE_LINK + GroupBox("iPhone") { + VStack(alignment: .leading, spacing: 6) { + Toggle("Show my agent sessions on my iPhone", isOn: $iPhoneSyncEnabled) + .onChange(of: iPhoneSyncEnabled) { _, on in CloudProbe.shared.setEnabled(on) } + Text("Sends your sessions to your private iCloud for the Coucou iPhone app. Project names, commands and questions are encrypted with your iCloud keys. Turning it off deletes them from iCloud.") + .font(.system(size: 11)) + .foregroundColor(.secondary) + .fixedSize(horizontal: false, vertical: true) + Toggle("Move Mochi to my iPhone's Dynamic Island when my Mac is locked", isOn: $iPhoneLiveActivityEnabled) + .disabled(!iPhoneSyncEnabled) + .onChange(of: iPhoneLiveActivityEnabled) { _, on in LiveActivityRelay.shared.setEnabled(on) } + Text("Goes through the Coucou relay to Apple's push service. Only the agent's name and state are sent: no project name, command or path.") + .font(.system(size: 11)) + .foregroundColor(.secondary) + .fixedSize(horizontal: false, vertical: true) + #if !APPSTORE + Toggle("Let my iPhone send instructions to Claude Code", isOn: $iPhoneInstructionsEnabled) + .disabled(!iPhoneSyncEnabled) + .onChange(of: iPhoneInstructionsEnabled) { _, on in InstructionRunner.shared.setEnabled(on) } + Text("An instruction sent from the iPhone (Face ID required) continues your last Claude Code session in the background, in its folder, with claude --resume. This Mac checks for one every 15 s while this is on.") + .font(.system(size: 11)) + .foregroundColor(.secondary) + .fixedSize(horizontal: false, vertical: true) + #endif + } + .padding(6) + } + #endif + } + + // MARK: - Active pills section + + @ViewBuilder private var activePillsSection: some View { + GroupBox { + VStack(alignment: .leading, spacing: 10) { + Text("Choose the tools you use. Coucou only shows what you declare here.") + .font(.system(size: 11)) + .foregroundColor(.secondary) + + Text("\(state.activeIntegrations.count)/4 slots used") + .font(.system(size: 11)) + .foregroundColor(state.activeIntegrations.count >= 4 ? .orange : .secondary) + + Picker("Main", selection: $state.mainPillId) { + ForEach(PillCatalog.available.filter { $0.category == .workspace && !$0.comingSoon }, id: \.id) { def in + Text(def.name).tag(def.id) + } + } + .onChange(of: state.mainPillId) { _, newId in + state.activeIntegrations.remove(newId) + state.loadIntegrationTasks() + state.setFocus(newId) + } + + ForEach(PillCategory.allCases, id: \.self) { cat in + let catPills = PillCatalog.available.filter { $0.category == cat } + if !catPills.isEmpty { + Divider() + Text(cat.title) + .font(.system(size: 11, weight: .semibold)) + .foregroundColor(.secondary) + ForEach(catPills, id: \.id) { def in + pillRow(def) + } + } + } + } + .padding(6) + } + } + + // MARK: - Agents section + + @ViewBuilder private var agentsSection: some View { + GroupBox("Claude Code Hooks") { + VStack(alignment: .leading, spacing: 10) { + if hookNeedsUpdate { + HStack(spacing: 6) { + Image(systemName: "exclamationmark.triangle.fill") + .foregroundColor(.orange) + Text("Hooks outdated — update them to answer Claude's questions from the notch") + .font(.system(size: 11)) + .foregroundColor(.orange) + } + #if APPSTORE + Button("Update hooks") { installHooksAppStore() } + #else + Button("Update hooks") { installHooks() } + #endif + } + #if APPSTORE + Text("~/.claude/coucou/nb-hook") + .font(.system(size: 11, design: .monospaced)) + .foregroundColor(.secondary) + HStack(spacing: 10) { + Button("Install hooks") { installHooksAppStore() } + .buttonStyle(.borderedProminent) + Button("Uninstall") { uninstallHooksAppStore() } + .buttonStyle(.bordered) + } + #else + Text("nb-hook : \(HookServer.hookScriptPath)") + .font(.system(size: 11, design: .monospaced)) + .foregroundColor(.secondary) + HStack(spacing: 10) { + Button("Install hooks") { installHooks() } + .buttonStyle(.borderedProminent) + Button("Uninstall") { uninstallHooks() } + .buttonStyle(.bordered) + } + #endif + + #if !APPSTORE + if showDiff { + ScrollView { + Text(pendingHookJSON) + .font(.system(size: 10, design: .monospaced)) + .frame(maxWidth: .infinity, alignment: .leading) + } + .frame(height: 140) + .background(Color(NSColor.textBackgroundColor)) + .cornerRadius(6) + + HStack { + Button("Confirm & write") { confirmInstall() } + .buttonStyle(.borderedProminent) + Button("Cancel") { showDiff = false; pendingHookJSON = "" } + .buttonStyle(.bordered) + } + } + #endif + } + .padding(6) + } + + #if !APPSTORE + GroupBox("Gemini CLI Hooks") { + VStack(alignment: .leading, spacing: 10) { + Text(geminiHooksInstalled + ? "Hooks installed — restart Gemini CLI to activate" + : "~/.gemini/settings.json") + .font(.system(size: 11, design: .monospaced)) + .foregroundColor(.secondary) + HStack(spacing: 10) { + Button("Install hooks") { triggerGeminiPreview(install: true) } + .buttonStyle(.borderedProminent) + Button("Uninstall") { triggerGeminiPreview(install: false) } + .buttonStyle(.bordered) + } + if showGeminiDiff { + ScrollView { + Text(pendingGeminiJSON) + .font(.system(size: 10, design: .monospaced)) + .frame(maxWidth: .infinity, alignment: .leading) + } + .frame(height: 140) + .background(Color(NSColor.textBackgroundColor)) + .cornerRadius(6) + HStack { + Button("Confirm & write") { confirmGeminiOp() } + .buttonStyle(.borderedProminent) + Button("Cancel") { showGeminiDiff = false; pendingGeminiJSON = "" } + .buttonStyle(.bordered) + } + } + } + .padding(6) + } + + GroupBox("Antigravity Hooks") { + VStack(alignment: .leading, spacing: 10) { + Text(agyHooksInstalled + ? "Hooks installed — restart Antigravity to activate" + : "~/.gemini/config/hooks.json") + .font(.system(size: 11, design: .monospaced)) + .foregroundColor(.secondary) + HStack(spacing: 10) { + Button("Install hooks") { triggerAgyPreview(install: true) } + .buttonStyle(.borderedProminent) + Button("Uninstall") { triggerAgyPreview(install: false) } + .buttonStyle(.bordered) + } + if showAgyDiff { + ScrollView { + Text(pendingAgyJSON) + .font(.system(size: 10, design: .monospaced)) + .frame(maxWidth: .infinity, alignment: .leading) + } + .frame(height: 140) + .background(Color(NSColor.textBackgroundColor)) + .cornerRadius(6) + HStack { + Button("Confirm & write") { confirmAgyOp() } + .buttonStyle(.borderedProminent) + Button("Cancel") { showAgyDiff = false; pendingAgyJSON = "" } + .buttonStyle(.bordered) + } + } + } + .padding(6) + } + + GroupBox("Codex Hooks") { + VStack(alignment: .leading, spacing: 10) { + Text(codexHooksInstalled + ? "Hooks installed — open Codex and run /hooks or open Hooks in the app's settings to trust them" + : "~/.codex/hooks.json") + .font(.system(size: 11, design: .monospaced)) + .foregroundColor(.secondary) + HStack(spacing: 10) { + Button("Install hooks") { triggerCodexPreview(install: true) } + .buttonStyle(.borderedProminent) + Button("Uninstall") { triggerCodexPreview(install: false) } + .buttonStyle(.bordered) + } + if showCodexDiff { + ScrollView { + Text(pendingCodexJSON) + .font(.system(size: 10, design: .monospaced)) + .frame(maxWidth: .infinity, alignment: .leading) + } + .frame(height: 140) + .background(Color(NSColor.textBackgroundColor)) + .cornerRadius(6) + HStack { + Button("Confirm & write") { confirmCodexOp() } + .buttonStyle(.borderedProminent) + Button("Cancel") { showCodexDiff = false; pendingCodexJSON = "" } + .buttonStyle(.bordered) + } + } + } + .padding(6) + } + + GroupBox("Plan usage") { + VStack(alignment: .leading, spacing: 10) { + Text("Shows your Claude plan usage (5-hour and weekly limits) in the notch header. Coucou adds a status line relay to ~/.claude/settings.json. If you already have a status line, it keeps working as before. Pro and Max plans only.") + .font(.system(size: 11)) + .foregroundColor(.secondary) + .fixedSize(horizontal: false, vertical: true) + Toggle("Show in the notch", isOn: Binding( + get: { state.showPlanInNotch || planTogglePending }, + set: { on in + if on { + if state.planRelayInstalled { + state.showPlanInNotch = true + } else { + planTogglePending = true + installStatusLine() + } + } else { + state.showPlanInNotch = false + planTogglePending = false + } + } + )) + HStack(spacing: 10) { + if state.planRelayInstalled { + Text("Relay: installed") + .font(.system(size: 11)) + .foregroundColor(.secondary) + Button("Uninstall relay") { uninstallStatusLine() } + .buttonStyle(.bordered) + } else { + Text("Relay: not installed") + .font(.system(size: 11)) + .foregroundColor(.secondary) + Button("Install relay") { installStatusLine() } + .buttonStyle(.borderedProminent) + } + } + if showStatusLineDiff { + ScrollView { + Text(pendingStatusLineJSON) + .font(.system(size: 10, design: .monospaced)) + .frame(maxWidth: .infinity, alignment: .leading) + } + .frame(height: 100) + .background(Color(NSColor.textBackgroundColor)) + .cornerRadius(6) + HStack { + Button("Confirm & write") { confirmStatusLine() } + .buttonStyle(.borderedProminent) + Button("Cancel") { + showStatusLineDiff = false + pendingStatusLineJSON = "" + planTogglePending = false + } + .buttonStyle(.bordered) + } + } + } + .padding(6) + } + #endif + } + + // MARK: - Chat section + + @ViewBuilder private var chatSection: some View { + GroupBox("Anthropic API") { + VStack(alignment: .leading, spacing: 8) { + SecureField("API key (sk-ant-…)", text: $apiKey) + .textFieldStyle(.roundedBorder) + Button("Save") { + KeychainStore.shared.set("anthropic-api-key", value: apiKey) + statusMessage = "✓ Key saved." + } + .buttonStyle(.borderedProminent) + + Divider().padding(.vertical, 2) + + Picker("Model", selection: $modelChoice) { + ForEach(displayModels, id: \.id) { preset in + Text(preset.label).tag(preset.id) + } + Text("Custom…").tag(Self.customModelTag) + } + .onChange(of: modelChoice) { _, choice in + if choice != Self.customModelTag { + state.claudeModel = choice + } else { + applyCustomModel(customModel) + } + } + + if modelChoice == Self.customModelTag { + TextField("Model ID (e.g. claude-sonnet-4-6)", text: $customModel) + .textFieldStyle(.roundedBorder) + .onChange(of: customModel) { _, value in applyCustomModel(value) } + } + + Text("Used by the chat. The list comes from your Anthropic account.") + .font(.system(size: 11)) + .foregroundColor(.secondary) + } + .padding(6) + } + + GroupBox("Chat — other providers") { + VStack(alignment: .leading, spacing: 12) { + Text("To use Google Gemini or OpenAI from the chat. Keys are stored in the Keychain.") + .font(.system(size: 12)) + .foregroundColor(.secondary) + + HStack(spacing: 8) { + Circle().fill(Color(hex: "#4285F4")).frame(width: 8, height: 8) + Text("Google AI").font(.system(size: 12, weight: .semibold)) + } + SecureField("API key (AI Studio)", text: $googleKey) + .textFieldStyle(.roundedBorder) + Button("Save") { + KeychainStore.shared.set("google-api-key", value: googleKey) + statusMessage = "✓ Google key saved." + } + .buttonStyle(.borderedProminent) + + Divider() + + HStack(spacing: 8) { + Circle().fill(Color(hex: "#10A37F")).frame(width: 8, height: 8) + Text("OpenAI").font(.system(size: 12, weight: .semibold)) + } + SecureField("API key (sk-…)", text: $openAIKey) + .textFieldStyle(.roundedBorder) + Button("Save") { + KeychainStore.shared.set("openai-api-key", value: openAIKey) + statusMessage = "✓ OpenAI key saved." + } + .buttonStyle(.borderedProminent) + } + .padding(.vertical, 4) + } + + GroupBox("Local models") { + VStack(alignment: .leading, spacing: 12) { + Text("Connect to a local model server. No API key needed.") + .font(.system(size: 12)) + .foregroundColor(.secondary) + + // ── Ollama ────────────────────────────────────────────────────── + HStack(spacing: 8) { + Circle().fill(Color(hex: "#FACC15")).frame(width: 8, height: 8) + Text("Ollama").font(.system(size: 12, weight: .semibold)) + if !state.ollamaServerURL.isEmpty { + Text("Connected") + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#22C55E")) + } + } + if state.ollamaServerURL.isEmpty { + TextField("http://127.0.0.1:11434", text: $ollamaURL) + .textFieldStyle(.roundedBorder) + Button(connectingOllama ? "Connecting…" : "Connect") { + Task { await connectLocal(provider: .ollama) } + } + .buttonStyle(.borderedProminent) + .disabled(connectingOllama) + } else { + Text(state.ollamaServerURL) + .font(.system(size: 11, design: .monospaced)) + .foregroundColor(.secondary) + Button("Disconnect") { + state.ollamaServerURL = "" + ollamaURL = "" + state.fetchedProviderModels[.ollama] = nil + state.providerModelFetchError[.ollama] = nil + if state.chatProvider == .ollama { state.chatProvider = .anthropic } + statusMessage = "Ollama disconnected." + } + .buttonStyle(.bordered) + } + + Divider() + + // ── LM Studio ─────────────────────────────────────────────────── + HStack(spacing: 8) { + Circle().fill(Color(hex: "#A3E635")).frame(width: 8, height: 8) + Text("LM Studio").font(.system(size: 12, weight: .semibold)) + if !state.lmstudioServerURL.isEmpty { + Text("Connected") + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#22C55E")) + } + } + if state.lmstudioServerURL.isEmpty { + TextField("http://127.0.0.1:1234", text: $lmstudioURL) + .textFieldStyle(.roundedBorder) + Button(connectingLMStudio ? "Connecting…" : "Connect") { + Task { await connectLocal(provider: .lmstudio) } + } + .buttonStyle(.borderedProminent) + .disabled(connectingLMStudio) + } else { + Text(state.lmstudioServerURL) + .font(.system(size: 11, design: .monospaced)) + .foregroundColor(.secondary) + Button("Disconnect") { + state.lmstudioServerURL = "" + lmstudioURL = "" + state.fetchedProviderModels[.lmstudio] = nil + state.providerModelFetchError[.lmstudio] = nil + if state.chatProvider == .lmstudio { state.chatProvider = .anthropic } + statusMessage = "LM Studio disconnected." + } + .buttonStyle(.bordered) + } + } + .padding(.vertical, 4) + } + } + + // MARK: - Integrations section + + @ViewBuilder private var integrationsSection: some View { + GroupBox { + VStack(alignment: .leading, spacing: 14) { + + // Resend + VStack(alignment: .leading, spacing: 5) { + HStack(spacing: 6) { + Circle().fill(Color(hex: "#22C55E")).frame(width: 8, height: 8) + Text("Resend").font(.system(size: 12, weight: .semibold)) + } + SecureField("API key (re_…)", text: $resendKey) + .textFieldStyle(.roundedBorder) + TextField("From address (you@yourdomain.com)", text: $resendFrom) + .textFieldStyle(.roundedBorder) + } + + // n8n + VStack(alignment: .leading, spacing: 5) { + HStack(spacing: 6) { + Circle().fill(Color(hex: "#F29B38")).frame(width: 8, height: 8) + Text("n8n").font(.system(size: 12, weight: .semibold)) + } + TextField("Instance URL (https://…)", text: $n8nUrl) + .textFieldStyle(.roundedBorder) + SecureField("API key", text: $n8nKey) + .textFieldStyle(.roundedBorder) + IntegrationFilterRow( + label: "Workflows", + items: n8nWorkflows, + filter: $state.n8nWorkflowFilter, + loading: loadingN8n, + onLoad: loadN8nWorkflows + ) + } + + // Vercel + VStack(alignment: .leading, spacing: 5) { + HStack(spacing: 6) { + Circle().fill(Color(hex: "#7C5CFF")).frame(width: 8, height: 8) + Text("Vercel").font(.system(size: 12, weight: .semibold)) + } + SecureField("Token", text: $vercelToken) + .textFieldStyle(.roundedBorder) + IntegrationFilterRow( + label: "Projects", + items: vercelProjects, + filter: $state.vercelProjectFilter, + loading: loadingVercel, + onLoad: loadVercelProjects + ) + } + + // GitHub + VStack(alignment: .leading, spacing: 5) { + HStack(spacing: 6) { + Circle().fill(Color(hex: "#F4505E")).frame(width: 8, height: 8) + Text("GitHub").font(.system(size: 12, weight: .semibold)) + } + SecureField("Personal Access Token", text: $githubToken) + .textFieldStyle(.roundedBorder) + Text("Classic token with repo scope, or fine-grained with read access to Pull requests, Commit statuses and Actions.") + .font(.system(size: 10)) + .foregroundColor(Color(hex: "#8E939C")) + } + + // Stripe + VStack(alignment: .leading, spacing: 5) { + HStack(spacing: 6) { + Circle().fill(Color(hex: "#0570DE")).frame(width: 8, height: 8) + Text("Stripe").font(.system(size: 12, weight: .semibold)) + } + SecureField("Secret key (sk_live_… or sk_test_…)", text: $stripeKey) + .textFieldStyle(.roundedBorder) + } + + // Cal.com + VStack(alignment: .leading, spacing: 5) { + HStack(spacing: 6) { + Circle().fill(Color(hex: "#C9956A")).frame(width: 8, height: 8) + Text("Cal.com").font(.system(size: 12, weight: .semibold)) + } + SecureField("API key (cal_live_…)", text: $calcomKey) + .textFieldStyle(.roundedBorder) + } + + // Notion + VStack(alignment: .leading, spacing: 5) { + HStack(spacing: 6) { + Circle().fill(Color(hex: "#E8E8E8")).frame(width: 8, height: 8) + Text("Notion").font(.system(size: 12, weight: .semibold)) + } + SecureField("Integration token (secret_…)", text: $notionKey) + .textFieldStyle(.roundedBorder) + } + + Button("Save integrations") { saveIntegrations() } + .buttonStyle(.borderedProminent) + } + .padding(6) + } + } + + // MARK: - Actions + + private func applyCustomModel(_ value: String) { + let id = value.trimmingCharacters(in: .whitespacesAndNewlines) + if !id.isEmpty { state.claudeModel = id } + } + + private func toggleStartup(_ on: Bool) { + do { + if on { try SMAppService.mainApp.register() } + else { try SMAppService.mainApp.unregister() } + } catch { + statusMessage = "❌ Startup: \(error.localizedDescription)" + launchAtStartup = !on + } + } + + // MARK: - App Store: hooks via NSOpenPanel + security-scoped bookmark + + #if APPSTORE + private func pickClaudeFolder(prompt: String) -> URL? { + let panel = NSOpenPanel() + panel.message = "Select your .claude folder (press ⇧⌘. to show hidden files)" + panel.prompt = prompt + panel.canChooseFiles = false + panel.canChooseDirectories = true + panel.allowsMultipleSelection = false + panel.showsHiddenFiles = true + let realHomePath = getpwuid(getuid()).flatMap { String(cString: $0.pointee.pw_dir, encoding: .utf8) } + ?? "/Users/\(NSUserName())" + panel.directoryURL = URL(fileURLWithPath: realHomePath) + guard panel.runModal() == .OK, let url = panel.url else { return nil } + guard url.lastPathComponent == ".claude" else { + statusMessage = "❌ Select the .claude folder (hidden, in your Home directory)." + return nil + } + return url + } + + private func installHooksAppStore() { + guard let claudeURL = pickClaudeFolder(prompt: "Select") else { return } + let alert = NSAlert() + alert.messageText = "Install Coucou hooks in ~/.claude?" + alert.informativeText = "Will write:\n• ~/.claude/coucou/nb-hook\n• ~/.claude/settings.json (backup created first)" + alert.addButton(withTitle: "Install") + alert.addButton(withTitle: "Cancel") + alert.alertStyle = .informational + guard alert.runModal() == .alertFirstButtonReturn else { return } + do { + try HookServer.shared.installAndWriteClaudeHooksAppStore(claudeURL: claudeURL) + hookNeedsUpdate = false + statusMessage = "✓ Hooks installed — restart VS Code to activate." + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + private func uninstallHooksAppStore() { + guard let claudeURL = pickClaudeFolder(prompt: "Select") else { return } + do { + try HookServer.shared.uninstallClaudeHooksAppStore(claudeURL: claudeURL) + statusMessage = "✓ Hooks removed." + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + #endif + + private func connectLocal(provider: ChatProvider) async { + let rawURL = provider == .ollama ? ollamaURL : lmstudioURL + let candidate = rawURL.isEmpty + ? (provider == .ollama ? "http://127.0.0.1:11434" : "http://127.0.0.1:1234") + : rawURL + let normalised = LocalChat.normaliseURL(candidate) + guard normalised.hasPrefix("http://") || normalised.hasPrefix("https://") else { + statusMessage = "Only http:// and https:// URLs are supported." + return + } + if provider == .ollama { connectingOllama = true } else { connectingLMStudio = true } + statusMessage = "" + let result = await LocalChat.fetchModelsResult(baseURL: normalised) + if provider == .ollama { connectingOllama = false } else { connectingLMStudio = false } + let name = provider == .ollama ? "Ollama" : "LM Studio" + switch result { + case .success(let models) where models.isEmpty: + statusMessage = "No models yet — download one in \(name) first." + case .success(let models): + if provider == .ollama { + state.ollamaServerURL = normalised + ollamaURL = normalised + state.fetchedProviderModels[.ollama] = nil + state.providerModelFetchError[.ollama] = nil + } else { + state.lmstudioServerURL = normalised + lmstudioURL = normalised + state.fetchedProviderModels[.lmstudio] = nil + state.providerModelFetchError[.lmstudio] = nil + } + statusMessage = "✓ Connected · \(models.count) model\(models.count == 1 ? "" : "s")" + case .failure: + statusMessage = "Couldn't reach \(name) at \(normalised). Is it running?" + } + } + + private func installHooks() { + do { + pendingHookJSON = try HookServer.shared.previewClaudeHooks() + showDiff = true + statusMessage = "Review the JSON below before confirming." + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + private func confirmInstall() { + do { + try HookServer.shared.writeClaudeHooks() + showDiff = false + statusMessage = "✓ Hooks installed in ~/.claude/settings.json" + pendingHookJSON = "" + hookNeedsUpdate = false + } catch { + statusMessage = "❌ Write error: \(error.localizedDescription)" + } + } + + private func uninstallHooks() { + do { + try HookServer.shared.uninstallClaudeHooks() + statusMessage = "✓ Hooks removed." + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + #if !APPSTORE + private func triggerGeminiPreview(install: Bool) { + do { + geminiPendingInstall = install + pendingGeminiJSON = try HookServer.shared.previewGeminiHooks(install: install) + showGeminiDiff = true + statusMessage = "Review the JSON below before confirming." + } catch let e as NSError where e.domain == "CoucouNoop" { + statusMessage = e.localizedDescription + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + private func confirmGeminiOp() { + do { + try HookServer.shared.writeGeminiHooks() + showGeminiDiff = false + pendingGeminiJSON = "" + geminiHooksInstalled = geminiPendingInstall + statusMessage = geminiPendingInstall + ? "✓ Gemini CLI hooks installed in ~/.gemini/settings.json" + : "✓ Gemini CLI hooks removed." + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + private func triggerAgyPreview(install: Bool) { + do { + agyPendingInstall = install + pendingAgyJSON = try HookServer.shared.previewAgyHooks(install: install) + showAgyDiff = true + statusMessage = "Review the JSON below before confirming." + } catch let e as NSError where e.domain == "CoucouNoop" { + statusMessage = e.localizedDescription + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + private func confirmAgyOp() { + do { + try HookServer.shared.writeAgyHooks() + showAgyDiff = false + pendingAgyJSON = "" + agyHooksInstalled = agyPendingInstall + statusMessage = agyPendingInstall + ? "✓ Antigravity hooks installed in ~/.gemini/config/hooks.json" + : "✓ Antigravity hooks removed." + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + private func triggerCodexPreview(install: Bool) { + do { + codexPendingInstall = install + pendingCodexJSON = try HookServer.shared.previewCodexHooks(install: install) + showCodexDiff = true + statusMessage = "Review the JSON below before confirming." + } catch let e as NSError where e.domain == "CoucouNoop" { + statusMessage = e.localizedDescription + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + private func confirmCodexOp() { + do { + try HookServer.shared.writeCodexHooks() + showCodexDiff = false + pendingCodexJSON = "" + codexHooksInstalled = codexPendingInstall + statusMessage = codexPendingInstall + ? "✓ Codex hooks installed — run /hooks in Codex or open Hooks in the app's settings to trust them." + : "✓ Codex hooks removed." + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + private func installStatusLine() { + do { + pendingStatusLineJSON = try HookServer.shared.previewStatusLine(install: true) + showStatusLineDiff = true + statusLinePendingInstall = true + statusMessage = "Review the JSON below before confirming." + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + private func uninstallStatusLine() { + do { + pendingStatusLineJSON = try HookServer.shared.previewStatusLine(install: false) + showStatusLineDiff = true + statusLinePendingInstall = false + statusMessage = "Review the JSON below before confirming." + } catch { + statusMessage = "❌ \(error.localizedDescription)" + } + } + + private func confirmStatusLine() { + do { + try HookServer.shared.writeStatusLine() + showStatusLineDiff = false + pendingStatusLineJSON = "" + state.refreshPlanRelayState() + if planTogglePending { + state.showPlanInNotch = true + planTogglePending = false + } + if !statusLinePendingInstall { + state.showPlanInNotch = false + } + statusMessage = statusLinePendingInstall + ? "✓ Status line installed." + : "✓ Status line removed." + } catch { + planTogglePending = false + statusMessage = "❌ \(error.localizedDescription)" + } + } + #endif + + private func saveIntegrations() { + saveKey("resend-api-key", value: resendKey) + saveKey("resend-from", value: resendFrom) + saveKey("n8n-url", value: n8nUrl) + saveKey("n8n-api-key", value: n8nKey) + saveKey("vercel-token", value: vercelToken) + + // Detect GitHub token changes before writing + let prevGithubToken = KeychainStore.shared.get("github-token") + saveKey("github-token", value: githubToken) + let nextGithubToken = KeychainStore.shared.get("github-token") + if nextGithubToken != prevGithubToken { + AppState.shared.githubPulse = nil + AppState.shared.githubActivity = nil + if nextGithubToken == nil { AppState.shared.githubStats = nil } + if nextGithubToken != nil { + GithubPoller.shared.triggerPulseNow() + GithubPoller.shared.refreshActivityIfStale() + } + } + + saveKey("stripe-api-key", value: stripeKey) + saveKey("calcom-api-key", value: calcomKey) + saveKey("notion-api-key", value: notionKey) + statusMessage = "✓ Integration keys saved." + } + + private func saveKey(_ key: String, value: String) { + if value.isEmpty { + KeychainStore.shared.remove(key) + } else { + KeychainStore.shared.set(key, value: value) + } + } + + // MARK: - Vercel project list + + private func loadVercelProjects() { + guard let token = KeychainStore.shared.get("vercel-token") else { + statusMessage = "❌ Save Vercel token first." + return + } + loadingVercel = true + guard let url = URL(string: "https://api.vercel.com/v9/projects?limit=100") else { return } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + URLSession.shared.dataTask(with: req) { data, response, _ in + let names: [String] + if let data, + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let projects = json["projects"] as? [[String: Any]] { + names = projects.compactMap { $0["name"] as? String }.sorted() + } else { + names = [] + } + DispatchQueue.main.async { + self.vercelProjects = names + self.loadingVercel = false + if names.isEmpty { self.statusMessage = "❌ No Vercel projects found." } + } + }.resume() + } + + // MARK: - n8n workflow list + + private func loadN8nWorkflows() { + guard let apiKey = KeychainStore.shared.get("n8n-api-key"), + let rawBase = KeychainStore.shared.get("n8n-url") else { + statusMessage = "❌ Save n8n URL and API key first." + return + } + loadingN8n = true + let base = rawBase.trimmingCharacters(in: CharacterSet(charactersIn: "/")) + let urls = ["\(base)/api/v1/workflows?limit=100", "\(base)/rest/workflows?limit=100"] + fetchN8nWorkflows(urls: urls, apiKey: apiKey, idx: 0) + } + + private func fetchN8nWorkflows(urls: [String], apiKey: String, idx: Int) { + guard idx < urls.count, let url = URL(string: urls[idx]) else { + DispatchQueue.main.async { self.loadingN8n = false; self.statusMessage = "❌ No n8n workflows found." } + return + } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue(apiKey, forHTTPHeaderField: "X-N8N-API-KEY") + URLSession.shared.dataTask(with: req) { data, response, _ in + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + guard let data, code == 200 else { + self.fetchN8nWorkflows(urls: urls, apiKey: apiKey, idx: idx + 1) + return + } + let items: [[String: Any]] + if let obj = (try? JSONSerialization.jsonObject(with: data)) as? [String: Any], + let arr = obj["data"] as? [[String: Any]] { items = arr } + else if let arr = (try? JSONSerialization.jsonObject(with: data)) as? [[String: Any]] { items = arr } + else { items = [] } + let names = items.compactMap { $0["name"] as? String }.sorted() + DispatchQueue.main.async { + self.n8nWorkflows = names + self.loadingN8n = false + if names.isEmpty { self.statusMessage = "❌ No n8n workflows found." } + } + }.resume() + } + + @ViewBuilder + private func pillRow(_ def: PillDefinition) -> some View { + let isMain = def.id == state.mainPillId + let isOn = state.activeIntegrations.contains(def.id) + let atMax = state.activeIntegrations.count >= 4 && !isOn && !isMain + let hint: String? = { + if isMain { return nil } + if def.comingSoon { return "Coming soon" } + #if !APPSTORE + if def.id == "agent_gemini" && !HookServer.geminiHooksInstalled() { return "Hooks not installed" } + if def.id == "agent_antigravity" && !HookServer.agyHooksInstalled() { return "Hooks not installed" } + if def.id == "agent_codex" && !HookServer.codexHooksInstalled() { return "Hooks not installed" } + #endif + if def.category == .ai { + if let provider = ChatProvider(pillID: def.id), provider.isLocal { + let url = provider == .ollama ? state.ollamaServerURL : state.lmstudioServerURL + if url.isEmpty { return "Not connected" } + } else { + let keyId = def.id == "ai_anthropic" ? "anthropic-api-key" + : def.id == "ai_google" ? "google-api-key" : "openai-api-key" + if KeychainStore.shared.get(keyId) == nil { return "Key not configured" } + } + } + return nil + }() + HStack(spacing: 8) { + Circle() + .fill(Color(hex: def.color)) + .frame(width: 10, height: 10) + Text(def.name) + .font(.system(size: 12)) + .foregroundColor(atMax ? .secondary : .primary) + Spacer() + if isMain { + Text("Main") + .font(.system(size: 11)) + .foregroundColor(.secondary) + } else { + if let h = hint { + Text(h) + .font(.system(size: 11)) + .foregroundColor(.secondary) + } + Toggle("", isOn: Binding( + get: { isOn }, + set: { _ in state.toggleIntegration(def.id) } + )) + .labelsHidden() + .disabled(atMax) + } + } + } +} + +// MARK: - Sidebar background (NSVisualEffectView .sidebar) + +struct SidebarBackground: NSViewRepresentable { + func makeNSView(context: Context) -> NSVisualEffectView { + let v = NSVisualEffectView() + v.material = .sidebar + v.blendingMode = .behindWindow + v.state = .active + return v + } + func updateNSView(_ nsView: NSVisualEffectView, context: Context) {} +} + +// MARK: - Sidebar row (System Settings style icon) + +struct SettingsSidebarRow: View { + let title: String + let icon: String + let color: String + + var body: some View { + Label { + Text(title) + } icon: { + Image(systemName: icon) + .font(.system(size: 11, weight: .semibold)) + .foregroundColor(.white) + .frame(width: 20, height: 20) + .background(RoundedRectangle(cornerRadius: 5).fill(Color(hex: color))) + } + } +} + +// MARK: - Integration filter row (reusable for Vercel / n8n) + +struct IntegrationFilterRow: View { + let label: String + let items: [String] + @Binding var filter: Set + let loading: Bool + let onLoad: () -> Void + + var body: some View { + VStack(alignment: .leading, spacing: 4) { + HStack(spacing: 6) { + Text(label) + .font(.system(size: 11)) + .foregroundColor(.secondary) + Spacer() + if loading { + ProgressView().scaleEffect(0.6) + } else { + Button(items.isEmpty ? "Load list" : "Refresh") { onLoad() } + .buttonStyle(.bordered) + .controlSize(.mini) + } + if !filter.isEmpty { + Button("Clear") { filter = [] } + .buttonStyle(.bordered) + .controlSize(.mini) + .foregroundColor(.secondary) + } + } + if !items.isEmpty { + VStack(alignment: .leading, spacing: 2) { + ForEach(items, id: \.self) { item in + Toggle(item, isOn: Binding( + get: { filter.isEmpty || filter.contains(item) }, + set: { on in + if on { filter.insert(item) } + else { + if filter.isEmpty { filter = Set(items).subtracting([item]) } + else { filter.remove(item) } + if filter.count == items.count { filter = [] } + } + } + )) + .font(.system(size: 11)) + .toggleStyle(.checkbox) + } + } + .padding(.leading, 4) + if !filter.isEmpty { + Text("Watching \(filter.count) of \(items.count)") + .font(.system(size: 10)) + .foregroundColor(.secondary) + } + } + } + } +} + +// MARK: - Shortcut recorder button + +struct ShortcutRecorderButton: View { + @Binding var flags: UInt + @Binding var code: UInt16 + @State private var isRecording = false + + var body: some View { + Button { + guard !isRecording else { return } + isRecording = true + var token: Any? + token = NSEvent.addLocalMonitorForEvents(matching: .keyDown) { event in + let mods = event.modifierFlags.intersection([.command, .control, .option, .shift]) + guard !mods.isEmpty else { return event } + DispatchQueue.main.async { + self.flags = mods.rawValue + self.code = event.keyCode + self.isRecording = false + if let t = token { NSEvent.removeMonitor(t) } + } + return nil + } + } label: { + Text(isRecording ? "Press keys…" : shortcutLabel) + .font(.system(size: 11, design: .monospaced)) + .padding(.horizontal, 8).padding(.vertical, 3) + .background(isRecording ? Color.accentColor.opacity(0.12) : Color(NSColor.controlBackgroundColor)) + .cornerRadius(5) + .overlay(RoundedRectangle(cornerRadius: 5).stroke(Color.gray.opacity(0.3), lineWidth: 1)) + } + .buttonStyle(.plain) + } + + private var shortcutLabel: String { + let f = NSEvent.ModifierFlags(rawValue: flags) + var s = "" + if f.contains(.control) { s += "⌃" } + if f.contains(.option) { s += "⌥" } + if f.contains(.shift) { s += "⇧" } + if f.contains(.command) { s += "⌘" } + s += keyChar(code) + return s.isEmpty ? "None" : s + } + + private func keyChar(_ c: UInt16) -> String { + let map: [UInt16: String] = [ + 0:"A", 1:"S", 2:"D", 3:"F", 4:"H", 5:"G", 6:"Z", 7:"X", 8:"C", 9:"V", + 11:"B", 12:"Q", 13:"W", 14:"E", 15:"R", 16:"Y", 17:"T", 31:"O", 32:"U", + 34:"I", 37:"L", 38:"J", 40:"K", 45:"N", 46:"M", 49:"Space", 50:"`", 27:"-" + ] + return map[c] ?? "·" + } +} diff --git a/NotchBuddy/Sources/App/ShortcutLogic.swift b/NotchBuddy/Sources/App/ShortcutLogic.swift new file mode 100644 index 0000000..7862174 --- /dev/null +++ b/NotchBuddy/Sources/App/ShortcutLogic.swift @@ -0,0 +1,236 @@ +import Foundation + +// MARK: - Shortcut Action + +/// Every keyboard shortcut Coucou knows about. +/// The first 10 cases are *global* (registered with Carbon and effective from any app). +/// Island-local shortcuts are documented in `ShortcutLogic.islandShortcuts` but are +/// not managed here — they are handled by a local NSEvent monitor in IslandWindowController. +enum ShortcutAction: String, CaseIterable, Sendable { + // MARK: Global (Carbon RegisterEventHotKey) + case toggleIsland = "toggleIsland" // ⌘⇧N — open / close island (toggle) + case openChat = "openChat" // ⌃⌥Space — open island on chat, focus field + case goToAlert = "goToAlert" // ⌃⌥A — jump to pending alert + case jumpToTerminal = "jumpToTerminal" // ⌃⌥T — focus agent terminal + case attachFrontWindow = "attachFrontWindow" // ⌃⌥W — attach front window (non-AppStore) + case nextPill = "nextPill" // ⌃⌥] — next pill, open if closed + case prevPill = "prevPill" // ⌃⌥[ — previous pill, open if closed + case muteToggle = "muteToggle" // ⌃⌥M — mute / unmute sounds + case desktopToggle = "desktopToggle" // ⌃⌥D — send Mochi to desktop / bring back + case wardrobeToggle = "wardrobeToggle" // ⌃⌥G — open / close wardrobe + + // MARK: UserDefaults keys + + /// Key code storage key. `toggleIsland` reuses the legacy "hotkeyCode" key. + var udKeyCode: String { + self == .toggleIsland ? "hotkeyCode" : "shortcut.\(rawValue).keyCode" + } + /// Modifier flags storage key. `toggleIsland` reuses the legacy "hotkeyFlags" key. + var udFlags: String { + self == .toggleIsland ? "hotkeyFlags" : "shortcut.\(rawValue).flags" + } + /// Enabled flag storage key. `toggleIsland` reuses the legacy "hotkeyEnabled" key. + var udEnabled: String { + self == .toggleIsland ? "hotkeyEnabled" : "shortcut.\(rawValue).enabled" + } + + // MARK: Metadata + + var displayName: String { + switch self { + case .toggleIsland: return "Open / close island" + case .openChat: return "Open chat" + case .goToAlert: return "Go to alert" + case .jumpToTerminal: return "Jump to terminal" + case .attachFrontWindow: return "Attach front window" + case .nextPill: return "Next pill" + case .prevPill: return "Previous pill" + case .muteToggle: return "Mute / unmute sounds" + case .desktopToggle: return "Mochi on / off desktop" + case .wardrobeToggle: return "Open / close wardrobe" + } + } + + /// Whether this action should be omitted from App Store builds. + var isAppStoreOnly: Bool { false } + var isNonAppStore: Bool { self == .attachFrontWindow } + + /// Whether the shortcut is enabled by default (all new global shortcuts are on by default; + /// `toggleIsland` is off by default to match the pre-existing behaviour). + var enabledByDefault: Bool { self != .toggleIsland } +} + +// MARK: - Shortcut Spec + +/// A key + modifier combination stored as plain values (no AppKit dependency). +struct ShortcutSpec: Equatable, Hashable, Sendable { + /// Virtual key code (matching kVK_* constants and NSEvent.keyCode). + var keyCode: UInt16 + /// NSEvent.ModifierFlags raw value — only the modifier bits (.command / .shift / .option / .control). + /// Stored and compared as a plain UInt so this file stays AppKit-free. + var nsFlags: UInt + + // MARK: NSEvent modifier raw values (stable since macOS 10.x; see AppKit/NSEvent.h) + static let cmdBit: UInt = 1 << 20 // NSEvent.ModifierFlags.command = 1048576 + static let shiftBit: UInt = 1 << 17 // NSEvent.ModifierFlags.shift = 131072 + static let optBit: UInt = 1 << 19 // NSEvent.ModifierFlags.option = 524288 + static let ctrlBit: UInt = 1 << 18 // NSEvent.ModifierFlags.control = 262144 + static let modMask: UInt = cmdBit | shiftBit | optBit | ctrlBit + + /// True when nsFlags contains at least one of ⌘ ⇧ ⌥ ⌃. + var hasModifier: Bool { nsFlags & ShortcutSpec.modMask != 0 } + + // MARK: Convenience values for the default table + + static let cmdShift: UInt = cmdBit | shiftBit // 1179648 + static let ctrlOpt: UInt = ctrlBit | optBit // 786432 +} + +// MARK: - Pure logic + +/// Stateless helpers for shortcut management — no AppKit, fully unit-testable standalone. +enum ShortcutLogic { + + // MARK: - Default table + + static let defaults: [ShortcutAction: ShortcutSpec] = [ + .toggleIsland: ShortcutSpec(keyCode: 45, nsFlags: ShortcutSpec.cmdShift), // ⌘⇧N + .openChat: ShortcutSpec(keyCode: 49, nsFlags: ShortcutSpec.ctrlOpt), // ⌃⌥Space + .goToAlert: ShortcutSpec(keyCode: 0, nsFlags: ShortcutSpec.ctrlOpt), // ⌃⌥A + .jumpToTerminal: ShortcutSpec(keyCode: 17, nsFlags: ShortcutSpec.ctrlOpt), // ⌃⌥T + .attachFrontWindow: ShortcutSpec(keyCode: 13, nsFlags: ShortcutSpec.ctrlOpt), // ⌃⌥W + .nextPill: ShortcutSpec(keyCode: 30, nsFlags: ShortcutSpec.ctrlOpt), // ⌃⌥] + .prevPill: ShortcutSpec(keyCode: 33, nsFlags: ShortcutSpec.ctrlOpt), // ⌃⌥[ + .muteToggle: ShortcutSpec(keyCode: 46, nsFlags: ShortcutSpec.ctrlOpt), // ⌃⌥M + .desktopToggle: ShortcutSpec(keyCode: 2, nsFlags: ShortcutSpec.ctrlOpt), // ⌃⌥D + .wardrobeToggle: ShortcutSpec(keyCode: 5, nsFlags: ShortcutSpec.ctrlOpt), // ⌃⌥G + ] + + // MARK: - Load / save (UserDefaults) + + /// Current spec for `action`, falling back to the default if not stored. + static func hotKey(for action: ShortcutAction) -> ShortcutSpec { + let ud = UserDefaults.standard + let def = defaults[action]! + let kc = ud.object(forKey: action.udKeyCode) as? Int ?? Int(def.keyCode) + let fl = ud.object(forKey: action.udFlags) as? Int ?? Int(def.nsFlags) + return ShortcutSpec(keyCode: UInt16(kc), nsFlags: UInt(fl)) + } + + static func save(_ spec: ShortcutSpec, for action: ShortcutAction) { + UserDefaults.standard.set(Int(spec.keyCode), forKey: action.udKeyCode) + UserDefaults.standard.set(Int(spec.nsFlags), forKey: action.udFlags) + } + + static func isEnabled(_ action: ShortcutAction) -> Bool { + UserDefaults.standard.object(forKey: action.udEnabled) as? Bool + ?? action.enabledByDefault + } + + static func setEnabled(_ enabled: Bool, for action: ShortcutAction) { + UserDefaults.standard.set(enabled, forKey: action.udEnabled) + } + + static func resetToDefault(_ action: ShortcutAction) { + let def = defaults[action]! + save(def, for: action) + setEnabled(action.enabledByDefault, for: action) + } + + // MARK: - Carbon modifier conversion + + // Carbon modifier bit flags (CarbonCore/Events.h) — no import needed, just constants. + private static let cCmdKey: UInt32 = 1 << 8 // cmdKey = 256 + private static let cShiftKey: UInt32 = 1 << 9 // shiftKey = 512 + private static let cOptKey: UInt32 = 1 << 11 // optionKey = 2048 + private static let cCtrlKey: UInt32 = 1 << 12 // controlKey = 4096 + + /// Convert NSEvent modifier flags (as raw UInt) to Carbon modifier bit mask. + static func carbonModifiers(fromNS nsFlags: UInt) -> UInt32 { + let cmd = ShortcutSpec.cmdBit + let shift = ShortcutSpec.shiftBit + let opt = ShortcutSpec.optBit + let ctrl = ShortcutSpec.ctrlBit + var c: UInt32 = 0 + if nsFlags & cmd != 0 { c |= cCmdKey } + if nsFlags & shift != 0 { c |= cShiftKey } + if nsFlags & opt != 0 { c |= cOptKey } + if nsFlags & ctrl != 0 { c |= cCtrlKey } + return c + } + + // MARK: - Conflict detection (within Coucou's own shortcuts) + + /// Returns the set of actions whose (keyCode, nsFlags) pair is shared with another action. + static func duplicates(in specs: [ShortcutAction: ShortcutSpec]) -> Set { + var seen: [ShortcutSpec: ShortcutAction] = [:] + var dups: Set = [] + for (action, spec) in specs { + if let other = seen[spec] { + dups.insert(action) + dups.insert(other) + } else { + seen[spec] = action + } + } + return dups + } + + // MARK: - Display string + + /// Human-readable modifier+key string, e.g. "⌃⌥A" or "⌘⇧N". + static func displayString(for spec: ShortcutSpec) -> String { + let f = spec.nsFlags + var s = "" + if f & ShortcutSpec.ctrlBit != 0 { s += "⌃" } + if f & ShortcutSpec.optBit != 0 { s += "⌥" } + if f & ShortcutSpec.shiftBit != 0 { s += "⇧" } + if f & ShortcutSpec.cmdBit != 0 { s += "⌘" } + s += keyCodeToString(spec.keyCode) + return s + } + + /// Printable name for the most common virtual key codes. + static func keyCodeToString(_ code: UInt16) -> String { + let map: [UInt16: String] = [ + 0:"A", 1:"S", 2:"D", 3:"F", 4:"H", 5:"G", 6:"Z", 7:"X", + 8:"C", 9:"V", 11:"B", 12:"Q", 13:"W", 14:"E", 15:"R", 16:"Y", + 17:"T", 31:"O", 32:"U", 33:"[", 34:"I", 35:"P", 37:"L", 38:"J", + 40:"K", 45:"N", 46:"M", 30:"]", 49:"Space", + 36:"↩", 51:"⌫", 53:"⎋", + 123:"←", 124:"→", 125:"↓", 126:"↑", + 18:"1", 19:"2", 20:"3", 21:"4", 23:"5", 22:"6", 26:"7", 28:"8", 25:"9", + ] + return map[code] ?? "·" + } + + // MARK: - Card navigation (pure, no AppKit dependency) + + /// Compute the next card-selection index. + /// - Returns `nil` when `itemCount == 0`. + /// - Clamps to `0 ..< itemCount`. + /// - `nil` selection + `delta > 0` → first item; `delta < 0` → last item. + static func navigate(selection: Int?, delta: Int, itemCount: Int) -> Int? { + guard itemCount > 0 else { return nil } + if let cur = selection { + return max(0, min(itemCount - 1, cur + delta)) + } + return delta > 0 ? 0 : itemCount - 1 + } + + // MARK: - Island-local shortcut table (read-only, shown in Settings) + + /// Descriptive table of island-local shortcuts for the Settings view. + static let islandShortcuts: [(key: String, description: String)] = [ + ("⌘→ / ⌘←", "Next / previous pill"), + ("⌘1 – ⌘9", "Switch to pill by number"), + ("⌘↓ / ⌘↑", "Navigate list items"), + ("⌘O", "Open selected item"), + ("⌘E", "Open / close current diff"), + ("⌘↩", "Send chat message"), + ("⌘K", "New conversation"), + ("⌘,", "Open Settings"), + ("⌘P", "Pin / unpin island"), + ("⎋", "Close island (if not pinned)"), + ] +} diff --git a/NotchBuddy/Sources/App/ShortcutsSettingsView.swift b/NotchBuddy/Sources/App/ShortcutsSettingsView.swift new file mode 100644 index 0000000..7856462 --- /dev/null +++ b/NotchBuddy/Sources/App/ShortcutsSettingsView.swift @@ -0,0 +1,196 @@ +import SwiftUI +import AppKit + +// MARK: - ShortcutsSettingsView + +/// "Shortcuts" section inside SettingsView. +struct ShortcutsSettingsView: View { + // Conflicts detected by HotKeyCenter (system already owns that combo) + @State private var systemConflicts: Set = [] + // Internal duplicates (two Coucou shortcuts share the same combo) + @State private var internalDups: Set = [] + + // Per-action state (enabled flag + current spec) + @State private var enabled: [ShortcutAction: Bool] = [:] + @State private var specs: [ShortcutAction: ShortcutSpec] = [:] + + var body: some View { + VStack(alignment: .leading, spacing: 18) { + globalSection + islandSection + } + .onAppear { reload() } + } + + // MARK: - Global shortcuts + + private var globalSection: some View { + GroupBox("Global shortcuts — work from any app") { + VStack(alignment: .leading, spacing: 0) { + ForEach(globalActions, id: \.self) { action in + shortcutRow(action) + if action != globalActions.last { + Divider().padding(.leading, 24) + } + } + Divider().padding(.top, 8) + HStack { + Spacer() + Button("Reset all to defaults") { resetAll() } + .buttonStyle(.bordered) + .controlSize(.small) + } + .padding(.top, 6) + } + .padding(6) + } + } + + /// Shortcuts listed here. The App Store build hides the ones it can't run. + private var globalActions: [ShortcutAction] { + #if APPSTORE + ShortcutAction.allCases.filter { !$0.isNonAppStore } + #else + ShortcutAction.allCases + #endif + } + + @ViewBuilder + private func shortcutRow(_ action: ShortcutAction) -> some View { + let isEnabled = enabled[action] ?? action.enabledByDefault + let spec = specs[action] ?? ShortcutLogic.defaults[action]! + let hasSysConf = systemConflicts.contains(action) + let hasIntConf = internalDups.contains(action) + + HStack(spacing: 10) { + Toggle("", isOn: Binding( + get: { isEnabled }, + set: { v in toggleAction(action, enabled: v) } + )) + .labelsHidden() + .toggleStyle(.checkbox) + .frame(width: 18) + + Text(action.displayName) + .font(.system(size: 12)) + .frame(minWidth: 160, alignment: .leading) + + Spacer(minLength: 4) + + ShortcutRecorderButton(flags: specFlagsBinding(action), code: specCodeBinding(action)) + .disabled(!isEnabled) + .onChange(of: specs[action]) { _, _ in specChanged(action) } + + if hasSysConf { + conflictTag("System conflict", color: .orange) + } else if hasIntConf { + conflictTag("Duplicate", color: .red) + } + } + .padding(.vertical, 5) + .opacity(isEnabled ? 1 : 0.5) + } + + private func conflictTag(_ text: String, color: Color) -> some View { + Text(text) + .font(.system(size: 10, weight: .medium)) + .foregroundColor(color) + .padding(.horizontal, 6) + .padding(.vertical, 2) + .background(color.opacity(0.1)) + .clipShape(Capsule()) + } + + // MARK: - Island-local shortcuts (read-only) + + private var islandSection: some View { + GroupBox("Island shortcuts — active when the island is focused") { + VStack(alignment: .leading, spacing: 0) { + ForEach(Array(ShortcutLogic.islandShortcuts.enumerated()), id: \.offset) { _, pair in + HStack(spacing: 10) { + Text(pair.key) + .font(.system(size: 11, design: .monospaced)) + .frame(width: 90, alignment: .leading) + Text(pair.description) + .font(.system(size: 12)) + .foregroundColor(.secondary) + Spacer() + } + .padding(.vertical, 4) + if pair.key != ShortcutLogic.islandShortcuts.last?.key { + Divider().padding(.leading, 100) + } + } + } + .padding(6) + } + } + + // MARK: - Bindings + + private func specFlagsBinding(_ action: ShortcutAction) -> Binding { + Binding( + get: { (specs[action] ?? ShortcutLogic.defaults[action]!).nsFlags }, + set: { v in + var s = specs[action] ?? ShortcutLogic.defaults[action]! + s.nsFlags = v + specs[action] = s + } + ) + } + + private func specCodeBinding(_ action: ShortcutAction) -> Binding { + Binding( + get: { (specs[action] ?? ShortcutLogic.defaults[action]!).keyCode }, + set: { v in + var s = specs[action] ?? ShortcutLogic.defaults[action]! + s.keyCode = v + specs[action] = s + } + ) + } + + // MARK: - Actions + + private func reload() { + for action in ShortcutAction.allCases { + enabled[action] = ShortcutLogic.isEnabled(action) + specs[action] = ShortcutLogic.hotKey(for: action) + } + systemConflicts = HotKeyCenter.shared.conflicts + updateInternalDups() + } + + private func toggleAction(_ action: ShortcutAction, enabled v: Bool) { + enabled[action] = v + ShortcutLogic.setEnabled(v, for: action) + HotKeyCenter.shared.reregister(action) + systemConflicts = HotKeyCenter.shared.conflicts + } + + private func specChanged(_ action: ShortcutAction) { + guard let s = specs[action] else { return } + ShortcutLogic.save(s, for: action) + HotKeyCenter.shared.reregister(action) + systemConflicts = HotKeyCenter.shared.conflicts + updateInternalDups() + } + + private func resetAll() { + for action in ShortcutAction.allCases { + ShortcutLogic.resetToDefault(action) + HotKeyCenter.shared.reregister(action) + } + reload() + } + + private func updateInternalDups() { + var all: [ShortcutAction: ShortcutSpec] = [:] + for action in ShortcutAction.allCases { + if ShortcutLogic.isEnabled(action) { + all[action] = ShortcutLogic.hotKey(for: action) + } + } + internalDups = ShortcutLogic.duplicates(in: all) + } +} diff --git a/NotchBuddy/Sources/App/SoundEngine.swift b/NotchBuddy/Sources/App/SoundEngine.swift new file mode 100644 index 0000000..b1d08b3 --- /dev/null +++ b/NotchBuddy/Sources/App/SoundEngine.swift @@ -0,0 +1,65 @@ +import AVFoundation +import AppKit + +/// Preloaded WAV players with near-zero latency. +/// Volume default 0.12 (matches prototype: gain ×6 then vol=0.12). +@MainActor +final class SoundEngine { + static let shared = SoundEngine() + + var enabled: Bool = true + var volume: Float = 0.12 { + didSet { players.values.forEach { $0.forEach { $0.volume = volume } } } + } + + // Pool of 3 players per sound to allow overlapping playback + private var players: [String: [AVAudioPlayer]] = [:] + + private init() { + preload() + } + + private func preload() { + let names = ["peek","open","close","hover","blip","slap","annoyed","dizzy","greet", + "work","finish","error","approval","question","approve","gulp","tick", + "send","love","pop","proud","wink","yawn","attach","think","search", + "rate","sleep","greeting"] + for name in names { + guard let url = Bundle.main.url(forResource: name, withExtension: "wav", subdirectory: "sounds") else { continue } + var pool: [AVAudioPlayer] = [] + for _ in 0..<3 { + if let p = try? AVAudioPlayer(contentsOf: url) { + p.volume = volume + p.prepareToPlay() + pool.append(p) + } + } + if !pool.isEmpty { players[name] = pool } + } + } + + /// Fade out all currently-playing instances of `name` over `duration` seconds, + /// then stop and reset them so they can be reused. + func fadeOut(_ name: String, duration: TimeInterval) { + guard let pool = players[name] else { return } + for player in pool where player.isPlaying { + player.setVolume(0, fadeDuration: duration) + DispatchQueue.main.asyncAfter(deadline: .now() + duration) { [weak player] in + guard let p = player else { return } + p.stop() + p.currentTime = 0 + p.volume = self.volume + } + } + } + + func play(_ name: String) { + guard enabled && AppState.shared.soundEnabled else { return } + guard let pool = players[name] else { return } + // Find a player that is not currently playing + let player = pool.first { !$0.isPlaying } ?? pool[0] + player.currentTime = 0 + player.volume = volume + player.play() + } +} diff --git a/NotchBuddy/Sources/App/StripePoller.swift b/NotchBuddy/Sources/App/StripePoller.swift new file mode 100644 index 0000000..6aeec6c --- /dev/null +++ b/NotchBuddy/Sources/App/StripePoller.swift @@ -0,0 +1,161 @@ +import Foundation +import SwiftUI + +// MARK: - StripePoller +// Polls Stripe API every 30s for balance + recent charges. +// On new charge: slides payments list (newest first), then animates balance count-up. + +final class StripePoller: @unchecked Sendable { + static let shared = StripePoller() + private var timer: DispatchSourceTimer? + private var lastChargeId: String = "" + + private init() {} + + func start() { + guard timer == nil else { return } + let t = DispatchSource.makeTimerSource(queue: .global(qos: .background)) + t.schedule(deadline: .now() + 6, repeating: 30) + t.setEventHandler { [weak self] in self?.poll() } + t.resume() + timer = t + } + + // MARK: - Poll + + func pollNow() { poll() } + + private func poll() { + guard let key = KeychainStore.shared.get("stripe-api-key") else { return } + fetchBalance(key: key) + fetchCharges(key: key) + } + + // MARK: - Balance + + private func fetchBalance(key: String) { + guard let url = URL(string: "https://api.stripe.com/v1/balance") else { return } + var req = URLRequest(url: url, timeoutInterval: 10) + // Stripe primary auth: Basic with key as username, empty password + let creds = Data("\(key):".utf8).base64EncodedString() + req.setValue("Basic \(creds)", forHTTPHeaderField: "Authorization") + + URLSession.shared.dataTask(with: req) { data, response, error in + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + if code != 200 { + let errMsg: String + if code == 401 { errMsg = "Invalid API key (401)" } + else if code == 403 { errMsg = "Use secret key (sk_live_… not pk_live_…)" } + else if code == 0 { errMsg = error?.localizedDescription ?? "No connection" } + else { errMsg = "API error \(code)" } + DispatchQueue.main.async { AppState.shared.stripeError = errMsg } + return + } + guard let data, + let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else { return } + + // Sum available + pending so recent charges show up immediately + let available = json["available"] as? [[String: Any]] ?? [] + let pending = json["pending"] as? [[String: Any]] ?? [] + let allBuckets = available + pending + guard let currency = (allBuckets.first)?["currency"] as? String else { return } + let amount = allBuckets.compactMap { $0["amount"] as? Int }.reduce(0, +) + + DispatchQueue.main.async { + let state = AppState.shared + state.stripeError = nil + state.stripeCurrency = currency + state.stripeBalance = amount + // Always sync display balance if not yet showing a real value + // (charges may have set stripeLoaded=true before balance arrived) + if state.stripeDisplayBalance == 0 { + state.stripeDisplayBalance = amount + } + state.stripeLoaded = true + } + }.resume() + } + + // MARK: - Charges + + private func fetchCharges(key: String) { + guard let url = URL(string: "https://api.stripe.com/v1/charges?limit=3") else { return } + var req = URLRequest(url: url, timeoutInterval: 10) + let creds = Data("\(key):".utf8).base64EncodedString() + req.setValue("Basic \(creds)", forHTTPHeaderField: "Authorization") + + URLSession.shared.dataTask(with: req) { [weak self] data, response, _ in + guard let self else { return } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + guard let data, code == 200 else { return } + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let rawList = json["data"] as? [[String: Any]] else { return } + + let parsed = rawList.compactMap { self.parseCharge($0) } + DispatchQueue.main.async { self.handleCharges(parsed) } + }.resume() + } + + private func parseCharge(_ c: [String: Any]) -> StripePayment? { + guard let id = c["id"] as? String, + let amount = c["amount"] as? Int, + let currency = c["currency"] as? String, + let status = c["status"] as? String else { return nil } + + let ts = (c["created"] as? TimeInterval) ?? 0 + let desc = c["description"] as? String + ?? (c["billing_details"] as? [String: Any]).flatMap { $0["name"] as? String } + + return StripePayment(id: id, amount: amount, currency: currency, + description: desc, createdAt: Date(timeIntervalSince1970: ts), + status: status) + } + + @MainActor + private func handleCharges(_ payments: [StripePayment]) { + let state = AppState.shared + + // First load — populate silently, anchor lastChargeId to avoid duplicate on next poll + if state.stripePayments.isEmpty { + state.stripePayments = payments + lastChargeId = payments.first?.id ?? "" + // Sync display balance (balance may have already arrived; use it) + state.stripeDisplayBalance = state.stripeBalance + state.stripeLoaded = true + return + } + + guard let newest = payments.first, newest.id != lastChargeId else { return } + lastChargeId = newest.id + + guard let idx = state.tasks.firstIndex(where: { $0.id == "integration_stripe" }) else { return } + let focused = state.focusId == "integration_stripe" + + // 1. Slide payments: new enters top, max 3 shown + withAnimation(.spring(response: 0.38, dampingFraction: 0.82)) { + state.stripePayments = Array(([newest] + state.stripePayments).prefix(3)) + } + + state.tasks[idx].state = .finished + state.tasks[idx].steps = [newest.description ?? newest.amountFormatted] + if !focused { state.tasks[idx].pillBadge = .finished } + SoundEngine.shared.play("finish") + + // 2. After slide settles, count up balance + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + withAnimation(.easeOut(duration: 1.2)) { + state.stripeDisplayBalance = state.stripeBalance + } + } + + // 3. Auto-clear task state after 60s + DispatchQueue.main.asyncAfter(deadline: .now() + 60) { + guard let i = state.tasks.firstIndex(where: { $0.id == "integration_stripe" }) else { return } + guard state.tasks[i].state == .finished else { return } + state.tasks[i].state = .idle + state.tasks[i].steps = [] + state.tasks[i].pillBadge = nil + } + } +} + diff --git a/NotchBuddy/Sources/App/UploadCanvasView.swift b/NotchBuddy/Sources/App/UploadCanvasView.swift new file mode 100644 index 0000000..0efebfe --- /dev/null +++ b/NotchBuddy/Sources/App/UploadCanvasView.swift @@ -0,0 +1,582 @@ +import SwiftUI +import AppKit + +// Full 640×176 canvas that drives the upload sequence animation. +// Replaces the header + content area when the upload engine is active. + +struct UploadCanvasView: View { + @ObservedObject var state: AppState + @State private var fileIcon: NSImage? = nil + + private var engine: UploadSequenceEngine { .shared } + + var body: some View { + TimelineView(.animation) { tl in + let f = engine.frame(at: tl.date) + let wallTime = tl.date.timeIntervalSinceReferenceDate + + ZStack(alignment: .topLeading) { + Canvas { ctx, _ in + drawScene(ctx: ctx, f: f, wallTime: wallTime) + } + .frame(width: 640, height: 176) + + // Interactive choose buttons (invisible hit areas at reference positions) + if f.chooseAlpha > 0 { + chooseOverlay(f: f) + .frame(width: 640, height: 176) + } + } + } + .onChange(of: state.droppedFile?.url) { _, url in + if let url { loadIcon(url: url) } + } + .onAppear { + if let url = state.droppedFile?.url { loadIcon(url: url) } + } + .frame(width: 640, height: 176) + } + + // MARK: - File icon + + private func loadIcon(url: URL) { + let img = NSWorkspace.shared.icon(forFile: url.path) + img.size = NSSize(width: 64, height: 64) + fileIcon = img + } + + // MARK: - Choose overlay (transparent SwiftUI buttons over canvas) + + @ViewBuilder + private func chooseOverlay(f: USFrame) -> some View { + // Reference positions: button1 x=100 w=176 y=113 h=26, button2 x=284 w=128 + ZStack(alignment: .topLeading) { + // Primary: "Ask a question about it" + Button { + withAnimation(.easeInOut(duration: 0.22)) { state.view = .prompt } + DispatchQueue.main.asyncAfter(deadline: .now() + 0.22) { + UploadSequenceEngine.shared.deactivate() + } + } label: { + Color.clear + .frame(width: 168, height: 26) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .frame(width: 168, height: 26) + .position(x: 114 + 84, y: 113 + 13) // center = (198, 126) + + // Secondary: "Send by email" + Button { + withAnimation(.easeInOut(duration: 0.22)) { state.view = .mail } + DispatchQueue.main.asyncAfter(deadline: .now() + 0.22) { + UploadSequenceEngine.shared.deactivate() + } + } label: { + Color.clear + .frame(width: 120, height: 26) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .frame(width: 120, height: 26) + .position(x: 290 + 60, y: 113 + 13) // center = (350, 126) + } + .opacity(f.chooseAlpha) + .allowsHitTesting(f.chooseAlpha > 0.5) + } + + // MARK: - Main draw + + private func drawScene(ctx: GraphicsContext, f: USFrame, wallTime: Double = 0) { + var c = ctx + + // ── Island background ────────────────────────────────────── + c.fill(Path(CGRect(x:0, y:0, width:640, height:176)), with: .color(Color.black)) + + // ── Card ────────────────────────────────────────────────── + let cardPath = roundedRect(CGRect(x: USC.CARD_X, y: USC.CARD_Y, width: USC.CARD_W, height: USC.CARD_H), r: USC.CARD_R) + + var cardCtx = c + cardCtx.clip(to: cardPath) + cardCtx.fill(Path(CGRect(x: USC.CARD_X, y: USC.CARD_Y, width: USC.CARD_W, height: USC.CARD_H)), + with: .color(Color(red:0.051, green:0.055, blue:0.063))) + + // Green glow from card bottom — grows slowly with upload progress + if f.greenWash > 0 { + // Center at card bottom edge; gradient fans upward through the card + let gx = USC.CARD_X + USC.CARD_W/2 + let gy = USC.CARD_Y + USC.CARD_H // bottom of card + let gGrad = Gradient(stops: [ + .init(color: Color(red:0.157,green:0.831,blue:0.510).opacity(f.greenWash * 0.90), location:0), + .init(color: Color(red:0.157,green:0.831,blue:0.510).opacity(f.greenWash * 0.30), location:0.55), + .init(color: Color(red:0.157,green:0.831,blue:0.510).opacity(0), location:1) + ]) + cardCtx.fill(Path(CGRect(x:USC.CARD_X,y:USC.CARD_Y,width:USC.CARD_W,height:USC.CARD_H)), + with: .radialGradient(gGrad, center:CGPoint(x:gx,y:gy), + startRadius:0, endRadius:USC.CARD_H*1.5)) + } + + // ── Dashed border (animates left→right while on drop zone) ──── + if f.zoneAlpha > 0 { + var borderCtx = c + borderCtx.opacity = f.zoneAlpha + let borderColor = f.zoneOver + ? Color(red:0.204,green:0.831,blue:0.600).opacity(0.55) + : Color.white.opacity(0.14) + let inset = CGRect(x: USC.CARD_X+0.75, y: USC.CARD_Y+0.75, + width: USC.CARD_W-1.5, height: USC.CARD_H-1.5) + // dashPhase increases → pattern marches left-to-right at ~20 pt/s + let dashPhase = CGFloat(wallTime * 20) + borderCtx.stroke(roundedRect(inset, r: USC.CARD_R-0.5), + with: .color(borderColor), + style: StrokeStyle(lineWidth:1.5, dash:[6,5], dashPhase: dashPhase)) + } + + // ── Drop zone text ───────────────────────────────────────── + if f.zoneAlpha > 0 && f.textAlpha > 0 { + drawDropText(ctx: &c, f: f) + } + + // ── Progress bar ────────────────────────────────────────── + if f.barAlpha > 0 || f.barReveal > 0 { + drawProgressBar(ctx: &c, f: f) + } + + // ── Choose view text ───────────────────────────────────── + if f.chooseAlpha > 0 { + drawChooseView(ctx: &c, f: f) + } + + // ── Mochi ───────────────────────────────────────────────── + drawMochi(ctx: &c, f: f) + + // ── File / suction ──────────────────────────────────────── + if f.fileVisible { drawFile(ctx: &c, f: f) } + } + + // MARK: - Drop zone text + chips + + private func drawDropText(ctx: inout GraphicsContext, f: USFrame) { + var tCtx = ctx + tCtx.opacity = f.textAlpha + + let label = Text("Drop your files here") + .font(.system(size:13, weight:.medium)) + .foregroundColor(Color(hex:"#D5D7DB")) + tCtx.draw(label, at: CGPoint(x: USC.TEXT_X, y: USC.TEXT_Y - 4), anchor: .leading) + + let chips = ["PDF","Images","Code","Docs"] + var cx = USC.TEXT_X + for chip in chips { + let chipText = Text(chip).font(.system(size:11, weight:.medium)).foregroundColor(Color(hex:"#B9BDC4")) + // measure approximate width + let estW = Double(chip.count) * 6.5 + 16 + tCtx.fill(roundedRect(CGRect(x:cx, y:USC.TEXT_Y+9, width:estW, height:18), r:9), + with: .color(Color.white.opacity(0.07))) + tCtx.draw(chipText, at: CGPoint(x: cx + 8, y: USC.TEXT_Y + 18), anchor: .leading) + cx += estW + 6 + } + } + + // MARK: - Progress bar + + private func drawProgressBar(ctx: inout GraphicsContext, f: USFrame) { + var pCtx = ctx + pCtx.opacity = max(f.barAlpha, 0.001) + + let x0 = USC.BAR_X0, x1 = USC.BAR_X1, by = USC.BAR_Y + let barLen = (x1-x0) * f.barReveal + + // Filename label + let name = state.droppedFile?.name ?? "file" + let label = Text("Uploading \(name)") + .font(.system(size:12.5, weight:.medium)) + .foregroundColor(Color(hex:"#A9ADB5")) + pCtx.draw(label, at: CGPoint(x: x0, y: by-30), anchor: .leading) + + // Checkmark or percentage + if f.check > 0 { + var ckCtx = pCtx + ckCtx.concatenate(CGAffineTransform(translationX: CGFloat(x1-8), y: CGFloat(by-30))) + ckCtx.concatenate(CGAffineTransform(scaleX: CGFloat(f.check), y: CGFloat(f.check))) + var circle = Path(); circle.addEllipse(in: CGRect(x:-8,y:-8,width:16,height:16)) + ckCtx.fill(circle, with: .color(Color(hex:"#34D399"))) + var ck = Path() + ck.move(to: CGPoint(x:-3.6,y:0.2)); ck.addLine(to: CGPoint(x:-1,y:2.8)); ck.addLine(to: CGPoint(x:3.8,y:-2.6)) + ckCtx.stroke(ck, with: .color(Color(red:0.027,green:0.075,blue:0.055)), + style: StrokeStyle(lineWidth:2, lineCap:.round, lineJoin:.round)) + } else { + let pct = Text("\(Int(f.progress*100)) %") + .font(.system(size:12.5, weight:.medium).monospacedDigit()) + .foregroundColor(Color(hex:"#A9ADB5")) + pCtx.draw(pct, at: CGPoint(x: x1, y: by-30), anchor: .trailing) + } + + // Bar track + if barLen > 0 { + pCtx.fill(roundedRect(CGRect(x:x0, y:by-3, width:barLen, height:6), r:3), + with: .color(Color.white.opacity(0.08))) + } + + // Bar fill + let fx = usLerp(USC.BAR_X0, USC.BAR_X1, f.progress) + if fx > x0 + 1 { + // Flash color at completion + let flashGreen = Color( + red: usLerp(0.204, 0.431, f.flash), + green: usLerp(0.827, 0.906, f.flash), + blue: usLerp(0.600, 0.718, f.flash)) + let fillGrad = Gradient(stops: [ + .init(color: Color(hex:"#1FA87A"), location:0), + .init(color: flashGreen, location:1) + ]) + pCtx.fill(roundedRect(CGRect(x:x0, y:by-3, width:fx-x0, height:6), r:3), + with: .linearGradient(fillGrad, + startPoint: CGPoint(x:x0, y:0), + endPoint: CGPoint(x:fx, y:0))) + } + + // Glow trail + if f.progress > 0.01 && f.progress < 1 { + let v = (usProgressAt(f.t+0.01, progStart:USC.T_PROG_START, progEnd:f.progEnd) + - usProgressAt(f.t, progStart:USC.T_PROG_START, progEnd:f.progEnd)) / 0.01 + let tl = max(8, min(34, 8 + v*40)) + let tGrad = Gradient(stops:[ + .init(color: Color(red:0.204,green:0.831,blue:0.600,opacity:0), location:0), + .init(color: Color(red:0.431,green:0.906,blue:0.718,opacity:0.6), location:1) + ]) + var glowCtx = pCtx + glowCtx.addFilter(.blur(radius:3)) + glowCtx.fill(roundedRect(CGRect(x:fx-tl, y:by-4, width:tl, height:8), r:4), + with: .linearGradient(tGrad, + startPoint:CGPoint(x:fx-tl,y:0), + endPoint: CGPoint(x:fx,y:0))) + } + } + + // MARK: - Choose view text + buttons (canvas layer) + + private func drawChooseView(ctx: inout GraphicsContext, f: USFrame) { + var cCtx = ctx + cCtx.opacity = f.chooseAlpha + // Slide up: translate down by (1-alpha)*4 + cCtx.concatenate(CGAffineTransform(translationX: 0, y: CGFloat((1-f.chooseAlpha)*4))) + + let name = state.droppedFile?.name ?? "file" + let titleText = Text("\(name) is ready.") + .font(.system(size:14, weight:.semibold)) + .foregroundColor(Color(hex:"#F5F6F8")) + cCtx.draw(titleText, at: CGPoint(x:114, y:80), anchor: .leading) + + let subText = Text("What do you want to do with it?") + .font(.system(size:12.5)) + .foregroundColor(Color(hex:"#9398A1")) + cCtx.draw(subText, at: CGPoint(x:114, y:100), anchor: .leading) + + // Primary button (white fill) + cCtx.fill(roundedRect(CGRect(x:114,y:113,width:168,height:26), r:13), + with: .color(Color(hex:"#F5F6F8"))) + let btn1 = Text("Ask a question about it") + .font(.system(size:12.5, weight:.medium)) + .foregroundColor(Color(red:0.043,green:0.047,blue:0.055)) + cCtx.draw(btn1, at: CGPoint(x:198, y:126), anchor: .center) + + // Secondary button (dim fill) + cCtx.fill(roundedRect(CGRect(x:290,y:113,width:120,height:26), r:13), + with: .color(Color.white.opacity(0.09))) + let btn2 = Text("Send by email") + .font(.system(size:12.5, weight:.medium)) + .foregroundColor(Color(hex:"#F1F2F4")) + cCtx.draw(btn2, at: CGPoint(x:350, y:126), anchor: .center) + } + + // MARK: - Mochi (superellipse body + eyes + mouth) + + private func drawMochi(ctx: inout GraphicsContext, f: USFrame) { + let R = f.d / 2 / 1.04 + let m = f.morph + let mc = max(0, min(m, 1.0)) + + var c = ctx + c.concatenate(CGAffineTransform(translationX: CGFloat(f.x), y: CGFloat(f.y + f.hop))) + c.concatenate(CGAffineTransform(rotationAngle: CGFloat(f.tilt))) + c.concatenate(CGAffineTransform(scaleX: CGFloat(f.sx), y: CGFloat(f.sy))) + + let (bp, rx, ry) = usBodyPath(m: m, R: R) + + // ── Body gradient ────────────────────────────────────────── + let bodyGrad = Gradient(stops:[ + .init(color: Color(hex:"#EDEDEF"), location:0), + .init(color: Color(hex:"#C4C5CA"), location:1) + ]) + c.fill(bp, with: .linearGradient(bodyGrad, + startPoint: CGPoint(x: rx*0.7, y: -ry*0.9), + endPoint: CGPoint(x: -rx*0.8, y: ry*0.9))) + + // ── Edge shadow ──────────────────────────────────────────── + let shadowGrad = Gradient(stops:[ + .init(color: .clear, location:0), + .init(color: .clear, location:0.62), + .init(color: Color.black.opacity(0.12), location:1) + ]) + c.fill(bp, with: .radialGradient(shadowGrad, + center: CGPoint(x:0,y:0), startRadius: CGFloat(R*0.2), endRadius: CGFloat(R*1.3))) + + // ── Top rim (box mode) ───────────────────────────────────── + if mc > 0.3 { + let rimAlpha = max(0, min(1, (mc-0.3)/0.7)) + var rimCtx = c + rimCtx.clip(to: bp) + var rim = Path() + rim.move(to: CGPoint(x: -rx*0.72, y: -ry+0.9)) + rim.addLine(to: CGPoint(x: rx*0.72, y: -ry+0.9)) + rimCtx.stroke(rim, with: .color(Color.white.opacity(0.6*rimAlpha)), + style: StrokeStyle(lineWidth:1.2, lineCap:.round)) + } + + // ── Mouth hole ───────────────────────────────────────────── + let mh = f.mouth * R * mc + if mh > 0.3 { + let mw = 2*rx - 0.24*R + let mxO = CGFloat(-mw/2) + let myO = CGFloat(-ry + 0.10*R) + let mhr = CGFloat(min(mw/2, mh/2)) + var mCtx = c + mCtx.clip(to: bp) + let holeGrad = Gradient(stops:[ + .init(color: Color(red:0.012,green:0.012,blue:0.016), location:0), + .init(color: Color(red:0.063,green:0.067,blue:0.078), location:1) + ]) + let holePath = roundedRect(CGRect(x:mxO, y:myO, width:CGFloat(mw), height:CGFloat(mh)), r:Double(mhr)) + mCtx.fill(holePath, with: .linearGradient(holeGrad, + startPoint: CGPoint(x:0, y:myO), + endPoint: CGPoint(x:0, y:myO+CGFloat(mh)))) + // Bottom lip + if mh > 4 { + var lip = Path() + lip.move(to: CGPoint(x:mxO+mhr, y:myO+CGFloat(mh)+0.5)) + lip.addLine(to: CGPoint(x:mxO+CGFloat(mw)-mhr, y:myO+CGFloat(mh)+0.5)) + mCtx.stroke(lip, with: .color(Color.white.opacity(0.55)), + style: StrokeStyle(lineWidth:1, lineCap:.round)) + } + } + + // ── Eyes ─────────────────────────────────────────────────── + let ew = R * 0.25 + let eh = R * (0.62 - 0.16*mc) + let ey = R * (0.02 + 0.28*mc) + let sp = R * 0.30 + let lx = f.lookX * R * (0.34 - 0.08*mc) + let ly = f.lookY * R * (0.16 - 0.09*mc) + + var eCtx = c + eCtx.clip(to: bp) + for sd in [-1.0, 1.0] { + var ec = eCtx + ec.concatenate(CGAffineTransform(translationX: CGFloat(sd*sp+lx), y: CGFloat(ey+ly))) + drawEyeShape(ctx: &ec, shape: f.eye, w: CGFloat(ew), h: CGFloat(eh)) + } + } + + // MARK: - Eye shapes + + private func drawEyeShape(ctx: inout GraphicsContext, shape: USEyeShape, w: CGFloat, h: CGFloat) { + let ink = Color(red:0.055,green:0.059,blue:0.071) + switch shape { + case .pill: + var p = Path() + p.addRoundedRect(in: CGRect(x:-w/2, y:-h/2, width:w, height:h), + cornerSize: CGSize(width:w/2, height:w/2)) + ctx.fill(p, with: .color(ink)) + + case .cup: + // Flat top + semicircle bottom (cup shape) + let hh = h * 0.55 + var p = Path() + p.move(to: CGPoint(x:-w/2, y:-hh/2)) + p.addLine(to: CGPoint(x: w/2, y:-hh/2)) + p.addLine(to: CGPoint(x: w/2, y: hh/2-w/2)) + p.addArc(center: CGPoint(x:0, y:hh/2-w/2), radius:w/2, startAngle:.degrees(0), endAngle:.degrees(180), clockwise:false) + p.closeSubpath() + ctx.fill(p, with: .color(ink)) + + case .content: + // Upward arc (content / happy) + var p = Path() + p.addArc(center: CGPoint(x:0, y:-h*0.12), radius:w*0.85, + startAngle:.degrees(180*0.15), endAngle:.degrees(180*0.85), clockwise:false) + ctx.stroke(p, with: .color(ink), + style: StrokeStyle(lineWidth:w*0.5, lineCap:.round)) + } + } + + // MARK: - File / suction (drawFile port) + + private func drawFile(ctx: inout GraphicsContext, f: USFrame) { + let cx = f.cursorX, cy = f.cursorY + 14 + if f.suck <= 0 { + var fc = ctx; fc.opacity = 0.92 + drawDoc(ctx: &fc, cx: cx, cy: cy, wsc:1, hsc:1) + return + } + + let m = f.mouthRect + let W0 = 34.0, H0 = 42.0 + let p = usEIn(f.suck) + let topY = usLerp(cy - H0/2, m.y - 2, usEInOut(f.suck)) + let hs = usLerp(1.08, 0.55, usEInOut(f.suck)) + let Hh = H0 * hs + let sc = usLerp(1, 0.55, p) + let q = usEOut(f.suck) + let fCx = usLerp(cx, m.x + m.w/2, usEOut(f.suck)) + let wob = sin(f.suck * .pi * 2) * 0.1 * (1-p) + let clipY = m.y + m.h * 0.5 + + // Use withCGContext for the complex strip clipping + ctx.withCGContext { cg in + cg.saveGState() + // Outer clip: above mouth + cg.clip(to: CGRect(x:0, y:0, width:640, height:clipY)) + + for i in 0..<28 { + let v0 = Double(i) / 28 + let wsc = usLerp(1, usLerp(0.92, 0.22*m.w/W0, pow(v0,1.2)), q) * sc + let yy = topY + v0*Hh + let hh = Hh/28 + 0.6 + + cg.saveGState() + cg.translateBy(x: CGFloat(fCx), y: CGFloat(yy)) + cg.rotate(by: CGFloat(wob)) + cg.clip(to: CGRect(x: CGFloat(-W0*wsc/2), y:0, width: CGFloat(W0*wsc), height: CGFloat(hh))) + cg.translateBy(x: CGFloat(-fCx), y: CGFloat(-yy)) + drawDocCG(cg: cg, cx: fCx, cy: topY+Hh/2, wsc: wsc, hsc: hs, fileIcon: fileIcon) + cg.restoreGState() + } + cg.restoreGState() + } + + // Green particles + for i in 0..<4 { + let a = Double(i)/4 * .pi*2 + 0.6 + let r0 = 24.0 + let k = max(0, min(1, (f.suck - Double(i)*0.08) / 0.7)) + guard k > 0 && k < 1 else { continue } + let sx0 = cx + cos(a)*r0, sy0 = cy + sin(a)*r0 + let ex = m.x + m.w/2, ey = m.y + m.h*0.3 + let kk = pow(k, 0.7) + let px = usLerp(sx0,ex,kk), py = usLerp(sy0,ey,kk) - sin(.pi*k)*6 + let rad = 2.2*(1-k*0.5) + var pp = Path(); pp.addEllipse(in: CGRect(x:px-rad, y:py-rad, width:rad*2, height:rad*2)) + ctx.fill(pp, with: .color(Color(red:0.204,green:0.831,blue:0.600).opacity(1-k))) + } + } + + // MARK: - Doc icon (SwiftUI wrapper) + + private func drawDoc(ctx: inout GraphicsContext, cx: Double, cy: Double, wsc: Double, hsc: Double) { + let w = 34*wsc, h = 42*hsc + let x = cx-w/2, y = cy-h/2 + let fold = 8*min(wsc,hsc) + + var bodyCtx = ctx + bodyCtx.addFilter(.shadow(color:.black.opacity(0.45), radius:8, x:0, y:3)) + var body = Path() + body.move(to: CGPoint(x:x+2,y:y)) + body.addLine(to: CGPoint(x:x+w-fold,y:y)) + body.addLine(to: CGPoint(x:x+w,y:y+fold)) + body.addLine(to: CGPoint(x:x+w,y:y+h-2)) + body.addQuadCurve(to: CGPoint(x:x+w-2,y:y+h), control:CGPoint(x:x+w,y:y+h)) + body.addLine(to: CGPoint(x:x+2,y:y+h)) + body.addQuadCurve(to: CGPoint(x:x,y:y+h-2), control:CGPoint(x:x,y:y+h)) + body.addLine(to: CGPoint(x:x,y:y+2)) + body.addQuadCurve(to: CGPoint(x:x+2,y:y), control:CGPoint(x:x,y:y)) + body.closeSubpath() + bodyCtx.fill(body, with: .color(Color(red:0.957,green:0.957,blue:0.965))) + + var foldPath = Path() + foldPath.move(to: CGPoint(x:x+w-fold,y:y)) + foldPath.addLine(to: CGPoint(x:x+w-fold,y:y+fold)) + foldPath.addLine(to: CGPoint(x:x+w,y:y+fold)) + ctx.fill(foldPath, with: .color(Color(red:0.835,green:0.839,blue:0.859))) + + ctx.fill(roundedRect(CGRect(x:x+w*0.18,y:y+h*0.58,width:w*0.64,height:h*0.16),r:2), + with: .color(Color(red:0.231,green:0.510,blue:0.961))) + } +} + +// MARK: - Doc icon in CGContext (for suction strips) + +private func drawDocCG(cg: CGContext, cx: Double, cy: Double, wsc: Double, hsc: Double, fileIcon: NSImage?) { + let w = 34*wsc, h = 42*hsc + let x = cx-w/2, y = cy-h/2 + let fold = 8.0*min(wsc,hsc) + + // Use real file icon if available + if let icon = fileIcon, + let cgImg = icon.cgImage(forProposedRect: nil, context: nil, hints: nil) { + cg.saveGState() + cg.setShadow(offset: CGSize(width:0,height:3), blur:8, color: CGColor(gray:0, alpha:0.45)) + let rect = CGRect(x:x, y:y, width:w, height:h) + cg.draw(cgImg, in: rect) + cg.restoreGState() + return + } + + // Generic document shape + cg.saveGState() + cg.setShadow(offset: CGSize(width:0,height:3), blur:8, color: CGColor(gray:0, alpha:0.45)) + cg.setFillColor(CGColor(red:0.957,green:0.957,blue:0.965,alpha:1)) + let bp = CGMutablePath() + bp.move(to: CGPoint(x:x+2,y:y)) + bp.addLine(to: CGPoint(x:x+w-fold,y:y)) + bp.addLine(to: CGPoint(x:x+w,y:y+fold)) + bp.addLine(to: CGPoint(x:x+w,y:y+h-2)) + bp.addQuadCurve(to: CGPoint(x:x+w-2,y:y+h), control:CGPoint(x:x+w,y:y+h)) + bp.addLine(to: CGPoint(x:x+2,y:y+h)) + bp.addQuadCurve(to: CGPoint(x:x,y:y+h-2), control:CGPoint(x:x,y:y+h)) + bp.addLine(to: CGPoint(x:x,y:y+2)) + bp.addQuadCurve(to: CGPoint(x:x+2,y:y), control:CGPoint(x:x,y:y)) + bp.closeSubpath() + cg.addPath(bp); cg.fillPath() + cg.restoreGState() + + // Fold + cg.setFillColor(CGColor(red:0.835,green:0.839,blue:0.859,alpha:1)) + let fp = CGMutablePath() + fp.move(to: CGPoint(x:x+w-fold,y:y)); fp.addLine(to: CGPoint(x:x+w-fold,y:y+fold)); fp.addLine(to: CGPoint(x:x+w,y:y+fold)) + cg.addPath(fp); cg.fillPath() + + // Blue accent line + cg.setFillColor(CGColor(red:0.231,green:0.510,blue:0.961,alpha:1)) + cg.addRect(CGRect(x:x+w*0.18, y:y+h*0.58, width:w*0.64, height:h*0.16)) + cg.fillPath() +} + +// MARK: - Superellipse body path (port of reference bodyPath(m, R)) + +func usBodyPath(m: Double, R: Double) -> (path: Path, rx: Double, ry: Double) { + let mc = max(0, min(m, 1.0)) + let n = 2.15 + (5.5-2.15)*mc + let rx = R * (1.04 - 0.04*mc) + let ry = R * (0.97 - 0.03*mc) + var path = Path() + for i in 0...96 { + let a = Double(i)/96 * .pi*2 + let ca = cos(a), sa = sin(a) + let px = rx * (ca<0 ? -1 : ca>0 ? 1 : 0) * pow(abs(ca), 2/n) + let py = ry * (sa<0 ? -1 : sa>0 ? 1 : 0) * pow(abs(sa), 2/n) + if i == 0 { path.move(to: CGPoint(x:px,y:py)) } + else { path.addLine(to: CGPoint(x:px,y:py)) } + } + path.closeSubpath() + return (path, rx, ry) +} + +// MARK: - Rounded rect helper (mirrors reference rr()) + +func roundedRect(_ rect: CGRect, r rr: Double) -> Path { + let r = max(0, min(rr, Double(rect.width)/2, Double(rect.height)/2)) + var p = Path() + p.addRoundedRect(in: rect, cornerSize: CGSize(width:r, height:r)) + return p +} diff --git a/NotchBuddy/Sources/App/UploadSequenceEngine.swift b/NotchBuddy/Sources/App/UploadSequenceEngine.swift new file mode 100644 index 0000000..12b091b --- /dev/null +++ b/NotchBuddy/Sources/App/UploadSequenceEngine.swift @@ -0,0 +1,437 @@ +import Foundation +import CoreGraphics + +// ============================================================ +// CONSTANTS — exact mirror of upload-sequence.html +// All values in island-coordinate points (island = 640 × 176) +// ============================================================ + +enum USC { + static let W: Double = 640 + static let ISL_H: Double = 176 + static let CARD_X: Double = 10; static let CARD_Y: Double = 42 + static let CARD_W: Double = 620; static let CARD_H: Double = 124; static let CARD_R: Double = 20 + static let REST_X: Double = 140; static let REST_Y: Double = 104 + static let D_BOX: Double = 62 + static let FOLLOW_MIN: Double = 60 // CARD_X + 50 + static let FOLLOW_MAX: Double = 580 // CARD_X + CARD_W - 50 + static let TEXT_X: Double = 196; static let TEXT_Y: Double = 94 + static let BAR_X0: Double = 46; static let BAR_X1: Double = 520; static let BAR_Y: Double = 118 + static let CHOOSE_X: Double = 60; static let CHOOSE_Y: Double = 101; static let CHOOSE_D: Double = 62 + static let LOCK_IN: Double = 60 + static let LOCK_OUT: Double = 90 + static let MOUTH_AJAR: Double = 0.20 + static let MOUTH_OPEN: Double = 0.42 + static let MOUTH_MAX: Double = 0.50 + // Phase timestamps (t_ref, drop = 1.95) + static let T_DROP: Double = 1.95 + static let T_SUCK_START: Double = 2.03 + static let T_SUCK_END: Double = 2.33 + static let T_CLOSE_END: Double = 2.42 + static let T_CHEW1: Double = 2.60 + static let T_CHEW_END: Double = 2.88 + static let T_SHRINK_END: Double = 3.23 + static let T_BAR_IN: Double = 3.00 + static let T_PROG_START: Double = 3.25 + static let DT: Double = 1.0 / 240.0 + // Entry offset: gives 0.40 s of following before drop + static let ENTRY_T_REF: Double = T_DROP - 0.40 // = 1.55 +} + +// ============================================================ +// EASING — port of reference E.out / E.in / E.inOut / E.back +// ============================================================ + +func usEOut(_ t: Double) -> Double { 1 - pow(1-t, 3) } +func usEIn(_ t: Double) -> Double { t*t*t } +func usEInOut(_ t: Double) -> Double { t < 0.5 ? 4*t*t*t : 1 - pow(-2*t+2,3)/2 } +func usEBack(_ t: Double) -> Double { let c1=1.70158,c3=c1+1; return 1+c3*pow(t-1,3)+c1*pow(t-1,2) } + +func usSeg(_ t: Double, _ a: Double, _ b: Double) -> Double { max(0, min(1,(t-a)/(b-a))) } +func usLerp(_ a: Double, _ b: Double, _ t: Double) -> Double { a+(b-a)*t } + +// Squeeze keyframes for suckEnd→chew1 phase (inline to avoid Swift @escaping issues) +func usSqueezeY(_ t: Double) -> Double { + let t0=USC.T_SUCK_END, t1=t0+0.07, t2=t0+0.20, t3=USC.T_CHEW1 + if t<=t0 { return 1.06 } + if t<=t1 { return usLerp(1.06, 0.82, usEOut(usSeg(t,t0,t1))) } + if t<=t2 { return usLerp(0.82, 1.10, usEOut(usSeg(t,t1,t2))) } + if t<=t3 { return usLerp(1.10, 1.00, usEInOut(usSeg(t,t2,t3))) } + return 1.0 +} +func usSqueezeX(_ t: Double) -> Double { + let t0=USC.T_SUCK_END, t1=t0+0.07, t2=t0+0.20, t3=USC.T_CHEW1 + if t<=t0 { return 0.97 } + if t<=t1 { return usLerp(0.97, 1.14, usEOut(usSeg(t,t0,t1))) } + if t<=t2 { return usLerp(1.14, 0.95, usEOut(usSeg(t,t1,t2))) } + if t<=t3 { return usLerp(0.95, 1.00, usEInOut(usSeg(t,t2,t3))) } + return 1.0 +} + +func usProgressCurve(_ u: Double) -> Double { + if u < 0.40 { return 0.60 * usEOut(u/0.40) } + if u < 0.85 { return 0.60 + 0.32 * usEInOut((u-0.40)/0.45) } + return 0.92 + 0.08 * usEIn((u-0.85)/0.15) +} +func usProgressAt(_ t: Double, progStart: Double, progEnd: Double) -> Double { + t < progStart ? 0 : usProgressCurve(usSeg(t, progStart, progEnd)) +} + +// ============================================================ +// SPRING — port of reference spring(s, target, response, damping, dt) +// ============================================================ + +struct USSpring { + var v: Double + var vel: Double = 0 + mutating func step(target: Double, response: Double, damping: Double, dt: Double) { + let k = pow(2 * .pi / response, 2) + let c = 2 * damping * sqrt(k) + let a = k*(target-v) - c*vel + vel += a*dt; v += vel*dt + } +} + +// ============================================================ +// SIMULATION STATE — mirrors reference newSim() +// ============================================================ + +struct USSimState { + var t: Double = 0 + var bx: USSpring = USSpring(v: USC.REST_X) + var by: USSpring = USSpring(v: USC.REST_Y) + var tilt: Double = 0 + var mouth: USSpring = USSpring(v: 0) + var locked: Bool = false + var lockAt: Double = -9 + var entered: Double = -9 // t_ref of zone entry; -9 = not entered + var gulp: Bool = false + var ok: Bool = false + var lastPct: Int = 0 +} + +// ============================================================ +// FRAME DATA — output of frame(), read by UploadCanvasView +// ============================================================ + +enum USEyeShape { case pill, cup, content } + +struct USMouthRect { var x,y,w,h: Double } + +struct USFrame { + var t: Double = 0 + var cursorX: Double = 600; var cursorY: Double = 280 + var morph: Double = 0 + var x: Double = USC.REST_X; var y: Double = USC.REST_Y; var d: Double = USC.D_BOX + var sx: Double = 1; var sy: Double = 1; var tilt: Double = 0; var hop: Double = 0 + var mouth: Double = 0 + var mouthRect = USMouthRect(x:0,y:0,w:0,h:0) + var eye: USEyeShape = .pill + var lookX: Double = 0; var lookY: Double = 0 + var fileVisible: Bool = true; var suck: Double = 0 + var zoneOver: Bool = false + var zoneAlpha: Double = 1 + var textAlpha: Double = 1 + var barReveal: Double = 0 + var barAlpha: Double = 0 + var progress: Double = 0 + var flash: Double = 0 + var check: Double = 0 + var greenWash: Double = 0 + var chooseAlpha: Double = 0 + var uploadDuration: Double = 2.4 + var progEnd: Double = USC.T_PROG_START + 2.4 + var growStart: Double = USC.T_PROG_START + 2.4 + 0.25 + var growEnd: Double = USC.T_PROG_START + 2.4 + 0.70 +} + +// ============================================================ +// ENGINE +// ============================================================ + +@MainActor +final class UploadSequenceEngine { + static let shared = UploadSequenceEngine() + + var uploadDuration: Double = 2.4 + var progEnd: Double { USC.T_PROG_START + uploadDuration } + var growStart: Double { progEnd + 0.25 } + var growEnd: Double { progEnd + 0.70 } + + private(set) var isActive: Bool = false + private var entryWallTime: Double = 0 // Date().timeIntervalSinceReferenceDate at entry + private var dropWallTime: Double? = nil + + private var sim = USSimState() + + // Real cursor in island coords + var cursorX: Double = 600 + var cursorY: Double = 280 + private var prevCursorX: Double = 600 + private var prevCursorY: Double = 280 + private var prevCursorTime: Double = 0 + private var cursorSpeed: Double = 0 + + // MARK: - Session lifecycle + + func enterZone(x: CGFloat, y: CGFloat) { + let now = Date().timeIntervalSinceReferenceDate + cursorX = Double(x); cursorY = Double(y) + prevCursorX = cursorX; prevCursorY = cursorY; prevCursorTime = now + cursorSpeed = 0 + sim = USSimState() + sim.t = USC.ENTRY_T_REF + sim.entered = USC.ENTRY_T_REF + sim.bx = USSpring(v: USC.REST_X) + sim.by = USSpring(v: USC.REST_Y) + entryWallTime = now + dropWallTime = nil + isActive = true + } + + func updateCursor(x: CGFloat, y: CGFloat) { + let now = Date().timeIntervalSinceReferenceDate + let dt = now - prevCursorTime + if dt > 0.001 { + let dx = Double(x) - prevCursorX, dy = Double(y) - prevCursorY + cursorSpeed = hypot(dx, dy) / dt + } + prevCursorX = Double(x); prevCursorY = Double(y); prevCursorTime = now + cursorX = Double(x); cursorY = Double(y) + } + + func exitZone() { + // Keep engine active — island stays open per spec + } + + func performDrop(uploadDuration ud: Double) { + uploadDuration = ud + let now = Date().timeIntervalSinceReferenceDate + dropWallTime = now + // Reset sim.t to T_DROP so the canonical post-drop timeline starts correctly, + // regardless of how long the user hovered. Spring state (position/velocity) is preserved. + sim.t = USC.T_DROP + } + + func deactivate() { + isActive = false + dropWallTime = nil + } + + // MARK: - t_ref from wall clock + + func tRef(at date: Date) -> Double { + guard isActive else { return 0 } + let now = date.timeIntervalSinceReferenceDate + if let dw = dropWallTime { + return USC.T_DROP + max(0, now - dw) + } + // No cap — spring keeps stepping as long as user hovers. + // computeFrame clamps phase-sensitive outputs to pre-drop state. + let elapsed = max(0, now - entryWallTime) + return USC.ENTRY_T_REF + elapsed + } + + // MARK: - Public entry point + + func frame(at date: Date) -> USFrame { + guard isActive else { return USFrame() } + let t = tRef(at: date) + simulateTo(t) + return computeFrame(t: t) + } + + // MARK: - Simulation + + private func simulateTo(_ tTarget: Double) { + while sim.t < tTarget - 1e-10 { + let dt = min(USC.DT, tTarget - sim.t) + stepOnce(dt: dt) + sim.t += dt + } + } + + private func stepOnce(dt: Double) { + let isDragging = (dropWallTime == nil) + + // Horizontal follow + lock (only while dragging and in zone) + if isDragging && sim.entered >= 0 { + let dist = hypot(cursorX - sim.bx.v, (cursorY + 14) - sim.by.v) + if !sim.locked && dist < USC.LOCK_IN && cursorSpeed < 180 { + sim.locked = true; sim.lockAt = sim.t + } + if sim.locked && dist > USC.LOCK_OUT { sim.locked = false } + let tx = max(USC.FOLLOW_MIN, min(USC.FOLLOW_MAX, cursorX)) + if sim.locked { + sim.bx.step(target: tx, response:0.18, damping:0.75, dt:dt) + sim.by.step(target: USC.REST_Y, response:0.18, damping:0.75, dt:dt) + } else { + sim.bx.step(target: tx, response:0.35, damping:0.70, dt:dt) + sim.by.step(target: USC.REST_Y, response:0.35, damping:0.70, dt:dt) + } + } + + // Tilt + let tiltTarget = isDragging ? max(-0.18, min(0.18, sim.bx.vel * 0.0015)) : 0.0 + sim.tilt = usLerp(sim.tilt, tiltTarget, 1 - pow(0.0005, dt)) + + // Mouth — post-drop close only after drop has actually happened + let t = sim.t + if !isDragging && t >= USC.T_SUCK_END { + sim.mouth.v = max(0, usLerp(USC.MOUTH_MAX, 0, usEIn(usSeg(t, USC.T_SUCK_END, USC.T_CLOSE_END)))) + } else { + var mt = 0.0 + if sim.entered >= 0 { + mt = (sim.locked || !isDragging) ? USC.MOUTH_OPEN : USC.MOUTH_AJAR + } + if !isDragging && t < USC.T_SUCK_END { mt = USC.MOUTH_MAX } + sim.mouth.step(target: mt, response:0.25, damping:0.60, dt:dt) + if sim.mouth.v < 0 { sim.mouth.v = 0 } + } + } + + // MARK: - Frame computation (mirrors reference frame(t)) + + private func computeFrame(t: Double) -> USFrame { + var f = USFrame() + f.t = t + f.cursorX = cursorX; f.cursorY = cursorY + f.uploadDuration = uploadDuration + f.progEnd = progEnd + f.growStart = growStart + f.growEnd = growEnd + + let entered = sim.entered >= 0 ? sim.entered : 1e9 + let isDragging = (dropWallTime == nil) + // For all phase-based calculations, clamp t to just before T_DROP while pre-drop + // so long hovers don't accidentally trigger post-drop visuals. + let pt = isDragging ? min(t, USC.T_DROP - USC.DT) : t + + // Morph: 0→1 (entry), 1→0 (shrink to ball), 0→1 (grow back to box at choose) + var morph: Double + if pt < USC.T_CHEW_END { + morph = usEBack(usSeg(pt, entered, entered + 0.38)) + } else if pt < growStart { + morph = 1 - usEOut(usSeg(pt, USC.T_CHEW_END, USC.T_SHRINK_END)) + } else { + morph = usEBack(usSeg(pt, growStart, growEnd)) + } + morph = max(0, min(morph, 1.08)) + f.morph = morph + + // Position / diameter + var x = sim.bx.v, y = sim.by.v, d = USC.D_BOX + if pt >= USC.T_CHEW_END && pt < USC.T_PROG_START { + let k = usEInOut(usSeg(pt, USC.T_CHEW_END, USC.T_SHRINK_END)) + x = usLerp(sim.bx.v, USC.BAR_X0, k) + y = usLerp(sim.by.v, USC.BAR_Y, k) + d = usLerp(USC.D_BOX, 14, k) + } + if pt >= USC.T_PROG_START { + let p = usProgressAt(pt, progStart: USC.T_PROG_START, progEnd: progEnd) + x = usLerp(USC.BAR_X0, USC.BAR_X1, p); y = USC.BAR_Y; d = 14 + } + if pt >= progEnd { + x = USC.BAR_X1 + y = USC.BAR_Y - 8 * sin(.pi * usSeg(pt, progEnd, progEnd + 0.20)) + } + if pt >= growStart { + x = usLerp(USC.BAR_X1, USC.CHOOSE_X, usEInOut(usSeg(pt, growStart, growEnd))) + y = usLerp(USC.BAR_Y, USC.CHOOSE_Y, usEInOut(usSeg(pt, growStart, growEnd))) + d = usLerp(14, USC.CHOOSE_D, usEBack(usSeg(pt, growStart, growEnd))) + } + f.x = x; f.y = y; f.d = d + + // Squeeze + var sx = 1.0, sy = 1.0 + if pt >= USC.T_DROP && pt < USC.T_SUCK_START { + let k = usEOut(usSeg(pt, USC.T_DROP, USC.T_SUCK_START)) + sy = usLerp(1, 0.92, k); sx = usLerp(1, 1.06, k) + } + if pt >= USC.T_SUCK_START && pt < USC.T_SUCK_END { + let k = usEInOut(usSeg(pt, USC.T_SUCK_START, USC.T_SUCK_END)) + sy = usLerp(0.92, 1.06, k); sx = usLerp(1.06, 0.97, k) + } + if pt >= USC.T_SUCK_END && pt < USC.T_CHEW1 { + sy = usSqueezeY(pt); sx = usSqueezeX(pt) + } + if pt >= USC.T_CHEW1 && pt < USC.T_CHEW_END { + let k = ((pt-USC.T_CHEW1).truncatingRemainder(dividingBy: 0.14)) / 0.14 + sy = 1 - 0.05*sin(.pi*k); sx = 1 + 0.03*sin(.pi*k) + } + if pt >= USC.T_CHEW_END && pt < USC.T_SHRINK_END { + let k = usSeg(pt, USC.T_CHEW_END, USC.T_SHRINK_END) + sy = 1 + 0.12*sin(.pi*k); sx = 1 - 0.06*sin(.pi*k) + } + if pt >= USC.T_PROG_START && pt < progEnd { + let v = (usProgressAt(pt+0.01, progStart: USC.T_PROG_START, progEnd: progEnd) + - usProgressAt(pt, progStart: USC.T_PROG_START, progEnd: progEnd)) / 0.01 + let st = max(0, min(1, v*0.18)) + sx = 1 + 0.25*st; sy = 1 - 0.15*st + } + if pt >= growStart && pt < growEnd { + sy = 1 + 0.06*sin(.pi * usSeg(pt, growStart, growEnd)) + } + f.sx = sx; f.sy = sy; f.tilt = sim.tilt + f.hop = (sim.lockAt > 0 && isDragging) + ? -5 * sin(.pi * usSeg(pt, sim.lockAt, sim.lockAt + 0.15)) : 0 + + f.mouth = sim.mouth.v + + // Eyes + var eye: USEyeShape = .pill + if sim.locked && pt < USC.T_SUCK_END { eye = .cup } + if pt >= USC.T_SUCK_END && pt < USC.T_CHEW_END + 0.10 { eye = .content } + if pt >= progEnd && pt < growEnd + 0.30 { eye = .content } + f.eye = eye + + let lkx = pt < USC.T_SUCK_END ? cursorX - x : (pt < USC.T_PROG_START ? 0.0 : 40.0) + let lky = pt < USC.T_SUCK_END ? (cursorY+10) - y : 0.0 + f.lookX = max(-1, min(1, lkx/200)); f.lookY = max(-1, min(1, lky/150)) + + f.fileVisible = pt < USC.T_SUCK_END + f.suck = usSeg(pt, USC.T_SUCK_START, USC.T_SUCK_END) + + // Content alpha values + f.zoneOver = sim.entered >= 0 && pt < USC.T_CHEW_END + f.zoneAlpha = 1 - usSeg(pt, USC.T_CHEW_END, USC.T_CHEW_END + 0.20) + f.textAlpha = f.zoneAlpha * ((x > USC.TEXT_X-40 && isDragging) ? 0.25 : 1.0) + f.barReveal = usEOut(usSeg(pt, USC.T_BAR_IN, USC.T_BAR_IN+0.25)) + * (1 - usSeg(pt, growStart, growStart+0.20)) + f.barAlpha = usSeg(pt, USC.T_BAR_IN+0.05, USC.T_BAR_IN+0.25) + * (1 - usSeg(pt, growStart, growStart+0.20)) + f.progress = usProgressAt(pt, progStart: USC.T_PROG_START, progEnd: progEnd) + f.flash = pt >= progEnd ? sin(.pi * usSeg(pt, progEnd, progEnd+0.30)) : 0 + f.check = pt >= progEnd ? usEBack(usSeg(pt, progEnd, progEnd+0.25)) : 0 + let hoverGreen = f.zoneOver ? 0.22 : 0.0 + var uploadGreen = 0.0 + if pt >= USC.T_PROG_START { + // Grows gradually from 0→0.50 as upload progresses (tied to f.progress) + let baseGreen = f.progress * 0.50 + // Brief flash burst at completion + let flashExtra = pt >= progEnd ? 0.20 * sin(.pi * usSeg(pt, progEnd, progEnd + 0.40)) : 0 + // Fade out as Mochi grows back to choose position + let fadeOut = 1.0 - usSeg(pt, growEnd, growEnd + 0.60) + uploadGreen = (baseGreen + flashExtra) * fadeOut + } + f.greenWash = max(hoverGreen, uploadGreen) + f.chooseAlpha = usSeg(pt, growStart+0.15, growEnd) + + // Mouth rect in island coords (used by drawFile for clipping) + let R = d / 2 / 1.04 + let mc = max(0, min(morph, 1.0)) + let rx = R * (1.04 - 0.04*mc) + let ry = R * (0.97 - 0.03*mc) + let mh = f.mouth * R * mc + let mw = 2*rx - 0.24*R + let mxOff = -mw/2 + let myOff = -ry + 0.10*R + f.mouthRect = USMouthRect( + x: x + mxOff * sx, + y: y + f.hop + myOff * sy, + w: mw * sx, + h: mh * sy + ) + return f + } +} diff --git a/NotchBuddy/Sources/App/UserIdentity.swift b/NotchBuddy/Sources/App/UserIdentity.swift new file mode 100644 index 0000000..7b2bf45 --- /dev/null +++ b/NotchBuddy/Sources/App/UserIdentity.swift @@ -0,0 +1,33 @@ +import Foundation + +/// First name of the macOS account holder, or nil when the account name is not something +/// you would greet someone by. "Théodore Riant" gives "Théodore"; a login handle like +/// "theodoreriant" or "t.riant2" gives nil, because "Hey theodoreriant!" reads worse than +/// a greeting with no name at all. +func resolveUserFirstName() -> String? { + let fullName = NSFullUserName().trimmingCharacters(in: .whitespacesAndNewlines) + guard !fullName.isEmpty, fullName.count <= maxUserFullNameLength else { return nil } + guard !looksLikeLoginHandle(fullName) else { return nil } + + guard let first = fullName.split(separator: " ").first.map(String.init), + !first.isEmpty, + first.allSatisfy(isNamePart) else { return nil } + return first +} + +/// NSFullUserName() falls back to the short account name when the full name is unset, so a +/// single lowercase word, or one carrying digits or separators, is treated as a handle. +private func looksLikeLoginHandle(_ name: String) -> Bool { + guard !name.contains(" ") else { return false } + return name == name.lowercased() || name.contains(where: isHandleMarker) +} + +private func isHandleMarker(_ character: Character) -> Bool { + character.isNumber || "._-@".contains(character) +} + +private func isNamePart(_ character: Character) -> Bool { + character.isLetter || character == "'" || character == "-" +} + +private let maxUserFullNameLength = 32 diff --git a/NotchBuddy/Sources/App/VercelPoller.swift b/NotchBuddy/Sources/App/VercelPoller.swift new file mode 100644 index 0000000..41b2492 --- /dev/null +++ b/NotchBuddy/Sources/App/VercelPoller.swift @@ -0,0 +1,108 @@ +import Foundation + +// MARK: - VercelPoller +// Polls Vercel API for latest deployments every 30s. +// On new terminal deployment: updates integration_vercel task state + AppState.vercelDeployments. + +final class VercelPoller: @unchecked Sendable { + static let shared = VercelPoller() + private var timer: DispatchSourceTimer? + private var lastDeploymentId: String = "" + + private init() {} + + func start() { + guard timer == nil else { return } + let t = DispatchSource.makeTimerSource(queue: .global(qos: .background)) + t.schedule(deadline: .now() + 5, repeating: 30) + t.setEventHandler { [weak self] in self?.poll() } + t.resume() + timer = t + } + + // MARK: - Poll + + private func poll() { + guard let token = KeychainStore.shared.get("vercel-token") else { return } + + // Fetch last 5 terminal deployments + guard let url = URL(string: "https://api.vercel.com/v6/deployments?limit=5") else { return } + var req = URLRequest(url: url, timeoutInterval: 10) + req.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + req.setValue("application/json", forHTTPHeaderField: "Accept") + + URLSession.shared.dataTask(with: req) { [weak self] data, response, error in + guard let self else { return } + let code = (response as? HTTPURLResponse)?.statusCode ?? 0 + guard let data, code == 200 else { return } + guard let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let rawList = json["deployments"] as? [[String: Any]] else { return } + + // Only terminal deployments (READY, ERROR, CANCELED) + let terminal = ["READY", "ERROR", "CANCELED"] + let parsed = rawList + .compactMap { self.parseDeployment($0) } + .filter { terminal.contains($0.state) } + guard !parsed.isEmpty else { return } + + DispatchQueue.main.async { self.handleDeployments(parsed) } + }.resume() + } + + private func parseDeployment(_ d: [String: Any]) -> VercelDeployment? { + guard let uid = d["uid"] as? String, + let name = d["name"] as? String, + let state = d["state"] as? String else { return nil } + + let url = (d["url"] as? String) ?? "" + let createdAtMs = (d["createdAt"] as? Double) ?? 0 + let createdAt = Date(timeIntervalSince1970: createdAtMs / 1000) + + let meta = d["meta"] as? [String: Any] + let commitMessage = meta?["githubCommitMessage"] as? String + ?? meta?["gitlabCommitMessage"] as? String + ?? meta?["bitbucketCommitMessage"] as? String + let branch = meta?["githubCommitRef"] as? String + ?? meta?["gitlabCommitRef"] as? String + ?? meta?["bitbucketBranch"] as? String + + return VercelDeployment(id: uid, projectName: name, url: url, state: state, + createdAt: createdAt, commitMessage: commitMessage, branch: branch) + } + + @MainActor + private func handleDeployments(_ deployments: [VercelDeployment]) { + let appState = AppState.shared + appState.vercelDeployments = deployments + + // Apply project filter (empty = all projects) + let filter = appState.vercelProjectFilter + let filtered = filter.isEmpty ? deployments : deployments.filter { filter.contains($0.projectName) } + guard let latest = filtered.first else { return } + guard latest.id != lastDeploymentId else { return } + lastDeploymentId = latest.id + + guard let idx = appState.tasks.firstIndex(where: { $0.id == "integration_vercel" }) else { return } + let focused = appState.focusId == "integration_vercel" + + appState.tasks[idx].state = latest.isSuccess ? .finished : .error + appState.tasks[idx].steps = [latest.projectName] + + if !focused { + appState.tasks[idx].pillBadge = latest.isSuccess ? .finished : .error + } + SoundEngine.shared.play(latest.isSuccess ? "finish" : "error") + + // Reveal compact island so user sees the badge + NotificationCenter.default.post(name: .hookReveal, object: nil) + + // Auto-clear task state after 60s (deployments list stays) + DispatchQueue.main.asyncAfter(deadline: .now() + 60) { + guard let i = appState.tasks.firstIndex(where: { $0.id == "integration_vercel" }) else { return } + guard appState.tasks[i].state == .finished || appState.tasks[i].state == .error else { return } + appState.tasks[i].state = .idle + appState.tasks[i].steps = [] + appState.tasks[i].pillBadge = nil + } + } +} diff --git a/NotchBuddy/Sources/App/WindowContextCapture.swift b/NotchBuddy/Sources/App/WindowContextCapture.swift new file mode 100644 index 0000000..73bf4cb --- /dev/null +++ b/NotchBuddy/Sources/App/WindowContextCapture.swift @@ -0,0 +1,68 @@ +import AppKit +import ApplicationServices + +// MARK: - Window context capture (M8) + +enum WindowContextCapture { + + /// Returns a PromptContext from the given app (typically the last app active before NotchBuddy). + /// Uses AXUIElement for window title (requires Accessibility permission). + /// Uses AppleScript for browser URL (Safari, Chrome, Arc, Firefox, Edge). + static func captureActive(from app: NSRunningApplication? = NSWorkspace.shared.frontmostApplication) -> PromptContext? { + #if APPSTORE + // App Store: no Accessibility API, no screen capture + return nil + #else + guard let app, let appName = app.localizedName else { return nil } + + let pid = app.processIdentifier + let axApp = AXUIElementCreateApplication(pid) + + // --- Window title --- + var title = "" + var windowRef: CFTypeRef? + if AXUIElementCopyAttributeValue(axApp, kAXFocusedWindowAttribute as CFString, &windowRef) == .success, + let windowRef { + // swiftlint:disable force_cast + let axWindow = windowRef as! AXUIElement + var titleRef: CFTypeRef? + if AXUIElementCopyAttributeValue(axWindow, kAXTitleAttribute as CFString, &titleRef) == .success, + let t = titleRef as? String { + title = t + } + } + + // --- Browser URL --- + let url = browserURL(for: app) + + return .window(appName: appName, title: title, url: url) + #endif + } + + // MARK: - Private + + private static let browserScripts: [String: String] = [ + "com.apple.Safari": + "tell application \"Safari\" to return URL of current tab of front window", + "com.google.Chrome": + "tell application \"Google Chrome\" to return URL of active tab of front window", + "company.thebrowser.Browser": + "tell application \"Arc\" to return URL of active tab of front window", + "org.mozilla.firefox": + "tell application \"Firefox\" to return URL of active tab of front window", + "com.microsoft.edgemac": + "tell application \"Microsoft Edge\" to return URL of active tab of front window", + ] + + private static func browserURL(for app: NSRunningApplication) -> String? { + #if APPSTORE + return nil // No AppleScript in App Store sandbox + #else + guard let bundleId = app.bundleIdentifier, + let script = browserScripts[bundleId] else { return nil } + var error: NSDictionary? + let result = NSAppleScript(source: script)?.executeAndReturnError(&error) + return error == nil ? result?.stringValue : nil + #endif + } +} diff --git a/NotchBuddy/Sources/CoucouKit/BotEngine.swift b/NotchBuddy/Sources/CoucouKit/BotEngine.swift new file mode 100644 index 0000000..0443ef9 --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/BotEngine.swift @@ -0,0 +1,1659 @@ +import Foundation +import CoreGraphics +import QuartzCore +import SwiftUI + +// MARK: - Easing functions (same as prototype: E.out, E.inOut, E.back, E.lin) + +enum Ease { + static func out(_ t: CGFloat) -> CGFloat { 1 - pow(1 - t, 3) } + static func inOut(_ t: CGFloat) -> CGFloat { t < 0.5 ? 4*t*t*t : 1 - pow(-2*t+2, 3)/2 } + static func back(_ t: CGFloat) -> CGFloat { let c1: CGFloat = 1.7; let c3 = c1+1; return 1+c3*pow(t-1,3)+c1*pow(t-1,2) } + static func lin(_ t: CGFloat) -> CGFloat { t } +} + +// MARK: - Tween key: [target, duration_ms, easing] + +struct TweenKey { + let target: CGFloat + let duration: CGFloat // milliseconds + let ease: (CGFloat) -> CGFloat +} + +struct Tween { + let property: String + var keys: [TweenKey] + var keyIndex: Int = 0 + var from: CGFloat + var startTime: Double // CACurrentMediaTime() * 1000 + var onComplete: (() -> Void)? = nil +} + +// MARK: - Particle + +struct Particle { + enum ParticleType { case heart, star, spark, sweat, z } + var type: ParticleType + var x, y, vx, vy: CGFloat + var age: Double // seconds + var life: Double + var rot: CGFloat + var size: CGFloat +} + +// MARK: - Bot state config (mirrors STATES in prototype) + +struct BotStateCfg { + let color: CGColor + let tint: CGFloat + let eye: EyeShape + let badge: BadgeType? + let badgeColor: CGColor + let glow: CGColor + let glowOpacity: CGFloat + let bounces: Bool + let scans: Bool + let breathes: Bool + let zz: Bool + let sweat: Bool + let look: CGPoint? // fixed look direction + let tilt: CGFloat + let sound: String? +} + +enum EyeShape: String { + case pill, wide, dot, line, flat, happy, closed, spiral, heart, star, tired, wink, cup +} + +enum BadgeType { + case dots(CGColor) + case bang(CGColor) + case question(CGColor) + case dot(CGColor) +} + +// MARK: - Mochi track constants (from PISTES.mochi) + +enum MochiConst { + static let eyeW: CGFloat = 0.25 + static let eyeH: CGFloat = 0.27 + static let eyeSp: CGFloat = 0.37 + static let eyeP: CGFloat = -0.12 + static let baseTop = CGColor(red: 0.929, green: 0.929, blue: 0.937, alpha: 1) // #EDEDEF + static let baseBottom = CGColor(red: 0.769, green: 0.773, blue: 0.792, alpha: 1) // #C4C5CA + static let ink = CGColor(red: 0.102, green: 0.082, blue: 0.071, alpha: 1) // #1A1412 + static let miniInk = CGColor(red: 0.063, green: 0.075, blue: 0.102, alpha: 1) // #10131A +} + +// MARK: - Bot state configs + +let BotStates: [BotState: BotStateCfg] = [ + .idle: BotStateCfg( + color: CGColor(red:0.902,green:0.914,blue:0.933,alpha:1), tint:0, + eye:.pill, badge:nil, + badgeColor: .white, glow: CGColor(red:1,green:1,blue:1,alpha:0.35), glowOpacity:0.25, + bounces:false, scans:false, breathes:false, zz:false, sweat:false, + look:nil, tilt:0, sound:nil), + .working: BotStateCfg( + color: CGColor(red:0.231,green:0.620,blue:1,alpha:1), tint:0.72, + eye:.pill, badge:.dots(CGColor(red:0.231,green:0.620,blue:1,alpha:1)), + badgeColor: CGColor(red:0.231,green:0.620,blue:1,alpha:1), + glow: CGColor(red:0.231,green:0.620,blue:1,alpha:1), glowOpacity:0.55, + bounces:false, scans:false, breathes:false, zz:false, sweat:false, + look:nil, tilt:0, sound:"work"), + .thinking: BotStateCfg( + color: CGColor(red:0.545,green:0.361,blue:0.965,alpha:1), tint:0.72, + eye:.pill, badge:.dots(CGColor(red:0.545,green:0.361,blue:0.965,alpha:1)), + badgeColor: CGColor(red:0.545,green:0.361,blue:0.965,alpha:1), + glow: CGColor(red:0.545,green:0.361,blue:0.965,alpha:1), glowOpacity:0.5, + bounces:false, scans:false, breathes:false, zz:false, sweat:false, + look: CGPoint(x:0.55, y:0.55), tilt:0, sound:"think"), + .searching: BotStateCfg( + color: CGColor(red:0.388,green:0.396,blue:0.949,alpha:1), tint:0.72, + eye:.pill, badge:.dots(CGColor(red:0.388,green:0.396,blue:0.949,alpha:1)), + badgeColor: CGColor(red:0.388,green:0.396,blue:0.949,alpha:1), + glow: CGColor(red:0.388,green:0.396,blue:0.949,alpha:1), glowOpacity:0.55, + bounces:false, scans:true, breathes:false, zz:false, sweat:false, + look:nil, tilt:0, sound:"search"), + .approval: BotStateCfg( + color: CGColor(red:0.961,green:0.647,blue:0.141,alpha:1), tint:0.78, + eye:.wide, badge:.bang(CGColor(red:0.961,green:0.647,blue:0.141,alpha:1)), + badgeColor: CGColor(red:0.961,green:0.647,blue:0.141,alpha:1), + glow: CGColor(red:0.961,green:0.647,blue:0.141,alpha:1), glowOpacity:0.6, + bounces:true, scans:false, breathes:false, zz:false, sweat:false, + look:nil, tilt:0, sound:"approval"), + .question: BotStateCfg( + color: CGColor(red:0.133,green:0.827,blue:0.933,alpha:1), tint:0.75, + eye:.pill, badge:.question(CGColor(red:0.133,green:0.827,blue:0.933,alpha:1)), + badgeColor: CGColor(red:0.133,green:0.827,blue:0.933,alpha:1), + glow: CGColor(red:0.133,green:0.827,blue:0.933,alpha:1), glowOpacity:0.55, + bounces:false, scans:false, breathes:false, zz:false, sweat:false, + look:nil, tilt:0.17, sound:"question"), + .error: BotStateCfg( + color: CGColor(red:0.957,green:0.314,blue:0.369,alpha:1), tint:0.78, + eye:.flat, badge:.dot(CGColor(red:0.957,green:0.314,blue:0.369,alpha:1)), + badgeColor: CGColor(red:0.957,green:0.314,blue:0.369,alpha:1), + glow: CGColor(red:0.957,green:0.314,blue:0.369,alpha:1), glowOpacity:0.55, + bounces:false, scans:false, breathes:false, zz:false, sweat:false, + look:nil, tilt:0, sound:"error"), + .finished: BotStateCfg( + color: CGColor(red:0.204,green:0.831,blue:0.600,alpha:1), tint:0.35, + eye:.happy, badge:.dot(CGColor(red:0.204,green:0.831,blue:0.600,alpha:1)), + badgeColor: CGColor(red:0.204,green:0.831,blue:0.600,alpha:1), + glow: CGColor(red:0.204,green:0.831,blue:0.600,alpha:1), glowOpacity:0.5, + bounces:false, scans:false, breathes:false, zz:false, sweat:false, + look:nil, tilt:0, sound:"finish"), + .ratelimit: BotStateCfg( + color: CGColor(red:0.984,green:0.573,blue:0.235,alpha:1), tint:0.72, + eye:.tired, badge:.dot(CGColor(red:0.984,green:0.573,blue:0.235,alpha:1)), + badgeColor: CGColor(red:0.984,green:0.573,blue:0.235,alpha:1), + glow: CGColor(red:0.984,green:0.573,blue:0.235,alpha:1), glowOpacity:0.45, + bounces:false, scans:false, breathes:false, zz:false, sweat:true, + look:nil, tilt:0, sound:"rate"), + .sleeping: BotStateCfg( + color: CGColor(red:0.580,green:0.635,blue:0.722,alpha:1), tint:0.32, + eye:.closed, badge:nil, + badgeColor: .white, + glow: CGColor(red:0.580,green:0.635,blue:0.722,alpha:1), glowOpacity:0.2, + bounces:false, scans:false, breathes:true, zz:true, sweat:false, + look:nil, tilt:0, sound:"sleep"), + .dizzy: BotStateCfg( + color: CGColor(red:0.957,green:0.447,blue:0.714,alpha:1), tint:0.7, + eye:.spiral, badge:nil, + badgeColor: .white, + glow: CGColor(red:0.957,green:0.447,blue:0.714,alpha:1), glowOpacity:0.55, + bounces:false, scans:false, breathes:false, zz:false, sweat:false, + look:nil, tilt:0, sound:"dizzy"), +] + +// MARK: - Bot engine + +@MainActor +final class BotEngine: ObservableObject { + var isMini: Bool = false + var bodyColor: CGColor? = nil // override for mini bots + + // Animation state (mirrors prototype 's' object) + var yaw: CGFloat = 0 + var pitch: CGFloat = 0 + var roll: CGFloat = 0 + var rollTurns: CGFloat = 1 + var tilt: CGFloat = 0 + var open: CGFloat = 1 // eye open amount + var sx: CGFloat = 1 // scale X + var sy: CGFloat = 1 // scale Y + var oy: CGFloat = 0 // offset Y (bounce) + var ox: CGFloat = 0 // offset X (shake) + var tint: CGFloat = 0 + var morph: CGFloat = 0 // morph to rect (for upload bucket) + var hands: CGFloat = 0 + var blush: CGFloat = 0 + var outfit: Outfit = .none + var es: CGFloat = 1 // eye scale + var badgeS: CGFloat = 0 // badge scale + var outfitPresence: CGFloat = 0 // 0=hidden, 1=fully visible (animated) + private var outfitTarget: Outfit = .none + + // Physical spring (hat/pompom lag) — updated in update() + var physDx: CGFloat = 0 // horizontal lag (-1..1) + var physDy: CGFloat = 0 // vertical lag (-1..1) + private var physVx: CGFloat = 0 + private var physVy: CGFloat = 0 + private var prevYaw: CGFloat = 0 + private var prevOy: CGFloat = 0 + private var prevRoll: CGFloat = 0 + + // Targets + var tgYaw: CGFloat = 0 + var tgPitch: CGFloat = 0 + var tgTilt: CGFloat = 0 + var tgSy: CGFloat = 1 + var tgSx: CGFloat = 1 + var tgEs: CGFloat = 1 // eye-scale target (hover love: 1.08, normal: 1) + + // Particle canvas overhang (extra canvas height at top for hearts to fly into) + var particleOverhang: CGFloat = 0 + + // Mouth spring (fraction of R: 0=closed, 0.20=hover, 0.42=open, 0.50=overopen) + var slotH: CGFloat = 0 // current height (fraction of R) + var slotHTarget: CGFloat = 0 // spring target + var slotHVel: CGFloat = 0 // spring velocity (fraction of R / s) + var isChewing: Bool = false // true for ~800ms after gulp swallow + + // Color (animated) + var col: (CGFloat, CGFloat, CGFloat) = (0.902, 0.914, 0.933) // idle + var colT: (CGFloat, CGFloat, CGFloat) = (0.902, 0.914, 0.933) + + // State + var state: BotState = .idle + var cfg: BotStateCfg = BotStates[.idle]! + + // Eye override (emote) + var eyeOverride: EyeShape? = nil + var eyeOverrideUntil: Double = 0 // CACurrentMediaTime() + var permanentEye: EyeShape? = nil // restored after temporary emote/blink expires + var permanentEmote: BotEmote? = nil // stored so doMiniBehaviorLoop can switch on it + var miniNextBehavior: Double = 0 // CACurrentMediaTime() of next periodic mini action + + // Badge animation + var badge: BadgeType? = nil + var badgeKey: String = "none" + var badgeToken: Int = 0 + + // Tweens (keyed by property name) + var tweens: [String: Tween] = [:] + var locks: Set = [] + + // Particles + var particles: [Particle] = [] + + // Look target + var lookX: CGFloat = 0 + var lookY: CGFloat = 0 + + // Timing + var lastTime: Double = CACurrentMediaTime() + var t0: Double = CACurrentMediaTime() - Double.random(in: 0...5) + var nextBlink: Double = CACurrentMediaTime() + 1.5 + Double.random(in: 0...2) + var waveUntil: Double = 0 + var waveStart: Double = 0 // CACurrentMediaTime() when wave animation began + var greetToken: Int = 0 // incremented to invalidate stale greet closures + var lastAmbient: Double = 0 + + // Slap tracking (for dizzy on 3 slaps) + var slapTimes: [Double] = [] + + // Dancing (Apple Music) + var isDancing: Bool = false + var dancingLevel: CGFloat = 0 // 0→1 over 0.3s, 1→0 over 0.5s + + // Mini wandering look (random, ignores mouse) + var miniLookTarget: CGPoint = .zero + var miniLookNextTime: Double = 0 + + // MARK: - Public API + + func setState(_ newState: BotState, force: Bool = false) { + guard state != newState || force else { return } + let prev = state + state = newState + cfg = BotStates[newState]! + colT = cgColorToTuple(cfg.color) + setTarget(key: "tint", value: cfg.tint) + setTarget(key: "tilt", value: cfg.tilt) + setBadge(cfg.badge) + + switch newState { + case .finished: + doRoll(duration: 950, turns: 1) + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in + self?.emit(.spark, count: 5) + } + case .error: + anim("ox", keys: [ + TweenKey(target: 0.08, duration: 50, ease: Ease.out), + TweenKey(target: -0.08, duration: 70, ease: Ease.inOut), + TweenKey(target: 0.05, duration: 70, ease: Ease.inOut), + TweenKey(target: 0, duration: 90, ease: Ease.out), + ]) + case .approval: + anim("oy", keys: [ + TweenKey(target: -0.2, duration: 150, ease: Ease.out), + TweenKey(target: 0, duration: 300, ease: Ease.back), + ]) + case .dizzy: + doRoll(duration: 1300, turns: 2) + case .question: + blink() + case .ratelimit: + emit(.sweat, count: 1) + default: + if prev != .idle || newState != .idle { blink() } + } + } + + func setBadge(_ b: BadgeType?) { + let key = badgeString(b) + guard key != badgeKey else { return } + badgeKey = key + let tok = badgeToken + 1 + badgeToken = tok + anim("badgeS", keys: [TweenKey(target: 0, duration: 90, ease: Ease.inOut)]) + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { [weak self] in + guard let self, tok == self.badgeToken else { return } + self.badge = b + if b != nil { + self.anim("badgeS", keys: [TweenKey(target: 1, duration: 280, ease: Ease.back)]) + } + } + } + + func blink() { + guard !locks.contains("open") else { return } + anim("open", keys: [ + TweenKey(target: 0.06, duration: 70, ease: Ease.inOut), + TweenKey(target: 1, duration: 130, ease: Ease.out), + ]) + } + + func squash() { + physVy += 0.6 + anim("sy", keys: [ + TweenKey(target: 0.78, duration: 70, ease: Ease.out), + TweenKey(target: 1.1, duration: 130, ease: Ease.out), + TweenKey(target: 1, duration: 170, ease: Ease.inOut), + ]) + anim("sx", keys: [ + TweenKey(target: 1.16, duration: 70, ease: Ease.out), + TweenKey(target: 0.95, duration: 130, ease: Ease.out), + TweenKey(target: 1, duration: 170, ease: Ease.inOut), + ]) + } + + // MARK: - Gulp (mailbox swallow) + + func gulp() { + // Open mouth wide for the swallow, then close during chewing + slotHTarget = 0.42 + DispatchQueue.main.asyncAfter(deadline: .now() + 0.46) { [weak self] in + self?.slotHTarget = 0 + self?.isChewing = true + DispatchQueue.main.asyncAfter(deadline: .now() + 0.80) { [weak self] in + self?.isChewing = false + } + } + anim("sy", keys: [ + TweenKey(target: 0.78, duration: 80, ease: Ease.out), + TweenKey(target: 1.18, duration: 130, ease: Ease.out), + TweenKey(target: 1, duration: 220, ease: Ease.back), + ]) + anim("sx", keys: [ + TweenKey(target: 1.28, duration: 80, ease: Ease.out), + TweenKey(target: 0.92, duration: 130, ease: Ease.out), + TweenKey(target: 1, duration: 220, ease: Ease.back), + ]) + blink() + } + + // MARK: - Slap (dizzy mechanic) + + func slap() { + interruptGreet() + guard state != .dizzy else { return } + let now = CACurrentMediaTime() + slapTimes = slapTimes.filter { now - $0 < 1.7 } + slapTimes.append(now) + SoundEngine.shared.play("slap") + squash() + physVy -= 1.2 + physVx += Bool.random() ? 0.7 : -0.7 + if slapTimes.count >= 3 { + slapTimes = [] + NotificationCenter.default.post(name: .botDizzy, object: nil) + } else { + // Annoyed: line eyes for 800ms, annoyed sound after 60ms delay + eyeOverride = .line + eyeOverrideUntil = now + 0.8 + DispatchQueue.main.asyncAfter(deadline: .now() + 0.06) { + SoundEngine.shared.play("annoyed") + } + } + } + + // MARK: - Dancing + + func setDancing(_ dancing: Bool) { + guard isDancing != dancing else { return } + isDancing = dancing + } + + // MARK: - Mini periodic behavior loop + + func doMiniBehaviorLoop() { + switch permanentEmote { + + case .happy: + // Little jump + squash + guard !locks.contains("oy") else { + miniNextBehavior = CACurrentMediaTime() + 0.4 + return + } + anim("oy", keys: [ + TweenKey(target: -0.30, duration: 120, ease: Ease.out), + TweenKey(target: 0.03, duration: 200, ease: Ease.inOut), + TweenKey(target: 0, duration: 160, ease: Ease.back), + ]) + anim("sy", keys: [ + TweenKey(target: 0.82, duration: 80, ease: Ease.out), + TweenKey(target: 1.18, duration: 130, ease: Ease.out), + TweenKey(target: 0.88, duration: 160, ease: Ease.inOut), + TweenKey(target: 1, duration: 200, ease: Ease.back), + ]) + anim("sx", keys: [ + TweenKey(target: 1.15, duration: 80, ease: Ease.out), + TweenKey(target: 0.88, duration: 130, ease: Ease.out), + TweenKey(target: 1.06, duration: 160, ease: Ease.inOut), + TweenKey(target: 1, duration: 200, ease: Ease.back), + ]) + miniNextBehavior = CACurrentMediaTime() + 2.2 + Double.random(in: 0...1.2) + + case .annoyed: + // Rapid head shake + guard !locks.contains("yaw") else { + miniNextBehavior = CACurrentMediaTime() + 0.5 + return + } + anim("yaw", keys: [ + TweenKey(target: -0.65, duration: 50, ease: Ease.out), + TweenKey(target: 0.65, duration: 90, ease: Ease.inOut), + TweenKey(target: -0.5, duration: 80, ease: Ease.inOut), + TweenKey(target: 0.4, duration: 75, ease: Ease.inOut), + TweenKey(target: -0.2, duration: 70, ease: Ease.inOut), + TweenKey(target: 0, duration: 140, ease: Ease.out), + ]) + miniNextBehavior = CACurrentMediaTime() + 3.0 + Double.random(in: 0...2.5) + + case .wink: + // Brief wink: eye closes, head tilts slightly + let now2 = CACurrentMediaTime() + eyeOverride = .wink + eyeOverrideUntil = now2 + 0.55 + anim("tilt", keys: [ + TweenKey(target: 0.13, duration: 100, ease: Ease.out), + TweenKey(target: 0.13, duration: 320, ease: Ease.lin), + TweenKey(target: 0, duration: 200, ease: Ease.inOut), + ]) + miniNextBehavior = CACurrentMediaTime() + 2.2 + Double.random(in: 0...2.0) + + case .love: + // Emit hearts + gentle sway + emit(.heart, count: 2) + anim("tilt", keys: [ + TweenKey(target: -0.1, duration: 180, ease: Ease.out), + TweenKey(target: 0.1, duration: 340, ease: Ease.inOut), + TweenKey(target: 0, duration: 220, ease: Ease.inOut), + ]) + miniNextBehavior = CACurrentMediaTime() + 2.6 + Double.random(in: 0...1.5) + + default: + miniNextBehavior = CACurrentMediaTime() + 3.0 + Double.random(in: 0...2.0) + } + } + + func doRoll(duration: CGFloat, turns: CGFloat) { + roll = 0 + rollTurns = turns + anim("roll", keys: [TweenKey(target: .pi * 2 * turns, duration: duration, ease: Ease.inOut)]) { [weak self] in + self?.roll = 0 + self?.squash() + } + } + + func setOutfit(_ newOutfit: Outfit, animated: Bool = true) { + guard newOutfit != outfitTarget else { return } + outfitTarget = newOutfit + tweens.removeValue(forKey: "outfitPresence") + locks.remove("outfitPresence") + if !animated { + outfit = newOutfit + outfitPresence = newOutfit != .none ? 1 : 0 + } else if newOutfit == .none { + // Exit: fade out then clear outfit + anim("outfitPresence", keys: [TweenKey(target: 0, duration: 180, ease: Ease.inOut)]) { [weak self] in + self?.outfit = .none + } + } else if outfit == .none { + // Enter: set outfit then animate in (Ease.back applied to position offsets in drawing code) + outfit = newOutfit + outfitPresence = 0 + anim("outfitPresence", keys: [TweenKey(target: 1, duration: 350, ease: Ease.inOut)]) { [weak self] in + self?.squash() + } + } else { + // Change: exit old, set new, enter + anim("outfitPresence", keys: [TweenKey(target: 0, duration: 180, ease: Ease.inOut)]) { [weak self] in + guard let self else { return } + self.outfit = newOutfit + self.anim("outfitPresence", keys: [TweenKey(target: 1, duration: 350, ease: Ease.inOut)]) { [weak self] in + self?.squash() + } + } + } + } + + func greet() { + let now = CACurrentMediaTime() + greetToken += 1 + let tok = greetToken + waveStart = now + 0.45 // wave begins at 0.45s + waveUntil = now + 1.55 // wave ends at 1.55s + physVx += 0.2 + + // 0s: happy eyes for full greeting (2s — no gap, no flicker) + eyeOverride = .happy + eyeOverrideUntil = now + 2.0 + anim("oy", keys: [ + TweenKey(target: -0.06, duration: 220, ease: Ease.out), + TweenKey(target: 0.0, duration: 220, ease: Ease.back), + ]) + + // 0.25s: hands out + body squash + sound + DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) { [weak self] in + guard let self, self.greetToken == tok else { return } + self.anim("hands", keys: [TweenKey(target: 1, duration: 280, ease: Ease.out)]) + self.anim("sy", keys: [ + TweenKey(target: 0.95, duration: 100, ease: Ease.out), + TweenKey(target: 1.0, duration: 260, ease: Ease.back), + ]) + self.anim("sx", keys: [ + TweenKey(target: 1.04, duration: 100, ease: Ease.out), + TweenKey(target: 1.0, duration: 260, ease: Ease.back), + ]) + SoundEngine.shared.play("greet") + } + + // 0.55s: first blink + DispatchQueue.main.asyncAfter(deadline: .now() + 0.55) { [weak self] in + guard let self, self.greetToken == tok else { return } + self.blink() + } + + // 1.50s: second blink + DispatchQueue.main.asyncAfter(deadline: .now() + 1.50) { [weak self] in + guard let self, self.greetToken == tok else { return } + self.blink() + } + + // 1.55s: retract hands + DispatchQueue.main.asyncAfter(deadline: .now() + 1.55) { [weak self] in + guard let self, self.greetToken == tok else { return } + self.waveUntil = 0 + self.anim("hands", keys: [TweenKey(target: 0, duration: 200, ease: Ease.inOut)]) + } + + // 1.75s: brief happy eyes then back to normal + DispatchQueue.main.asyncAfter(deadline: .now() + 1.75) { [weak self] in + guard let self, self.greetToken == tok else { return } + self.eyeOverride = .happy + self.eyeOverrideUntil = CACurrentMediaTime() + 0.30 + } + } + + /// Immediately interrupts an in-progress greeting (hands retract in 150 ms). + func interruptGreet() { + guard hands > 0.01 || CACurrentMediaTime() < waveUntil else { return } + greetToken += 1 // invalidate any pending closures + waveUntil = 0 + waveStart = 0 + anim("hands", keys: [TweenKey(target: 0, duration: 150, ease: Ease.inOut)]) + } + + /// Sets a permanent eye expression that survives blinks and transient emotes. + func setPermanentEmote(_ emote: BotEmote?) { + permanentEmote = emote + // .wink fires periodically — don't freeze the eye (normal between winks) + if emote == .wink { + miniNextBehavior = CACurrentMediaTime() + Double.random(in: 0.8...2.5) + return + } + permanentEye = emote.map { emoteEyeShape($0) } + if let eye = permanentEye { + eyeOverride = eye + eyeOverrideUntil = .greatestFiniteMagnitude + } else { + if eyeOverrideUntil == .greatestFiniteMagnitude { + eyeOverride = nil + eyeOverrideUntil = 0 + } + } + // Stagger first periodic behavior so bots don't all fire at once + miniNextBehavior = CACurrentMediaTime() + Double.random(in: 0.8...2.5) + } + + func triggerEmote(_ emote: BotEmote, duration: Double = 1.8, silent: Bool = false) { + let now = CACurrentMediaTime() + eyeOverride = emoteEyeShape(emote) + eyeOverrideUntil = now + duration + + switch emote { + case .love: + anim("blush", keys: [ + TweenKey(target: 1, duration: 300, ease: Ease.out), + TweenKey(target: 1, duration: CGFloat((duration - 0.6) * 1000), ease: Ease.lin), + TweenKey(target: 0, duration: 300, ease: Ease.inOut), + ]) + emit(.heart, count: 4) + anim("oy", keys: [ + TweenKey(target: -0.1, duration: 160, ease: Ease.out), + TweenKey(target: 0, duration: 300, ease: Ease.back), + ]) + case .surprised: + anim("oy", keys: [ + TweenKey(target: -0.3, duration: 140, ease: Ease.out), + TweenKey(target: 0, duration: 380, ease: Ease.back), + ]) + anim("es", keys: [ + TweenKey(target: 1.25, duration: 120, ease: Ease.out), + TweenKey(target: 1, duration: 500, ease: Ease.inOut), + ]) + case .proud: + squash() + emit(.star, count: 5) + anim("tilt", keys: [ + TweenKey(target: -0.14, duration: 220, ease: Ease.out), + TweenKey(target: -0.14, duration: CGFloat((duration - 0.5) * 1000), ease: Ease.lin), + TweenKey(target: 0, duration: 280, ease: Ease.inOut), + ]) + anim("blush", keys: [ + TweenKey(target: 0.7, duration: 250, ease: Ease.out), + TweenKey(target: 0.7, duration: CGFloat((duration - 0.5) * 1000), ease: Ease.lin), + TweenKey(target: 0, duration: 300, ease: Ease.inOut), + ]) + case .wink: + anim("tilt", keys: [ + TweenKey(target: 0.12, duration: 160, ease: Ease.out), + TweenKey(target: 0.12, duration: CGFloat((duration - 0.4) * 1000), ease: Ease.lin), + TweenKey(target: 0, duration: 240, ease: Ease.inOut), + ]) + case .yawn: + anim("sy", keys: [ + TweenKey(target: 1.12, duration: 500, ease: Ease.inOut), + TweenKey(target: 1, duration: 500, ease: Ease.inOut), + ]) + anim("sx", keys: [ + TweenKey(target: 0.94, duration: 500, ease: Ease.inOut), + TweenKey(target: 1, duration: 500, ease: Ease.inOut), + ]) + DispatchQueue.main.asyncAfter(deadline: .now() + 0.7) { [weak self] in + self?.eyeOverride = .closed + self?.emit(.z, count: 2) + } + case .happy: + anim("blush", keys: [ + TweenKey(target: 0.6, duration: 200, ease: Ease.out), + TweenKey(target: 0, duration: 600, ease: Ease.inOut), + ]) + case .annoyed: + eyeOverride = .line + eyeOverrideUntil = now + 0.8 + DispatchQueue.main.asyncAfter(deadline: .now() + 0.06) { + SoundEngine.shared.play("annoyed") + } + } + } + + func emit(_ type: Particle.ParticleType, count: Int) { + for i in 0..= 1 { + tw.from = k.target + tw.keyIndex += 1 + tw.startTime = now * 1000 + if tw.keyIndex >= tw.keys.count { + tweens.removeValue(forKey: key) + locks.remove(key) + tw.onComplete?() + } else { + tweens[key] = tw + } + } else { + tweens[key] = tw + } + } + + // Compute look targets + let t = CGFloat(now - t0) + var ty: CGFloat = lookX * 0.62 + var tp: CGFloat = lookY * 0.5 + + if let fixedLook = cfg.look { + ty = ty * 0.35 + fixedLook.x * 0.55 + tp = tp * 0.3 + fixedLook.y * 0.5 + } + if cfg.scans { + ty = sin(t * 2.6) * 0.6 + tp = -0.06 + } + if state == .sleeping { ty = 0; tp = -0.14 } + if state == .dizzy { ty = sin(t * 9) * 0.25 } + + // Mini bots: override look with random wandering (never follows mouse) + if isMini && cfg.look == nil && !cfg.scans && state != .sleeping && state != .dizzy { + if now > miniLookNextTime { + miniLookTarget = CGPoint( + x: CGFloat.random(in: -0.88...0.88), + y: CGFloat.random(in: -0.55...0.45) + ) + miniLookNextTime = now + Double.random(in: 0.5...2.0) + } + ty = miniLookTarget.x * 0.62 + tp = miniLookTarget.y * 0.5 + } + + tgYaw = ty + tgPitch = tp + tgTilt = cfg.tilt + + // Body sway during greeting wave + if now > waveStart && now < waveUntil { + let wt = CGFloat(now - waveStart) + tgTilt = -0.06 + sin(2 * .pi * 1.2 * wt) * 0.07 + } + + let bounce = cfg.bounces ? -abs(sin(t * 5.2)) * 0.07 : CGFloat(0) + // oy tween can override if not locked + if !locks.contains("oy") { oy += (bounce - oy) * CGFloat(1 - pow(0.0008, dt)) } + + if cfg.breathes { + let amp: CGFloat = isMini ? 0.07 : 0.035 + tgSy = 1 + sin(t * 1.8) * amp + tgSx = 1 - sin(t * 1.8) * amp * 0.57 + } else if isMini { + // Subtle idle pulse (unique phase per engine via t0) + tgSy = 1 + sin(t * 2.2) * 0.04 + tgSx = 1 - sin(t * 2.2) * 0.02 + } else { + tgSy = 1; tgSx = 1 + } + + // Mini bots: periodic dramatic behaviors + if isMini && now > miniNextBehavior { + doMiniBehaviorLoop() + } + + // Smooth look + let kLook = CGFloat(1 - pow(0.0025, dt)) + let kGen = CGFloat(1 - pow(0.0008, dt)) + + if !locks.contains("yaw") { yaw += (tgYaw - yaw) * kLook } + if !locks.contains("pitch") { pitch += (tgPitch - pitch) * kLook } + if !locks.contains("tilt") { tilt += (tgTilt - tilt) * kGen } + if !locks.contains("sy") { sy += (tgSy - sy) * kGen } + if !locks.contains("sx") { sx += (tgSx - sx) * kGen } + if !locks.contains("es") { es += (tgEs - es) * kGen } + + // Animate color + col = mixColor(col, colT, 1 - pow(0.002, dt)) + + // Blink + if now > nextBlink { + if state != .sleeping && state != .dizzy { + blink() + if Double.random(in: 0...1) < 0.22 { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.23) { [weak self] in self?.blink() } + } + } + nextBlink = now + 2.2 + Double.random(in: 0...3.2) + } + + // Clear expired eye override (restore permanent if set) + if eyeOverride != nil && now > eyeOverrideUntil { + eyeOverride = permanentEye + if permanentEye != nil { eyeOverrideUntil = .greatestFiniteMagnitude } + } + + // Ambient particles + if now - lastAmbient > 1.3 { + lastAmbient = now + if cfg.zz { emit(.z, count: 1) } // ZZZ works for mini too + if !isMini && cfg.sweat && Double.random(in: 0...1) < 0.5 { emit(.sweat, count: 1) } + } + + // Age particles + for i in particles.indices { particles[i].age += dt } + particles.removeAll { $0.age >= $0.life } + + // Mouth slot spring — ω₀ ≈ 25 rad/s (T=0.25s), ζ=0.6 (underdamped, slight clack) + let slotOmega: CGFloat = 2 * .pi / 0.25 + let slotZeta: CGFloat = 0.6 + let slotAcc = slotOmega * slotOmega * (slotHTarget - slotH) + - 2 * slotZeta * slotOmega * slotHVel + slotHVel += slotAcc * dtCG + slotH = max(0, slotH + slotHVel * dtCG) + + // Dance level: fade in 0.3s, out 0.5s + let dancingTarget: CGFloat = isDancing ? 1 : 0 + if dancingLevel < dancingTarget { + dancingLevel = min(dancingTarget, dancingLevel + CGFloat(dt) / 0.3) + } else if dancingLevel > dancingTarget { + dancingLevel = max(dancingTarget, dancingLevel - CGFloat(dt) / 0.5) + } + + // Phys spring for hat/pompom lag + let yawVel = (yaw - prevYaw) / CGFloat(dt) + let oyVel = (oy - prevOy) / CGFloat(dt) + let rollVel = (roll - prevRoll) / CGFloat(dt) + prevYaw = yaw; prevOy = oy; prevRoll = roll + // Centrifugal physDx impulse when rigidly rolling with an outfit + let centrifugal: CGFloat = (outfit != .none && outfitPresence > 0.05) ? rollVel * 0.18 : 0 + let tDx = max(-1, min(1, -yawVel * 0.35 - tilt * 2 + centrifugal)) + let tDy = max(-1, min(1, oyVel * 0.50)) + let stiff: CGFloat = 60, damp: CGFloat = 9 + physVx += (stiff * (tDx - physDx) - damp * physVx) * dtCG + physVy += (stiff * (tDy - physDy) - damp * physVy) * dtCG + physDx += physVx * dtCG + physDy += physVy * dtCG + + lastTime = now + } + + // MARK: - Dance transform + + /// Applies a 112-BPM dance bounce/sway around the bottom of the body. + /// Call this on a copy of the GraphicsContext before the three draw passes. + func applyDance(_ ctx: inout GraphicsContext, size: CGSize) { + guard dancingLevel > 0.001 else { return } + let W = size.width, H = size.height, R = W * 0.3 + let px = W / 2 + ox * R + let py = H / 2 + particleOverhang / 2 + oy * R + R * 0.06 + R * 0.88 + let beat = CGFloat(CACurrentMediaTime()) * 112 / 60 + let hop = abs(sin(.pi * beat)), land = pow(1 - hop, 6), l = dancingLevel + ctx.translateBy(x: px + 0.08 * R * sin(.pi * beat) * l, y: py - 0.20 * R * hop * l) + ctx.rotate(by: .radians(0.10 * sin(.pi * beat) * l)) + ctx.scaleBy(x: 1 + 0.045 * land * l, y: 1 - 0.06 * land * l) + ctx.translateBy(x: -px, y: -py) + } + + // MARK: - Draw + + func draw(context: GraphicsContext, size: CGSize) { + let W = size.width + let H = size.height + let R = W * 0.3 + let rx = R * 1.14 + let ry = R * 0.88 + + let cx = W / 2 + ox * R + // particleOverhang shifts the bot body down in canvas coords so hearts can fly into + // the extended canvas above without clipping (BotPlacement compensates with position offset) + let cy = H / 2 + particleOverhang / 2 + oy * R + R * 0.06 + + var ctx = context + ctx.translateBy(x: cx, y: cy) + if tilt != 0 { ctx.rotate(by: .radians(tilt)) } + ctx.scaleBy(x: sx, y: sy) + + // Body path (superellipse for Mochi, morph to rect for upload) + let bodyPath = mochiPath(rx: rx, ry: ry, morph: morph, R: R) + + // Body fill + drawBody(ctx: &ctx, path: bodyPath, R: R, rx: rx, ry: ry, + pumpkinColors: outfit == .pumpkin && !isMini) + + // Blush — always shows a floor proportional to tint (prototype behaviour) + let blushVal = max(blush, tint * 0.5) * (1 - morph) + if blushVal > 0.01 { + drawBlush(ctx: &ctx, path: bodyPath, rx: rx, ry: ry, R: R, blush: blushVal) + } + + // Eyes + drawEyes(ctx: &ctx, path: bodyPath, R: R, rx: rx, ry: ry) + + // Mouth hole — dark pill cutout inside the box face + // Spec: left/right margins 0.10R, top margin 0.08R from box top (-0.94R) + if morph > 0.05 { + let hW = R * 1.80 * morph // hole width = box width (2×1.0R) − 2×0.10R margin + let hH = slotH * R * morph // hole height (spring-animated, scaled by morph) + let hX = -hW / 2 + // Hole Y: box top is -R*0.94 at morph=1, lerped from -R*0.88 at morph=0 + let boxTop = -R * (0.88 + 0.06 * morph) + let hY = boxTop + R * 0.08 * morph // top margin scales with morph + + var boxCtx = ctx + boxCtx.clip(to: bodyPath) // everything clipped inside body + + // Top rim — 1pt white 55% line at box top edge + var rim = Path() + rim.move(to: CGPoint(x: -R * 0.90 * morph, y: boxTop + 1)) + rim.addLine(to: CGPoint(x: R * 0.90 * morph, y: boxTop + 1)) + boxCtx.stroke(rim, with: .color(Color.white.opacity(0.55 * Double(morph))), + style: StrokeStyle(lineWidth: 1, lineCap: .round)) + + // Hole interior — only draw if visibly open + if hH > 0.8 { + let hR = min(hW / 2, hH / 2) // fully rounded when hH < hW (pill shape) + var hole = Path() + hole.addRoundedRect(in: CGRect(x: hX, y: hY, width: hW, height: hH), + cornerSize: CGSize(width: hR, height: hR)) + boxCtx.fill(hole, with: .linearGradient( + Gradient(colors: [Color(red: 0.027, green: 0.031, blue: 0.039), + Color(red: 0.063, green: 0.075, blue: 0.102)]), + startPoint: CGPoint(x: 0, y: hY), + endPoint: CGPoint(x: 0, y: hY + hH) + )) + // Bottom lip — 1pt white 28% highlight + if hH > 4 { + let lipR = min(hR, (hW - 2) / 2) + var lip = Path() + lip.move(to: CGPoint(x: hX + lipR, y: hY + hH - 0.5)) + lip.addLine(to: CGPoint(x: hX + hW - lipR, y: hY + hH - 0.5)) + boxCtx.stroke(lip, with: .color(Color.white.opacity(0.28 * Double(morph))), + style: StrokeStyle(lineWidth: 1, lineCap: .round)) + } + } + } + + // Reset transform for hands, badge, particles which need world coords + // (We'll pass world-space cx/cy to these helpers) + } + + // MARK: - Draw hands behind body (called before draw() so hands appear under Mochi) + + func drawHandsBehind(context: GraphicsContext, size: CGSize) { + guard hands > 0.01, !isMini else { return } + let W = size.width, H = size.height + let R = W * 0.3 + // Only draw hands when Mochi is large enough to be meaningful (not compact/peek) + guard R > 14 else { return } + let rx = R * 1.14 + let ry = R * 0.88 + let cx = W / 2 + ox * R + let cy = H / 2 + particleOverhang / 2 + oy * R + R * 0.06 + + let now = CACurrentMediaTime() + let bodyH = 2 * ry // full body height + + // Hand ellipse half-dims: 0.30×bodyH wide, 0.26×bodyH tall (scaled by hands 0→1) + let hew = 0.30 * ry * hands // half-width + let heh = 0.26 * ry * hands // half-height + + // Body half-dims with current squash scale + let hwB = rx * sx + let hhB = ry * sy + + let isWaving = now >= waveStart && waveStart > 0 && now < waveUntil + + for sd in [-1.0, 1.0] { + var localX: CGFloat + var localY: CGFloat + var handRot: CGFloat = 0 + + if sd > 0 && isWaving { + // Right hand: rise to wave position over first 180ms, then oscillate + let wt = CGFloat(now - waveStart) + let rise = min(1.0, wt / 0.18) + let riseEased: CGFloat = 1 - pow(1 - rise, 3) // easeOut cubic + + // Rest position is lower-side; wave position is upper-side (at eye height) + let restX: CGFloat = hwB * 1.08 + let restY: CGFloat = hhB * 0.70 + let oscX = cos(13 * wt) * 0.06 * bodyH + let oscY = -sin(13 * wt) * 0.14 * bodyH + let waveX: CGFloat = hwB * 1.10 + oscX + let waveY: CGFloat = -hhB * 0.15 + oscY + localX = restX + (waveX - restX) * riseEased + localY = restY + (waveY - restY) * riseEased + handRot = (-0.5 + sin(13 * wt) * 0.35) * riseEased + + } else if sd < 0 && isWaving { + // Left hand: gentle sway at rest position + let wt = CGFloat(now - waveStart) + localX = -hwB * 1.08 + localY = hhB * 0.70 + sin(6 * wt) * 0.04 * bodyH + + } else { + // Rest: lower-side, clearly peeking behind body bottom + localX = CGFloat(sd) * hwB * 1.08 + localY = hhB * 0.70 + } + + // Apply body tilt to get world position + let cosT = cos(tilt), sinT = sin(tilt) + let worldX = cx + cosT * localX - sinT * localY + let worldY = cy + sinT * localX + cosT * localY + + // Draw + var handCtx = context + handCtx.translateBy(x: worldX, y: worldY) + if handRot != 0 { handCtx.rotate(by: .radians(handRot)) } + + let handRect = CGRect(x: -hew, y: -heh, width: hew * 2, height: heh * 2) + var handPath = Path() + handPath.addEllipse(in: handRect) + + // Fill with body material (same gradient as body) + if let bc = bodyColor { + let c0 = mix3(cgColorToTuple(bc), (1, 1, 1), 0.35) + let c1 = cgColorToTuple(bc) + handCtx.fill(handPath, with: .linearGradient( + Gradient(colors: [colorFromTuple(c0), colorFromTuple(c1)]), + startPoint: CGPoint(x: hew * 0.7, y: -heh * 0.85), + endPoint: CGPoint(x: -hew * 0.8, y: heh * 0.9) + )) + } else { + let c0 = cgColorToTuple(MochiConst.baseTop) + let c1 = cgColorToTuple(MochiConst.baseBottom) + handCtx.fill(handPath, with: .linearGradient( + Gradient(colors: [colorFromTuple(c0), colorFromTuple(c1)]), + startPoint: CGPoint(x: hew * 0.7, y: -heh * 0.85), + endPoint: CGPoint(x: -hew * 0.8, y: heh * 0.9) + )) + } + + // Subtle separation border — rgba(0,0,0,0.08) 1pt + handCtx.stroke(handPath, with: .color(Color.black.opacity(0.08)), lineWidth: 1) + } + } + + func drawHandsAndExtras(context: GraphicsContext, size: CGSize) { + let W = size.width + let H = size.height + let R = W * 0.3 + let rx = R * 1.14 + let ry = R * 0.88 + let cx = W / 2 + ox * R + let cy = H / 2 + particleOverhang / 2 + oy * R + R * 0.06 + + // Badge — hidden while morphing to mailbox + if let badge = badge, badgeS > 0.01, morph < 0.25 { + drawBadge(context: context, size: size, badge: badge, R: R, rx: rx, ry: ry, cx: cx, cy: cy) + } + + // Particles + drawParticles(context: context, size: size, R: R, cx: cx, cy: cy) + } + + func drawOutfitBehind(context: GraphicsContext, size: CGSize) { + guard outfit != .none, !isMini else { return } + let W = size.width, H = size.height, R = W * 0.3 + let cx = W / 2 + ox * R + let cy = H / 2 + particleOverhang / 2 + oy * R + R * 0.06 + // Rigid roll: accessories see roll=0 (they rotate with the body via context transform) + let outfitRoll: CGFloat = outfitPresence > 0.05 ? 0 : roll + let mH = MochiH(R: R, yaw: yaw, pitch: pitch, physDx: physDx, physDy: physDy, roll: outfitRoll) + drawOutfitBehindStatic(context: context, outfit: outfit, H: mH, + cx: cx, cy: cy, tilt: tilt, sx: sx, sy: sy, + roll: outfitRoll, morph: morph, isMini: isMini, + presence: outfitPresence, rollTurns: rollTurns) + } + + func drawOutfitFront(context: GraphicsContext, size: CGSize) { + guard outfit != .none, !isMini else { return } + let W = size.width, H = size.height, R = W * 0.3 + let cx = W / 2 + ox * R + let cy = H / 2 + particleOverhang / 2 + oy * R + R * 0.06 + // Rigid roll: accessories see roll=0 (they rotate with the body via context transform) + let outfitRoll: CGFloat = outfitPresence > 0.05 ? 0 : roll + let mH = MochiH(R: R, yaw: yaw, pitch: pitch, physDx: physDx, physDy: physDy, roll: outfitRoll) + drawOutfitFrontStatic(context: context, outfit: outfit, H: mH, + cx: cx, cy: cy, tilt: tilt, sx: sx, sy: sy, + roll: outfitRoll, morph: morph, isMini: isMini, + presence: outfitPresence, rollTurns: rollTurns) + } + + /// World-space center of Mochi's body (used by BotCanvasView for rigid-roll transform) + func bodyCenter(size: CGSize) -> CGPoint { + let W = size.width, R = W * 0.3 + let cx = W / 2 + ox * R + let cy = size.height / 2 + particleOverhang / 2 + oy * R + R * 0.06 + return CGPoint(x: cx, y: cy) + } + + var outfitFollowsRoll: Bool { + switch outfit { + case .sunglasses, .roundGlasses, .bow, .scarf, .pumpkin: return true + default: return false + } + } + + // MARK: - Private draw helpers + + private func mochiPath(rx: CGFloat, ry: CGFloat, morph: CGFloat, R: CGFloat) -> Path { + let n = 72 + let expN: CGFloat = 2.0 / 2.7 + // Target mailbox dims (spec: 1.0R wide, 0.94R tall, 0.42R corner radius) + let tw = R * 1.0 + let th = R * 0.94 + let tr = R * 0.42 + var path = Path() + for i in 0...n { + let a = CGFloat(i) / CGFloat(n) * .pi * 2 + let ca = cos(a), sa = sin(a) + let px0 = rx * (ca >= 0 ? pow(ca, expN) : -pow(-ca, expN)) + let py0 = ry * (sa >= 0 ? pow(sa, expN) : -pow(-sa, expN)) + let px: CGFloat + let py: CGFloat + if morph < 0.005 { + px = px0; py = py0 + } else { + let rr = rrPoint(ca: ca, sa: sa, W: tw, H: th, cr: tr) + px = lerp(px0, rr.x, morph) + py = lerp(py0, rr.y, morph) + } + if i == 0 { path.move(to: CGPoint(x: px, y: py)) } + else { path.addLine(to: CGPoint(x: px, y: py)) } + } + path.closeSubpath() + return path + } + + /// Ray-rounded-rect intersection: find the point on the rounded rect boundary in direction (ca, sa). + private func rrPoint(ca: CGFloat, sa: CGFloat, W: CGFloat, H: CGFloat, cr: CGFloat) -> CGPoint { + let eps: CGFloat = 1e-6 + let kx: CGFloat = ca >= 0 ? 1 : -1 + let ky: CGFloat = sa >= 0 ? 1 : -1 + let cx = kx * (W - cr) + let cy = ky * (H - cr) + + // Try corner arc + let dot = ca * cx + sa * cy + let disc = dot * dot - (cx*cx + cy*cy - cr*cr) + if disc >= 0 { + let t = dot + sqrt(disc) + if t > eps { + let px = ca * t, py = sa * t + if abs(px) >= W - cr - eps && abs(py) >= H - cr - eps { + return CGPoint(x: px, y: py) + } + } + } + + // Horizontal edge |y| = H + if abs(sa) > eps { + let t = (ky * H) / sa + if t > eps { + let x = ca * t + if abs(x) <= W - cr + eps { return CGPoint(x: x, y: ky * H) } + } + } + // Vertical edge |x| = W + if abs(ca) > eps { + let t = (kx * W) / ca + if t > eps { + let y = sa * t + if abs(y) <= H - cr + eps { return CGPoint(x: kx * W, y: y) } + } + } + + return CGPoint(x: kx * W, y: ky * H) + } + + private func drawBody(ctx: inout GraphicsContext, path: Path, R: CGFloat, rx: CGFloat, ry: CGFloat, + pumpkinColors: Bool = false) { + if let bc = bodyColor, !pumpkinColors { + // Mini bots: flat solid fill — no gradient, no reflection, no highlight + ctx.fill(path, with: .color(Color(cgColor: bc))) + } else { + // Main bot: linear gradient body + let top: Color = pumpkinColors ? Color(hex: "#FFA94D") : Color(red: 0.929, green: 0.929, blue: 0.937) + let bot: Color = pumpkinColors ? Color(hex: "#E8590C") : Color(red: 0.769, green: 0.773, blue: 0.792) + ctx.fill(path, with: .linearGradient( + Gradient(colors: [top, bot]), + startPoint: CGPoint(x: rx*0.7, y: -ry*0.85), + endPoint: CGPoint(x: -rx*0.8, y: ry*0.9) + )) + // State tint — fades out as morph increases (mailbox has no tint) + let effectiveTint = tint * (1 - morph) + if effectiveTint > 0.01 { + let tc = colorFromTuple(col) + ctx.fill(path, with: .linearGradient( + Gradient(stops: [ + .init(color: tc.opacity(Double(0.72 * effectiveTint)), location: 0), + .init(color: tc.opacity(0), location: 1) + ]), + startPoint: CGPoint(x: 0, y: ry), + endPoint: CGPoint(x: 0, y: -ry) + )) + } + // Shadow rim + ctx.fill(path, with: .radialGradient( + Gradient(stops: [ + .init(color: .clear, location: 0), + .init(color: .clear, location: 0.6), + .init(color: Color.black.opacity(0.2), location: 1) + ]), + center: .zero, startRadius: R*0.15, endRadius: R*1.25 + )) + // Highlight + ctx.fill(path, with: .radialGradient( + Gradient(stops: [ + .init(color: Color.white.opacity(0.55), location: 0), + .init(color: .clear, location: 1) + ]), + center: CGPoint(x: rx*0.34, y: -ry*0.46), + startRadius: 0, + endRadius: R*0.42 + )) + } + } + + private func drawBlush(ctx: inout GraphicsContext, path: Path, rx: CGFloat, ry: CGFloat, R: CGFloat, blush: CGFloat) { + ctx.clip(to: path) + let yOffset = sin(yaw) * rx * 0.8 + for sd in [-1.0, 1.0] { + let bx = CGFloat(sd) * rx * 0.55 + yOffset + let by = ry * 0.2 + var ellipse = Path() + ellipse.addEllipse(in: CGRect(x: bx - R*0.17, y: by - R*0.1, width: R*0.34, height: R*0.2)) + ctx.fill(ellipse, with: .color(Color(red: 1, green: 0.471, blue: 0.588, opacity: Double(0.5 * blush)))) + } + } + + private func drawEyes(ctx: inout GraphicsContext, path: Path, R: CGFloat, rx: CGFloat, ry: CGFloat) { + var shape = eyeOverride ?? cfg.eye + // Dance: happy eyes in calm states + if isDancing && dancingLevel > 0.15 && !isMini && (state == .idle || state == .finished) { + shape = .happy + } + // In box mode: cup eyes when file over box (slotHTarget set), happy arcs while chewing + if morph > 0.5 { + if isChewing { shape = .happy } + else if slotHTarget > 0.05 || slotH > 0.10 { shape = .cup } + } + ctx.clip(to: path) + + // Build eye frames: use mEyeFrames for position/foreshortening, but keep roll in eyePitch + // When an outfit is rigidly rotating, the whole body turns — eyes do NOT add roll + let rigidRoll = outfit != .none && outfitPresence > 0.05 + let mH = MochiH(R: R, yaw: yaw, pitch: pitch) + for f in mEyeFrames(mH) { + // Re-derive pitch with roll for the roll-through effect (illusion, outfit=none only) + var eyePitch = MochiConst.eyeP + pitch + (rigidRoll ? 0 : roll) + eyePitch = ((eyePitch + .pi).truncatingRemainder(dividingBy: .pi*2) + .pi*2).truncatingRemainder(dividingBy: .pi*2) - .pi + let cp = cos(eyePitch) + let eyeYaw = f.sd * MochiConst.eyeSp + yaw + guard cos(eyeYaw) * cp > 0.04 else { continue } + + let ey = f.y + (morph > 0 ? ry * 0.14 * morph : 0) + let fx = lerp(f.fx, 1, morph * 0.7) + let fy = lerp(f.fy, 1, morph * 0.7) + + let eyeMult: CGFloat = isMini ? 1.9 : 1.0 + let ew = R * MochiConst.eyeW * es * eyeMult + let eh = R * MochiConst.eyeH * es * eyeMult + + var eyeCtx = ctx + eyeCtx.translateBy(x: f.x, y: ey) + eyeCtx.scaleBy(x: fx, y: fy) + drawEyeShape(ctx: &eyeCtx, shape: shape, w: ew, h: eh, open: open, sd: f.sd, R: R) + } + } + + private func drawEyeShape(ctx: inout GraphicsContext, shape: EyeShape, w: CGFloat, h: CGFloat, open: CGFloat, sd: CGFloat, R: CGFloat) { + let ink = isMini ? Color(cgColor: MochiConst.miniInk) : Color(cgColor: MochiConst.ink) + let now = CGFloat(CACurrentMediaTime()) + + switch shape { + case .wide: + drawEyeShape(ctx: &ctx, shape: .pill, w: w*1.16, h: h*1.12, open: open, sd: sd, R: R) + + case .pill: + let hh = max(h * open, w * 0.3) + var p = Path() + p.addRoundedRect(in: CGRect(x: -w/2, y: -hh/2, width: w, height: hh), + cornerSize: CGSize(width: min(w/2, hh/2), height: min(w/2, hh/2))) + ctx.fill(p, with: .color(ink)) + + case .dot: + var p = Path() + p.addEllipse(in: CGRect(x: -w*0.45, y: -w*0.45, width: w*0.9, height: w*0.9)) + ctx.fill(p, with: .color(ink)) + + case .line: + ctx.rotate(by: .radians(-sd * 0.2)) + var p = Path() + p.addRoundedRect(in: CGRect(x: -w*0.78, y: -w*0.21, width: w*1.56, height: w*0.42), + cornerSize: CGSize(width: w*0.21, height: w*0.21)) + ctx.fill(p, with: .color(ink)) + + case .flat: + var p = Path() + p.addRoundedRect(in: CGRect(x: -w*0.72, y: -w*0.2, width: w*1.44, height: w*0.4), + cornerSize: CGSize(width: w*0.2, height: w*0.2)) + ctx.fill(p, with: .color(ink)) + + case .happy: + var p = Path() + p.addArc(center: CGPoint(x: 0, y: h*0.18), radius: w*0.82, + startAngle: .degrees(180 + 12), endAngle: .degrees(180 - 12), clockwise: true) + ctx.stroke(p, with: .color(ink), style: StrokeStyle(lineWidth: w*0.5, lineCap: .round)) + + case .closed: + var p = Path() + p.addArc(center: CGPoint(x: 0, y: -h*0.08), radius: w*0.78, + startAngle: .degrees(15), endAngle: .degrees(165), clockwise: false) + ctx.stroke(p, with: .color(ink), style: StrokeStyle(lineWidth: w*0.36, lineCap: .round)) + + case .spiral: + var p = Path() + var a: CGFloat = 0 + while a < 4.4 * .pi { + let r = w * 0.06 + a * w * 0.058 + let aa = a + now * 9 * sd + let px = cos(aa) * r + let py = sin(aa) * r + if a == 0 { p.move(to: CGPoint(x: px, y: py)) } + else { p.addLine(to: CGPoint(x: px, y: py)) } + a += 0.2 + } + ctx.stroke(p, with: .color(ink), style: StrokeStyle(lineWidth: w*0.22, lineCap: .round)) + + case .heart: + let heartPath = heartShape(size: w * 1.2) + ctx.fill(heartPath, with: .color(Color(hex: "#FF4D6D"))) + + case .star: + ctx.rotate(by: .radians(now * 1.5 * sd)) + let starPath = starShape(outer: w * 1.05, inner: w * 0.46) + ctx.fill(starPath, with: .color(Color(hex: "#F7B32B"))) + + case .tired: + var p1 = Path() + p1.addRoundedRect(in: CGRect(x: -w/2, y: -h*0.02, width: w, height: h*0.38), + cornerSize: CGSize(width: w/2, height: w/2)) + ctx.fill(p1, with: .color(ink)) + var p2 = Path() + p2.addRoundedRect(in: CGRect(x: -w*0.62, y: -h*0.1, width: w*1.24, height: w*0.22), + cornerSize: CGSize(width: w*0.11, height: w*0.11)) + ctx.fill(p2, with: .color(ink)) + + case .wink: + if sd < 0 { + let hh = max(h * open, w * 0.3) + var p = Path() + p.addRoundedRect(in: CGRect(x: -w/2, y: -hh/2, width: w, height: hh), + cornerSize: CGSize(width: min(w/2,hh/2), height: min(w/2,hh/2))) + ctx.fill(p, with: .color(ink)) + } else { + var p = Path() + p.addArc(center: CGPoint(x: 0, y: h*0.18), radius: w*0.82, + startAngle: .degrees(180+12), endAngle: .degrees(180-12), clockwise: true) + ctx.stroke(p, with: .color(ink), style: StrokeStyle(lineWidth: w*0.5, lineCap: .round)) + } + + case .cup: + // Flat top, rounded bottom corners (like a cup / U-shape) + let hh = max(h * open, w * 0.3) + let cr = min(w / 2, hh / 2) // bottom corner radius + var p = Path() + p.move(to: CGPoint(x: -w/2, y: -hh/2)) + p.addLine(to: CGPoint(x: w/2, y: -hh/2)) + p.addLine(to: CGPoint(x: w/2, y: hh/2 - cr)) + p.addQuadCurve(to: CGPoint(x: w/2 - cr, y: hh/2), + control: CGPoint(x: w/2, y: hh/2)) + p.addLine(to: CGPoint(x: -w/2 + cr, y: hh/2)) + p.addQuadCurve(to: CGPoint(x: -w/2, y: hh/2 - cr), + control: CGPoint(x: -w/2, y: hh/2)) + p.closeSubpath() + ctx.fill(p, with: .color(ink)) + } + } + + private func drawBadge(context: GraphicsContext, size: CGSize, badge: BadgeType, R: CGFloat, rx: CGFloat, ry: CGFloat, cx: CGFloat, cy: CGFloat) { + let bs = badgeS * (isMini ? 1.25 : 1) + let bx = cx - R * 0.72 * sx + let by = cy - R * 0.72 * sy + var ctx = context + ctx.translateBy(x: bx, y: by) + ctx.scaleBy(x: bs, y: bs) + let now = CGFloat(CACurrentMediaTime()) + + switch badge { + case .dots(let col): + if isMini { + // Mini: animated pulsing dot + let phase = (now * 2.4).truncatingRemainder(dividingBy: 1) + let dotR = R * 0.22 * (1 + 0.25 * sin(phase * .pi * 2)) + var outer = Path() + outer.addEllipse(in: CGRect(x: -R*0.2, y: -R*0.2, width: R*0.4, height: R*0.4)) + ctx.fill(outer, with: .color(.black)) + var dot = Path() + dot.addEllipse(in: CGRect(x: -dotR, y: -dotR, width: dotR*2, height: dotR*2)) + ctx.fill(dot, with: .color(Color(cgColor: col))) + } else { + // Pill badge with animated dots (prototype style) + let pw: CGFloat = R * 0.72 + let ph: CGFloat = R * 0.36 + var pill = Path() + pill.addRoundedRect(in: CGRect(x: -pw/2, y: -ph/2, width: pw, height: ph), + cornerSize: CGSize(width: ph/2, height: ph/2)) + ctx.fill(pill, with: .color(Color(cgColor: col))) + for i in 0..<3 { + let phase = ((now * 2.4 - CGFloat(i) * 0.22).truncatingRemainder(dividingBy: 1) + 1).truncatingRemainder(dividingBy: 1) + let dotR = R * 0.055 * (1 + 0.4 * max(0, sin(phase * .pi * 2))) + var dot = Path() + dot.addEllipse(in: CGRect(x: (CGFloat(i)-1)*R*0.18 - dotR, y: -dotR, width: dotR*2, height: dotR*2)) + ctx.fill(dot, with: .color(.white)) + } + } + + case .bang(let col), .question(let col): + var ring = Path() + ring.addEllipse(in: CGRect(x: -R*0.3, y: -R*0.3, width: R*0.6, height: R*0.6)) + ctx.fill(ring, with: .color(.black)) + var inner = Path() + inner.addEllipse(in: CGRect(x: -R*0.23, y: -R*0.23, width: R*0.46, height: R*0.46)) + ctx.fill(inner, with: .color(Color(cgColor: col))) + if !isMini { + let text = badge == .bang(col) ? "!" : "?" + ctx.draw(Text(text).font(.system(size: R*0.32, weight: .black)).foregroundColor(.white), + at: CGPoint(x: 0, y: R*0.02)) + } + + case .dot(let col): + var outer = Path() + outer.addEllipse(in: CGRect(x: -R*0.2, y: -R*0.2, width: R*0.4, height: R*0.4)) + ctx.fill(outer, with: .color(.black)) + var inner = Path() + inner.addEllipse(in: CGRect(x: -R*0.135, y: -R*0.135, width: R*0.27, height: R*0.27)) + ctx.fill(inner, with: .color(Color(cgColor: col))) + } + } + + private func drawParticles(context: GraphicsContext, size: CGSize, R: CGFloat, cx: CGFloat, cy: CGFloat) { + for p in particles { + guard p.age > 0 else { continue } + let k = CGFloat(p.age / p.life) + let a = k < 0.2 ? k / 0.2 : 1 - (k - 0.2) / 0.8 + let px = cx + (p.x + p.vx * CGFloat(p.age)) * R * 1.3 + let py = cy + (p.y + p.vy * CGFloat(p.age)) * R * 1.3 + let sz = R * p.size * (1 + k * 0.4) + + var pctx = context + pctx.translateBy(x: px, y: py) + pctx.opacity = Double(min(max(a, 0), 1)) + + switch p.type { + case .heart: + pctx.rotate(by: .radians(sin(CGFloat(p.age) * 6) * 0.3)) + pctx.fill(heartShape(size: sz), with: .color(Color(hex: "#FF4D6D"))) + case .star: + pctx.rotate(by: .radians(p.rot + CGFloat(p.age) * 2)) + pctx.fill(starShape(outer: sz, inner: sz*0.45), with: .color(Color(hex: "#F7B32B"))) + case .spark: + pctx.rotate(by: .radians(p.rot)) + pctx.fill(starShape(outer: sz*0.8, inner: sz*0.18), with: .color(.white)) + case .sweat: + var drop = Path() + drop.move(to: CGPoint(x: 0, y: -sz)) + drop.addQuadCurve(to: CGPoint(x: 0, y: sz*0.6), control: CGPoint(x: sz*0.8, y: sz*0.2)) + drop.addQuadCurve(to: CGPoint(x: 0, y: -sz), control: CGPoint(x: -sz*0.8, y: sz*0.2)) + pctx.fill(drop, with: .color(Color(hex: "#7CC7FF"))) + case .z: + pctx.draw(Text("z").font(.system(size: sz*1.9, weight: .bold)).foregroundColor(Color(red: 0.82, green: 0.86, blue: 0.92)), + at: .zero) + } + } + } + + // MARK: - Tween helpers + + func anim(_ key: String, keys: [TweenKey], onComplete: (() -> Void)? = nil) { + let current = getProperty(key) + tweens[key] = Tween(property: key, keys: keys, keyIndex: 0, + from: current, startTime: CACurrentMediaTime() * 1000, + onComplete: onComplete) + locks.insert(key) + } + + private func setTarget(key: String, value: CGFloat) { + guard !locks.contains(key) else { return } + switch key { + case "tint": tint += (value - tint) // immediate target, smoothed in update + case "tilt": tgTilt = value + default: break + } + } + + private func setProperty(_ key: String, value: CGFloat) { + switch key { + case "yaw": yaw = value + case "pitch": pitch = value + case "roll": roll = value + case "tilt": tilt = value + case "open": open = value + case "sx": sx = value + case "sy": sy = value + case "oy": oy = value + case "ox": ox = value + case "tint": tint = value + case "morph": morph = value + case "hands": hands = value + case "blush": blush = value + case "es": es = value + case "badgeS": badgeS = value + case "outfitPresence": outfitPresence = value + default: break + } + } + + private func getProperty(_ key: String) -> CGFloat { + switch key { + case "yaw": return yaw + case "pitch": return pitch + case "roll": return roll + case "tilt": return tilt + case "open": return open + case "sx": return sx + case "sy": return sy + case "oy": return oy + case "ox": return ox + case "tint": return tint + case "morph": return morph + case "hands": return hands + case "blush": return blush + case "es": return es + case "badgeS": return badgeS + case "outfitPresence": return outfitPresence + default: return 0 + } + } +} + +// MARK: - Math helpers + +func lerp(_ a: CGFloat, _ b: CGFloat, _ t: CGFloat) -> CGFloat { a + (b-a) * t } +private func clamp(_ v: CGFloat, _ lo: CGFloat, _ hi: CGFloat) -> CGFloat { max(lo, min(hi, v)) } + +private func cgColorToTuple(_ c: CGColor) -> (CGFloat, CGFloat, CGFloat) { + guard let comps = c.components, comps.count >= 3 else { return (1,1,1) } + return (comps[0], comps[1], comps[2]) +} + +private func mix3(_ a: (CGFloat,CGFloat,CGFloat), _ b: (CGFloat,CGFloat,CGFloat), _ t: CGFloat) -> (CGFloat,CGFloat,CGFloat) { + (lerp(a.0,b.0,t), lerp(a.1,b.1,t), lerp(a.2,b.2,t)) +} + +private func mixColor(_ a: (CGFloat,CGFloat,CGFloat), _ b: (CGFloat,CGFloat,CGFloat), _ t: CGFloat) -> (CGFloat,CGFloat,CGFloat) { + mix3(a, b, t) +} + +private func colorFromTuple(_ t: (CGFloat,CGFloat,CGFloat)) -> Color { + Color(red: Double(t.0), green: Double(t.1), blue: Double(t.2)) +} + +private func badgeString(_ b: BadgeType?) -> String { + guard let b else { return "none" } + func hex(_ c: CGColor) -> String { + guard let k = c.components, k.count >= 3 else { return "?" } + return "\(Int(k[0]*255)).\(Int(k[1]*255)).\(Int(k[2]*255))" + } + switch b { + case .dots(let c): return "dots-\(hex(c))" + case .bang(let c): return "bang-\(hex(c))" + case .question(let c): return "q-\(hex(c))" + case .dot(let c): return "dot-\(hex(c))" + } +} + +private func emoteEyeShape(_ e: BotEmote) -> EyeShape { + switch e { + case .love: return .heart + case .surprised: return .dot + case .proud: return .star + case .wink: return .wink + case .yawn: return .tired + case .happy: return .happy + case .annoyed: return .line + } +} + +// MARK: - Shape helpers + +private func heartShape(size s: CGFloat) -> Path { + var p = Path() + p.move(to: CGPoint(x: 0, y: s * 0.38)) + p.addCurve(to: CGPoint(x: 0, y: -s * 0.38), + control1: CGPoint(x: -s * 1.05, y: -s * 0.15), + control2: CGPoint(x: -s * 0.5, y: -s * 0.95)) + p.addCurve(to: CGPoint(x: 0, y: s * 0.38), + control1: CGPoint(x: s * 0.5, y: -s * 0.95), + control2: CGPoint(x: s * 1.05, y: -s * 0.15)) + p.closeSubpath() + return p +} + +private func starShape(outer ro: CGFloat, inner ri: CGFloat) -> Path { + var p = Path() + for i in 0..<10 { + let r = i.isMultiple(of: 2) ? ro : ri + let a = -.pi/2 + CGFloat(i) * .pi/5 + let pt = CGPoint(x: cos(a) * r, y: sin(a) * r) + if i == 0 { p.move(to: pt) } else { p.addLine(to: pt) } + } + p.closeSubpath() + return p +} + +// Equatable for BadgeType (needed for comparing) +extension BadgeType: Equatable { + static func == (lhs: BadgeType, rhs: BadgeType) -> Bool { + switch (lhs, rhs) { + case (.dots, .dots): return true + case (.bang, .bang): return true + case (.question, .question): return true + case (.dot, .dot): return true + default: return false + } + } +} diff --git a/NotchBuddy/Sources/CoucouKit/ColorHex.swift b/NotchBuddy/Sources/CoucouKit/ColorHex.swift new file mode 100644 index 0000000..161a5aa --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/ColorHex.swift @@ -0,0 +1,43 @@ +import SwiftUI +import CoreGraphics + +// Hex color helpers shared by the Mac app and the iPhone app. + +// MARK: - Color from hex string + +extension Color { + init(hex: String) { + let h = hex.trimmingCharacters(in: CharacterSet(charactersIn: "#")) + let val = UInt64(h, radix: 16) ?? 0 + let r = Double((val >> 16) & 0xFF) / 255 + let g = Double((val >> 8) & 0xFF) / 255 + let b = Double( val & 0xFF) / 255 + self.init(red: r, green: g, blue: b) + } +} + +// MARK: - CGColor from hex string + +func cgColorFromHex(_ hex: String) -> CGColor? { + let h = hex.trimmingCharacters(in: CharacterSet(charactersIn: "#")) + guard let val = UInt64(h, radix: 16) else { return nil } + let r = CGFloat((val >> 16) & 0xFF) / 255 + let g = CGFloat((val >> 8) & 0xFF) / 255 + let b = CGFloat( val & 0xFF) / 255 + return CGColor(red: r, green: g, blue: b, alpha: 1) +} + +extension CGColor { + static func from(_ hex: String) -> CGColor { + cgColorFromHex(hex) ?? CGColor(gray: 0.5, alpha: 1) + } +} + +#if !os(macOS) +// CGColor.white / .black / .clear only exist on macOS; BotEngine uses them. +extension CGColor { + static var white: CGColor { CGColor(gray: 1, alpha: 1) } + static var black: CGColor { CGColor(gray: 0, alpha: 1) } + static var clear: CGColor { CGColor(gray: 0, alpha: 0) } +} +#endif diff --git a/NotchBuddy/Sources/CoucouKit/DiffEngine.swift b/NotchBuddy/Sources/CoucouKit/DiffEngine.swift new file mode 100644 index 0000000..2b71f00 --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/DiffEngine.swift @@ -0,0 +1,301 @@ +import Foundation + +// MARK: - Types + +struct DiffLine: Equatable { + enum Kind: Equatable { case context, added, removed } + var kind: Kind + var text: String + var origLine: Int // 1-based; -1 for pure adds + var newLine: Int // 1-based; -1 for pure removes +} + +struct DiffHunk: Equatable { + var origStart: Int + var newStart: Int + var lines: [DiffLine] +} + +struct FileDiff: Equatable { + var id: Int = 0 // stable identifier assigned by AppState.appendSessionDiff + var path: String + var added: Int + var removed: Int + var hunks: [DiffHunk] + var tooLarge: Bool + var isNewFile: Bool // true when produced by DiffEngine.fromNew (Write tool) + + var name: String { URL(fileURLWithPath: path).lastPathComponent } + + static let maxBytes = 200 * 1024 + static let maxLines = 4000 +} + +// MARK: - DiffEngine + +enum DiffEngine { + + // MARK: Public API + + static func fromEdit(old: String, new: String, path: String) -> FileDiff { + // Size guard + if old.utf8.count + new.utf8.count > FileDiff.maxBytes { + return countFallback(old: old, new: new, path: path, tooLarge: true) + } + let oldLines = splitLines(old) + let newLines = splitLines(new) + if oldLines.count + newLines.count > FileDiff.maxLines { + return countFallback(old: old, new: new, path: path, tooLarge: true) + } + // LCS is O(m*n) — bail out before quadratic blowup + if oldLines.count * newLines.count > 1_000_000 { + return countFallback(old: old, new: new, path: path, tooLarge: true) + } + let flat = buildDiffLines(oldLines: oldLines, newLines: newLines) + let hunks = buildHunks(from: flat, context: 3) + let added = flat.filter { $0.kind == .added }.count + let removed = flat.filter { $0.kind == .removed }.count + return FileDiff(path: path, added: added, removed: removed, hunks: hunks, tooLarge: false, isNewFile: false) + } + + static func fromNew(content: String, path: String) -> FileDiff { + // Size guard (same limits as fromEdit) + if content.utf8.count > FileDiff.maxBytes { + let lineCount = content.components(separatedBy: "\n").count + return FileDiff(path: path, added: lineCount, removed: 0, hunks: [], tooLarge: true, isNewFile: true) + } + let lines = splitLines(content) + if lines.count > FileDiff.maxLines { + return FileDiff(path: path, added: lines.count, removed: 0, hunks: [], tooLarge: true, isNewFile: true) + } + let diffLines = lines.enumerated().map { (i, text) in + DiffLine(kind: .added, text: text, origLine: -1, newLine: i + 1) + } + let hunk = diffLines.isEmpty ? nil : DiffHunk(origStart: 0, newStart: 1, lines: diffLines) + return FileDiff( + path: path, + added: diffLines.count, + removed: 0, + hunks: hunk.map { [$0] } ?? [], + tooLarge: false, + isNewFile: true + ) + } + + // MARK: - Line splitting + + private static func splitLines(_ text: String) -> [String] { + // Normalize CRLF → LF + let normalized = text.replacingOccurrences(of: "\r\n", with: "\n") + var parts = normalized.components(separatedBy: "\n") + // Drop trailing empty element that results from a trailing newline + if parts.last == "" { parts.removeLast() } + return parts + } + + // MARK: - LCS-based diff + + private static func buildDiffLines(oldLines: [String], newLines: [String]) -> [DiffLine] { + let m = oldLines.count + let n = newLines.count + + // Build LCS DP table + // dp[i][j] = LCS length of oldLines[0.. 0 && j > 0 { + if oldLines[i - 1] == newLines[j - 1] { + matches.append((i - 1, j - 1)) + i -= 1; j -= 1 + } else if dp[i - 1][j] >= dp[i][j - 1] { + i -= 1 + } else { + j -= 1 + } + } + matches.reverse() + + // Build flat diff from LCS pairs + var result: [DiffLine] = [] + var prevOld = -1 + var prevNew = -1 + + for (oi, ni) in matches { + // Removed lines between last match and this old match + for k in (prevOld + 1).. [DiffHunk] { + guard !lines.isEmpty else { return [] } + + // Find indices of changed lines + var changedIndices: [Int] = [] + for (i, line) in lines.enumerated() { + if line.kind != .context { changedIndices.append(i) } + } + guard !changedIndices.isEmpty else { return [] } + + // Expand ±context around each changed line + let ranges: [(Int, Int)] = changedIndices.map { + (max(0, $0 - context), min(lines.count - 1, $0 + context)) + } + + // Merge overlapping ranges + var merged: [(Int, Int)] = [] + for r in ranges { + if let last = merged.last, r.0 <= last.1 + 1 { + merged[merged.count - 1] = (last.0, max(last.1, r.1)) + } else { + merged.append(r) + } + } + + // Build hunks + var hunks: [DiffHunk] = [] + for (start, end) in merged { + let hunkLines = Array(lines[start...end]) + let origStart = hunkLines.first(where: { $0.origLine > 0 })?.origLine ?? 1 + let newStart = hunkLines.first(where: { $0.newLine > 0 })?.newLine ?? 1 + hunks.append(DiffHunk(origStart: origStart, newStart: newStart, lines: hunkLines)) + } + return hunks + } + + // MARK: - Count fallback (tooLarge) + + private static func countFallback(old: String, new: String, path: String, tooLarge: Bool) -> FileDiff { + let oldLines = old.components(separatedBy: "\n") + let newLines = new.components(separatedBy: "\n") + let oldSet = Set(oldLines) + let newSet = Set(newLines) + let added = newLines.filter { !$0.isEmpty && !oldSet.contains($0) }.count + let removed = oldLines.filter { !$0.isEmpty && !newSet.contains($0) }.count + return FileDiff(path: path, added: added, removed: removed, hunks: [], tooLarge: tooLarge, isNewFile: false) + } + + // MARK: - toOneLine + + /// Converts a possibly multi-line, markdown-formatted string to a single line of plain text. + /// Uses only the first non-empty paragraph (stops at blank line, horizontal rule, or table row). + /// Strips `**`, `__`, backticks, leading `#`, and leading bullet markers. + static func toOneLine(_ text: String, maxChars: Int = 200) -> String { + let lines = text.components(separatedBy: "\n") + + // Split into paragraphs. Separators: blank line, HR (3+ repeated -/*/_ chars), table row (starts with |). + var paragraphs: [[String]] = [] + var current: [String] = [] + for line in lines { + let trimmed = line.trimmingCharacters(in: .whitespaces) + let isHR = trimmed.count >= 3 && (trimmed.allSatisfy { $0 == "-" } || + trimmed.allSatisfy { $0 == "*" } || + trimmed.allSatisfy { $0 == "_" }) + let isSep = trimmed.isEmpty || isHR || trimmed.hasPrefix("|") + if isSep { + if !current.isEmpty { paragraphs.append(current); current = [] } + } else { + current.append(line) + } + } + if !current.isEmpty { paragraphs.append(current) } + + // Find first paragraph that yields non-empty text after cleaning. + for paraLines in paragraphs { + var s = paraLines.joined(separator: "\n") + s = s.replacingOccurrences(of: "**", with: "") + s = s.replacingOccurrences(of: "__", with: "") + s = s.replacingOccurrences(of: "`", with: "") + let processed: [String] = s.components(separatedBy: "\n").compactMap { line in + var l = line + while l.hasPrefix("#") { l = String(l.dropFirst()) } + l = l.trimmingCharacters(in: .whitespaces) + // Strip leading bullet markers: -, *, •, or N. (ordered list) + if l.hasPrefix("- ") || l.hasPrefix("* ") || l.hasPrefix("• ") { + l = String(l.dropFirst(2)) + } else if let m = l.range(of: #"^\d+\.\s+"#, options: .regularExpression) { + l = String(l[m.upperBound...]) + } + let trimmed = l.trimmingCharacters(in: .whitespaces) + return trimmed.isEmpty ? nil : trimmed + } + let joined = processed.joined(separator: " ") + let collapsed = joined.components(separatedBy: .whitespaces) + .filter { !$0.isEmpty } + .joined(separator: " ") + if !collapsed.isEmpty { return String(collapsed.prefix(maxChars)) } + } + return "" + } +} + +// MARK: - String diff step encoding + +public extension String { + /// Private-use character used as the diff step marker prefix. + static let diffStepMarker = "\u{E001}" + + /// True if this step string encodes a file diff. + var isDiffStep: Bool { hasPrefix(Self.diffStepMarker) } + + /// Parses a diff step string. + /// Format: `"\u{E001}\t::"` + func parseDiffStep() -> (filename: String, added: Int, removed: Int, diffId: Int)? { + guard isDiffStep else { return nil } + let body = String(dropFirst()) // drop the marker character + guard let tabIdx = body.firstIndex(of: "\t") else { return nil } + let filename = String(body[body.startIndex.. String { + "\(diffStepMarker)\(filename)\t\(added):\(removed):\(diffId)" + } +} diff --git a/NotchBuddy/Sources/CoucouKit/IslandScreenGeometry.swift b/NotchBuddy/Sources/CoucouKit/IslandScreenGeometry.swift new file mode 100644 index 0000000..a06f8a4 --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/IslandScreenGeometry.swift @@ -0,0 +1,42 @@ +import Foundation + +/// Resting island dimensions, using a physical notch only when the screen has one. +struct IslandScreenGeometry { + static let fallbackNotchWidth: CGFloat = 184 + private static let noNotchWidth: CGFloat = 80 + private static let noNotchHeight: CGFloat = 24 + + let hasNotch: Bool + let width: CGFloat + let height: CGFloat + + init(screenWidth: CGFloat, safeAreaTop: CGFloat, + auxiliaryLeftWidth: CGFloat?, auxiliaryRightWidth: CGFloat?, + menuBarHeight: CGFloat) { + hasNotch = safeAreaTop > 0 + if hasNotch { + if let left = auxiliaryLeftWidth, let right = auxiliaryRightWidth { + let measuredWidth = screenWidth - left - right + width = measuredWidth > 0 && measuredWidth < screenWidth + ? measuredWidth : Self.fallbackNotchWidth + } else { + width = Self.fallbackNotchWidth + } + height = safeAreaTop + } else { + width = Self.noNotchWidth + height = min(Self.noNotchHeight, menuBarHeight) + } + } +} + +/// Shared by the compact view and the greeting's collapse destination. +struct IslandRestingLayout { + let width: CGFloat + let height: CGFloat + + var botDiameter: CGFloat { min(20, max(0, height - 6)) } + var botCenterY: CGFloat { height / 2 } + var miniGridScale: CGFloat { min(1, max(0, height - 4) / 28) } + var miniGridCenterX: CGFloat { width - 40 } +} diff --git a/NotchBuddy/Sources/CoucouKit/IslandTypes.swift b/NotchBuddy/Sources/CoucouKit/IslandTypes.swift new file mode 100644 index 0000000..60fbbe1 --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/IslandTypes.swift @@ -0,0 +1,230 @@ +import Foundation + +// MARK: - Island Mode + +enum IslandMode: String, CaseIterable { + case hidden, compact, expanded +} + +// MARK: - Island View + +enum IslandView: String, CaseIterable { + case overview, empty, approval, question, error, finished + case confused, upload, uploading, choose, mail, prompt + case searching, result, note, settings, greeting, wardrobe +} + +// MARK: - Bot State + +enum BotState: String, CaseIterable { + case idle, working, thinking, searching + case approval, question, error, finished + case ratelimit, sleeping, dizzy +} + +// MARK: - Bot Emote + +enum BotEmote: String, CaseIterable { + case love, surprised, proud, wink, yawn, happy, annoyed +} + +// MARK: - Approval info (pending PermissionRequest from Claude Code) + +struct ApprovalInfo: Sendable { + var sessionId: String + var tool: String + var command: String + /// tool_input serialized to JSON with sortedKeys, "" if absent — used to match PostToolUse. + var inputKey: String + /// Pill that owns this approval: "integration_claude", "agent_cursor", or "agent_codex". + var pillId: String +} + +// MARK: - Pill badge (shown on pill edge when non-focused task has an alert) + +enum PillBadge { case approval, finished, error } + +// MARK: - Agent Task + +struct AgentTask: Identifiable, Equatable { + var id: String + var name: String + var color: String // hex + var state: BotState + var stepIndex: Int = 0 + var steps: [String] + var source: AgentSource + var isIntegration: Bool = false // true for persistent integration pills + var emote: BotEmote? = nil + var miniEye: EyeShape? = nil + var pillBadge: PillBadge? = nil // alert badge shown on pill when not focused + var sessionCwd: String? = nil // last known working directory (Claude Code sessions) + var finalLine: String? = nil // last assistant message shown as static text after Stop +} + +enum AgentSource: Equatable { + case claudeCode + case n8n + case agent // third-party agent via coucou_agent field +} + +// MARK: - Chat provider + +enum ChatProvider: String, CaseIterable, Codable { + case anthropic = "anthropic" + case google = "google" + case openai = "openai" + case ollama = "ollama" + case lmstudio = "lmstudio" + + var displayName: String { + switch self { + case .anthropic: "Anthropic" + case .google: "Google" + case .openai: "OpenAI" + case .ollama: "Ollama" + case .lmstudio: "LM Studio" + } + } + + var accentHex: String { + switch self { + case .anthropic: "#E07950" + case .google: "#4285F4" + case .openai: "#10A37F" + case .ollama: "#FACC15" + case .lmstudio: "#A3E635" + } + } + + var defaultModel: String { + switch self { + case .anthropic: "claude-sonnet-4-6" + case .google: "gemini-2.0-flash" + case .openai: "gpt-4o" + case .ollama: "llama3.2" + case .lmstudio: "local-model" + } + } + + var keychainKey: String { + switch self { + case .anthropic: "anthropic-api-key" + case .google: "google-api-key" + case .openai: "openai-api-key" + case .ollama: "" + case .lmstudio: "" + } + } + + var isLocal: Bool { + self == .ollama || self == .lmstudio + } + + var pillID: String { + switch self { + case .anthropic: "ai_anthropic" + case .google: "ai_google" + case .openai: "ai_openai" + case .ollama: "ai_ollama" + case .lmstudio: "ai_lmstudio" + } + } + + init?(pillID: String) { + switch pillID { + case "ai_anthropic": self = .anthropic + case "ai_google": self = .google + case "ai_openai": self = .openai + case "ai_ollama": self = .ollama + case "ai_lmstudio": self = .lmstudio + default: return nil + } + } +} + +// MARK: - View dimensions (from VIEWS in prototype) + +struct ViewLayout { + let height: CGFloat + let botX: CGFloat + let botY: CGFloat? // nil = auto-centered + let botDiameter: CGFloat + let agentMode: AgentLayoutMode +} + +enum AgentLayoutMode { + case none, grid, pills, column +} + +// MARK: - Constants (from NW, NH, EW in prototype) + +enum IslandConst { + static let notchWidth: CGFloat = IslandScreenGeometry.fallbackNotchWidth + static let notchHeight: CGFloat = 32 + static let expandedWidth: CGFloat = 640 + static let earRadius: CGFloat = 14 + static let roundedCorner: CGFloat = 14 // hidden/peek/compact + static let expandedCorner: CGFloat = 22 + + static let viewLayouts: [IslandView: ViewLayout] = [ + // Home is the reference: height 150 + .overview: ViewLayout(height: 160, botX: 68, botY: nil, botDiameter: 58, agentMode: .pills), + // All non-chat views match home height (150) — law + .empty: ViewLayout(height: 160, botX: 70, botY: nil, botDiameter: 62, agentMode: .none), + .approval: ViewLayout(height: 160, botX: 62, botY: nil, botDiameter: 56, agentMode: .column), + .question: ViewLayout(height: 160, botX: 62, botY: nil, botDiameter: 56, agentMode: .column), + .error: ViewLayout(height: 160, botX: 62, botY: nil, botDiameter: 58, agentMode: .column), + .finished: ViewLayout(height: 160, botX: 62, botY: nil, botDiameter: 58, agentMode: .column), + .confused: ViewLayout(height: 160, botX: 76, botY: nil, botDiameter: 66, agentMode: .column), + .upload: ViewLayout(height: 176, botX: 140, botY: 104, botDiameter: 62, agentMode: .column), + .uploading: ViewLayout(height: 176, botX: 46, botY: 118, botDiameter: 20, agentMode: .none), + .choose: ViewLayout(height: 176, botX: 60, botY: 101, botDiameter: 52, agentMode: .column), + .mail: ViewLayout(height: 240, botX: 56, botY: nil, botDiameter: 46, agentMode: .column), + .prompt: ViewLayout(height: 160, botX: 52, botY: nil, botDiameter: 44, agentMode: .column), + .searching: ViewLayout(height: 160, botX: 52, botY: nil, botDiameter: 44, agentMode: .column), + .result: ViewLayout(height: 160, botX: 52, botY: nil, botDiameter: 44, agentMode: .column), + .note: ViewLayout(height: 160, botX: 60, botY: nil, botDiameter: 50, agentMode: .column), + .settings: ViewLayout(height: 160, botX: 54, botY: nil, botDiameter: 46, agentMode: .none), + // Greeting: bot drawn by GreetingCanvasView; no BotPlacement needed + .greeting: ViewLayout(height: 150, botX: 320, botY: 90, botDiameter: 0, agentMode: .none), + .wardrobe: ViewLayout(height: 160, botX: 68, botY: nil, botDiameter: 58, agentMode: .none), + ] + + // Project colors — keyed by lowercase display name or slug + static let projectColors: [String: String] = [ + "korus": "#FF5A4E", + "sbe hub": "#2EC4A0", + "morning ai brief": "#F29B38", + "publication ig": "#7C5CFF", + "ig post": "#7C5CFF", + "louisraille.fr": "#38BDF8", + "louisraille": "#38BDF8", + "notch buddy": "#EC4899", + "notch-buddy": "#EC4899", + "notchbuddy": "#EC4899", + ] + + static let fallbackColors = ["#22C55E", "#EAB308", "#60A5FA", "#E879F9"] + + /// Returns the fixed project color for a display name, or a stable fallback. + static func colorForProject(_ name: String) -> String { + let key = name.lowercased().trimmingCharacters(in: .whitespaces) + if let c = projectColors[key] { return c } + // partial match (e.g. "korus-api" → "korus") + for (k, c) in projectColors where key.hasPrefix(k) || key.contains(k) { return c } + return fallbackColors[abs(name.hashValue) % fallbackColors.count] + } + + // State card wash colors (radial gradient from bottom) + static let washColors: [IslandView: String] = [ + .approval: "rgba(245,165,36,0.42)", + .question: "rgba(34,211,238,0.38)", + .error: "rgba(244,80,94,0.55)", + .finished: "rgba(52,211,153,0.5)", + .confused: "rgba(244,114,182,0.55)", + .searching: "rgba(99,102,241,0.5)", + .result: "rgba(52,211,153,0.22)", + .prompt: "rgba(99,102,241,0.22)", + ] +} diff --git a/NotchBuddy/Sources/CoucouKit/MochiActivityState.swift b/NotchBuddy/Sources/CoucouKit/MochiActivityState.swift new file mode 100644 index 0000000..4bb5130 --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/MochiActivityState.swift @@ -0,0 +1,69 @@ +import Foundation + +// What the iPhone's Live Activity (Lock Screen and Dynamic Island) shows: +// the most urgent agent session, while the Mac is locked. The Mac builds it, +// the relay forwards it as the Live Activity's "content-state", ActivityKit +// decodes it on the iPhone. It passes through the relay and Apple's push +// service, so it holds no project name, step text, command or path: only the +// agent, its state and counts. + +struct MochiActivityState: Codable, Hashable, Sendable { + var pillId: String + var agent: String // "VS Code", "Codex"… + var color: String // agent color, hex + var state: String // BotState raw value + var statusText: String // "working · 3/7", "waiting for your OK"… + var tone: String // waiting, question, error, working, done, idle + var stepIndex: Int + var stepCount: Int + var others: Int // other sessions still going + /// When Mochi left for the iPhone (Unix seconds): the iPhone counts the + /// time from it, live. Optional so older pushes still decode. + var since: Int? = nil + /// The fingerprint of the command waiting for your OK (an opaque hash, + /// never the command): the Lock Screen's Allow and Deny answer this one. + var approval: String? = nil + + var botState: BotState { BotState(rawValue: state) ?? .idle } + var isActive: Bool { ["waiting", "question", "working", "error"].contains(tone) } + + /// Lower = more urgent, same order as the iPhone list. + static func urgency(state: BotState, waitingForOK: Bool, hasQuestion: Bool) -> Int { + if waitingForOK || state == .approval { return 0 } + if hasQuestion || state == .question { return 1 } + switch state { + case .error, .ratelimit, .dizzy: return 2 + case .working, .thinking, .searching: return 3 + case .finished: return 4 + default: return 5 + } + } + + static func tone(urgency: Int) -> String { + ["waiting", "question", "error", "working", "done"].indices.contains(urgency) + ? ["waiting", "question", "error", "working", "done"][urgency] : "idle" + } + + static func statusText(state: BotState, urgency: Int, stepIndex: Int, stepCount: Int) -> String { + switch urgency { + case 0: return "waiting for your OK" + case 1: return "has a question" + default: break + } + switch state { + case .working, .thinking, .searching: + return stepCount == 0 ? "working" : "working · \(min(stepIndex + 1, stepCount))/\(stepCount)" + case .finished: return "✓ done" + case .error: return "error" + case .ratelimit: return "rate limited" + case .sleeping: return "asleep" + case .dizzy: return "dizzy" + default: return "idle" + } + } + + static let placeholder = MochiActivityState( + pillId: "integration_claude", agent: "VS Code", color: "#4A86E8", + state: "working", statusText: "working · 3/7", tone: "working", + stepIndex: 2, stepCount: 7, others: 1) +} diff --git a/NotchBuddy/Sources/CoucouKit/MochiOutfitDrawing.swift b/NotchBuddy/Sources/CoucouKit/MochiOutfitDrawing.swift new file mode 100644 index 0000000..3da2227 --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/MochiOutfitDrawing.swift @@ -0,0 +1,1464 @@ +import SwiftUI +import CoreGraphics + +// MARK: - Constants (mirror JS) + +private let kEXP: CGFloat = 2.7 +private let kVIEW_TILT: CGFloat = -0.30 +private let kACC_PITCH: CGFloat = 0.4 +private let kEYE_W: CGFloat = 0.25 +private let kEYE_H: CGFloat = 0.27 +private let kEYE_SP: CGFloat = 0.37 +private let kEYE_P: CGFloat = -0.12 + +// MARK: - MochiH (head geometry + physics) + +struct MochiH { + let R, rx, ry: CGFloat + let yaw, pitch: CGFloat + let view: CGFloat // = VIEW_TILT (-0.30) + let physDx, physDy: CGFloat + let roll: CGFloat + + init(R: CGFloat, yaw: CGFloat = 0, pitch: CGFloat = 0, + physDx: CGFloat = 0, physDy: CGFloat = 0, roll: CGFloat = 0) { + self.R = R + self.rx = R * 1.14 + self.ry = R * 0.88 + self.yaw = yaw + self.pitch = pitch + self.view = kVIEW_TILT + self.physDx = physDx + self.physDy = physDy + self.roll = roll + } +} + +// MARK: - EyeFrame (replaces mochiEyePositions) + +struct EyeFrame { + let sd: CGFloat // -1 left, +1 right + let x, y: CGFloat + let fx, fy: CGFloat + let visible: Bool + let w, h: CGFloat +} + +func mEyeFrames(_ H: MochiH) -> [EyeFrame] { + var out: [EyeFrame] = [] + for sdD: Double in [-1.0, 1.0] { + let sd = CGFloat(sdD) + let eyeYaw = sd * kEYE_SP + H.yaw + let eyePitch = kEYE_P + H.pitch + let cp = cos(eyePitch) + let visible = cos(eyeYaw) * cp > 0.04 + out.append(EyeFrame( + sd: sd, + x: sin(eyeYaw) * cp * H.rx, + y: -sin(eyePitch) * H.ry, + fx: max(0.18, cos(eyeYaw)), + fy: max(0.18, cp), + visible: visible, + w: H.R * kEYE_W, + h: H.R * kEYE_H + )) + } + return out +} + +/// Backward-compat shim (used by existing callers that haven't been updated yet). +func mochiEyePositions(yaw: CGFloat, pitch: CGFloat, rx: CGFloat, ry: CGFloat) + -> [(ex: CGFloat, ey: CGFloat, fx: CGFloat, fy: CGFloat)] { + let H = MochiH(R: rx / 1.14, yaw: yaw, pitch: pitch) + return mEyeFrames(H).filter { $0.visible }.map { (ex: $0.x, ey: $0.y, fx: $0.fx, fy: $0.fy) } +} + +// MARK: - P3 (projected screen point with depth) + +private struct P3 { + let x, y, z: CGFloat +} + +// MARK: - 3D helpers (faithful port) + +// ringR(y) → radius of horizontal ring at head-local y +private func mRingR(_ y: CGFloat) -> CGFloat { + let a = min(1, abs(y)) + return pow(1 - pow(a, kEXP), 1 / kEXP) +} + +// rot(p, yaw, pitch) — rotate head-local (x right, y up, z viewer) by yaw then pitch +private func mRot3(_ p: (CGFloat, CGFloat, CGFloat), yaw: CGFloat, pitch: CGFloat) -> (CGFloat, CGFloat, CGFloat) { + var (x, y, z) = p + let cy = cos(yaw), sy = sin(yaw) + let x1 = x * cy + z * sy + let z1 = -x * sy + z * cy + x = x1 + let cp = cos(pitch), sp = sin(pitch) + let y2 = y * cp + z1 * sp + let z2 = -y * sp + z1 * cp + return (x, y2, z2) +} + +// proj(H, p) — head-local -> screen (body space) +private func mProj(_ H: MochiH, _ p: (CGFloat, CGFloat, CGFloat)) -> P3 { + let r = mRot3(p, yaw: H.yaw, pitch: H.view + H.pitch * kACC_PITCH) + return P3(x: r.0 * H.rx, y: -r.1 * H.ry, z: r.2) +} + +// surf(y, lon, s) — point on head surface at height y, longitude lon +private func mSurf(_ y: CGFloat, _ lon: CGFloat, _ s: CGFloat = 1) -> (CGFloat, CGFloat, CGFloat) { + let r = mRingR(y) * s + return (r * sin(lon), y, r * cos(lon)) +} + +// Shared: given projected ring points, return front arc ordered L→R via silhouette tangents +private func frontSilhouetteArc(_ pts: [P3]) -> [P3] { + let n = pts.count + guard n > 1 else { return pts } + let minIdx = pts.indices.min(by: { pts[$0].x < pts[$1].x })! + let maxIdx = pts.indices.max(by: { pts[$0].x < pts[$1].x })! + guard minIdx != maxIdx else { return [pts[minIdx]] } + // Arc A: minIdx→maxIdx going forward (+1 steps) + var arcA: [P3] = []; var i = minIdx + while true { arcA.append(pts[i]); if i == maxIdx { break }; i = (i+1)%n; if arcA.count > n { break } } + // Arc B: minIdx→maxIdx going backward (-1 steps) + var arcB: [P3] = []; i = minIdx + while true { arcB.append(pts[i]); if i == maxIdx { break }; i = (i-1+n)%n; if arcB.count > n { break } } + let zA = arcA.reduce(0) { $0+$1.z } / CGFloat(max(1, arcA.count)) + let zB = arcB.reduce(0) { $0+$1.z } / CGFloat(max(1, arcB.count)) + return zA >= zB ? arcA : arcB +} + +// frontArc(H, y, s) — front arc of ring at height y, ordered left→right (silhouette tangent method) +private func mFrontArc(_ H: MochiH, y: CGFloat, s: CGFloat) -> [P3] { + let n = 120 + let pts: [P3] = (0.. P3 { + let r = mRot3(p, yaw: H.yaw, pitch: H.view + H.pitch * kACC_PITCH + H.roll) + return P3(x: r.0 * H.rx, y: -r.1 * H.ry, z: r.2) +} + +// frontArc using roll projection (for scarf) +private func mFrontArcRoll(_ H: MochiH, y: CGFloat, s: CGFloat) -> [P3] { + let n = 120 + let pts: [P3] = (0.. Path { + let arc = mFrontArc(H, y: y, s: s) + guard !arc.isEmpty else { return Path() } + var p = Path() + p.move(to: CGPoint(x: arc[0].x - H.rx, y: arc[0].y)) + for q in arc { p.addLine(to: CGPoint(x: q.x, y: q.y)) } + p.addLine(to: CGPoint(x: arc.last!.x + H.rx, y: arc.last!.y)) + p.addLine(to: CGPoint(x: H.rx * 2, y: -H.ry * extraTop)) + p.addLine(to: CGPoint(x: -H.rx * 2, y: -H.ry * extraTop)) + p.closeSubpath() + return p +} + +// frontRun — front arc of a CLOSED ring, ordered left→right (silhouette tangent method) +private func mFrontRun(_ ring: [P3]) -> [P3] { + frontSilhouetteArc(ring) +} + +// invert(p, H) — complement of path p inside a large rect, with evenodd fill +private func mInvert(_ p: Path, H: MochiH) -> Path { + var q = Path() + q.addRect(CGRect(x: -H.rx * 4, y: -H.ry * 4, width: H.rx * 8, height: H.ry * 8)) + q.addPath(p) + return q +} + +// mochiOutfitPath — clean superellipse (n=96), same exponent as JS mochiPath +func mochiOutfitPath(_ rx: CGFloat, _ ry: CGFloat) -> Path { + let n = 96 + let e: CGFloat = 2.0 / kEXP + var p = Path() + for i in 0...n { + let a = CGFloat(i) / CGFloat(n) * .pi * 2 + let ca = cos(a), sa = sin(a) + let x = rx * (ca >= 0 ? pow(ca, e) : -pow(-ca, e)) + let y = ry * (sa >= 0 ? pow(sa, e) : -pow(-sa, e)) + if i == 0 { p.move(to: CGPoint(x: x, y: y)) } + else { p.addLine(to: CGPoint(x: x, y: y)) } + } + p.closeSubpath() + return p +} + +// ringPoints — all 120+1 projected points on ring (full circle, for frontRun) +private func mRingPoints(_ H: MochiH, y: CGFloat, s: CGFloat, n: Int = 72) -> [P3] { + (0...n).map { i -> P3 in + let lon = -.pi + CGFloat(i) / CGFloat(n) * 2 * .pi + return mProj(H, mSurf(y, lon, s)) + } +} + +// MARK: - pompom + +private func drawPompom(_ ctx: inout GraphicsContext, x: CGFloat, y: CGFloat, r: CGFloat, + base: Color = .white, + shade: Color = Color(red: 0.835, green: 0.851, blue: 0.886)) { + var g = ctx + g.translateBy(x: x, y: y) + // fluffy rim bumps + let n = 11 + for i in 0..= 2 else { return } + // shade stroke + var sp = Path() + sp.move(to: CGPoint(x: arc[0].x, y: arc[0].y)) + for i in 1.. GraphicsContext { + var ctx = context + ctx.translateBy(x: cx, y: cy) + if tilt != 0 { ctx.rotate(by: .radians(tilt)) } + ctx.scaleBy(x: sx, y: sy) + return ctx +} + +// MARK: - Front dispatcher + +func drawOutfitFrontStatic( + context: GraphicsContext, + outfit: Outfit, H: MochiH, + cx: CGFloat, cy: CGFloat, tilt: CGFloat, sx: CGFloat, sy: CGFloat, + roll: CGFloat, morph: CGFloat, isMini: Bool, + presence: CGFloat = 1, rollTurns: CGFloat = 1 +) { + guard !isMini, outfit != .none, outfit != .auto else { return } + let morphFade = 1 - min(1, max(0, (morph - 0.3) / 0.2)) + guard morphFade > 0.01 else { return } + + // Roll-following (glasses, bow, scarf, pumpkin): skip front pass when z < 0 → behind pass handles it. + // bunnyEars: always in behind pass; not in this set. + switch outfit { + case .sunglasses, .roundGlasses, .bow, .scarf, .pumpkin: + if mProjRoll(H, (0, 0, 1)).z < 0 { return } + default: break + } + + // Opacity: opaque early so movement carries the transition; drawLayer prevents ghost overlaps. + let p = presence + let posP = Ease.back(p) + let layerOpacity = Double(morphFade * min(1, p * 2.5)) + guard layerOpacity > 0.005 else { return } + + let simplified = H.R < 16 + let baseCtx = outfitBodyTransform(context: context, cx: cx, cy: cy, tilt: tilt, sx: sx, sy: sy) + let bodyPath = mochiOutfitPath(H.rx, H.ry) + + // ── Hat fly-off during roll (beanie, santaHat, partyHat, crown, witchHat) ────────────────── + let isHatType: Bool + switch outfit { + case .beanie, .santaHat, .partyHat, .crown, .witchHat: isHatType = true + default: isHatType = false + } + if isHatType && abs(H.roll) > 0.01 { + let u = min(1, abs(H.roll) / (2 * .pi * max(1, rollTurns))) + let flyHeight = H.ry * 0.45 * sin(u * .pi) + let flyDrift = H.physDx * H.rx * 0.2 * sin(u * .pi) + let swingAngle = sin(2 * .pi * u) * 0.35 // gentle flat swing, hat stays upright + var c = baseCtx; c.opacity = layerOpacity + c.translateBy(x: flyDrift, y: -flyHeight) + c.rotate(by: .radians(swingAngle)) + c.drawLayer { lCtx in + var l = lCtx + switch outfit { + case .beanie: + drawBeaniesFront(ctx: &l, H: H, bodyPath: bodyPath, simplified: simplified) + case .santaHat: + drawSantaHatFront(ctx: &l, H: H, bodyPath: bodyPath) + case .partyHat: + drawPartyHatFront(ctx: &l, H: H, bodyPath: bodyPath, simplified: simplified) + case .crown: + var g = l; g.clip(to: bodyPath) + g.clip(to: mCapClip(H, y: crownYb(H) - 0.1, s: 1)) + var g2 = g + g2.clip(to: mInvert(mCapClip(H, y: crownYb(H), s: 1), H: H), style: FillStyle(eoFill: true)) + var shp = Path(); shp.addRect(CGRect(x: -H.rx*4, y: -H.ry*4, width: H.rx*8, height: H.ry*8)) + g2.fill(shp, with: .color(Color(red: 0.314, green: 0.196, blue: 0, opacity: 0.12))) + drawCrownPart(ctx: &l, H: H, side: 1, simplified: simplified) + case .witchHat: + drawWitchHatFront(ctx: &l, H: H, bodyPath: bodyPath) + default: break + } + } + return + } + + // ── Normal presence transitions (drawLayer eliminates ghost overlaps) ──────────────────────── + let hatScale = 0.85 + 0.15 * posP // hats / crown: scale up as they settle + + switch outfit { + case .beanie: + var c = baseCtx; c.opacity = layerOpacity + c.translateBy(x: 0, y: -(1 - posP) * H.ry * 1.0); c.scaleBy(x: hatScale, y: hatScale) + c.drawLayer { lCtx in var l = lCtx; drawBeaniesFront(ctx: &l, H: H, bodyPath: bodyPath, simplified: simplified) } + + case .santaHat: + var c = baseCtx; c.opacity = layerOpacity + c.translateBy(x: 0, y: -(1 - posP) * H.ry * 1.0); c.scaleBy(x: hatScale, y: hatScale) + c.drawLayer { lCtx in var l = lCtx; drawSantaHatFront(ctx: &l, H: H, bodyPath: bodyPath) } + + case .partyHat: + var c = baseCtx; c.opacity = layerOpacity + c.translateBy(x: 0, y: -(1 - posP) * H.ry * 1.0); c.scaleBy(x: hatScale, y: hatScale) + c.drawLayer { lCtx in var l = lCtx; drawPartyHatFront(ctx: &l, H: H, bodyPath: bodyPath, simplified: simplified) } + + case .crown: + var c = baseCtx; c.opacity = layerOpacity + c.translateBy(x: 0, y: -(1 - posP) * H.ry * 1.0); c.scaleBy(x: hatScale, y: hatScale) + c.drawLayer { lCtx in + var l = lCtx + var g = l; g.clip(to: bodyPath) + g.clip(to: mCapClip(H, y: crownYb(H) - 0.1, s: 1)) + var g2 = g + g2.clip(to: mInvert(mCapClip(H, y: crownYb(H), s: 1), H: H), style: FillStyle(eoFill: true)) + var shp = Path(); shp.addRect(CGRect(x: -H.rx*4, y: -H.ry*4, width: H.rx*8, height: H.ry*8)) + g2.fill(shp, with: .color(Color(red: 0.314, green: 0.196, blue: 0, opacity: 0.12))) + drawCrownPart(ctx: &l, H: H, side: 1, simplified: simplified) + } + + case .witchHat: + var c = baseCtx; c.opacity = layerOpacity + c.translateBy(x: 0, y: -(1 - posP) * H.ry * 1.0); c.scaleBy(x: hatScale, y: hatScale) + c.drawLayer { lCtx in var l = lCtx; drawWitchHatFront(ctx: &l, H: H, bodyPath: bodyPath) } + + case .sunglasses: + var c = baseCtx; c.opacity = layerOpacity + c.translateBy(x: 0, y: (1 - p) * 0.25 * H.ry) + c.drawLayer { lCtx in var l = lCtx; drawSunglassesFront(ctx: &l, H: H, bodyPath: bodyPath) } + + case .roundGlasses: + var c = baseCtx; c.opacity = layerOpacity + c.translateBy(x: 0, y: (1 - p) * 0.25 * H.ry) + c.drawLayer { lCtx in var l = lCtx; drawRoundGlassesFront(ctx: &l, H: H, bodyPath: bodyPath) } + + case .scarf: + var c = baseCtx; c.opacity = layerOpacity + c.translateBy(x: 0, y: (1 - p) * 0.3 * H.ry) + c.drawLayer { lCtx in var l = lCtx; drawScarfFront(ctx: &l, H: H) } + + case .pumpkin: + var c = baseCtx; c.opacity = layerOpacity + c.drawLayer { lCtx in var l = lCtx; drawPumpkinFront(ctx: &l, H: H, bodyPath: bodyPath, simplified: simplified) } + + case .bow: + var c = baseCtx; c.opacity = layerOpacity + c.scaleBy(x: max(0.001, posP), y: max(0.001, posP)) + c.drawLayer { lCtx in var l = lCtx; drawBowFront(ctx: &l, H: H, bodyPath: bodyPath) } + + default: + break + } +} + +// MARK: - Behind dispatcher + +func drawOutfitBehindStatic( + context: GraphicsContext, + outfit: Outfit, H: MochiH, + cx: CGFloat, cy: CGFloat, tilt: CGFloat, sx: CGFloat, sy: CGFloat, + roll: CGFloat, morph: CGFloat, isMini: Bool, + presence: CGFloat = 1, rollTurns: CGFloat = 1 +) { + guard !isMini, outfit != .none, outfit != .auto else { return } + let morphFade = 1 - min(1, max(0, (morph - 0.3) / 0.2)) + guard morphFade > 0.01 else { return } + + let layerOpacity = Double(morphFade * min(1, presence * 2.5)) + guard layerOpacity > 0.005 else { return } + + let simplified = H.R < 16 + var ctx = outfitBodyTransform(context: context, cx: cx, cy: cy, tilt: tilt, sx: sx, sy: sy) + let bodyPath = mochiOutfitPath(H.rx, H.ry) + + // Roll-following accessories (glasses, bow, scarf, pumpkin — not bunnyEars): behind when z < 0 + switch outfit { + case .sunglasses, .roundGlasses, .bow, .scarf, .pumpkin: + guard mProjRoll(H, (0, 0, 1)).z < 0 else { return } + ctx.opacity = layerOpacity + ctx.drawLayer { lCtx in + var l = lCtx + switch outfit { + case .sunglasses: drawSunglassesFront(ctx: &l, H: H, bodyPath: bodyPath) + case .roundGlasses: drawRoundGlassesFront(ctx: &l, H: H, bodyPath: bodyPath) + case .scarf: drawScarfFront(ctx: &l, H: H) + case .pumpkin: drawPumpkinFront(ctx: &l, H: H, bodyPath: bodyPath, simplified: simplified) + case .bow: drawBowFront(ctx: &l, H: H, bodyPath: bodyPath) + default: break + } + } + return + default: break + } + + // Behind accessories: bunnyEars (always), crown back, witchHat back + let posP = Ease.back(presence) + let hatScale = 0.85 + 0.15 * posP + switch outfit { + case .bunnyEars: + // Always behind body; no 3D roll — ears flatten/tilt during roll. + let u: CGFloat = abs(H.roll) > 0.01 + ? min(1, abs(H.roll) / (2 * .pi * max(1, rollTurns))) + : 0 + var c = ctx; c.opacity = layerOpacity + // Presence transition: descend from above (same as hats) + c.translateBy(x: 0, y: -(1 - posP) * H.ry * 1.0) + c.scaleBy(x: hatScale, y: hatScale) + c.drawLayer { lCtx in + var l = lCtx + drawBunnyEarsBack(ctx: &l, H: H, rollProgress: u) + } + + case .crown: + var c = ctx; c.opacity = layerOpacity + if abs(H.roll) > 0.01 { + let u = min(1, abs(H.roll) / (2 * .pi * max(1, rollTurns))) + c.translateBy(x: H.physDx * H.rx * 0.2 * sin(u * .pi), y: -H.ry * 0.45 * sin(u * .pi)) + c.rotate(by: .radians(sin(2 * .pi * u) * 0.35)) + } else { + c.translateBy(x: 0, y: -(1 - posP) * H.ry * 1.0); c.scaleBy(x: hatScale, y: hatScale) + } + c.drawLayer { lCtx in var l = lCtx; drawCrownPart(ctx: &l, H: H, side: -1, simplified: simplified) } + + case .witchHat: + var c = ctx; c.opacity = layerOpacity + if abs(H.roll) > 0.01 { + let u = min(1, abs(H.roll) / (2 * .pi * max(1, rollTurns))) + c.translateBy(x: H.physDx * H.rx * 0.2 * sin(u * .pi), y: -H.ry * 0.45 * sin(u * .pi)) + c.rotate(by: .radians(sin(2 * .pi * u) * 0.35)) + } else { + c.translateBy(x: 0, y: -(1 - posP) * H.ry * 1.0); c.scaleBy(x: hatScale, y: hatScale) + } + c.drawLayer { lCtx in var l = lCtx; drawWitchHatBack(ctx: &l, H: H) } + + default: + break + } +} + +// MARK: - Crown geometry helper + +private func crownYb(_ H: MochiH) -> CGFloat { 0.46 } + +// MARK: - Bunny ears (behind body) + +// rollProgress: 0 = upright, 1 = max roll (ears fully flattened). Drawn with mProj (no 3D roll). +private func drawBunnyEarsBack(ctx: inout GraphicsContext, H: MochiH, rollProgress: CGFloat = 0) { + let R = H.R + let earH = R * 0.85 + + for sd: CGFloat in [-1.0, 1.0] { + // Standard projection — ears do not follow 3D roll + let earRoot = mProj(H, (sd * 0.45, 0.92, 0)) + let earRootL = mProj(H, (sd * 0.45 - 0.22, 0.92, 0)) + let earRootR = mProj(H, (sd * 0.45 + 0.22, 0.92, 0)) + let visHW = max(R * 0.04, abs(earRootR.x - earRootL.x) / 2) + + // During roll: ears flatten (shrink height) and tilt outward + let flatten = sin(rollProgress * .pi) + let effEarH = earH * (1 - 0.8 * flatten) + let tiltAngle = sd * 0.6 * flatten // left ear tilts left, right tilts right + + let earCX = earRoot.x + let earCY = earRoot.y - effEarH * 0.65 + effEarH * 0.5 // visual centre of ear + + var eCtx = ctx + eCtx.translateBy(x: earCX, y: earCY) + eCtx.rotate(by: .radians(tiltAngle)) + + var outer = Path() + outer.addEllipse(in: CGRect(x: -visHW, y: -effEarH / 2, width: visHW * 2, height: effEarH)) + eCtx.fill(outer, with: .color(Color(hex: "#F9F0F0"))) + eCtx.stroke(outer, with: .color(Color.black.opacity(0.06)), lineWidth: 0.8) + var inner = Path() + inner.addEllipse(in: CGRect(x: -visHW * 0.50, y: -effEarH / 2 + R * 0.10, + width: visHW, height: effEarH * 0.65)) + eCtx.fill(inner, with: .color(Color(hex: "#FCA5A5").opacity(0.70))) + } +} + +// MARK: - Beanie + +private func drawBeaniesFront(ctx: inout GraphicsContext, H: MochiH, bodyPath: Path, simplified: Bool = false) { + let s: CGFloat = 1.035, yEdge: CGFloat = 0.42, yCuff: CGFloat = 0.58 + let head = mochiOutfitPath(H.rx * s, H.ry * s) + + // shadow on head under the cuff + var shadow = ctx + shadow.clip(to: bodyPath) + shadow.clip(to: mCapClip(H, y: yEdge - 0.12, s: 1)) + var shRect = Path() + shRect.addRect(CGRect(x: -H.rx * 4, y: -H.ry * 4, width: H.rx * 8, height: H.ry * 8)) + shadow.fill(shRect, with: .color(Color(red: 30/255, green: 40/255, blue: 70/255, opacity: 0.10))) + + // knit body + var knitCtx = ctx + knitCtx.clip(to: mCapClip(H, y: yCuff, s: s)) + knitCtx.fill(head, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#7DB6FF"), location: 0), + .init(color: Color(hex: "#2F6FE0"), location: 1) + ]), + startPoint: CGPoint(x: H.rx * 0.5, y: -H.ry * 1.1), + endPoint: CGPoint(x: -H.rx * 0.6, y: H.ry * 0.2) + )) + // vertical knit ribs (skip when simplified) + if !simplified { + var ribCtx = knitCtx + ribCtx.clip(to: head) + for k in -6...6 { + let lon = CGFloat(k) * 0.24 + var pts: [P3] = [] + for i in 0...16 { + let y = yCuff + (1.05 - yCuff) * CGFloat(i) / 16 + let q = mProj(H, mSurf(y, lon, s)) + if q.z > 0 { pts.append(q) } + } + guard pts.count >= 2 else { continue } + var rp = Path() + rp.move(to: CGPoint(x: pts[0].x, y: pts[0].y)) + for pt in pts.dropFirst() { rp.addLine(to: CGPoint(x: pt.x, y: pt.y)) } + ribCtx.stroke(rp, with: .color(Color(red: 20/255, green: 50/255, blue: 140/255, opacity: 0.16)), + style: StrokeStyle(lineWidth: H.R * 0.045, lineCap: .round)) + } + } + + // cuff (folded band) — clip to [yEdge, yCuff] band using invert + var cuffCtx = ctx + cuffCtx.clip(to: mCapClip(H, y: yEdge, s: s * 1.04)) + cuffCtx.clip(to: mInvert(mCapClip(H, y: yCuff, s: s * 1.04), H: H), style: FillStyle(eoFill: true)) + let cuffHead = mochiOutfitPath(H.rx * s * 1.04, H.ry * s * 1.04) + cuffCtx.fill(cuffHead, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#3C7BEA"), location: 0), + .init(color: Color(hex: "#2257C4"), location: 1) + ]), + startPoint: CGPoint(x: 0, y: -H.ry * 0.6), + endPoint: CGPoint(x: 0, y: -H.ry * 0.2) + )) + var cuffRib = cuffCtx + cuffRib.clip(to: cuffHead) + for k in -14...14 { + let lon = CGFloat(k) * 0.115 + let a = mProj(H, mSurf(yEdge, lon, s * 1.04)) + let b = mProj(H, mSurf(yCuff, lon, s * 1.04)) + if a.z < 0 { continue } + var cp = Path() + cp.move(to: CGPoint(x: a.x, y: a.y)) + cp.addLine(to: CGPoint(x: b.x, y: b.y)) + cuffRib.stroke(cp, with: .color(Color(red: 10/255, green: 30/255, blue: 100/255, opacity: 0.22)), + style: StrokeStyle(lineWidth: H.R * 0.035, lineCap: .butt)) + } + + // top highlight + var hiCtx = ctx + hiCtx.clip(to: mCapClip(H, y: yCuff, s: s)) + hiCtx.clip(to: head) + hiCtx.fill(head, with: .radialGradient( + Gradient(stops: [ + .init(color: Color.white.opacity(0.35), location: 0), + .init(color: .clear, location: 1) + ]), + center: CGPoint(x: H.rx * 0.3, y: -H.ry * 0.85), + startRadius: 0, endRadius: H.R * 0.45 + )) + + // pompom on short spring + let top = mProj(H, (0, 1.08 * s, 0)) + drawPompom(&ctx, x: top.x + H.physDx * H.rx * 0.25, + y: top.y - H.R * 0.12 + H.physDy * H.ry * 0.15, + r: H.R * 0.24) +} + +// MARK: - Santa hat + +private func drawSantaHatFront(ctx: inout GraphicsContext, H: MochiH, bodyPath: Path) { + let s: CGFloat = 1.05, yEdge: CGFloat = 0.52 + let arc = mFrontArc(H, y: yEdge, s: s) + guard !arc.isEmpty else { return } + let L = arc.first! + let Rt = arc.last! + let crown = mProj(H, (0, 1.05, 0)) + // tip flops to right + spring lag + let side: CGFloat = 1 + let tip = CGPoint( + x: crown.x + side * H.rx * (0.95 + H.physDx * 0.35), + y: crown.y + H.ry * (0.05 + H.physDy * 0.2) + ) + let peak = CGPoint( + x: crown.x + side * H.rx * 0.25, + y: crown.y - H.ry * 0.62 + ) + var bag = Path() + bag.move(to: CGPoint(x: L.x, y: L.y)) + bag.addCurve( + to: CGPoint(x: peak.x, y: peak.y), + control1: CGPoint(x: L.x - H.rx * 0.05, y: L.y - H.ry * 0.7), + control2: CGPoint(x: peak.x - H.rx * 0.55, y: peak.y - H.ry * 0.05) + ) + bag.addQuadCurve( + to: CGPoint(x: tip.x, y: tip.y), + control: CGPoint(x: tip.x - H.rx * 0.05, y: peak.y - H.ry * 0.02) + ) + bag.addQuadCurve( + to: CGPoint(x: peak.x + H.rx * 0.18, y: peak.y + H.ry * 0.32), + control: CGPoint(x: tip.x - H.rx * 0.12, y: tip.y - H.ry * 0.22) + ) + bag.addCurve( + to: CGPoint(x: Rt.x, y: Rt.y), + control1: CGPoint(x: Rt.x + H.rx * 0.05, y: peak.y + H.ry * 0.45), + control2: CGPoint(x: Rt.x + H.rx * 0.08, y: Rt.y - H.ry * 0.35) + ) + for i in stride(from: arc.count - 1, through: 0, by: -1) { + bag.addLine(to: CGPoint(x: arc[i].x, y: arc[i].y)) + } + bag.closeSubpath() + + // shadow on head + var sCtx = ctx + sCtx.clip(to: bodyPath) + sCtx.clip(to: mCapClip(H, y: yEdge - 0.14, s: 1)) + var sRect = Path() + sRect.addRect(CGRect(x: -H.rx * 4, y: -H.ry * 4, width: H.rx * 8, height: H.ry * 8)) + sCtx.fill(sRect, with: .color(Color(red: 120/255, green: 10/255, blue: 10/255, opacity: 0.10))) + + // bag fill + ctx.fill(bag, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#FF6B6B"), location: 0), + .init(color: Color(hex: "#E53935"), location: 0.55), + .init(color: Color(hex: "#B71C1C"), location: 1) + ]), + startPoint: CGPoint(x: -H.rx * 0.6, y: -H.ry * 1.6), + endPoint: CGPoint(x: H.rx * 0.7, y: -H.ry * 0.3) + )) + + // folds + var fCtx = ctx + fCtx.clip(to: bag) + for (a, b, w): (CGFloat, CGFloat, CGFloat) in [(0.15, 0.55, 0.10), (0.45, 0.85, 0.08)] { + var fold = Path() + fold.move(to: CGPoint( + x: peak.x - H.rx * 0.1 + (Rt.x - L.x) * a * 0.3, + y: peak.y + H.ry * 0.15 + )) + fold.addQuadCurve( + to: CGPoint(x: tip.x - H.rx * (0.45 - b * 0.3), y: tip.y - H.ry * 0.12), + control: CGPoint(x: peak.x + H.rx * 0.35, y: peak.y + H.ry * (0.05 + a * 0.3)) + ) + fCtx.stroke(fold, with: .color(Color(red: 90/255, green: 0, blue: 0, opacity: 0.20)), + style: StrokeStyle(lineWidth: H.R * w, lineCap: .round)) + } + fCtx.fill(bag, with: .radialGradient( + Gradient(stops: [ + .init(color: Color.white.opacity(0.32), location: 0), + .init(color: .clear, location: 1) + ]), + center: CGPoint(x: peak.x - H.rx * 0.25, y: peak.y + H.ry * 0.05), + startRadius: 0, endRadius: H.R * 0.5 + )) + + // trim + pompom + drawFuzzyBand(&ctx, arc: arc, thick: H.R * 0.3) + drawPompom(&ctx, x: tip.x, y: tip.y + H.R * 0.04, r: H.R * 0.22) +} + +// MARK: - Party hat + +private func drawPartyHatFront(ctx: inout GraphicsContext, H: MochiH, bodyPath: Path, simplified: Bool = false) { + let baseY: CGFloat = 0.82, baseR: CGFloat = 0.42 + let lean: CGFloat = -0.24 + H.physDx * 0.12 + let c = mProj(H, (0.16, baseY + 0.06, 0)) + // full ring for left/right extremes + var ring: [P3] = [] + for i in 0...48 { + let a = CGFloat(i) / 48 * .pi * 2 + ring.append(mProj(H, (0.16 + baseR * sin(a), baseY + 0.06, baseR * cos(a)))) + } + let left = ring.min(by: { $0.x < $1.x })! + let right = ring.max(by: { $0.x < $1.x })! + let h = H.ry * 1.6 + let apex = CGPoint(x: c.x + sin(lean) * h, y: c.y - cos(lean) * h) + let front = mFrontRun(ring) + + var cone = Path() + cone.move(to: CGPoint(x: left.x, y: left.y)) + cone.addQuadCurve( + to: CGPoint(x: apex.x - H.R * 0.05, y: apex.y + H.R * 0.06), + control: CGPoint(x: (left.x + apex.x) / 2 - H.rx * 0.06, y: (left.y + apex.y) / 2) + ) + cone.addQuadCurve( + to: CGPoint(x: apex.x + H.R * 0.05, y: apex.y + H.R * 0.06), + control: CGPoint(x: apex.x, y: apex.y - H.R * 0.03) + ) + cone.addQuadCurve( + to: CGPoint(x: right.x, y: right.y), + control: CGPoint(x: (right.x + apex.x) / 2 + H.rx * 0.06, y: (right.y + apex.y) / 2) + ) + for i in stride(from: front.count - 1, through: 0, by: -1) { + cone.addLine(to: CGPoint(x: front[i].x, y: front[i].y)) + } + cone.closeSubpath() + + ctx.fill(cone, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#FF9BD0"), location: 0), + .init(color: Color(hex: "#F15BAE"), location: 0.5), + .init(color: Color(hex: "#C2187A"), location: 1) + ]), + startPoint: CGPoint(x: left.x, y: apex.y), + endPoint: CGPoint(x: right.x, y: left.y) + )) + + var dotCtx = ctx + dotCtx.clip(to: cone) + // polka dots (skip when simplified) + if !simplified { + let dots: [(CGFloat, CGFloat)] = [ + (0.25, -0.35), (0.3, 0.3), (0.55, -0.05), (0.72, 0.28), + (0.8, -0.3), (0.45, 0.6), (0.48, -0.65) + ] + for (t, u) in dots { + let bx = left.x + (right.x - left.x) * (0.5 + u * 0.5) + let by = left.y + (right.y - left.y) * (0.5 + u * 0.5) + let x = bx + (apex.x - bx) * (1 - t) + let y = by + (apex.y - by) * (1 - t) + let r = H.R * 0.075 * (0.6 + t * 0.5) + var dot = Path() + dot.addEllipse(in: CGRect(x: x - r, y: y - r * 0.9, width: r * 2, height: r * 0.9 * 2)) + dotCtx.fill(dot, with: .color(Color.white.opacity(0.92))) + } + } + dotCtx.fill(cone, with: .linearGradient( + Gradient(stops: [ + .init(color: Color.white.opacity(0.28), location: 0), + .init(color: .clear, location: 0.35), + .init(color: Color(red: 80/255, green: 0, blue: 40/255, opacity: 0.18), location: 1) + ]), + startPoint: CGPoint(x: left.x, y: 0), + endPoint: CGPoint(x: right.x, y: 0) + )) + + // rim at base + if !front.isEmpty { + var rim = Path() + rim.move(to: CGPoint(x: front[0].x, y: front[0].y)) + for i in 1.. 0 ? $0.z >= 0 : $0.z < 0.02 } + guard keep.count >= 2 else { return } + keep.sort { $0.b.x < $1.b.x } + + var shape = Path() + shape.move(to: CGPoint(x: keep[0].tt.x, y: keep[0].tt.y)) + for i in 1.. [P3] { + let y: CGFloat = 0.70, rr: CGFloat = 1.42 + return (0...120).map { i -> P3 in + let a = -.pi + CGFloat(i) / 120 * 2 * .pi + let wob = 1 + 0.035 * sin(a * 3 + 0.6) + let droop = -0.10 * pow(abs(sin(a)), 2) + return mProj(H, (rr * wob * sin(a), y + droop, rr * wob * cos(a))) + } +} + +private func drawWitchHatFront(ctx: inout GraphicsContext, H: MochiH, bodyPath: Path) { + let all = witchBrimPts(H) + var brim = Path() + brim.move(to: CGPoint(x: all[0].x, y: all[0].y)) + for q in all.dropFirst() { brim.addLine(to: CGPoint(x: q.x, y: q.y)) } + brim.closeSubpath() + let fr = all.filter { $0.z >= 0 }.sorted { $0.x < $1.x } + + // shadow on head + var sCtx = ctx + sCtx.clip(to: bodyPath) + sCtx.clip(to: mCapClip(H, y: 0.50, s: 1)) + var sRect = Path() + sRect.addRect(CGRect(x: -H.rx * 4, y: -H.ry * 4, width: H.rx * 8, height: H.ry * 8)) + sCtx.fill(sRect, with: .color(Color(red: 40/255, green: 0, blue: 70/255, opacity: 0.10))) + + // full brim front + ctx.fill(brim, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#5B21B6"), location: 0), + .init(color: Color(hex: "#3B0764"), location: 1) + ]), + startPoint: CGPoint(x: 0, y: -H.ry * 0.9), + endPoint: CGPoint(x: 0, y: -H.ry * 0.3) + )) + if !fr.isEmpty { + var frLine = Path() + frLine.move(to: CGPoint(x: fr[0].x, y: fr[0].y)) + for i in 1..= bl.x - 1 && $0.x <= br.x + 1 + } + + var cone = Path() + cone.move(to: CGPoint(x: bl.x, y: bl.y)) + cone.addCurve( + to: CGPoint(x: top.x - H.rx * 0.02, y: top.y - H.ry * 0.02), + control1: CGPoint(x: bl.x + H.rx * 0.12, y: bl.y - H.ry * 0.5), + control2: CGPoint(x: top.x - H.rx * 0.28, y: top.y + H.ry * 0.25) + ) + cone.addQuadCurve( + to: CGPoint(x: tip.x, y: tip.y), + control: CGPoint(x: top.x + H.rx * 0.25, y: top.y - H.ry * 0.08) + ) + cone.addQuadCurve( + to: CGPoint(x: top.x + H.rx * 0.14, y: top.y + H.ry * 0.22), + control: CGPoint(x: top.x + H.rx * 0.22, y: top.y + H.ry * 0.08) + ) + cone.addCurve( + to: CGPoint(x: br.x, y: br.y), + control1: CGPoint(x: br.x - H.rx * 0.18, y: c.y - H.ry * 0.45), + control2: CGPoint(x: br.x - H.rx * 0.02, y: br.y - H.ry * 0.2) + ) + for i in stride(from: capFront.count - 1, through: 0, by: -1) { + cone.addLine(to: CGPoint(x: capFront[i].x, y: capFront[i].y)) + } + cone.closeSubpath() + + ctx.fill(cone, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#7C3AED"), location: 0), + .init(color: Color(hex: "#4C1D95"), location: 0.55), + .init(color: Color(hex: "#2E1065"), location: 1) + ]), + startPoint: CGPoint(x: bl.x, y: top.y), + endPoint: CGPoint(x: br.x, y: bl.y) + )) + + var coneCtx = ctx + coneCtx.clip(to: cone) + coneCtx.fill(cone, with: .linearGradient( + Gradient(stops: [ + .init(color: Color.white.opacity(0.22), location: 0), + .init(color: .clear, location: 0.4), + .init(color: Color.black.opacity(0.15), location: 1) + ]), + startPoint: CGPoint(x: bl.x, y: 0), + endPoint: CGPoint(x: br.x, y: 0) + )) + // crease + var crease = Path() + crease.move(to: CGPoint(x: top.x - H.rx * 0.05, y: top.y + H.ry * 0.05)) + crease.addQuadCurve( + to: CGPoint(x: top.x + H.rx * 0.2, y: top.y + H.ry * 0.06), + control: CGPoint(x: top.x + H.rx * 0.1, y: top.y + H.ry * 0.12) + ) + coneCtx.stroke(crease, with: .color(Color(red: 20/255, green: 0, blue: 40/255, opacity: 0.35)), + style: StrokeStyle(lineWidth: H.R * 0.05, lineCap: .round)) + + // orange band + let fc = mProj(H, (0, by, baseR)) + let lift = H.ry * 0.11 + var band = Path() + band.move(to: CGPoint(x: bl.x - 2, y: bl.y - lift)) + band.addQuadCurve( + to: CGPoint(x: br.x + 2, y: br.y - lift), + control: CGPoint(x: fc.x, y: 2 * (fc.y - lift) - (bl.y + br.y) / 2) + ) + coneCtx.stroke(band, with: .color(Color(hex: "#F97316")), + style: StrokeStyle(lineWidth: H.ry * 0.17, lineCap: .butt)) + + // buckle + let bk0 = mProj(H, (0, by, baseR)) + let bk = CGPoint(x: bk0.x, y: bk0.y - H.ry * 0.11) + let bw = H.R * 0.2, bh = H.R * 0.16 + var bkCtx = ctx + bkCtx.translateBy(x: bk.x, y: bk.y) + var buckle = Path() + buckle.addRoundedRect( + in: CGRect(x: -bw / 2, y: -bh / 2, width: bw, height: bh), + cornerSize: CGSize(width: bh * 0.25, height: bh * 0.25) + ) + bkCtx.fill(buckle, with: .color(Color(hex: "#FCD34D"))) + var hole = Path() + hole.addRoundedRect( + in: CGRect(x: -bw / 2 + bw * 0.24, y: -bh / 2 + bh * 0.28, + width: bw * 0.52, height: bh * 0.44), + cornerSize: CGSize(width: bh * 0.10, height: bh * 0.10) + ) + bkCtx.fill(hole, with: .color(Color(hex: "#C2410C"))) +} + +// MARK: - Sunglasses + +private func drawSunglassesFront(ctx: inout GraphicsContext, H: MochiH, bodyPath: Path) { + let rollH = MochiH(R: H.R, yaw: H.yaw, pitch: H.pitch + H.roll, physDx: H.physDx, physDy: H.physDy) + let eyes = mEyeFrames(rollH) + let w = H.R * 0.62, h = H.R * 0.46 + + var g = ctx + g.clip(to: bodyPath) + + let le = eyes[0], re = eyes[1] + if le.visible && re.visible { + var bridge = Path() + bridge.move(to: CGPoint(x: le.x + w / 2 * le.fx * 0.9, y: le.y - h * 0.18)) + bridge.addQuadCurve( + to: CGPoint(x: re.x - w / 2 * re.fx * 0.9, y: re.y - h * 0.18), + control: CGPoint(x: (le.x + re.x) / 2, y: (le.y + re.y) / 2 - h * 0.42) + ) + g.stroke(bridge, with: .color(Color(hex: "#111317")), + style: StrokeStyle(lineWidth: H.R * 0.07, lineCap: .round)) + } + for e in eyes { + guard e.visible else { continue } + let ox = e.x + e.sd * w / 2 * e.fx + var temple = Path() + temple.move(to: CGPoint(x: ox, y: e.y - h * 0.2)) + temple.addLine(to: CGPoint(x: e.sd * H.rx * 1.05, y: e.y - h * 0.35)) + g.stroke(temple, with: .color(Color(hex: "#111317")), + style: StrokeStyle(lineWidth: H.R * 0.06, lineCap: .round)) + } + for e in eyes { + guard e.visible else { continue } + var lens = Path() + lens.addRoundedRect( + in: CGRect(x: e.x - w / 2, y: e.y - h * 0.5, width: w, height: h), + cornerSize: CGSize(width: h * 0.42, height: h * 0.42) + ) + // foreshorten lens via scale + var lg = g + lg.translateBy(x: e.x, y: e.y) + lg.scaleBy(x: e.fx, y: e.fy) + var lensLocal = Path() + lensLocal.addRoundedRect( + in: CGRect(x: -w / 2, y: -h / 2, width: w, height: h), + cornerSize: CGSize(width: h * 0.42, height: h * 0.42) + ) + lg.fill(lensLocal, with: .color(Color(red: 17/255, green: 19/255, blue: 23/255, opacity: 0.82))) + lg.stroke(lensLocal, with: .color(Color(hex: "#0B0C0F")), + style: StrokeStyle(lineWidth: H.R * 0.05)) + // glare + var glare = Path() + glare.move(to: CGPoint(x: -w * 0.28, y: -h * 0.05)) + glare.addLine(to: CGPoint(x: -w * 0.05, y: -h * 0.3)) + lg.stroke(glare, with: .color(Color.white.opacity(0.45)), + style: StrokeStyle(lineWidth: H.R * 0.05, lineCap: .round)) + } +} + +// MARK: - Round glasses + +private func drawRoundGlassesFront(ctx: inout GraphicsContext, H: MochiH, bodyPath: Path) { + let rollH = MochiH(R: H.R, yaw: H.yaw, pitch: H.pitch + H.roll, physDx: H.physDx, physDy: H.physDy) + let eyes = mEyeFrames(rollH) + let d = H.R * 0.56 + + var g = ctx + g.clip(to: bodyPath) + + let le = eyes[0], re = eyes[1] + if le.visible && re.visible { + var bridge = Path() + bridge.move(to: CGPoint(x: le.x + d / 2 * le.fx, y: le.y - d * 0.08)) + bridge.addQuadCurve( + to: CGPoint(x: re.x - d / 2 * re.fx, y: re.y - d * 0.08), + control: CGPoint(x: (le.x + re.x) / 2, y: (le.y + re.y) / 2 - d * 0.3) + ) + g.stroke(bridge, with: .color(Color(hex: "#8A4B12")), + style: StrokeStyle(lineWidth: H.R * 0.055, lineCap: .round)) + } + for e in eyes { + guard e.visible else { continue } + var temple = Path() + temple.move(to: CGPoint(x: e.x + e.sd * d / 2 * e.fx, y: e.y - d * 0.1)) + temple.addLine(to: CGPoint(x: e.sd * H.rx * 1.05, y: e.y - d * 0.25)) + g.stroke(temple, with: .color(Color(hex: "#8A4B12")), + style: StrokeStyle(lineWidth: H.R * 0.05, lineCap: .round)) + } + for e in eyes { + guard e.visible else { continue } + var lg = g + lg.translateBy(x: e.x, y: e.y) + lg.scaleBy(x: e.fx, y: e.fy) + // circle fill + var circle = Path() + circle.addEllipse(in: CGRect(x: -d / 2, y: -d / 2, width: d, height: d)) + lg.fill(circle, with: .color(Color(red: 190/255, green: 225/255, blue: 1, opacity: 0.18))) + lg.stroke(circle, with: .color(Color(hex: "#9A5A1A")), + style: StrokeStyle(lineWidth: H.R * 0.065, lineCap: .round)) + // highlight arc + var arcPath = Path() + arcPath.addArc(center: .zero, radius: d / 2 - H.R * 0.03, + startAngle: .radians(.pi * 1.1), endAngle: .radians(.pi * 1.45), clockwise: false) + lg.stroke(arcPath, with: .color(Color.white.opacity(0.55)), + style: StrokeStyle(lineWidth: H.R * 0.03, lineCap: .round)) + } +} + +// MARK: - Scarf + +private func drawScarfFront(ctx: inout GraphicsContext, H: MochiH) { + let s: CGFloat = 1.05, y0: CGFloat = -0.34, y1: CGFloat = -0.66 + let top = mFrontArcRoll(H, y: y0, s: s) + let bot = mFrontArcRoll(H, y: y1, s: s) + guard !top.isEmpty, !bot.isEmpty else { return } + + var band = Path() + band.move(to: CGPoint(x: top[0].x, y: top[0].y)) + for q in top.dropFirst() { band.addLine(to: CGPoint(x: q.x, y: q.y)) } + for i in stride(from: bot.count - 1, through: 0, by: -1) { + band.addLine(to: CGPoint(x: bot[i].x, y: bot[i].y)) + } + band.closeSubpath() + + var g = ctx + g.clip(to: mochiOutfitPath(H.rx * s, H.ry * s)) + g.fill(band, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#F87171"), location: 0), + .init(color: Color(hex: "#B91C1C"), location: 1) + ]), + startPoint: CGPoint(x: 0, y: -H.ry * 0.2), + endPoint: CGPoint(x: 0, y: H.ry * 0.7) + )) + var g2 = g + g2.clip(to: band) + // stripes along meridians + for lon: CGFloat in [-1.0, -0.45, 0.1, 0.65, 1.2] { + let a = mProj(H, mSurf(y0, lon, s)) + let b = mProj(H, mSurf(y1, lon, s)) + if a.z < 0 { continue } + var stripe = Path() + stripe.move(to: CGPoint(x: a.x, y: a.y - 4)) + stripe.addLine(to: CGPoint(x: b.x, y: b.y + 4)) + g2.stroke(stripe, with: .color(Color.white.opacity(0.85)), + style: StrokeStyle(lineWidth: H.R * 0.09 * max(0.3, a.z), lineCap: .round)) + } + g.fill(band, with: .linearGradient( + Gradient(stops: [ + .init(color: Color.white.opacity(0.18), location: 0), + .init(color: Color.black.opacity(0.10), location: 1) + ]), + startPoint: CGPoint(x: 0, y: -H.ry * 0.5), + endPoint: CGPoint(x: 0, y: H.ry * 0.3) + )) + + // hanging end + let k = mProj(H, mSurf((y0 + y1) / 2, -0.55, s * 1.03)) + if k.z > 0 { + let sw = H.physDx * H.rx * 0.12 + var end = Path() + end.move(to: CGPoint(x: k.x - H.R * 0.16, y: k.y)) + end.addQuadCurve( + to: CGPoint(x: k.x - H.R * 0.2 + sw * 1.4, y: k.y + H.ry * 0.62), + control: CGPoint(x: k.x - H.R * 0.24 + sw, y: k.y + H.ry * 0.35) + ) + end.addLine(to: CGPoint(x: k.x + H.R * 0.06 + sw * 1.4, y: k.y + H.ry * 0.60)) + end.addQuadCurve( + to: CGPoint(x: k.x + H.R * 0.12, y: k.y), + control: CGPoint(x: k.x + H.R * 0.02 + sw, y: k.y + H.ry * 0.3) + ) + end.closeSubpath() + ctx.fill(end, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#EF4444"), location: 0), + .init(color: Color(hex: "#B91C1C"), location: 1) + ]), + startPoint: CGPoint(x: 0, y: k.y), + endPoint: CGPoint(x: 0, y: k.y + H.ry * 0.6) + )) + var eCtx = ctx + eCtx.clip(to: end) + // stripes in hanging end + for t: CGFloat in [0.35, 0.7] { + var stripe = Path() + stripe.addRect(CGRect( + x: k.x - H.R * 0.4 + sw, + y: k.y + H.ry * 0.62 * t, + width: H.R * 0.8, height: H.R * 0.07 + )) + eCtx.fill(stripe, with: .color(Color.white.opacity(0.85))) + } + // fringe + for i in 0..<4 { + let fx = k.x - H.R * 0.17 + sw * 1.4 + CGFloat(i) * H.R * 0.075 + var fringe = Path() + fringe.move(to: CGPoint(x: fx, y: k.y + H.ry * 0.6)) + fringe.addLine(to: CGPoint(x: fx, y: k.y + H.ry * 0.72)) + ctx.stroke(fringe, with: .color(Color(hex: "#DC2626")), + style: StrokeStyle(lineWidth: H.R * 0.035, lineCap: .round)) + } + // knot (rotated ellipse) + var knotCtx = ctx + knotCtx.translateBy(x: k.x, y: k.y) + knotCtx.rotate(by: .radians(0.2)) + var knot = Path() + knot.addEllipse(in: CGRect(x: -H.R * 0.17, y: -H.R * 0.14, width: H.R * 0.34, height: H.R * 0.28)) + knotCtx.fill(knot, with: .radialGradient( + Gradient(stops: [ + .init(color: Color(hex: "#F87171"), location: 0), + .init(color: Color(hex: "#B91C1C"), location: 1) + ]), + center: CGPoint(x: -H.R * 0.05, y: -H.R * 0.05), + startRadius: 0, endRadius: H.R * 0.2 + )) + } +} + +// MARK: - Pumpkin + +private func drawPumpkinFront(ctx: inout GraphicsContext, H: MochiH, bodyPath: Path, simplified: Bool = false) { + // ribs only — body recolor is done in BotEngine.drawBody(pumpkinColors:) + if !simplified { + var g = ctx + g.clip(to: bodyPath) + for lon: CGFloat in [-1.15, -0.55, 0.0, 0.55, 1.15] { + var pts: [P3] = [] + for i in 0...30 { + let y = -0.98 + 1.96 * CGFloat(i) / 30 + let q = mProjRoll(H, mSurf(y, lon, 1)) + if q.z > 0 { pts.append(q) } + } + guard pts.count >= 2 else { continue } + var rib = Path() + rib.move(to: CGPoint(x: pts[0].x, y: pts[0].y)) + for pt in pts.dropFirst() { rib.addLine(to: CGPoint(x: pt.x, y: pt.y)) } + let zz = pts[pts.count / 2].z + g.stroke(rib, with: .color(Color(red: 150/255, green: 50/255, blue: 0, opacity: 0.22 * zz)), + style: StrokeStyle(lineWidth: H.R * 0.12, lineCap: .round)) + // highlight offset stripe + var hi = Path() + hi.move(to: CGPoint(x: pts[0].x + H.R * 0.07, y: pts[0].y)) + for pt in pts.dropFirst() { hi.addLine(to: CGPoint(x: pt.x + H.R * 0.07, y: pt.y)) } + g.stroke(hi, with: .color(Color(red: 1, green: 220/255, blue: 170/255, opacity: 0.18 * zz)), + style: StrokeStyle(lineWidth: H.R * 0.04, lineCap: .round)) + } + } + + let t = mProjRoll(H, (0.02, 1.0, 0)) + // stem + var stem = Path() + stem.move(to: CGPoint(x: t.x - H.R * 0.09, y: t.y + H.R * 0.04)) + stem.addQuadCurve( + to: CGPoint(x: t.x + H.R * 0.08, y: t.y - H.R * 0.3), + control: CGPoint(x: t.x - H.R * 0.08, y: t.y - H.R * 0.22) + ) + stem.addLine(to: CGPoint(x: t.x + H.R * 0.13, y: t.y - H.R * 0.22)) + stem.addQuadCurve( + to: CGPoint(x: t.x + H.R * 0.08, y: t.y + H.R * 0.04), + control: CGPoint(x: t.x + H.R * 0.04, y: t.y - H.R * 0.15) + ) + stem.closeSubpath() + ctx.fill(stem, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#65A30D"), location: 0), + .init(color: Color(hex: "#3F6212"), location: 1) + ]), + startPoint: CGPoint(x: t.x - H.R * 0.1, y: 0), + endPoint: CGPoint(x: t.x + H.R * 0.1, y: 0) + )) + + // leaf + var leafCtx = ctx + leafCtx.translateBy(x: t.x - H.R * 0.06, y: t.y - H.R * 0.02) + leafCtx.rotate(by: .radians(-0.5)) + var leaf = Path() + leaf.move(to: .zero) + leaf.addQuadCurve( + to: CGPoint(x: -H.R * 0.38, y: -H.R * 0.02), + control: CGPoint(x: -H.R * 0.18, y: -H.R * 0.2) + ) + leaf.addQuadCurve( + to: .zero, + control: CGPoint(x: -H.R * 0.18, y: H.R * 0.1) + ) + leafCtx.fill(leaf, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#84CC16"), location: 0), + .init(color: Color(hex: "#4D7C0F"), location: 1) + ]), + startPoint: CGPoint(x: 0, y: -H.R * 0.15), + endPoint: CGPoint(x: -H.R * 0.3, y: 0) + )) + var vein = Path() + vein.move(to: CGPoint(x: -H.R * 0.02, y: -H.R * 0.01)) + vein.addQuadCurve( + to: CGPoint(x: -H.R * 0.32, y: -H.R * 0.03), + control: CGPoint(x: -H.R * 0.18, y: -H.R * 0.08) + ) + leafCtx.stroke(vein, with: .color(Color(red: 30/255, green: 60/255, blue: 0, opacity: 0.4)), + style: StrokeStyle(lineWidth: H.R * 0.02, lineCap: .round)) + + // tendril (skip when simplified) + if !simplified { + var tendril = Path() + tendril.move(to: CGPoint(x: t.x + H.R * 0.1, y: t.y - H.R * 0.12)) + tendril.addCurve( + to: CGPoint(x: t.x + H.R * 0.22, y: t.y - H.R * 0.06), + control1: CGPoint(x: t.x + H.R * 0.3, y: t.y - H.R * 0.25), + control2: CGPoint(x: t.x + H.R * 0.35, y: t.y - H.R * 0.02) + ) + ctx.stroke(tendril, with: .color(Color(hex: "#4D7C0F")), + style: StrokeStyle(lineWidth: H.R * 0.03, lineCap: .round)) + } +} + +// MARK: - Bow + +private func drawBowFront(ctx: inout GraphicsContext, H: MochiH, bodyPath: Path) { + let a = mProjRoll(H, mSurf(0.86, 0.55, 1.02)) + guard a.z >= -0.2 else { return } + let s = H.R * 0.26 + let sq = max(0.45, cos(0.55 + H.yaw)) + + var g = ctx + g.translateBy(x: a.x, y: a.y) + g.rotate(by: .radians(0.35 + H.yaw * 0.3)) + g.scaleBy(x: sq, y: 1) + + for sdD: Double in [-1.0, 1.0] { + let sd = CGFloat(sdD) + var wing = Path() + wing.move(to: .zero) + wing.addCurve( + to: CGPoint(x: sd * s * 1.15, y: 0), + control1: CGPoint(x: sd * s * 0.6, y: -s * 0.85), + control2: CGPoint(x: sd * s * 1.35, y: -s * 0.55) + ) + wing.addCurve( + to: .zero, + control1: CGPoint(x: sd * s * 1.35, y: s * 0.55), + control2: CGPoint(x: sd * s * 0.6, y: s * 0.85) + ) + g.fill(wing, with: .linearGradient( + Gradient(stops: [ + .init(color: Color(hex: "#FF8CC6"), location: 0), + .init(color: Color(hex: "#DB2777"), location: 1) + ]), + startPoint: CGPoint(x: 0, y: -s), + endPoint: CGPoint(x: 0, y: s) + )) + // crease + var crease = Path() + crease.move(to: CGPoint(x: sd * s * 0.25, y: -s * 0.05)) + crease.addQuadCurve( + to: CGPoint(x: sd * s * 0.95, y: -s * 0.05), + control: CGPoint(x: sd * s * 0.7, y: -s * 0.15) + ) + g.stroke(crease, with: .color(Color(red: 140/255, green: 10/255, blue: 70/255, opacity: 0.35)), + style: StrokeStyle(lineWidth: s * 0.08, lineCap: .round)) + } + // centre knot + var knot = Path() + knot.addEllipse(in: CGRect(x: -s * 0.24, y: -s * 0.30, width: s * 0.48, height: s * 0.60)) + g.fill(knot, with: .radialGradient( + Gradient(stops: [ + .init(color: Color(hex: "#FFB3D9"), location: 0), + .init(color: Color(hex: "#C2185B"), location: 1) + ]), + center: CGPoint(x: -s * 0.06, y: -s * 0.1), + startRadius: 0, endRadius: s * 0.35 + )) +} diff --git a/NotchBuddy/Sources/CoucouKit/MochiStill.swift b/NotchBuddy/Sources/CoucouKit/MochiStill.swift new file mode 100644 index 0000000..c74edce --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/MochiStill.swift @@ -0,0 +1,89 @@ +import SwiftUI + +/// Mochi in a fixed pose: one frame of BotEngine, no animation, no timer. +/// For surfaces that can't animate (widgets, lists on the iPhone). The Mac +/// island keeps its animated BotCanvasView / MiniBotCanvasView. +struct MochiStill: View { + var state: BotState = .idle + /// Overrides the state's eyes (e.g. .closed for a sleeping agent). + var eye: EyeShape? = nil + /// Body color; white by default, like the mockups. + var bodyHex: String = "#FFFFFF" + var showBadge: Bool = true + /// Where he looks and how his eyes are, for a still that isn't always the same. + var pose: MochiPose = .neutral + + var body: some View { + Canvas { context, size in + let engine = BotEngine() + engine.isMini = true + engine.bodyColor = cgColorFromHex(bodyHex) + engine.state = state + engine.cfg = BotStates[state]! + engine.yaw = pose.yaw + engine.pitch = pose.pitch + engine.tilt = pose.tilt + engine.open = pose.open + if let eye = eye ?? pose.eye { + engine.permanentEye = eye + engine.eyeOverride = eye + engine.eyeOverrideUntil = .greatestFiniteMagnitude + } + engine.draw(context: context, size: size) + if showBadge, let badge = engine.cfg.badge { + engine.badge = badge + engine.badgeS = 1 + engine.drawHandsAndExtras(context: context, size: size) + } + } + .aspectRatio(1, contentMode: .fit) + } +} + +/// One frame of the little life the Mac's mini Mochi have: looking around, +/// blinking, a happy squint. Widgets can't animate, so each refresh of the +/// timeline picks a new pose per Mochi; the system cross-fades between them. +struct MochiPose: Equatable, Sendable { + var yaw: CGFloat = 0 + var pitch: CGFloat = 0 + var tilt: CGFloat = 0 + var open: CGFloat = 1 + var eye: EyeShape? = nil + + static let neutral = MochiPose() + + static let idlePoses: [MochiPose] = [ + MochiPose(), + MochiPose(yaw: -0.45), + MochiPose(yaw: 0.45), + MochiPose(yaw: -0.3, pitch: -0.25), + MochiPose(yaw: 0.35, pitch: 0.2, tilt: 0.08), + MochiPose(pitch: -0.3, tilt: -0.06), + MochiPose(eye: .closed), // blink + MochiPose(yaw: 0.2, eye: .happy), + MochiPose(yaw: -0.5, tilt: -0.1), + MochiPose(yaw: 0.15, pitch: 0.25), + ] + + /// A pose that differs per Mochi and per tick, the same every time for a + /// given pair (so a widget redraw doesn't jump). + static func idle(id: String, tick: Int) -> MochiPose { + var hash: UInt64 = 5381 + for byte in id.utf8 { hash = (hash &* 33) &+ UInt64(byte) } + hash = (hash &* 31) &+ UInt64(truncatingIfNeeded: tick &* 7919) + hash ^= hash >> 13 + return idlePoses[Int(hash % UInt64(idlePoses.count))] + } +} + +extension Color { + /// Background for a white Mochi on an agent's color. Very light colors + /// (VS Code's is near-white) would hide him, so they get a dark gray tile. + static func mochiTile(hex: String) -> Color { + guard let c = cgColorFromHex(hex), let comps = c.components, comps.count >= 3 else { + return Color(hex: hex) + } + let luminance = 0.2126 * comps[0] + 0.7152 * comps[1] + 0.0722 * comps[2] + return luminance > 0.7 ? Color(white: 0.32) : Color(hex: hex) + } +} diff --git a/NotchBuddy/Sources/CoucouKit/MochiWardrobe.swift b/NotchBuddy/Sources/CoucouKit/MochiWardrobe.swift new file mode 100644 index 0000000..98b930e --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/MochiWardrobe.swift @@ -0,0 +1,89 @@ +import Foundation + +enum Outfit: String, CaseIterable { + case auto, none, partyHat, beanie, crown, sunglasses, roundGlasses, + bow, scarf, witchHat, pumpkin, santaHat, bunnyEars + + var displayName: String { + switch self { + case .auto: return "Auto (seasons)" + case .none: return "None" + case .partyHat: return "Party hat" + case .beanie: return "Beanie" + case .crown: return "Crown" + case .sunglasses: return "Sunglasses" + case .roundGlasses: return "Round glasses" + case .bow: return "Bow" + case .scarf: return "Scarf" + case .witchHat: return "Witch hat" + case .pumpkin: return "Pumpkin" + case .santaHat: return "Santa hat" + case .bunnyEars: return "Bunny ears" + } + } + + // Returns the seasonal outfit for the given date (user's local calendar). + // Priority: partyHat > santaHat > witchHat > bunnyEars > sunglasses > none + static func seasonal(for date: Date, calendar: Calendar) -> Outfit { + let day = calendar.component(.day, from: date) + let month = calendar.component(.month, from: date) + let year = calendar.component(.year, from: date) + + // Dec 31 – Jan 2 → party hat + if (month == 12 && day == 31) || (month == 1 && day <= 2) { return .partyHat } + + // Dec 1–26 → santa hat + if month == 12 && day <= 26 { return .santaHat } + + // Oct 1 – Nov 1 → witch hat + if month == 10 || (month == 11 && day == 1) { return .witchHat } + + // Easter −2 / +1 → bunny ears (Meeus/Jones/Butcher algorithm) + let (eMonth, eDay) = easterDate(year: year) + let eComps = DateComponents(year: year, month: eMonth, day: eDay) + if let easterDate = calendar.date(from: eComps) { + let delta = calendar.dateComponents([.day], from: easterDate, to: date).day ?? 0 + if delta >= -2 && delta <= 1 { return .bunnyEars } + } + + // Jun 21 – Aug 31 → sunglasses + if (month == 6 && day >= 21) || month == 7 || month == 8 { return .sunglasses } + + return .none + } + + // If selection == .auto → seasonal; otherwise selection itself. + static func resolved(selection: Outfit, date: Date, calendar: Calendar) -> Outfit { + selection == .auto ? seasonal(for: date, calendar: calendar) : selection + } + + // UserDefaults key "mochiOutfit", default "auto", unknown value → .auto + static var stored: Outfit { + get { + let raw = UserDefaults.standard.string(forKey: "mochiOutfit") ?? "auto" + return Outfit(rawValue: raw) ?? .auto + } + set { + UserDefaults.standard.set(newValue.rawValue, forKey: "mochiOutfit") + } + } +} + +// Meeus/Jones/Butcher algorithm — returns (month, day) of Easter Sunday for the given year. +private func easterDate(year: Int) -> (Int, Int) { + let a = year % 19 + let b = year / 100 + let c = year % 100 + let d = b / 4 + let e = b % 4 + let f = (b + 8) / 25 + let g = (b - f + 1) / 3 + let h = (19 * a + b - d - g + 15) % 30 + let i = c / 4 + let k = c % 4 + let l = (32 + 2 * e + 2 * i - h - k) % 7 + let m = (a + 11 * h + 22 * l) / 451 + let month = (h + l - 7 * m + 114) / 31 + let day = (h + l - 7 * m + 114) % 31 + 1 + return (month, day) +} diff --git a/NotchBuddy/Sources/CoucouKit/PillCatalog.swift b/NotchBuddy/Sources/CoucouKit/PillCatalog.swift new file mode 100644 index 0000000..530b5ec --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/PillCatalog.swift @@ -0,0 +1,108 @@ +import Foundation + +// MARK: - Pill category + +enum PillCategory: String, CaseIterable { + case workspace + case agent + case ai + case service + + var title: String { + switch self { + case .workspace: return "Where you code" + case .agent: return "Agents" + case .ai: return "AI for the chat" + case .service: return "Services" + } + } +} + +// MARK: - Pill definition + +struct PillDefinition { + let id: String + let name: String + let color: String + let category: PillCategory + /// Label shown next to the task name in the idle card header. + let subtitle: String + let source: AgentSource + var comingSoon: Bool = false + var githubOnly: Bool = false + + /// Label shown in the active-session card header (workspace/agent pills only). + var sessionSubtitle: String { + switch id { + case "integration_claude": return "Claude Code" + case "agent_cursor": return "Cursor" + case "agent_codex": return "Codex" + default: return "Agent" + } + } +} + +// MARK: - Catalog + +enum PillCatalog { + // All declared pills in display order. + static let all: [PillDefinition] = [ + // ── Where you code ─────────────────────────────────────────────────── + .init(id: "integration_claude", name: "VS Code", color: "#F5F6F8", + category: .workspace, subtitle: "Integration", source: .claudeCode), + .init(id: "agent_cursor", name: "Cursor", color: "#C0C4CC", + category: .workspace, subtitle: "Integration", source: .agent), + .init(id: "agent_antigravity", name: "Antigravity", color: "#E879F9", + category: .workspace, subtitle: "Integration", source: .agent, githubOnly: true), + .init(id: "agent_codex", name: "Codex", color: "#2DD4BF", + category: .workspace, subtitle: "Integration", source: .agent, githubOnly: true), + // ── Agents ─────────────────────────────────────────────────────────── + .init(id: "agent_gemini", name: "Gemini CLI", color: "#8AB4F8", + category: .agent, subtitle: "Agent", source: .agent, githubOnly: true), + // ── AI for the chat ────────────────────────────────────────────────── + .init(id: "ai_anthropic", name: "Anthropic", color: ChatProvider.anthropic.accentHex, + category: .ai, subtitle: "Chat", source: .n8n), + .init(id: "ai_google", name: "Google AI", color: ChatProvider.google.accentHex, + category: .ai, subtitle: "Chat", source: .n8n), + .init(id: "ai_openai", name: "OpenAI", color: ChatProvider.openai.accentHex, + category: .ai, subtitle: "Chat", source: .n8n), + .init(id: "ai_ollama", name: "Ollama", color: ChatProvider.ollama.accentHex, + category: .ai, subtitle: "Chat", source: .n8n), + .init(id: "ai_lmstudio", name: "LM Studio", color: ChatProvider.lmstudio.accentHex, + category: .ai, subtitle: "Chat", source: .n8n), + // ── Services ───────────────────────────────────────────────────────── + .init(id: "integration_resend", name: "Resend", color: "#22C55E", + category: .service, subtitle: "Integration", source: .n8n), + .init(id: "integration_n8n", name: "n8n", color: "#F29B38", + category: .service, subtitle: "Integration", source: .n8n), + .init(id: "integration_vercel", name: "Vercel", color: "#7C5CFF", + category: .service, subtitle: "Integration", source: .n8n), + .init(id: "integration_github", name: "GitHub", color: "#F4505E", + category: .service, subtitle: "Integration", source: .n8n), + .init(id: "integration_notion", name: "Notion", color: "#8C8C8C", + category: .service, subtitle: "Integration", source: .n8n), + .init(id: "integration_calcom", name: "Cal.com", color: "#C9956A", + category: .service, subtitle: "Integration", source: .n8n), + .init(id: "integration_stripe", name: "Stripe", color: "#0570DE", + category: .service, subtitle: "Integration", source: .n8n), + .init(id: "integration_music", name: "Apple Music", color: "#FA2D48", + category: .service, subtitle: "Integration", source: .n8n, githubOnly: true), + ] + + /// Pills available in the current build target. + static var available: [PillDefinition] { + #if APPSTORE + all.filter { !$0.githubOnly } + #else + all + #endif + } + + /// Default ID for the always-on main workspace pill. + static let defaultMainPillId = "integration_claude" + + /// Looks up a definition by task ID (nil if not in catalog). + static func definition(for id: String) -> PillDefinition? { + all.first { $0.id == id } + } +} diff --git a/NotchBuddy/Sources/CoucouKit/QuestionPayload.swift b/NotchBuddy/Sources/CoucouKit/QuestionPayload.swift new file mode 100644 index 0000000..ae2a12e --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/QuestionPayload.swift @@ -0,0 +1,64 @@ +import CryptoKit +import Foundation + +// A question Claude Code asks (AskUserQuestion), as the iPhone gets it: the +// questions with their choices. The Mac writes it, encrypted, in the session +// record; the iPhone answers with an `Answer` record carrying the same +// fingerprint and the labels picked. The Mac only accepts labels that are +// among the choices of the question still waiting. + +struct QuestionPayload: Codable, Equatable, Sendable { + struct Option: Codable, Equatable, Sendable { + var label: String + var description: String + } + + struct Item: Codable, Equatable, Sendable { + var question: String + var header: String + var options: [Option] + var multiSelect: Bool + } + + var items: [Item] + + /// Stable identifier of this exact question. + var fingerprint: String { + let raw = items.map { item in + ([item.question, item.multiSelect ? "multi" : "single"] + item.options.map(\.label)).joined(separator: "\u{1F}") + }.joined(separator: "\u{1E}") + return SHA256.hash(data: Data(raw.utf8)).map { String(format: "%02x", $0) }.joined() + } + + var json: String { + guard let data = try? JSONEncoder().encode(self) else { return "" } + return String(decoding: data, as: UTF8.self) + } + + static func decode(_ json: String) -> QuestionPayload? { + guard !json.isEmpty else { return nil } + return try? JSONDecoder().decode(QuestionPayload.self, from: Data(json.utf8)) + } + + /// The picks sent back: one list of labels per question. + static func encodeSelections(_ selections: [[String]]) -> String { + guard let data = try? JSONEncoder().encode(selections) else { return "[]" } + return String(decoding: data, as: UTF8.self) + } + + static func decodeSelections(_ json: String) -> [[String]]? { + try? JSONDecoder().decode([[String]].self, from: Data(json.utf8)) + } + + /// True when every pick is one of that question's choices, with one pick + /// per single-choice question. + func accepts(_ selections: [[String]]) -> Bool { + guard selections.count == items.count else { return false } + for (item, picks) in zip(items, selections) { + let labels = Set(item.options.map(\.label)) + guard !picks.isEmpty, picks.allSatisfy(labels.contains) else { return false } + if !item.multiSelect && picks.count != 1 { return false } + } + return true + } +} diff --git a/NotchBuddy/Sources/CoucouKit/ServiceDetail.swift b/NotchBuddy/Sources/CoucouKit/ServiceDetail.swift new file mode 100644 index 0000000..da4af81 --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/ServiceDetail.swift @@ -0,0 +1,81 @@ +import Foundation + +// A service seen up close, for the iPhone: figures, lists and what can be +// done from there. When a service's screen opens, the iPhone asks the Mac for +// it (a `ServiceAction` record of kind "refresh"); the Mac reads the service's +// API with the key in its Keychain and writes a `ServiceDetail` record, +// encrypted. An action (redeploy, re-run, merge…) is the same kind of record: +// the Mac runs it only if the iPhone asked for one it offered on that item, +// then writes the detail again with the result. No key ever leaves the Mac. + +struct ServiceActionDef: Codable, Equatable, Sendable, Hashable { + /// What the Mac does, e.g. "vercel.redeploy", "github.merge". + var kind: String + var title: String + var symbol: String + /// The thing it acts on (deployment id, "owner/repo#12"…). + var target: String + var destructive: Bool = false + /// Asked before doing it, when it can't be undone. + var confirm: String? = nil +} + +struct DetailStat: Codable, Equatable, Sendable { + var label: String + var value: String + var tone: ServiceTone = .idle +} + +struct DetailItem: Codable, Equatable, Sendable { + var title: String + var subtitle: String = "" + var tone: ServiceTone = .idle + var date: Date? = nil + var url: String? = nil + /// A short tag on the right ("Production", "Draft", "Active"…). + var badge: String? = nil + var actions: [ServiceActionDef] = [] +} + +struct DetailSection: Codable, Equatable, Sendable { + var title: String + var items: [DetailItem] + var footer: String? = nil +} + +struct ServiceActionResult: Codable, Equatable, Sendable { + var title: String + var ok: Bool + var message: String + var date: Date +} + +struct ServiceDetail: Codable, Equatable, Sendable { + var pillId: String + var stats: [DetailStat] = [] + var sections: [DetailSection] = [] + var fetchedAt: Date + /// Why the API couldn't be read (no key, 401…). + var error: String? = nil + var lastAction: ServiceActionResult? = nil + + static let recordType = "ServiceDetail" + static let requestType = "ServiceAction" + static let refreshKind = "refresh" + + static func recordName(for pillId: String) -> String { "detail-\(pillId)" } + + static func pillId(fromRecordName name: String) -> String? { + name.hasPrefix("detail-") ? String(name.dropFirst("detail-".count)) : nil + } + + /// The action offered on one of the items, if the Mac offered it. + func offered(kind: String, target: String) -> ServiceActionDef? { + for section in sections { + for item in section.items { + if let action = item.actions.first(where: { $0.kind == kind && $0.target == target }) { return action } + } + } + return nil + } +} diff --git a/NotchBuddy/Sources/CoucouKit/ServiceSnapshot.swift b/NotchBuddy/Sources/CoucouKit/ServiceSnapshot.swift new file mode 100644 index 0000000..66cba84 --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/ServiceSnapshot.swift @@ -0,0 +1,67 @@ +import Foundation + +// What the iPhone shows for one service Mochi (GitHub, Stripe, Vercel, Resend, +// Cal.com, n8n, Notion): its state dot, why it has that color, and the latest +// items the Mac fetched. The Mac builds it from the data its pollers already +// keep (ServicePublisher) and writes it to the private iCloud zone, encrypted; +// the iPhone only reads it. No API key ever leaves the Mac. + +enum ServiceTone: String, Codable, Sendable { + case ok, warning, error, info, idle +} + +struct ServiceItem: Codable, Equatable, Sendable { + var title: String + var detail: String = "" + var tone: ServiceTone = .idle + var date: Date? = nil + var url: String? = nil +} + +struct ServiceSection: Codable, Equatable, Sendable { + var title: String + var items: [ServiceItem] +} + +struct ServiceSnapshot: Codable, Equatable, Sendable { + var pillId: String + var tone: ServiceTone + /// One line under the name ("Balance 1 240,00 EUR", "2 pull requests"). + var headline: String + /// Why the dot has its color ("CI failing on coucou · main"). + var reason: String + var sections: [ServiceSection] + var updatedAt: Date + + static let recordType = "Service" + + static func recordName(for pillId: String) -> String { "service-\(pillId)" } + + static func pillId(fromRecordName name: String) -> String? { + name.hasPrefix("service-") ? String(name.dropFirst("service-".count)) : nil + } + + /// Equal apart from the date: nothing to write again. + func sameContent(as other: ServiceSnapshot) -> Bool { + var a = self, b = other + a.updatedAt = .distantPast + b.updatedAt = .distantPast + return a == b + } +} + +extension PillCatalog { + /// The service Mochi the iPhone shows, in this order. + static let phoneServices = [ + "integration_github", "integration_stripe", "integration_vercel", "integration_resend", + "integration_calcom", "integration_n8n", "integration_notion", + ] + + /// Agent sessions (VS Code, Cursor, Codex…), as opposed to services and chat providers. + static func isSession(_ id: String) -> Bool { + switch definition(for: id)?.category { + case .service, .ai: false + default: true + } + } +} diff --git a/NotchBuddy/Sources/CoucouKit/TurnSnapshot.swift b/NotchBuddy/Sources/CoucouKit/TurnSnapshot.swift new file mode 100644 index 0000000..15f95b0 --- /dev/null +++ b/NotchBuddy/Sources/CoucouKit/TurnSnapshot.swift @@ -0,0 +1,78 @@ +import Foundation + +// The last turn of an agent session, for the iPhone: the prompt you sent, what +// the agent did (commands, reads, searches, edits with their diffs) and its +// final answer. The Mac builds it from the hook events it already receives +// (TurnRecorder) and writes it, encrypted, to the private iCloud zone. Only +// the latest turn per session is kept. + +struct TurnAction: Codable, Equatable, Sendable { + var tool: String // "Bash", "Edit", "Read"… + var summary: String // the command, file or pattern + var output: String = "" // what a command printed (trimmed) + var failed: Bool = false + var date: Date + /// Index in `files` when this action changed a file. + var fileIndex: Int? = nil +} + +struct TurnDiffLine: Codable, Equatable, Sendable { + enum Kind: String, Codable, Sendable { case context, added, removed, gap } + var kind: Kind + var text: String +} + +struct TurnFile: Codable, Equatable, Sendable { + var path: String + var added: Int + var removed: Int + var isNew: Bool + var lines: [TurnDiffLine] + /// Some lines were left out to keep the turn small. + var truncated: Bool = false + + var name: String { URL(fileURLWithPath: path).lastPathComponent } +} + +struct TurnSnapshot: Codable, Equatable, Sendable { + var pillId: String + var sessionId: String + var project: String + var prompt: String + var actions: [TurnAction] + var files: [TurnFile] + var finalMessage: String + var startedAt: Date + var endedAt: Date? + + static let recordType = "Turn" + + static func recordName(for pillId: String) -> String { "turn-\(pillId)" } + + static func pillId(fromRecordName name: String) -> String? { + name.hasPrefix("turn-") ? String(name.dropFirst("turn-".count)) : nil + } +} + +extension TurnFile { + /// The diff lines of a FileDiff (DiffEngine), hunks separated by a gap line. + init(diff: FileDiff, maxLines: Int) { + var lines: [TurnDiffLine] = [] + var truncated = diff.tooLarge + for (index, hunk) in diff.hunks.enumerated() { + if index > 0 { lines.append(TurnDiffLine(kind: .gap, text: "")) } + for line in hunk.lines { + guard lines.count < maxLines else { truncated = true; break } + let kind: TurnDiffLine.Kind + switch line.kind { + case .added: kind = .added + case .removed: kind = .removed + case .context: kind = .context + } + lines.append(TurnDiffLine(kind: kind, text: String(line.text.prefix(400)))) + } + } + self.init(path: diff.path, added: diff.added, removed: diff.removed, + isNew: diff.isNewFile, lines: lines, truncated: truncated) + } +} diff --git a/NotchBuddy/project.yml b/NotchBuddy/project.yml new file mode 100644 index 0000000..114433f --- /dev/null +++ b/NotchBuddy/project.yml @@ -0,0 +1,395 @@ +name: NotchBuddy +options: + bundleIdPrefix: fr.louisraille + deploymentTarget: + macOS: "15.0" + xcodeVersion: "27.0" + createIntermediateGroups: true + +# DebugCloud = Debug, but signed with iCloud (CloudKit) and push entitlements +# and compiled with PHONE_LINK, for the iPhone link spike. ReleaseCloud = the +# same for a Developer ID build with its provisioning profile +# (scripts/cloud-test-build.sh); a Developer ID profile only allows the +# Production CloudKit environment, so the iPhone joins it with the +# CoucouPhoneProduction scheme. Release also compiles PHONE_LINK (the sync +# stays off until turned on in Settings); Debug stays unsigned without it. +configs: + Debug: debug + DebugCloud: debug + Release: release + ReleaseCloud: release + +settings: + base: + SWIFT_VERSION: "6.0" + ENABLE_HARDENED_RUNTIME: YES + CODE_SIGN_STYLE: Manual + OTHER_SWIFT_FLAGS: "-strict-concurrency=complete" + configs: + Debug: + CODE_SIGNING_REQUIRED: NO + CODE_SIGNING_ALLOWED: NO + DebugCloud: + CODE_SIGNING_REQUIRED: YES + CODE_SIGNING_ALLOWED: YES + CODE_SIGN_STYLE: Automatic + CODE_SIGN_IDENTITY: "Apple Development" + DEVELOPMENT_TEAM: 256AUJ9555 + Release: + CODE_SIGNING_REQUIRED: YES + CODE_SIGNING_ALLOWED: YES + CODE_SIGN_IDENTITY: "Developer ID Application" + DEVELOPMENT_TEAM: 256AUJ9555 + OTHER_CODE_SIGN_FLAGS: "--timestamp" + CODE_SIGN_INJECT_BASE_ENTITLEMENTS: NO + CODE_SIGN_ENTITLEMENTS: Resources/Coucou.entitlements + ReleaseCloud: + CODE_SIGNING_REQUIRED: YES + CODE_SIGNING_ALLOWED: YES + CODE_SIGN_IDENTITY: "Developer ID Application" + DEVELOPMENT_TEAM: 256AUJ9555 + OTHER_CODE_SIGN_FLAGS: "--timestamp" + CODE_SIGN_INJECT_BASE_ENTITLEMENTS: NO + +schemes: + NotchBuddy: + build: + targets: + NotchBuddy: all + run: + config: Debug + archive: + config: Release + CoucouAppStore: + build: + targets: + CoucouAppStore: all + run: + config: Debug + archive: + config: Release + NotchBuddyCloud: + build: + targets: + NotchBuddy: all + run: + config: DebugCloud + archive: + config: Release + CoucouAppStoreCloud: + build: + targets: + CoucouAppStore: all + run: + config: DebugCloud + archive: + config: Release + CoucouPhone: + build: + targets: + CoucouPhone: all + run: + config: Debug + archive: + config: Release + # Same iPhone app on the Production CloudKit environment, to talk to the + # Developer ID build (scripts/cloud-test-build.sh), which can only use Production. + CoucouPhoneProduction: + build: + targets: + CoucouPhone: all + run: + config: DebugCloud + archive: + config: Release + +targets: + NotchBuddy: + type: application + platform: macOS + sources: + - path: Sources + type: group + excludes: + - "Phone/**" + - "Widgets/**" + - "NotificationContent/**" + - path: Assets.xcassets + buildPhase: resources + - path: Resources/sounds + buildPhase: resources + type: folder + info: + path: Resources/Info.plist + properties: + CFBundleName: Coucou + CFBundleDisplayName: Coucou + CFBundleIdentifier: fr.louisraille.NotchBuddy + CFBundleVersion: "10" + CFBundleShortVersionString: "0.1.9" + CFBundlePackageType: APPL + LSUIElement: YES + NSHighResolutionCapable: YES + NSSupportsAutomaticGraphicsSwitching: YES + NSAppleEventsUsageDescription: "Pour sauter au terminal, envoyer des mails et piloter Musique." + NSAccessibilityUsageDescription: "Pour lire le titre de la fenêtre active et l'attacher comme contexte." + NSAppTransportSecurity: + NSAllowsLocalNetworking: true + settings: + base: + PRODUCT_BUNDLE_IDENTIFIER: fr.louisraille.NotchBuddy + PRODUCT_NAME: Coucou + INFOPLIST_FILE: Resources/Info.plist + ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon + MACOSX_DEPLOYMENT_TARGET: "15.0" + ENABLE_SANDBOX: NO + configs: + DebugCloud: + CODE_SIGN_ENTITLEMENTS: Resources/CoucouCloud.entitlements + SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG PHONE_LINK" + # The distributed build carries the iPhone sync (off until the user + # turns it on in Settings), so it needs iCloud and its Developer ID profile. + Release: + CODE_SIGN_ENTITLEMENTS: Resources/CoucouReleaseCloud.entitlements + SWIFT_ACTIVE_COMPILATION_CONDITIONS: PHONE_LINK + PROVISIONING_PROFILE_SPECIFIER: "Coucou Developer ID" + ReleaseCloud: + CODE_SIGN_ENTITLEMENTS: Resources/CoucouReleaseCloud.entitlements + SWIFT_ACTIVE_COMPILATION_CONDITIONS: PHONE_LINK + PROVISIONING_PROFILE_SPECIFIER: "Coucou Developer ID" + + CoucouAppStore: + type: application + platform: macOS + sources: + - path: Sources + type: group + excludes: + - "Phone/**" + - "Widgets/**" + - "NotificationContent/**" + - path: Assets.xcassets + buildPhase: resources + - path: Resources/sounds + buildPhase: resources + type: folder + info: + path: Resources/InfoAppStore.plist + properties: + CFBundleName: Coucou + CFBundleDisplayName: Coucou + CFBundleIdentifier: fr.louisraille.Coucou + CFBundleVersion: "5" + CFBundleShortVersionString: "1.1" + CFBundlePackageType: APPL + LSUIElement: YES + NSHighResolutionCapable: YES + NSSupportsAutomaticGraphicsSwitching: YES + LSApplicationCategoryType: public.app-category.developer-tools + ITSAppUsesNonExemptEncryption: NO + NSAppTransportSecurity: + NSAllowsLocalNetworking: true + settings: + base: + PRODUCT_BUNDLE_IDENTIFIER: fr.louisraille.Coucou + PRODUCT_NAME: Coucou + INFOPLIST_FILE: Resources/InfoAppStore.plist + ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon + MACOSX_DEPLOYMENT_TARGET: "15.0" + CODE_SIGN_STYLE: Automatic + CODE_SIGN_IDENTITY: "Apple Development" + CODE_SIGN_ENTITLEMENTS: Resources/CoucouAppStore.entitlements + DEVELOPMENT_TEAM: 256AUJ9555 + SWIFT_ACTIVE_COMPILATION_CONDITIONS: APPSTORE + CODE_SIGNING_ALLOWED: YES + configs: + DebugCloud: + CODE_SIGN_ENTITLEMENTS: Resources/CoucouAppStoreCloud.entitlements + SWIFT_ACTIVE_COMPILATION_CONDITIONS: "APPSTORE PHONE_LINK" + # App Store archive: same iCloud entitlements; Xcode switches push to + # production when exporting for the App Store. + Release: + CODE_SIGN_ENTITLEMENTS: Resources/CoucouAppStoreCloud.entitlements + SWIFT_ACTIVE_COMPILATION_CONDITIONS: "APPSTORE PHONE_LINK" + + # iPhone app. Same bundle ID as the Mac App Store build, for universal purchase. + CoucouPhone: + type: application + platform: iOS + deploymentTarget: "18.0" + dependencies: + - target: CoucouWidgets + - target: CoucouNotificationContent + sources: + - path: Sources/Phone + type: group + # Shared with the Mac targets (they get it through Sources/). + - path: Sources/CoucouKit + type: group + - path: PhoneAssets.xcassets + buildPhase: resources + # Mochi's sounds for the iPhone's notifications. + - path: Resources/sounds/approval.wav + buildPhase: resources + - path: Resources/sounds/finish.wav + buildPhase: resources + - path: Resources/sounds/question.wav + buildPhase: resources + - path: Resources/sounds/error.wav + buildPhase: resources + info: + path: Resources/InfoPhone.plist + properties: + CFBundleName: Coucou + CFBundleDisplayName: Coucou + CFBundleIdentifier: fr.louisraille.Coucou + CFBundleVersion: "3" + CFBundleShortVersionString: "1.0" + CFBundlePackageType: APPL + LSRequiresIPhoneOS: YES + UILaunchScreen: {} + UIApplicationSupportsIndirectInputEvents: YES + UIBackgroundModes: + - remote-notification + # Portrait, except a diff opened full screen (PhoneAppDelegate decides). + UISupportedInterfaceOrientations: + - UIInterfaceOrientationPortrait + - UIInterfaceOrientationLandscapeLeft + - UIInterfaceOrientationLandscapeRight + ITSAppUsesNonExemptEncryption: NO + NSFaceIDUsageDescription: "Coucou asks for Face ID before allowing a command from your iPhone." + NSMicrophoneUsageDescription: "Coucou uses the microphone when you dictate an instruction for Claude Code." + NSSpeechRecognitionUsageDescription: "Coucou turns your voice into the text of an instruction for Claude Code." + NSSupportsLiveActivities: YES + # Lets Mochi move at 120 Hz on ProMotion screens, like the Mac's notch. + CADisableMinimumFrameDurationOnPhone: YES + # Steps change often while an agent works: without this, iOS holds back + # updates once its budget is spent, and "waiting for your OK" came late. + NSSupportsLiveActivitiesFrequentUpdates: YES + # coucou://session/: the widgets open a session in the app. + CFBundleURLTypes: + - CFBundleURLName: fr.louisraille.Coucou + CFBundleURLSchemes: + - coucou + # Which APNs environment the Live Activity tokens belong to (read by the Mac). + CoucouAPNsEnvironment: $(COUCOU_APNS_ENV) + settings: + base: + PRODUCT_BUNDLE_IDENTIFIER: fr.louisraille.Coucou + PRODUCT_NAME: Coucou + INFOPLIST_FILE: Resources/InfoPhone.plist + ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon + # Mochi in other colors, picked in Settings (UIApplication.setAlternateIconName). + ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES: "AppIcon-Blue AppIcon-Green AppIcon-Purple AppIcon-Pink AppIcon-Graphite" + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS: NO + COUCOU_APNS_ENV: production + IPHONEOS_DEPLOYMENT_TARGET: "18.0" + TARGETED_DEVICE_FAMILY: "1" + SUPPORTS_MACCATALYST: NO + CODE_SIGN_STYLE: Automatic + CODE_SIGN_IDENTITY: "Apple Development" + CODE_SIGN_ENTITLEMENTS: Resources/CoucouPhone.entitlements + DEVELOPMENT_TEAM: 256AUJ9555 + CODE_SIGNING_REQUIRED: YES + CODE_SIGNING_ALLOWED: YES + ENABLE_HARDENED_RUNTIME: NO + OTHER_CODE_SIGN_FLAGS: "" + configs: + Debug: + COUCOU_APNS_ENV: development + DebugCloud: + CODE_SIGN_ENTITLEMENTS: Resources/CoucouPhoneProduction.entitlements + COUCOU_APNS_ENV: development + + # Home Screen and Lock Screen widgets (Solo, Team, List, accessories). They + # read the sessions the iPhone app saves to the shared App Group. + CoucouWidgets: + type: app-extension + platform: iOS + deploymentTarget: "18.0" + sources: + - path: Sources/Widgets + type: group + - path: Sources/CoucouKit + type: group + - path: Sources/Phone/SharedSessions.swift + - path: Sources/Phone/MacStubs.swift + - path: Sources/Phone/MochiActivityAttributes.swift + - path: Sources/Phone/OpenLeadMochiIntent.swift + - path: Sources/Phone/DenyApprovalIntent.swift + info: + path: Resources/InfoWidgets.plist + properties: + CFBundleName: CoucouWidgets + CFBundleDisplayName: Coucou + CFBundleIdentifier: fr.louisraille.Coucou.Widgets + CFBundleVersion: "3" + CFBundleShortVersionString: "1.0" + CFBundlePackageType: XPC! + NSExtension: + NSExtensionPointIdentifier: com.apple.widgetkit-extension + settings: + base: + PRODUCT_BUNDLE_IDENTIFIER: fr.louisraille.Coucou.Widgets + SWIFT_ACTIVE_COMPILATION_CONDITIONS: "$(inherited) WIDGET_EXTENSION" + PRODUCT_NAME: CoucouWidgets + INFOPLIST_FILE: Resources/InfoWidgets.plist + IPHONEOS_DEPLOYMENT_TARGET: "18.0" + TARGETED_DEVICE_FAMILY: "1" + SUPPORTS_MACCATALYST: NO + CODE_SIGN_STYLE: Automatic + CODE_SIGN_IDENTITY: "Apple Development" + CODE_SIGN_ENTITLEMENTS: Resources/CoucouWidgets.entitlements + DEVELOPMENT_TEAM: 256AUJ9555 + CODE_SIGNING_REQUIRED: YES + CODE_SIGNING_ALLOWED: YES + ENABLE_HARDENED_RUNTIME: NO + OTHER_CODE_SIGN_FLAGS: "" + SKIP_INSTALL: YES + APPLICATION_EXTENSION_API_ONLY: YES + + # The expanded approval notification: Mochi alive, with the command. + CoucouNotificationContent: + type: app-extension + platform: iOS + deploymentTarget: "18.0" + sources: + - path: Sources/NotificationContent + type: group + - path: Sources/CoucouKit + type: group + - path: Sources/Phone/MochiLive.swift + - path: Sources/Phone/MacStubs.swift + info: + path: Resources/InfoNotificationContent.plist + properties: + CFBundleName: CoucouNotificationContent + CFBundleDisplayName: Coucou + CFBundleIdentifier: fr.louisraille.Coucou.NotificationContent + CFBundleVersion: "3" + CFBundleShortVersionString: "1.0" + CFBundlePackageType: XPC! + NSExtension: + NSExtensionPointIdentifier: com.apple.usernotifications.content-extension + NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).NotificationViewController + NSExtensionAttributes: + UNNotificationExtensionCategory: COUCOU_APPROVAL + UNNotificationExtensionInitialContentSizeRatio: 0.45 + UNNotificationExtensionDefaultContentHidden: true + settings: + base: + PRODUCT_BUNDLE_IDENTIFIER: fr.louisraille.Coucou.NotificationContent + PRODUCT_NAME: CoucouNotificationContent + INFOPLIST_FILE: Resources/InfoNotificationContent.plist + IPHONEOS_DEPLOYMENT_TARGET: "18.0" + TARGETED_DEVICE_FAMILY: "1" + SUPPORTS_MACCATALYST: NO + CODE_SIGN_STYLE: Automatic + CODE_SIGN_IDENTITY: "Apple Development" + DEVELOPMENT_TEAM: 256AUJ9555 + CODE_SIGNING_REQUIRED: YES + CODE_SIGNING_ALLOWED: YES + ENABLE_HARDENED_RUNTIME: NO + OTHER_CODE_SIGN_FLAGS: "" + SKIP_INSTALL: YES + APPLICATION_EXTENSION_API_ONLY: YES diff --git a/README.md b/README.md new file mode 100644 index 0000000..d02ad1d --- /dev/null +++ b/README.md @@ -0,0 +1,284 @@ +

+ +Coucou icon + +# Coucou + +**A tiny friend that lives in your Mac's notch — or at the top of your screen on Windows and Linux — and keeps an eye on your AI coding agent sessions. And now on your iPhone too.** + +Approve permissions, watch your agents work, drop a file, chat with Claude — all without leaving what you're doing. Walk away from your Mac and Mochi follows you to your iPhone: Lock Screen, Dynamic Island, widgets, Siri. + +[![Version](https://img.shields.io/github/v/release/Louis-CFM/coucou?filter=v*&label=version&color=0A84FF)](https://github.com/Louis-CFM/coucou/releases) +![macOS 15+](https://img.shields.io/badge/macOS-15%2B-black?logo=apple) +![iOS 18+](https://img.shields.io/badge/iOS-18%2B-black?logo=apple) +![Windows 10/11](https://img.shields.io/badge/Windows-10%2F11-0078D4?logo=windows&logoColor=white) +![Linux](https://img.shields.io/badge/Linux-AppImage%20%7C%20deb%20%7C%20rpm-FCC624?logo=linux&logoColor=black) +![Swift 6](https://img.shields.io/badge/Swift-6-F05138?logo=swift&logoColor=white) +![SwiftUI](https://img.shields.io/badge/SwiftUI-native-0A84FF) +![Tauri 2](https://img.shields.io/badge/Tauri-2-FFC131?logo=tauri&logoColor=black) +![License: MIT](https://img.shields.io/badge/license-MIT-green) +![GitHub stars](https://img.shields.io/github/stars/Louis-CFM/coucou?style=social) + +Coucou in action + +
+ +--- + +## Why + +Some studios showed off gorgeous notch companions… and never let anyone use them. +**Coucou is the open version.** Every line of code, every animation, every sound — free to use, read, fork and remix. + +Meet **Mochi**: a soft little squircle with big eyes that pops out of your notch, waves hello, follows your cursor with its eyes, gets annoyed when you poke it (and dizzy if you insist), and tells you the moment Claude Code needs you. + +## Features + +- 🤖 **Claude Code, Cursor, Codex, Gemini CLI, Antigravity and other agents, live** — see every session in your notch: what it reads, edits and runs, step by step. Tag a hook payload with `coucou_agent` to give any agent its own pill (see [`docs/AGENTS.md`](docs/AGENTS.md)). Finished? Mochi does a happy little jump. +- See what Claude is editing, live in the notch: each file modification shows the file name and +N −M counts in the ticker, tap to read the full diff +- ✅ **Approve and answer from the notch** — Claude Code permission requests show up with **Allow / Deny / Always**; `AskUserQuestion` prompts show the choices right in the notch (single or multi-select, up to 4 questions). One click, or "Reply in terminal" to fall back to the CLI. Codex also gets Allow / Deny. +- 🧑‍💻 **Jump to the right terminal** — open the exact terminal window of a session *(macOS)*. +- 💬 **Chat with Claude, Gemini, OpenAI, or a local model (Ollama / LM Studio)** — click the model name above the chat box to switch provider and pick a model. Cloud providers use your own API key; local providers connect to a server running on your Mac. *(Gemini, OpenAI and local models: macOS)* +- 📊 **Claude plan usage** *(macOS, GitHub build)* — a small pill in the notch header shows your 5-hour and weekly Claude plan limits. Enable it from Settings → Agents → Plan usage. Pro and Max plans only. +- 📋 **Declare the tools you use** — open Settings → Active pills and pick your main workspace tool (VS Code, Cursor, Codex or Antigravity), then toggle up to 4 more: Gemini CLI, Anthropic, Google AI, OpenAI, Ollama, LM Studio and service integrations *(macOS)*. +- 📎 **Drop a file on the notch** — Mochi turns into a box and swallows it, then ask a question about it or send it by email *(email: macOS, Mail.app)*. +- 🖥️ **Mochi on the desktop** — drag Mochi out of the island to set him loose on your desktop: he floats as a 120 pt companion, follows your cursor, wears his outfit, reacts to alerts by flying home and flying back, and comes back where you left him on next launch. +- 🪟 **Drag Mochi onto any window** — attach that window as context for Claude *(macOS)*. +- 🔌 **Integrations** — Stripe payments, n8n workflows, GitHub (open PRs, reviews requested, CI status), Vercel deployments, Resend emails, Notion, Cal.com. Each one gets its own little colored Mochi. +- 🎵 **Apple Music pill** *(macOS, GitHub build)* — add the Apple Music pill in Settings → Active pills to see what's playing and control playback from the notch; Mochi dances while it plays. +- 👗 **Dress Mochi up** — right-click him for the wardrobe. He also dresses up for the seasons on his own. +- ⌨️ **Keyboard shortcuts** — open the chat, jump to an alert or a terminal, switch pills, mute, send Mochi to the desktop or open the wardrobe from anywhere; all customizable in Settings → Shortcuts. +- 🎭 **A real character** — idle breathing, blinks, eyes on a sphere that follow your mouse, emotes, 28 handcrafted sounds, a greeting on launch. +- 🫥 **Invisible when idle** — hides away when nothing is running, peeks out when you hover the notch (the top edge of the screen on Windows and Linux). +- 🖥️ **Any Mac, notch or not** — on an iMac, a Mac mini, or a MacBook with its lid closed on an external display, Mochi sits in a small bar at the top of the screen. +- 📱 **Coucou on iPhone** — your sessions, approvals and services in your pocket, with Live Activities, widgets and Siri. See [Coucou on iPhone](#coucou-on-iphone). +- 🔒 **Private by design** — no telemetry, no account. Keys live in your macOS Keychain, Windows Credential Manager or Linux Secret Service (GNOME Keyring, KWallet). The app only talks to the services you plug in. + +## Coucou on iPhone + +The Mac app does the work; the iPhone app keeps you in the loop when you step away. It goes as far into the Apple ecosystem as a dev tool can: + + + + + + + + + + +
Mochi on the Lock Screen, waiting for your OK with Deny and Allow
A permission request on the iPhone, Allow with Face IDA Claude Code session on the iPhone: the prompt, what it did, Claude's answer and the next instructionHome Screen widgets with each agent's and service's Mochi
+ +- 🏝️ **Live Activity and Dynamic Island** — lock your Mac while an agent works and Mochi moves to your iPhone's Lock Screen and Dynamic Island with the agent's state, then comes back to the notch when you unlock. **Allow** or **Deny** a permission right from the Lock Screen, without opening the app. +- 🔔 **Notifications you can act on** — Allow, Review or Deny a permission, pick an answer to Claude's question, or reply to a finished agent, straight from the notification. +- 🔐 **Face ID on every Allow** — nothing runs on your Mac without your explicit tap; your Mac only applies a decision meant for the exact request it is waiting on. +- 💬 **Talk to your agents** — follow each session live (steps, diffs, the last turn), answer questions, and send the next instruction to your Mac by text or voice. +- 🧩 **Widgets, Control Center, Siri and Shortcuts** — home and Lock Screen widgets, a Control Center control, ask Siri how your agents are doing or send Claude an instruction, in Siri and Shortcuts. +- 🔎 **Spotlight and Focus** — find past turns in Spotlight; a Focus filter shows only the agents waiting for you. +- 📊 **Your services up close** — GitHub, Vercel, Stripe, Cal.com, n8n, Notion, Resend: your Mac reads their APIs with the keys in its Keychain and the iPhone shows the figures and lists. Safe actions (re-run CI, redeploy, merge a PR, pause a workflow) behind Face ID; nothing that moves money or sends an email. +- 🫧 **Liquid Glass, native to the bone** — SwiftUI, tabs, zoom transitions, context menus, swipe actions, alternate icons, Mochi at 120 Hz. +- 🔒 **Through your own iCloud** — sessions sync through your private CloudKit database; project names, commands and questions are encrypted with your iCloud keys. No Coucou server sees your projects, commands or keys. Turn it on in the Mac app: Settings → General → iPhone. + +**Get it on your iPhone in 3 steps:** install Coucou on your iPhone ([Join the TestFlight beta](https://testflight.apple.com/join/3GpeHv2b) — free, App Store coming soon), turn on **Settings → General → iPhone** in the Mac app (0.1.9 or later), and use the same Apple Account in iCloud on both. Full guide, troubleshooting and build-it-yourself: [docs/IPHONE.md](docs/IPHONE.md). + + + + + + + + + + +
Claude Code sessionStripe payments
Chat with ClaudeToo many hits
+ +## Versions + +macOS releases are published as `v*` tags. See [CHANGELOG.md](CHANGELOG.md) for the full notes of each version. + +| Version | Date | Highlights | +|---------|------|------------| +| [0.1.9](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.9) | Oct 6, 2026 | iPhone services with live details and actions, smarter Live Activity | +| [0.1.8](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.8) | Oct 5, 2026 | Coucou on iPhone: sessions, widgets, approvals with Face ID, Mochi in the Dynamic Island | +| [0.1.7](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.7) | Oct 4, 2026 | Keyboard shortcuts | +| [0.1.6](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.6) | Oct 4, 2026 | Mochi on the desktop | +| [0.1.5](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.5) | Oct 4, 2026 | Wardrobe and seasonal outfits, new launch greeting | +| [0.1.4](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.4) | Oct 3, 2026 | Live diffs, GitHub pull requests, CI, reviews and contribution grid | +| [0.1.3](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.3) | Oct 3, 2026 | Answer Claude's questions from the notch, plan usage, local models, Apple Music | +| [0.1.2](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.2) | Oct 2, 2026 | Codex and Cursor support, the permission card stays until you answer | +| [0.1.1](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.1) | Oct 2, 2026 | Gemini and OpenAI chat, Linux build, more agents and pills, security hardening | +| [0.1.0](https://github.com/Louis-CFM/coucou/releases/tag/v0.1.0) | Sep 27, 2026 | First release: Mochi, Claude Code sessions, chat, file drop, integrations | + +Windows 0.1.1 and Linux 0.1.1 (beta) are in Releases under the `windows-v*` and `linux-v*` tags. + +## Install + +### App Store + +Coucou is coming to the **Mac App Store** and the **iPhone App Store**: one click to install, automatic updates, and the iPhone app pairs with your Mac through your iCloud account, with nothing to configure. The links will be here as soon as Apple publishes them. + +The App Store build of the Mac app runs in Apple's sandbox, so a few features stay in the GitHub build: Claude plan usage, the Apple Music pill and attaching the front window to the chat. + +### iPhone + +1. **Install Coucou on your iPhone** (iOS 18 or later): install [TestFlight](https://apps.apple.com/app/testflight/id899247664) from the App Store, then [Join the TestFlight beta](https://testflight.apple.com/join/3GpeHv2b). The beta is free; Apple limits it to 10,000 testers. The App Store version is coming soon. + *Apple is reviewing the beta: it opens within a day or two — if the link isn't accepting testers yet, check back soon.* +2. **On your Mac**, with Coucou 0.1.9 or later: **Settings… → General → iPhone**, turn on **Show my agent sessions on my iPhone**, and **Move Mochi to my iPhone's Dynamic Island when my Mac is locked** for the Lock Screen. +3. **Same Apple Account** in iCloud on the Mac and the iPhone. That's the whole link: no account, no pairing code. +4. Open Coucou on the iPhone, allow notifications, and start a Claude Code session on the Mac. + +Everything else, troubleshooting included, is in [docs/IPHONE.md](docs/IPHONE.md). + +### Download for macOS + +1. Grab the latest `Coucou.zip` from [Releases](https://github.com/Louis-CFM/coucou/releases). +2. Unzip and move **Coucou.app** to `/Applications`. +3. Launch it, and click **Open** when macOS asks you to confirm. Updating from 0.1.0? macOS may ask you, once for each key you saved, to let Coucou use it: enter your Mac password and click **Always Allow**. + +### Windows + +The Windows installer is **temporarily unavailable**. Microsoft Defender wrongly +flags the unsigned installer as malware; a false-positive report is under review +at Microsoft and the installer will come back once it is cleared and signed. +Until then you can [build it from source](#build-from-source). + +There is no notch on a PC, so the island slides out of the top edge of the screen +instead of hiding inside one. See [`windows/README.md`](windows/README.md) for the +rest of the differences. + +### Linux + +The first Linux build is out as a beta: download it from [Coucou for Linux 0.1.1 (beta)](https://github.com/Louis-CFM/coucou/releases/tag/linux-v0.1.1), x86_64 only for now. Later versions will be in [Releases](https://github.com/Louis-CFM/coucou/releases) under `linux-v*` tags. + +- **AppImage** (any distribution): `chmod +x Coucou-Linux-*.AppImage`, then run it. +- **Debian / Ubuntu**: `sudo apt install ./Coucou-Linux-*.deb` +- **Fedora / openSUSE**: `sudo dnf install ./Coucou-Linux-*.rpm` + +Check a download with `sha256sum -c SHA256SUMS --ignore-missing`. Gemini CLI, Antigravity, Google AI, OpenAI and local model (Ollama / LM Studio) chat are macOS only for now. + +The island sits on the top edge on compositors with layer-shell — COSMIC, KDE +Plasma, Hyprland, Sway and other wlroots compositors. GNOME has no layer-shell, +so there it opens as a regular window. See [`windows/README.md`](windows/README.md#linux). + +### Build from source + +**macOS** — requirements: macOS 15+, Xcode 16+, [XcodeGen](https://github.com/yonaskolb/XcodeGen). + +```bash +brew install xcodegen +git clone https://github.com/Louis-CFM/coucou.git +cd coucou/NotchBuddy +xcodegen +open NotchBuddy.xcodeproj # then ⌘R +``` + +**Windows** — requirements: [Rust](https://rustup.rs), Node 20+, MSVC build tools. + +```powershell +git clone https://github.com/Louis-CFM/coucou.git +cd coucou/windows +npm install +npm run pack # installer lands in windows/release/ +``` + +**Linux** — requirements: [Rust](https://rustup.rs), Node 20+, and the WebKitGTK, +gtk-layer-shell and appindicator development packages (Debian/Ubuntu names below). + +```bash +sudo apt install build-essential pkg-config \ + libwebkit2gtk-4.1-dev libgtk-layer-shell-dev libayatana-appindicator3-dev \ + librsvg2-dev libssl-dev libdbus-1-dev patchelf \ + gstreamer1.0-plugins-base gstreamer1.0-plugins-good +git clone https://github.com/Louis-CFM/coucou.git +cd coucou/windows +npm install +npm run pack # AppImage, .deb and .rpm land in windows/release/ +``` + +## Setup + +Click the Coucou icon in the menu bar (macOS) or in the system tray (Windows, Linux) → **Settings…** + +| What | Why | Where the key goes | +|---|---|---| +| **Claude Code hooks** | live sessions and approvals | **Install hooks** — Coucou backs up `~/.claude/settings.json`, merges its hooks and shows you the diff before writing anything | +| **Claude plan** *(macOS, GitHub build)* | Plan usage gauge in the notch header | **Install relay** in Settings → Agents → Plan usage, then enable "Show in the notch" | +| **Gemini CLI hooks** *(macOS)* | Gemini CLI sessions in the island | **Install hooks** in Settings → Gemini CLI — backs up `~/.gemini/settings.json` | +| **Antigravity (agy) hooks** *(macOS)* | agy sessions in the island | **Install hooks** in Settings → Antigravity — backs up `~/.gemini/config/hooks.json` | +| **Anthropic API key** | chat and questions about files | Settings → Anthropic API · Keychain / Windows Credential Manager / Secret Service | +| **Google AI API key** *(macOS)* | chat with Google AI (Gemini) | Settings → Chat — other providers · Keychain | +| **OpenAI API key** *(macOS)* | chat with OpenAI | Settings → Chat — other providers · Keychain | +| **Ollama server** *(macOS)* | chat with local models via Ollama | Settings → Chat → Local models → **Connect** | +| **LM Studio server** *(macOS)* | chat with local models via LM Studio | Settings → Chat → Local models → **Connect** | +| **iPhone** *(macOS)* | sessions, approvals, questions and Mochi on your iPhone | Settings → General → iPhone · your private iCloud, see [docs/IPHONE.md](docs/IPHONE.md) | +| **Active pills** *(macOS)* | choose which tools and agents appear in the island | Settings → Active pills | +| Stripe, n8n, GitHub, Vercel, Resend, Notion, Cal.com | the service pills | Keychain / Windows Credential Manager / Secret Service, all optional | + +If Coucou isn't running, the hook exits immediately: **Claude Code is never blocked.** + +## Things to try + +| Do this | Mochi does that | +|---|---| +| Hover the notch (top edge on Windows and Linux) | peeks out and says hi 👋 | +| Click it | opens | +| Hover Mochi | blinks, eyes grow | +| Click Mochi | squish + annoyed | +| Click 3 times fast | 😵‍💫 dizzy for a few seconds | +| Drag a file onto the island | turns into a box and swallows it | +| Drag Mochi onto a window *(macOS)* | attaches it as context | +| Click the model name above the chat box *(macOS)* | switch AI provider or model | + +## How it works + +**macOS** + +- **Island**: a borderless `NSPanel` hugging the notch, driven by a small state machine (`hidden → petit → home`). +- **Character**: drawn in SwiftUI `Canvas` + `TimelineView` at 60 fps — squircle body, eyes projected on a sphere, spring animations. No Rive, no Lottie, no images. +- **Claude Code**: a tiny `nb-hook` script receives hook events and forwards them over a Unix socket to the app. For approvals it waits for your click, then answers the hook. +- **Integrations**: lightweight pollers, paused when nothing is watching. +- **Declared pills**: `PillCatalog.swift` is the single source of truth — every pill (coding tools, agents, AI providers, services) is declared there with its ID, color and category. +- **Sounds**: 28 short WAVs played through preloaded `AVAudioPlayer`s. + +The macOS app is native Swift 6 / SwiftUI / AppKit with **zero third-party dependencies**. + +**iPhone** + +- A native SwiftUI app sharing Mochi's engine, the pills and the diff engine with the Mac through `CoucouKit`. +- The Mac publishes sessions, turns and services to a private CloudKit zone in your iCloud (sensitive fields encrypted with your iCloud keys); the iPhone reads them and writes back decisions, answers and instructions, which the Mac only applies when they match what it is waiting on. +- Live Activities are started and updated by APNs pushes through [`relay/`](relay/), a stateless Cloudflare Worker that holds the APNs key and only sees the agent's name and state. + +**Windows** + +- A [Tauri 2](https://tauri.app) app (Rust + TypeScript): the island is a transparent, always-on-top window that never steals focus, Mochi is drawn in Canvas 2D with the same shapes, timings and sounds as on the Mac. +- Claude Code hooks go through a tiny `coucou-hook.exe` and a named pipe; keys live in Windows Credential Manager. +- Details and differences in [`windows/README.md`](windows/README.md). + +**Linux** + +- The same Tauri app as Windows. On Wayland the island is a gtk-layer-shell + overlay anchored to the top edge, and click-through is its input region. +- Claude Code hooks go through the same `coucou-hook`, over a Unix socket in + `$XDG_RUNTIME_DIR`; keys live in the Secret Service. + +## Contributing + +Issues and PRs are very welcome — new integrations, new emotes, new sounds, bug fixes. See [CONTRIBUTING.md](CONTRIBUTING.md). + +## Credits + +Built by [Louis Raillé](https://louisraille.fr) with Claude Code. +Inspired by the notch-companion concepts shared by design studios — this project is independent and not affiliated with any of them. + +## License + +- **Code:** [MIT](LICENSE) — use it, fork it, learn from it, just keep the copyright notice. +- **Name, Mochi character, icon, sounds and media:** © Louis Raillé, all rights reserved — see [LICENSE-ASSETS.md](LICENSE-ASSETS.md). Shipping your own fork? Give it your own name and character. + +
+ +**If Mochi made you smile, a ⭐ helps a lot.** + +[Website](https://louis-cfm.github.io/coucou/) · [Privacy](https://louis-cfm.github.io/coucou/privacy.html) · [Terms](https://louis-cfm.github.io/coucou/terms.html) · [Support](https://louis-cfm.github.io/coucou/support.html) + +
diff --git a/scripts/RenderOutfits.swift b/scripts/RenderOutfits.swift new file mode 100644 index 0000000..3e1642c --- /dev/null +++ b/scripts/RenderOutfits.swift @@ -0,0 +1,331 @@ +// RenderOutfits.swift — standalone planche renderer for Mochi outfits +// Compile + run via: bash scripts/render-outfits.sh +// Output: /tmp/coucou-outfits.png + +import Foundation +import SwiftUI +import AppKit + +// MARK: - Stubs (substitutes for app-only types) + +@MainActor +final class SoundEngine { + static let shared = SoundEngine() + var enabled: Bool = false + func play(_ name: String) {} +} + +extension Notification.Name { + static let botDizzy = Notification.Name("notchBuddy.botDizzy") + static let botGreet = Notification.Name("notchBuddy.botGreet") + static let botBlink = Notification.Name("notchBuddy.botBlink") + static let botSetTgEs = Notification.Name("notchBuddy.botSetTgEs") + static let botGulp = Notification.Name("notchBuddy.botGulp") + static let botMorphTo = Notification.Name("notchBuddy.botMorphTo") + static let triggerEmote = Notification.Name("notchBuddy.triggerEmote") + static let triggerSlap = Notification.Name("notchBuddy.triggerSlap") + static let greetComplete = Notification.Name("notchBuddy.greetComplete") + static let greetingHover = Notification.Name("notchBuddy.greetingHover") + static let greetingInterrupt = Notification.Name("notchBuddy.greetingInterrupt") + static let islandAction = Notification.Name("notchBuddy.islandAction") + static let islandCollapse = Notification.Name("notchBuddy.islandCollapse") + static let hookReveal = Notification.Name("notchBuddy.hookReveal") + static let musicReveal = Notification.Name("notchBuddy.musicReveal") + static let openFullSettings = Notification.Name("notchBuddy.openFullSettings") +} + +extension Color { + init(hex: String) { + let h = hex.trimmingCharacters(in: CharacterSet(charactersIn: "#")) + let val = UInt64(h, radix: 16) ?? 0 + let r = Double((val >> 16) & 0xFF) / 255 + let g = Double((val >> 8) & 0xFF) / 255 + let b = Double( val & 0xFF) / 255 + self.init(red: r, green: g, blue: b) + } +} + +// MARK: - Cell view — one outfit at one pose + +struct MochiCell: View { + let outfit: Outfit + let yaw: CGFloat + let pitch: CGFloat + let tilt: CGFloat + let phys: (dx: CGFloat, dy: CGFloat) + let cellSize: CGFloat + var roll: CGFloat = 0 + var presence: CGFloat = 1 + + var body: some View { + Canvas { context, sz in + let W = sz.width, H = sz.height + // scale=0.62, R = W * 0.62 * 0.3 + let R = W * 0.62 * 0.3 + let rx = R * 1.14 + let ry = R * 0.88 + let cx = W / 2 + let cy = H / 2 + R * 0.06 + let sx: CGFloat = 1, sy: CGFloat = 1 + let morph: CGFloat = 0 + + let mH = MochiH(R: R, yaw: yaw, pitch: pitch, physDx: phys.dx, physDy: phys.dy, roll: roll) + + // 1. Behind-body outfit + drawOutfitBehindStatic( + context: context, outfit: outfit, H: mH, + cx: cx, cy: cy, tilt: tilt, sx: sx, sy: sy, + roll: roll, morph: morph, isMini: false, presence: presence + ) + + // 2. Body (replicate BotEngine.drawBody for idle / pumpkin state) + var bCtx = context + bCtx.translateBy(x: cx, y: cy) + if tilt != 0 { bCtx.rotate(by: .radians(tilt)) } + bCtx.scaleBy(x: sx, y: sy) + let body = mochiOutfitPath(rx, ry) + + // Base gradient (pumpkin-aware) + let pumpkin = outfit == .pumpkin + let cTop: Color = pumpkin ? Color(hex: "#FFA94D") : Color(red: 0.929, green: 0.929, blue: 0.937) + let cBot: Color = pumpkin ? Color(hex: "#E8590C") : Color(red: 0.769, green: 0.773, blue: 0.792) + bCtx.fill(body, with: .linearGradient( + Gradient(colors: [cTop, cBot]), + startPoint: CGPoint(x: rx * 0.7, y: -ry * 0.85), + endPoint: CGPoint(x: -rx * 0.8, y: ry * 0.9) + )) + // Shadow rim + bCtx.fill(body, with: .radialGradient( + Gradient(stops: [ + .init(color: .clear, location: 0.6), + .init(color: Color.black.opacity(0.2), location: 1) + ]), + center: .zero, startRadius: R * 0.15, endRadius: R * 1.25 + )) + // Top-left highlight + bCtx.fill(body, with: .radialGradient( + Gradient(stops: [ + .init(color: Color.white.opacity(0.55), location: 0), + .init(color: .clear, location: 1) + ]), + center: CGPoint(x: rx * 0.34, y: -ry * 0.46), + startRadius: 0, endRadius: R * 0.42 + )) + + // 3. Eyes (clipped to body) + var eyeBase = bCtx + eyeBase.clip(to: body) + let ink = Color(red: 0.102, green: 0.082, blue: 0.071) + for f in mEyeFrames(mH) { + guard f.visible else { continue } + var eCtx = eyeBase + eCtx.translateBy(x: f.x, y: f.y) + eCtx.scaleBy(x: f.fx, y: f.fy) + let hh = max(f.h, f.w * 0.3) + var pill = Path() + pill.addRoundedRect( + in: CGRect(x: -f.w / 2, y: -hh / 2, width: f.w, height: hh), + cornerSize: CGSize(width: min(f.w / 2, hh / 2), height: min(f.w / 2, hh / 2)) + ) + eCtx.fill(pill, with: .color(ink)) + } + + // 4. Front outfit + drawOutfitFrontStatic( + context: context, outfit: outfit, H: mH, + cx: cx, cy: cy, tilt: tilt, sx: sx, sy: sy, + roll: roll, morph: morph, isMini: false, presence: presence + ) + } + .frame(width: cellSize, height: cellSize) + } +} + +// MARK: - Grid view + +// Outfit order matching sheet.html +private let targetOutfits: [Outfit] = [ + .none, .beanie, .santaHat, .partyHat, .crown, .witchHat, + .sunglasses, .roundGlasses, .scarf, .pumpkin, .bow, +] + +private struct PoseSpec { + let label: String + let yaw: CGFloat + let pitch: CGFloat + let tilt: CGFloat + let phys: (dx: CGFloat, dy: CGFloat) + let size: CGFloat +} + +// Columns matching sheet.html cols array + small pill-preview column (W=190, scale=0.62; small=64) +private let poses: [PoseSpec] = [ + PoseSpec(label: "L", yaw: -0.5, pitch: 0, tilt: 0, phys: (0.6, 0), size: 190), + PoseSpec(label: "front", yaw: 0, pitch: 0, tilt: 0, phys: (0, 0), size: 190), + PoseSpec(label: "R", yaw: 0.5, pitch: 0, tilt: 0, phys: (-0.6, 0), size: 190), + PoseSpec(label: "up", yaw: 0.15, pitch: 0.4, tilt: 0, phys: (0, 0.4), size: 190), + PoseSpec(label: "down", yaw: -0.2, pitch: -0.5, tilt: 0, phys: (0, -0.4), size: 190), + PoseSpec(label: "tilt", yaw: 0.3, pitch: -0.25, tilt: 0.12, phys: (-0.3, 0), size: 190), + PoseSpec(label: "mini", yaw: 0, pitch: 0, tilt: 0, phys: (0, 0), size: 64), +] + +private let labelW: CGFloat = 90 +private let gap: CGFloat = 6 + +struct OutfitGrid: View { + var body: some View { + VStack(alignment: .leading, spacing: gap) { + // Column headers + HStack(spacing: gap) { + Spacer().frame(width: labelW) + ForEach(poses.indices, id: \.self) { i in + Text(poses[i].label) + .font(.system(size: 9, design: .monospaced)) + .foregroundColor(.gray) + .frame(width: poses[i].size, alignment: .center) + } + } + // One row per outfit + ForEach(targetOutfits.indices, id: \.self) { oi in + let outfit = targetOutfits[oi] + HStack(spacing: gap) { + Text(outfit.rawValue) + .font(.system(size: 10)) + .foregroundColor(.white) + .frame(width: labelW, alignment: .trailing) + ForEach(poses.indices, id: \.self) { pi in + let p = poses[pi] + MochiCell(outfit: outfit, yaw: p.yaw, pitch: p.pitch, + tilt: p.tilt, phys: p.phys, cellSize: p.size) + .background(pi == poses.count - 1 + ? Color.black + : Color(red: 0.083, green: 0.090, blue: 0.106)) + .clipShape(RoundedRectangle(cornerRadius: pi == poses.count - 1 ? 0 : 8)) + } + } + } + } + .padding(12) + .background(Color(red: 0.043, green: 0.047, blue: 0.055)) + } +} + +// MARK: - Roll planche + +private let rollOutfits: [Outfit] = [ + .none, .beanie, .santaHat, .witchHat, .crown, + .sunglasses, .roundGlasses, .scarf, .bow, .pumpkin, .bunnyEars +] + +private let rollValues: [CGFloat] = [0, CGFloat.pi/3, CGFloat.pi*2/3, CGFloat.pi, CGFloat.pi*4/3, CGFloat.pi*5/3] + +struct RollGrid: View { + var body: some View { + VStack(alignment: .leading, spacing: gap) { + // Column headers + HStack(spacing: gap) { + Spacer().frame(width: labelW) + ForEach(rollValues.indices, id: \.self) { i in + Text(String(format: "%.2fπ", rollValues[i] / .pi)) + .font(.system(size: 9, design: .monospaced)) + .foregroundColor(.gray) + .frame(width: 120, alignment: .center) + } + } + ForEach(rollOutfits.indices, id: \.self) { oi in + let outfit = rollOutfits[oi] + HStack(spacing: gap) { + Text(outfit.rawValue) + .font(.system(size: 10)) + .foregroundColor(.white) + .frame(width: labelW, alignment: .trailing) + ForEach(rollValues.indices, id: \.self) { ri in + MochiCell(outfit: outfit, yaw: 0, pitch: 0, tilt: 0, phys: (0, 0), + cellSize: 120, roll: rollValues[ri]) + .background(Color(red: 0.083, green: 0.090, blue: 0.106)) + .clipShape(RoundedRectangle(cornerRadius: 8)) + } + } + } + } + .padding(12) + .background(Color(red: 0.043, green: 0.047, blue: 0.055)) + } +} + +// MARK: - Transition planche + +private let transitionOutfits: [Outfit] = [.witchHat, .santaHat, .bunnyEars, .scarf] +private let presenceValues: [CGFloat] = [0, 0.3, 0.6, 1] + +struct TransitionGrid: View { + var body: some View { + VStack(alignment: .leading, spacing: gap) { + // Column headers + HStack(spacing: gap) { + Spacer().frame(width: labelW) + ForEach(presenceValues.indices, id: \.self) { i in + Text(String(format: "p=%.1f", presenceValues[i])) + .font(.system(size: 9, design: .monospaced)) + .foregroundColor(.gray) + .frame(width: 120, alignment: .center) + } + } + ForEach(transitionOutfits.indices, id: \.self) { oi in + let outfit = transitionOutfits[oi] + HStack(spacing: gap) { + Text(outfit.rawValue) + .font(.system(size: 10)) + .foregroundColor(.white) + .frame(width: labelW, alignment: .trailing) + ForEach(presenceValues.indices, id: \.self) { pi in + MochiCell(outfit: outfit, yaw: 0, pitch: 0, tilt: 0, phys: (0, 0), + cellSize: 120, presence: presenceValues[pi]) + .background(Color(red: 0.083, green: 0.090, blue: 0.106)) + .clipShape(RoundedRectangle(cornerRadius: 8)) + } + } + } + } + .padding(12) + .background(Color(red: 0.043, green: 0.047, blue: 0.055)) + } +} + +// MARK: - Helper to render and save a view + +@MainActor +private func renderAndSave(_ view: V, path: String) { + let renderer = ImageRenderer(content: view) + renderer.scale = 2.0 + guard let nsImage = renderer.nsImage else { + print("Error: ImageRenderer returned nil for \(path)") + return + } + guard let tiff = nsImage.tiffRepresentation, + let rep = NSBitmapImageRep(data: tiff), + let png = rep.representation(using: .png, properties: [:]) + else { + print("Error: PNG conversion failed for \(path)") + return + } + do { + try png.write(to: URL(fileURLWithPath: path)) + print("✓ \(path) — \(Int(nsImage.size.width))×\(Int(nsImage.size.height)) @ 2×") + } catch { + print("Error writing \(path): \(error)") + } +} + +// MARK: - Entry point + +@main +struct RenderOutfits { + static func main() { + MainActor.assumeIsolated { + renderAndSave(OutfitGrid(), path: "/tmp/coucou-outfits.png") + renderAndSave(RollGrid(), path: "/tmp/coucou-roll.png") + renderAndSave(TransitionGrid(), path: "/tmp/coucou-transition.png") + } + } +} diff --git a/scripts/cloud-test-build.sh b/scripts/cloud-test-build.sh new file mode 100755 index 0000000..7491313 --- /dev/null +++ b/scripts/cloud-test-build.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash +# iPhone plan, step 2: builds the GitHub app (fr.louisraille.NotchBuddy) the +# way release.sh does — Release optimizations, Developer ID signature — plus +# the "Coucou Developer ID" provisioning profile, the iCloud entitlements and +# the PHONE_LINK probe. Not notarized, not published: it only proves that a +# Developer ID build can talk to iCloud. A Developer ID profile only allows the +# Production CloudKit environment: the Ping/Pong schema must be deployed to +# Production in the CloudKit Console first. +# +# ./scripts/cloud-test-build.sh +# +# The normal release (scripts/release.sh, Release configuration) is unchanged. +set -euo pipefail + +REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" +BUILD_DIR="/tmp/coucou-cloud-test" +APP="$BUILD_DIR/Coucou.app" +PROFILE_NAME="Coucou Developer ID" +APP_ID="256AUJ9555.fr.louisraille.NotchBuddy" +CONTAINER="iCloud.fr.louisraille.Coucou" + +die() { echo "error: $*" >&2; exit 1; } + +# ── 1. Developer ID identity ────────────────────────────────────────────────── +IDENTITY=$(security find-identity -v -p codesigning | grep "Developer ID Application" | head -1 | sed 's/.*"\(Developer ID Application[^"]*\)".*/\1/' || true) +[ -n "$IDENTITY" ] || die "no 'Developer ID Application' certificate found. Install it via Xcode → Settings → Accounts." +echo "Signing with: $IDENTITY" + +# ── 2. Provisioning profile ─────────────────────────────────────────────────── +# Xcode looks in both folders depending on its version. Double-clicking a +# downloaded .provisionprofile on macOS doesn't reliably put it in either. +TMP_PLIST=$(mktemp) +trap 'rm -f "$TMP_PLIST"' EXIT +FOUND="" +for dir in "$HOME/Library/Developer/Xcode/UserData/Provisioning Profiles" "$HOME/Library/MobileDevice/Provisioning Profiles"; do + [ -d "$dir" ] || continue + for f in "$dir"/*.provisionprofile; do + [ -f "$f" ] || continue + security cms -D -i "$f" > "$TMP_PLIST" 2>/dev/null || continue + NAME=$(/usr/libexec/PlistBuddy -c "Print :Name" "$TMP_PLIST" 2>/dev/null || true) + [ "$NAME" = "$PROFILE_NAME" ] || continue + FOUND="$f" + break 2 + done +done +[ -n "$FOUND" ] || die "no provisioning profile named '$PROFILE_NAME' is installed. + developer.apple.com → Profiles → + → Developer ID → App ID fr.louisraille.NotchBuddy, + name it exactly '$PROFILE_NAME' and download it. Then copy it for Xcode: + mkdir -p ~/Library/Developer/Xcode/UserData/Provisioning\\ Profiles + cp ~/Downloads/*.provisionprofile ~/Library/Developer/Xcode/UserData/Provisioning\\ Profiles/" +echo "Profile: $FOUND" + +PROFILE_APP_ID=$(/usr/libexec/PlistBuddy -c "Print :Entitlements:com.apple.application-identifier" "$TMP_PLIST" 2>/dev/null || true) +[ "$PROFILE_APP_ID" = "$APP_ID" ] || die "the profile is for '$PROFILE_APP_ID', not $APP_ID" +/usr/libexec/PlistBuddy -c "Print :Entitlements:com.apple.developer.icloud-container-identifiers" "$TMP_PLIST" 2>/dev/null | grep -q "$CONTAINER" \ + || die "the profile has no iCloud container $CONTAINER. Turn on iCloud (CloudKit, with that container) on the App ID fr.louisraille.NotchBuddy, then regenerate and reinstall the profile." +EXPIRY=$(/usr/libexec/PlistBuddy -c "Print :ExpirationDate" "$TMP_PLIST") +echo "Profile expires: $EXPIRY" + +# ── 3. Build ────────────────────────────────────────────────────────────────── +cd "$REPO_ROOT/NotchBuddy" +xcodegen generate +rm -rf "$BUILD_DIR" && mkdir -p "$BUILD_DIR" +xcodebuild \ + -project NotchBuddy.xcodeproj \ + -scheme NotchBuddy \ + -configuration ReleaseCloud \ + build \ + CODE_SIGN_IDENTITY="$IDENTITY" \ + CONFIGURATION_BUILD_DIR="$BUILD_DIR" \ + -quiet \ + || die "the build failed (see the errors above)" + +# ── 4. Checks ───────────────────────────────────────────────────────────────── +[ -f "$APP/Contents/embedded.provisionprofile" ] || die "the profile was not embedded in the app" +codesign --verify --deep --strict "$APP" || die "the signature does not verify" +echo +echo "Entitlements of the built app:" +codesign -d --entitlements - --xml "$APP" 2>/dev/null | plutil -p - || true + +echo +echo "✓ Built $APP (Developer ID, not notarized)." +echo +echo "To test:" +echo " 1. Quit any other Coucou (menu bar icon → Quit) and stop it in Xcode." +echo " 2. open $APP" +echo " 3. tail -f ~/Library/Logs/NotchBuddy/nb.log | grep PhoneLink" +echo " 4. Developer ID builds use the Production CloudKit environment: run the iPhone" +echo " app with the CoucouPhoneProduction scheme, pull to refresh, then tap Send pong." diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100755 index 0000000..bd3fe4b --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,173 @@ +#!/usr/bin/env bash +# Builds, notarizes and publishes Coucou for macOS (GitHub build). +# +# ./scripts/release.sh 0.1.2 build, sign, notarize, staple, tag, publish +# ./scripts/release.sh 0.1.2 --finish finish after an interrupted notarization wait +# +# Run it from a clean checkout of main. CFBundleShortVersionString in +# NotchBuddy/project.yml must match the version, and CHANGELOG.md needs a +# "## " section: it becomes the release notes. +set -euo pipefail + +VERSION="${1:?Usage: $0 [--finish]}" +MODE="${2:-}" +REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" +BUILD_DIR="/tmp/coucou-release-$VERSION" +APP="$BUILD_DIR/Coucou.app" +ZIP="$BUILD_DIR/Coucou.zip" +COMMIT_FILE="$BUILD_DIR/commit" +TAG="v$VERSION" + +die() { echo "error: $*" >&2; exit 1; } + +case "$MODE" in + ""|--finish) ;; + *) die "unknown option '$MODE' (the only option is --finish)" ;; +esac + +cd "$REPO_ROOT" + +# ── Checks shared by both modes ─────────────────────────────────────────────── +command -v gh >/dev/null || die "gh is not installed (brew install gh)" + +# The "## " section of CHANGELOG.md, without leading or trailing blank lines. +CHANGES=$(awk -v head="## $VERSION" ' + index($0, head " ") == 1 || $0 == head { found = 1; next } + found && /^## / { exit } + found { + if ($0 ~ /^[ \t\r]*$/) { if (started) blanks++; next } + while (blanks > 0) { print ""; blanks-- } + print; started = 1 + } +' CHANGELOG.md) +[ -n "$CHANGES" ] || die "CHANGELOG.md has no '## $VERSION' section" + +grep -q "| \[$VERSION\]" README.md || die "README.md has no row for $VERSION in the Versions table" + +if git rev-parse -q --verify "refs/tags/$TAG" >/dev/null; then + die "tag $TAG already exists here" +fi +if git ls-remote --exit-code --tags origin "refs/tags/$TAG" >/dev/null 2>&1; then + die "tag $TAG already exists on GitHub" +fi + +if [ "$MODE" != "--finish" ]; then + # The release must match a commit: no uncommitted changes to tracked files. + if ! git diff --quiet || ! git diff --cached --quiet; then + die "commit or stash your changes first, the release has to match a commit" + fi + COMMIT=$(git rev-parse HEAD) + + # ── 1. Developer ID identity ──────────────────────────────────────────────── + # "|| true": with pipefail, grep finding nothing would end the script silently. + IDENTITY=$(security find-identity -v -p codesigning | grep "Developer ID Application" | head -1 | sed 's/.*"\(Developer ID Application[^"]*\)".*/\1/' || true) + [ -n "$IDENTITY" ] || die "no 'Developer ID Application' certificate found. Install it via Xcode → Settings → Accounts." + echo "Signing with: $IDENTITY" + + # ── 1b. Developer ID provisioning profile (iCloud for the iPhone sync) ────── + PROFILE_NAME="Coucou Developer ID" + PROFILE_FOUND="" + TMP_PLIST=$(mktemp) + for dir in "$HOME/Library/Developer/Xcode/UserData/Provisioning Profiles" "$HOME/Library/MobileDevice/Provisioning Profiles"; do + [ -d "$dir" ] || continue + for f in "$dir"/*.provisionprofile; do + [ -f "$f" ] || continue + security cms -D -i "$f" > "$TMP_PLIST" 2>/dev/null || continue + [ "$(/usr/libexec/PlistBuddy -c "Print :Name" "$TMP_PLIST" 2>/dev/null || true)" = "$PROFILE_NAME" ] || continue + PROFILE_FOUND="$f" + break 2 + done + done + [ -n "$PROFILE_FOUND" ] || { rm -f "$TMP_PLIST"; die "no provisioning profile named '$PROFILE_NAME'. developer.apple.com → Profiles → Developer ID (Mac) for fr.louisraille.NotchBuddy, then copy it to ~/Library/Developer/Xcode/UserData/Provisioning Profiles/"; } + EXPIRY=$(/usr/libexec/PlistBuddy -c "Print :ExpirationDate" "$TMP_PLIST") + rm -f "$TMP_PLIST" + echo "Profile: $PROFILE_FOUND (expires $EXPIRY)" + + # ── 2. xcodegen + Release build ───────────────────────────────────────────── + cd "$REPO_ROOT/NotchBuddy" + PLIST_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" Resources/Info.plist 2>/dev/null || true) + [ "$PLIST_VERSION" = "$VERSION" ] || die "NotchBuddy/Resources/Info.plist is version $PLIST_VERSION, not $VERSION: run xcodegen and commit Info.plist" + xcodegen generate + PLIST_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" Resources/Info.plist) + [ "$PLIST_VERSION" = "$VERSION" ] || die "project.yml says $PLIST_VERSION, not $VERSION: update CFBundleShortVersionString in NotchBuddy/project.yml" + + rm -rf "$BUILD_DIR" && mkdir -p "$BUILD_DIR" + echo "$COMMIT" > "$COMMIT_FILE" + + xcodebuild \ + -project NotchBuddy.xcodeproj \ + -scheme NotchBuddy \ + -configuration Release \ + build \ + CODE_SIGN_IDENTITY="$IDENTITY" \ + CODE_SIGNING_REQUIRED=YES \ + CODE_SIGNING_ALLOWED=YES \ + CONFIGURATION_BUILD_DIR="$BUILD_DIR" + + [ -f "$APP/Contents/embedded.provisionprofile" ] || die "the provisioning profile was not embedded in the app" + codesign -d --entitlements - --xml "$APP" 2>/dev/null | grep -q "iCloud.fr.louisraille.Coucou" \ + || die "the app is not signed with the iCloud entitlements" + + # ── 3. Zip + notarize ─────────────────────────────────────────────────────── + ditto -c -k --keepParent "$APP" "$ZIP" + echo + echo "Sending to Apple for notarization. If you stop the wait (Ctrl+C), Apple keeps going:" + echo " check it with xcrun notarytool history --keychain-profile coucou-notary" + echo " once Accepted ./scripts/release.sh $VERSION --finish" + echo + xcrun notarytool submit "$ZIP" --keychain-profile coucou-notary --wait \ + || die "notarization failed: see xcrun notarytool log --keychain-profile coucou-notary (the id is printed above)" + cd "$REPO_ROOT" +else + [ -d "$APP" ] && [ -f "$COMMIT_FILE" ] || die "nothing to finish in $BUILD_DIR, run ./scripts/release.sh $VERSION first" + COMMIT=$(cat "$COMMIT_FILE") +fi + +# ── 4. Staple + verify ──────────────────────────────────────────────────────── +xcrun stapler staple "$APP" \ + || die "stapling failed: Apple has not accepted the build yet. Check xcrun notarytool history --keychain-profile coucou-notary, then run ./scripts/release.sh $VERSION --finish" +spctl -a -vv "$APP" + +# ── 5. Re-zip (with the stapled app) ────────────────────────────────────────── +rm -f "$ZIP" +ditto -c -k --keepParent "$APP" "$ZIP" +echo "Release zip ready: $ZIP" + +# ── 6. Tag the built commit + GitHub release ────────────────────────────────── +NOTES="Coucou $VERSION for macOS 15 or later (Apple silicon and Intel). + +Signed with a Developer ID and notarized by Apple. + +## What's new + +$CHANGES + +## Install + +1. Download Coucou.zip below and unzip it. +2. Move Coucou.app to your Applications folder, replacing the old one if you have it. +3. Launch it, and click Open when macOS asks you to confirm. + +Linux and Windows: see the [README](https://github.com/Louis-CFM/coucou#readme)." + +echo +echo "──────── Release notes ────────" +echo "$NOTES" +echo "───────────────────────────────" +echo +read -r -p "Tag $(git rev-parse --short "$COMMIT") as $TAG and publish this release? [y/N] " ANSWER +case "$ANSWER" in + y|Y|yes|oui|o|O) ;; + *) die "stopped before tagging. Run ./scripts/release.sh $VERSION --finish to publish later." ;; +esac + +git tag "$TAG" "$COMMIT" +git push origin "$TAG" + +gh release create "$TAG" "$ZIP" \ + --repo Louis-CFM/coucou \ + --title "Coucou $VERSION" \ + --latest \ + --notes "$NOTES" + +echo "✓ $TAG released: https://github.com/Louis-CFM/coucou/releases/tag/$TAG" diff --git a/scripts/render-outfits.sh b/scripts/render-outfits.sh new file mode 100644 index 0000000..88b704f --- /dev/null +++ b/scripts/render-outfits.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# render-outfits.sh — compile and run the Mochi outfit planche renderer +# NOT in CI. Run manually: bash scripts/render-outfits.sh +# Output: /tmp/coucou-outfits.png + +set -e +cd "$(dirname "$0")/.." + +SDK=$(xcrun --sdk macosx --show-sdk-path) + +echo "Compiling renderer..." +swiftc \ + -parse-as-library \ + -sdk "$SDK" \ + -target arm64-apple-macosx15.0 \ + NotchBuddy/Sources/CoucouKit/IslandScreenGeometry.swift \ + NotchBuddy/Sources/CoucouKit/IslandTypes.swift \ + NotchBuddy/Sources/CoucouKit/MochiWardrobe.swift \ + NotchBuddy/Sources/CoucouKit/BotEngine.swift \ + NotchBuddy/Sources/CoucouKit/MochiOutfitDrawing.swift \ + scripts/RenderOutfits.swift \ + -framework AppKit \ + -framework SwiftUI \ + -o /tmp/coucou-render-outfits \ + 2>&1 + +echo "Running renderer..." +/tmp/coucou-render-outfits +echo "Opening..." +open /tmp/coucou-outfits.png diff --git a/scripts/test-ask-question.sh b/scripts/test-ask-question.sh new file mode 100755 index 0000000..c1c5aba --- /dev/null +++ b/scripts/test-ask-question.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-ask-question.XXXXXX")" +trap 'rm -rf "$TEST_DIR"' EXIT +swiftc NotchBuddy/Sources/App/AskQuestion.swift \ + tests/AskQuestionTests.swift -o "$TEST_DIR/ask-question-tests" +"$TEST_DIR/ask-question-tests" diff --git a/scripts/test-chat-parsing.sh b/scripts/test-chat-parsing.sh new file mode 100755 index 0000000..9ad898f --- /dev/null +++ b/scripts/test-chat-parsing.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." + +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-chat-parsing.XXXXXX")" +SERVER_PID="" +trap 'rm -rf "$TEST_DIR"; [ -n "$SERVER_PID" ] && kill "$SERVER_PID" 2>/dev/null || true' EXIT + +PORT_FILE="$TEST_DIR/port.txt" + +# ── Start fake LLM server ──────────────────────────────────────────────────── +python3 tests/fake_local_llm.py "$PORT_FILE" & +SERVER_PID=$! + +# ── Compile test binary (runs in parallel with server startup) ─────────────── +# Compilation typically takes a few seconds, which gives the server plenty of +# time to bind and write its port — avoiding a busy-wait on fast machines. +swiftc \ + NotchBuddy/Sources/App/LocalChat.swift \ + NotchBuddy/Sources/App/ChatMarkdown.swift \ + tests/ChatParsingTests.swift \ + -o "$TEST_DIR/chat-parsing-tests" + +# ── Wait for server port file (up to 30 s) ─────────────────────────────────── +for i in $(seq 1 300); do + # Bail out immediately if the server process has already died + if ! kill -0 "$SERVER_PID" 2>/dev/null; then + echo "ERROR: fake LLM server process exited unexpectedly" >&2 + exit 1 + fi + [ -s "$PORT_FILE" ] && break + sleep 0.1 +done + +if [ ! -s "$PORT_FILE" ]; then + echo "ERROR: fake LLM server did not write its port within 30 s" >&2 + exit 1 +fi + +PORT=$(cat "$PORT_FILE") +echo "Fake LLM server listening on port $PORT (PID $SERVER_PID)" + +# ── Run tests ──────────────────────────────────────────────────────────────── +"$TEST_DIR/chat-parsing-tests" "$PORT" diff --git a/scripts/test-desktop-mochi.sh b/scripts/test-desktop-mochi.sh new file mode 100755 index 0000000..b36c789 --- /dev/null +++ b/scripts/test-desktop-mochi.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-desktop.XXXXXX")" +trap 'rm -rf "$TEST_DIR"' EXIT +swiftc NotchBuddy/Sources/App/DesktopMochiLogic.swift \ + tests/DesktopMochiTests.swift -o "$TEST_DIR/desktop-mochi-tests" +"$TEST_DIR/desktop-mochi-tests" diff --git a/scripts/test-diff-engine.sh b/scripts/test-diff-engine.sh new file mode 100755 index 0000000..115a7df --- /dev/null +++ b/scripts/test-diff-engine.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-diff-engine.XXXXXX")" +trap 'rm -rf "$TEST_DIR"' EXIT +swiftc NotchBuddy/Sources/CoucouKit/DiffEngine.swift \ + tests/DiffEngineTests.swift -o "$TEST_DIR/diff-engine-tests" +"$TEST_DIR/diff-engine-tests" diff --git a/scripts/test-github-activity.sh b/scripts/test-github-activity.sh new file mode 100755 index 0000000..b09de35 --- /dev/null +++ b/scripts/test-github-activity.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-github-activity.XXXXXX")" +trap 'rm -rf "$TEST_DIR"' EXIT +swiftc NotchBuddy/Sources/App/GitHubActivity.swift \ + tests/GitHubActivityTests.swift -o "$TEST_DIR/github-activity-tests" +"$TEST_DIR/github-activity-tests" diff --git a/scripts/test-github-pulse.sh b/scripts/test-github-pulse.sh new file mode 100755 index 0000000..7b6e984 --- /dev/null +++ b/scripts/test-github-pulse.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-github-pulse.XXXXXX")" +trap 'rm -rf "$TEST_DIR"' EXIT +swiftc NotchBuddy/Sources/App/GitHubPulse.swift \ + tests/GitHubPulseTests.swift -o "$TEST_DIR/github-pulse-tests" +"$TEST_DIR/github-pulse-tests" diff --git a/scripts/test-plan-gauge.sh b/scripts/test-plan-gauge.sh new file mode 100755 index 0000000..9133fad --- /dev/null +++ b/scripts/test-plan-gauge.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-plan-gauge.XXXXXX")" +trap 'rm -rf "$TEST_DIR"' EXIT +swiftc NotchBuddy/Sources/App/ClaudePlanGauge.swift \ + tests/ClaudePlanGaugeTests.swift -o "$TEST_DIR/plan-gauge-tests" +"$TEST_DIR/plan-gauge-tests" diff --git a/scripts/test-safe-links.sh b/scripts/test-safe-links.sh new file mode 100755 index 0000000..cfc112c --- /dev/null +++ b/scripts/test-safe-links.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-safe-links.XXXXXX")" +trap 'rm -rf "$TEST_DIR"' EXIT +swiftc NotchBuddy/Sources/App/SafeWebURL.swift \ + tests/SafeWebURLTests.swift -o "$TEST_DIR/safe-links-tests" +"$TEST_DIR/safe-links-tests" diff --git a/scripts/test-screen-geometry.sh b/scripts/test-screen-geometry.sh new file mode 100644 index 0000000..71e0026 --- /dev/null +++ b/scripts/test-screen-geometry.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-geometry.XXXXXX")" +trap 'rm -rf "$TEST_DIR"' EXIT +swiftc NotchBuddy/Sources/CoucouKit/IslandScreenGeometry.swift \ + tests/IslandScreenGeometryTests.swift -o "$TEST_DIR/geometry-tests" +"$TEST_DIR/geometry-tests" diff --git a/scripts/test-shortcuts.sh b/scripts/test-shortcuts.sh new file mode 100755 index 0000000..bfa4cff --- /dev/null +++ b/scripts/test-shortcuts.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-shortcuts.XXXXXX")" +trap 'rm -rf "$TEST_DIR"' EXIT +swiftc NotchBuddy/Sources/App/ShortcutLogic.swift \ + tests/ShortcutTests.swift -o "$TEST_DIR/shortcut-tests" +"$TEST_DIR/shortcut-tests" diff --git a/scripts/test-wardrobe.sh b/scripts/test-wardrobe.sh new file mode 100755 index 0000000..14b1854 --- /dev/null +++ b/scripts/test-wardrobe.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")/.." +TEST_DIR="$(mktemp -d "${TMPDIR:-/tmp}/coucou-wardrobe.XXXXXX")" +trap 'rm -rf "$TEST_DIR"' EXIT +swiftc NotchBuddy/Sources/CoucouKit/MochiWardrobe.swift \ + tests/MochiWardrobeTests.swift -o "$TEST_DIR/wardrobe-tests" +"$TEST_DIR/wardrobe-tests" diff --git a/tests/AskQuestionTests.swift b/tests/AskQuestionTests.swift new file mode 100644 index 0000000..981b724 --- /dev/null +++ b/tests/AskQuestionTests.swift @@ -0,0 +1,121 @@ +import Foundation + +@main +enum AskQuestionTests { + + static var failures = 0 + + static func check(_ label: String, _ got: String, _ expected: String) { + if got == expected { + print(" ✓ \(label)") + } else { + print(" ✗ \(label)") + print(" got: \(got.debugDescription)") + print(" expected: \(expected.debugDescription)") + failures += 1 + } + } + + static func checkTrue(_ label: String, _ value: Bool) { + if value { print(" ✓ \(label)") } + else { print(" ✗ \(label)"); failures += 1 } + } + + static func main() { + let opt1: [String: Any] = ["label": "Postgres", "description": "Full-text search"] + let opt2: [String: Any] = ["label": "Meilisearch", "description": ""] + let opt3: [String: Any] = ["label": "Algolia", "description": "Managed search"] + + // ── parse ────────────────────────────────────────────────────────────── + print("AskQuestion.parse") + + let single: [String: Any] = ["questions": [ + ["question": "Which search engine?", "header": "Search", "options": [opt1, opt2, opt3], "multiSelect": false] + ]] + let parsed = AskQuestion.parse(toolInput: single) + checkTrue("single question parses", parsed != nil) + checkTrue("question text", parsed?.questions[0].question == "Which search engine?") + checkTrue("header", parsed?.questions[0].header == "Search") + checkTrue("3 options", parsed?.questions[0].options.count == 3) + checkTrue("multiSelect false", parsed?.questions[0].multiSelect == false) + checkTrue("option label", parsed?.questions[0].options[0].label == "Postgres") + + // header truncated at 12 chars + let longHeader: [String: Any] = ["questions": [ + ["question": "Q?", "header": "This is a very long header", "options": [opt1, opt2], "multiSelect": false] + ]] + let lh = AskQuestion.parse(toolInput: longHeader) + checkTrue("header truncated to 12", lh?.questions[0].header.count == 12) + + // multiSelect true + let multi: [String: Any] = ["questions": [ + ["question": "Pick features", "header": "Features", "options": [opt1, opt2, opt3], "multiSelect": true] + ]] + let mParsed = AskQuestion.parse(toolInput: multi) + checkTrue("multiSelect true", mParsed?.questions[0].multiSelect == true) + + // 4 questions (max) + let q: [String: Any] = ["question": "Q?", "header": "", "options": [opt1, opt2], "multiSelect": false] + let four: [String: Any] = ["questions": [q, q, q, q]] + checkTrue("4 questions parses", AskQuestion.parse(toolInput: four) != nil) + + // 5 questions → nil (over max) + let five: [String: Any] = ["questions": [q, q, q, q, q]] + checkTrue("5 questions → nil", AskQuestion.parse(toolInput: five) == nil) + + // 1 option → nil (under min) + let oneOpt: [String: Any] = ["questions": [ + ["question": "Q?", "header": "", "options": [opt1], "multiSelect": false] + ]] + checkTrue("1 option → nil", AskQuestion.parse(toolInput: oneOpt) == nil) + + // missing question text → nil + let noQ: [String: Any] = ["questions": [ + ["header": "", "options": [opt1, opt2], "multiSelect": false] + ]] + checkTrue("missing question → nil", AskQuestion.parse(toolInput: noQ) == nil) + + // empty questions array → nil + checkTrue("empty questions → nil", AskQuestion.parse(toolInput: ["questions": []]) == nil) + + // missing questions key → nil + checkTrue("missing questions → nil", AskQuestion.parse(toolInput: [:]) == nil) + + // option with empty label → nil + let emptyLabel: [String: Any] = ["questions": [ + ["question": "Q?", "header": "", "options": [["label": "", "description": ""], opt2], "multiSelect": false] + ]] + checkTrue("empty option label → nil", AskQuestion.parse(toolInput: emptyLabel) == nil) + + // ── buildAnswers ─────────────────────────────────────────────────────── + print("AskQuestion.buildAnswers") + + let items = AskQuestion.parse(toolInput: multi)!.questions + + AskQuestion.parse(toolInput: single)!.questions + + // items[0] = "Pick features" (multiSelect: true), items[1] = "Which search engine?" (multiSelect: false) + let sel1 = [["Postgres"], ["Meilisearch"]] + let ans1 = AskQuestion.buildAnswers(questions: items, selections: sel1) + checkTrue("multi-select single pick → [String]", (ans1["Pick features"] as? [String]) == ["Postgres"]) + checkTrue("single-select answer → String", (ans1["Which search engine?"] as? String) == "Meilisearch") + + // Multi-select with multiple picks → [String] array + let sel2 = [["Postgres", "Algolia"], []] + let ans2 = AskQuestion.buildAnswers(questions: items, selections: sel2) + checkTrue("multi-select multiple picks → [String]", (ans2["Pick features"] as? [String]) == ["Postgres", "Algolia"]) + checkTrue("unanswered question omitted", ans2["Which search engine?"] == nil) + + // Empty selections → empty dict + let ans3 = AskQuestion.buildAnswers(questions: items, selections: [[], []]) + checkTrue("all empty → empty dict", ans3.isEmpty) + + // ── finish ───────────────────────────────────────────────────────────── + if failures == 0 { + print("\nAll tests passed.") + exit(0) + } else { + print("\n\(failures) test(s) failed.") + exit(1) + } + } +} diff --git a/tests/ChatParsingTests.swift b/tests/ChatParsingTests.swift new file mode 100644 index 0000000..8e3da27 --- /dev/null +++ b/tests/ChatParsingTests.swift @@ -0,0 +1,207 @@ +import Foundation + +// MARK: - Test harness + +@main +enum ChatParsingTests { + + static var failures = 0 + + static func check(_ label: String, _ got: String, _ expected: String) { + if got == expected { + print(" ✓ \(label)") + } else { + print(" ✗ \(label)") + print(" got: \(got.debugDescription)") + print(" expected: \(expected.debugDescription)") + failures += 1 + } + } + + static func checkTrue(_ label: String, _ value: Bool) { + if value { print(" ✓ \(label)") } + else { print(" ✗ \(label)"); failures += 1 } + } + + // MARK: - Entry point + + static func main() async { + + // ── Unit tests (no network) ────────────────────────────────────────── + + print("LocalChat.normaliseURL") + check("strips trailing slash", LocalChat.normaliseURL("http://localhost:11434/"), "http://localhost:11434") + check("strips /api suffix", LocalChat.normaliseURL("http://localhost:11434/api"), "http://localhost:11434") + check("strips /v1 suffix", LocalChat.normaliseURL("http://localhost:1234/v1"), "http://localhost:1234") + check("no-op clean URL", LocalChat.normaliseURL("http://localhost:11434"), "http://localhost:11434") + check("trims whitespace", LocalChat.normaliseURL(" http://localhost:11434 "), "http://localhost:11434") + + print("LocalChat.parseSSEDelta") + let sseData = #"data: {"id":"1","choices":[{"delta":{"content":"hello"}}]}"# + check("parses delta", LocalChat.parseSSEDelta(sseData) ?? "", "hello") + checkTrue("ignores [DONE]", LocalChat.parseSSEDelta("data: [DONE]") == nil) + checkTrue("ignores non-data", LocalChat.parseSSEDelta(": heartbeat") == nil) + checkTrue("ignores null content", + LocalChat.parseSSEDelta(#"data: {"choices":[{"delta":{"content":null}}]}"#) == nil) + checkTrue("ignores missing content", + LocalChat.parseSSEDelta(#"data: {"choices":[{"delta":{}}]}"#) == nil) + + print("LocalChat.filterThinkingBlocks") + check("removes closed block", + LocalChat.filterThinkingBlocks("internalanswer"), "answer") + check("no-op without block", + LocalChat.filterThinkingBlocks("hello"), "hello") + check("multiline block", + LocalChat.filterThinkingBlocks("\nstep1\nstep2\nresult"), "result") + + print("LocalChat.progressiveFilter") + check("open block → hide", + LocalChat.progressiveFilter("\nstep one"), "") + check("open after text → keep prefix", + LocalChat.progressiveFilter("visiblehidden"), "visible") + check("closed block removed", + LocalChat.progressiveFilter("doneanswer"), "answer") + + print("ChatMarkdown.parse") + let blocks = ChatMarkdown.parse( + "## Hello\n\nThis is a paragraph.\n\n- item 1\n- item 2\n\n```swift\nlet x = 1\n```") + checkTrue("heading count", blocks.filter { if case .heading = $0 { return true }; return false }.count == 1) + checkTrue("paragraph count", blocks.filter { if case .paragraph = $0 { return true }; return false }.count == 1) + checkTrue("list item count", blocks.filter { if case .listItem = $0 { return true }; return false }.count == 2) + checkTrue("code block count", blocks.filter { if case .codeBlock = $0 { return true }; return false }.count == 1) + if case .heading(let level, let text) = + blocks.first(where: { if case .heading = $0 { return true }; return false })! { + checkTrue("heading level 2", level == 2) + checkTrue("heading text", text == "Hello") + } else { print(" ✗ heading not found"); failures += 1 } + + print("ChatMarkdown.parse — extended") + // Numbered list preserves number + let numBlocks = ChatMarkdown.parse("1. first\n2. second") + let numItems = numBlocks.filter { if case .listItem = $0 { return true }; return false } + checkTrue("ordered list count", numItems.count == 2) + if case .listItem(let prefix, _, _) = numItems.first! { + checkTrue("ordered prefix is '1.'", prefix == "1.") + } + // Heading requires space after # + checkTrue("heading with space", ChatMarkdown.parse("## Hi").contains { if case .heading = $0 { return true }; return false }) + checkTrue("#nospace is paragraph", ChatMarkdown.parse("#nospace").contains { if case .paragraph = $0 { return true }; return false }) + // Nested list indent + let nested = ChatMarkdown.parse("- top\n - nested") + let items = nested.filter { if case .listItem = $0 { return true }; return false } + checkTrue("nested list count", items.count == 2) + if case .listItem(_, _, let indent) = items[1] { checkTrue("nested indent = 1", indent == 1) } + // Blockquote + let qBlocks = ChatMarkdown.parse("> quoted text") + checkTrue("blockquote parsed", qBlocks.contains { if case .quote = $0 { return true }; return false }) + if case .quote(let text) = qBlocks.first! { checkTrue("quote text", text == "quoted text") } + // Paragraph stops before ordered list + let mixBlocks = ChatMarkdown.parse("intro\n1. item") + checkTrue("paragraph + ordered list", mixBlocks.filter { if case .paragraph = $0 { return true }; return false }.count == 1 + && mixBlocks.filter { if case .listItem = $0 { return true }; return false }.count == 1) + // progressiveFilter hides open think block + check("open think → empty", LocalChat.progressiveFilter("\nhalf"), "") + check("open after text", LocalChat.progressiveFilter("answerhidden"), "answer") + check("closed think removed", LocalChat.progressiveFilter("doneresult"), "result") + + // ── End-to-end tests (fake server) ─────────────────────────────────── + + let baseURL: String = { + guard CommandLine.arguments.count > 1 else { return "" } + return "http://127.0.0.1:\(CommandLine.arguments[1])" + }() + + guard !baseURL.isEmpty else { + print("\n(Skipping end-to-end tests — no server port provided.)") + finish() + } + + print("LocalChat.fetchModels (fake server)") + + let models = await LocalChat.fetchModels(baseURL: baseURL) + checkTrue("models list non-empty", !models.isEmpty) + checkTrue("llama3.2 present", models.contains { $0.id == "llama3.2" }) + checkTrue("nomic-embed-text filtered", !models.contains { $0.id == "nomic-embed-text" }) + + print("LocalChat.streamChat — happy path (fake server)") + + var tokens: [String] = [] + do { + let response = try await LocalChat.streamChat( + baseURL: baseURL, + model: "llama3.2", + messages: [["role": "user", "content": "hello"]], + onToken: { visible in tokens.append(visible) } + ) + checkTrue("sent multiple tokens", tokens.count > 1) + checkTrue("intermediate tokens non-empty", tokens.contains { !$0.isEmpty }) + checkTrue("think block removed from response", !response.contains("")) + checkTrue("markdown heading in response", response.contains("## Answer")) + checkTrue("list item in response", response.contains("- **item 1**")) + checkTrue("code block in response", response.contains("```python")) + } catch { + print(" ✗ unexpected error: \(error)") + failures += 1 + } + + print("LocalChat.streamChat — unknown model (fake server)") + + do { + _ = try await LocalChat.streamChat( + baseURL: baseURL, + model: "unknown-model", + messages: [["role": "user", "content": "hello"]], + onToken: { _ in } + ) + print(" ✗ should have thrown for unknown model") + failures += 1 + } catch let e as LocalChatError { + if case .modelNotFound(let m) = e { + checkTrue("model name in error", m == "unknown-model") + } else { + print(" ✗ wrong error case: \(e)") + failures += 1 + } + } catch { + print(" ✗ unexpected error type: \(error)") + failures += 1 + } + + print("LocalChat.streamChat — unreachable server") + + do { + _ = try await LocalChat.streamChat( + baseURL: "http://127.0.0.1:1", // nothing on port 1 + model: "llama3.2", + messages: [["role": "user", "content": "hello"]], + onToken: { _ in } + ) + print(" ✗ should have thrown for unreachable server") + failures += 1 + } catch let e as LocalChatError { + if case .serverUnreachable = e { + print(" ✓ serverUnreachable error") + } else { + print(" ✗ wrong error case: \(e)") + failures += 1 + } + } catch { + print(" ✗ unexpected error type: \(error)") + failures += 1 + } + + finish() + } + + // MARK: - Finish + + private static func finish() -> Never { + if failures == 0 { + print("\nAll tests passed.") + exit(0) + } else { + print("\n\(failures) test(s) failed.") + exit(1) + } + } +} diff --git a/tests/ClaudePlanGaugeTests.swift b/tests/ClaudePlanGaugeTests.swift new file mode 100644 index 0000000..91fa1ce --- /dev/null +++ b/tests/ClaudePlanGaugeTests.swift @@ -0,0 +1,133 @@ +import Foundation + +@main +enum ClaudePlanGaugeTests { + + static var failures = 0 + + static func check(_ label: String, _ got: String, _ expected: String) { + if got == expected { + print(" ✓ \(label)") + } else { + print(" ✗ \(label)") + print(" got: \(got.debugDescription)") + print(" expected: \(expected.debugDescription)") + failures += 1 + } + } + + static func checkTrue(_ label: String, _ value: Bool) { + if value { print(" ✓ \(label)") } + else { print(" ✗ \(label)"); failures += 1 } + } + + static func main() { + let futureEpoch: Double = Date().timeIntervalSince1970 + 7200 // 2 hours from now + let pastEpoch: Double = Date().timeIntervalSince1970 - 100 // already passed + + // ── parse ────────────────────────────────────────────────────────────── + print("ClaudePlanGauge.parse") + + let full: [String: Any] = ["rate_limits": [ + "five_hour": ["used_percentage": 23.5, "resets_at": futureEpoch], + "seven_day": ["used_percentage": 67.0, "resets_at": futureEpoch], + ]] + let usage = ClaudePlanGauge.parse(payload: full) + checkTrue("parse full payload → non-nil", usage != nil) + checkTrue("five_hour usedPct 23.5", usage?.fiveHour?.usedPct == 23.5) + checkTrue("seven_day usedPct 67.0", usage?.sevenDay?.usedPct == 67.0) + + // Missing rate_limits → nil + checkTrue("missing rate_limits → nil", ClaudePlanGauge.parse(payload: [:]) == nil) + + // Absurd pct (>200) → nil window (150 is now clamped to 100) + let badPct: [String: Any] = ["rate_limits": [ + "five_hour": ["used_percentage": 250.0, "resets_at": futureEpoch], + ]] + let badUsage = ClaudePlanGauge.parse(payload: badPct) + checkTrue("absurd pct (250) → nil window", badUsage?.fiveHour == nil) + + // pct 150 → clamped to 100 (not rejected) + let clampPct: [String: Any] = ["rate_limits": [ + "five_hour": ["used_percentage": 150.0, "resets_at": futureEpoch], + ]] + let clampUsage = ClaudePlanGauge.parse(payload: clampPct) + checkTrue("pct 150 → clamped to 100", clampUsage?.fiveHour?.usedPct == 100.0) + + // pct 201 → rejected + let tooBig: [String: Any] = ["rate_limits": [ + "five_hour": ["used_percentage": 201.0, "resets_at": futureEpoch], + ]] + checkTrue("pct 201 → nil window", ClaudePlanGauge.parse(payload: tooBig)?.fiveHour == nil) + + // resets_at > 400 days → rejected + let farFuture = Date().timeIntervalSince1970 + 401 * 86400 + let msEpoch: [String: Any] = ["rate_limits": [ + "five_hour": ["used_percentage": 50.0, "resets_at": farFuture], + ]] + checkTrue("resets_at > 400d → nil window", ClaudePlanGauge.parse(payload: msEpoch)?.fiveHour == nil) + + // Negative pct → nil window + let negPct: [String: Any] = ["rate_limits": [ + "five_hour": ["used_percentage": -5.0, "resets_at": futureEpoch], + ]] + checkTrue("negative pct → nil window", ClaudePlanGauge.parse(payload: negPct)?.fiveHour == nil) + + // Int pct accepted + let intPct: [String: Any] = ["rate_limits": [ + "five_hour": ["used_percentage": 42, "resets_at": Int(futureEpoch)], + ]] + let intUsage = ClaudePlanGauge.parse(payload: intPct) + checkTrue("Int pct parsed", intUsage?.fiveHour?.usedPct == 42.0) + + // ── effectivePct (expired window) ───────────────────────────────────── + print("ClaudePlanGauge.effectivePct") + + let expiredWindow = PlanWindow(usedPct: 80, resetsAt: Date(timeIntervalSince1970: pastEpoch)) + let futureWindow = PlanWindow(usedPct: 80, resetsAt: Date(timeIntervalSince1970: futureEpoch)) + checkTrue("expired window → 0", ClaudePlanGauge.effectivePct(expiredWindow) == 0) + checkTrue("future window → original pct", ClaudePlanGauge.effectivePct(futureWindow) == 80) + + // ── dominantPct ──────────────────────────────────────────────────────── + print("ClaudePlanGauge.dominantPct") + + let both = PlanUsage(fiveHour: PlanWindow(usedPct: 30, resetsAt: Date(timeIntervalSince1970: futureEpoch)), + sevenDay: PlanWindow(usedPct: 70, resetsAt: Date(timeIntervalSince1970: futureEpoch)), + updatedAt: Date()) + let fhOnly = PlanUsage(fiveHour: PlanWindow(usedPct: 55, resetsAt: Date(timeIntervalSince1970: futureEpoch)), + sevenDay: nil, updatedAt: Date()) + let empty = PlanUsage(fiveHour: nil, sevenDay: nil, updatedAt: Date()) + + checkTrue("dominant picks higher (70)", ClaudePlanGauge.dominantPct(both) == 70) + checkTrue("dominant with one window (55)", ClaudePlanGauge.dominantPct(fhOnly) == 55) + checkTrue("dominant with no windows → nil", ClaudePlanGauge.dominantPct(empty) == nil) + + // ── color ────────────────────────────────────────────────────────────── + print("ClaudePlanGauge.color") + + check("nil → grey", ClaudePlanGauge.color(for: nil), "#6B7079") + check("0 → green", ClaudePlanGauge.color(for: 0), "#22C55E") + check("49 → green", ClaudePlanGauge.color(for: 49), "#22C55E") + check("50 → orange", ClaudePlanGauge.color(for: 50), "#F59E0B") + check("79 → orange", ClaudePlanGauge.color(for: 79), "#F59E0B") + check("80 → red", ClaudePlanGauge.color(for: 80), "#F4505E") + check("100 → red", ClaudePlanGauge.color(for: 100), "#F4505E") + + // ── pillLabel ────────────────────────────────────────────────────────── + print("ClaudePlanGauge.pillLabel") + + check("nil usage → 'Claude plan'", ClaudePlanGauge.pillLabel(nil), "Claude plan") + check("no windows → 'Claude plan'", ClaudePlanGauge.pillLabel(empty), "Claude plan") + check("70 pct → 'Claude 70%'", ClaudePlanGauge.pillLabel(both), "Claude 70%") + check("55 pct → 'Claude 55%'", ClaudePlanGauge.pillLabel(fhOnly), "Claude 55%") + + // ── finish ───────────────────────────────────────────────────────────── + if failures == 0 { + print("\nAll tests passed.") + exit(0) + } else { + print("\n\(failures) test(s) failed.") + exit(1) + } + } +} diff --git a/tests/DesktopMochiTests.swift b/tests/DesktopMochiTests.swift new file mode 100644 index 0000000..b2d5e02 --- /dev/null +++ b/tests/DesktopMochiTests.swift @@ -0,0 +1,129 @@ +import Foundation + +@main +enum DesktopMochiTests { + static func main() { + testShouldSleep() + testIsOverBody() + testLookOrigin() + testClampOrigin() + testShouldRetractOnLanding() + print("DesktopMochiLogic: all cases passed") + } + + // MARK: - shouldSleep + + static func testShouldSleep() { + // Agent recently active → awake regardless of mouse distance + precondition(!DesktopMochiLogic.shouldSleep(lastAgentActiveInterval: 5, mouseDistanceToPanelCenter: 300), + "active agent must not sleep") + + // Long idle but mouse near panel → awake + precondition(!DesktopMochiLogic.shouldSleep(lastAgentActiveInterval: 200, mouseDistanceToPanelCenter: 50), + "mouse near panel must not sleep") + + // Long idle AND mouse far → sleep + precondition(DesktopMochiLogic.shouldSleep(lastAgentActiveInterval: 200, mouseDistanceToPanelCenter: 200), + "long idle + far mouse must sleep") + + // Exactly at timeout boundary → still awake (strictly greater than) + precondition(!DesktopMochiLogic.shouldSleep(lastAgentActiveInterval: 120, mouseDistanceToPanelCenter: 300), + "exactly at timeout must not sleep") + + // Just past timeout boundary + far mouse → sleep + precondition(DesktopMochiLogic.shouldSleep(lastAgentActiveInterval: 120.1, mouseDistanceToPanelCenter: 300), + "just over timeout must sleep") + + // Far mouse at exact distance threshold → sleep + precondition(DesktopMochiLogic.shouldSleep(lastAgentActiveInterval: 200, mouseDistanceToPanelCenter: 150), + "at distance threshold must sleep") + } + + // MARK: - isOverBody + + static func testIsOverBody() { + let s: CGFloat = 120 + let r = s * DesktopMochiLogic.bodyRadiusFraction // 28.8 + + // Center → inside + precondition(DesktopMochiLogic.isOverBody(localPoint: CGPoint(x: 60, y: 60), panelSize: s), + "center must be inside body") + + // Just inside radius + precondition(DesktopMochiLogic.isOverBody(localPoint: CGPoint(x: 60 + r - 0.5, y: 60), panelSize: s), + "inside radius must hit") + + // Just outside radius + precondition(!DesktopMochiLogic.isOverBody(localPoint: CGPoint(x: 60 + r + 0.5, y: 60), panelSize: s), + "outside radius must miss") + + // Corner → outside + precondition(!DesktopMochiLogic.isOverBody(localPoint: CGPoint(x: 0, y: 0), panelSize: s), + "corner must miss") + + // Diagonal at radius — distance = r/√2 from each axis + let diag = r / sqrt(2.0) - 0.5 + precondition(DesktopMochiLogic.isOverBody(localPoint: CGPoint(x: 60 + diag, y: 60 + diag), panelSize: s), + "diagonal inside must hit") + } + + // MARK: - lookOrigin + + static func testLookOrigin() { + // Panel at (200, 300) on a 1440×900 screen starting at x=0 + let o = DesktopMochiLogic.lookOrigin(panelMinX: 200, panelMinY: 300, + screenMinX: 0, screenHeight: 900, + panelSize: 120) + // cx = 200 + 60 = 260 → x = 260 - 0 = 260 + precondition(o.x == 260, "lookOrigin x must be panel center relative to screen left") + // cy = 300 + 60 = 360 → y = 900 - 360 = 540 + precondition(o.y == 540, "lookOrigin y must be flipped from bottom-left to top-left") + + // Panel on a secondary screen starting at x=1440 + let o2 = DesktopMochiLogic.lookOrigin(panelMinX: 1540, panelMinY: 100, + screenMinX: 1440, screenHeight: 1080, + panelSize: 120) + // cx = 1540 + 60 = 1600 → x = 1600 - 1440 = 160 + precondition(o2.x == 160, "lookOrigin x must be relative to screen minX") + // cy = 100 + 60 = 160 → y = 1080 - 160 = 920 + precondition(o2.y == 920, "lookOrigin y on secondary screen") + } + + // MARK: - shouldRetractOnLanding + + static func testShouldRetractOnLanding() { + precondition(DesktopMochiLogic.shouldRetractOnLanding(alertActive: true), + "must retract when alert is active on landing") + precondition(!DesktopMochiLogic.shouldRetractOnLanding(alertActive: false), + "must not retract when no alert on landing") + } + + // MARK: - clampOrigin + + static func testClampOrigin() { + // Typical macOS visible frame (below menu bar) + let vf = CGRect(x: 0, y: 23, width: 1440, height: 877) // maxX=1440, maxY=900 + let s: CGFloat = 120 + let m: CGFloat = 24 + + // Normal position — within bounds + let normal = DesktopMochiLogic.clampOrigin(CGPoint(x: 600, y: 400), panelSize: s, visibleFrame: vf, margin: m) + precondition(normal == CGPoint(x: 600, y: 400), "in-bounds origin must be unchanged") + + // Too far left + let left = DesktopMochiLogic.clampOrigin(CGPoint(x: -50, y: 400), panelSize: s, visibleFrame: vf, margin: m) + precondition(left.x == vf.minX + m, "too-left must clamp to minX + margin") + + // Too far right + let right = DesktopMochiLogic.clampOrigin(CGPoint(x: 2000, y: 400), panelSize: s, visibleFrame: vf, margin: m) + precondition(right.x == vf.maxX - s - m, "too-right must clamp to maxX - panelSize - margin") + + // Too low + let low = DesktopMochiLogic.clampOrigin(CGPoint(x: 400, y: -50), panelSize: s, visibleFrame: vf, margin: m) + precondition(low.y == vf.minY + m, "too-low must clamp to minY + margin") + + // Too high + let high = DesktopMochiLogic.clampOrigin(CGPoint(x: 400, y: 2000), panelSize: s, visibleFrame: vf, margin: m) + precondition(high.y == vf.maxY - s - m, "too-high must clamp to maxY - panelSize - margin") + } +} diff --git a/tests/DiffEngineTests.swift b/tests/DiffEngineTests.swift new file mode 100644 index 0000000..bff589c --- /dev/null +++ b/tests/DiffEngineTests.swift @@ -0,0 +1,222 @@ +import Foundation + +@main +enum DiffEngineTests { + + static var failures = 0 + + static func checkTrue(_ label: String, _ value: Bool) { + if value { print(" ✓ \(label)") } + else { print(" ✗ \(label)"); failures += 1 } + } + + static func checkInt(_ label: String, _ got: Int, _ expected: Int) { + if got == expected { print(" ✓ \(label)") } + else { print(" ✗ \(label) got: \(got) expected: \(expected)"); failures += 1 } + } + + static func main() { + + // ── DiffEngine.fromEdit — additions ─────────────────────────────────── + print("DiffEngine.fromEdit — additions") + do { + let d = DiffEngine.fromEdit(old: "", new: "hello\nworld\n", path: "/a/b.swift") + checkInt("added == 2", d.added, 2) + checkInt("removed == 0", d.removed, 0) + checkTrue("!tooLarge", !d.tooLarge) + checkTrue("1 hunk", d.hunks.count == 1) + checkTrue("name == b.swift", d.name == "b.swift") + } + + // ── DiffEngine.fromEdit — removals ──────────────────────────────────── + print("DiffEngine.fromEdit — removals") + do { + let d = DiffEngine.fromEdit(old: "hello\nworld\n", new: "", path: "/x.py") + checkInt("added == 0", d.added, 0) + checkInt("removed == 2", d.removed, 2) + checkTrue("1 hunk", d.hunks.count == 1) + } + + // ── DiffEngine.fromEdit — replacement ───────────────────────────────── + print("DiffEngine.fromEdit — replacement") + do { + let d = DiffEngine.fromEdit(old: "foo\nbar\nbaz\n", + new: "foo\nqux\nbaz\n", + path: "/f.ts") + checkInt("added == 1", d.added, 1) + checkInt("removed == 1", d.removed, 1) + checkTrue("has context lines", + d.hunks.first?.lines.contains(where: { $0.kind == .context }) == true) + } + + // ── DiffEngine.fromNew — new file ────────────────────────────────────── + print("DiffEngine.fromNew — new file") + do { + let d = DiffEngine.fromNew(content: "line1\nline2\nline3\n", path: "/new.rs") + checkInt("added == 3", d.added, 3) + checkInt("removed == 0", d.removed, 0) + checkTrue("all lines .added", + d.hunks.flatMap { $0.lines }.allSatisfy { $0.kind == .added }) + } + + // ── DiffEngine.fromEdit — MultiEdit (two edits) ──────────────────────── + print("DiffEngine.fromEdit — MultiEdit (two edits)") + do { + let d1 = DiffEngine.fromEdit(old: "aaa\n", new: "bbb\n", path: "/m.kt") + let d2 = DiffEngine.fromEdit(old: "ccc\n", new: "ddd\n", path: "/m.kt") + checkInt("d1 added == 1", d1.added, 1) + checkInt("d1 removed == 1", d1.removed, 1) + checkInt("d2 added == 1", d2.added, 1) + checkInt("d2 removed == 1", d2.removed, 1) + } + + // ── DiffEngine — tooLarge ────────────────────────────────────────────── + print("DiffEngine — tooLarge") + do { + // Generate > 200 KB combined content + let bigOld = String(repeating: "x", count: 150 * 1024) + let bigNew = String(repeating: "y", count: 60 * 1024) + let d = DiffEngine.fromEdit(old: bigOld, new: bigNew, path: "/big.swift") + checkTrue("tooLarge == true", d.tooLarge) + checkTrue("hunks.isEmpty", d.hunks.isEmpty) + } + + // ── DiffEngine — CRLF ───────────────────────────────────────────────── + print("DiffEngine — CRLF") + do { + let d = DiffEngine.fromEdit(old: "a\r\nb\r\n", new: "a\r\nc\r\n", path: "/win.txt") + checkInt("added == 1", d.added, 1) + checkInt("removed == 1", d.removed, 1) + } + + // ── DiffEngine — no trailing newline ────────────────────────────────── + print("DiffEngine — no trailing newline") + do { + let d = DiffEngine.fromEdit(old: "hello", new: "hello\nworld", path: "/t.txt") + checkInt("added == 1", d.added, 1) + checkInt("removed == 0", d.removed, 0) + } + + // ── DiffEngine — 3-line context ─────────────────────────────────────── + print("DiffEngine — 3-line context") + do { + // 10-line file, change line 5 + let oldContent = (1...10).map { "line\($0)" }.joined(separator: "\n") + "\n" + let newContent = (1...10).map { $0 == 5 ? "changed" : "line\($0)" }.joined(separator: "\n") + "\n" + let d = DiffEngine.fromEdit(old: oldContent, new: newContent, path: "/ctx.swift") + checkInt("added == 1", d.added, 1) + checkInt("removed == 1", d.removed, 1) + checkTrue("1 hunk", d.hunks.count == 1) + let hunk = d.hunks[0] + let contextLines = hunk.lines.filter { $0.kind == .context } + checkTrue("has context before change", contextLines.count >= 3) + } + + // ── DiffEngine — m*n > 1_000_000 → tooLarge ───────────────────────── + print("DiffEngine — m*n > 1_000_000 → tooLarge") + do { + // 1001 old lines × 1001 new lines = > 1M + let many = (0..<1001).map { "line\($0)" }.joined(separator: "\n") + let d = DiffEngine.fromEdit(old: many, new: many + "\nextra", path: "/big.swift") + checkTrue("tooLarge when m*n > 1M", d.tooLarge) + checkTrue("hunks empty", d.hunks.isEmpty) + } + + // ── DiffEngine.fromNew — too large ──────────────────────────────────── + print("DiffEngine.fromNew — too large") + do { + let bigContent = String(repeating: "x\n", count: FileDiff.maxLines + 1) + let d = DiffEngine.fromNew(content: bigContent, path: "/new.swift") + checkTrue("fromNew tooLarge", d.tooLarge) + checkTrue("fromNew isNewFile", d.isNewFile) + checkTrue("fromNew hunks empty", d.hunks.isEmpty) + checkTrue("fromNew added > 0", d.added > 0) + } + + // ── String.makeDiffStep / parseDiffStep ─────────────────────────────── + print("String.makeDiffStep / parseDiffStep") + do { + let s = String.makeDiffStep(filename: "foo.swift", added: 3, removed: 1, diffId: 7) + checkTrue("isDiffStep", s.isDiffStep) + let parsed = s.parseDiffStep() + checkTrue("parsed != nil", parsed != nil) + checkTrue("filename round-trips", parsed?.filename == "foo.swift") + checkTrue("added round-trips", parsed?.added == 3) + checkTrue("removed round-trips", parsed?.removed == 1) + checkTrue("diffId round-trips", parsed?.diffId == 7) + + // id > 9 (multi-digit) round-trips correctly + let s2 = String.makeDiffStep(filename: "bar.ts", added: 0, removed: 2, diffId: 42) + checkTrue("diffId 42 round-trips", s2.parseDiffStep()?.diffId == 42) + + // Non-diff step should not parse + checkTrue("normal step !isDiffStep", !"Edit foo.swift".isDiffStep) + checkTrue("normal step parseDiffStep == nil", "Edit foo.swift".parseDiffStep() == nil) + } + + // ── DiffEngine.toOneLine ────────────────────────────────────────────── + print("DiffEngine.toOneLine") + do { + // multi-line joined with space + checkTrue("multi-line joined", + DiffEngine.toOneLine("line one\nline two\nline three") == "line one line two line three") + + // bold stripped + checkTrue("bold stripped", + DiffEngine.toOneLine("**hello** world") == "hello world") + + // heading stripped + checkTrue("heading stripped", + DiffEngine.toOneLine("## My Title\nsome text") == "My Title some text") + + // empty input → empty + checkTrue("empty → empty", DiffEngine.toOneLine("").isEmpty) + + // truncation + let long = DiffEngine.toOneLine(String(repeating: "x ", count: 200), maxChars: 10) + checkTrue("truncated to maxChars", long.count <= 10) + + // stop at blank line + checkTrue("blank line → first para only", + DiffEngine.toOneLine("First para.\n\nSecond para.") == "First para.") + + // stop at --- separator + checkTrue("--- separator → first para only", + DiffEngine.toOneLine("Done. Single commit 450a657 on github-pulse.\n\n---\n\nFiles touched (7)…") + == "Done. Single commit 450a657 on github-pulse.") + + // stop at *** separator + checkTrue("*** separator → first para only", + DiffEngine.toOneLine("Summary line.\n***\nMore details.") == "Summary line.") + + // stop at table row (|) + checkTrue("table row → first para only", + DiffEngine.toOneLine("Result:\n| Col1 | Col2 |\n|---|---|\n| A | B |") == "Result:") + + // strip leading bullet - + checkTrue("strip bullet -", + DiffEngine.toOneLine("- item one\n- item two") == "item one item two") + + // strip leading bullet * + checkTrue("strip bullet *", + DiffEngine.toOneLine("* first\n* second") == "first second") + + // strip ordered list + checkTrue("strip ordered list", + DiffEngine.toOneLine("1. step one\n2. step two") == "step one step two") + + // first paragraph empty → fall through to next + checkTrue("empty first para → next", + DiffEngine.toOneLine("\n\nActual content.") == "Actual content.") + } + + // ── finish ───────────────────────────────────────────────────────────── + if failures == 0 { + print("\nAll tests passed.") + exit(0) + } else { + print("\n\(failures) test(s) failed.") + exit(1) + } + } +} diff --git a/tests/GitHubActivityTests.swift b/tests/GitHubActivityTests.swift new file mode 100644 index 0000000..861abef --- /dev/null +++ b/tests/GitHubActivityTests.swift @@ -0,0 +1,157 @@ +import Foundation + +@main +enum GitHubActivityTests { + + static var failures = 0 + + static func check(_ label: String, _ got: Bool) { + if got { print(" ✓ \(label)") } + else { print(" ✗ \(label)"); failures += 1 } + } + + // MARK: - Fixture JSON + // + // Week 1 (complete, Jan 5–11 2026): + // Jan 5 wd=0 NONE(0), Jan 6 wd=1 FIRST_QUARTILE(1), Jan 7 wd=2 SECOND_QUARTILE(2), + // Jan 8 wd=3 THIRD_QUARTILE(3), Jan 9 wd=4 FOURTH_QUARTILE(4), + // Jan 10 wd=5 FIRST_QUARTILE(1), Jan 11 wd=6 NONE(0) + // counts: 0+1+4+8+12+2+0 = 27 + // + // Week 2 (incomplete, Jan 12–13 2026): + // Jan 12 wd=0 SECOND_QUARTILE(2), Jan 13 wd=1 THIRD_QUARTILE(3) + // counts: 5+10 = 15 + // + // Total: 42 + static let validJSON: Data = """ + { + "data": { + "viewer": { + "login": "testuser", + "contributionsCollection": { + "contributionCalendar": { + "totalContributions": 42, + "weeks": [ + { + "contributionDays": [ + {"date": "2026-01-05", "contributionCount": 0, "contributionLevel": "NONE", "weekday": 0}, + {"date": "2026-01-06", "contributionCount": 1, "contributionLevel": "FIRST_QUARTILE", "weekday": 1}, + {"date": "2026-01-07", "contributionCount": 4, "contributionLevel": "SECOND_QUARTILE", "weekday": 2}, + {"date": "2026-01-08", "contributionCount": 8, "contributionLevel": "THIRD_QUARTILE", "weekday": 3}, + {"date": "2026-01-09", "contributionCount": 12, "contributionLevel": "FOURTH_QUARTILE", "weekday": 4}, + {"date": "2026-01-10", "contributionCount": 2, "contributionLevel": "FIRST_QUARTILE", "weekday": 5}, + {"date": "2026-01-11", "contributionCount": 0, "contributionLevel": "NONE", "weekday": 6} + ] + }, + { + "contributionDays": [ + {"date": "2026-01-12", "contributionCount": 5, "contributionLevel": "SECOND_QUARTILE", "weekday": 0}, + {"date": "2026-01-13", "contributionCount": 10, "contributionLevel": "THIRD_QUARTILE", "weekday": 1} + ] + } + ] + } + } + } + } + } + """.data(using: .utf8)! + + static let unknownLevelJSON: Data = """ + { + "data": { + "viewer": { + "login": "testuser", + "contributionsCollection": { + "contributionCalendar": { + "totalContributions": 1, + "weeks": [ + { + "contributionDays": [ + {"date": "2026-03-01", "contributionCount": 1, "contributionLevel": "EXTRA_SPECIAL", "weekday": 0} + ] + } + ] + } + } + } + } + } + """.data(using: .utf8)! + + // MARK: - Main + + static func main() { + + // ── GitHubActivity.parse ────────────────────────────────────────────── + print("GitHubActivity.parse") + do { + let act = GitHubActivity.parse(validJSON) + check("parse returns non-nil", act != nil) + check("total == 42", act?.total == 42) + check("2 weeks", act?.weeks.count == 2) + check("week 0 has 7 days", act?.weeks[0].count == 7) + check("week 1 has 2 days (incomplete)", act?.weeks[1].count == 2) + // Level mapping + check("NONE → level 0", act?.weeks[0][0].level == 0) + check("FIRST_QUARTILE → level 1", act?.weeks[0][1].level == 1) + check("SECOND_QUARTILE → level 2", act?.weeks[0][2].level == 2) + check("THIRD_QUARTILE → level 3", act?.weeks[0][3].level == 3) + check("FOURTH_QUARTILE → level 4", act?.weeks[0][4].level == 4) + // Dates and counts + check("first day date", act?.weeks[0][0].date == "2026-01-05") + check("first day count", act?.weeks[0][0].count == 0) + check("first day wd", act?.weeks[0][0].weekday == 0) + check("last day date", act?.weeks[1][1].date == "2026-01-13") + check("last day count", act?.weeks[1][1].count == 10) + } + + // ── GitHubActivity.parse — unknown level ───────────────────────────── + print("GitHubActivity.parse — unknown level → 0") + do { + let act = GitHubActivity.parse(unknownLevelJSON) + check("unknown level → 0", act?.weeks[0][0].level == 0) + } + + // ── GitHubActivity.parse — bad data → nil ──────────────────────────── + print("GitHubActivity.parse — bad data") + do { + check("garbage → nil", GitHubActivity.parse("garbage".data(using: .utf8)!) == nil) + check("no data key → nil", GitHubActivity.parse("{}".data(using: .utf8)!) == nil) + } + + // ── GitHubActivity.lastWeeks ───────────────────────────────────────── + print("GitHubActivity.lastWeeks") + do { + let act = GitHubActivity.parse(validJSON)! + check("lastWeeks(2) returns both", act.lastWeeks(2).count == 2) + check("lastWeeks(1) returns last week", act.lastWeeks(1).count == 1) + check("lastWeeks(1)[0] is incomplete", act.lastWeeks(1)[0].count == 2) + check("lastWeeks(1)[0][0].date", act.lastWeeks(1)[0][0].date == "2026-01-12") + check("lastWeeks(99) clamps to available", act.lastWeeks(99).count == 2) + check("lastWeeks(0) returns empty", act.lastWeeks(0).isEmpty) + } + + // ── GitHubActivity.lastDays ────────────────────────────────────────── + print("GitHubActivity.lastDays") + do { + let act = GitHubActivity.parse(validJSON)! + // All 9 days flat, last 3 = Jan 11, Jan 12, Jan 13 + check("lastDays(3) count", act.lastDays(3).count == 3) + check("lastDays(3)[0].date", act.lastDays(3)[0].date == "2026-01-11") + check("lastDays(3)[2].date", act.lastDays(3)[2].date == "2026-01-13") + check("lastDays(9) all days", act.lastDays(9).count == 9) + check("lastDays(99) clamps to all", act.lastDays(99).count == 9) + check("lastDays(0) empty", act.lastDays(0).isEmpty) + } + + // ── finish ──────────────────────────────────────────────────────────── + if failures == 0 { + print("\nAll tests passed.") + exit(0) + } else { + print("\n\(failures) test(s) failed.") + exit(1) + } + } +} diff --git a/tests/GitHubPulseTests.swift b/tests/GitHubPulseTests.swift new file mode 100644 index 0000000..b3d7423 --- /dev/null +++ b/tests/GitHubPulseTests.swift @@ -0,0 +1,355 @@ +import Foundation + +@main +enum GitHubPulseTests { + + static var failures = 0 + + static func check(_ label: String, _ got: Bool) { + if got { print(" ✓ \(label)") } + else { print(" ✗ \(label)"); failures += 1 } + } + + // MARK: - Fixture JSON + + // Valid response: PR #42 SUCCESS/APPROVED, PR #43 null CI (unknown)/null review, + // repo "testuser/myrepo" PENDING, archived repo filtered out, + // one to-review PR from another repo. + static let validJSON: Data = """ + { + "data": { + "viewer": { + "login": "testuser", + "pullRequests": { + "nodes": [ + { + "number": 42, + "title": "Add feature", + "url": "https://github.com/testuser/myrepo/pull/42", + "isDraft": false, + "reviewDecision": "APPROVED", + "repository": {"nameWithOwner": "testuser/myrepo", "url": "https://github.com/testuser/myrepo"}, + "commits": {"nodes": [{"commit": {"statusCheckRollup": {"state": "SUCCESS"}}}]} + }, + { + "number": 43, + "title": "Fix bug", + "url": "https://github.com/testuser/myrepo/pull/43", + "isDraft": true, + "reviewDecision": null, + "repository": {"nameWithOwner": "testuser/myrepo", "url": "https://github.com/testuser/myrepo"}, + "commits": {"nodes": [{"commit": {"statusCheckRollup": null}}]} + } + ] + }, + "repositories": { + "nodes": [ + { + "nameWithOwner": "testuser/myrepo", + "url": "https://github.com/testuser/myrepo", + "isArchived": false, + "defaultBranchRef": { + "name": "main", + "target": {"statusCheckRollup": {"state": "PENDING"}} + } + }, + { + "nameWithOwner": "testuser/archived", + "url": "https://github.com/testuser/archived", + "isArchived": true, + "defaultBranchRef": { + "name": "main", + "target": {"statusCheckRollup": {"state": "SUCCESS"}} + } + } + ] + } + }, + "reviewRequested": { + "issueCount": 1, + "nodes": [ + { + "number": 7, + "title": "Review this", + "url": "https://github.com/other/repo/pull/7", + "isDraft": false, + "author": {"login": "otheruser"}, + "repository": {"nameWithOwner": "other/repo", "url": "https://github.com/other/repo"} + } + ] + } + } + } + """.data(using: .utf8)! + + static let emptyJSON: Data = """ + { + "data": { + "viewer": { + "login": "testuser", + "pullRequests": {"nodes": []}, + "repositories": {"nodes": []} + }, + "reviewRequested": {"issueCount": 0, "nodes": []} + } + } + """.data(using: .utf8)! + + // MARK: - Main + + static func main() { + + // ── GitHubPulse.parse ───────────────────────────────────────────────── + print("GitHubPulse.parse") + do { + let pulse = GitHubPulse.parse(validJSON) + check("parse returns non-nil", pulse != nil) + check("login", pulse?.login == "testuser") + check("2 myPRs", pulse?.myPRs.count == 2) + check("PR#42 id", pulse?.myPRs[0].id == "testuser/myrepo#42") + check("PR#42 ci success", pulse?.myPRs[0].ci == .success) + check("PR#42 review approved", pulse?.myPRs[0].review == .approved) + check("PR#43 ci unknown (null rollup)",pulse?.myPRs[1].ci == .unknown) + check("PR#43 review unknown (null)", pulse?.myPRs[1].review == .unknown) + check("PR#43 isDraft", pulse?.myPRs[1].isDraft == true) + check("1 mainCI (archived filtered)", pulse?.mainCI.count == 1) + check("mainCI repo", pulse?.mainCI[0].repo == "testuser/myrepo") + check("mainCI ci pending", pulse?.mainCI[0].ci == .pending) + check("mainCI branch main", pulse?.mainCI[0].branch == "main") + check("1 toReview", pulse?.toReview.count == 1) + check("toReview id", pulse?.toReview[0].id == "other/repo#7") + check("hasPending (mainCI pending)", pulse?.hasPending == true) + } + + // ── GitHubPulse.parse — empty ───────────────────────────────────────── + print("GitHubPulse.parse — empty") + do { + let pulse = GitHubPulse.parse(emptyJSON) + check("empty parses ok", pulse != nil) + check("no myPRs", pulse?.myPRs.isEmpty == true) + check("no mainCI", pulse?.mainCI.isEmpty == true) + check("no toReview", pulse?.toReview.isEmpty == true) + check("!hasPending", pulse?.hasPending == false) + } + + // ── GitHubPulse.parse — bad data ────────────────────────────────────── + print("GitHubPulse.parse — bad data") + do { + check("garbage → nil", GitHubPulse.parse("garbage".data(using: .utf8)!) == nil) + check("empty obj → nil", GitHubPulse.parse("{}".data(using: .utf8)!) == nil) + } + + // ── CIState init ────────────────────────────────────────────────────── + print("CIState init") + do { + check("nil → unknown", CIState(rawGitHub: nil) == .unknown) + check("PENDING → pending", CIState(rawGitHub: "PENDING") == .pending) + check("EXPECTED → pending", CIState(rawGitHub: "EXPECTED") == .pending) + check("SUCCESS → success", CIState(rawGitHub: "SUCCESS") == .success) + check("FAILURE → failure", CIState(rawGitHub: "FAILURE") == .failure) + check("ERROR → failure", CIState(rawGitHub: "ERROR") == .failure) + check("other → unknown", CIState(rawGitHub: "WAITING") == .unknown) + } + + // ── GitHubPulse.events — first poll silent ──────────────────────────── + print("GitHubPulse.events — first poll silent") + do { + let pulse = GitHubPulse.parse(validJSON)! + let events = GitHubPulse.events(old: nil, new: pulse) + check("first poll → no events", events.isEmpty) + } + + // ── GitHubPulse.events — pending → success ──────────────────────────── + print("GitHubPulse.events — pending → success") + do { + var oldPulse = GitHubPulse.parse(emptyJSON)! + oldPulse.myPRs = [GitHubPR(id: "r/p#1", title: "T", url: "", repo: "r/p", + number: 1, isDraft: false, ci: .pending, review: .unknown)] + var newPulse = oldPulse + newPulse.myPRs[0].ci = .success + let events = GitHubPulse.events(old: oldPulse, new: newPulse) + check("pending→success → ciPassed", events == [.ciPassed(prId: "r/p#1")]) + } + + // ── GitHubPulse.events — success → failure ──────────────────────────── + print("GitHubPulse.events — success → failure") + do { + var oldPulse = GitHubPulse.parse(emptyJSON)! + oldPulse.myPRs = [GitHubPR(id: "r/p#2", title: "T", url: "", repo: "r/p", + number: 2, isDraft: false, ci: .success, review: .unknown)] + var newPulse = oldPulse + newPulse.myPRs[0].ci = .failure + let events = GitHubPulse.events(old: oldPulse, new: newPulse) + check("success→failure → ciFailed", events == [.ciFailed(prId: "r/p#2")]) + } + + // ── GitHubPulse.events — main CI failure ────────────────────────────── + print("GitHubPulse.events — main CI failure") + do { + var oldPulse = GitHubPulse.parse(emptyJSON)! + oldPulse.mainCI = [GitHubRepoCI(repo: "a/b", url: "", branch: "main", ci: .success)] + var newPulse = oldPulse + newPulse.mainCI[0].ci = .failure + let events = GitHubPulse.events(old: oldPulse, new: newPulse) + check("main success→failure → mainFailed", events == [.mainFailed(repo: "a/b")]) + } + + // ── GitHubPulse.events — new review request ─────────────────────────── + print("GitHubPulse.events — new review request") + do { + let pr = GitHubPR(id: "o/r#7", title: "R", url: "", repo: "o/r", + number: 7, isDraft: false, ci: .unknown, review: .pending) + var oldPulse = GitHubPulse.parse(emptyJSON)! + var newPulse = oldPulse + newPulse.toReview = [pr] + let events = GitHubPulse.events(old: oldPulse, new: newPulse) + check("new review → reviewRequested", events == [.reviewRequested(prId: "o/r#7")]) + + // Already-known review: no new event + oldPulse.toReview = [pr] + newPulse.toReview = [pr] + let noEvents = GitHubPulse.events(old: oldPulse, new: newPulse) + check("known review → no event", noEvents.isEmpty) + } + + // ── GitHubPulse.parse — duplicate ids ──────────────────────────────────── + print("GitHubPulse.parse — duplicate ids") + do { + // JSON with PR #42 duplicated: should keep only first occurrence + let dupJSON: Data = """ + { + "data": { + "viewer": { + "login": "testuser", + "pullRequests": { + "nodes": [ + { + "number": 42, "title": "Add feature", + "url": "https://github.com/testuser/myrepo/pull/42", + "isDraft": false, "reviewDecision": "APPROVED", + "repository": {"nameWithOwner": "testuser/myrepo", "url": "https://github.com/testuser/myrepo"}, + "commits": {"nodes": [{"commit": {"statusCheckRollup": {"state": "SUCCESS"}}}]} + }, + { + "number": 42, "title": "Duplicate entry", + "url": "https://github.com/testuser/myrepo/pull/42", + "isDraft": true, "reviewDecision": null, + "repository": {"nameWithOwner": "testuser/myrepo", "url": "https://github.com/testuser/myrepo"}, + "commits": {"nodes": [{"commit": {"statusCheckRollup": {"state": "FAILURE"}}}]} + } + ] + }, + "repositories": {"nodes": []} + }, + "reviewRequested": {"issueCount": 0, "nodes": []} + } + } + """.data(using: .utf8)! + let pulse = GitHubPulse.parse(dupJSON) + check("dup PR → 1 myPR", pulse?.myPRs.count == 1) + check("dup PR → keeps first title", pulse?.myPRs[0].title == "Add feature") + check("dup PR → keeps first ci", pulse?.myPRs[0].ci == .success) + } + + // ── GitHubPulse.events — duplicate ids in old pulse ─────────────────── + print("GitHubPulse.events — duplicate-safe Dictionary") + do { + // OLD has duplicate ids (uniquingKeysWith keeps first); NEW has one entry → fires once + var oldPulse = GitHubPulse.parse(emptyJSON)! + let pr1 = GitHubPR(id: "r/p#1", title: "T", url: "", repo: "r/p", + number: 1, isDraft: false, ci: .pending, review: .unknown) + oldPulse.myPRs = [pr1, pr1] // intentional duplicate in old + var newPulse = GitHubPulse.parse(emptyJSON)! + var pr1Passed = pr1; pr1Passed.ci = .success + newPulse.myPRs = [pr1Passed] // single entry in new + let events = GitHubPulse.events(old: oldPulse, new: newPulse) + check("dup old ids → no crash", true) + check("dup old ids → ciPassed fires once", + events.filter { if case .ciPassed = $0 { return true }; return false }.count == 1) + } + + // ── GitHubPulse.events — headSha: new PR already green ─────────────── + print("GitHubPulse.events — headSha: new PR already green") + do { + let old = GitHubPulse.parse(emptyJSON)! + var newPulse = old + newPulse.myPRs = [GitHubPR(id: "r/p#10", title: "T", url: "", repo: "r/p", + number: 10, isDraft: false, ci: .success, review: .unknown, + headSha: "abc111")] + let events = GitHubPulse.events(old: old, new: newPulse) + check("new PR green → ciPassed", events == [.ciPassed(prId: "r/p#10")]) + } + + // ── GitHubPulse.events — headSha: new PR pending → nothing ─────────── + print("GitHubPulse.events — headSha: new PR pending → nothing") + do { + let old = GitHubPulse.parse(emptyJSON)! + var newPulse = old + newPulse.myPRs = [GitHubPR(id: "r/p#11", title: "T", url: "", repo: "r/p", + number: 11, isDraft: false, ci: .pending, review: .unknown, + headSha: "abc222")] + let events = GitHubPulse.events(old: old, new: newPulse) + check("new PR pending → no events", events.isEmpty) + } + + // ── GitHubPulse.events — headSha: new commit already red ───────────── + print("GitHubPulse.events — headSha: new commit already red → ciFailed") + do { + var oldPulse = GitHubPulse.parse(emptyJSON)! + oldPulse.myPRs = [GitHubPR(id: "r/p#12", title: "T", url: "", repo: "r/p", + number: 12, isDraft: false, ci: .success, review: .unknown, + headSha: "sha-old")] + var newPulse = oldPulse + newPulse.myPRs[0].ci = .failure + newPulse.myPRs[0].headSha = "sha-new" + let events = GitHubPulse.events(old: oldPulse, new: newPulse) + check("new commit red → ciFailed", events == [.ciFailed(prId: "r/p#12")]) + } + + // ── GitHubPulse.events — headSha: same sha success→success → nothing ─ + print("GitHubPulse.events — headSha: same sha success→success → nothing") + do { + var oldPulse = GitHubPulse.parse(emptyJSON)! + oldPulse.myPRs = [GitHubPR(id: "r/p#13", title: "T", url: "", repo: "r/p", + number: 13, isDraft: false, ci: .success, review: .unknown, + headSha: "same")] + let newPulse = oldPulse // identical SHA and CI + let events = GitHubPulse.events(old: oldPulse, new: newPulse) + check("same sha success→success → no event", events.isEmpty) + } + + // ── GitHubPulse.events — headSha: new commit on main red → mainFailed ─ + print("GitHubPulse.events — headSha: new commit on main red → mainFailed") + do { + var oldPulse = GitHubPulse.parse(emptyJSON)! + oldPulse.mainCI = [GitHubRepoCI(repo: "a/b", url: "", branch: "main", + ci: .success, headSha: "sha-old")] + var newPulse = oldPulse + newPulse.mainCI[0].ci = .failure + newPulse.mainCI[0].headSha = "sha-new" + let events = GitHubPulse.events(old: oldPulse, new: newPulse) + check("new commit on main red → mainFailed", events == [.mainFailed(repo: "a/b")]) + } + + // ── GitHubPulse.isStale ─────────────────────────────────────────────── + print("GitHubPulse.isStale") + do { + let now = Date() + check("nil fetchedAt → stale", + GitHubPulse.isStale(fetchedAt: nil, now: now, maxAge: 60)) + check("fresh (same instant) → not stale", + !GitHubPulse.isStale(fetchedAt: now, now: now, maxAge: 60)) + check("61 s ago → stale", + GitHubPulse.isStale(fetchedAt: now.addingTimeInterval(-61), now: now, maxAge: 60)) + } + + // ── finish ───────────────────────────────────────────────────────────── + if failures == 0 { + print("\nAll tests passed.") + exit(0) + } else { + print("\n\(failures) test(s) failed.") + exit(1) + } + } +} diff --git a/tests/IslandScreenGeometryTests.swift b/tests/IslandScreenGeometryTests.swift new file mode 100644 index 0000000..79c57f3 --- /dev/null +++ b/tests/IslandScreenGeometryTests.swift @@ -0,0 +1,53 @@ +import Foundation + +@main +enum IslandScreenGeometryTests { + static func main() { + // Regression: absent auxiliary areas must never mean "screen-wide notch". + for screenWidth: CGFloat in [1080, 1920, 2560, 3840] { + let geometry = IslandScreenGeometry( + screenWidth: screenWidth, safeAreaTop: 0, + auxiliaryLeftWidth: nil, auxiliaryRightWidth: nil, menuBarHeight: 30 + ) + precondition(!geometry.hasNotch) + precondition(geometry.width == 80) + precondition(geometry.height == 24) + } + + // A shorter menu bar must also contain the resting island. + let shortMenuBar = IslandScreenGeometry( + screenWidth: 1920, safeAreaTop: 0, + auxiliaryLeftWidth: nil, auxiliaryRightWidth: nil, menuBarHeight: 22 + ) + precondition(shortMenuBar.height == 22) + + // Real MacBook notch measurements retain their physical dimensions. + let macBook = IslandScreenGeometry( + screenWidth: 1512, safeAreaTop: 32, + auxiliaryLeftWidth: 660, auxiliaryRightWidth: 660, menuBarHeight: 32 + ) + precondition(macBook.hasNotch) + precondition(macBook.width == 192 && macBook.height == 32) + + // Incomplete or invalid measurements use the notch fallback, not the screen. + for auxiliaryWidth: CGFloat? in [nil, 0, 1000] { + let geometry = IslandScreenGeometry( + screenWidth: 1512, safeAreaTop: 32, + auxiliaryLeftWidth: auxiliaryWidth, auxiliaryRightWidth: auxiliaryWidth, + menuBarHeight: 32 + ) + precondition(geometry.width == 184 && geometry.height == 32) + } + // Compact/greeting destinations share the measured resting height. + for height: CGFloat in [22, 24, 32, 38] { + let compact = IslandRestingLayout(width: 240, height: height) + precondition(compact.botCenterY == height / 2) + precondition(compact.botDiameter == min(20, height - 6)) + precondition(compact.botCenterY - compact.botDiameter / 2 >= 3) + precondition(compact.botCenterY + compact.botDiameter / 2 <= height - 3) + precondition(compact.miniGridCenterX == 200) + precondition(compact.miniGridScale * 28 <= height - 4) + } + print("Island screen geometry and resting layout: 13 cases passed") + } +} diff --git a/tests/MochiWardrobeTests.swift b/tests/MochiWardrobeTests.swift new file mode 100644 index 0000000..2cdf5d7 --- /dev/null +++ b/tests/MochiWardrobeTests.swift @@ -0,0 +1,110 @@ +import Foundation + +@main +enum MochiWardrobeTests { + + static var failures = 0 + + static func check(_ label: String, _ got: Bool) { + if got { print(" ✓ \(label)") } + else { print(" ✗ \(label)"); failures += 1 } + } + + static func date(year: Int, month: Int, day: Int) -> Date { + var c = DateComponents(); c.year = year; c.month = month; c.day = day + return Calendar(identifier: .gregorian).date(from: c)! + } + + static func seasonal(_ year: Int, _ month: Int, _ day: Int) -> Outfit { + Outfit.seasonal(for: date(year: year, month: month, day: day), + calendar: Calendar(identifier: .gregorian)) + } + + static func main() { + print("Outfit.seasonal — witch hat (Oct 1 – Nov 1)") + check("Sep 30 → none", seasonal(2026, 9, 30) == .none) + check("Oct 1 → witchHat", seasonal(2026, 10, 1) == .witchHat) + check("Oct 31 → witchHat", seasonal(2026, 10, 31) == .witchHat) + check("Nov 1 → witchHat", seasonal(2026, 11, 1) == .witchHat) + check("Nov 2 → none", seasonal(2026, 11, 2) == .none) + + print("Outfit.seasonal — santa hat (Dec 1–26)") + check("Nov 30 → none", seasonal(2026, 11, 30) == .none) + check("Dec 1 → santaHat", seasonal(2026, 12, 1) == .santaHat) + check("Dec 26 → santaHat", seasonal(2026, 12, 26) == .santaHat) + check("Dec 27 → none", seasonal(2026, 12, 27) == .none) + + print("Outfit.seasonal — party hat (Dec 31 – Jan 2)") + check("Dec 30 → none", seasonal(2026, 12, 30) == .none) + check("Dec 31 → partyHat", seasonal(2026, 12, 31) == .partyHat) + check("Jan 1 → partyHat", seasonal(2027, 1, 1) == .partyHat) + check("Jan 2 → partyHat", seasonal(2027, 1, 2) == .partyHat) + check("Jan 3 → none", seasonal(2027, 1, 3) == .none) + + print("Outfit.seasonal — Feb 13–16 → none (heartsHeadband removed)") + check("Feb 12 → none", seasonal(2026, 2, 12) == .none) + check("Feb 13 → none", seasonal(2026, 2, 13) == .none) + check("Feb 15 → none", seasonal(2026, 2, 15) == .none) + check("Feb 16 → none", seasonal(2026, 2, 16) == .none) + + print("Outfit.seasonal — bunny ears (Easter ±)") + // Easter 2026 = April 5 + check("Apr 3 2026 → bunnyEars", seasonal(2026, 4, 3) == .bunnyEars) // -2 + check("Apr 4 2026 → bunnyEars", seasonal(2026, 4, 4) == .bunnyEars) // -1 + check("Apr 5 2026 → bunnyEars", seasonal(2026, 4, 5) == .bunnyEars) // 0 + check("Apr 6 2026 → bunnyEars", seasonal(2026, 4, 6) == .bunnyEars) // +1 + check("Apr 7 2026 → none", seasonal(2026, 4, 7) == .none) // +2 + check("Apr 2 2026 → none", seasonal(2026, 4, 2) == .none) // -3 + // Easter 2027 = March 28 + check("Mar 26 2027 → bunnyEars", seasonal(2027, 3, 26) == .bunnyEars) + check("Mar 29 2027 → bunnyEars", seasonal(2027, 3, 29) == .bunnyEars) + check("Mar 30 2027 → none", seasonal(2027, 3, 30) == .none) + // Easter 2028 = April 16 + check("Apr 14 2028 → bunnyEars", seasonal(2028, 4, 14) == .bunnyEars) + check("Apr 17 2028 → bunnyEars", seasonal(2028, 4, 17) == .bunnyEars) + check("Apr 18 2028 → none", seasonal(2028, 4, 18) == .none) + + print("Outfit.seasonal — sunglasses (Jun 21 – Aug 31)") + check("Jun 20 → none", seasonal(2026, 6, 20) == .none) + check("Jun 21 → sunglasses", seasonal(2026, 6, 21) == .sunglasses) + check("Aug 31 → sunglasses", seasonal(2026, 8, 31) == .sunglasses) + check("Sep 1 → none", seasonal(2026, 9, 1) == .none) + + print("Outfit.resolved") + let d = date(year: 2026, month: 10, day: 15) + let cal = Calendar(identifier: .gregorian) + check("auto → seasonal", Outfit.resolved(selection: .auto, date: d, calendar: cal) == .witchHat) + check("none → none", Outfit.resolved(selection: .none, date: d, calendar: cal) == .none) + check("beanie → beanie", Outfit.resolved(selection: .beanie, date: d, calendar: cal) == .beanie) + + print("Outfit.rawValue stability") + check("auto rawValue", Outfit.auto.rawValue == "auto") + check("none rawValue", Outfit.none.rawValue == "none") + check("partyHat rawValue", Outfit.partyHat.rawValue == "partyHat") + check("beanie rawValue", Outfit.beanie.rawValue == "beanie") + check("crown rawValue", Outfit.crown.rawValue == "crown") + check("sunglasses rawValue", Outfit.sunglasses.rawValue == "sunglasses") + check("roundGlasses rawValue", Outfit.roundGlasses.rawValue == "roundGlasses") + check("bow rawValue", Outfit.bow.rawValue == "bow") + check("scarf rawValue", Outfit.scarf.rawValue == "scarf") + check("witchHat rawValue", Outfit.witchHat.rawValue == "witchHat") + check("pumpkin rawValue", Outfit.pumpkin.rawValue == "pumpkin") + check("santaHat rawValue", Outfit.santaHat.rawValue == "santaHat") + check("bunnyEars rawValue", Outfit.bunnyEars.rawValue == "bunnyEars") + + print("Outfit.stored — removed rawValues → auto") + for removed in ["topHat", "cap", "heartsHeadband", "strawHat"] { + UserDefaults.standard.set(removed, forKey: "mochiOutfit") + check("'\(removed)' stored → .auto", Outfit.stored == .auto) + } + + print("Outfit.stored unknown → auto") + UserDefaults.standard.set("totallyUnknown", forKey: "mochiOutfit") + check("unknown → .auto", Outfit.stored == .auto) + UserDefaults.standard.removeObject(forKey: "mochiOutfit") + check("missing → .auto", Outfit.stored == .auto) + + if failures == 0 { print("\nAll tests passed.") } + else { print("\n\(failures) test(s) FAILED."); exit(1) } + } +} diff --git a/tests/SafeWebURLTests.swift b/tests/SafeWebURLTests.swift new file mode 100644 index 0000000..e889682 --- /dev/null +++ b/tests/SafeWebURLTests.swift @@ -0,0 +1,27 @@ +import Foundation + +@main +enum SafeWebURLTests { + static func main() { + // Accepted: plain http/https URLs + precondition(safeWebURL("https://example.com") != nil) + precondition(safeWebURL("http://example.com/a?b=1") != nil) + precondition(safeWebURL("HTTPS://EXAMPLE.COM") != nil) + precondition(safeWebURL(" https://example.com \n") != nil) + precondition(safeWebURL("http://localhost:5678") != nil) + + // Rejected: nil, empty, non-web schemes, malformed + precondition(safeWebURL(nil) == nil) + precondition(safeWebURL("") == nil) + precondition(safeWebURL("file:///etc/hosts") == nil) + precondition(safeWebURL("javascript:alert(1)") == nil) + precondition(safeWebURL("vscode://file/etc/hosts") == nil) + precondition(safeWebURL("smb://server/share") == nil) + precondition(safeWebURL("mailto:a@b.c") == nil) + precondition(safeWebURL("https://") == nil) + precondition(safeWebURL("https:example.com") == nil) + precondition(safeWebURL("//example.com") == nil) + + print("Safe web links: 15 cases passed") + } +} diff --git a/tests/ShortcutTests.swift b/tests/ShortcutTests.swift new file mode 100644 index 0000000..3d98763 --- /dev/null +++ b/tests/ShortcutTests.swift @@ -0,0 +1,235 @@ +import Foundation + +@main +enum ShortcutTests { + static func main() { + testDefaultsExhaustive() + testAllDefaultsHaveModifier() + testNoDefaultDuplicates() + testCarbonModifiers() + testDisplayString() + testDuplicateDetection() + testLoadSaveRoundTrip() + testLegacyKeysForToggleIsland() + testEnabledByDefault() + testKeyCodeToString() + testCardNavigation() + print("ShortcutLogic: all cases passed") + } + + // MARK: - testDefaultsExhaustive + + static func testDefaultsExhaustive() { + for action in ShortcutAction.allCases { + precondition(ShortcutLogic.defaults[action] != nil, + "missing default for \(action.rawValue)") + } + precondition(ShortcutLogic.defaults.count == ShortcutAction.allCases.count, + "defaults table must cover every ShortcutAction") + } + + // MARK: - testAllDefaultsHaveModifier + + static func testAllDefaultsHaveModifier() { + for (action, spec) in ShortcutLogic.defaults { + precondition(spec.hasModifier, + "default for \(action.rawValue) has no modifier — bare keys not allowed") + } + } + + // MARK: - testNoDefaultDuplicates + + static func testNoDefaultDuplicates() { + let dups = ShortcutLogic.duplicates(in: ShortcutLogic.defaults) + precondition(dups.isEmpty, + "duplicate default shortcuts: \(dups.map { $0.rawValue })") + } + + // MARK: - testCarbonModifiers + + static func testCarbonModifiers() { + // cmdShift = ⌘⇧ + let cmdShiftCarbon = ShortcutLogic.carbonModifiers(fromNS: ShortcutSpec.cmdShift) + // Carbon: cmdKey = 256, shiftKey = 512 + precondition(cmdShiftCarbon & 256 != 0, "⌘ must set cmdKey bit in Carbon") + precondition(cmdShiftCarbon & 512 != 0, "⇧ must set shiftKey bit in Carbon") + precondition(cmdShiftCarbon & 2048 == 0, "⌘⇧ must not set optionKey") + precondition(cmdShiftCarbon & 4096 == 0, "⌘⇧ must not set controlKey") + + // ctrlOpt = ⌃⌥ + let ctrlOptCarbon = ShortcutLogic.carbonModifiers(fromNS: ShortcutSpec.ctrlOpt) + precondition(ctrlOptCarbon & 256 == 0, "⌃⌥ must not set cmdKey") + precondition(ctrlOptCarbon & 512 == 0, "⌃⌥ must not set shiftKey") + precondition(ctrlOptCarbon & 2048 != 0, "⌥ must set optionKey bit in Carbon") + precondition(ctrlOptCarbon & 4096 != 0, "⌃ must set controlKey bit in Carbon") + + // Zero flags → zero Carbon flags + precondition(ShortcutLogic.carbonModifiers(fromNS: 0) == 0, + "no modifiers must produce zero Carbon flags") + + // All four modifiers + let allNS = ShortcutSpec.cmdBit | ShortcutSpec.shiftBit | + ShortcutSpec.optBit | ShortcutSpec.ctrlBit + let allCarbon = ShortcutLogic.carbonModifiers(fromNS: allNS) + precondition(allCarbon & (256 | 512 | 2048 | 4096) == (256 | 512 | 2048 | 4096), + "all four NS modifiers must map to all four Carbon bits") + } + + // MARK: - testDisplayString + + static func testDisplayString() { + // ⌘⇧N + let cmdShiftN = ShortcutSpec(keyCode: 45, nsFlags: ShortcutSpec.cmdShift) + let s1 = ShortcutLogic.displayString(for: cmdShiftN) + precondition(s1.contains("⌘"), "⌘⇧N display must contain ⌘") + precondition(s1.contains("⇧"), "⌘⇧N display must contain ⇧") + precondition(s1.contains("N"), "⌘⇧N display must contain N") + + // ⌃⌥A + let ctrlOptA = ShortcutSpec(keyCode: 0, nsFlags: ShortcutSpec.ctrlOpt) + let s2 = ShortcutLogic.displayString(for: ctrlOptA) + precondition(s2.contains("⌃"), "⌃⌥A display must contain ⌃") + precondition(s2.contains("⌥"), "⌃⌥A display must contain ⌥") + precondition(s2.contains("A"), "⌃⌥A display must contain A") + + // No duplicate modifiers in the string + precondition(s1.filter { $0 == "⌘" }.count == 1, "⌘ must appear exactly once") + + // ⌃⌥Space + let ctrlOptSpace = ShortcutSpec(keyCode: 49, nsFlags: ShortcutSpec.ctrlOpt) + let s3 = ShortcutLogic.displayString(for: ctrlOptSpace) + precondition(s3.contains("Space"), "⌃⌥Space display must contain 'Space'") + } + + // MARK: - testDuplicateDetection + + static func testDuplicateDetection() { + // No duplicates in an empty dict + precondition(ShortcutLogic.duplicates(in: [:]).isEmpty, + "empty map must have no duplicates") + + // Single entry — no duplicate + let specA = ShortcutSpec(keyCode: 0, nsFlags: ShortcutSpec.ctrlOpt) + precondition(ShortcutLogic.duplicates(in: [.goToAlert: specA]).isEmpty, + "single entry must have no duplicate") + + // Two different specs — no duplicate + let specB = ShortcutSpec(keyCode: 17, nsFlags: ShortcutSpec.ctrlOpt) + let twoUnique: [ShortcutAction: ShortcutSpec] = [.goToAlert: specA, .jumpToTerminal: specB] + precondition(ShortcutLogic.duplicates(in: twoUnique).isEmpty, + "two distinct specs must have no duplicate") + + // Same spec for two actions → both flagged + let twoSame: [ShortcutAction: ShortcutSpec] = [.goToAlert: specA, .jumpToTerminal: specA] + let dups = ShortcutLogic.duplicates(in: twoSame) + precondition(dups.contains(.goToAlert), "first duped action must be flagged") + precondition(dups.contains(.jumpToTerminal), "second duped action must be flagged") + precondition(dups.count == 2, "exactly 2 actions must be flagged for one duplicate pair") + + // Same key code but different flags → not a duplicate + let specC = ShortcutSpec(keyCode: 0, nsFlags: ShortcutSpec.cmdShift) + let diffFlags: [ShortcutAction: ShortcutSpec] = [.goToAlert: specA, .jumpToTerminal: specC] + precondition(ShortcutLogic.duplicates(in: diffFlags).isEmpty, + "same key code with different modifiers must not be a duplicate") + } + + // MARK: - testLoadSaveRoundTrip + + static func testLoadSaveRoundTrip() { + // Use a test-only suite to avoid polluting the app UserDefaults + let suiteName = "com.coucou.ShortcutTests.\(Int.random(in: 10000...99999))" + guard let ud = UserDefaults(suiteName: suiteName) else { + preconditionFailure("could not create test UserDefaults suite") + } + + // Save a custom spec for .openChat + let custom = ShortcutSpec(keyCode: 5, nsFlags: ShortcutSpec.cmdShift) + ud.set(Int(custom.keyCode), forKey: ShortcutAction.openChat.udKeyCode) + ud.set(Int(custom.nsFlags), forKey: ShortcutAction.openChat.udFlags) + + // Load it back using the raw UserDefaults API (same path ShortcutLogic.hotKey uses) + let loadedKC = ud.object(forKey: ShortcutAction.openChat.udKeyCode) as? Int + let loadedFl = ud.object(forKey: ShortcutAction.openChat.udFlags) as? Int + precondition(loadedKC == Int(custom.keyCode), "saved key code must round-trip") + precondition(loadedFl == Int(custom.nsFlags), "saved flags must round-trip") + + // Cleanup + ud.removePersistentDomain(forName: suiteName) + } + + // MARK: - testLegacyKeysForToggleIsland + + static func testLegacyKeysForToggleIsland() { + precondition(ShortcutAction.toggleIsland.udKeyCode == "hotkeyCode", + "toggleIsland must use legacy 'hotkeyCode' key") + precondition(ShortcutAction.toggleIsland.udFlags == "hotkeyFlags", + "toggleIsland must use legacy 'hotkeyFlags' key") + precondition(ShortcutAction.toggleIsland.udEnabled == "hotkeyEnabled", + "toggleIsland must use legacy 'hotkeyEnabled' key") + + // All other actions must NOT use the legacy keys + for action in ShortcutAction.allCases where action != .toggleIsland { + precondition(action.udKeyCode != "hotkeyCode", + "\(action.rawValue) must not reuse legacy hotkeyCode key") + } + } + + // MARK: - testEnabledByDefault + + static func testEnabledByDefault() { + // toggleIsland is OFF by default (existing behaviour) + precondition(!ShortcutAction.toggleIsland.enabledByDefault, + "toggleIsland must be disabled by default") + + // All other global shortcuts are ON by default + for action in ShortcutAction.allCases where action != .toggleIsland { + precondition(action.enabledByDefault, + "\(action.rawValue) must be enabled by default") + } + } + + // MARK: - testKeyCodeToString + + static func testKeyCodeToString() { + precondition(ShortcutLogic.keyCodeToString(0) == "A", "keyCode 0 = A") + precondition(ShortcutLogic.keyCodeToString(45) == "N", "keyCode 45 = N") + precondition(ShortcutLogic.keyCodeToString(49) == "Space", "keyCode 49 = Space") + precondition(ShortcutLogic.keyCodeToString(30) == "]", "keyCode 30 = ]") + precondition(ShortcutLogic.keyCodeToString(33) == "[", "keyCode 33 = [") + precondition(ShortcutLogic.keyCodeToString(2) == "D", "keyCode 2 = D") + // Unknown key code returns a placeholder + let unknown = ShortcutLogic.keyCodeToString(200) + precondition(!unknown.isEmpty, "unknown key code must return non-empty string") + } + + // MARK: - testCardNavigation + + static func testCardNavigation() { + // nil + down → first item + precondition(ShortcutLogic.navigate(selection: nil, delta: +1, itemCount: 3) == 0, + "nil+down must select first item") + // nil + up → last item + precondition(ShortcutLogic.navigate(selection: nil, delta: -1, itemCount: 3) == 2, + "nil+up must select last item") + // clamp at top + precondition(ShortcutLogic.navigate(selection: 0, delta: -1, itemCount: 3) == 0, + "selection 0 + up must clamp to 0") + // clamp at bottom + precondition(ShortcutLogic.navigate(selection: 2, delta: +1, itemCount: 3) == 2, + "selection last + down must clamp to last") + // normal step down + precondition(ShortcutLogic.navigate(selection: 1, delta: +1, itemCount: 3) == 2, + "1+down in 3-item list must yield 2") + // normal step up + precondition(ShortcutLogic.navigate(selection: 1, delta: -1, itemCount: 3) == 0, + "1+up in 3-item list must yield 0") + // delta 0 — no move + precondition(ShortcutLogic.navigate(selection: 1, delta: 0, itemCount: 3) == 1, + "delta 0 must not move selection") + // empty card → nil (navigateCard guards on cardItemCount > 0, but test the pure function) + precondition(ShortcutLogic.navigate(selection: nil, delta: +1, itemCount: 0) == nil, + "empty card must return nil") + precondition(ShortcutLogic.navigate(selection: 0, delta: +1, itemCount: 0) == nil, + "any selection on empty card must return nil") + } +} diff --git a/tests/fake_local_llm.py b/tests/fake_local_llm.py new file mode 100644 index 0000000..d086849 --- /dev/null +++ b/tests/fake_local_llm.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python3 +"""Minimal fake Ollama / LM Studio server for CI testing. + +Usage: python3 fake_local_llm.py + Writes the bound port to , then serves until killed. + +Routes: + GET /v1/models → two models (one embed, should be filtered out) + POST /v1/chat/completions → SSE stream with block, reasoning-only + deltas (content=null), and Markdown answer + POST /v1/chat/completions → 404 when model == "unknown-model" +""" + +import json +import sys +import socket +import socketserver +import time +from http.server import BaseHTTPRequestHandler, HTTPServer + +# Two models; "nomic-embed-text" must be filtered by the Swift client +MODELS_RESPONSE = { + "data": [ + {"id": "llama3.2", "object": "model"}, + {"id": "nomic-embed-text", "object": "model"}, + ] +} + +# SSE events that make up the streamed reply: +# - events 0-2: a block split over two chunks (should be hidden from UI) +# - event 3: a delta with reasoning_content only (content is null → ignored) +# - events 4-7: real Markdown answer +SSE_EVENTS = [ + {"choices": [{"delta": {"content": "\nstep "}}]}, + {"choices": [{"delta": {"content": "one\n"}}]}, + # reasoning-only delta: content key present but value is null + {"choices": [{"delta": {"content": None, "reasoning_content": "internal"}}]}, + {"choices": [{"delta": {"content": "## Answer\n\n"}}]}, + {"choices": [{"delta": {"content": "Here is the result:\n\n"}}]}, + {"choices": [{"delta": {"content": "- **item 1**\n"}}]}, + {"choices": [{"delta": {"content": "- item 2\n\n"}}]}, + {"choices": [{"delta": {"content": "```python\nprint('hello')\n```"}}]}, +] + +EXPECTED_RESPONSE = "## Answer\n\nHere is the result:\n\n- **item 1**\n- item 2\n\n```python\nprint('hello')\n```" + + +class FakeLLMHandler(BaseHTTPRequestHandler): + def log_message(self, fmt, *args): + pass # suppress request logging + + def do_GET(self): + if self.path == "/v1/models": + body = json.dumps(MODELS_RESPONSE).encode() + self.send_response(200) + self.send_header("Content-Type", "application/json") + self.send_header("Content-Length", str(len(body))) + self.end_headers() + self.wfile.write(body) + else: + self.send_response(404) + self.end_headers() + + def do_POST(self): + length = int(self.headers.get("Content-Length", 0)) + raw = self.rfile.read(length) + try: + req_body = json.loads(raw) + except Exception: + req_body = {} + + model = req_body.get("model", "") + + if self.path != "/v1/chat/completions": + self.send_response(404) + self.end_headers() + return + + # Unknown model → 404 with OpenAI-format error + if model == "unknown-model": + err = json.dumps({ + "error": { + "message": f"model '{model}' not found, try pulling it first", + "type": "not_found", + } + }).encode() + self.send_response(404) + self.send_header("Content-Type", "application/json") + self.send_header("Content-Length", str(len(err))) + self.end_headers() + self.wfile.write(err) + return + + # SSE stream + self.send_response(200) + self.send_header("Content-Type", "text/event-stream") + self.send_header("Cache-Control", "no-cache") + self.end_headers() + + for event in SSE_EVENTS: + line = ("data: " + json.dumps(event) + "\n\n").encode() + self.wfile.write(line) + self.wfile.flush() + time.sleep(0.005) + + self.wfile.write(b"data: [DONE]\n\n") + self.wfile.flush() + + +class FastBindHTTPServer(HTTPServer): + """HTTPServer that skips the reverse-DNS lookup in server_bind. + + The default HTTPServer.server_bind calls socket.getfqdn(), which triggers + a reverse-DNS lookup for the bound address. On some CI runners this can + block for several seconds and cause the port-file handshake to time out. + We bypass it by calling TCPServer.server_bind directly and hard-coding + server_name to the loopback address we already know we are binding to. + """ + + def server_bind(self): + socketserver.TCPServer.server_bind(self) + self.server_name = "127.0.0.1" + self.server_port = self.server_address[1] + + +def find_free_port() -> int: + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.bind(("127.0.0.1", 0)) + return s.getsockname()[1] + + +if __name__ == "__main__": + port = find_free_port() + server = FastBindHTTPServer(("127.0.0.1", port), FakeLLMHandler) + + # Write port to the file passed as argv[1] so the caller can read it + if len(sys.argv) > 1: + with open(sys.argv[1], "w") as f: + f.write(str(port)) + f.flush() + + server.serve_forever()

(@3>RA1y_CxE8viS>1^${Pk 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�yA$iO6N8mWXtR2<9*umuHphl36R!>zReN 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 Y6eqP#?I7u?`ZDAc<^a$J@J&DSKgnB2?f?J) literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/love.wav b/NotchBuddy/Resources/sounds/love.wav new file mode 100644 index 0000000000000000000000000000000000000000..8c5b4740cce685afede5545643cf307af7fc8d80 GIT binary patch literal 151908 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�AKiI#bwfVs{kCL!ayPn>S>7>_vf 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
LGH<Ry!IO-*-evo8 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 MiWp&sGHw0;19(~9i2wiq literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/open.wav b/NotchBuddy/Resources/sounds/open.wav new file mode 100644 index 0000000000000000000000000000000000000000..5a169d005c3b639ee5ed0d732807aa75183194a4 GIT binary patch literal 96660 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�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 z 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%0DYmS1CQqLt1-`-5Sg_`W?iw0!-#-qq4yi@ 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 literal 0 HcmV?d00001 diff --git a/NotchBuddy/Resources/sounds/pop.wav b/NotchBuddy/Resources/sounds/pop.wav new file mode 100644 index 0000000000000000000000000000000000000000..e551c18d7e74537b0e3d31f5615580a85c54131a GIT binary patch literal 73076 zcmeFaReT)FvhJBh-2yW+Gc#Le%goHoBwMCsW@cuTnPg^WW@ff!UY68QRXP9CKIh&$ zGY|7R4`???yGNSMQTv5zQ+#tJbY=c&0=`2t}x3>@gnvP=ziM zi7p+(JJ#Sm|MS29vB3XW;D0Re{}&4=FxCHgsPNW*ADZ~zhYpMV_hE?t`{5G*@59YG z_y5Q7|NPYd`K|wbt^c0Ef9CX`nf{-)ll;%-usBQ(KZlRQ%i-aO<%r>k=J?C;FUKE_ z-yFaG>-Z^u${!rxIlje>Z!+q?j<53n>-f(*zwt@uv)|*s>1W(GJJ2UacZ3b5!IA;j?8$8Bt1<Y zwQ`6YBD2UO(uy?9E15{ZJRKi9|8p$uSo1T-Yxzn(k`Lugc|)G(IK~mlu|;l{t2q{O z%-|TuF^r=>M>mePvYl+oQCHTJ)n%xx$Wex)m@F;}apaTvWp0^A=9IZ)4*u&5=dp9n zd99EvB1_0pvb?MytMU2zvVm+VTl3A`FQ*4 z6z}Pyc2}FLjnojew3?ak5vpH#raV;kDm#@)${3}IQcuaCq*6YJS7NhRFS?12AR?W3 zhP~&=>9Ue6Cx6*d_DXxH9covxe_B!2Vr#xt)+%MaHeZ+%&GBY#GpBjef5RWnk&fen z@1ifvH^`USm(_RQ`^Y=PJI5R9t>X>!Ch*?&JoK#gM0f^yMtB-{T6l_iLOfYK`8=sT z*%;aRZy`@u} zLz%@7bB(pf>THMGx$*BWqTqnIApTLNDj5SVzb9)i#;53B&KOh zix?|fi;0Xr8XXorGCCx>c65s99MR_A1kpeKs?p#7YSEs*iK7!o=Zh{8-6*(h;sl8Rbk=_^H2ELKLXkQlpT72EW z9A)ZOVe6Rn$r{XD3lbMmGMU&UZix=cR3)`qLA|B^tB%t)Xa)89`eQvtA7LypQo0Je zcDT;DO1ta2Pq=TnO9zAoYzsILkT@`PVBf$&fhPmc1nSr@B&bYKpP(*5vx3G4Z3tQz zv^{7!7G4mvBxp>~h@cKZje?2=r4KR#p9dZeoEz9HuvB28z=r|b19}CN5BTf8;2!L* z>i+IJ>T2uC?Yd~pGjbb$^htU>{e>2x71BKF7^3OAvPem(yb+y5KCuJdh_%my@Fey; ztCRK4JYbeGb2N|v0Y*t#kym?F$ZF{ z#q`5|MPmxaXdJJj-$h@Jz7>5U`cm}C=xZF$qCZ4?qJv^G#gvU{5;H7jVa(~6S24+A zi^qn=E{c6ZQmO43=(*te>8arzFb9|)%~aMr>%3LL9%%ot zGs`vdj;trf3R@IZb|^2Dmg-bhVRf6eds?VIP=Bij8$*rNhT+QNn&H~z3Uudjk8!VZ zN4Z@A^#ZyDYzjCY@HfC6STZm)uz%o)z!iZT1CL?iiA9Fkiyc>8S@KoToz;%HW z0*3}R46GcOG*At^8gM9JXh6q+Gy!VBKKD|06?YEzRo8Y`O>BLJ>lHB)7_0Q5x~f0Z zI%{RM(=b#T^_LQ+gesTBN)Y}B{;VOd+N