@sriinnu/runic 1.2.0 → 2.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (586) hide show
  1. package/CHANGELOG.md +267 -0
  2. package/LICENSE +373 -21
  3. package/README.md +98 -84
  4. package/THIRD-PARTY-NOTICES.md +651 -0
  5. package/package.json +14 -4
  6. package/.swiftformat +0 -50
  7. package/.swiftlint.yml +0 -160
  8. package/CONTRIBUTING.md +0 -456
  9. package/Icon.icns +0 -0
  10. package/Icon.icon/Assets/runic.png +0 -0
  11. package/Icon.icon/icon.json +0 -36
  12. package/Package.resolved +0 -51
  13. package/Package.swift +0 -136
  14. package/Packages/Helix/LICENSE +0 -21
  15. package/Packages/Helix/Package.swift +0 -29
  16. package/Packages/Helix/README.md +0 -976
  17. package/Packages/Helix/Sources/Helix/Binding.swift +0 -111
  18. package/Packages/Helix/Sources/Helix/CommandParser.swift +0 -160
  19. package/Packages/Helix/Sources/Helix/CommandSignature.swift +0 -117
  20. package/Packages/Helix/Sources/Helix/ExpressibleFromArgument.swift +0 -72
  21. package/Packages/Helix/Sources/Helix/HelpGenerator.swift +0 -175
  22. package/Packages/Helix/Sources/Helix/NameSpecification.swift +0 -98
  23. package/Packages/Helix/Sources/Helix/ParsableCommand.swift +0 -204
  24. package/Packages/Helix/Sources/Helix/Platform/DarwinPlatformContext.swift +0 -44
  25. package/Packages/Helix/Sources/Helix/Platform/LinuxPlatformContext.swift +0 -34
  26. package/Packages/Helix/Sources/Helix/Platform/PlatformContext+Default.swift +0 -91
  27. package/Packages/Helix/Sources/Helix/Platform/PlatformContext.swift +0 -94
  28. package/Packages/Helix/Sources/Helix/Platform/PlatformPath.swift +0 -167
  29. package/Packages/Helix/Sources/Helix/Platform/Stdio.swift +0 -99
  30. package/Packages/Helix/Sources/Helix/Platform/WebPlatformContext.swift +0 -146
  31. package/Packages/Helix/Sources/Helix/Platform/WindowsPlatformContext.swift +0 -97
  32. package/Packages/Helix/Sources/Helix/Program.swift +0 -204
  33. package/Packages/Helix/Sources/Helix/PropertyWrappers.swift +0 -367
  34. package/Packages/Silo/LICENSE +0 -21
  35. package/Packages/Silo/Package.swift +0 -34
  36. package/Packages/Silo/README.md +0 -466
  37. package/Packages/Silo/Sources/Silo/BinaryCookiesReader.swift +0 -169
  38. package/Packages/Silo/Sources/Silo/BrowserCookieAnalytics.swift +0 -365
  39. package/Packages/Silo/Sources/Silo/BrowserCookieBackends.swift +0 -594
  40. package/Packages/Silo/Sources/Silo/BrowserCookieClient.swift +0 -326
  41. package/Packages/Silo/Sources/Silo/BrowserCookieExport.swift +0 -154
  42. package/Packages/Silo/Sources/Silo/BrowserCookieImport.swift +0 -119
  43. package/Packages/Silo/Sources/Silo/BrowserCookieMockStore.swift +0 -121
  44. package/Packages/Silo/Sources/Silo/BrowserCookieModels.swift +0 -391
  45. package/Packages/Silo/Sources/Silo/ChromiumCookieReader.swift +0 -240
  46. package/Packages/Silo/Sources/Silo/CryptoSupport.swift +0 -86
  47. package/Packages/Silo/Sources/Silo/FirefoxCookieReader.swift +0 -172
  48. package/Packages/Silo/Sources/Silo/LinuxChromiumCookieReader.swift +0 -172
  49. package/Packages/Silo/Sources/Silo/LinuxSecretService.swift +0 -105
  50. package/Packages/Silo/Sources/Silo/MacOSChromiumCookieReader.swift +0 -191
  51. package/Packages/Silo/Sources/Silo/SQLiteSnapshot.swift +0 -41
  52. package/Packages/Silo/Sources/Silo/WindowsChromiumCookieReader.swift +0 -110
  53. package/RuniciOS/App/RuniciOSApp.swift +0 -105
  54. package/RuniciOS/Core/iOSUsageStore.swift +0 -192
  55. package/RuniciOS/Views/ProviderDetailView.swift +0 -312
  56. package/RuniciOS/Views/ProviderListView.swift +0 -228
  57. package/RuniciOS/Widgets/LargeWidget.swift +0 -367
  58. package/RuniciOS/Widgets/LiveActivity.swift +0 -342
  59. package/RuniciOS/Widgets/LockScreenWidget.swift +0 -273
  60. package/RuniciOS/Widgets/MediumWidget.swift +0 -370
  61. package/RuniciOS/Widgets/RunicWidget.swift +0 -274
  62. package/RuniciOS/Widgets/SmallWidget.swift +0 -281
  63. package/RuniciOS/Widgets/WidgetModels.swift +0 -285
  64. package/RuniciOS/Widgets/WidgetTimeline.swift +0 -270
  65. package/Scripts/CREATION-SUMMARY.md +0 -367
  66. package/Scripts/DIRECTORY-STRUCTURE.md +0 -358
  67. package/Scripts/GETTING-STARTED-CHECKLIST.md +0 -364
  68. package/Scripts/INDEX.md +0 -365
  69. package/Scripts/QUICK-REFERENCE.md +0 -164
  70. package/Scripts/README-SCRIPTS.md +0 -926
  71. package/Scripts/build-android.sh +0 -526
  72. package/Scripts/build-ios.sh +0 -529
  73. package/Scripts/build-macos.sh +0 -603
  74. package/Scripts/build-windows.sh +0 -504
  75. package/Scripts/build_icon.sh +0 -49
  76. package/Scripts/changelog-to-html.sh +0 -89
  77. package/Scripts/check-release-assets.sh +0 -10
  78. package/Scripts/ci-config.yml +0 -474
  79. package/Scripts/compile_and_run.sh +0 -219
  80. package/Scripts/compile_and_run_adhoc.sh +0 -4
  81. package/Scripts/docs-list.mjs +0 -119
  82. package/Scripts/make_appcast.sh +0 -58
  83. package/Scripts/package_app.sh +0 -409
  84. package/Scripts/release-lib.sh +0 -214
  85. package/Scripts/release.sh +0 -76
  86. package/Scripts/setup-all.sh +0 -387
  87. package/Scripts/setup-ios.sh +0 -404
  88. package/Scripts/setup-react-native.sh +0 -523
  89. package/Scripts/sign-and-notarize.sh +0 -122
  90. package/Scripts/test_live_update.sh +0 -38
  91. package/Scripts/validate_changelog.sh +0 -23
  92. package/Scripts/verify_appcast.sh +0 -92
  93. package/Sources/Runic/About.swift +0 -93
  94. package/Sources/Runic/AppNotifications.swift +0 -115
  95. package/Sources/Runic/Controllers/StatusItemController+Actions.swift +0 -666
  96. package/Sources/Runic/Controllers/StatusItemController+Animation.swift +0 -518
  97. package/Sources/Runic/Controllers/StatusItemController+ChartSubmenus.swift +0 -810
  98. package/Sources/Runic/Controllers/StatusItemController+CustomProviders.swift +0 -87
  99. package/Sources/Runic/Controllers/StatusItemController+Menu.swift +0 -1407
  100. package/Sources/Runic/Controllers/StatusItemController+MenuCards.swift +0 -337
  101. package/Sources/Runic/Controllers/StatusItemController+MenuHelpers.swift +0 -395
  102. package/Sources/Runic/Controllers/StatusItemController.swift +0 -360
  103. package/Sources/Runic/Core/BudgetNotificationManager.swift +0 -80
  104. package/Sources/Runic/Core/Login/ClaudeLoginRunner.swift +0 -103
  105. package/Sources/Runic/Core/Login/CodexLoginRunner.swift +0 -154
  106. package/Sources/Runic/Core/Login/CursorLoginRunner.swift +0 -206
  107. package/Sources/Runic/Core/Login/GeminiLoginRunner.swift +0 -92
  108. package/Sources/Runic/Core/Rendering/IconRenderer.swift +0 -1216
  109. package/Sources/Runic/Core/Rendering/IconView.swift +0 -120
  110. package/Sources/Runic/Core/Rendering/ProviderBrandIcon.swift +0 -71
  111. package/Sources/Runic/Core/RunicAnimation.swift +0 -53
  112. package/Sources/Runic/Core/RunicColors.swift +0 -73
  113. package/Sources/Runic/Core/RunicCornerRadius.swift +0 -15
  114. package/Sources/Runic/Core/RunicSpacing.swift +0 -68
  115. package/Sources/Runic/Core/Stores/AuggieTokenStore.swift +0 -119
  116. package/Sources/Runic/Core/Stores/AzureOpenAITokenStore.swift +0 -119
  117. package/Sources/Runic/Core/Stores/CerebrasTokenStore.swift +0 -119
  118. package/Sources/Runic/Core/Stores/CohereTokenStore.swift +0 -119
  119. package/Sources/Runic/Core/Stores/CopilotTokenStore.swift +0 -119
  120. package/Sources/Runic/Core/Stores/CustomProviderStore.swift +0 -158
  121. package/Sources/Runic/Core/Stores/DeepSeekTokenStore.swift +0 -119
  122. package/Sources/Runic/Core/Stores/FireworksTokenStore.swift +0 -119
  123. package/Sources/Runic/Core/Stores/GroqTokenStore.swift +0 -119
  124. package/Sources/Runic/Core/Stores/KimiTokenStore.swift +0 -119
  125. package/Sources/Runic/Core/Stores/MiniMaxCookieHeaderStore.swift +0 -119
  126. package/Sources/Runic/Core/Stores/MiniMaxGroupIDStore.swift +0 -119
  127. package/Sources/Runic/Core/Stores/MiniMaxTokenStore.swift +0 -119
  128. package/Sources/Runic/Core/Stores/MistralTokenStore.swift +0 -119
  129. package/Sources/Runic/Core/Stores/OpenRouterTokenStore.swift +0 -119
  130. package/Sources/Runic/Core/Stores/PerplexityTokenStore.swift +0 -119
  131. package/Sources/Runic/Core/Stores/ProviderToggleStore.swift +0 -30
  132. package/Sources/Runic/Core/Stores/QwenTokenStore.swift +0 -119
  133. package/Sources/Runic/Core/Stores/SambaNovaTokenStore.swift +0 -119
  134. package/Sources/Runic/Core/Stores/SettingsStore.swift +0 -1711
  135. package/Sources/Runic/Core/Stores/TogetherTokenStore.swift +0 -119
  136. package/Sources/Runic/Core/Stores/UsageStore+Accessors.swift +0 -20
  137. package/Sources/Runic/Core/Stores/UsageStore+Status.swift +0 -189
  138. package/Sources/Runic/Core/Stores/UsageStore+TokenCost.swift +0 -33
  139. package/Sources/Runic/Core/Stores/UsageStore+WidgetSnapshot.swift +0 -67
  140. package/Sources/Runic/Core/Stores/UsageStore.swift +0 -3605
  141. package/Sources/Runic/Core/Stores/XAITokenStore.swift +0 -119
  142. package/Sources/Runic/Core/Stores/ZaiTokenStore.swift +0 -118
  143. package/Sources/Runic/Core/UsageExporter.swift +0 -193
  144. package/Sources/Runic/Date+RelativeDescription.swift +0 -21
  145. package/Sources/Runic/HiddenWindowView.swift +0 -32
  146. package/Sources/Runic/InstallOrigin.swift +0 -9
  147. package/Sources/Runic/KeyboardShortcuts+Names.swift +0 -6
  148. package/Sources/Runic/MouseLocationReader.swift +0 -65
  149. package/Sources/Runic/Notifications+Runic.swift +0 -6
  150. package/Sources/Runic/OpenAICreditsPurchaseWindowController.swift +0 -503
  151. package/Sources/Runic/ProviderRegistry.swift +0 -100
  152. package/Sources/Runic/ProviderSwitcherButtons.swift +0 -267
  153. package/Sources/Runic/Providers/Antigravity/AntigravityLoginFlow.swift +0 -11
  154. package/Sources/Runic/Providers/Antigravity/AntigravityProviderImplementation.swift +0 -14
  155. package/Sources/Runic/Providers/Auggie/AuggieProviderImplementation.swift +0 -24
  156. package/Sources/Runic/Providers/Azure/AzureProviderImplementation.swift +0 -52
  157. package/Sources/Runic/Providers/Bedrock/BedrockProviderImplementation.swift +0 -42
  158. package/Sources/Runic/Providers/Cerebras/CerebrasProviderImplementation.swift +0 -24
  159. package/Sources/Runic/Providers/Claude/ClaudeLoginFlow.swift +0 -26
  160. package/Sources/Runic/Providers/Claude/ClaudeProviderImplementation.swift +0 -14
  161. package/Sources/Runic/Providers/Codex/CodexLoginFlow.swift +0 -18
  162. package/Sources/Runic/Providers/Codex/CodexProviderImplementation.swift +0 -15
  163. package/Sources/Runic/Providers/Cohere/CohereProviderImplementation.swift +0 -24
  164. package/Sources/Runic/Providers/Copilot/CopilotLoginFlow.swift +0 -193
  165. package/Sources/Runic/Providers/Copilot/CopilotProviderImplementation.swift +0 -110
  166. package/Sources/Runic/Providers/Cursor/CursorLoginFlow.swift +0 -28
  167. package/Sources/Runic/Providers/Cursor/CursorProviderImplementation.swift +0 -15
  168. package/Sources/Runic/Providers/DeepSeek/DeepSeekProviderImplementation.swift +0 -24
  169. package/Sources/Runic/Providers/Factory/FactoryLoginFlow.swift +0 -12
  170. package/Sources/Runic/Providers/Factory/FactoryProviderImplementation.swift +0 -15
  171. package/Sources/Runic/Providers/Fireworks/FireworksProviderImplementation.swift +0 -24
  172. package/Sources/Runic/Providers/Gemini/GeminiLoginFlow.swift +0 -20
  173. package/Sources/Runic/Providers/Gemini/GeminiProviderImplementation.swift +0 -15
  174. package/Sources/Runic/Providers/Groq/GroqProviderImplementation.swift +0 -24
  175. package/Sources/Runic/Providers/Kimi/KimiProviderImplementation.swift +0 -24
  176. package/Sources/Runic/Providers/MiniMax/MiniMaxProviderImplementation.swift +0 -32
  177. package/Sources/Runic/Providers/Mistral/MistralProviderImplementation.swift +0 -24
  178. package/Sources/Runic/Providers/OpenRouter/OpenRouterProviderImplementation.swift +0 -24
  179. package/Sources/Runic/Providers/Perplexity/PerplexityProviderImplementation.swift +0 -24
  180. package/Sources/Runic/Providers/SambaNova/SambaNovaProviderImplementation.swift +0 -24
  181. package/Sources/Runic/Providers/Shared/ProviderCatalog.swift +0 -15
  182. package/Sources/Runic/Providers/Shared/ProviderImplementation.swift +0 -48
  183. package/Sources/Runic/Providers/Shared/ProviderImplementationRegistry.swift +0 -66
  184. package/Sources/Runic/Providers/Shared/ProviderLoginFlow.swift +0 -12
  185. package/Sources/Runic/Providers/Shared/ProviderSettingsDescriptors.swift +0 -99
  186. package/Sources/Runic/Providers/Shared/SystemSettingsLinks.swift +0 -18
  187. package/Sources/Runic/Providers/Together/TogetherProviderImplementation.swift +0 -24
  188. package/Sources/Runic/Providers/XAI/XAIProviderImplementation.swift +0 -24
  189. package/Sources/Runic/Providers/Zai/ZaiProviderImplementation.swift +0 -24
  190. package/Sources/Runic/Resources/ProviderIcon-antigravity.svg +0 -2
  191. package/Sources/Runic/Resources/ProviderIcon-auggie.svg +0 -3
  192. package/Sources/Runic/Resources/ProviderIcon-azure.svg +0 -5
  193. package/Sources/Runic/Resources/ProviderIcon-bedrock.svg +0 -7
  194. package/Sources/Runic/Resources/ProviderIcon-cerebras.svg +0 -3
  195. package/Sources/Runic/Resources/ProviderIcon-claude.svg +0 -1
  196. package/Sources/Runic/Resources/ProviderIcon-codex.svg +0 -1
  197. package/Sources/Runic/Resources/ProviderIcon-cohere.svg +0 -3
  198. package/Sources/Runic/Resources/ProviderIcon-copilot.svg +0 -1
  199. package/Sources/Runic/Resources/ProviderIcon-cursor.svg +0 -3
  200. package/Sources/Runic/Resources/ProviderIcon-deepseek.svg +0 -4
  201. package/Sources/Runic/Resources/ProviderIcon-factory.svg +0 -3
  202. package/Sources/Runic/Resources/ProviderIcon-fireworks.svg +0 -3
  203. package/Sources/Runic/Resources/ProviderIcon-gemini.svg +0 -1
  204. package/Sources/Runic/Resources/ProviderIcon-groq.svg +0 -1
  205. package/Sources/Runic/Resources/ProviderIcon-kimi.svg +0 -4
  206. package/Sources/Runic/Resources/ProviderIcon-minimax.svg +0 -1
  207. package/Sources/Runic/Resources/ProviderIcon-mistral.svg +0 -5
  208. package/Sources/Runic/Resources/ProviderIcon-openrouter.svg +0 -7
  209. package/Sources/Runic/Resources/ProviderIcon-perplexity.svg +0 -4
  210. package/Sources/Runic/Resources/ProviderIcon-qwen.svg +0 -9
  211. package/Sources/Runic/Resources/ProviderIcon-sambanova.svg +0 -4
  212. package/Sources/Runic/Resources/ProviderIcon-together.svg +0 -5
  213. package/Sources/Runic/Resources/ProviderIcon-vertexai.svg +0 -17
  214. package/Sources/Runic/Resources/ProviderIcon-xai.svg +0 -3
  215. package/Sources/Runic/Resources/ProviderIcon-zai.svg +0 -5
  216. package/Sources/Runic/Resources/RunicMenubarIcon.svg +0 -7
  217. package/Sources/Runic/Resources/provider-context-windows.json +0 -20
  218. package/Sources/Runic/RunicApp.swift +0 -357
  219. package/Sources/Runic/SessionQuotaNotifications.swift +0 -58
  220. package/Sources/Runic/UsagePaceText.swift +0 -52
  221. package/Sources/Runic/UsageProgressBar.swift +0 -224
  222. package/Sources/Runic/Utilities/DisplayLink.swift +0 -96
  223. package/Sources/Runic/Utilities/LoadingPattern.swift +0 -60
  224. package/Sources/Runic/Utilities/PerformanceConstants.swift +0 -85
  225. package/Sources/Runic/Views/Menu/AlertsMenuView.swift +0 -256
  226. package/Sources/Runic/Views/Menu/ChartPanelStyle.swift +0 -22
  227. package/Sources/Runic/Views/Menu/CostComparativeChartMenuView.swift +0 -275
  228. package/Sources/Runic/Views/Menu/CostHistoryChartMenuView.swift +0 -377
  229. package/Sources/Runic/Views/Menu/CreditsHistoryChartMenuView.swift +0 -312
  230. package/Sources/Runic/Views/Menu/EfficiencyMetricsMenuView.swift +0 -312
  231. package/Sources/Runic/Views/Menu/HeroStatCardsMenuView.swift +0 -228
  232. package/Sources/Runic/Views/Menu/HourlyActivityChartMenuView.swift +0 -228
  233. package/Sources/Runic/Views/Menu/InlineUsageChartView.swift +0 -155
  234. package/Sources/Runic/Views/Menu/MenuCardEntranceModifier.swift +0 -64
  235. package/Sources/Runic/Views/Menu/MenuCardSidebarView.swift +0 -268
  236. package/Sources/Runic/Views/Menu/MenuCardSkeletonView.swift +0 -104
  237. package/Sources/Runic/Views/Menu/MenuCardView.swift +0 -1900
  238. package/Sources/Runic/Views/Menu/MenuContent.swift +0 -150
  239. package/Sources/Runic/Views/Menu/MenuDescriptor.swift +0 -369
  240. package/Sources/Runic/Views/Menu/MenuHighlightStyle.swift +0 -42
  241. package/Sources/Runic/Views/Menu/ModelBreakdownMenuView.swift +0 -235
  242. package/Sources/Runic/Views/Menu/OverviewMenuView.swift +0 -278
  243. package/Sources/Runic/Views/Menu/ProjectBreakdownMenuView.swift +0 -209
  244. package/Sources/Runic/Views/Menu/ProjectBudgetMenuView.swift +0 -220
  245. package/Sources/Runic/Views/Menu/ProviderTabBarView.swift +0 -88
  246. package/Sources/Runic/Views/Menu/SubscriptionUtilizationChartMenuView.swift +0 -201
  247. package/Sources/Runic/Views/Menu/UsageBreakdownChartMenuView.swift +0 -398
  248. package/Sources/Runic/Views/Menu/UsageHeatmapMenuView.swift +0 -232
  249. package/Sources/Runic/Views/Menu/UsageTimelineChartMenuView.swift +0 -364
  250. package/Sources/Runic/Views/Menu/UsageWindowComparisonChartMenuView.swift +0 -190
  251. package/Sources/Runic/Views/Menu/WeeklyActivityChartMenuView.swift +0 -132
  252. package/Sources/Runic/Views/Performance/PerformanceDashboardView.swift +0 -618
  253. package/Sources/Runic/Views/Preferences/LiquidComponents.swift +0 -305
  254. package/Sources/Runic/Views/Preferences/PreferencesAboutPane.swift +0 -271
  255. package/Sources/Runic/Views/Preferences/PreferencesAdvancedPane.swift +0 -268
  256. package/Sources/Runic/Views/Preferences/PreferencesAlertsPane.swift +0 -422
  257. package/Sources/Runic/Views/Preferences/PreferencesAnalyticsPane.swift +0 -641
  258. package/Sources/Runic/Views/Preferences/PreferencesBudgetsPane.swift +0 -344
  259. package/Sources/Runic/Views/Preferences/PreferencesComponents.swift +0 -230
  260. package/Sources/Runic/Views/Preferences/PreferencesCustomProvidersPane.swift +0 -322
  261. package/Sources/Runic/Views/Preferences/PreferencesDebugPane.swift +0 -469
  262. package/Sources/Runic/Views/Preferences/PreferencesGeneralPane.swift +0 -231
  263. package/Sources/Runic/Views/Preferences/PreferencesHelpPane.swift +0 -50
  264. package/Sources/Runic/Views/Preferences/PreferencesIntegrationsPane.swift +0 -567
  265. package/Sources/Runic/Views/Preferences/PreferencesPerformancePane.swift +0 -288
  266. package/Sources/Runic/Views/Preferences/PreferencesProvidersPane.swift +0 -3435
  267. package/Sources/Runic/Views/Preferences/PreferencesSelection.swift +0 -25
  268. package/Sources/Runic/Views/Preferences/PreferencesSyncPane.swift +0 -59
  269. package/Sources/Runic/Views/Preferences/PreferencesView.swift +0 -206
  270. package/Sources/Runic/Views/Rating/QualityRatingView.swift +0 -238
  271. package/Sources/Runic/Views/Team/TeamDashboardView.swift +0 -371
  272. package/Sources/Runic/Views/Team/TeamInviteSheet.swift +0 -175
  273. package/Sources/Runic/Views/Team/TeamManagementView.swift +0 -761
  274. package/Sources/Runic/Views/Team/TeamMemberRow.swift +0 -181
  275. package/Sources/RunicCLI/CLIEntry.swift +0 -942
  276. package/Sources/RunicCLI/CLIRenderer.swift +0 -87
  277. package/Sources/RunicCLI/Commands/EnhancedUsageCommand.swift +0 -588
  278. package/Sources/RunicCLI/Commands/ModelsCommand.swift +0 -362
  279. package/Sources/RunicCLI/Commands/ProjectsCommand.swift +0 -439
  280. package/Sources/RunicCLI/Commands/ResetCommand.swift +0 -429
  281. package/Sources/RunicCLI/Commands/UsageLedgerSourceFactory.swift +0 -168
  282. package/Sources/RunicClaudeWatchdog/main.swift +0 -122
  283. package/Sources/RunicClaudeWebProbe/main.swift +0 -62
  284. package/Sources/RunicCore/AlertRuleStore.swift +0 -187
  285. package/Sources/RunicCore/BrowserCookieImportOrder.swift +0 -25
  286. package/Sources/RunicCore/CopilotUsageModels.swift +0 -84
  287. package/Sources/RunicCore/CostUsageFetcher.swift +0 -119
  288. package/Sources/RunicCore/CostUsageModels.swift +0 -479
  289. package/Sources/RunicCore/CreditsModels.swift +0 -50
  290. package/Sources/RunicCore/CustomProviders/CustomProviderModels.swift +0 -269
  291. package/Sources/RunicCore/CustomProviders/GenericProviderFetcher.swift +0 -633
  292. package/Sources/RunicCore/CustomProviders/ProviderTemplates.swift +0 -500
  293. package/Sources/RunicCore/Host/PTY/TTYCommandRunner.swift +0 -679
  294. package/Sources/RunicCore/Host/Process/SubprocessRunner.swift +0 -135
  295. package/Sources/RunicCore/Integrations/GitHubIntegration.swift +0 -173
  296. package/Sources/RunicCore/Logging/JSONStderrLogHandler.swift +0 -79
  297. package/Sources/RunicCore/Logging/OSLogLogHandler.swift +0 -86
  298. package/Sources/RunicCore/Logging/RunicLog.swift +0 -123
  299. package/Sources/RunicCore/Models/EnhancedUsageModels.swift +0 -371
  300. package/Sources/RunicCore/OpenAIDashboardModels.swift +0 -210
  301. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardBrowserCookieImporter.swift +0 -676
  302. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardFetcher.swift +0 -492
  303. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardNavigationDelegate.swift +0 -51
  304. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardParser.swift +0 -483
  305. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardScrapeScript.swift +0 -558
  306. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardWebViewCache.swift +0 -204
  307. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardWebsiteDataStore.swift +0 -78
  308. package/Sources/RunicCore/PathEnvironment.swift +0 -482
  309. package/Sources/RunicCore/Performance/PerformanceModels.swift +0 -371
  310. package/Sources/RunicCore/Performance/PerformanceStorageImpl.swift +0 -409
  311. package/Sources/RunicCore/Policy/UsagePolicyEngine.swift +0 -178
  312. package/Sources/RunicCore/ProjectBudgetStore.swift +0 -99
  313. package/Sources/RunicCore/ProviderCostSnapshot.swift +0 -29
  314. package/Sources/RunicCore/Providers/Antigravity/AntigravityProviderDescriptor.swift +0 -66
  315. package/Sources/RunicCore/Providers/Antigravity/AntigravityStatusProbe.swift +0 -685
  316. package/Sources/RunicCore/Providers/Auggie/AuggieProviderDescriptor.swift +0 -83
  317. package/Sources/RunicCore/Providers/Auggie/AuggieUsageFetcher.swift +0 -142
  318. package/Sources/RunicCore/Providers/Azure/AzureProviderDescriptor.swift +0 -141
  319. package/Sources/RunicCore/Providers/Azure/AzureUsageFetcher.swift +0 -188
  320. package/Sources/RunicCore/Providers/Bedrock/BedrockProviderDescriptor.swift +0 -126
  321. package/Sources/RunicCore/Providers/Bedrock/BedrockUsageFetcher.swift +0 -168
  322. package/Sources/RunicCore/Providers/Cerebras/CerebrasProviderDescriptor.swift +0 -84
  323. package/Sources/RunicCore/Providers/Cerebras/CerebrasUsageFetcher.swift +0 -75
  324. package/Sources/RunicCore/Providers/Claude/ClaudeCLISession.swift +0 -332
  325. package/Sources/RunicCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthCredentials.swift +0 -180
  326. package/Sources/RunicCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthUsageFetcher.swift +0 -137
  327. package/Sources/RunicCore/Providers/Claude/ClaudeProviderDescriptor.swift +0 -207
  328. package/Sources/RunicCore/Providers/Claude/ClaudeStatusProbe.swift +0 -654
  329. package/Sources/RunicCore/Providers/Claude/ClaudeUsageDataSource.swift +0 -28
  330. package/Sources/RunicCore/Providers/Claude/ClaudeUsageFetcher.swift +0 -480
  331. package/Sources/RunicCore/Providers/Claude/ClaudeWeb/ClaudeWebAPIFetcher.swift +0 -780
  332. package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexOAuthCredentials.swift +0 -147
  333. package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexOAuthUsageFetcher.swift +0 -280
  334. package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexTokenRefresher.swift +0 -100
  335. package/Sources/RunicCore/Providers/Codex/CodexProviderDescriptor.swift +0 -243
  336. package/Sources/RunicCore/Providers/Codex/CodexStatusProbe.swift +0 -125
  337. package/Sources/RunicCore/Providers/Codex/CodexUsageDataSource.swift +0 -24
  338. package/Sources/RunicCore/Providers/Codex/CodexWebDashboardStrategy.swift +0 -181
  339. package/Sources/RunicCore/Providers/Cohere/CohereProviderDescriptor.swift +0 -83
  340. package/Sources/RunicCore/Providers/Cohere/CohereUsageFetcher.swift +0 -85
  341. package/Sources/RunicCore/Providers/Copilot/CopilotDeviceFlow.swift +0 -123
  342. package/Sources/RunicCore/Providers/Copilot/CopilotGitHubCLITokenReader.swift +0 -114
  343. package/Sources/RunicCore/Providers/Copilot/CopilotProviderDescriptor.swift +0 -100
  344. package/Sources/RunicCore/Providers/Copilot/CopilotUsageFetcher.swift +0 -291
  345. package/Sources/RunicCore/Providers/Copilot/CopilotVSCodeTokenReader.swift +0 -386
  346. package/Sources/RunicCore/Providers/Cursor/CursorProviderDescriptor.swift +0 -65
  347. package/Sources/RunicCore/Providers/Cursor/CursorStatusProbe.swift +0 -595
  348. package/Sources/RunicCore/Providers/DeepSeek/DeepSeekProviderDescriptor.swift +0 -85
  349. package/Sources/RunicCore/Providers/DeepSeek/DeepSeekUsageFetcher.swift +0 -108
  350. package/Sources/RunicCore/Providers/Factory/FactoryLocalStorageImporter.swift +0 -398
  351. package/Sources/RunicCore/Providers/Factory/FactoryProviderDescriptor.swift +0 -65
  352. package/Sources/RunicCore/Providers/Factory/FactoryStatusProbe.swift +0 -1276
  353. package/Sources/RunicCore/Providers/Fireworks/FireworksProviderDescriptor.swift +0 -84
  354. package/Sources/RunicCore/Providers/Fireworks/FireworksUsageFetcher.swift +0 -75
  355. package/Sources/RunicCore/Providers/Gemini/GeminiProviderDescriptor.swift +0 -65
  356. package/Sources/RunicCore/Providers/Gemini/GeminiStatusProbe.swift +0 -836
  357. package/Sources/RunicCore/Providers/Groq/GroqProviderDescriptor.swift +0 -83
  358. package/Sources/RunicCore/Providers/Groq/GroqUsageFetcher.swift +0 -71
  359. package/Sources/RunicCore/Providers/Kimi/KimiProviderDescriptor.swift +0 -83
  360. package/Sources/RunicCore/Providers/Kimi/KimiUsageFetcher.swift +0 -77
  361. package/Sources/RunicCore/Providers/MiniMax/MiniMaxProviderDescriptor.swift +0 -92
  362. package/Sources/RunicCore/Providers/MiniMax/MiniMaxSettingsReader.swift +0 -54
  363. package/Sources/RunicCore/Providers/MiniMax/MiniMaxUsageFetcher.swift +0 -168
  364. package/Sources/RunicCore/Providers/MiniMax/MiniMaxWebUsageFetcher.swift +0 -911
  365. package/Sources/RunicCore/Providers/Mistral/MistralProviderDescriptor.swift +0 -84
  366. package/Sources/RunicCore/Providers/Mistral/MistralUsageFetcher.swift +0 -75
  367. package/Sources/RunicCore/Providers/OpenRouter/OpenRouterProviderDescriptor.swift +0 -87
  368. package/Sources/RunicCore/Providers/OpenRouter/OpenRouterUsageFetcher.swift +0 -203
  369. package/Sources/RunicCore/Providers/Perplexity/PerplexityProviderDescriptor.swift +0 -84
  370. package/Sources/RunicCore/Providers/Perplexity/PerplexityUsageFetcher.swift +0 -75
  371. package/Sources/RunicCore/Providers/ProviderBranding.swift +0 -25
  372. package/Sources/RunicCore/Providers/ProviderCLIConfig.swift +0 -17
  373. package/Sources/RunicCore/Providers/ProviderDescriptor.swift +0 -129
  374. package/Sources/RunicCore/Providers/ProviderFetchPlan.swift +0 -263
  375. package/Sources/RunicCore/Providers/ProviderSettingsSnapshot.swift +0 -98
  376. package/Sources/RunicCore/Providers/ProviderTokenResolver.swift +0 -501
  377. package/Sources/RunicCore/Providers/ProviderVersionDetector.swift +0 -68
  378. package/Sources/RunicCore/Providers/Providers.swift +0 -184
  379. package/Sources/RunicCore/Providers/Qwen/QwenProviderDescriptor.swift +0 -84
  380. package/Sources/RunicCore/Providers/Qwen/QwenSettingsReader.swift +0 -30
  381. package/Sources/RunicCore/Providers/Qwen/QwenUsageStats.swift +0 -315
  382. package/Sources/RunicCore/Providers/SambaNova/SambaNovaProviderDescriptor.swift +0 -84
  383. package/Sources/RunicCore/Providers/SambaNova/SambaNovaUsageFetcher.swift +0 -75
  384. package/Sources/RunicCore/Providers/Together/TogetherProviderDescriptor.swift +0 -83
  385. package/Sources/RunicCore/Providers/Together/TogetherUsageFetcher.swift +0 -75
  386. package/Sources/RunicCore/Providers/VertexAI/VertexAIProviderDescriptor.swift +0 -123
  387. package/Sources/RunicCore/Providers/VertexAI/VertexAISettingsReader.swift +0 -48
  388. package/Sources/RunicCore/Providers/VertexAI/VertexAIUsageFetcher.swift +0 -144
  389. package/Sources/RunicCore/Providers/XAI/XAIProviderDescriptor.swift +0 -83
  390. package/Sources/RunicCore/Providers/XAI/XAIUsageFetcher.swift +0 -75
  391. package/Sources/RunicCore/Providers/Zai/ZaiProviderDescriptor.swift +0 -72
  392. package/Sources/RunicCore/Providers/Zai/ZaiSettingsReader.swift +0 -41
  393. package/Sources/RunicCore/Providers/Zai/ZaiUsageStats.swift +0 -718
  394. package/Sources/RunicCore/Sync/BackgroundSyncManager.swift +0 -385
  395. package/Sources/RunicCore/Sync/SyncConflictResolver.swift +0 -310
  396. package/Sources/RunicCore/Sync/SyncProtocol.swift +0 -288
  397. package/Sources/RunicCore/Sync/SyncRecord.swift +0 -405
  398. package/Sources/RunicCore/Sync/SyncUsageExample.swift +0 -294
  399. package/Sources/RunicCore/Sync/TeamSyncRecords.swift +0 -775
  400. package/Sources/RunicCore/Sync/iCloudSyncEngine.swift +0 -333
  401. package/Sources/RunicCore/Team/TeamModels.swift +0 -583
  402. package/Sources/RunicCore/Team/TeamShowbackExporter.swift +0 -495
  403. package/Sources/RunicCore/Team/TeamStore.swift +0 -792
  404. package/Sources/RunicCore/TextParsing.swift +0 -55
  405. package/Sources/RunicCore/UsageFetcher.swift +0 -694
  406. package/Sources/RunicCore/UsageFormatter.swift +0 -410
  407. package/Sources/RunicCore/UsageLedger/ClaudeUsageLogSource.swift +0 -427
  408. package/Sources/RunicCore/UsageLedger/CodexUsageLogSource.swift +0 -494
  409. package/Sources/RunicCore/UsageLedger/LedgerCache.swift +0 -158
  410. package/Sources/RunicCore/UsageLedger/OTelGenAILedgerAdapter.swift +0 -550
  411. package/Sources/RunicCore/UsageLedger/UsageLedger.swift +0 -29
  412. package/Sources/RunicCore/UsageLedger/UsageLedgerAggregator.swift +0 -660
  413. package/Sources/RunicCore/UsageLedger/UsageLedgerInsightsAdvisor.swift +0 -209
  414. package/Sources/RunicCore/UsageLedger/UsageLedgerModels.swift +0 -417
  415. package/Sources/RunicCore/UsageLedger/UsageLedgerProjectIdentity.swift +0 -245
  416. package/Sources/RunicCore/UsagePace.swift +0 -81
  417. package/Sources/RunicCore/Vendored/CostUsage/CostUsageCache.swift +0 -73
  418. package/Sources/RunicCore/Vendored/CostUsage/CostUsageJsonl.swift +0 -74
  419. package/Sources/RunicCore/Vendored/CostUsage/CostUsagePricing.swift +0 -208
  420. package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner+Claude.swift +0 -455
  421. package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner+Timestamp.swift +0 -132
  422. package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner.swift +0 -589
  423. package/Sources/RunicCore/WidgetSnapshot.swift +0 -183
  424. package/Sources/RunicMacroSupport/ProviderRegistrationMacros.swift +0 -14
  425. package/Sources/RunicMacros/ProviderRegistrationMacros.swift +0 -216
  426. package/Sources/RunicWidget/RunicWidgetBundle.swift +0 -79
  427. package/Sources/RunicWidget/RunicWidgetProvider.swift +0 -283
  428. package/Sources/RunicWidget/RunicWidgetViews.swift +0 -680
  429. package/Tests/RunicTests/AntigravityStatusProbeTests.swift +0 -50
  430. package/Tests/RunicTests/AppDelegateTests.swift +0 -43
  431. package/Tests/RunicTests/BrowserCookieOrderLabelTests.swift +0 -22
  432. package/Tests/RunicTests/CLIArgumentParsingTests.swift +0 -70
  433. package/Tests/RunicTests/CLICostTests.swift +0 -65
  434. package/Tests/RunicTests/CLIProviderSelectionTests.swift +0 -22
  435. package/Tests/RunicTests/CLISnapshotTests.swift +0 -72
  436. package/Tests/RunicTests/CLIWebFallbackTests.swift +0 -58
  437. package/Tests/RunicTests/ClaudeOAuthTests.swift +0 -164
  438. package/Tests/RunicTests/ClaudeResilienceTests.swift +0 -30
  439. package/Tests/RunicTests/ClaudeUsageTests.swift +0 -370
  440. package/Tests/RunicTests/CodexOAuthTests.swift +0 -122
  441. package/Tests/RunicTests/CodexUsageLogSourceTests.swift +0 -82
  442. package/Tests/RunicTests/CopilotTokenResolverTests.swift +0 -75
  443. package/Tests/RunicTests/CopilotVSCodeTokenReaderTests.swift +0 -75
  444. package/Tests/RunicTests/CostUsageDecodingTests.swift +0 -394
  445. package/Tests/RunicTests/CostUsagePricingTests.swift +0 -50
  446. package/Tests/RunicTests/CostUsageScannerTests.swift +0 -700
  447. package/Tests/RunicTests/CursorStatusProbeTests.swift +0 -323
  448. package/Tests/RunicTests/FactoryStatusProbeTests.swift +0 -69
  449. package/Tests/RunicTests/GeminiAPITestHelpers.swift +0 -94
  450. package/Tests/RunicTests/GeminiLoginAlertTests.swift +0 -28
  451. package/Tests/RunicTests/GeminiStatusProbeAPITests.swift +0 -283
  452. package/Tests/RunicTests/GeminiStatusProbePlanTests.swift +0 -279
  453. package/Tests/RunicTests/GeminiStatusProbeTests.swift +0 -233
  454. package/Tests/RunicTests/GeminiTestEnvironment.swift +0 -87
  455. package/Tests/RunicTests/GoogleWorkspaceStatusTests.swift +0 -73
  456. package/Tests/RunicTests/InstallOriginTests.swift +0 -18
  457. package/Tests/RunicTests/KeyboardShortcutsBundleTests.swift +0 -9
  458. package/Tests/RunicTests/LiveAccountTests.swift +0 -24
  459. package/Tests/RunicTests/LoadingPatternTests.swift +0 -35
  460. package/Tests/RunicTests/MenuCardModelTests.swift +0 -545
  461. package/Tests/RunicTests/MiniMaxCookieHeaderStoreTestSupport.swift +0 -8
  462. package/Tests/RunicTests/MiniMaxGroupIDStoreTestSupport.swift +0 -8
  463. package/Tests/RunicTests/MiniMaxParsingTests.swift +0 -68
  464. package/Tests/RunicTests/MiniMaxTokenStoreTestSupport.swift +0 -8
  465. package/Tests/RunicTests/OTelGenAILedgerAdapterTests.swift +0 -112
  466. package/Tests/RunicTests/OpenAIDashboardBrowserCookieImporterTests.swift +0 -17
  467. package/Tests/RunicTests/OpenAIDashboardFetcherCreditsWaitTests.swift +0 -75
  468. package/Tests/RunicTests/OpenAIDashboardOffscreenHostTests.swift +0 -27
  469. package/Tests/RunicTests/OpenAIDashboardParserTests.swift +0 -134
  470. package/Tests/RunicTests/OpenAIWebAccountSwitchTests.swift +0 -53
  471. package/Tests/RunicTests/OpenRouterTokenStoreTestSupport.swift +0 -92
  472. package/Tests/RunicTests/PathBuilderTests.swift +0 -237
  473. package/Tests/RunicTests/ProviderFetchPipelineTests.swift +0 -160
  474. package/Tests/RunicTests/ProviderIconResourcesTests.swift +0 -38
  475. package/Tests/RunicTests/ProviderMetadataStatusLinkTests.swift +0 -16
  476. package/Tests/RunicTests/ProviderRegistryTests.swift +0 -29
  477. package/Tests/RunicTests/ProviderSettingsDescriptorTests.swift +0 -202
  478. package/Tests/RunicTests/ProviderToggleStoreTests.swift +0 -51
  479. package/Tests/RunicTests/RunicTests.swift +0 -120
  480. package/Tests/RunicTests/SessionQuotaNotificationLogicTests.swift +0 -36
  481. package/Tests/RunicTests/SettingsStoreTests.swift +0 -161
  482. package/Tests/RunicTests/StatusItemAnimationTests.swift +0 -49
  483. package/Tests/RunicTests/StatusMenuTests.swift +0 -434
  484. package/Tests/RunicTests/StatusProbeTests.swift +0 -377
  485. package/Tests/RunicTests/SubprocessRunnerTests.swift +0 -20
  486. package/Tests/RunicTests/SubscriptionDetectionTests.swift +0 -65
  487. package/Tests/RunicTests/TTYCommandRunnerTests.swift +0 -148
  488. package/Tests/RunicTests/TTYIntegrationTests.swift +0 -41
  489. package/Tests/RunicTests/TeamShowbackExporterTests.swift +0 -159
  490. package/Tests/RunicTests/TextParsingTests.swift +0 -12
  491. package/Tests/RunicTests/UsageFormatterTests.swift +0 -112
  492. package/Tests/RunicTests/UsageLedgerAnomalyDetectionTests.swift +0 -172
  493. package/Tests/RunicTests/UsageLedgerForecastTests.swift +0 -213
  494. package/Tests/RunicTests/UsageLedgerInsightsAdvisorTests.swift +0 -83
  495. package/Tests/RunicTests/UsageLedgerProjectNameTests.swift +0 -170
  496. package/Tests/RunicTests/UsagePaceTests.swift +0 -77
  497. package/Tests/RunicTests/UsagePaceTextTests.swift +0 -109
  498. package/Tests/RunicTests/UsagePolicyEngineTests.swift +0 -91
  499. package/Tests/RunicTests/WidgetSnapshotTests.swift +0 -45
  500. package/Tests/RunicTests/ZaiProviderTests.swift +0 -61
  501. package/Tests/RunicTests/ZaiTokenStoreTestSupport.swift +0 -6
  502. package/TestsLinux/PlatformGatingTests.swift +0 -46
  503. package/appcast.xml +0 -144
  504. package/assets/logo-concept-stack.svg +0 -24
  505. package/assets/logo-minimal-bars.svg +0 -15
  506. package/assets/logo.svg +0 -20
  507. package/assets/logo2.svg +0 -43
  508. package/bin/docs-list +0 -5
  509. package/build-and-run.sh +0 -369
  510. package/docs/.nojekyll +0 -1
  511. package/docs/CNAME +0 -1
  512. package/docs/antigravity.md +0 -75
  513. package/docs/architecture.md +0 -32
  514. package/docs/claude.md +0 -93
  515. package/docs/cli-commands/integration_guide.md +0 -371
  516. package/docs/cli-commands/quick_reference.md +0 -362
  517. package/docs/cli-commands/readme.md +0 -361
  518. package/docs/cli.md +0 -156
  519. package/docs/cloudkit_sync_guide.md +0 -495
  520. package/docs/codebase_review.md +0 -288
  521. package/docs/codex-oauth.md +0 -635
  522. package/docs/codex.md +0 -104
  523. package/docs/codexbar.png +0 -0
  524. package/docs/copilot.md +0 -44
  525. package/docs/cursor.md +0 -46
  526. package/docs/design/designcomparisonchart.md +0 -510
  527. package/docs/design/implementationguide.md +0 -792
  528. package/docs/design/menubaricondesignconcepts.md +0 -796
  529. package/docs/design/mockups/hybridiconconcept.svg +0 -62
  530. package/docs/design/mockups/infinityiconconcept.svg +0 -41
  531. package/docs/design/mockups/infinityiconstates.svg +0 -129
  532. package/docs/design/mockups/wavelogorefined.svg +0 -48
  533. package/docs/design/quick_summary.md +0 -426
  534. package/docs/design/readme.md +0 -478
  535. package/docs/design/sizespecifications.md +0 -575
  536. package/docs/design-system.md +0 -836
  537. package/docs/factory.md +0 -103
  538. package/docs/gemini.md +0 -73
  539. package/docs/icon.md +0 -37
  540. package/docs/icon.png +0 -0
  541. package/docs/index.html +0 -175
  542. package/docs/keychain_fix.md +0 -274
  543. package/docs/minimax.md +0 -71
  544. package/docs/packaging.md +0 -25
  545. package/docs/progress-bar-improvements.md +0 -240
  546. package/docs/progress-bar-quick-reference.md +0 -283
  547. package/docs/progress-bar-technical-details.md +0 -432
  548. package/docs/progress-bar-visual-test.swift +0 -375
  549. package/docs/provider.md +0 -202
  550. package/docs/providers.md +0 -86
  551. package/docs/refactor/macros.md +0 -35
  552. package/docs/refresh-loop.md +0 -22
  553. package/docs/releasing-homebrew.md +0 -35
  554. package/docs/releasing.md +0 -121
  555. package/docs/research/concrete_todo_2026-02-22.md +0 -47
  556. package/docs/research/core-feature-research.md +0 -248
  557. package/docs/research/feature_uiux_roadmap_2026-02-22.md +0 -202
  558. package/docs/research/parity_matrix.md +0 -49
  559. package/docs/research/provider_expansion_candidates_2026-02-22.md +0 -80
  560. package/docs/research/provider_model_token_project_matrix_2026-02-23.md +0 -46
  561. package/docs/research/release_gate_checklist.md +0 -57
  562. package/docs/site.css +0 -505
  563. package/docs/sparkle.md +0 -28
  564. package/docs/status.md +0 -28
  565. package/docs/sync/implementation.md +0 -393
  566. package/docs/sync/readme.md +0 -317
  567. package/docs/sync_files_summary.md +0 -391
  568. package/docs/sync_quick_reference.md +0 -225
  569. package/docs/todo.md +0 -11
  570. package/docs/ui.md +0 -29
  571. package/docs/web-integration.md +0 -9
  572. package/docs/widgets.md +0 -85
  573. package/docs/workflows/error-handling-improvements.md +0 -434
  574. package/docs/workflows/folder_structure.md +0 -299
  575. package/docs/workflows/loading_states.md +0 -446
  576. package/docs/workflows/loading_states_examples.md +0 -565
  577. package/docs/workflows/loading_states_flow.md +0 -430
  578. package/docs/workflows/performance_optimizations.md +0 -457
  579. package/docs/workflows/phase1-cli-testing-report.md +0 -313
  580. package/docs/workflows/quick_reference.md +0 -228
  581. package/docs/workflows/readme.md +0 -59
  582. package/docs/workflows/recent_improvements.md +0 -275
  583. package/docs/workflows/sync_enablement_summary.md +0 -400
  584. package/docs/zai.md +0 -43
  585. package/runic.png +0 -0
  586. package/version.env +0 -2
