@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.
- package/CHANGELOG.md +267 -0
- package/LICENSE +373 -21
- package/README.md +98 -84
- package/THIRD-PARTY-NOTICES.md +651 -0
- package/package.json +14 -4
- package/.swiftformat +0 -50
- package/.swiftlint.yml +0 -160
- package/CONTRIBUTING.md +0 -456
- package/Icon.icns +0 -0
- package/Icon.icon/Assets/runic.png +0 -0
- package/Icon.icon/icon.json +0 -36
- package/Package.resolved +0 -51
- package/Package.swift +0 -136
- package/Packages/Helix/LICENSE +0 -21
- package/Packages/Helix/Package.swift +0 -29
- package/Packages/Helix/README.md +0 -976
- package/Packages/Helix/Sources/Helix/Binding.swift +0 -111
- package/Packages/Helix/Sources/Helix/CommandParser.swift +0 -160
- package/Packages/Helix/Sources/Helix/CommandSignature.swift +0 -117
- package/Packages/Helix/Sources/Helix/ExpressibleFromArgument.swift +0 -72
- package/Packages/Helix/Sources/Helix/HelpGenerator.swift +0 -175
- package/Packages/Helix/Sources/Helix/NameSpecification.swift +0 -98
- package/Packages/Helix/Sources/Helix/ParsableCommand.swift +0 -204
- package/Packages/Helix/Sources/Helix/Platform/DarwinPlatformContext.swift +0 -44
- package/Packages/Helix/Sources/Helix/Platform/LinuxPlatformContext.swift +0 -34
- package/Packages/Helix/Sources/Helix/Platform/PlatformContext+Default.swift +0 -91
- package/Packages/Helix/Sources/Helix/Platform/PlatformContext.swift +0 -94
- package/Packages/Helix/Sources/Helix/Platform/PlatformPath.swift +0 -167
- package/Packages/Helix/Sources/Helix/Platform/Stdio.swift +0 -99
- package/Packages/Helix/Sources/Helix/Platform/WebPlatformContext.swift +0 -146
- package/Packages/Helix/Sources/Helix/Platform/WindowsPlatformContext.swift +0 -97
- package/Packages/Helix/Sources/Helix/Program.swift +0 -204
- package/Packages/Helix/Sources/Helix/PropertyWrappers.swift +0 -367
- package/Packages/Silo/LICENSE +0 -21
- package/Packages/Silo/Package.swift +0 -34
- package/Packages/Silo/README.md +0 -466
- package/Packages/Silo/Sources/Silo/BinaryCookiesReader.swift +0 -169
- package/Packages/Silo/Sources/Silo/BrowserCookieAnalytics.swift +0 -365
- package/Packages/Silo/Sources/Silo/BrowserCookieBackends.swift +0 -594
- package/Packages/Silo/Sources/Silo/BrowserCookieClient.swift +0 -326
- package/Packages/Silo/Sources/Silo/BrowserCookieExport.swift +0 -154
- package/Packages/Silo/Sources/Silo/BrowserCookieImport.swift +0 -119
- package/Packages/Silo/Sources/Silo/BrowserCookieMockStore.swift +0 -121
- package/Packages/Silo/Sources/Silo/BrowserCookieModels.swift +0 -391
- package/Packages/Silo/Sources/Silo/ChromiumCookieReader.swift +0 -240
- package/Packages/Silo/Sources/Silo/CryptoSupport.swift +0 -86
- package/Packages/Silo/Sources/Silo/FirefoxCookieReader.swift +0 -172
- package/Packages/Silo/Sources/Silo/LinuxChromiumCookieReader.swift +0 -172
- package/Packages/Silo/Sources/Silo/LinuxSecretService.swift +0 -105
- package/Packages/Silo/Sources/Silo/MacOSChromiumCookieReader.swift +0 -191
- package/Packages/Silo/Sources/Silo/SQLiteSnapshot.swift +0 -41
- package/Packages/Silo/Sources/Silo/WindowsChromiumCookieReader.swift +0 -110
- package/RuniciOS/App/RuniciOSApp.swift +0 -105
- package/RuniciOS/Core/iOSUsageStore.swift +0 -192
- package/RuniciOS/Views/ProviderDetailView.swift +0 -312
- package/RuniciOS/Views/ProviderListView.swift +0 -228
- package/RuniciOS/Widgets/LargeWidget.swift +0 -367
- package/RuniciOS/Widgets/LiveActivity.swift +0 -342
- package/RuniciOS/Widgets/LockScreenWidget.swift +0 -273
- package/RuniciOS/Widgets/MediumWidget.swift +0 -370
- package/RuniciOS/Widgets/RunicWidget.swift +0 -274
- package/RuniciOS/Widgets/SmallWidget.swift +0 -281
- package/RuniciOS/Widgets/WidgetModels.swift +0 -285
- package/RuniciOS/Widgets/WidgetTimeline.swift +0 -270
- package/Scripts/CREATION-SUMMARY.md +0 -367
- package/Scripts/DIRECTORY-STRUCTURE.md +0 -358
- package/Scripts/GETTING-STARTED-CHECKLIST.md +0 -364
- package/Scripts/INDEX.md +0 -365
- package/Scripts/QUICK-REFERENCE.md +0 -164
- package/Scripts/README-SCRIPTS.md +0 -926
- package/Scripts/build-android.sh +0 -526
- package/Scripts/build-ios.sh +0 -529
- package/Scripts/build-macos.sh +0 -603
- package/Scripts/build-windows.sh +0 -504
- package/Scripts/build_icon.sh +0 -49
- package/Scripts/changelog-to-html.sh +0 -89
- package/Scripts/check-release-assets.sh +0 -10
- package/Scripts/ci-config.yml +0 -474
- package/Scripts/compile_and_run.sh +0 -219
- package/Scripts/compile_and_run_adhoc.sh +0 -4
- package/Scripts/docs-list.mjs +0 -119
- package/Scripts/make_appcast.sh +0 -58
- package/Scripts/package_app.sh +0 -409
- package/Scripts/release-lib.sh +0 -214
- package/Scripts/release.sh +0 -76
- package/Scripts/setup-all.sh +0 -387
- package/Scripts/setup-ios.sh +0 -404
- package/Scripts/setup-react-native.sh +0 -523
- package/Scripts/sign-and-notarize.sh +0 -122
- package/Scripts/test_live_update.sh +0 -38
- package/Scripts/validate_changelog.sh +0 -23
- package/Scripts/verify_appcast.sh +0 -92
- package/Sources/Runic/About.swift +0 -93
- package/Sources/Runic/AppNotifications.swift +0 -115
- package/Sources/Runic/Controllers/StatusItemController+Actions.swift +0 -666
- package/Sources/Runic/Controllers/StatusItemController+Animation.swift +0 -518
- package/Sources/Runic/Controllers/StatusItemController+ChartSubmenus.swift +0 -810
- package/Sources/Runic/Controllers/StatusItemController+CustomProviders.swift +0 -87
- package/Sources/Runic/Controllers/StatusItemController+Menu.swift +0 -1407
- package/Sources/Runic/Controllers/StatusItemController+MenuCards.swift +0 -337
- package/Sources/Runic/Controllers/StatusItemController+MenuHelpers.swift +0 -395
- package/Sources/Runic/Controllers/StatusItemController.swift +0 -360
- package/Sources/Runic/Core/BudgetNotificationManager.swift +0 -80
- package/Sources/Runic/Core/Login/ClaudeLoginRunner.swift +0 -103
- package/Sources/Runic/Core/Login/CodexLoginRunner.swift +0 -154
- package/Sources/Runic/Core/Login/CursorLoginRunner.swift +0 -206
- package/Sources/Runic/Core/Login/GeminiLoginRunner.swift +0 -92
- package/Sources/Runic/Core/Rendering/IconRenderer.swift +0 -1216
- package/Sources/Runic/Core/Rendering/IconView.swift +0 -120
- package/Sources/Runic/Core/Rendering/ProviderBrandIcon.swift +0 -71
- package/Sources/Runic/Core/RunicAnimation.swift +0 -53
- package/Sources/Runic/Core/RunicColors.swift +0 -73
- package/Sources/Runic/Core/RunicCornerRadius.swift +0 -15
- package/Sources/Runic/Core/RunicSpacing.swift +0 -68
- package/Sources/Runic/Core/Stores/AuggieTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/AzureOpenAITokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/CerebrasTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/CohereTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/CopilotTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/CustomProviderStore.swift +0 -158
- package/Sources/Runic/Core/Stores/DeepSeekTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/FireworksTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/GroqTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/KimiTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/MiniMaxCookieHeaderStore.swift +0 -119
- package/Sources/Runic/Core/Stores/MiniMaxGroupIDStore.swift +0 -119
- package/Sources/Runic/Core/Stores/MiniMaxTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/MistralTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/OpenRouterTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/PerplexityTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/ProviderToggleStore.swift +0 -30
- package/Sources/Runic/Core/Stores/QwenTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/SambaNovaTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/SettingsStore.swift +0 -1711
- package/Sources/Runic/Core/Stores/TogetherTokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/UsageStore+Accessors.swift +0 -20
- package/Sources/Runic/Core/Stores/UsageStore+Status.swift +0 -189
- package/Sources/Runic/Core/Stores/UsageStore+TokenCost.swift +0 -33
- package/Sources/Runic/Core/Stores/UsageStore+WidgetSnapshot.swift +0 -67
- package/Sources/Runic/Core/Stores/UsageStore.swift +0 -3605
- package/Sources/Runic/Core/Stores/XAITokenStore.swift +0 -119
- package/Sources/Runic/Core/Stores/ZaiTokenStore.swift +0 -118
- package/Sources/Runic/Core/UsageExporter.swift +0 -193
- package/Sources/Runic/Date+RelativeDescription.swift +0 -21
- package/Sources/Runic/HiddenWindowView.swift +0 -32
- package/Sources/Runic/InstallOrigin.swift +0 -9
- package/Sources/Runic/KeyboardShortcuts+Names.swift +0 -6
- package/Sources/Runic/MouseLocationReader.swift +0 -65
- package/Sources/Runic/Notifications+Runic.swift +0 -6
- package/Sources/Runic/OpenAICreditsPurchaseWindowController.swift +0 -503
- package/Sources/Runic/ProviderRegistry.swift +0 -100
- package/Sources/Runic/ProviderSwitcherButtons.swift +0 -267
- package/Sources/Runic/Providers/Antigravity/AntigravityLoginFlow.swift +0 -11
- package/Sources/Runic/Providers/Antigravity/AntigravityProviderImplementation.swift +0 -14
- package/Sources/Runic/Providers/Auggie/AuggieProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Azure/AzureProviderImplementation.swift +0 -52
- package/Sources/Runic/Providers/Bedrock/BedrockProviderImplementation.swift +0 -42
- package/Sources/Runic/Providers/Cerebras/CerebrasProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Claude/ClaudeLoginFlow.swift +0 -26
- package/Sources/Runic/Providers/Claude/ClaudeProviderImplementation.swift +0 -14
- package/Sources/Runic/Providers/Codex/CodexLoginFlow.swift +0 -18
- package/Sources/Runic/Providers/Codex/CodexProviderImplementation.swift +0 -15
- package/Sources/Runic/Providers/Cohere/CohereProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Copilot/CopilotLoginFlow.swift +0 -193
- package/Sources/Runic/Providers/Copilot/CopilotProviderImplementation.swift +0 -110
- package/Sources/Runic/Providers/Cursor/CursorLoginFlow.swift +0 -28
- package/Sources/Runic/Providers/Cursor/CursorProviderImplementation.swift +0 -15
- package/Sources/Runic/Providers/DeepSeek/DeepSeekProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Factory/FactoryLoginFlow.swift +0 -12
- package/Sources/Runic/Providers/Factory/FactoryProviderImplementation.swift +0 -15
- package/Sources/Runic/Providers/Fireworks/FireworksProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Gemini/GeminiLoginFlow.swift +0 -20
- package/Sources/Runic/Providers/Gemini/GeminiProviderImplementation.swift +0 -15
- package/Sources/Runic/Providers/Groq/GroqProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Kimi/KimiProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/MiniMax/MiniMaxProviderImplementation.swift +0 -32
- package/Sources/Runic/Providers/Mistral/MistralProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/OpenRouter/OpenRouterProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Perplexity/PerplexityProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/SambaNova/SambaNovaProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Shared/ProviderCatalog.swift +0 -15
- package/Sources/Runic/Providers/Shared/ProviderImplementation.swift +0 -48
- package/Sources/Runic/Providers/Shared/ProviderImplementationRegistry.swift +0 -66
- package/Sources/Runic/Providers/Shared/ProviderLoginFlow.swift +0 -12
- package/Sources/Runic/Providers/Shared/ProviderSettingsDescriptors.swift +0 -99
- package/Sources/Runic/Providers/Shared/SystemSettingsLinks.swift +0 -18
- package/Sources/Runic/Providers/Together/TogetherProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/XAI/XAIProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Zai/ZaiProviderImplementation.swift +0 -24
- package/Sources/Runic/Resources/ProviderIcon-antigravity.svg +0 -2
- package/Sources/Runic/Resources/ProviderIcon-auggie.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-azure.svg +0 -5
- package/Sources/Runic/Resources/ProviderIcon-bedrock.svg +0 -7
- package/Sources/Runic/Resources/ProviderIcon-cerebras.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-claude.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-codex.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-cohere.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-copilot.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-cursor.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-deepseek.svg +0 -4
- package/Sources/Runic/Resources/ProviderIcon-factory.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-fireworks.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-gemini.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-groq.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-kimi.svg +0 -4
- package/Sources/Runic/Resources/ProviderIcon-minimax.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-mistral.svg +0 -5
- package/Sources/Runic/Resources/ProviderIcon-openrouter.svg +0 -7
- package/Sources/Runic/Resources/ProviderIcon-perplexity.svg +0 -4
- package/Sources/Runic/Resources/ProviderIcon-qwen.svg +0 -9
- package/Sources/Runic/Resources/ProviderIcon-sambanova.svg +0 -4
- package/Sources/Runic/Resources/ProviderIcon-together.svg +0 -5
- package/Sources/Runic/Resources/ProviderIcon-vertexai.svg +0 -17
- package/Sources/Runic/Resources/ProviderIcon-xai.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-zai.svg +0 -5
- package/Sources/Runic/Resources/RunicMenubarIcon.svg +0 -7
- package/Sources/Runic/Resources/provider-context-windows.json +0 -20
- package/Sources/Runic/RunicApp.swift +0 -357
- package/Sources/Runic/SessionQuotaNotifications.swift +0 -58
- package/Sources/Runic/UsagePaceText.swift +0 -52
- package/Sources/Runic/UsageProgressBar.swift +0 -224
- package/Sources/Runic/Utilities/DisplayLink.swift +0 -96
- package/Sources/Runic/Utilities/LoadingPattern.swift +0 -60
- package/Sources/Runic/Utilities/PerformanceConstants.swift +0 -85
- package/Sources/Runic/Views/Menu/AlertsMenuView.swift +0 -256
- package/Sources/Runic/Views/Menu/ChartPanelStyle.swift +0 -22
- package/Sources/Runic/Views/Menu/CostComparativeChartMenuView.swift +0 -275
- package/Sources/Runic/Views/Menu/CostHistoryChartMenuView.swift +0 -377
- package/Sources/Runic/Views/Menu/CreditsHistoryChartMenuView.swift +0 -312
- package/Sources/Runic/Views/Menu/EfficiencyMetricsMenuView.swift +0 -312
- package/Sources/Runic/Views/Menu/HeroStatCardsMenuView.swift +0 -228
- package/Sources/Runic/Views/Menu/HourlyActivityChartMenuView.swift +0 -228
- package/Sources/Runic/Views/Menu/InlineUsageChartView.swift +0 -155
- package/Sources/Runic/Views/Menu/MenuCardEntranceModifier.swift +0 -64
- package/Sources/Runic/Views/Menu/MenuCardSidebarView.swift +0 -268
- package/Sources/Runic/Views/Menu/MenuCardSkeletonView.swift +0 -104
- package/Sources/Runic/Views/Menu/MenuCardView.swift +0 -1900
- package/Sources/Runic/Views/Menu/MenuContent.swift +0 -150
- package/Sources/Runic/Views/Menu/MenuDescriptor.swift +0 -369
- package/Sources/Runic/Views/Menu/MenuHighlightStyle.swift +0 -42
- package/Sources/Runic/Views/Menu/ModelBreakdownMenuView.swift +0 -235
- package/Sources/Runic/Views/Menu/OverviewMenuView.swift +0 -278
- package/Sources/Runic/Views/Menu/ProjectBreakdownMenuView.swift +0 -209
- package/Sources/Runic/Views/Menu/ProjectBudgetMenuView.swift +0 -220
- package/Sources/Runic/Views/Menu/ProviderTabBarView.swift +0 -88
- package/Sources/Runic/Views/Menu/SubscriptionUtilizationChartMenuView.swift +0 -201
- package/Sources/Runic/Views/Menu/UsageBreakdownChartMenuView.swift +0 -398
- package/Sources/Runic/Views/Menu/UsageHeatmapMenuView.swift +0 -232
- package/Sources/Runic/Views/Menu/UsageTimelineChartMenuView.swift +0 -364
- package/Sources/Runic/Views/Menu/UsageWindowComparisonChartMenuView.swift +0 -190
- package/Sources/Runic/Views/Menu/WeeklyActivityChartMenuView.swift +0 -132
- package/Sources/Runic/Views/Performance/PerformanceDashboardView.swift +0 -618
- package/Sources/Runic/Views/Preferences/LiquidComponents.swift +0 -305
- package/Sources/Runic/Views/Preferences/PreferencesAboutPane.swift +0 -271
- package/Sources/Runic/Views/Preferences/PreferencesAdvancedPane.swift +0 -268
- package/Sources/Runic/Views/Preferences/PreferencesAlertsPane.swift +0 -422
- package/Sources/Runic/Views/Preferences/PreferencesAnalyticsPane.swift +0 -641
- package/Sources/Runic/Views/Preferences/PreferencesBudgetsPane.swift +0 -344
- package/Sources/Runic/Views/Preferences/PreferencesComponents.swift +0 -230
- package/Sources/Runic/Views/Preferences/PreferencesCustomProvidersPane.swift +0 -322
- package/Sources/Runic/Views/Preferences/PreferencesDebugPane.swift +0 -469
- package/Sources/Runic/Views/Preferences/PreferencesGeneralPane.swift +0 -231
- package/Sources/Runic/Views/Preferences/PreferencesHelpPane.swift +0 -50
- package/Sources/Runic/Views/Preferences/PreferencesIntegrationsPane.swift +0 -567
- package/Sources/Runic/Views/Preferences/PreferencesPerformancePane.swift +0 -288
- package/Sources/Runic/Views/Preferences/PreferencesProvidersPane.swift +0 -3435
- package/Sources/Runic/Views/Preferences/PreferencesSelection.swift +0 -25
- package/Sources/Runic/Views/Preferences/PreferencesSyncPane.swift +0 -59
- package/Sources/Runic/Views/Preferences/PreferencesView.swift +0 -206
- package/Sources/Runic/Views/Rating/QualityRatingView.swift +0 -238
- package/Sources/Runic/Views/Team/TeamDashboardView.swift +0 -371
- package/Sources/Runic/Views/Team/TeamInviteSheet.swift +0 -175
- package/Sources/Runic/Views/Team/TeamManagementView.swift +0 -761
- package/Sources/Runic/Views/Team/TeamMemberRow.swift +0 -181
- package/Sources/RunicCLI/CLIEntry.swift +0 -942
- package/Sources/RunicCLI/CLIRenderer.swift +0 -87
- package/Sources/RunicCLI/Commands/EnhancedUsageCommand.swift +0 -588
- package/Sources/RunicCLI/Commands/ModelsCommand.swift +0 -362
- package/Sources/RunicCLI/Commands/ProjectsCommand.swift +0 -439
- package/Sources/RunicCLI/Commands/ResetCommand.swift +0 -429
- package/Sources/RunicCLI/Commands/UsageLedgerSourceFactory.swift +0 -168
- package/Sources/RunicClaudeWatchdog/main.swift +0 -122
- package/Sources/RunicClaudeWebProbe/main.swift +0 -62
- package/Sources/RunicCore/AlertRuleStore.swift +0 -187
- package/Sources/RunicCore/BrowserCookieImportOrder.swift +0 -25
- package/Sources/RunicCore/CopilotUsageModels.swift +0 -84
- package/Sources/RunicCore/CostUsageFetcher.swift +0 -119
- package/Sources/RunicCore/CostUsageModels.swift +0 -479
- package/Sources/RunicCore/CreditsModels.swift +0 -50
- package/Sources/RunicCore/CustomProviders/CustomProviderModels.swift +0 -269
- package/Sources/RunicCore/CustomProviders/GenericProviderFetcher.swift +0 -633
- package/Sources/RunicCore/CustomProviders/ProviderTemplates.swift +0 -500
- package/Sources/RunicCore/Host/PTY/TTYCommandRunner.swift +0 -679
- package/Sources/RunicCore/Host/Process/SubprocessRunner.swift +0 -135
- package/Sources/RunicCore/Integrations/GitHubIntegration.swift +0 -173
- package/Sources/RunicCore/Logging/JSONStderrLogHandler.swift +0 -79
- package/Sources/RunicCore/Logging/OSLogLogHandler.swift +0 -86
- package/Sources/RunicCore/Logging/RunicLog.swift +0 -123
- package/Sources/RunicCore/Models/EnhancedUsageModels.swift +0 -371
- package/Sources/RunicCore/OpenAIDashboardModels.swift +0 -210
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardBrowserCookieImporter.swift +0 -676
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardFetcher.swift +0 -492
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardNavigationDelegate.swift +0 -51
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardParser.swift +0 -483
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardScrapeScript.swift +0 -558
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardWebViewCache.swift +0 -204
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardWebsiteDataStore.swift +0 -78
- package/Sources/RunicCore/PathEnvironment.swift +0 -482
- package/Sources/RunicCore/Performance/PerformanceModels.swift +0 -371
- package/Sources/RunicCore/Performance/PerformanceStorageImpl.swift +0 -409
- package/Sources/RunicCore/Policy/UsagePolicyEngine.swift +0 -178
- package/Sources/RunicCore/ProjectBudgetStore.swift +0 -99
- package/Sources/RunicCore/ProviderCostSnapshot.swift +0 -29
- package/Sources/RunicCore/Providers/Antigravity/AntigravityProviderDescriptor.swift +0 -66
- package/Sources/RunicCore/Providers/Antigravity/AntigravityStatusProbe.swift +0 -685
- package/Sources/RunicCore/Providers/Auggie/AuggieProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/Auggie/AuggieUsageFetcher.swift +0 -142
- package/Sources/RunicCore/Providers/Azure/AzureProviderDescriptor.swift +0 -141
- package/Sources/RunicCore/Providers/Azure/AzureUsageFetcher.swift +0 -188
- package/Sources/RunicCore/Providers/Bedrock/BedrockProviderDescriptor.swift +0 -126
- package/Sources/RunicCore/Providers/Bedrock/BedrockUsageFetcher.swift +0 -168
- package/Sources/RunicCore/Providers/Cerebras/CerebrasProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/Cerebras/CerebrasUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/Claude/ClaudeCLISession.swift +0 -332
- package/Sources/RunicCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthCredentials.swift +0 -180
- package/Sources/RunicCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthUsageFetcher.swift +0 -137
- package/Sources/RunicCore/Providers/Claude/ClaudeProviderDescriptor.swift +0 -207
- package/Sources/RunicCore/Providers/Claude/ClaudeStatusProbe.swift +0 -654
- package/Sources/RunicCore/Providers/Claude/ClaudeUsageDataSource.swift +0 -28
- package/Sources/RunicCore/Providers/Claude/ClaudeUsageFetcher.swift +0 -480
- package/Sources/RunicCore/Providers/Claude/ClaudeWeb/ClaudeWebAPIFetcher.swift +0 -780
- package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexOAuthCredentials.swift +0 -147
- package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexOAuthUsageFetcher.swift +0 -280
- package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexTokenRefresher.swift +0 -100
- package/Sources/RunicCore/Providers/Codex/CodexProviderDescriptor.swift +0 -243
- package/Sources/RunicCore/Providers/Codex/CodexStatusProbe.swift +0 -125
- package/Sources/RunicCore/Providers/Codex/CodexUsageDataSource.swift +0 -24
- package/Sources/RunicCore/Providers/Codex/CodexWebDashboardStrategy.swift +0 -181
- package/Sources/RunicCore/Providers/Cohere/CohereProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/Cohere/CohereUsageFetcher.swift +0 -85
- package/Sources/RunicCore/Providers/Copilot/CopilotDeviceFlow.swift +0 -123
- package/Sources/RunicCore/Providers/Copilot/CopilotGitHubCLITokenReader.swift +0 -114
- package/Sources/RunicCore/Providers/Copilot/CopilotProviderDescriptor.swift +0 -100
- package/Sources/RunicCore/Providers/Copilot/CopilotUsageFetcher.swift +0 -291
- package/Sources/RunicCore/Providers/Copilot/CopilotVSCodeTokenReader.swift +0 -386
- package/Sources/RunicCore/Providers/Cursor/CursorProviderDescriptor.swift +0 -65
- package/Sources/RunicCore/Providers/Cursor/CursorStatusProbe.swift +0 -595
- package/Sources/RunicCore/Providers/DeepSeek/DeepSeekProviderDescriptor.swift +0 -85
- package/Sources/RunicCore/Providers/DeepSeek/DeepSeekUsageFetcher.swift +0 -108
- package/Sources/RunicCore/Providers/Factory/FactoryLocalStorageImporter.swift +0 -398
- package/Sources/RunicCore/Providers/Factory/FactoryProviderDescriptor.swift +0 -65
- package/Sources/RunicCore/Providers/Factory/FactoryStatusProbe.swift +0 -1276
- package/Sources/RunicCore/Providers/Fireworks/FireworksProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/Fireworks/FireworksUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/Gemini/GeminiProviderDescriptor.swift +0 -65
- package/Sources/RunicCore/Providers/Gemini/GeminiStatusProbe.swift +0 -836
- package/Sources/RunicCore/Providers/Groq/GroqProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/Groq/GroqUsageFetcher.swift +0 -71
- package/Sources/RunicCore/Providers/Kimi/KimiProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/Kimi/KimiUsageFetcher.swift +0 -77
- package/Sources/RunicCore/Providers/MiniMax/MiniMaxProviderDescriptor.swift +0 -92
- package/Sources/RunicCore/Providers/MiniMax/MiniMaxSettingsReader.swift +0 -54
- package/Sources/RunicCore/Providers/MiniMax/MiniMaxUsageFetcher.swift +0 -168
- package/Sources/RunicCore/Providers/MiniMax/MiniMaxWebUsageFetcher.swift +0 -911
- package/Sources/RunicCore/Providers/Mistral/MistralProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/Mistral/MistralUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/OpenRouter/OpenRouterProviderDescriptor.swift +0 -87
- package/Sources/RunicCore/Providers/OpenRouter/OpenRouterUsageFetcher.swift +0 -203
- package/Sources/RunicCore/Providers/Perplexity/PerplexityProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/Perplexity/PerplexityUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/ProviderBranding.swift +0 -25
- package/Sources/RunicCore/Providers/ProviderCLIConfig.swift +0 -17
- package/Sources/RunicCore/Providers/ProviderDescriptor.swift +0 -129
- package/Sources/RunicCore/Providers/ProviderFetchPlan.swift +0 -263
- package/Sources/RunicCore/Providers/ProviderSettingsSnapshot.swift +0 -98
- package/Sources/RunicCore/Providers/ProviderTokenResolver.swift +0 -501
- package/Sources/RunicCore/Providers/ProviderVersionDetector.swift +0 -68
- package/Sources/RunicCore/Providers/Providers.swift +0 -184
- package/Sources/RunicCore/Providers/Qwen/QwenProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/Qwen/QwenSettingsReader.swift +0 -30
- package/Sources/RunicCore/Providers/Qwen/QwenUsageStats.swift +0 -315
- package/Sources/RunicCore/Providers/SambaNova/SambaNovaProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/SambaNova/SambaNovaUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/Together/TogetherProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/Together/TogetherUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/VertexAI/VertexAIProviderDescriptor.swift +0 -123
- package/Sources/RunicCore/Providers/VertexAI/VertexAISettingsReader.swift +0 -48
- package/Sources/RunicCore/Providers/VertexAI/VertexAIUsageFetcher.swift +0 -144
- package/Sources/RunicCore/Providers/XAI/XAIProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/XAI/XAIUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/Zai/ZaiProviderDescriptor.swift +0 -72
- package/Sources/RunicCore/Providers/Zai/ZaiSettingsReader.swift +0 -41
- package/Sources/RunicCore/Providers/Zai/ZaiUsageStats.swift +0 -718
- package/Sources/RunicCore/Sync/BackgroundSyncManager.swift +0 -385
- package/Sources/RunicCore/Sync/SyncConflictResolver.swift +0 -310
- package/Sources/RunicCore/Sync/SyncProtocol.swift +0 -288
- package/Sources/RunicCore/Sync/SyncRecord.swift +0 -405
- package/Sources/RunicCore/Sync/SyncUsageExample.swift +0 -294
- package/Sources/RunicCore/Sync/TeamSyncRecords.swift +0 -775
- package/Sources/RunicCore/Sync/iCloudSyncEngine.swift +0 -333
- package/Sources/RunicCore/Team/TeamModels.swift +0 -583
- package/Sources/RunicCore/Team/TeamShowbackExporter.swift +0 -495
- package/Sources/RunicCore/Team/TeamStore.swift +0 -792
- package/Sources/RunicCore/TextParsing.swift +0 -55
- package/Sources/RunicCore/UsageFetcher.swift +0 -694
- package/Sources/RunicCore/UsageFormatter.swift +0 -410
- package/Sources/RunicCore/UsageLedger/ClaudeUsageLogSource.swift +0 -427
- package/Sources/RunicCore/UsageLedger/CodexUsageLogSource.swift +0 -494
- package/Sources/RunicCore/UsageLedger/LedgerCache.swift +0 -158
- package/Sources/RunicCore/UsageLedger/OTelGenAILedgerAdapter.swift +0 -550
- package/Sources/RunicCore/UsageLedger/UsageLedger.swift +0 -29
- package/Sources/RunicCore/UsageLedger/UsageLedgerAggregator.swift +0 -660
- package/Sources/RunicCore/UsageLedger/UsageLedgerInsightsAdvisor.swift +0 -209
- package/Sources/RunicCore/UsageLedger/UsageLedgerModels.swift +0 -417
- package/Sources/RunicCore/UsageLedger/UsageLedgerProjectIdentity.swift +0 -245
- package/Sources/RunicCore/UsagePace.swift +0 -81
- package/Sources/RunicCore/Vendored/CostUsage/CostUsageCache.swift +0 -73
- package/Sources/RunicCore/Vendored/CostUsage/CostUsageJsonl.swift +0 -74
- package/Sources/RunicCore/Vendored/CostUsage/CostUsagePricing.swift +0 -208
- package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner+Claude.swift +0 -455
- package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner+Timestamp.swift +0 -132
- package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner.swift +0 -589
- package/Sources/RunicCore/WidgetSnapshot.swift +0 -183
- package/Sources/RunicMacroSupport/ProviderRegistrationMacros.swift +0 -14
- package/Sources/RunicMacros/ProviderRegistrationMacros.swift +0 -216
- package/Sources/RunicWidget/RunicWidgetBundle.swift +0 -79
- package/Sources/RunicWidget/RunicWidgetProvider.swift +0 -283
- package/Sources/RunicWidget/RunicWidgetViews.swift +0 -680
- package/Tests/RunicTests/AntigravityStatusProbeTests.swift +0 -50
- package/Tests/RunicTests/AppDelegateTests.swift +0 -43
- package/Tests/RunicTests/BrowserCookieOrderLabelTests.swift +0 -22
- package/Tests/RunicTests/CLIArgumentParsingTests.swift +0 -70
- package/Tests/RunicTests/CLICostTests.swift +0 -65
- package/Tests/RunicTests/CLIProviderSelectionTests.swift +0 -22
- package/Tests/RunicTests/CLISnapshotTests.swift +0 -72
- package/Tests/RunicTests/CLIWebFallbackTests.swift +0 -58
- package/Tests/RunicTests/ClaudeOAuthTests.swift +0 -164
- package/Tests/RunicTests/ClaudeResilienceTests.swift +0 -30
- package/Tests/RunicTests/ClaudeUsageTests.swift +0 -370
- package/Tests/RunicTests/CodexOAuthTests.swift +0 -122
- package/Tests/RunicTests/CodexUsageLogSourceTests.swift +0 -82
- package/Tests/RunicTests/CopilotTokenResolverTests.swift +0 -75
- package/Tests/RunicTests/CopilotVSCodeTokenReaderTests.swift +0 -75
- package/Tests/RunicTests/CostUsageDecodingTests.swift +0 -394
- package/Tests/RunicTests/CostUsagePricingTests.swift +0 -50
- package/Tests/RunicTests/CostUsageScannerTests.swift +0 -700
- package/Tests/RunicTests/CursorStatusProbeTests.swift +0 -323
- package/Tests/RunicTests/FactoryStatusProbeTests.swift +0 -69
- package/Tests/RunicTests/GeminiAPITestHelpers.swift +0 -94
- package/Tests/RunicTests/GeminiLoginAlertTests.swift +0 -28
- package/Tests/RunicTests/GeminiStatusProbeAPITests.swift +0 -283
- package/Tests/RunicTests/GeminiStatusProbePlanTests.swift +0 -279
- package/Tests/RunicTests/GeminiStatusProbeTests.swift +0 -233
- package/Tests/RunicTests/GeminiTestEnvironment.swift +0 -87
- package/Tests/RunicTests/GoogleWorkspaceStatusTests.swift +0 -73
- package/Tests/RunicTests/InstallOriginTests.swift +0 -18
- package/Tests/RunicTests/KeyboardShortcutsBundleTests.swift +0 -9
- package/Tests/RunicTests/LiveAccountTests.swift +0 -24
- package/Tests/RunicTests/LoadingPatternTests.swift +0 -35
- package/Tests/RunicTests/MenuCardModelTests.swift +0 -545
- package/Tests/RunicTests/MiniMaxCookieHeaderStoreTestSupport.swift +0 -8
- package/Tests/RunicTests/MiniMaxGroupIDStoreTestSupport.swift +0 -8
- package/Tests/RunicTests/MiniMaxParsingTests.swift +0 -68
- package/Tests/RunicTests/MiniMaxTokenStoreTestSupport.swift +0 -8
- package/Tests/RunicTests/OTelGenAILedgerAdapterTests.swift +0 -112
- package/Tests/RunicTests/OpenAIDashboardBrowserCookieImporterTests.swift +0 -17
- package/Tests/RunicTests/OpenAIDashboardFetcherCreditsWaitTests.swift +0 -75
- package/Tests/RunicTests/OpenAIDashboardOffscreenHostTests.swift +0 -27
- package/Tests/RunicTests/OpenAIDashboardParserTests.swift +0 -134
- package/Tests/RunicTests/OpenAIWebAccountSwitchTests.swift +0 -53
- package/Tests/RunicTests/OpenRouterTokenStoreTestSupport.swift +0 -92
- package/Tests/RunicTests/PathBuilderTests.swift +0 -237
- package/Tests/RunicTests/ProviderFetchPipelineTests.swift +0 -160
- package/Tests/RunicTests/ProviderIconResourcesTests.swift +0 -38
- package/Tests/RunicTests/ProviderMetadataStatusLinkTests.swift +0 -16
- package/Tests/RunicTests/ProviderRegistryTests.swift +0 -29
- package/Tests/RunicTests/ProviderSettingsDescriptorTests.swift +0 -202
- package/Tests/RunicTests/ProviderToggleStoreTests.swift +0 -51
- package/Tests/RunicTests/RunicTests.swift +0 -120
- package/Tests/RunicTests/SessionQuotaNotificationLogicTests.swift +0 -36
- package/Tests/RunicTests/SettingsStoreTests.swift +0 -161
- package/Tests/RunicTests/StatusItemAnimationTests.swift +0 -49
- package/Tests/RunicTests/StatusMenuTests.swift +0 -434
- package/Tests/RunicTests/StatusProbeTests.swift +0 -377
- package/Tests/RunicTests/SubprocessRunnerTests.swift +0 -20
- package/Tests/RunicTests/SubscriptionDetectionTests.swift +0 -65
- package/Tests/RunicTests/TTYCommandRunnerTests.swift +0 -148
- package/Tests/RunicTests/TTYIntegrationTests.swift +0 -41
- package/Tests/RunicTests/TeamShowbackExporterTests.swift +0 -159
- package/Tests/RunicTests/TextParsingTests.swift +0 -12
- package/Tests/RunicTests/UsageFormatterTests.swift +0 -112
- package/Tests/RunicTests/UsageLedgerAnomalyDetectionTests.swift +0 -172
- package/Tests/RunicTests/UsageLedgerForecastTests.swift +0 -213
- package/Tests/RunicTests/UsageLedgerInsightsAdvisorTests.swift +0 -83
- package/Tests/RunicTests/UsageLedgerProjectNameTests.swift +0 -170
- package/Tests/RunicTests/UsagePaceTests.swift +0 -77
- package/Tests/RunicTests/UsagePaceTextTests.swift +0 -109
- package/Tests/RunicTests/UsagePolicyEngineTests.swift +0 -91
- package/Tests/RunicTests/WidgetSnapshotTests.swift +0 -45
- package/Tests/RunicTests/ZaiProviderTests.swift +0 -61
- package/Tests/RunicTests/ZaiTokenStoreTestSupport.swift +0 -6
- package/TestsLinux/PlatformGatingTests.swift +0 -46
- package/appcast.xml +0 -144
- package/assets/logo-concept-stack.svg +0 -24
- package/assets/logo-minimal-bars.svg +0 -15
- package/assets/logo.svg +0 -20
- package/assets/logo2.svg +0 -43
- package/bin/docs-list +0 -5
- package/build-and-run.sh +0 -369
- package/docs/.nojekyll +0 -1
- package/docs/CNAME +0 -1
- package/docs/antigravity.md +0 -75
- package/docs/architecture.md +0 -32
- package/docs/claude.md +0 -93
- package/docs/cli-commands/integration_guide.md +0 -371
- package/docs/cli-commands/quick_reference.md +0 -362
- package/docs/cli-commands/readme.md +0 -361
- package/docs/cli.md +0 -156
- package/docs/cloudkit_sync_guide.md +0 -495
- package/docs/codebase_review.md +0 -288
- package/docs/codex-oauth.md +0 -635
- package/docs/codex.md +0 -104
- package/docs/codexbar.png +0 -0
- package/docs/copilot.md +0 -44
- package/docs/cursor.md +0 -46
- package/docs/design/designcomparisonchart.md +0 -510
- package/docs/design/implementationguide.md +0 -792
- package/docs/design/menubaricondesignconcepts.md +0 -796
- package/docs/design/mockups/hybridiconconcept.svg +0 -62
- package/docs/design/mockups/infinityiconconcept.svg +0 -41
- package/docs/design/mockups/infinityiconstates.svg +0 -129
- package/docs/design/mockups/wavelogorefined.svg +0 -48
- package/docs/design/quick_summary.md +0 -426
- package/docs/design/readme.md +0 -478
- package/docs/design/sizespecifications.md +0 -575
- package/docs/design-system.md +0 -836
- package/docs/factory.md +0 -103
- package/docs/gemini.md +0 -73
- package/docs/icon.md +0 -37
- package/docs/icon.png +0 -0
- package/docs/index.html +0 -175
- package/docs/keychain_fix.md +0 -274
- package/docs/minimax.md +0 -71
- package/docs/packaging.md +0 -25
- package/docs/progress-bar-improvements.md +0 -240
- package/docs/progress-bar-quick-reference.md +0 -283
- package/docs/progress-bar-technical-details.md +0 -432
- package/docs/progress-bar-visual-test.swift +0 -375
- package/docs/provider.md +0 -202
- package/docs/providers.md +0 -86
- package/docs/refactor/macros.md +0 -35
- package/docs/refresh-loop.md +0 -22
- package/docs/releasing-homebrew.md +0 -35
- package/docs/releasing.md +0 -121
- package/docs/research/concrete_todo_2026-02-22.md +0 -47
- package/docs/research/core-feature-research.md +0 -248
- package/docs/research/feature_uiux_roadmap_2026-02-22.md +0 -202
- package/docs/research/parity_matrix.md +0 -49
- package/docs/research/provider_expansion_candidates_2026-02-22.md +0 -80
- package/docs/research/provider_model_token_project_matrix_2026-02-23.md +0 -46
- package/docs/research/release_gate_checklist.md +0 -57
- package/docs/site.css +0 -505
- package/docs/sparkle.md +0 -28
- package/docs/status.md +0 -28
- package/docs/sync/implementation.md +0 -393
- package/docs/sync/readme.md +0 -317
- package/docs/sync_files_summary.md +0 -391
- package/docs/sync_quick_reference.md +0 -225
- package/docs/todo.md +0 -11
- package/docs/ui.md +0 -29
- package/docs/web-integration.md +0 -9
- package/docs/widgets.md +0 -85
- package/docs/workflows/error-handling-improvements.md +0 -434
- package/docs/workflows/folder_structure.md +0 -299
- package/docs/workflows/loading_states.md +0 -446
- package/docs/workflows/loading_states_examples.md +0 -565
- package/docs/workflows/loading_states_flow.md +0 -430
- package/docs/workflows/performance_optimizations.md +0 -457
- package/docs/workflows/phase1-cli-testing-report.md +0 -313
- package/docs/workflows/quick_reference.md +0 -228
- package/docs/workflows/readme.md +0 -59
- package/docs/workflows/recent_improvements.md +0 -275
- package/docs/workflows/sync_enablement_summary.md +0 -400
- package/docs/zai.md +0 -43
- package/runic.png +0 -0
- package/version.env +0 -2
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
# Runic Feature And UI/UX Roadmap (2026-02-22)
|
|
2
|
-
|
|
3
|
-
Branch: `feat/research-uiux-core-next`
|
|
4
|
-
|
|
5
|
-
## Objective
|
|
6
|
-
|
|
7
|
-
Identify high-impact features and UI/UX upgrades for Runic's macOS-first product and cross-platform roadmap, using:
|
|
8
|
-
|
|
9
|
-
- Current codebase direction (`RunicCore` + menu insights + budgets/forecast/anomaly work)
|
|
10
|
-
- External product signals (GitHub OSS LLM observability/gateway stacks)
|
|
11
|
-
- Research signals (forecasting and anomaly detection papers)
|
|
12
|
-
|
|
13
|
-
## External Signals (Primary Sources)
|
|
14
|
-
|
|
15
|
-
1. Langfuse: LLM observability, prompt management, evaluations, datasets, and OTel integrations.
|
|
16
|
-
- https://github.com/langfuse/langfuse
|
|
17
|
-
2. Helicone: AI gateway + observability, metrics (including cost), prompt/version workflows, and 100+ model access.
|
|
18
|
-
- https://github.com/Helicone/helicone
|
|
19
|
-
- https://github.com/Helicone/ai-gateway
|
|
20
|
-
3. LiteLLM features: spend tracking by model/key/user/team and budget/rate-limit controls.
|
|
21
|
-
- https://www.litellm.ai/features
|
|
22
|
-
4. Portkey gateway: reliability primitives (fallbacks/retries/load balancing), cost management (smart caching, usage analytics, provider optimization).
|
|
23
|
-
- https://github.com/Portkey-AI/gateway
|
|
24
|
-
5. OpenLIT: OTel-native observability with cost tracking for custom/fine-tuned models.
|
|
25
|
-
- https://github.com/openlit/openlit
|
|
26
|
-
6. OpenTelemetry GenAI/OpenAI semantic conventions (`Status: Development`; migration opt-in flags).
|
|
27
|
-
- https://opentelemetry.io/docs/specs/semconv/gen-ai/openai/
|
|
28
|
-
7. Chronos (2024): pretrained probabilistic forecasting on 42 datasets; strong zero-shot behavior.
|
|
29
|
-
- https://arxiv.org/abs/2403.07815
|
|
30
|
-
- https://github.com/amazon-science/chronos-forecasting
|
|
31
|
-
8. TimesFM (ICML 2024): decoder-only time-series foundation model with zero-shot forecasting focus.
|
|
32
|
-
- https://arxiv.org/abs/2310.10688
|
|
33
|
-
- https://github.com/google-research/timesfm
|
|
34
|
-
9. TimeEval: anomaly detection benchmarking toolkit with 700+ datasets.
|
|
35
|
-
- https://github.com/TimeEval/TimeEval
|
|
36
|
-
10. SigLLM: two anomaly pipelines (prompt-based and forecast-residual detector).
|
|
37
|
-
- https://github.com/sintel-dev/sigllm
|
|
38
|
-
11. Apple VoiceOver evaluation guidance for complete task coverage and accurate labels, including chart accessibility guidance.
|
|
39
|
-
- https://developer-mdn.apple.com/help/app-store-connect/manage-app-accessibility/voiceover-evaluation-criteria
|
|
40
|
-
|
|
41
|
-
## What This Means For Runic (Inference)
|
|
42
|
-
|
|
43
|
-
Inference from the above sources:
|
|
44
|
-
|
|
45
|
-
- The market baseline is moving from "usage display" to "control plane": budgets, policy, routing, reliability, and explainability.
|
|
46
|
-
- Forecasting is shifting from single deterministic projections to probabilistic forecasts with confidence bands.
|
|
47
|
-
- Anomaly systems are becoming multi-signal (tokens, spend, request patterns) and benchmarked/validated.
|
|
48
|
-
- UI quality expectation is now "operator-ready": fast triage, actionable next-step copy, and reliable accessibility.
|
|
49
|
-
|
|
50
|
-
## Priority Feature Tracks
|
|
51
|
-
|
|
52
|
-
### P0: Cost Control Center (Operator-Grade)
|
|
53
|
-
|
|
54
|
-
Add a policy engine that can do more than alert:
|
|
55
|
-
|
|
56
|
-
- Budget scopes: provider, model, project, team, user
|
|
57
|
-
- Enforcement modes: warn, soft-limit, hard-stop, cooldown
|
|
58
|
-
- Automatic actions:
|
|
59
|
-
- downgrade model recommendation
|
|
60
|
-
- route to cheaper provider/model
|
|
61
|
-
- temporary key throttling
|
|
62
|
-
- Audit log for every enforcement decision
|
|
63
|
-
|
|
64
|
-
Why:
|
|
65
|
-
|
|
66
|
-
- Aligns with LiteLLM/Portkey/OpenMeter direction.
|
|
67
|
-
- Turns Runic from observer to controller.
|
|
68
|
-
|
|
69
|
-
### P0: Probabilistic Forecasts (Not Single-Point)
|
|
70
|
-
|
|
71
|
-
Upgrade forecast insight lines to include confidence:
|
|
72
|
-
|
|
73
|
-
- Show `p50`, `p80`, `p95` month-end forecast
|
|
74
|
-
- Visualize confidence band in menu detail popover/card
|
|
75
|
-
- Add "risk of budget breach by date" as probability
|
|
76
|
-
|
|
77
|
-
Why:
|
|
78
|
-
|
|
79
|
-
- Chronos/TimesFM emphasize robust zero-shot forecasting; practical value is uncertainty-aware decisions.
|
|
80
|
-
|
|
81
|
-
### P0: Explainable Anomaly Engine v2
|
|
82
|
-
|
|
83
|
-
Current anomaly support exists; extend it:
|
|
84
|
-
|
|
85
|
-
- Detect across tokens, spend, request count, cost-per-1k, burstiness
|
|
86
|
-
- Add root-cause hints:
|
|
87
|
-
- top model delta
|
|
88
|
-
- top project delta
|
|
89
|
-
- top provider shift
|
|
90
|
-
- Severity with rationale:
|
|
91
|
-
- "High due to +182% tokens and +74% cost vs 7d baseline"
|
|
92
|
-
|
|
93
|
-
Why:
|
|
94
|
-
|
|
95
|
-
- Improves trust and operator response speed.
|
|
96
|
-
- Matches SigLLM/TimeEval-style evaluation mindset.
|
|
97
|
-
|
|
98
|
-
### P1: Unified Telemetry Import (OTel GenAI)
|
|
99
|
-
|
|
100
|
-
Add ingest path for OTel GenAI events/spans:
|
|
101
|
-
|
|
102
|
-
- Parse selected semantic fields (model, operation, token usage, errors)
|
|
103
|
-
- Normalize into Runic ledger schema
|
|
104
|
-
- Keep compatibility flag around OTel semconv instability (`gen_ai_latest_experimental` migration concerns)
|
|
105
|
-
|
|
106
|
-
Why:
|
|
107
|
-
|
|
108
|
-
- Vendor-neutral ingest path.
|
|
109
|
-
- Enables cross-tool interoperability (Langfuse/OpenLIT ecosystems).
|
|
110
|
-
|
|
111
|
-
### P1: Team FinOps Layer
|
|
112
|
-
|
|
113
|
-
Add internal chargeback/showback views:
|
|
114
|
-
|
|
115
|
-
- Team/org/project rollups
|
|
116
|
-
- Cost allocation percentages
|
|
117
|
-
- Shared budget pools with split ownership
|
|
118
|
-
- Monthly export (CSV/JSON)
|
|
119
|
-
|
|
120
|
-
Why:
|
|
121
|
-
|
|
122
|
-
- Natural extension of existing provider/project logic and budget store.
|
|
123
|
-
- Strong fit for organizations with multi-provider AI spend.
|
|
124
|
-
|
|
125
|
-
### P1: Cross-Platform Feature Parity Tracker
|
|
126
|
-
|
|
127
|
-
For Windows/Linux/web direction, define explicit parity matrix:
|
|
128
|
-
|
|
129
|
-
- Feature rows: menu insights, alerting, budgets, anomaly, forecast, keychain/secret handling
|
|
130
|
-
- Platform columns: macOS, Windows, Linux, web
|
|
131
|
-
- Status: done / partial / blocked (with owner)
|
|
132
|
-
|
|
133
|
-
Why:
|
|
134
|
-
|
|
135
|
-
- Reduces roadmap drift.
|
|
136
|
-
- Makes release quality measurable.
|
|
137
|
-
|
|
138
|
-
## UI/UX Upgrades (Focused, Non-Boilerplate)
|
|
139
|
-
|
|
140
|
-
### 1. Three-Layer Insight Density
|
|
141
|
-
|
|
142
|
-
Use progressive disclosure consistently:
|
|
143
|
-
|
|
144
|
-
- Glance: 1-line health + spend trend arrow + risk chip
|
|
145
|
-
- Analyst: model/project deltas + anomaly and forecast confidence
|
|
146
|
-
- Operator: policy state, throttles, budget enforcement history
|
|
147
|
-
|
|
148
|
-
### 2. Action-First Error Copy
|
|
149
|
-
|
|
150
|
-
Every failure line should provide:
|
|
151
|
-
|
|
152
|
-
- what failed
|
|
153
|
-
- likely cause
|
|
154
|
-
- immediate recovery action
|
|
155
|
-
- copyable diagnostic key
|
|
156
|
-
|
|
157
|
-
### 3. Contextual Sparkline + Delta Chips
|
|
158
|
-
|
|
159
|
-
For each provider card:
|
|
160
|
-
|
|
161
|
-
- 7-day sparkline for tokens and spend
|
|
162
|
-
- chips: `+/- % vs 7d avg`, `burn/hr`, `budget risk`
|
|
163
|
-
|
|
164
|
-
### 4. Accessibility Hardening (Ship Quality)
|
|
165
|
-
|
|
166
|
-
Explicitly verify:
|
|
167
|
-
|
|
168
|
-
- all actionable controls have concise accessibility labels
|
|
169
|
-
- common user tasks are possible using only VoiceOver
|
|
170
|
-
- data visualizations include text alternatives
|
|
171
|
-
|
|
172
|
-
### 5. Notification Hygiene
|
|
173
|
-
|
|
174
|
-
- Suppress redundant alerts during known cooldown windows
|
|
175
|
-
- Group related anomalies into one actionable notification
|
|
176
|
-
- Include one-click route to relevant menu section
|
|
177
|
-
|
|
178
|
-
## Suggested Implementation Sequence
|
|
179
|
-
|
|
180
|
-
1. Forecast confidence bands (low-medium complexity, high user value)
|
|
181
|
-
2. Anomaly explainability v2
|
|
182
|
-
3. Cost Control Center policy engine (warn + soft-limit first)
|
|
183
|
-
4. OTel import beta (feature flag)
|
|
184
|
-
5. Team FinOps rollups and exports
|
|
185
|
-
6. Cross-platform parity gating in CI/docs
|
|
186
|
-
|
|
187
|
-
## Concrete Next Coding Tasks
|
|
188
|
-
|
|
189
|
-
1. Extend `UsageLedgerSpendForecast` to carry quantiles and confidence metadata.
|
|
190
|
-
2. Add `UsageLedgerAnomalyExplanation` model and formatter surface for menu cards.
|
|
191
|
-
3. Introduce `PolicyDecision` and `PolicyEngine` in `RunicCore` (platform-agnostic).
|
|
192
|
-
4. Add UI chips and operator detail row in `MenuCardView` and menu helpers.
|
|
193
|
-
5. Add tests:
|
|
194
|
-
- forecast quantile formatting
|
|
195
|
-
- anomaly explanation precedence
|
|
196
|
-
- policy decision routing logic
|
|
197
|
-
6. Add `docs/research/parity_matrix.md` template for platform rollout governance.
|
|
198
|
-
|
|
199
|
-
## Notes
|
|
200
|
-
|
|
201
|
-
- This document intentionally mixes external evidence + implementation inference.
|
|
202
|
-
- External evidence is linked above; internal recommendations are adapted to the current Runic architecture and recent branch history.
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# Cross-Platform Parity Matrix
|
|
2
|
-
|
|
3
|
-
Last updated: 2026-02-23
|
|
4
|
-
Owner: Runic core team
|
|
5
|
-
|
|
6
|
-
## Status Legend
|
|
7
|
-
|
|
8
|
-
- `done`: implemented and validated
|
|
9
|
-
- `partial`: available with notable gaps
|
|
10
|
-
- `planned`: roadmap item, not implemented yet
|
|
11
|
-
- `blocked`: cannot proceed until dependency/platform issue is resolved
|
|
12
|
-
|
|
13
|
-
## Product Surface Parity
|
|
14
|
-
|
|
15
|
-
| Capability | macOS | Windows | Linux | Web |
|
|
16
|
-
|---|---|---|---|---|
|
|
17
|
-
| Provider usage fetch (Codex/Claude/Gemini/Copilot/etc.) | done | planned | planned | planned |
|
|
18
|
-
| Usage ledger aggregation (daily/session/models/projects) | done | planned | planned | planned |
|
|
19
|
-
| Forecast confidence bands (`p50/p80/p95`) | done | planned | planned | planned |
|
|
20
|
-
| Anomaly explainability (severity + rationale) | done | planned | planned | planned |
|
|
21
|
-
| Policy engine (warn/soft-limit/hard-stop core model) | done | planned | planned | planned |
|
|
22
|
-
| Team showback/chargeback export model (JSON/CSV) | done | planned | planned | planned |
|
|
23
|
-
| OTel GenAI ingestion adapter (feature-flagged) | done | planned | planned | planned |
|
|
24
|
-
| Menu bar status icon + animated refresh states | done | blocked | blocked | blocked |
|
|
25
|
-
| Provider settings pane + diagnostics | done | planned | planned | planned |
|
|
26
|
-
| Calendar history view (provider activity) | done | planned | planned | planned |
|
|
27
|
-
| Secure secret storage (API tokens) | partial | planned | planned | planned |
|
|
28
|
-
| CLI usage/cost/insights | done | planned | planned | planned |
|
|
29
|
-
| Widget extension | done | blocked | blocked | blocked |
|
|
30
|
-
|
|
31
|
-
## Provider-Detail Granularity Parity
|
|
32
|
-
|
|
33
|
-
| Provider | Model detail | Token detail | Project attribution | Notes |
|
|
34
|
-
|---|---|---|---|---|
|
|
35
|
-
| Claude | done | done | done | Local ledger-backed |
|
|
36
|
-
| Codex | done | done | done | Local ledger-backed |
|
|
37
|
-
| Copilot | partial | partial | planned | Quota-category windows, no full project-level attribution |
|
|
38
|
-
| Gemini | partial | partial | planned | Model quota windows, no full project-level attribution |
|
|
39
|
-
| Antigravity | partial | partial | planned | Model quota windows, no full project-level attribution |
|
|
40
|
-
| Cursor | partial | partial | planned | Depends on provider data exposure |
|
|
41
|
-
| API providers (OpenRouter/Azure/Bedrock/etc.) | partial | partial | planned | Varies by provider API payload |
|
|
42
|
-
|
|
43
|
-
## Gate To Mark A Platform As `done`
|
|
44
|
-
|
|
45
|
-
1. Build and test pipeline is green on that platform for core + CLI.
|
|
46
|
-
2. Usage ledger summaries and provider identity isolation are validated.
|
|
47
|
-
3. Secrets are stored using platform-appropriate secure storage.
|
|
48
|
-
4. Forecast/anomaly/policy insights pass deterministic snapshot tests.
|
|
49
|
-
5. Release gate checklist is fully passed for that platform.
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
# Provider Expansion Candidates (2026-02-22)
|
|
2
|
-
|
|
3
|
-
## Scope
|
|
4
|
-
|
|
5
|
-
Runic currently tracks: codex, claude, cursor, factory, gemini, antigravity, copilot, zai, minimax, openrouter, groq.
|
|
6
|
-
|
|
7
|
-
This note identifies additional providers or higher-fidelity data paths with primary-source evidence and implementation fit.
|
|
8
|
-
|
|
9
|
-
## High-Priority Additions
|
|
10
|
-
|
|
11
|
-
### 1) Perplexity API
|
|
12
|
-
- Why: Official OpenAI-compatible chat/completions endpoint with explicit `usage` object in response.
|
|
13
|
-
- Integration path:
|
|
14
|
-
- Auth: API key (Keychain + env fallback)
|
|
15
|
-
- Data: response `usage.prompt_tokens`, `usage.completion_tokens`, `usage.total_tokens`
|
|
16
|
-
- UX: token usage now; spend estimate via local pricing table until billing endpoint is available
|
|
17
|
-
- Source:
|
|
18
|
-
- https://docs.perplexity.ai/api-reference/chat-completions-post
|
|
19
|
-
|
|
20
|
-
### 2) Fireworks AI
|
|
21
|
-
- Why: Chat completions API documents a detailed `usage` object, including cached token fields.
|
|
22
|
-
- Integration path:
|
|
23
|
-
- Auth: API key
|
|
24
|
-
- Data: `usage.prompt_tokens`, `completion_tokens`, `total_tokens`, cached token details
|
|
25
|
-
- UX: supports richer efficiency metrics (cache hit behavior)
|
|
26
|
-
- Source:
|
|
27
|
-
- https://docs.fireworks.ai/api-reference/post-chatcompletions
|
|
28
|
-
|
|
29
|
-
### 3) DeepSeek API
|
|
30
|
-
- Why: API reference includes standard `usage` token fields on chat completion responses.
|
|
31
|
-
- Integration path:
|
|
32
|
-
- Auth: API key
|
|
33
|
-
- Data: prompt/completion/total token counters
|
|
34
|
-
- UX: direct compatibility with existing token-based insight pipeline
|
|
35
|
-
- Source:
|
|
36
|
-
- https://api-docs.deepseek.com/api/create-chat-completion
|
|
37
|
-
|
|
38
|
-
### 4) Anthropic Org Cost Path (for Claude)
|
|
39
|
-
- Why: Official Admin Usage & Cost API can provide authoritative org-level usage/cost.
|
|
40
|
-
- Integration path:
|
|
41
|
-
- Keep existing Claude CLI/Web probes
|
|
42
|
-
- Add optional enterprise path for org admins via Anthropic Admin API
|
|
43
|
-
- Source:
|
|
44
|
-
- https://docs.anthropic.com/en/api/usage-cost-api
|
|
45
|
-
|
|
46
|
-
## Existing Provider Upgrade Opportunity
|
|
47
|
-
|
|
48
|
-
### OpenRouter (already in Runic): credits + limits enhancement
|
|
49
|
-
- Why: Official endpoint provides credits/limits model that can improve remaining/budget accuracy.
|
|
50
|
-
- Integration path:
|
|
51
|
-
- Enhance current OpenRouter provider with direct credits fetch and tighter budget telemetry
|
|
52
|
-
- Source:
|
|
53
|
-
- https://openrouter.ai/docs/api-reference/limits-and-credits/get-credits
|
|
54
|
-
|
|
55
|
-
## Medium-Priority (Needs Validation)
|
|
56
|
-
|
|
57
|
-
### Mistral API
|
|
58
|
-
- Known signal: official docs expose enterprise-focused limits/rate-limits pages.
|
|
59
|
-
- Gap: we still need a stable public usage/cost endpoint for robust quota accounting.
|
|
60
|
-
- Source:
|
|
61
|
-
- https://docs.mistral.ai/deployment/laplateforme/tier/
|
|
62
|
-
|
|
63
|
-
## Security and Performance Guardrails
|
|
64
|
-
|
|
65
|
-
- Security:
|
|
66
|
-
- API keys only in Keychain/env; never persisted in plaintext logs
|
|
67
|
-
- Calendar/history views must use aggregated local data only (no raw prompt payloads)
|
|
68
|
-
- Diagnostics copy paths must redact secrets
|
|
69
|
-
- Performance:
|
|
70
|
-
- On-demand month fetches only (no always-on scans)
|
|
71
|
-
- TTL cache for month snapshots
|
|
72
|
-
- bounded scan windows (e.g., 90–180 days max)
|
|
73
|
-
|
|
74
|
-
## Suggested Execution Order
|
|
75
|
-
|
|
76
|
-
1. Perplexity
|
|
77
|
-
2. Fireworks
|
|
78
|
-
3. DeepSeek
|
|
79
|
-
4. OpenRouter credits enhancement
|
|
80
|
-
5. Anthropic Admin usage-cost optional path
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# provider model/token/project coverage matrix (2026-02-23)
|
|
2
|
-
|
|
3
|
-
## question addressed
|
|
4
|
-
|
|
5
|
-
Can Runic show per-model usage, token counts, and project-level attribution for providers like Copilot, OpenRouter, Azure OpenAI, and AWS Bedrock?
|
|
6
|
-
|
|
7
|
-
## capability summary
|
|
8
|
-
|
|
9
|
-
| provider | model usage | token metrics | project attribution | notes |
|
|
10
|
-
| --- | --- | --- | --- | --- |
|
|
11
|
-
| copilot | yes | no (not exposed in official usage metrics) | no (no explicit repo/project field in metrics schema) | org/admin usage metrics can still show model mix |
|
|
12
|
-
| openrouter | yes | yes | partial (needs caller-side project tagging) | usage/cost endpoints expose model and token/cost data |
|
|
13
|
-
| azure openai | yes | yes | yes (resource/project scope + custom telemetry) | best source is Azure Monitor metrics + project resources |
|
|
14
|
-
| aws bedrock | yes | yes | partial (via request metadata + logs) | CloudWatch tokens by model; project mapping requires metadata/log strategy |
|
|
15
|
-
|
|
16
|
-
## current Runic status
|
|
17
|
-
|
|
18
|
-
- Added UI coverage badges for providers through `ProviderUsageCoverage`.
|
|
19
|
-
- Marked current coverage in metadata:
|
|
20
|
-
- `codex`: models + tokens + projects
|
|
21
|
-
- `claude`: models + tokens + projects
|
|
22
|
-
- `openrouter`: models + tokens
|
|
23
|
-
- `copilot`: models
|
|
24
|
-
|
|
25
|
-
## implementation plan (cross-platform)
|
|
26
|
-
|
|
27
|
-
1. OpenRouter deep usage:
|
|
28
|
-
- Add per-model aggregation from generation/usage API into `UsageLedger`-compatible summaries.
|
|
29
|
-
- Expose project attribution through optional request metadata key (for example `X-Runic-Project`).
|
|
30
|
-
|
|
31
|
-
2. Azure OpenAI provider:
|
|
32
|
-
- Add provider with `endpoint + api key` settings and Azure Monitor pull path.
|
|
33
|
-
- Ingest `InputTokens`, `OutputTokens`, `TotalTokens` by model/deployment.
|
|
34
|
-
- Add optional Entra auth mode later for enterprise setups.
|
|
35
|
-
|
|
36
|
-
3. Bedrock provider:
|
|
37
|
-
- Add provider with `region + profile` settings.
|
|
38
|
-
- Pull model/token metrics from CloudWatch (`ModelId` dimension).
|
|
39
|
-
- Add optional project grouping from invocation log metadata.
|
|
40
|
-
|
|
41
|
-
4. Unified data contract:
|
|
42
|
-
- Normalize provider outputs into one cross-platform schema:
|
|
43
|
-
- `model_usage[]`
|
|
44
|
-
- `token_totals`
|
|
45
|
-
- `project_usage[]`
|
|
46
|
-
- Keep all logic in `RunicCore` so macOS/Linux/Windows reuse the same pipeline.
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# Release Gate Checklist
|
|
2
|
-
|
|
3
|
-
Last updated: 2026-02-23
|
|
4
|
-
|
|
5
|
-
Use this checklist before promoting a branch to `main` or cutting a tagged release.
|
|
6
|
-
|
|
7
|
-
## 1) Branch And Scope Hygiene
|
|
8
|
-
|
|
9
|
-
- [ ] Feature branch is rebased/merged cleanly against target.
|
|
10
|
-
- [ ] No unrelated local changes in working tree.
|
|
11
|
-
- [ ] All migration notes are included for settings/schema changes.
|
|
12
|
-
|
|
13
|
-
## 2) Build Gates
|
|
14
|
-
|
|
15
|
-
- [ ] `swift build` succeeds.
|
|
16
|
-
- [ ] `swift test` succeeds.
|
|
17
|
-
- [ ] `./Scripts/compile_and_run.sh` succeeds and relaunches app.
|
|
18
|
-
- [ ] Release packaging script (if release cut): `./Scripts/package_app.sh`.
|
|
19
|
-
|
|
20
|
-
## 3) Runtime Validation Gates
|
|
21
|
-
|
|
22
|
-
- [ ] Core providers fetch successfully in real environment.
|
|
23
|
-
- [ ] Menu bar remains responsive under active refresh load.
|
|
24
|
-
- [ ] No repeated credential prompts/regressions after rebuild/relaunch.
|
|
25
|
-
- [ ] Error states include actionable next steps for user recovery.
|
|
26
|
-
|
|
27
|
-
## 4) Data Correctness Gates
|
|
28
|
-
|
|
29
|
-
- [ ] Provider identity isolation verified (no cross-provider leakage).
|
|
30
|
-
- [ ] Ledger summaries (daily/models/projects) validated with test fixtures.
|
|
31
|
-
- [ ] Budget/forecast/anomaly outputs are deterministic in tests.
|
|
32
|
-
- [ ] New exports/ingestion paths have schema tests and sample fixtures.
|
|
33
|
-
|
|
34
|
-
## 5) Security And Privacy Gates
|
|
35
|
-
|
|
36
|
-
- [ ] Secrets are stored in secure platform storage (no plaintext persistence).
|
|
37
|
-
- [ ] Logs do not include raw API tokens or auth headers.
|
|
38
|
-
- [ ] Export payloads avoid sensitive fields by default.
|
|
39
|
-
- [ ] Any new network path has explicit timeout/error handling.
|
|
40
|
-
|
|
41
|
-
## 6) UX And Accessibility Gates
|
|
42
|
-
|
|
43
|
-
- [ ] Provider settings spacing and layout render correctly in light/dark modes.
|
|
44
|
-
- [ ] Primary workflows are reachable via keyboard and VoiceOver labels.
|
|
45
|
-
- [ ] Charts/visual summaries expose textual alternatives.
|
|
46
|
-
|
|
47
|
-
## 7) Docs And Operations Gates
|
|
48
|
-
|
|
49
|
-
- [ ] Provider docs and research docs updated for behavior changes.
|
|
50
|
-
- [ ] Parity matrix updated for feature/platform status shifts.
|
|
51
|
-
- [ ] Open TODO checkboxes updated to reflect shipped items.
|
|
52
|
-
|
|
53
|
-
## 8) Post-Merge Verification
|
|
54
|
-
|
|
55
|
-
- [ ] Merge commit or fast-forward push confirmed on remote.
|
|
56
|
-
- [ ] Fresh pull + build on clean environment succeeds.
|
|
57
|
-
- [ ] Known follow-up tasks filed with owners and priority.
|