@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
package/docs/codex.md DELETED
@@ -1,104 +0,0 @@
1
- ---
2
- summary: "Codex provider data sources: OpenAI web dashboard, Codex CLI RPC/PTY, credits, and local cost usage."
3
- read_when:
4
- - Debugging Codex usage/credits parsing
5
- - Updating OpenAI dashboard scraping or cookie import
6
- - Changing Codex CLI RPC/PTY behavior
7
- - Reviewing local cost usage scanning
8
- ---
9
-
10
- # Codex provider
11
-
12
- Codex has four usage data paths (OAuth API, web dashboard, CLI RPC, CLI PTY) plus a local cost-usage scanner.
13
- The OAuth API is the default app source when credentials are available; web access is optional for dashboard extras.
14
-
15
- ## Data sources + fallback order
16
-
17
- ### App default selection (debug menu disabled)
18
- 1) OAuth API (auth.json credentials).
19
- 2) CLI RPC, with CLI PTY fallback when needed.
20
- 3) If "Access OpenAI via web" is enabled, dashboard extras load in parallel and the source label becomes
21
- `primary + openai-web`.
22
-
23
- ### CLI default selection (`--source auto`)
24
- 1) OpenAI web dashboard (when available).
25
- 2) Codex CLI RPC, with CLI PTY fallback when needed.
26
-
27
- ### OAuth API (preferred for the app)
28
- - Reads OAuth tokens from `~/.codex/auth.json` (or `$CODEX_HOME/auth.json`).
29
- - Refreshes access tokens when `last_refresh` is older than 8 days.
30
- - Calls `GET https://chatgpt.com/backend-api/wham/usage` (default) with `Authorization: Bearer <token>`.
31
-
32
- ### OpenAI web dashboard (optional)
33
- - Preferences → Usage → "Access OpenAI via web".
34
- - URL: `https://chatgpt.com/codex/settings/usage`.
35
- - Uses an off-screen `WKWebView` with a per-account `WKWebsiteDataStore`.
36
- - Store key: deterministic UUID from the normalized email.
37
- - WebKit store can hold multiple accounts concurrently.
38
- - Cookie import (when WebKit store has no matching session or login required):
39
- 1) Safari: `~/Library/Cookies/Cookies.binarycookies`
40
- 2) Chrome/Chromium forks: `~/Library/Application Support/Google/Chrome/*/Cookies`
41
- 3) Firefox: `~/Library/Application Support/Firefox/Profiles/*/cookies.sqlite`
42
- - Domains loaded: `chatgpt.com`, `openai.com`.
43
- - No cookie-name filter; we import all matching domain cookies.
44
- - Account match:
45
- - Signed-in email extracted from `client-bootstrap` JSON in HTML (or `__NEXT_DATA__`).
46
- - If Codex email is known and does not match, the web path is rejected.
47
- - Web scrape payload (via `OpenAIDashboardScrapeScript` + `OpenAIDashboardParser`):
48
- - Rate limits (5h + weekly) parsed from body text.
49
- - Credits remaining parsed from body text.
50
- - Code review remaining (%).
51
- - Usage breakdown chart (Recharts bar data + legend colors).
52
- - Credits usage history table rows.
53
- - Credits purchase URL (best-effort).
54
- - Errors surfaced:
55
- - Login required or Cloudflare interstitial.
56
-
57
- ### Codex CLI RPC (default CLI fallback)
58
- - Launches local RPC server: `codex -s read-only -a untrusted app-server`.
59
- - JSON-RPC over stdin/stdout:
60
- - `initialize` (client name/version)
61
- - `account/read`
62
- - `account/rateLimits/read`
63
- - Provides:
64
- - Usage windows (primary + secondary) with reset timestamps.
65
- - Credits snapshot (balance, hasCredits, unlimited).
66
- - Account identity (email + plan type) when available.
67
-
68
- ### Codex CLI PTY fallback (`/status`)
69
- - Runs `codex` in a PTY via `TTYCommandRunner`.
70
- - Sends `/status`, parses the rendered screen:
71
- - `Credits:` line
72
- - `5h limit` line → percent + reset text
73
- - `Weekly limit` line → percent + reset text
74
- - Retry once with a larger terminal size on parse failure.
75
- - Detects update prompts and surfaces a "CLI update needed" error.
76
-
77
- ## Account identity resolution (for web matching)
78
- 1) Latest Codex usage snapshot (from RPC, if available).
79
- 2) `~/.codex/auth.json` (JWT claims: email + plan).
80
- 3) OpenAI dashboard signed-in email (cached).
81
- 4) Last imported browser cookie email (cached).
82
-
83
- ## Credits
84
- - Web dashboard fills credits only when OAuth/CLI do not provide them.
85
- - CLI RPC: `account/rateLimits/read` → credits balance.
86
- - CLI PTY fallback: parse `Credits:` from `/status`.
87
-
88
- ## Cost usage (local log scan)
89
- - Source files:
90
- - `~/.codex/sessions/YYYY/MM/DD/*.jsonl`
91
- - Or `$CODEX_HOME/sessions/...` if `CODEX_HOME` is set.
92
- - Scanner:
93
- - Parses `event_msg` token_count entries and `turn_context` model markers.
94
- - Computes input/cached/output token deltas and per-model cost.
95
- - Cache:
96
- - `~/Library/Caches/Runic/cost-usage/codex-v1.json`
97
- - Window: last 30 days (rolling), with a 60s minimum refresh interval.
98
-
99
- ## Key files
100
- - Web: `Sources/RunicCore/OpenAIWeb/*`
101
- - CLI RPC + PTY: `Sources/RunicCore/UsageFetcher.swift`,
102
- `Sources/RunicCore/Providers/Codex/CodexStatusProbe.swift`
103
- - Cost usage: `Sources/RunicCore/CostUsageFetcher.swift`,
104
- `Sources/RunicCore/Vendored/CostUsage/*`
package/docs/codexbar.png DELETED
Binary file
package/docs/copilot.md DELETED
@@ -1,44 +0,0 @@
1
- ---
2
- summary: "Copilot provider data sources: GitHub device flow + Copilot internal usage API."
3
- read_when:
4
- - Debugging Copilot login or usage parsing
5
- - Updating GitHub OAuth device flow behavior
6
- ---
7
-
8
- # Copilot provider
9
-
10
- Copilot uses GitHub OAuth device flow and the Copilot internal usage API. No browser cookies.
11
-
12
- ## Data sources + fallback order
13
-
14
- 1) **GitHub OAuth device flow** (user initiated)
15
- - Device code request:
16
- - `POST https://github.com/login/device/code`
17
- - Token polling:
18
- - `POST https://github.com/login/oauth/access_token`
19
- - Scope: `read:user`.
20
- - Token stored in Keychain:
21
- - Service: `com.sriinnu.athena.Runic`
22
- - Account: `copilot-api-token`
23
-
24
- 2) **Usage fetch**
25
- - `GET https://api.github.com/copilot_internal/user`
26
- - Headers:
27
- - `Authorization: token <github_oauth_token>`
28
- - `Accept: application/json`
29
- - `Editor-Version: vscode/1.96.2`
30
- - `Editor-Plugin-Version: copilot-chat/0.26.7`
31
- - `User-Agent: GitHubCopilotChat/0.26.7`
32
- - `X-Github-Api-Version: 2025-04-01`
33
-
34
- ## Snapshot mapping
35
- - Primary: `quotaSnapshots.premiumInteractions` percent remaining → used percent.
36
- - Secondary: `quotaSnapshots.chat` percent remaining → used percent.
37
- - Reset dates are not provided by the API.
38
- - Plan label from `copilotPlan`.
39
-
40
- ## Key files
41
- - `Sources/RunicCore/Providers/Copilot/CopilotUsageFetcher.swift`
42
- - `Sources/RunicCore/Providers/Copilot/CopilotDeviceFlow.swift`
43
- - `Sources/Runic/Providers/Copilot/CopilotLoginFlow.swift`
44
- - `Sources/Runic/CopilotTokenStore.swift`
package/docs/cursor.md DELETED
@@ -1,46 +0,0 @@
1
- ---
2
- summary: "Cursor provider data sources: browser cookies or stored session; usage + billing via cursor.com APIs."
3
- read_when:
4
- - Debugging Cursor usage parsing
5
- - Updating Cursor cookie import or session storage
6
- - Adjusting Cursor provider UI/menu behavior
7
- ---
8
-
9
- # Cursor provider
10
-
11
- Cursor is web-only. Usage is fetched via browser cookies or a stored WebKit session.
12
-
13
- ## Data sources + fallback order
14
-
15
- 1) **Browser cookie import** (preferred)
16
- - Cookie order from provider metadata (default: Safari → Chrome → Firefox).
17
- - Domain filters: `cursor.com`, `cursor.sh`.
18
- - Cookie names required (any one counts):
19
- - `WorkosCursorSessionToken`
20
- - `__Secure-next-auth.session-token`
21
- - `next-auth.session-token`
22
-
23
- 2) **Stored session cookies** (fallback)
24
- - Captured by the "Add Account" WebKit login flow.
25
- - Stored at: `~/Library/Application Support/Runic/cursor-session.json`.
26
-
27
- ## API endpoints
28
- - `GET https://cursor.com/api/usage-summary`
29
- - Plan usage (included), on-demand usage, billing cycle window.
30
- - `GET https://cursor.com/api/auth/me`
31
- - User email + name.
32
-
33
- ## Cookie file paths
34
- - Safari: `~/Library/Cookies/Cookies.binarycookies`
35
- - Chrome/Chromium forks: `~/Library/Application Support/Google/Chrome/*/Cookies`
36
- - Firefox: `~/Library/Application Support/Firefox/Profiles/*/cookies.sqlite`
37
-
38
- ## Snapshot mapping
39
- - Primary: plan usage percent (included plan).
40
- - Secondary: on-demand usage percent (team on-demand preferred when present).
41
- - Provider cost: on-demand usage USD (limit when known).
42
- - Reset: billing cycle end date.
43
-
44
- ## Key files
45
- - `Sources/RunicCore/Providers/Cursor/CursorStatusProbe.swift`
46
- - `Sources/Runic/CursorLoginRunner.swift` (login flow)
@@ -1,510 +0,0 @@
1
- # Runic Menubar Icon - Design Comparison Chart
2
-
3
- **Quick Reference Guide for Decision Making**
4
-
5
- ---
6
-
7
- ## At-a-Glance Comparison
8
-
9
- | Feature | Option A: Infinity | Option B: Wave | Option C: Hybrid |
10
- |---------|-------------------|----------------|------------------|
11
- | **Primary Metaphor** | Eyes watching | Abstract flow | Balanced |
12
- | **Provider Visibility** | ★★★★★ Center icon | ☆☆☆☆☆ None | ★★★☆☆ Badge |
13
- | **Usage Data Display** | ★★☆☆☆ Color only | ★★★★★ 3 bars | ★★★☆☆ 1 bar |
14
- | **Visual Simplicity** | ★★★★★ Clean | ★★☆☆☆ Complex | ★★★☆☆ Moderate |
15
- | **Brand Identity** | ★★★★★ Unique | ★★★☆☆ Generic | ★★★★☆ Distinctive |
16
- | **Scalability** | 18-32pt | 22-28pt | 20-26pt |
17
- | **Implementation** | 8-12 hours | 0 hours (done) | 12-16 hours |
18
- | **User Learning** | Low-Medium | Low | Medium |
19
- | **Memorability** | Very High | Medium | High |
20
-
21
- **Legend:** ★★★★★ Excellent | ★★★★☆ Good | ★★★☆☆ Acceptable | ★★☆☆☆ Poor | ★☆☆☆☆ Inadequate
22
-
23
- ---
24
-
25
- ## Detailed Comparison
26
-
27
- ### 1. Symbolism & Metaphor
28
-
29
- #### Option A: Infinity Symbol
30
- - **Concept:** "Eyes watching" your AI usage continuously
31
- - **Meaning:** Infinity loops = constant monitoring, center icon = provider being watched
32
- - **User Perception:** "Oh, Runic is watching my AI usage" (immediate understanding)
33
- - **Score:** ★★★★★
34
-
35
- #### Option B: Wave Logo
36
- - **Concept:** Abstract wave/knot shape with usage bars
37
- - **Meaning:** Data flow, interconnected systems (unclear)
38
- - **User Perception:** "What does this icon represent?" (requires explanation)
39
- - **Score:** ★★☆☆☆
40
-
41
- #### Option C: Hybrid
42
- - **Concept:** Infinity frame with functional usage display
43
- - **Meaning:** Continuous monitoring + real-time data
44
- - **User Perception:** "Runic watches and shows my usage" (balanced message)
45
- - **Score:** ★★★★☆
46
-
47
- **Winner:** Option A - Strongest conceptual foundation
48
-
49
- ---
50
-
51
- ### 2. Provider Identification
52
-
53
- #### Option A: Infinity Symbol
54
- - **Display:** 8×8pt icon in center gap between infinity loops
55
- - **Visibility:** Excellent - clearly visible, centered, prominent
56
- - **Scalability:** Works well at all recommended sizes
57
- - **Examples:**
58
- - Claude: Two vertical slits
59
- - Codex: Square eyes
60
- - Gemini: Diamond shape
61
- - Cursor: Arrow pointer
62
- - **Score:** ★★★★★
63
-
64
- #### Option B: Wave Logo
65
- - **Display:** None - no provider identification
66
- - **Visibility:** N/A
67
- - **Limitation:** User cannot tell which provider is active from icon alone
68
- - **Score:** ☆☆☆☆☆
69
-
70
- #### Option C: Hybrid
71
- - **Display:** 6×6pt badge in corner
72
- - **Visibility:** Small, may be hard to distinguish at 18-20pt
73
- - **Trade-off:** Saves center space for usage bar
74
- - **Score:** ★★★☆☆
75
-
76
- **Winner:** Option A - Only design with prominent provider display
77
-
78
- ---
79
-
80
- ### 3. Usage Data Visibility
81
-
82
- #### Option A: Infinity Symbol
83
- - **Direct Display:** None - icon is purely symbolic
84
- - **Data Method:** Color pressure mapping
85
- - Teal (0-50% used)
86
- - Orange (50-80% used)
87
- - Red (80-100% used)
88
- - **Pros:** Clean, uncluttered
89
- - **Cons:** Requires user to learn color meaning, less precise
90
- - **Alternative:** Tooltip on hover shows exact percentages
91
- - **Score:** ★★☆☆☆
92
-
93
- #### Option B: Wave Logo
94
- - **Direct Display:** Three vertical bars showing session/weekly/credits
95
- - **Data Precision:** Bar height = percentage (visual estimation)
96
- - **Pros:** At-a-glance multiple metrics, no learning required
97
- - **Cons:** Bars too small to read precisely at 22pt
98
- - **Score:** ★★★★★
99
-
100
- #### Option C: Hybrid
101
- - **Direct Display:** Single consolidated bar in center
102
- - **Data Precision:** Fill level = most critical metric (lowest remaining %)
103
- - **Pros:** Simpler than three bars, more visible than color alone
104
- - **Cons:** Loses session/weekly/credits breakdown
105
- - **Score:** ★★★☆☆
106
-
107
- **Winner:** Option B - Most data-rich design
108
-
109
- ---
110
-
111
- ### 4. Visual Clarity at Small Sizes
112
-
113
- #### Readability at 18pt (Minimum macOS menubar size)
114
-
115
- | Design | Infinity Loops | Provider Icon | Usage Bars | Overall Clarity |
116
- |--------|---------------|---------------|------------|-----------------|
117
- | **Option A** | ★★★★★ Clear | ★★★★☆ Visible | N/A | ★★★★★ Excellent |
118
- | **Option B** | ★★★☆☆ Fuzzy | N/A | ★★☆☆☆ Tiny | ★★☆☆☆ Marginal |
119
- | **Option C** | ★★★★☆ Good | ★★☆☆☆ Small | ★★★☆☆ OK | ★★★☆☆ Acceptable |
120
-
121
- **Test Results (Simulated):**
122
- - **18pt:** Only Option A remains fully legible
123
- - **22pt:** All options acceptable, Option A still clearest
124
- - **26pt:** All options excellent, minimal difference
125
-
126
- **Winner:** Option A - Best scalability down to 18pt
127
-
128
- ---
129
-
130
- ### 5. Brand Identity & Memorability
131
-
132
- #### Option A: Infinity Symbol
133
- - **Uniqueness:** Very high - no other menubar app uses infinity + provider icon
134
- - **Memorability:** Instant recognition after seeing once
135
- - **Brand Potential:** Strong - "Eyes on your AI" tagline
136
- - **Differentiation:** Stands out from generic tech icons
137
- - **Score:** ★★★★★
138
-
139
- #### Option B: Wave Logo
140
- - **Uniqueness:** Low - similar to activity monitors, network apps
141
- - **Memorability:** Medium - abstract shapes blend together
142
- - **Brand Potential:** Weak - no clear narrative
143
- - **Differentiation:** Minimal - looks like "another monitoring app"
144
- - **Score:** ★★☆☆☆
145
-
146
- #### Option C: Hybrid
147
- - **Uniqueness:** Medium-high - combination is unusual
148
- - **Memorability:** Good - two distinct elements easier to remember
149
- - **Brand Potential:** Moderate - can communicate dual purpose
150
- - **Differentiation:** Good - more distinctive than Option B
151
- - **Score:** ★★★★☆
152
-
153
- **Winner:** Option A - Most memorable and unique
154
-
155
- ---
156
-
157
- ### 6. User Learning Curve
158
-
159
- #### Option A: Infinity Symbol
160
- - **Immediate Understanding:**
161
- - ✓ Icon shape (infinity loops = eyes/monitoring)
162
- - ✓ Provider icon (center = which service)
163
- - ✗ Color meaning (requires brief explanation)
164
- - **Learning Required:** Low-medium
165
- - Tooltip: "Teal = safe, Orange = warning, Red = critical"
166
- - One-time onboarding or tooltip
167
- - **Time to Mastery:** <1 minute
168
-
169
- #### Option B: Wave Logo
170
- - **Immediate Understanding:**
171
- - ✗ Icon meaning (wave shape unclear)
172
- - ✓ Bar heights (taller = more usage)
173
- - **Learning Required:** Low
174
- - Bars are intuitive (more = more usage)
175
- - No onboarding needed
176
- - **Time to Mastery:** Immediate
177
-
178
- #### Option C: Hybrid
179
- - **Immediate Understanding:**
180
- - ✓ Infinity outline (monitoring concept)
181
- - ✓ Center bar (usage level)
182
- - ✗ Badge meaning (small, may miss)
183
- - **Learning Required:** Medium
184
- - Need to explain badge = provider
185
- - Bar fill direction (bottom-up)
186
- - **Time to Mastery:** 2-3 minutes
187
-
188
- **Winner:** Option B - Lowest learning curve (but sacrifices symbolism)
189
-
190
- ---
191
-
192
- ### 7. Implementation Complexity
193
-
194
- #### Option A: Infinity Symbol
195
-
196
- **New Code Required:**
197
- - `RunicMenubarIconInfinity.svg` (new resource)
198
- - `drawInfinityLogo()` function (~80 lines)
199
- - Provider icon compositing logic
200
- - Cache key updates
201
- - Settings integration
202
-
203
- **Estimated Time:** 8-12 hours
204
-
205
- **Risk Level:** Low
206
- - Familiar rendering patterns
207
- - No new dependencies
208
- - Straightforward testing
209
-
210
- **Maintenance:** Low
211
- - Self-contained rendering function
212
- - No complex state management
213
-
214
- #### Option B: Wave Logo
215
-
216
- **New Code Required:** None (already implemented)
217
-
218
- **Estimated Time:** 0 hours (refinements: 2-4 hours)
219
-
220
- **Risk Level:** None
221
-
222
- **Maintenance:** Current level (already in production)
223
-
224
- #### Option C: Hybrid
225
-
226
- **New Code Required:**
227
- - `RunicMenubarIconInfinity.svg` (same as Option A)
228
- - `drawHybridLogo()` function (~120 lines)
229
- - Bar fill calculation
230
- - Badge rendering
231
- - Provider icon scaling for badge
232
- - Cache key updates
233
- - Settings integration
234
-
235
- **Estimated Time:** 12-16 hours
236
-
237
- **Risk Level:** Medium
238
- - More complex layout logic
239
- - Multiple elements to coordinate
240
- - More edge cases to test
241
-
242
- **Maintenance:** Medium
243
- - Two rendering components to maintain
244
- - More visual states to track
245
-
246
- **Winner:** Option B - Zero implementation cost (but no forward progress)
247
-
248
- ---
249
-
250
- ### 8. Performance Characteristics
251
-
252
- #### Cache Efficiency
253
-
254
- | Design | Cache Keys | Cache Size | Hit Rate |
255
- |--------|-----------|------------|----------|
256
- | **Option A** | ~50 (providers × pressure × appearance) | Small | >85% |
257
- | **Option B** | ~100 (usage combos) | Medium | ~80% |
258
- | **Option C** | ~200 (providers × pressure × usage) | Large | ~70% |
259
-
260
- #### Rendering Speed
261
-
262
- | Design | First Render | Cached Render | Animation Frames |
263
- |--------|-------------|---------------|------------------|
264
- | **Option A** | 8-10ms | <0.5ms | 60 FPS |
265
- | **Option B** | 6-8ms | <0.3ms | 60 FPS |
266
- | **Option C** | 12-15ms | <0.7ms | 50-60 FPS |
267
-
268
- **Winner:** Option B - Fastest (already optimized), but Option A is close second
269
-
270
- ---
271
-
272
- ### 9. Accessibility Considerations
273
-
274
- #### VoiceOver Support
275
-
276
- **Option A:**
277
- - Describe as: "Infinity symbol representing monitoring, [Provider] in center, usage level [percentage]%"
278
- - Clear semantic meaning
279
- - Easy to verbalize
280
-
281
- **Option B:**
282
- - Describe as: "Usage bars showing session at [x]%, weekly at [y]%, credits at [z]%"
283
- - More data to communicate
284
- - Longer description
285
-
286
- **Option C:**
287
- - Describe as: "Infinity outline with [percentage]% usage bar, [Provider] badge"
288
- - Moderate complexity
289
- - Balanced description
290
-
291
- #### High Contrast Mode
292
-
293
- **All Options:** Support high contrast via template rendering
294
-
295
- #### Reduced Motion
296
-
297
- **All Options:** Can disable animations, static icons work well
298
-
299
- **Winner:** Option A - Simplest to describe for accessibility
300
-
301
- ---
302
-
303
- ### 10. User Preference & Flexibility
304
-
305
- #### Customization Options
306
-
307
- **Option A:**
308
- - Template vs. Vibrant rendering
309
- - Color pressure mapping on/off
310
- - Provider icon style (if multiple exist)
311
-
312
- **Option B:**
313
- - Template vs. Vibrant rendering
314
- - Data mode (remaining vs. used)
315
- - Bar animation on/off
316
-
317
- **Option C:**
318
- - Template vs. Vibrant rendering
319
- - Which metric to show in center bar
320
- - Badge position (corner options)
321
-
322
- **Winner:** Tie - All offer similar customization potential
323
-
324
- ---
325
-
326
- ## Use Case Scenarios
327
-
328
- ### Scenario 1: Power User (Developer)
329
-
330
- **Needs:**
331
- - Quick identification of active provider
332
- - At-a-glance usage monitoring
333
- - Minimal menu clicks
334
-
335
- **Best Option:** Option C (Hybrid)
336
- - Provider badge for quick ID
337
- - Center bar for instant usage check
338
- - Balance of info and clarity
339
-
340
- ### Scenario 2: Casual User (Occasional AI user)
341
-
342
- **Needs:**
343
- - Understand what the app does
344
- - Know when to worry about usage
345
- - Simple, clean interface
346
-
347
- **Best Option:** Option A (Infinity)
348
- - Clear "monitoring" metaphor
349
- - Color signals when to check (red = alert)
350
- - Uncluttered, professional look
351
-
352
- ### Scenario 3: Multi-Provider User
353
-
354
- **Needs:**
355
- - See which provider is currently selected
356
- - Track usage across different services
357
- - Switch providers frequently
358
-
359
- **Best Option:** Option A (Infinity)
360
- - Large, clear provider icon in center
361
- - Easy to tell at a glance which is active
362
- - Provider icon changes when switching
363
-
364
- ### Scenario 4: Budget-Conscious User
365
-
366
- **Needs:**
367
- - Constantly monitor usage levels
368
- - Precise percentage tracking
369
- - Alert when nearing limits
370
-
371
- **Best Option:** Option B (Wave) or Option C (Hybrid)
372
- - Wave: Shows multiple metrics simultaneously
373
- - Hybrid: Shows most critical metric prominently
374
- - Both provide more data than Option A
375
-
376
- ---
377
-
378
- ## Decision Matrix
379
-
380
- ### Weighted Scoring (1-5 scale)
381
-
382
- | Criterion | Weight | Option A | Option B | Option C |
383
- |-----------|--------|----------|----------|----------|
384
- | **Symbolism** | 20% | 5 | 2 | 4 |
385
- | **Provider ID** | 15% | 5 | 0 | 3 |
386
- | **Data Visibility** | 15% | 2 | 5 | 3 |
387
- | **Visual Clarity** | 15% | 5 | 3 | 4 |
388
- | **Brand Identity** | 10% | 5 | 2 | 4 |
389
- | **Learning Curve** | 10% | 3 | 5 | 3 |
390
- | **Implementation** | 5% | 3 | 5 | 2 |
391
- | **Performance** | 5% | 4 | 5 | 3 |
392
- | **Accessibility** | 5% | 5 | 3 | 4 |
393
-
394
- ### Weighted Totals
395
-
396
- - **Option A (Infinity):** 4.10 / 5.00
397
- - **Option B (Wave):** 3.25 / 5.00
398
- - **Option C (Hybrid):** 3.55 / 5.00
399
-
400
- **Winner:** Option A - Infinity Symbol + Provider Icon
401
-
402
- ---
403
-
404
- ## Final Recommendation
405
-
406
- ### Primary: Option A - Infinity Symbol + Provider Icon
407
-
408
- **Choose if you value:**
409
- - Strong brand identity and memorability
410
- - Clear conceptual metaphor ("eyes watching")
411
- - Provider identification
412
- - Visual simplicity and scalability
413
- - Long-term differentiation
414
-
415
- **Accept trade-offs:**
416
- - Less immediate usage data visibility
417
- - Requires brief color meaning explanation
418
- - 8-12 hours implementation time
419
-
420
- ### Secondary: Option C - Hybrid (if data visibility critical)
421
-
422
- **Choose if you value:**
423
- - Balance of symbolism and function
424
- - At-a-glance usage data
425
- - Provider identification (though smaller)
426
- - Moderate complexity
427
-
428
- **Accept trade-offs:**
429
- - More complex design
430
- - Longer implementation (12-16 hours)
431
- - Potentially lower performance
432
-
433
- ### Not Recommended: Option B - Wave Logo
434
-
435
- **Only choose if:**
436
- - Absolutely no development time available
437
- - Current users strongly resist change
438
- - Data visibility is paramount over branding
439
-
440
- **Reasoning:**
441
- - Weak symbolism and brand identity
442
- - No provider identification
443
- - No forward progress on design evolution
444
-
445
- ---
446
-
447
- ## Next Steps
448
-
449
- 1. **Review this comparison with stakeholders**
450
- 2. **Create user survey (optional):**
451
- - Show all three mockups
452
- - Ask: "Which icon best represents AI usage monitoring?"
453
- - Collect preference data
454
- 3. **Make final decision**
455
- 4. **Proceed to implementation using ImplementationGuide.md**
456
- 5. **Beta test with selected users**
457
- 6. **Iterate based on feedback**
458
- 7. **Full rollout with preference option**
459
-
460
- ---
461
-
462
- ## Appendix: User Feedback Questions
463
-
464
- ### Survey Template
465
-
466
- **Question 1:** Which icon design do you prefer?
467
- - [ ] Option A: Infinity Symbol with Provider Icon
468
- - [ ] Option B: Wave Logo with Usage Bars
469
- - [ ] Option C: Hybrid (Infinity Outline + Bar)
470
-
471
- **Question 2:** What does the infinity symbol design represent to you?
472
- - [ ] Monitoring/watching
473
- - [ ] Continuous operation
474
- - [ ] Unlimited usage
475
- - [ ] Other: ___________
476
-
477
- **Question 3:** How important is seeing usage data directly in the menubar icon?
478
- - [ ] Critical - I need to see it at all times
479
- - [ ] Important - I glance at it occasionally
480
- - [ ] Minor - I usually click for details
481
- - [ ] Not important - I only check when needed
482
-
483
- **Question 4:** How important is identifying the active provider from the icon?
484
- - [ ] Critical - I switch providers often
485
- - [ ] Important - I use multiple providers
486
- - [ ] Minor - I mostly use one provider
487
- - [ ] Not important - I know which I'm using
488
-
489
- **Question 5:** Rate the visual clarity of each design (1-5):
490
- - Option A: ☐☐☐☐☐
491
- - Option B: ☐☐☐☐☐
492
- - Option C: ☐☐☐☐☐
493
-
494
- ---
495
-
496
- ## Summary
497
-
498
- After comprehensive analysis across 10 criteria, **Option A (Infinity Symbol + Provider Icon)** emerges as the strongest design choice for Runic's menubar icon:
499
-
500
- - **Strongest brand identity** (5/5)
501
- - **Best provider identification** (5/5)
502
- - **Excellent scalability** (5/5)
503
- - **Clear conceptual metaphor** (5/5)
504
- - **Acceptable trade-offs** on data visibility
505
-
506
- While Option B (current wave) requires no implementation effort, it offers the weakest symbolism and no provider identification, making it unsuitable for long-term brand growth.
507
-
508
- Option C (hybrid) provides a balanced alternative if user testing reveals that immediate data visibility is more critical than anticipated, though it requires the most implementation effort.
509
-
510
- **Recommended Action:** Proceed with Option A implementation using the provided ImplementationGuide.md, while maintaining Option B as a user preference for those who prefer data-rich visualization.