@@ -1,796 +0,0 @@
1
- # Runic Menubar Icon Design Concepts
2
-
3
- **Date:** February 1, 2026
4
- **Status:** Design Proposal
5
- **Author:** Design Review
6
-
7
- ## Executive Summary
8
-
9
- This document compares three design concepts for the Runic menubar icon:
10
- - **Option A:** Infinity Symbol + Provider Icon (monitoring eyes concept)
11
- - **Option B:** Wave Logo (current design)
12
- - **Option C:** Hybrid - Infinity + Usage Indicators
13
-
14
- Each concept is evaluated for symbolism, usability, technical feasibility, and visual clarity at macOS menubar scale.
15
-
16
- ---
17
-
18
- ## Current State Analysis
19
-
20
- ### Current Wave Logo (RunicMenubarIcon.svg)
21
-
22
- **Specifications:**
23
- - Viewport: 46×78 to 210×178 (164×100 effective)
24
- - Current render size: 38×22pt (76×44px @2x)
25
- - Elements:
26
- - Wave/knot path (stroke: #14B8A6, 18px thick)
27
- - Center circle accent (32×32px, fill: #2DD4BF)
28
- - Three usage bars (8px wide, varying heights, fill: #0F766E)
29
-
30
- **Strengths:**
31
- - Shows live usage data through bar heights
32
- - Distinctive wave/infinity-like shape
33
- - Good color gradation (teal palette)
34
- - Already implemented and rendered efficiently
35
-
36
- **Weaknesses:**
37
- - Complex at small size (22pt height = 44px @2x)
38
- - Wave pattern can blur on non-Retina displays
39
- - Limited symbolic meaning (abstract wave shape)
40
- - No clear provider identification
41
- - Bars too small to read precise values
42
-
43
- ---
44
-
45
- ## Design Concepts
46
-
47
- ### Option A: Infinity Symbol + Provider Icon
48
-
49
- **Core Concept:**
50
- The infinity symbol (∞) represents "eyes watching" your AI usage. The space between the loops displays the active provider's icon, creating a visual metaphor of Runic monitoring your AI provider.
51
-
52
- #### Visual Design
53
-
54
- **Infinity Symbol Specifications:**
55
- - **Overall size:** 38×22pt (width × height)
56
- - **Infinity stroke:** 4pt thick line
57
- - **Loop radius:** 7pt per loop
58
- - **Center gap:** 10pt wide × 12pt tall (for provider icon)
59
- - **Provider icon:** 8×8pt (16×16px @2x)
60
-
61
- **Layout:**
62
- ```
63
- ┌────────────────────────────────────┐
64
- │ │
65
- │ ╭──╮ ╭──╮ │
66
- │ │ │ 👁 │ │ │
67
- │ ╰──╯ ╰──╯ │
68
- │ │
69
- └────────────────────────────────────┘
70
- ```
71
-
72
- #### States & Variations
73
-
74
- 1. **Default State:**
75
- - Monochrome template rendering (adapts to light/dark mode)
76
- - Provider icon in center (full opacity)
77
- - Infinity loops at 100% opacity
78
-
79
- 2. **Usage Pressure Coloring:**
80
- - Safe (0-50% used): Teal (#14B8A6)
81
- - Warning (50-80% used): Orange (#FFB84D)
82
- - Critical (80-100% used): Red (#FF4F70)
83
- - Apply color to infinity loops, keep provider icon white/black
84
-
85
- 3. **Stale Data:**
86
- - Reduce opacity to 55%
87
- - Slight desaturation
88
-
89
- 4. **Multiple Providers Active:**
90
- - Show "combined" icon (perhaps stacked dots or merged symbol)
91
- - Alternative: cycle between provider icons every 3 seconds
92
-
93
- #### Pros
94
-
95
- **Symbolic Strength:**
96
- - Clear metaphor: "eyes watching" = monitoring
97
- - Infinity = continuous tracking
98
- - Immediately communicates app purpose
99
-
100
- **Visual Clarity:**
101
- - Simple, bold shape recognizable at 18-26pt
102
- - Provider icon clearly visible in center
103
- - Less visual noise than current wave design
104
-
105
- **Scalability:**
106
- - Works well from 18pt to 32pt
107
- - Clean lines render sharply on all displays
108
- - Template rendering ensures perfect dark/light mode adaptation
109
-
110
- **Brand Identity:**
111
- - Memorable, unique icon
112
- - "Eyes on your AI" tagline potential
113
- - Strong conceptual foundation
114
-
115
- #### Cons
116
-
117
- **Limited Data Visualization:**
118
- - Doesn't show live usage bars
119
- - No immediate visual feedback on quota consumption
120
- - User must click to see detailed metrics
121
-
122
- **Provider Icon Constraints:**
123
- - Center area limited to 8-10pt icons
124
- - Some provider logos may not scale well
125
- - Requires maintaining clear provider icons
126
-
127
- **Less Informative:**
128
- - Loses at-a-glance usage information
129
- - More symbolic, less functional
130
- - User must memorize color meaning
131
-
132
- #### Implementation Complexity
133
-
134
- **Medium Complexity:**
135
-
136
- 1. **SVG Creation:**
137
- - Simple infinity curve path (Bézier curves)
138
- - Template rendering for color adaptation
139
- - Provider icon overlay (multiply blend mode)
140
-
141
- 2. **Dynamic Rendering:**
142
- ```swift
143
- static func drawInfinityWithProvider(
144
- providerIcon: NSImage,
145
- pressure: Double,
146
- appearance: IconAppearance
147
- ) -> NSImage {
148
- // Draw infinity path
149
- // Apply pressure coloring
150
- // Composite provider icon in center
151
- // Return template or vibrant image
152
- }
153
- ```
154
-
155
- 3. **Performance:**
156
- - Cache infinity base shapes
157
- - Cache per-provider compositions
158
- - ~50-100 cached variations (providers × pressure levels)
159
-
160
- ---
161
-
162
- ### Option B: Wave Logo (Current Design)
163
-
164
- **Keep the current design with potential refinements.**
165
-
166
- #### Proposed Refinements
167
-
168
- 1. **Size Optimization:**
169
- - Increase to 40×24pt (from 38×22pt) for better bar visibility
170
- - Maintain 2× scale for Retina clarity
171
-
172
- 2. **Simplified Color Palette:**
173
- - Reduce to 2-color scheme for template mode
174
- - Make bars more prominent (wider: 10px instead of 8px)
175
-
176
- 3. **Usage Bar Enhancements:**
177
- - Animate bars on hover (subtle pulse)
178
- - Add tooltips showing exact percentages
179
- - Color-code bars by pressure level
180
-
181
- #### Pros
182
-
183
- **Data-Rich:**
184
- - Shows live usage at a glance
185
- - Three bars = session/weekly/credits data
186
- - Instant visual feedback
187
-
188
- **Already Implemented:**
189
- - No redesign required
190
- - Proven performance
191
- - Existing cache system optimized
192
-
193
- **Informative:**
194
- - Power users can monitor usage without clicking
195
- - Visual trends over time
196
- - Multiple data dimensions
197
-
198
- #### Cons
199
-
200
- **Visual Complexity:**
201
- - Bars hard to read at 22pt height
202
- - Wave pattern adds visual noise
203
- - Not immediately recognizable
204
-
205
- **Weak Symbolism:**
206
- - Abstract wave shape
207
- - No clear connection to "monitoring" or "AI"
208
- - Generic technology aesthetic
209
-
210
- **Scaling Issues:**
211
- - Bars become illegible below 20pt
212
- - Wave detail lost on low-DPI displays
213
- - Template rendering flattens detail
214
-
215
- ---
216
-
217
- ### Option C: Hybrid - Infinity + Usage Indicators
218
-
219
- **Best of both worlds: symbolic infinity with functional usage display.**
220
-
221
- #### Visual Design
222
-
223
- **Concept:**
224
- - Infinity symbol outline (3pt stroke)
225
- - Single consolidated usage bar overlaid in the center gap
226
- - Provider badge in corner (6×6pt)
227
-
228
- **Layout:**
229
- ```
230
- ┌────────────────────────────────────┐
231
- │ │
232
- │ ╭──╮ ███ ╭──╮ [C] │
233
- │ │ │ ███ │ │ │
234
- │ ╰──╯ ███ ╰──╯ │
235
- │ │
236
- └────────────────────────────────────┘
237
- ```
238
-
239
- **Specifications:**
240
- - Infinity loops: 3pt stroke, 6pt radius each
241
- - Center bar: 10pt wide × 12pt tall, fill indicates usage %
242
- - Provider badge: 6×6pt circle in top-right corner
243
-
244
- #### States & Variations
245
-
246
- 1. **Usage Bar Fill:**
247
- - Empty state: 10% fill (show container outline)
248
- - Progressive fill from bottom to top
249
- - Color transitions: teal → orange → red
250
-
251
- 2. **Provider Badge:**
252
- - Small provider icon or colored dot
253
- - Indicates active provider
254
- - Subtle glow when actively syncing
255
-
256
- 3. **Infinity Outline:**
257
- - Always visible (base color)
258
- - Optional: pulse animation during sync
259
-
260
- #### Pros
261
-
262
- **Balanced Design:**
263
- - Maintains symbolic "eyes watching" concept
264
- - Shows usage data in center bar
265
- - Provider identification via badge
266
-
267
- **Functional:**
268
- - At-a-glance usage percentage
269
- - Simpler than three bars (one consolidated metric)
270
- - Clear visual hierarchy
271
-
272
- **Scalable:**
273
- - Works from 20-28pt
274
- - Both elements remain visible at small sizes
275
- - Better than current wave complexity
276
-
277
- #### Cons
278
-
279
- **Compromised Simplicity:**
280
- - More complex than pure infinity symbol
281
- - Bar may compete with infinity shape
282
- - Provider badge might be too small
283
-
284
- **Reduced Data:**
285
- - Only one bar (vs. three in current design)
286
- - Loses session/weekly/credits breakdown
287
- - Must consolidate metrics (show most critical)
288
-
289
- **Implementation Effort:**
290
- - New design and testing required
291
- - Hybrid rendering logic
292
- - More cache permutations
293
-
294
- ---
295
-
296
- ## Size Recommendations & Technical Specifications
297
-
298
- ### macOS Menubar Icon Guidelines
299
-
300
- **Standard Sizes:**
301
- - **Recommended:** 22pt square (44×44px @2x)
302
- - **Apple HIG:** 18-22pt for simple icons, up to 28pt for detailed
303
- - **Runic current:** 38×22pt (rectangular, not square)
304
-
305
- **Rendering Requirements:**
306
- - Must provide @2x (Retina) and @1x (legacy) bitmaps
307
- - Template rendering: use alpha channel, system colors
308
- - Safe area: 2pt padding from edges
309
- - Pixel grid alignment at @2x scale
310
-
311
- ### Recommended Sizes by Concept
312
-
313
- #### Option A: Infinity Symbol
314
- - **Optimal height:** 20-24pt
315
- - **Width:** 36-42pt (to fit provider icon)
316
- - **Rationale:** Simple geometric shape scales well, needs width for two loops
317
-
318
- **Proposed:** 40×24pt
319
- - Infinity loops: 8pt radius each, 4pt stroke
320
- - Center gap: 12pt wide (fits 8pt provider icon comfortably)
321
- - Provider icon: 8×8pt (16×16px @2x) with 2pt padding
322
-
323
- #### Option B: Wave Logo (Current)
324
- - **Current:** 38×22pt (adequate but cramped)
325
- - **Recommended:** 40×24pt or 42×26pt
326
- - **Rationale:** More vertical space for bars, clearer wave detail
327
-
328
- **Proposed:** 42×26pt
329
- - Wave path: 20pt stroke
330
- - Center circle: 36×36pt
331
- - Usage bars: 10pt wide × 20-28pt tall (varies)
332
-
333
- #### Option C: Hybrid
334
- - **Optimal:** 40×24pt
335
- - **Rationale:** Balances infinity outline and center bar
336
-
337
- **Proposed:** 40×24pt
338
- - Infinity: 3pt stroke, 7pt radius loops
339
- - Center bar: 10×14pt
340
- - Provider badge: 6×6pt in corner
341
-
342
- ### Retina Display Considerations
343
-
344
- **2× Scale (@2x):**
345
- - All dimensions double in pixels
346
- - 24pt height = 48px bitmap height
347
- - Ensures sharp rendering on MacBook Pro/Air displays
348
-
349
- **Anti-aliasing:**
350
- - Use sub-pixel rendering for smooth curves
351
- - Align vertical/horizontal edges to pixel grid
352
- - Avoid fractional pixel positions at @2x scale
353
-
354
- **Color Depth:**
355
- - 32-bit RGBA (8 bits per channel)
356
- - Alpha channel for template rendering
357
- - sRGB color space
358
-
359
- ---
360
-
361
- ## Color Schemes & Template Rendering
362
-
363
- ### Template Mode (Recommended)
364
-
365
- **What is Template Rendering?**
366
- - macOS automatically adapts icon to menubar theme
367
- - Light mode: dark icon on light background
368
- - Dark mode: light icon on dark background
369
- - System handles all color adaptation
370
-
371
- **Implementation:**
372
- ```swift
373
- image.isTemplate = true
374
- ```
375
-
376
- **Benefits:**
377
- - Perfect theme integration
378
- - No manual light/dark variants
379
- - System-level accessibility support
380
- - Consistent with other menubar apps
381
-
382
- **Limitations:**
383
- - Single color (no multi-color icons)
384
- - Alpha channel defines shape only
385
- - Cannot show colored provider icons in template mode
386
-
387
- ### Vibrant Mode (Optional)
388
-
389
- **Full Color Rendering:**
390
- - Custom color palette preserved
391
- - Pressure coloring (teal → orange → red)
392
- - Colored provider icons
393
-
394
- **Use Cases:**
395
- - User preference toggle in settings
396
- - High-priority alerts (critical usage)
397
- - Branding emphasis over integration
398
-
399
- **Implementation:**
400
- ```swift
401
- image.isTemplate = false
402
- // Apply custom colors during rendering
403
- ```
404
-
405
- ### Recommended Approach
406
-
407
- **Default: Template Mode**
408
- - Clean, professional appearance
409
- - Perfect system integration
410
- - Accessibility compliant
411
-
412
- **Optional: Vibrant Mode**
413
- - User-configurable in preferences
414
- - Fallback for alerts (flash red when critical)
415
- - Provider-specific colors if desired
416
-
417
- ---
418
-
419
- ## Usage Indicator Integration
420
-
421
- ### Option A: Infinity Symbol - How to Show Usage?
422
-
423
- Since the infinity symbol doesn't inherently display data, here are options:
424
-
425
- #### 1. **Color Pressure Mapping**
426
- - **0-50% used:** Teal infinity loops (#14B8A6)
427
- - **50-80% used:** Orange loops (#FFB84D)
428
- - **80-100% used:** Red loops (#FF4F70)
429
- - **Pros:** Subtle, doesn't clutter icon
430
- - **Cons:** Requires user to learn color meaning
431
-
432
- #### 2. **Accent Dot**
433
- - Small dot (4×4pt) on infinity curve
434
- - Position along curve indicates usage percentage
435
- - Color indicates pressure level
436
- - **Pros:** Visual metaphor (progress indicator)
437
- - **Cons:** Tiny, may be hard to notice
438
-
439
- #### 3. **No Direct Indicator**
440
- - Icon remains symbolic only
441
- - User clicks to see detailed usage
442
- - Menubar tooltip shows percentage on hover
443
- - **Pros:** Cleanest design
444
- - **Cons:** Less functional than current wave
445
-
446
- **Recommendation:** Use **Color Pressure Mapping** for Option A. It's subtle, doesn't add visual complexity, and provides at-a-glance status.
447
-
448
- ### Option B: Wave Logo - Current Approach
449
-
450
- - Three vertical bars show session/weekly/credits usage
451
- - Bar height = percentage used or remaining
452
- - Bars are color-coded or use same teal palette
453
-
454
- **Keep as-is or enhance:**
455
- - Make bars 2pt wider (10pt instead of 8pt)
456
- - Add subtle glow when nearing limits
457
- - Animate on hover (optional)
458
-
459
- ### Option C: Hybrid - Center Bar
460
-
461
- - Single bar in infinity center gap
462
- - Shows most critical metric (lowest remaining percentage)
463
- - Fill level = usage percentage
464
- - Color = pressure level
465
-
466
- **Advantages:**
467
- - Simpler than three bars
468
- - Consolidated "worst-case" metric
469
- - More visible than Option A color coding
470
-
471
- ---
472
-
473
- ## Provider Icon Considerations
474
-
475
- ### Option A: Center Icon (8-10pt)
476
-
477
- **Requirements:**
478
- - **Size:** 8×8pt minimum (16×16px @2x)
479
- - **Clarity:** Must be recognizable at small scale
480
- - **Contrast:** Must work on both light and dark backgrounds
481
-
482
- **Design Guidelines for Provider Icons:**
483
-
484
- 1. **Simple Geometry:**
485
- - Avoid fine details
486
- - Use bold shapes
487
- - Prefer geometric symbols over text
488
-
489
- 2. **High Contrast:**
490
- - Solid fills or thick strokes (2pt+)
491
- - Avoid gradients or textures
492
- - White outline for dark backgrounds (optional)
493
-
494
- 3. **Example Provider Icons:**
495
- - **Claude:** Two vertical slits (current design: 2×6pt)
496
- - **Codex:** Two square eyes (3×3pt)
497
- - **Gemini:** Diamond shape (8pt diagonal)
498
- - **Cursor:** Arrow/pointer (6pt)
499
- - **Copilot:** Circular eyes with bridge
500
-
501
- **Existing Icons:** Already well-designed at small scale (see IconRenderer.swift, lines 300-473)
502
-
503
- ### Option C: Corner Badge (6×6pt)
504
-
505
- **Smaller but less critical:**
506
- - Simple colored dot or 1-letter abbreviation
507
- - Background circle with contrasting icon
508
- - Examples:
509
- - **Claude:** Orange dot with "C"
510
- - **Codex:** Purple dot with "<>"
511
- - **Gemini:** Blue dot with star
512
-
513
- **Trade-off:** Less recognizable but saves center space for usage bar
514
-
515
- ---
516
-
517
- ## Implementation Recommendations
518
-
519
- ### Option A: Infinity Symbol + Provider Icon
520
-
521
- #### SVG Structure
522
- ```xml
523
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 48">
524
- <!-- Infinity loops -->
525
- <path d="M20,24 C20,15 30,15 35,24 C40,33 50,33 50,24
526
- C50,15 40,15 35,24 C30,33 20,33 20,24"
527
- stroke="#14B8A6" stroke-width="8"
528
- fill="none" stroke-linecap="round"/>
529
-
530
- <!-- Provider icon placeholder (replace with actual icon) -->
531
- <circle cx="40" cy="24" r="4" fill="#FFFFFF"/>
532
- </svg>
533
- ```
534
-
535
- #### Swift Rendering Code
536
- ```swift
537
- static func drawInfinityIcon(
538
- provider: UsageProvider,
539
- pressure: Double,
540
- appearance: IconAppearance
541
- ) -> NSImage {
542
- let color = vibrantAccentColor(pressure: pressure, stale: false)
543
- let baseColor = appearance == .template ? NSColor.labelColor : color
544
-
545
- return renderImage(isTemplate: appearance == .template) {
546
- // Draw infinity path
547
- drawInfinityPath(color: baseColor)
548
-
549
- // Composite provider icon in center
550
- if let providerIcon = loadProviderIcon(provider) {
551
- drawProviderIcon(providerIcon, center: centerPoint)
552
- }
553
- }
554
- }
555
-
556
- private static func drawInfinityPath(color: NSColor) {
557
- let path = NSBezierPath()
558
- // Left loop
559
- path.appendArc(
560
- withCenter: NSPoint(x: 15, y: 12),
561
- radius: 7,
562
- startAngle: 0,
563
- endAngle: 360
564
- )
565
- // Right loop
566
- path.appendArc(
567
- withCenter: NSPoint(x: 25, y: 12),
568
- radius: 7,
569
- startAngle: 0,
570
- endAngle: 360
571
- )
572
- // Connect loops to form infinity
573
- // (simplified - actual Bézier curves needed for smooth infinity shape)
574
-
575
- path.lineWidth = 4
576
- color.setStroke()
577
- path.stroke()
578
- }
579
- ```
580
-
581
- #### Caching Strategy
582
- - Cache base infinity shapes (one per pressure color)
583
- - Cache provider icon compositions
584
- - Key: `InfinityCacheKey(provider, pressure, appearance)`
585
- - Estimated cache size: ~50 variations (10 providers × 5 pressure levels)
586
-
587
- ### Option B: Wave Logo Enhancements
588
-
589
- #### Minimal Changes
590
- ```swift
591
- // Increase bar width from 8 to 10
592
- static let barWidth = 10.0
593
-
594
- // Increase overall height from 22 to 24
595
- static let outputSize = NSSize(width: 40, height: 24)
596
- ```
597
-
598
- #### Optional Animations
599
- ```swift
600
- // Add subtle pulse to bars when nearing limit
601
- if pressure > 0.8 {
602
- let pulse = sin(CACurrentMediaTime() * 2) * 0.15 + 0.85
603
- barColor = barColor.withAlphaComponent(pulse)
604
- }
605
- ```
606
-
607
- ### Option C: Hybrid Implementation
608
-
609
- #### Combined Rendering
610
- ```swift
611
- static func drawHybridIcon(
612
- provider: UsageProvider,
613
- primaryUsage: Double,
614
- appearance: IconAppearance
615
- ) -> NSImage {
616
- return renderImage(isTemplate: appearance == .template) {
617
- // 1. Draw infinity outline
618
- drawInfinityOutline(color: baseColor.withAlphaComponent(0.3))
619
-
620
- // 2. Draw center usage bar
621
- drawCenterBar(fillPercent: primaryUsage / 100, color: pressureColor)
622
-
623
- // 3. Draw provider badge
624
- drawProviderBadge(provider: provider, position: .topRight)
625
- }
626
- }
627
- ```
628
-
629
- ---
630
-
631
- ## Comparison Matrix
632
-
633
- | Criterion | Option A: Infinity | Option B: Wave | Option C: Hybrid |
634
- |-----------|-------------------|----------------|------------------|
635
- | **Symbolism** | ★★★★★ Eyes watching | ★★☆☆☆ Abstract | ★★★★☆ Balanced |
636
- | **Data Visibility** | ★★☆☆☆ Color only | ★★★★★ 3 bars | ★★★☆☆ 1 bar |
637
- | **Clarity (18-22pt)** | ★★★★★ Simple shape | ★★★☆☆ Complex | ★★★★☆ Moderate |
638
- | **Provider ID** | ★★★★★ Center icon | ★☆☆☆☆ None | ★★★☆☆ Badge |
639
- | **Implementation** | ★★★☆☆ Medium | ★★★★★ Done | ★★☆☆☆ Complex |
640
- | **Brand Identity** | ★★★★★ Memorable | ★★★☆☆ Generic | ★★★★☆ Good |
641
- | **User Learning** | ★★★☆☆ Color meaning | ★★★★☆ Intuitive | ★★★★☆ Balanced |
642
- | **Scalability** | ★★★★★ 18-32pt | ★★★☆☆ 22-28pt | ★★★★☆ 20-26pt |
643
-
644
- **Rating Scale:** ★★★★★ Excellent | ★★★★☆ Good | ★★★☆☆ Acceptable | ★★☆☆☆ Poor | ★☆☆☆☆ Inadequate
645
-
646
- ---
647
-
648
- ## Recommendations
649
-
650
- ### Primary Recommendation: **Option A - Infinity Symbol + Provider Icon**
651
-
652
- **Rationale:**
653
- 1. **Strong Conceptual Foundation:** The "eyes watching" metaphor immediately communicates Runic's purpose
654
- 2. **Memorable Brand Identity:** Unique, recognizable icon that stands out in the menubar
655
- 3. **Scalable Design:** Works well from 18pt to 32pt, crucial for different Mac displays
656
- 4. **Provider Clarity:** Center icon clearly shows which provider is active
657
- 5. **Modern Aesthetics:** Clean, minimalist design aligns with macOS Big Sur+ design language
658
-
659
- **Trade-off Acknowledgment:**
660
- - Loses immediate usage data visibility
661
- - Users must click to see detailed metrics
662
- - **Mitigation:** Use color pressure mapping (teal → orange → red) and rich tooltip on hover
663
-
664
- **Recommended Specifications:**
665
- - Size: 40×24pt (80×48px @2x)
666
- - Infinity stroke: 4pt
667
- - Loop radius: 7pt each
668
- - Provider icon: 8×8pt in center
669
- - Color mapping: pressure-based for at-a-glance status
670
-
671
- ### Secondary Recommendation: **Option C - Hybrid** (if data visibility is critical)
672
-
673
- **When to Choose:**
674
- - User feedback demands at-a-glance usage data
675
- - Power users prioritize metrics over symbolism
676
- - A/B testing shows higher engagement with visible bars
677
-
678
- **Recommended Specifications:**
679
- - Size: 40×24pt
680
- - Infinity outline: 3pt stroke
681
- - Center bar: 10×14pt
682
- - Provider badge: 6×6pt in corner
683
-
684
- ### Not Recommended: **Option B - Current Wave Logo**
685
-
686
- **Reasoning:**
687
- - Weak symbolic connection to monitoring/AI
688
- - Visual complexity reduces clarity at small sizes
689
- - Generic technology aesthetic
690
- - Already implemented, so no forward progress
691
-
692
- **Exception:** If development timeline is critical and redesign is not feasible, enhance current design with:
693
- - Increased size to 42×26pt
694
- - Wider bars (10pt instead of 8pt)
695
- - Simplified color scheme
696
-
697
- ---
698
-
699
- ## Implementation Plan
700
-
701
- ### Phase 1: Prototyping (Week 1)
702
- 1. Create SVG mockups for all three options
703
- 2. Implement basic rendering in IconRenderer
704
- 3. Test at 18pt, 22pt, 26pt sizes
705
- 4. Gather internal feedback
706
-
707
- ### Phase 2: Refinement (Week 2)
708
- 5. Refine chosen design based on feedback
709
- 6. Implement caching system
710
- 7. Add animation states (sync pulse, error flash)
711
- 8. Test on multiple Mac displays (Retina, non-Retina)
712
-
713
- ### Phase 3: Integration (Week 3)
714
- 9. Replace current wave logo in Resources/
715
- 10. Update IconRenderer.swift rendering logic
716
- 11. Add user preference toggle (template vs. vibrant mode)
717
- 12. Update documentation and changelog
718
-
719
- ### Phase 4: User Testing (Week 4)
720
- 13. Beta release with new icon
721
- 14. Collect user feedback
722
- 15. A/B testing if possible (show different icons to user segments)
723
- 16. Iterate based on data
724
-
725
- ---
726
-
727
- ## Future Enhancements
728
-
729
- ### Dynamic Animations
730
- - **Sync Pulse:** Subtle pulse during active data fetch
731
- - **Alert Flash:** Red flash when usage exceeds threshold
732
- - **Provider Switch:** Smooth morph animation when switching providers
733
-
734
- ### Accessibility
735
- - **VoiceOver Support:** Descriptive labels for icon states
736
- - **High Contrast Mode:** Thicker strokes, higher contrast colors
737
- - **Reduced Motion:** Disable animations if system preference set
738
-
739
- ### Customization
740
- - **User-Selectable Icons:** Option A, B, or C in preferences
741
- - **Color Themes:** Custom color schemes beyond default teal
742
- - **Size Options:** Small (20pt), Medium (24pt), Large (28pt)
743
-
744
- ---
745
-
746
- ## Appendices
747
-
748
- ### Appendix A: SVG Mockup Files
749
- - `InfinityIconConcept.svg` - Option A full design
750
- - `InfinityIconStates.svg` - Option A with all states
751
- - `WaveLogoRefined.svg` - Option B with enhancements
752
- - `HybridIconConcept.svg` - Option C design
753
-
754
- ### Appendix B: Technical References
755
- - Apple Human Interface Guidelines - Menubar Extras
756
- - macOS Template Image Best Practices
757
- - IconRenderer.swift (current implementation)
758
- - NSImage Template Rendering Documentation
759
-
760
- ### Appendix C: Color Specifications
761
-
762
- **Teal Palette (Current):**
763
- - Primary: #14B8A6 (teal-500)
764
- - Light: #2DD4BF (teal-400)
765
- - Dark: #0F766E (teal-700)
766
-
767
- **Pressure Palette (Recommended):**
768
- - Safe: #14B8A6 (teal-500) - 0-50% usage
769
- - Warning: #FFB84D (orange-400) - 50-80% usage
770
- - Critical: #FF4F70 (red-500) - 80-100% usage
771
- - Stale: 55% opacity on any color
772
-
773
- **Template Colors:**
774
- - Light mode: NSColor.labelColor (black ~85% opacity)
775
- - Dark mode: NSColor.labelColor (white ~85% opacity)
776
- - System-managed, no manual specification needed
777
-
778
- ---
779
-
780
- ## Conclusion
781
-
782
- The **Infinity Symbol + Provider Icon** design offers the strongest conceptual foundation, best scalability, and most memorable brand identity for Runic. While it sacrifices immediate data visibility compared to the current wave logo, this trade-off is acceptable given:
783
-
784
- 1. Users can hover for tooltip or click for full details
785
- 2. Color pressure mapping provides at-a-glance status
786
- 3. Provider icon adds valuable context missing in current design
787
- 4. Simpler shape ensures clarity across all display sizes
788
-
789
- **Next Steps:**
790
- 1. Create SVG mockups (see attached files)
791
- 2. Stakeholder review and decision
792
- 3. Implement chosen design in IconRenderer.swift
793
- 4. Beta test with users
794
- 5. Iterate based on feedback
795
-
796
- **Timeline:** 3-4 weeks from concept approval to production deployment.