@sriinnu/runic 2.0.0 → 2.11.2

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 (610) hide show
  1. package/CHANGELOG.md +261 -0
  2. package/LICENSE +373 -21
  3. package/README.md +96 -89
  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/RunicTypographyiOS.swift +0 -24
  55. package/RuniciOS/Core/iOSUsageStore.swift +0 -192
  56. package/RuniciOS/Views/ProviderDetailView.swift +0 -312
  57. package/RuniciOS/Views/ProviderListView.swift +0 -228
  58. package/RuniciOS/Widgets/LargeWidget.swift +0 -367
  59. package/RuniciOS/Widgets/LiveActivity.swift +0 -342
  60. package/RuniciOS/Widgets/LockScreenWidget.swift +0 -273
  61. package/RuniciOS/Widgets/MediumWidget.swift +0 -370
  62. package/RuniciOS/Widgets/RunicWidget.swift +0 -274
  63. package/RuniciOS/Widgets/SmallWidget.swift +0 -281
  64. package/RuniciOS/Widgets/WidgetModels.swift +0 -285
  65. package/RuniciOS/Widgets/WidgetTimeline.swift +0 -270
  66. package/Scripts/CREATION-SUMMARY.md +0 -367
  67. package/Scripts/DIRECTORY-STRUCTURE.md +0 -358
  68. package/Scripts/GETTING-STARTED-CHECKLIST.md +0 -364
  69. package/Scripts/INDEX.md +0 -365
  70. package/Scripts/QUICK-REFERENCE.md +0 -164
  71. package/Scripts/README-SCRIPTS.md +0 -926
  72. package/Scripts/build-android.sh +0 -526
  73. package/Scripts/build-ios.sh +0 -529
  74. package/Scripts/build-macos.sh +0 -603
  75. package/Scripts/build-windows.sh +0 -504
  76. package/Scripts/build_icon.sh +0 -49
  77. package/Scripts/changelog-to-html.sh +0 -89
  78. package/Scripts/check-release-assets.sh +0 -10
  79. package/Scripts/ci-config.yml +0 -474
  80. package/Scripts/compile_and_run.sh +0 -219
  81. package/Scripts/compile_and_run_adhoc.sh +0 -4
  82. package/Scripts/docs-list.mjs +0 -119
  83. package/Scripts/make_appcast.sh +0 -58
  84. package/Scripts/package_app.sh +0 -409
  85. package/Scripts/release-lib.sh +0 -214
  86. package/Scripts/release.sh +0 -76
  87. package/Scripts/setup-all.sh +0 -387
  88. package/Scripts/setup-ios.sh +0 -404
  89. package/Scripts/setup-react-native.sh +0 -523
  90. package/Scripts/sign-and-notarize.sh +0 -122
  91. package/Scripts/test_live_update.sh +0 -38
  92. package/Scripts/validate_changelog.sh +0 -23
  93. package/Scripts/verify_appcast.sh +0 -92
  94. package/Sources/Runic/About.swift +0 -93
  95. package/Sources/Runic/AppNotifications.swift +0 -117
  96. package/Sources/Runic/Controllers/StatusItemController+Actions.swift +0 -670
  97. package/Sources/Runic/Controllers/StatusItemController+Animation.swift +0 -519
  98. package/Sources/Runic/Controllers/StatusItemController+ChartSubmenus.swift +0 -824
  99. package/Sources/Runic/Controllers/StatusItemController+CustomProviders.swift +0 -90
  100. package/Sources/Runic/Controllers/StatusItemController+Menu.swift +0 -1412
  101. package/Sources/Runic/Controllers/StatusItemController+MenuCards.swift +0 -339
  102. package/Sources/Runic/Controllers/StatusItemController+MenuHelpers.swift +0 -423
  103. package/Sources/Runic/Controllers/StatusItemController.swift +0 -360
  104. package/Sources/Runic/Core/BudgetNotificationManager.swift +0 -81
  105. package/Sources/Runic/Core/Login/ClaudeLoginRunner.swift +0 -103
  106. package/Sources/Runic/Core/Login/CodexLoginRunner.swift +0 -154
  107. package/Sources/Runic/Core/Login/CursorLoginRunner.swift +0 -206
  108. package/Sources/Runic/Core/Login/GeminiLoginRunner.swift +0 -92
  109. package/Sources/Runic/Core/Rendering/IconRenderer.swift +0 -1222
  110. package/Sources/Runic/Core/Rendering/IconView.swift +0 -122
  111. package/Sources/Runic/Core/Rendering/ProviderBrandIcon.swift +0 -71
  112. package/Sources/Runic/Core/RunicAnimation.swift +0 -53
  113. package/Sources/Runic/Core/RunicColors.swift +0 -73
  114. package/Sources/Runic/Core/RunicCornerRadius.swift +0 -15
  115. package/Sources/Runic/Core/RunicSpacing.swift +0 -68
  116. package/Sources/Runic/Core/RunicTypography.swift +0 -206
  117. package/Sources/Runic/Core/Stores/AuggieTokenStore.swift +0 -117
  118. package/Sources/Runic/Core/Stores/AzureOpenAITokenStore.swift +0 -117
  119. package/Sources/Runic/Core/Stores/CerebrasTokenStore.swift +0 -117
  120. package/Sources/Runic/Core/Stores/CohereTokenStore.swift +0 -117
  121. package/Sources/Runic/Core/Stores/CopilotTokenStore.swift +0 -117
  122. package/Sources/Runic/Core/Stores/CustomProviderStore.swift +0 -158
  123. package/Sources/Runic/Core/Stores/DeepSeekTokenStore.swift +0 -117
  124. package/Sources/Runic/Core/Stores/FireworksTokenStore.swift +0 -117
  125. package/Sources/Runic/Core/Stores/GroqTokenStore.swift +0 -117
  126. package/Sources/Runic/Core/Stores/KimiTokenStore.swift +0 -117
  127. package/Sources/Runic/Core/Stores/MiniMaxCookieHeaderStore.swift +0 -117
  128. package/Sources/Runic/Core/Stores/MiniMaxGroupIDStore.swift +0 -117
  129. package/Sources/Runic/Core/Stores/MiniMaxTokenStore.swift +0 -117
  130. package/Sources/Runic/Core/Stores/MistralTokenStore.swift +0 -117
  131. package/Sources/Runic/Core/Stores/OpenRouterTokenStore.swift +0 -117
  132. package/Sources/Runic/Core/Stores/PerplexityTokenStore.swift +0 -117
  133. package/Sources/Runic/Core/Stores/ProviderToggleStore.swift +0 -30
  134. package/Sources/Runic/Core/Stores/QwenTokenStore.swift +0 -117
  135. package/Sources/Runic/Core/Stores/SambaNovaTokenStore.swift +0 -117
  136. package/Sources/Runic/Core/Stores/SettingsStore.swift +0 -1749
  137. package/Sources/Runic/Core/Stores/TogetherTokenStore.swift +0 -117
  138. package/Sources/Runic/Core/Stores/UsageStore+Accessors.swift +0 -33
  139. package/Sources/Runic/Core/Stores/UsageStore+Status.swift +0 -189
  140. package/Sources/Runic/Core/Stores/UsageStore+TokenCost.swift +0 -33
  141. package/Sources/Runic/Core/Stores/UsageStore+WidgetSnapshot.swift +0 -67
  142. package/Sources/Runic/Core/Stores/UsageStore.swift +0 -3631
  143. package/Sources/Runic/Core/Stores/XAITokenStore.swift +0 -117
  144. package/Sources/Runic/Core/Stores/ZaiTokenStore.swift +0 -117
  145. package/Sources/Runic/Core/UsageExporter.swift +0 -197
  146. package/Sources/Runic/Date+RelativeDescription.swift +0 -21
  147. package/Sources/Runic/HiddenWindowView.swift +0 -32
  148. package/Sources/Runic/InstallOrigin.swift +0 -9
  149. package/Sources/Runic/KeyboardShortcuts+Names.swift +0 -6
  150. package/Sources/Runic/MouseLocationReader.swift +0 -65
  151. package/Sources/Runic/Notifications+Runic.swift +0 -6
  152. package/Sources/Runic/OpenAICreditsPurchaseWindowController.swift +0 -503
  153. package/Sources/Runic/ProviderRegistry.swift +0 -100
  154. package/Sources/Runic/ProviderSwitcherButtons.swift +0 -267
  155. package/Sources/Runic/Providers/Antigravity/AntigravityLoginFlow.swift +0 -11
  156. package/Sources/Runic/Providers/Antigravity/AntigravityProviderImplementation.swift +0 -14
  157. package/Sources/Runic/Providers/Auggie/AuggieProviderImplementation.swift +0 -24
  158. package/Sources/Runic/Providers/Azure/AzureProviderImplementation.swift +0 -52
  159. package/Sources/Runic/Providers/Bedrock/BedrockProviderImplementation.swift +0 -42
  160. package/Sources/Runic/Providers/Cerebras/CerebrasProviderImplementation.swift +0 -24
  161. package/Sources/Runic/Providers/Claude/ClaudeLoginFlow.swift +0 -26
  162. package/Sources/Runic/Providers/Claude/ClaudeProviderImplementation.swift +0 -14
  163. package/Sources/Runic/Providers/Codex/CodexLoginFlow.swift +0 -18
  164. package/Sources/Runic/Providers/Codex/CodexProviderImplementation.swift +0 -15
  165. package/Sources/Runic/Providers/Cohere/CohereProviderImplementation.swift +0 -24
  166. package/Sources/Runic/Providers/Copilot/CopilotLoginFlow.swift +0 -193
  167. package/Sources/Runic/Providers/Copilot/CopilotProviderImplementation.swift +0 -110
  168. package/Sources/Runic/Providers/Cursor/CursorLoginFlow.swift +0 -28
  169. package/Sources/Runic/Providers/Cursor/CursorProviderImplementation.swift +0 -15
  170. package/Sources/Runic/Providers/DeepSeek/DeepSeekProviderImplementation.swift +0 -24
  171. package/Sources/Runic/Providers/Factory/FactoryLoginFlow.swift +0 -12
  172. package/Sources/Runic/Providers/Factory/FactoryProviderImplementation.swift +0 -15
  173. package/Sources/Runic/Providers/Fireworks/FireworksProviderImplementation.swift +0 -24
  174. package/Sources/Runic/Providers/Gemini/GeminiLoginFlow.swift +0 -20
  175. package/Sources/Runic/Providers/Gemini/GeminiProviderImplementation.swift +0 -15
  176. package/Sources/Runic/Providers/Groq/GroqProviderImplementation.swift +0 -24
  177. package/Sources/Runic/Providers/Kimi/KimiProviderImplementation.swift +0 -24
  178. package/Sources/Runic/Providers/MiniMax/MiniMaxProviderImplementation.swift +0 -32
  179. package/Sources/Runic/Providers/Mistral/MistralProviderImplementation.swift +0 -24
  180. package/Sources/Runic/Providers/OpenRouter/OpenRouterProviderImplementation.swift +0 -24
  181. package/Sources/Runic/Providers/Perplexity/PerplexityProviderImplementation.swift +0 -24
  182. package/Sources/Runic/Providers/SambaNova/SambaNovaProviderImplementation.swift +0 -24
  183. package/Sources/Runic/Providers/Shared/ProviderCatalog.swift +0 -15
  184. package/Sources/Runic/Providers/Shared/ProviderImplementation.swift +0 -51
  185. package/Sources/Runic/Providers/Shared/ProviderImplementationRegistry.swift +0 -66
  186. package/Sources/Runic/Providers/Shared/ProviderLoginFlow.swift +0 -12
  187. package/Sources/Runic/Providers/Shared/ProviderSettingsDescriptors.swift +0 -99
  188. package/Sources/Runic/Providers/Shared/SystemSettingsLinks.swift +0 -18
  189. package/Sources/Runic/Providers/Together/TogetherProviderImplementation.swift +0 -24
  190. package/Sources/Runic/Providers/XAI/XAIProviderImplementation.swift +0 -24
  191. package/Sources/Runic/Providers/Zai/ZaiProviderImplementation.swift +0 -24
  192. package/Sources/Runic/Resources/Fonts/Caveat-Bold.ttf +0 -0
  193. package/Sources/Runic/Resources/Fonts/Caveat-Regular.ttf +0 -0
  194. package/Sources/Runic/Resources/Fonts/FiraCode-Bold.ttf +0 -0
  195. package/Sources/Runic/Resources/Fonts/FiraCode-Light.ttf +0 -0
  196. package/Sources/Runic/Resources/Fonts/FiraCode-Medium.ttf +0 -0
  197. package/Sources/Runic/Resources/Fonts/FiraCode-Regular.ttf +0 -0
  198. package/Sources/Runic/Resources/Fonts/FiraCode-SemiBold.ttf +0 -0
  199. package/Sources/Runic/Resources/Fonts/IBMPlexMono-Bold.ttf +0 -0
  200. package/Sources/Runic/Resources/Fonts/IBMPlexMono-Medium.ttf +0 -0
  201. package/Sources/Runic/Resources/Fonts/IBMPlexMono-Regular.ttf +0 -0
  202. package/Sources/Runic/Resources/Fonts/IBMPlexMono-SemiBold.ttf +0 -0
  203. package/Sources/Runic/Resources/Fonts/Inconsolata-Bold.ttf +0 -0
  204. package/Sources/Runic/Resources/Fonts/Inconsolata-Medium.ttf +0 -0
  205. package/Sources/Runic/Resources/Fonts/Inconsolata-Regular.ttf +0 -0
  206. package/Sources/Runic/Resources/Fonts/Inconsolata-SemiBold.ttf +0 -0
  207. package/Sources/Runic/Resources/Fonts/JetBrainsMono-Bold.ttf +0 -0
  208. package/Sources/Runic/Resources/Fonts/JetBrainsMono-Medium.ttf +0 -0
  209. package/Sources/Runic/Resources/Fonts/JetBrainsMono-Regular.ttf +0 -0
  210. package/Sources/Runic/Resources/Fonts/JetBrainsMono-SemiBold.ttf +0 -0
  211. package/Sources/Runic/Resources/Fonts/SpaceMono-Bold.ttf +0 -0
  212. package/Sources/Runic/Resources/Fonts/SpaceMono-Regular.ttf +0 -0
  213. package/Sources/Runic/Resources/ProviderIcon-antigravity.svg +0 -2
  214. package/Sources/Runic/Resources/ProviderIcon-auggie.svg +0 -3
  215. package/Sources/Runic/Resources/ProviderIcon-azure.svg +0 -5
  216. package/Sources/Runic/Resources/ProviderIcon-bedrock.svg +0 -7
  217. package/Sources/Runic/Resources/ProviderIcon-cerebras.svg +0 -3
  218. package/Sources/Runic/Resources/ProviderIcon-claude.svg +0 -1
  219. package/Sources/Runic/Resources/ProviderIcon-codex.svg +0 -1
  220. package/Sources/Runic/Resources/ProviderIcon-cohere.svg +0 -3
  221. package/Sources/Runic/Resources/ProviderIcon-copilot.svg +0 -1
  222. package/Sources/Runic/Resources/ProviderIcon-cursor.svg +0 -3
  223. package/Sources/Runic/Resources/ProviderIcon-deepseek.svg +0 -4
  224. package/Sources/Runic/Resources/ProviderIcon-factory.svg +0 -3
  225. package/Sources/Runic/Resources/ProviderIcon-fireworks.svg +0 -3
  226. package/Sources/Runic/Resources/ProviderIcon-gemini.svg +0 -1
  227. package/Sources/Runic/Resources/ProviderIcon-groq.svg +0 -1
  228. package/Sources/Runic/Resources/ProviderIcon-kimi.svg +0 -4
  229. package/Sources/Runic/Resources/ProviderIcon-minimax.svg +0 -1
  230. package/Sources/Runic/Resources/ProviderIcon-mistral.svg +0 -5
  231. package/Sources/Runic/Resources/ProviderIcon-openrouter.svg +0 -7
  232. package/Sources/Runic/Resources/ProviderIcon-perplexity.svg +0 -4
  233. package/Sources/Runic/Resources/ProviderIcon-qwen.svg +0 -9
  234. package/Sources/Runic/Resources/ProviderIcon-sambanova.svg +0 -4
  235. package/Sources/Runic/Resources/ProviderIcon-together.svg +0 -5
  236. package/Sources/Runic/Resources/ProviderIcon-vertexai.svg +0 -17
  237. package/Sources/Runic/Resources/ProviderIcon-xai.svg +0 -3
  238. package/Sources/Runic/Resources/ProviderIcon-zai.svg +0 -5
  239. package/Sources/Runic/Resources/RunicMenubarIcon.svg +0 -7
  240. package/Sources/Runic/Resources/provider-context-windows.json +0 -20
  241. package/Sources/Runic/RunicApp.swift +0 -367
  242. package/Sources/Runic/SessionQuotaNotifications.swift +0 -58
  243. package/Sources/Runic/UsagePaceText.swift +0 -52
  244. package/Sources/Runic/UsageProgressBar.swift +0 -228
  245. package/Sources/Runic/Utilities/DisplayLink.swift +0 -96
  246. package/Sources/Runic/Utilities/LoadingPattern.swift +0 -62
  247. package/Sources/Runic/Utilities/PerformanceConstants.swift +0 -85
  248. package/Sources/Runic/Views/Menu/AlertsMenuView.swift +0 -254
  249. package/Sources/Runic/Views/Menu/ChartPanelStyle.swift +0 -22
  250. package/Sources/Runic/Views/Menu/CostComparativeChartMenuView.swift +0 -275
  251. package/Sources/Runic/Views/Menu/CostHistoryChartMenuView.swift +0 -377
  252. package/Sources/Runic/Views/Menu/CreditsHistoryChartMenuView.swift +0 -312
  253. package/Sources/Runic/Views/Menu/EfficiencyMetricsMenuView.swift +0 -311
  254. package/Sources/Runic/Views/Menu/HeroStatCardsMenuView.swift +0 -231
  255. package/Sources/Runic/Views/Menu/HourlyActivityChartMenuView.swift +0 -228
  256. package/Sources/Runic/Views/Menu/InlineUsageChartView.swift +0 -157
  257. package/Sources/Runic/Views/Menu/MenuCardEntranceModifier.swift +0 -63
  258. package/Sources/Runic/Views/Menu/MenuCardSidebarView.swift +0 -248
  259. package/Sources/Runic/Views/Menu/MenuCardSkeletonView.swift +0 -104
  260. package/Sources/Runic/Views/Menu/MenuCardView.swift +0 -1889
  261. package/Sources/Runic/Views/Menu/MenuContent.swift +0 -153
  262. package/Sources/Runic/Views/Menu/MenuDescriptor.swift +0 -371
  263. package/Sources/Runic/Views/Menu/MenuHighlightStyle.swift +0 -35
  264. package/Sources/Runic/Views/Menu/ModelBreakdownMenuView.swift +0 -241
  265. package/Sources/Runic/Views/Menu/OverviewMenuView.swift +0 -281
  266. package/Sources/Runic/Views/Menu/ProjectBreakdownMenuView.swift +0 -214
  267. package/Sources/Runic/Views/Menu/ProjectBudgetMenuView.swift +0 -220
  268. package/Sources/Runic/Views/Menu/ProviderTabBarView.swift +0 -86
  269. package/Sources/Runic/Views/Menu/SubscriptionUtilizationChartMenuView.swift +0 -214
  270. package/Sources/Runic/Views/Menu/UsageBreakdownChartMenuView.swift +0 -398
  271. package/Sources/Runic/Views/Menu/UsageHeatmapMenuView.swift +0 -231
  272. package/Sources/Runic/Views/Menu/UsageTimelineChartMenuView.swift +0 -369
  273. package/Sources/Runic/Views/Menu/UsageWindowComparisonChartMenuView.swift +0 -191
  274. package/Sources/Runic/Views/Menu/WeeklyActivityChartMenuView.swift +0 -132
  275. package/Sources/Runic/Views/Performance/PerformanceDashboardView.swift +0 -621
  276. package/Sources/Runic/Views/Preferences/LiquidComponents.swift +0 -306
  277. package/Sources/Runic/Views/Preferences/PreferencesAboutPane.swift +0 -271
  278. package/Sources/Runic/Views/Preferences/PreferencesAdvancedPane.swift +0 -268
  279. package/Sources/Runic/Views/Preferences/PreferencesAlertsPane.swift +0 -418
  280. package/Sources/Runic/Views/Preferences/PreferencesAnalyticsPane.swift +0 -637
  281. package/Sources/Runic/Views/Preferences/PreferencesBudgetsPane.swift +0 -344
  282. package/Sources/Runic/Views/Preferences/PreferencesComponents.swift +0 -230
  283. package/Sources/Runic/Views/Preferences/PreferencesCustomProvidersPane.swift +0 -321
  284. package/Sources/Runic/Views/Preferences/PreferencesDebugPane.swift +0 -469
  285. package/Sources/Runic/Views/Preferences/PreferencesGeneralPane.swift +0 -250
  286. package/Sources/Runic/Views/Preferences/PreferencesHelpPane.swift +0 -50
  287. package/Sources/Runic/Views/Preferences/PreferencesIntegrationsPane.swift +0 -572
  288. package/Sources/Runic/Views/Preferences/PreferencesPerformancePane.swift +0 -291
  289. package/Sources/Runic/Views/Preferences/PreferencesProvidersPane.swift +0 -3480
  290. package/Sources/Runic/Views/Preferences/PreferencesSelection.swift +0 -29
  291. package/Sources/Runic/Views/Preferences/PreferencesSyncPane.swift +0 -61
  292. package/Sources/Runic/Views/Preferences/PreferencesView.swift +0 -213
  293. package/Sources/Runic/Views/Rating/QualityRatingView.swift +0 -238
  294. package/Sources/Runic/Views/Team/TeamDashboardView.swift +0 -376
  295. package/Sources/Runic/Views/Team/TeamInviteSheet.swift +0 -175
  296. package/Sources/Runic/Views/Team/TeamManagementView.swift +0 -762
  297. package/Sources/Runic/Views/Team/TeamMemberRow.swift +0 -181
  298. package/Sources/RunicCLI/CLIEntry.swift +0 -983
  299. package/Sources/RunicCLI/CLIRenderer.swift +0 -87
  300. package/Sources/RunicCLI/Commands/EnhancedUsageCommand.swift +0 -588
  301. package/Sources/RunicCLI/Commands/ModelsCommand.swift +0 -363
  302. package/Sources/RunicCLI/Commands/ProjectsCommand.swift +0 -453
  303. package/Sources/RunicCLI/Commands/ResetCommand.swift +0 -430
  304. package/Sources/RunicCLI/Commands/UsageLedgerSourceFactory.swift +0 -167
  305. package/Sources/RunicClaudeWatchdog/main.swift +0 -122
  306. package/Sources/RunicClaudeWebProbe/main.swift +0 -62
  307. package/Sources/RunicCore/AlertRuleStore.swift +0 -187
  308. package/Sources/RunicCore/BrowserCookieImportOrder.swift +0 -25
  309. package/Sources/RunicCore/CopilotUsageModels.swift +0 -84
  310. package/Sources/RunicCore/CostUsageFetcher.swift +0 -119
  311. package/Sources/RunicCore/CostUsageModels.swift +0 -479
  312. package/Sources/RunicCore/CreditsModels.swift +0 -50
  313. package/Sources/RunicCore/CustomProviders/CustomProviderModels.swift +0 -268
  314. package/Sources/RunicCore/CustomProviders/GenericProviderFetcher.swift +0 -631
  315. package/Sources/RunicCore/CustomProviders/ProviderTemplates.swift +0 -444
  316. package/Sources/RunicCore/Host/PTY/TTYCommandRunner.swift +0 -679
  317. package/Sources/RunicCore/Host/Process/SubprocessRunner.swift +0 -135
  318. package/Sources/RunicCore/Integrations/GitHubIntegration.swift +0 -173
  319. package/Sources/RunicCore/Logging/JSONStderrLogHandler.swift +0 -79
  320. package/Sources/RunicCore/Logging/OSLogLogHandler.swift +0 -86
  321. package/Sources/RunicCore/Logging/RunicLog.swift +0 -123
  322. package/Sources/RunicCore/Models/EnhancedUsageModels.swift +0 -370
  323. package/Sources/RunicCore/OpenAIDashboardModels.swift +0 -210
  324. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardBrowserCookieImporter.swift +0 -676
  325. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardFetcher.swift +0 -492
  326. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardNavigationDelegate.swift +0 -51
  327. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardParser.swift +0 -483
  328. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardScrapeScript.swift +0 -558
  329. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardWebViewCache.swift +0 -204
  330. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardWebsiteDataStore.swift +0 -78
  331. package/Sources/RunicCore/PathEnvironment.swift +0 -482
  332. package/Sources/RunicCore/Performance/PerformanceModels.swift +0 -371
  333. package/Sources/RunicCore/Performance/PerformanceStorageImpl.swift +0 -426
  334. package/Sources/RunicCore/Policy/UsagePolicyEngine.swift +0 -178
  335. package/Sources/RunicCore/ProjectBudgetStore.swift +0 -102
  336. package/Sources/RunicCore/ProviderCostSnapshot.swift +0 -29
  337. package/Sources/RunicCore/Providers/Antigravity/AntigravityProviderDescriptor.swift +0 -68
  338. package/Sources/RunicCore/Providers/Antigravity/AntigravityStatusProbe.swift +0 -685
  339. package/Sources/RunicCore/Providers/Auggie/AuggieProviderDescriptor.swift +0 -83
  340. package/Sources/RunicCore/Providers/Auggie/AuggieUsageFetcher.swift +0 -142
  341. package/Sources/RunicCore/Providers/Azure/AzureProviderDescriptor.swift +0 -141
  342. package/Sources/RunicCore/Providers/Azure/AzureUsageFetcher.swift +0 -188
  343. package/Sources/RunicCore/Providers/Bedrock/BedrockProviderDescriptor.swift +0 -126
  344. package/Sources/RunicCore/Providers/Bedrock/BedrockUsageFetcher.swift +0 -164
  345. package/Sources/RunicCore/Providers/Cerebras/CerebrasProviderDescriptor.swift +0 -84
  346. package/Sources/RunicCore/Providers/Cerebras/CerebrasUsageFetcher.swift +0 -75
  347. package/Sources/RunicCore/Providers/Claude/ClaudeCLISession.swift +0 -332
  348. package/Sources/RunicCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthCredentials.swift +0 -180
  349. package/Sources/RunicCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthUsageFetcher.swift +0 -137
  350. package/Sources/RunicCore/Providers/Claude/ClaudeProviderDescriptor.swift +0 -209
  351. package/Sources/RunicCore/Providers/Claude/ClaudeStatusProbe.swift +0 -654
  352. package/Sources/RunicCore/Providers/Claude/ClaudeUsageDataSource.swift +0 -30
  353. package/Sources/RunicCore/Providers/Claude/ClaudeUsageFetcher.swift +0 -480
  354. package/Sources/RunicCore/Providers/Claude/ClaudeWeb/ClaudeWebAPIFetcher.swift +0 -780
  355. package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexOAuthCredentials.swift +0 -147
  356. package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexOAuthUsageFetcher.swift +0 -280
  357. package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexTokenRefresher.swift +0 -100
  358. package/Sources/RunicCore/Providers/Codex/CodexProviderDescriptor.swift +0 -245
  359. package/Sources/RunicCore/Providers/Codex/CodexStatusProbe.swift +0 -125
  360. package/Sources/RunicCore/Providers/Codex/CodexUsageDataSource.swift +0 -26
  361. package/Sources/RunicCore/Providers/Codex/CodexWebDashboardStrategy.swift +0 -183
  362. package/Sources/RunicCore/Providers/Cohere/CohereProviderDescriptor.swift +0 -83
  363. package/Sources/RunicCore/Providers/Cohere/CohereUsageFetcher.swift +0 -85
  364. package/Sources/RunicCore/Providers/Copilot/CopilotDeviceFlow.swift +0 -123
  365. package/Sources/RunicCore/Providers/Copilot/CopilotGitHubCLITokenReader.swift +0 -117
  366. package/Sources/RunicCore/Providers/Copilot/CopilotProviderDescriptor.swift +0 -100
  367. package/Sources/RunicCore/Providers/Copilot/CopilotUsageFetcher.swift +0 -293
  368. package/Sources/RunicCore/Providers/Copilot/CopilotVSCodeTokenReader.swift +0 -385
  369. package/Sources/RunicCore/Providers/Cursor/CursorProviderDescriptor.swift +0 -67
  370. package/Sources/RunicCore/Providers/Cursor/CursorStatusProbe.swift +0 -595
  371. package/Sources/RunicCore/Providers/DeepSeek/DeepSeekProviderDescriptor.swift +0 -85
  372. package/Sources/RunicCore/Providers/DeepSeek/DeepSeekUsageFetcher.swift +0 -108
  373. package/Sources/RunicCore/Providers/Factory/FactoryLocalStorageImporter.swift +0 -398
  374. package/Sources/RunicCore/Providers/Factory/FactoryProviderDescriptor.swift +0 -67
  375. package/Sources/RunicCore/Providers/Factory/FactoryStatusProbe.swift +0 -1276
  376. package/Sources/RunicCore/Providers/Fireworks/FireworksProviderDescriptor.swift +0 -84
  377. package/Sources/RunicCore/Providers/Fireworks/FireworksUsageFetcher.swift +0 -75
  378. package/Sources/RunicCore/Providers/Gemini/GeminiProviderDescriptor.swift +0 -67
  379. package/Sources/RunicCore/Providers/Gemini/GeminiStatusProbe.swift +0 -839
  380. package/Sources/RunicCore/Providers/Groq/GroqProviderDescriptor.swift +0 -83
  381. package/Sources/RunicCore/Providers/Groq/GroqUsageFetcher.swift +0 -71
  382. package/Sources/RunicCore/Providers/Kimi/KimiProviderDescriptor.swift +0 -83
  383. package/Sources/RunicCore/Providers/Kimi/KimiUsageFetcher.swift +0 -77
  384. package/Sources/RunicCore/Providers/MiniMax/MiniMaxProviderDescriptor.swift +0 -97
  385. package/Sources/RunicCore/Providers/MiniMax/MiniMaxSettingsReader.swift +0 -54
  386. package/Sources/RunicCore/Providers/MiniMax/MiniMaxUsageFetcher.swift +0 -168
  387. package/Sources/RunicCore/Providers/MiniMax/MiniMaxWebUsageFetcher.swift +0 -911
  388. package/Sources/RunicCore/Providers/Mistral/MistralProviderDescriptor.swift +0 -84
  389. package/Sources/RunicCore/Providers/Mistral/MistralUsageFetcher.swift +0 -75
  390. package/Sources/RunicCore/Providers/OpenRouter/OpenRouterProviderDescriptor.swift +0 -87
  391. package/Sources/RunicCore/Providers/OpenRouter/OpenRouterUsageFetcher.swift +0 -216
  392. package/Sources/RunicCore/Providers/Perplexity/PerplexityProviderDescriptor.swift +0 -84
  393. package/Sources/RunicCore/Providers/Perplexity/PerplexityUsageFetcher.swift +0 -75
  394. package/Sources/RunicCore/Providers/ProviderBranding.swift +0 -25
  395. package/Sources/RunicCore/Providers/ProviderCLIConfig.swift +0 -17
  396. package/Sources/RunicCore/Providers/ProviderDescriptor.swift +0 -129
  397. package/Sources/RunicCore/Providers/ProviderFetchPlan.swift +0 -263
  398. package/Sources/RunicCore/Providers/ProviderSettingsSnapshot.swift +0 -98
  399. package/Sources/RunicCore/Providers/ProviderTokenResolver.swift +0 -501
  400. package/Sources/RunicCore/Providers/ProviderVersionDetector.swift +0 -68
  401. package/Sources/RunicCore/Providers/Providers.swift +0 -184
  402. package/Sources/RunicCore/Providers/Qwen/QwenProviderDescriptor.swift +0 -86
  403. package/Sources/RunicCore/Providers/Qwen/QwenSettingsReader.swift +0 -30
  404. package/Sources/RunicCore/Providers/Qwen/QwenUsageStats.swift +0 -328
  405. package/Sources/RunicCore/Providers/SambaNova/SambaNovaProviderDescriptor.swift +0 -84
  406. package/Sources/RunicCore/Providers/SambaNova/SambaNovaUsageFetcher.swift +0 -75
  407. package/Sources/RunicCore/Providers/Together/TogetherProviderDescriptor.swift +0 -83
  408. package/Sources/RunicCore/Providers/Together/TogetherUsageFetcher.swift +0 -75
  409. package/Sources/RunicCore/Providers/VertexAI/VertexAIProviderDescriptor.swift +0 -123
  410. package/Sources/RunicCore/Providers/VertexAI/VertexAISettingsReader.swift +0 -48
  411. package/Sources/RunicCore/Providers/VertexAI/VertexAIUsageFetcher.swift +0 -144
  412. package/Sources/RunicCore/Providers/XAI/XAIProviderDescriptor.swift +0 -83
  413. package/Sources/RunicCore/Providers/XAI/XAIUsageFetcher.swift +0 -75
  414. package/Sources/RunicCore/Providers/Zai/ZaiProviderDescriptor.swift +0 -74
  415. package/Sources/RunicCore/Providers/Zai/ZaiSettingsReader.swift +0 -41
  416. package/Sources/RunicCore/Providers/Zai/ZaiUsageStats.swift +0 -745
  417. package/Sources/RunicCore/Sync/BackgroundSyncManager.swift +0 -384
  418. package/Sources/RunicCore/Sync/SyncConflictResolver.swift +0 -307
  419. package/Sources/RunicCore/Sync/SyncProtocol.swift +0 -287
  420. package/Sources/RunicCore/Sync/SyncRecord.swift +0 -402
  421. package/Sources/RunicCore/Sync/SyncUsageExample.swift +0 -288
  422. package/Sources/RunicCore/Sync/TeamSyncRecords.swift +0 -768
  423. package/Sources/RunicCore/Sync/iCloudSyncEngine.swift +0 -338
  424. package/Sources/RunicCore/Team/TeamModels.swift +0 -584
  425. package/Sources/RunicCore/Team/TeamShowbackExporter.swift +0 -495
  426. package/Sources/RunicCore/Team/TeamStore.swift +0 -809
  427. package/Sources/RunicCore/TextParsing.swift +0 -55
  428. package/Sources/RunicCore/UsageFetcher.swift +0 -694
  429. package/Sources/RunicCore/UsageFormatter.swift +0 -410
  430. package/Sources/RunicCore/UsageLedger/ClaudeUsageLogSource.swift +0 -441
  431. package/Sources/RunicCore/UsageLedger/CodexUsageLogSource.swift +0 -502
  432. package/Sources/RunicCore/UsageLedger/LedgerCache.swift +0 -161
  433. package/Sources/RunicCore/UsageLedger/OTelGenAILedgerAdapter.swift +0 -550
  434. package/Sources/RunicCore/UsageLedger/UsageLedger.swift +0 -29
  435. package/Sources/RunicCore/UsageLedger/UsageLedgerAggregator.swift +0 -675
  436. package/Sources/RunicCore/UsageLedger/UsageLedgerInsightsAdvisor.swift +0 -209
  437. package/Sources/RunicCore/UsageLedger/UsageLedgerModels.swift +0 -417
  438. package/Sources/RunicCore/UsageLedger/UsageLedgerProjectIdentity.swift +0 -284
  439. package/Sources/RunicCore/UsagePace.swift +0 -81
  440. package/Sources/RunicCore/Vendored/CostUsage/CostUsageCache.swift +0 -73
  441. package/Sources/RunicCore/Vendored/CostUsage/CostUsageJsonl.swift +0 -74
  442. package/Sources/RunicCore/Vendored/CostUsage/CostUsagePricing.swift +0 -208
  443. package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner+Claude.swift +0 -455
  444. package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner+Timestamp.swift +0 -132
  445. package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner.swift +0 -589
  446. package/Sources/RunicCore/WidgetSnapshot.swift +0 -183
  447. package/Sources/RunicMacroSupport/ProviderRegistrationMacros.swift +0 -14
  448. package/Sources/RunicMacros/ProviderRegistrationMacros.swift +0 -216
  449. package/Sources/RunicWidget/RunicWidgetBundle.swift +0 -79
  450. package/Sources/RunicWidget/RunicWidgetProvider.swift +0 -283
  451. package/Sources/RunicWidget/RunicWidgetViews.swift +0 -680
  452. package/Tests/RunicTests/AntigravityStatusProbeTests.swift +0 -50
  453. package/Tests/RunicTests/AppDelegateTests.swift +0 -48
  454. package/Tests/RunicTests/BrowserCookieOrderLabelTests.swift +0 -21
  455. package/Tests/RunicTests/CLIArgumentParsingTests.swift +0 -69
  456. package/Tests/RunicTests/CLICostTests.swift +0 -64
  457. package/Tests/RunicTests/CLIProviderSelectionTests.swift +0 -21
  458. package/Tests/RunicTests/CLISnapshotTests.swift +0 -71
  459. package/Tests/RunicTests/CLIWebFallbackTests.swift +0 -57
  460. package/Tests/RunicTests/ClaudeOAuthTests.swift +0 -163
  461. package/Tests/RunicTests/ClaudeResilienceTests.swift +0 -29
  462. package/Tests/RunicTests/ClaudeUsageTests.swift +0 -369
  463. package/Tests/RunicTests/CodexOAuthTests.swift +0 -121
  464. package/Tests/RunicTests/CodexUsageLogSourceTests.swift +0 -80
  465. package/Tests/RunicTests/CopilotTokenResolverTests.swift +0 -74
  466. package/Tests/RunicTests/CopilotVSCodeTokenReaderTests.swift +0 -74
  467. package/Tests/RunicTests/CostUsageDecodingTests.swift +0 -392
  468. package/Tests/RunicTests/CostUsagePricingTests.swift +0 -48
  469. package/Tests/RunicTests/CostUsageScannerTests.swift +0 -698
  470. package/Tests/RunicTests/CursorStatusProbeTests.swift +0 -322
  471. package/Tests/RunicTests/FactoryStatusProbeTests.swift +0 -67
  472. package/Tests/RunicTests/GeminiAPITestHelpers.swift +0 -94
  473. package/Tests/RunicTests/GeminiLoginAlertTests.swift +0 -27
  474. package/Tests/RunicTests/GeminiStatusProbeAPITests.swift +0 -283
  475. package/Tests/RunicTests/GeminiStatusProbePlanTests.swift +0 -279
  476. package/Tests/RunicTests/GeminiStatusProbeTests.swift +0 -232
  477. package/Tests/RunicTests/GeminiTestEnvironment.swift +0 -87
  478. package/Tests/RunicTests/GoogleWorkspaceStatusTests.swift +0 -72
  479. package/Tests/RunicTests/InstallOriginTests.swift +0 -17
  480. package/Tests/RunicTests/KeyboardShortcutsBundleTests.swift +0 -9
  481. package/Tests/RunicTests/LiveAccountTests.swift +0 -24
  482. package/Tests/RunicTests/LoadingPatternTests.swift +0 -34
  483. package/Tests/RunicTests/MenuCardModelTests.swift +0 -544
  484. package/Tests/RunicTests/MiniMaxCookieHeaderStoreTestSupport.swift +0 -11
  485. package/Tests/RunicTests/MiniMaxGroupIDStoreTestSupport.swift +0 -11
  486. package/Tests/RunicTests/MiniMaxParsingTests.swift +0 -67
  487. package/Tests/RunicTests/MiniMaxTokenStoreTestSupport.swift +0 -11
  488. package/Tests/RunicTests/OTelGenAILedgerAdapterTests.swift +0 -110
  489. package/Tests/RunicTests/OpenAIDashboardBrowserCookieImporterTests.swift +0 -16
  490. package/Tests/RunicTests/OpenAIDashboardFetcherCreditsWaitTests.swift +0 -74
  491. package/Tests/RunicTests/OpenAIDashboardOffscreenHostTests.swift +0 -26
  492. package/Tests/RunicTests/OpenAIDashboardParserTests.swift +0 -133
  493. package/Tests/RunicTests/OpenAIWebAccountSwitchTests.swift +0 -64
  494. package/Tests/RunicTests/OpenRouterTokenStoreTestSupport.swift +0 -131
  495. package/Tests/RunicTests/PathBuilderTests.swift +0 -236
  496. package/Tests/RunicTests/ProviderFetchPipelineTests.swift +0 -159
  497. package/Tests/RunicTests/ProviderIconResourcesTests.swift +0 -37
  498. package/Tests/RunicTests/ProviderMetadataStatusLinkTests.swift +0 -15
  499. package/Tests/RunicTests/ProviderRegistryTests.swift +0 -29
  500. package/Tests/RunicTests/ProviderSettingsDescriptorTests.swift +0 -236
  501. package/Tests/RunicTests/ProviderToggleStoreTests.swift +0 -50
  502. package/Tests/RunicTests/RunicTests.swift +0 -119
  503. package/Tests/RunicTests/SessionQuotaNotificationLogicTests.swift +0 -35
  504. package/Tests/RunicTests/SettingsStoreTests.swift +0 -265
  505. package/Tests/RunicTests/StatusItemAnimationTests.swift +0 -54
  506. package/Tests/RunicTests/StatusMenuTests.swift +0 -475
  507. package/Tests/RunicTests/StatusProbeTests.swift +0 -376
  508. package/Tests/RunicTests/SubprocessRunnerTests.swift +0 -18
  509. package/Tests/RunicTests/SubscriptionDetectionTests.swift +0 -64
  510. package/Tests/RunicTests/TTYCommandRunnerTests.swift +0 -147
  511. package/Tests/RunicTests/TTYIntegrationTests.swift +0 -41
  512. package/Tests/RunicTests/TeamShowbackExporterTests.swift +0 -157
  513. package/Tests/RunicTests/TextParsingTests.swift +0 -11
  514. package/Tests/RunicTests/UsageFormatterTests.swift +0 -111
  515. package/Tests/RunicTests/UsageLedgerAnomalyDetectionTests.swift +0 -170
  516. package/Tests/RunicTests/UsageLedgerForecastTests.swift +0 -211
  517. package/Tests/RunicTests/UsageLedgerInsightsAdvisorTests.swift +0 -81
  518. package/Tests/RunicTests/UsageLedgerProjectNameTests.swift +0 -168
  519. package/Tests/RunicTests/UsagePaceTests.swift +0 -76
  520. package/Tests/RunicTests/UsagePaceTextTests.swift +0 -108
  521. package/Tests/RunicTests/UsagePolicyEngineTests.swift +0 -89
  522. package/Tests/RunicTests/WidgetSnapshotTests.swift +0 -43
  523. package/Tests/RunicTests/ZaiProviderTests.swift +0 -59
  524. package/Tests/RunicTests/ZaiTokenStoreTestSupport.swift +0 -9
  525. package/TestsLinux/PlatformGatingTests.swift +0 -46
  526. package/appcast.xml +0 -104
  527. package/assets/logo-concept-stack.svg +0 -24
  528. package/assets/logo-minimal-bars.svg +0 -15
  529. package/assets/logo.svg +0 -20
  530. package/assets/logo2.svg +0 -43
  531. package/bin/docs-list +0 -5
  532. package/build-and-run.sh +0 -369
  533. package/docs/.nojekyll +0 -1
  534. package/docs/CNAME +0 -1
  535. package/docs/antigravity.md +0 -75
  536. package/docs/architecture.md +0 -32
  537. package/docs/claude.md +0 -93
  538. package/docs/cli-commands/integration_guide.md +0 -371
  539. package/docs/cli-commands/quick_reference.md +0 -362
  540. package/docs/cli-commands/readme.md +0 -361
  541. package/docs/cli.md +0 -156
  542. package/docs/cloudkit_sync_guide.md +0 -495
  543. package/docs/codebase_review.md +0 -288
  544. package/docs/codex-oauth.md +0 -635
  545. package/docs/codex.md +0 -104
  546. package/docs/codexbar.png +0 -0
  547. package/docs/copilot.md +0 -44
  548. package/docs/cursor.md +0 -46
  549. package/docs/design/designcomparisonchart.md +0 -510
  550. package/docs/design/implementationguide.md +0 -792
  551. package/docs/design/menubaricondesignconcepts.md +0 -796
  552. package/docs/design/mockups/hybridiconconcept.svg +0 -62
  553. package/docs/design/mockups/infinityiconconcept.svg +0 -41
  554. package/docs/design/mockups/infinityiconstates.svg +0 -129
  555. package/docs/design/mockups/wavelogorefined.svg +0 -48
  556. package/docs/design/quick_summary.md +0 -426
  557. package/docs/design/readme.md +0 -478
  558. package/docs/design/sizespecifications.md +0 -575
  559. package/docs/design-system.md +0 -836
  560. package/docs/factory.md +0 -103
  561. package/docs/gemini.md +0 -73
  562. package/docs/icon.md +0 -37
  563. package/docs/icon.png +0 -0
  564. package/docs/index.html +0 -175
  565. package/docs/keychain_fix.md +0 -274
  566. package/docs/minimax.md +0 -71
  567. package/docs/packaging.md +0 -25
  568. package/docs/progress-bar-improvements.md +0 -240
  569. package/docs/progress-bar-quick-reference.md +0 -283
  570. package/docs/progress-bar-technical-details.md +0 -432
  571. package/docs/progress-bar-visual-test.swift +0 -375
  572. package/docs/provider.md +0 -202
  573. package/docs/providers.md +0 -86
  574. package/docs/refactor/macros.md +0 -35
  575. package/docs/refresh-loop.md +0 -22
  576. package/docs/releasing-homebrew.md +0 -35
  577. package/docs/releasing.md +0 -121
  578. package/docs/research/concrete_todo_2026-02-22.md +0 -47
  579. package/docs/research/core-feature-research.md +0 -248
  580. package/docs/research/feature_uiux_roadmap_2026-02-22.md +0 -202
  581. package/docs/research/parity_matrix.md +0 -49
  582. package/docs/research/provider_expansion_candidates_2026-02-22.md +0 -80
  583. package/docs/research/provider_model_token_project_matrix_2026-02-23.md +0 -46
  584. package/docs/research/release_gate_checklist.md +0 -57
  585. package/docs/site.css +0 -505
  586. package/docs/sparkle.md +0 -28
  587. package/docs/status.md +0 -28
  588. package/docs/sync/implementation.md +0 -393
  589. package/docs/sync/readme.md +0 -317
  590. package/docs/sync_files_summary.md +0 -391
  591. package/docs/sync_quick_reference.md +0 -225
  592. package/docs/todo.md +0 -11
  593. package/docs/ui.md +0 -29
  594. package/docs/web-integration.md +0 -9
  595. package/docs/widgets.md +0 -85
  596. package/docs/workflows/error-handling-improvements.md +0 -434
  597. package/docs/workflows/folder_structure.md +0 -299
  598. package/docs/workflows/loading_states.md +0 -446
  599. package/docs/workflows/loading_states_examples.md +0 -565
  600. package/docs/workflows/loading_states_flow.md +0 -430
  601. package/docs/workflows/performance_optimizations.md +0 -457
  602. package/docs/workflows/phase1-cli-testing-report.md +0 -313
  603. package/docs/workflows/quick_reference.md +0 -228
  604. package/docs/workflows/readme.md +0 -59
  605. package/docs/workflows/recent_improvements.md +0 -275
  606. package/docs/workflows/sync_enablement_summary.md +0 -400
  607. package/docs/zai.md +0 -43
  608. package/runic.png +0 -0
  609. package/runic.svg +0 -15
  610. 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.