@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.
- package/CHANGELOG.md +261 -0
- package/LICENSE +373 -21
- package/README.md +96 -89
- 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/RunicTypographyiOS.swift +0 -24
- 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 -117
- package/Sources/Runic/Controllers/StatusItemController+Actions.swift +0 -670
- package/Sources/Runic/Controllers/StatusItemController+Animation.swift +0 -519
- package/Sources/Runic/Controllers/StatusItemController+ChartSubmenus.swift +0 -824
- package/Sources/Runic/Controllers/StatusItemController+CustomProviders.swift +0 -90
- package/Sources/Runic/Controllers/StatusItemController+Menu.swift +0 -1412
- package/Sources/Runic/Controllers/StatusItemController+MenuCards.swift +0 -339
- package/Sources/Runic/Controllers/StatusItemController+MenuHelpers.swift +0 -423
- package/Sources/Runic/Controllers/StatusItemController.swift +0 -360
- package/Sources/Runic/Core/BudgetNotificationManager.swift +0 -81
- 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 -1222
- package/Sources/Runic/Core/Rendering/IconView.swift +0 -122
- 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/RunicTypography.swift +0 -206
- package/Sources/Runic/Core/Stores/AuggieTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/AzureOpenAITokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/CerebrasTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/CohereTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/CopilotTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/CustomProviderStore.swift +0 -158
- package/Sources/Runic/Core/Stores/DeepSeekTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/FireworksTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/GroqTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/KimiTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/MiniMaxCookieHeaderStore.swift +0 -117
- package/Sources/Runic/Core/Stores/MiniMaxGroupIDStore.swift +0 -117
- package/Sources/Runic/Core/Stores/MiniMaxTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/MistralTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/OpenRouterTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/PerplexityTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/ProviderToggleStore.swift +0 -30
- package/Sources/Runic/Core/Stores/QwenTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/SambaNovaTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/SettingsStore.swift +0 -1749
- package/Sources/Runic/Core/Stores/TogetherTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/UsageStore+Accessors.swift +0 -33
- 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 -3631
- package/Sources/Runic/Core/Stores/XAITokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/ZaiTokenStore.swift +0 -117
- package/Sources/Runic/Core/UsageExporter.swift +0 -197
- 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 -51
- 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/Fonts/Caveat-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/Caveat-Regular.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/FiraCode-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/FiraCode-Light.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/FiraCode-Medium.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/FiraCode-Regular.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/FiraCode-SemiBold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/IBMPlexMono-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/IBMPlexMono-Medium.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/IBMPlexMono-Regular.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/IBMPlexMono-SemiBold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/Inconsolata-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/Inconsolata-Medium.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/Inconsolata-Regular.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/Inconsolata-SemiBold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/JetBrainsMono-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/JetBrainsMono-Medium.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/JetBrainsMono-Regular.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/JetBrainsMono-SemiBold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/SpaceMono-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/SpaceMono-Regular.ttf +0 -0
- 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 -367
- package/Sources/Runic/SessionQuotaNotifications.swift +0 -58
- package/Sources/Runic/UsagePaceText.swift +0 -52
- package/Sources/Runic/UsageProgressBar.swift +0 -228
- package/Sources/Runic/Utilities/DisplayLink.swift +0 -96
- package/Sources/Runic/Utilities/LoadingPattern.swift +0 -62
- package/Sources/Runic/Utilities/PerformanceConstants.swift +0 -85
- package/Sources/Runic/Views/Menu/AlertsMenuView.swift +0 -254
- 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 -311
- package/Sources/Runic/Views/Menu/HeroStatCardsMenuView.swift +0 -231
- package/Sources/Runic/Views/Menu/HourlyActivityChartMenuView.swift +0 -228
- package/Sources/Runic/Views/Menu/InlineUsageChartView.swift +0 -157
- package/Sources/Runic/Views/Menu/MenuCardEntranceModifier.swift +0 -63
- package/Sources/Runic/Views/Menu/MenuCardSidebarView.swift +0 -248
- package/Sources/Runic/Views/Menu/MenuCardSkeletonView.swift +0 -104
- package/Sources/Runic/Views/Menu/MenuCardView.swift +0 -1889
- package/Sources/Runic/Views/Menu/MenuContent.swift +0 -153
- package/Sources/Runic/Views/Menu/MenuDescriptor.swift +0 -371
- package/Sources/Runic/Views/Menu/MenuHighlightStyle.swift +0 -35
- package/Sources/Runic/Views/Menu/ModelBreakdownMenuView.swift +0 -241
- package/Sources/Runic/Views/Menu/OverviewMenuView.swift +0 -281
- package/Sources/Runic/Views/Menu/ProjectBreakdownMenuView.swift +0 -214
- package/Sources/Runic/Views/Menu/ProjectBudgetMenuView.swift +0 -220
- package/Sources/Runic/Views/Menu/ProviderTabBarView.swift +0 -86
- package/Sources/Runic/Views/Menu/SubscriptionUtilizationChartMenuView.swift +0 -214
- package/Sources/Runic/Views/Menu/UsageBreakdownChartMenuView.swift +0 -398
- package/Sources/Runic/Views/Menu/UsageHeatmapMenuView.swift +0 -231
- package/Sources/Runic/Views/Menu/UsageTimelineChartMenuView.swift +0 -369
- package/Sources/Runic/Views/Menu/UsageWindowComparisonChartMenuView.swift +0 -191
- package/Sources/Runic/Views/Menu/WeeklyActivityChartMenuView.swift +0 -132
- package/Sources/Runic/Views/Performance/PerformanceDashboardView.swift +0 -621
- package/Sources/Runic/Views/Preferences/LiquidComponents.swift +0 -306
- 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 -418
- package/Sources/Runic/Views/Preferences/PreferencesAnalyticsPane.swift +0 -637
- 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 -321
- package/Sources/Runic/Views/Preferences/PreferencesDebugPane.swift +0 -469
- package/Sources/Runic/Views/Preferences/PreferencesGeneralPane.swift +0 -250
- package/Sources/Runic/Views/Preferences/PreferencesHelpPane.swift +0 -50
- package/Sources/Runic/Views/Preferences/PreferencesIntegrationsPane.swift +0 -572
- package/Sources/Runic/Views/Preferences/PreferencesPerformancePane.swift +0 -291
- package/Sources/Runic/Views/Preferences/PreferencesProvidersPane.swift +0 -3480
- package/Sources/Runic/Views/Preferences/PreferencesSelection.swift +0 -29
- package/Sources/Runic/Views/Preferences/PreferencesSyncPane.swift +0 -61
- package/Sources/Runic/Views/Preferences/PreferencesView.swift +0 -213
- package/Sources/Runic/Views/Rating/QualityRatingView.swift +0 -238
- package/Sources/Runic/Views/Team/TeamDashboardView.swift +0 -376
- package/Sources/Runic/Views/Team/TeamInviteSheet.swift +0 -175
- package/Sources/Runic/Views/Team/TeamManagementView.swift +0 -762
- package/Sources/Runic/Views/Team/TeamMemberRow.swift +0 -181
- package/Sources/RunicCLI/CLIEntry.swift +0 -983
- package/Sources/RunicCLI/CLIRenderer.swift +0 -87
- package/Sources/RunicCLI/Commands/EnhancedUsageCommand.swift +0 -588
- package/Sources/RunicCLI/Commands/ModelsCommand.swift +0 -363
- package/Sources/RunicCLI/Commands/ProjectsCommand.swift +0 -453
- package/Sources/RunicCLI/Commands/ResetCommand.swift +0 -430
- package/Sources/RunicCLI/Commands/UsageLedgerSourceFactory.swift +0 -167
- 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 -268
- package/Sources/RunicCore/CustomProviders/GenericProviderFetcher.swift +0 -631
- package/Sources/RunicCore/CustomProviders/ProviderTemplates.swift +0 -444
- 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 -370
- 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 -426
- package/Sources/RunicCore/Policy/UsagePolicyEngine.swift +0 -178
- package/Sources/RunicCore/ProjectBudgetStore.swift +0 -102
- package/Sources/RunicCore/ProviderCostSnapshot.swift +0 -29
- package/Sources/RunicCore/Providers/Antigravity/AntigravityProviderDescriptor.swift +0 -68
- 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 -164
- 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 -209
- package/Sources/RunicCore/Providers/Claude/ClaudeStatusProbe.swift +0 -654
- package/Sources/RunicCore/Providers/Claude/ClaudeUsageDataSource.swift +0 -30
- 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 -245
- package/Sources/RunicCore/Providers/Codex/CodexStatusProbe.swift +0 -125
- package/Sources/RunicCore/Providers/Codex/CodexUsageDataSource.swift +0 -26
- package/Sources/RunicCore/Providers/Codex/CodexWebDashboardStrategy.swift +0 -183
- 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 -117
- package/Sources/RunicCore/Providers/Copilot/CopilotProviderDescriptor.swift +0 -100
- package/Sources/RunicCore/Providers/Copilot/CopilotUsageFetcher.swift +0 -293
- package/Sources/RunicCore/Providers/Copilot/CopilotVSCodeTokenReader.swift +0 -385
- package/Sources/RunicCore/Providers/Cursor/CursorProviderDescriptor.swift +0 -67
- 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 -67
- 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 -67
- package/Sources/RunicCore/Providers/Gemini/GeminiStatusProbe.swift +0 -839
- 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 -97
- 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 -216
- 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 -86
- package/Sources/RunicCore/Providers/Qwen/QwenSettingsReader.swift +0 -30
- package/Sources/RunicCore/Providers/Qwen/QwenUsageStats.swift +0 -328
- 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 -74
- package/Sources/RunicCore/Providers/Zai/ZaiSettingsReader.swift +0 -41
- package/Sources/RunicCore/Providers/Zai/ZaiUsageStats.swift +0 -745
- package/Sources/RunicCore/Sync/BackgroundSyncManager.swift +0 -384
- package/Sources/RunicCore/Sync/SyncConflictResolver.swift +0 -307
- package/Sources/RunicCore/Sync/SyncProtocol.swift +0 -287
- package/Sources/RunicCore/Sync/SyncRecord.swift +0 -402
- package/Sources/RunicCore/Sync/SyncUsageExample.swift +0 -288
- package/Sources/RunicCore/Sync/TeamSyncRecords.swift +0 -768
- package/Sources/RunicCore/Sync/iCloudSyncEngine.swift +0 -338
- package/Sources/RunicCore/Team/TeamModels.swift +0 -584
- package/Sources/RunicCore/Team/TeamShowbackExporter.swift +0 -495
- package/Sources/RunicCore/Team/TeamStore.swift +0 -809
- 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 -441
- package/Sources/RunicCore/UsageLedger/CodexUsageLogSource.swift +0 -502
- package/Sources/RunicCore/UsageLedger/LedgerCache.swift +0 -161
- package/Sources/RunicCore/UsageLedger/OTelGenAILedgerAdapter.swift +0 -550
- package/Sources/RunicCore/UsageLedger/UsageLedger.swift +0 -29
- package/Sources/RunicCore/UsageLedger/UsageLedgerAggregator.swift +0 -675
- package/Sources/RunicCore/UsageLedger/UsageLedgerInsightsAdvisor.swift +0 -209
- package/Sources/RunicCore/UsageLedger/UsageLedgerModels.swift +0 -417
- package/Sources/RunicCore/UsageLedger/UsageLedgerProjectIdentity.swift +0 -284
- 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 -48
- package/Tests/RunicTests/BrowserCookieOrderLabelTests.swift +0 -21
- package/Tests/RunicTests/CLIArgumentParsingTests.swift +0 -69
- package/Tests/RunicTests/CLICostTests.swift +0 -64
- package/Tests/RunicTests/CLIProviderSelectionTests.swift +0 -21
- package/Tests/RunicTests/CLISnapshotTests.swift +0 -71
- package/Tests/RunicTests/CLIWebFallbackTests.swift +0 -57
- package/Tests/RunicTests/ClaudeOAuthTests.swift +0 -163
- package/Tests/RunicTests/ClaudeResilienceTests.swift +0 -29
- package/Tests/RunicTests/ClaudeUsageTests.swift +0 -369
- package/Tests/RunicTests/CodexOAuthTests.swift +0 -121
- package/Tests/RunicTests/CodexUsageLogSourceTests.swift +0 -80
- package/Tests/RunicTests/CopilotTokenResolverTests.swift +0 -74
- package/Tests/RunicTests/CopilotVSCodeTokenReaderTests.swift +0 -74
- package/Tests/RunicTests/CostUsageDecodingTests.swift +0 -392
- package/Tests/RunicTests/CostUsagePricingTests.swift +0 -48
- package/Tests/RunicTests/CostUsageScannerTests.swift +0 -698
- package/Tests/RunicTests/CursorStatusProbeTests.swift +0 -322
- package/Tests/RunicTests/FactoryStatusProbeTests.swift +0 -67
- package/Tests/RunicTests/GeminiAPITestHelpers.swift +0 -94
- package/Tests/RunicTests/GeminiLoginAlertTests.swift +0 -27
- package/Tests/RunicTests/GeminiStatusProbeAPITests.swift +0 -283
- package/Tests/RunicTests/GeminiStatusProbePlanTests.swift +0 -279
- package/Tests/RunicTests/GeminiStatusProbeTests.swift +0 -232
- package/Tests/RunicTests/GeminiTestEnvironment.swift +0 -87
- package/Tests/RunicTests/GoogleWorkspaceStatusTests.swift +0 -72
- package/Tests/RunicTests/InstallOriginTests.swift +0 -17
- package/Tests/RunicTests/KeyboardShortcutsBundleTests.swift +0 -9
- package/Tests/RunicTests/LiveAccountTests.swift +0 -24
- package/Tests/RunicTests/LoadingPatternTests.swift +0 -34
- package/Tests/RunicTests/MenuCardModelTests.swift +0 -544
- package/Tests/RunicTests/MiniMaxCookieHeaderStoreTestSupport.swift +0 -11
- package/Tests/RunicTests/MiniMaxGroupIDStoreTestSupport.swift +0 -11
- package/Tests/RunicTests/MiniMaxParsingTests.swift +0 -67
- package/Tests/RunicTests/MiniMaxTokenStoreTestSupport.swift +0 -11
- package/Tests/RunicTests/OTelGenAILedgerAdapterTests.swift +0 -110
- package/Tests/RunicTests/OpenAIDashboardBrowserCookieImporterTests.swift +0 -16
- package/Tests/RunicTests/OpenAIDashboardFetcherCreditsWaitTests.swift +0 -74
- package/Tests/RunicTests/OpenAIDashboardOffscreenHostTests.swift +0 -26
- package/Tests/RunicTests/OpenAIDashboardParserTests.swift +0 -133
- package/Tests/RunicTests/OpenAIWebAccountSwitchTests.swift +0 -64
- package/Tests/RunicTests/OpenRouterTokenStoreTestSupport.swift +0 -131
- package/Tests/RunicTests/PathBuilderTests.swift +0 -236
- package/Tests/RunicTests/ProviderFetchPipelineTests.swift +0 -159
- package/Tests/RunicTests/ProviderIconResourcesTests.swift +0 -37
- package/Tests/RunicTests/ProviderMetadataStatusLinkTests.swift +0 -15
- package/Tests/RunicTests/ProviderRegistryTests.swift +0 -29
- package/Tests/RunicTests/ProviderSettingsDescriptorTests.swift +0 -236
- package/Tests/RunicTests/ProviderToggleStoreTests.swift +0 -50
- package/Tests/RunicTests/RunicTests.swift +0 -119
- package/Tests/RunicTests/SessionQuotaNotificationLogicTests.swift +0 -35
- package/Tests/RunicTests/SettingsStoreTests.swift +0 -265
- package/Tests/RunicTests/StatusItemAnimationTests.swift +0 -54
- package/Tests/RunicTests/StatusMenuTests.swift +0 -475
- package/Tests/RunicTests/StatusProbeTests.swift +0 -376
- package/Tests/RunicTests/SubprocessRunnerTests.swift +0 -18
- package/Tests/RunicTests/SubscriptionDetectionTests.swift +0 -64
- package/Tests/RunicTests/TTYCommandRunnerTests.swift +0 -147
- package/Tests/RunicTests/TTYIntegrationTests.swift +0 -41
- package/Tests/RunicTests/TeamShowbackExporterTests.swift +0 -157
- package/Tests/RunicTests/TextParsingTests.swift +0 -11
- package/Tests/RunicTests/UsageFormatterTests.swift +0 -111
- package/Tests/RunicTests/UsageLedgerAnomalyDetectionTests.swift +0 -170
- package/Tests/RunicTests/UsageLedgerForecastTests.swift +0 -211
- package/Tests/RunicTests/UsageLedgerInsightsAdvisorTests.swift +0 -81
- package/Tests/RunicTests/UsageLedgerProjectNameTests.swift +0 -168
- package/Tests/RunicTests/UsagePaceTests.swift +0 -76
- package/Tests/RunicTests/UsagePaceTextTests.swift +0 -108
- package/Tests/RunicTests/UsagePolicyEngineTests.swift +0 -89
- package/Tests/RunicTests/WidgetSnapshotTests.swift +0 -43
- package/Tests/RunicTests/ZaiProviderTests.swift +0 -59
- package/Tests/RunicTests/ZaiTokenStoreTestSupport.swift +0 -9
- package/TestsLinux/PlatformGatingTests.swift +0 -46
- package/appcast.xml +0 -104
- 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/runic.svg +0 -15
- package/version.env +0 -2
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
import Foundation
|
|
2
|
-
import WidgetKit
|
|
3
|
-
import RunicCore
|
|
4
|
-
|
|
5
|
-
// MARK: - Timeline Provider
|
|
6
|
-
|
|
7
|
-
/// Timeline provider for Runic widgets
|
|
8
|
-
///
|
|
9
|
-
/// Manages widget data refresh cycles and provides timeline entries to WidgetKit.
|
|
10
|
-
/// Implements a smart refresh strategy to balance data freshness with battery life.
|
|
11
|
-
public struct RunicTimelineProvider: TimelineProvider {
|
|
12
|
-
public typealias Entry = RunicWidgetEntry
|
|
13
|
-
|
|
14
|
-
// MARK: - Configuration
|
|
15
|
-
|
|
16
|
-
/// Refresh interval for home screen widgets (15 minutes)
|
|
17
|
-
private let homeScreenRefreshInterval: TimeInterval = 15 * 60
|
|
18
|
-
|
|
19
|
-
/// Refresh interval for lock screen widgets (1 hour)
|
|
20
|
-
private let lockScreenRefreshInterval: TimeInterval = 60 * 60
|
|
21
|
-
|
|
22
|
-
// MARK: - Initializer
|
|
23
|
-
|
|
24
|
-
public init() {}
|
|
25
|
-
|
|
26
|
-
// MARK: - TimelineProvider Methods
|
|
27
|
-
|
|
28
|
-
/// Provides a placeholder entry for initial widget display
|
|
29
|
-
public func placeholder(in context: Context) -> RunicWidgetEntry {
|
|
30
|
-
RunicWidgetEntry.placeholder()
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/// Provides a snapshot entry for widget gallery and transitions
|
|
34
|
-
///
|
|
35
|
-
/// - Parameters:
|
|
36
|
-
/// - context: The widget context containing family and environment info
|
|
37
|
-
/// - completion: Completion handler receiving the snapshot entry
|
|
38
|
-
public func getSnapshot(
|
|
39
|
-
in context: Context,
|
|
40
|
-
completion: @escaping (RunicWidgetEntry) -> Void
|
|
41
|
-
) {
|
|
42
|
-
if context.isPreview {
|
|
43
|
-
// Use placeholder for previews
|
|
44
|
-
completion(RunicWidgetEntry.placeholder())
|
|
45
|
-
return
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// For real snapshots, attempt to load cached data
|
|
49
|
-
Task {
|
|
50
|
-
let entry = await loadWidgetEntry(for: context)
|
|
51
|
-
completion(entry)
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/// Provides a timeline of entries for widget updates
|
|
56
|
-
///
|
|
57
|
-
/// - Parameters:
|
|
58
|
-
/// - context: The widget context containing family and environment info
|
|
59
|
-
/// - completion: Completion handler receiving the timeline
|
|
60
|
-
public func getTimeline(
|
|
61
|
-
in context: Context,
|
|
62
|
-
completion: @escaping (Timeline<RunicWidgetEntry>) -> Void
|
|
63
|
-
) {
|
|
64
|
-
Task {
|
|
65
|
-
let entry = await loadWidgetEntry(for: context)
|
|
66
|
-
let refreshInterval = self.refreshInterval(for: context.family)
|
|
67
|
-
let nextUpdate = Date().addingTimeInterval(refreshInterval)
|
|
68
|
-
|
|
69
|
-
let timeline = Timeline(
|
|
70
|
-
entries: [entry],
|
|
71
|
-
policy: .after(nextUpdate)
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
completion(timeline)
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// MARK: - Data Loading
|
|
79
|
-
|
|
80
|
-
/// Load widget entry from cached snapshot data
|
|
81
|
-
///
|
|
82
|
-
/// - Parameter context: Widget context for configuration
|
|
83
|
-
/// - Returns: Widget entry with current usage data
|
|
84
|
-
private func loadWidgetEntry(for context: Context) async -> RunicWidgetEntry {
|
|
85
|
-
let configuration = loadConfiguration(for: context)
|
|
86
|
-
|
|
87
|
-
// Load snapshot from shared container
|
|
88
|
-
guard let snapshot = WidgetSnapshotStore.load() else {
|
|
89
|
-
return RunicWidgetEntry.placeholder(configuration: configuration)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Ensure we have recent data (within 2 hours)
|
|
93
|
-
let dataAge = Date().timeIntervalSince(snapshot.generatedAt)
|
|
94
|
-
if dataAge > 2 * 60 * 60 {
|
|
95
|
-
return RunicWidgetEntry.placeholder(configuration: configuration)
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return RunicWidgetEntry(
|
|
99
|
-
date: Date(),
|
|
100
|
-
snapshot: snapshot,
|
|
101
|
-
configuration: configuration,
|
|
102
|
-
isPlaceholder: false
|
|
103
|
-
)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/// Load widget configuration
|
|
107
|
-
///
|
|
108
|
-
/// - Parameter context: Widget context
|
|
109
|
-
/// - Returns: Widget configuration with user preferences
|
|
110
|
-
private func loadConfiguration(for context: Context) -> WidgetConfiguration {
|
|
111
|
-
// Load selected provider for small widgets
|
|
112
|
-
let selectedProvider = WidgetSelectionStore.loadSelectedProvider()
|
|
113
|
-
|
|
114
|
-
// Determine configuration based on widget family
|
|
115
|
-
switch context.family {
|
|
116
|
-
case .systemSmall:
|
|
117
|
-
return WidgetConfiguration(
|
|
118
|
-
primaryProvider: selectedProvider ?? .claude,
|
|
119
|
-
additionalProviders: [],
|
|
120
|
-
showEnabledOnly: true,
|
|
121
|
-
sortBySeverity: true
|
|
122
|
-
)
|
|
123
|
-
|
|
124
|
-
case .systemMedium:
|
|
125
|
-
return WidgetConfiguration(
|
|
126
|
-
primaryProvider: selectedProvider,
|
|
127
|
-
additionalProviders: [],
|
|
128
|
-
showEnabledOnly: true,
|
|
129
|
-
sortBySeverity: true
|
|
130
|
-
)
|
|
131
|
-
|
|
132
|
-
case .systemLarge, .systemExtraLarge:
|
|
133
|
-
return WidgetConfiguration(
|
|
134
|
-
primaryProvider: nil,
|
|
135
|
-
additionalProviders: [],
|
|
136
|
-
showEnabledOnly: true,
|
|
137
|
-
sortBySeverity: true
|
|
138
|
-
)
|
|
139
|
-
|
|
140
|
-
case .accessoryCircular, .accessoryInline, .accessoryRectangular:
|
|
141
|
-
return WidgetConfiguration(
|
|
142
|
-
primaryProvider: selectedProvider ?? .claude,
|
|
143
|
-
additionalProviders: [],
|
|
144
|
-
showEnabledOnly: true,
|
|
145
|
-
sortBySeverity: false
|
|
146
|
-
)
|
|
147
|
-
|
|
148
|
-
@unknown default:
|
|
149
|
-
return .default
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/// Determine refresh interval based on widget family
|
|
154
|
-
///
|
|
155
|
-
/// - Parameter family: Widget family
|
|
156
|
-
/// - Returns: Refresh interval in seconds
|
|
157
|
-
private func refreshInterval(for family: WidgetFamily) -> TimeInterval {
|
|
158
|
-
switch family {
|
|
159
|
-
case .accessoryCircular, .accessoryInline, .accessoryRectangular:
|
|
160
|
-
// Lock screen widgets refresh less frequently
|
|
161
|
-
return lockScreenRefreshInterval
|
|
162
|
-
|
|
163
|
-
default:
|
|
164
|
-
// Home screen widgets refresh more frequently
|
|
165
|
-
return homeScreenRefreshInterval
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// MARK: - Widget Entry Extensions
|
|
171
|
-
|
|
172
|
-
extension RunicWidgetEntry {
|
|
173
|
-
/// Get providers to display based on configuration and widget family
|
|
174
|
-
///
|
|
175
|
-
/// - Parameter family: Widget family
|
|
176
|
-
/// - Returns: Array of provider data sorted and filtered for display
|
|
177
|
-
public func providers(for family: WidgetFamily) -> [WidgetProviderData] {
|
|
178
|
-
let maxCount = WidgetSizeHelper.maxProviders(for: family)
|
|
179
|
-
|
|
180
|
-
// Convert entries to widget data
|
|
181
|
-
var allProviders = snapshot.entries.map { entry in
|
|
182
|
-
WidgetProviderData.from(entry: entry)
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
// Filter to enabled providers if configured
|
|
186
|
-
if configuration.showEnabledOnly {
|
|
187
|
-
allProviders = allProviders.filter { provider in
|
|
188
|
-
snapshot.enabledProviders.contains(provider.id)
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// Sort by severity if configured
|
|
193
|
-
if configuration.sortBySeverity {
|
|
194
|
-
allProviders.sort { lhs, rhs in
|
|
195
|
-
// Sort by severity (critical first), then by usage percentage
|
|
196
|
-
if lhs.severity != rhs.severity {
|
|
197
|
-
return severityOrder(lhs.severity) < severityOrder(rhs.severity)
|
|
198
|
-
}
|
|
199
|
-
return lhs.usedPercent > rhs.usedPercent
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// For small widgets, prioritize configured provider
|
|
204
|
-
if family == .systemSmall, let primaryProvider = configuration.primaryProvider {
|
|
205
|
-
if let provider = allProviders.first(where: { $0.id == primaryProvider }) {
|
|
206
|
-
return [provider]
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// Return limited set based on widget size
|
|
211
|
-
return Array(allProviders.prefix(maxCount))
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
/// Severity ordering for sorting (lower is more urgent)
|
|
215
|
-
private func severityOrder(_ severity: UsageSeverity) -> Int {
|
|
216
|
-
switch severity {
|
|
217
|
-
case .critical: return 0
|
|
218
|
-
case .high: return 1
|
|
219
|
-
case .elevated: return 2
|
|
220
|
-
case .normal: return 3
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/// Get the most critical provider (highest usage)
|
|
225
|
-
public var mostCriticalProvider: WidgetProviderData? {
|
|
226
|
-
let providers = snapshot.entries.map { WidgetProviderData.from(entry: $0) }
|
|
227
|
-
return providers.max { lhs, rhs in
|
|
228
|
-
lhs.usedPercent < rhs.usedPercent
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/// Get overall system status
|
|
233
|
-
public var systemStatus: SystemStatus {
|
|
234
|
-
let allProviders = snapshot.entries.map { WidgetProviderData.from(entry: $0) }
|
|
235
|
-
|
|
236
|
-
let criticalCount = allProviders.filter { $0.severity == .critical }.count
|
|
237
|
-
let highCount = allProviders.filter { $0.severity == .high }.count
|
|
238
|
-
|
|
239
|
-
if criticalCount > 0 {
|
|
240
|
-
return .critical
|
|
241
|
-
} else if highCount > 0 {
|
|
242
|
-
return .warning
|
|
243
|
-
} else {
|
|
244
|
-
return .normal
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
/// System-wide status indicator
|
|
249
|
-
public enum SystemStatus {
|
|
250
|
-
case normal
|
|
251
|
-
case warning
|
|
252
|
-
case critical
|
|
253
|
-
|
|
254
|
-
public var displayText: String {
|
|
255
|
-
switch self {
|
|
256
|
-
case .normal: return "All systems normal"
|
|
257
|
-
case .warning: return "Some limits approaching"
|
|
258
|
-
case .critical: return "Critical usage detected"
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
public var iconName: String {
|
|
263
|
-
switch self {
|
|
264
|
-
case .normal: return "checkmark.circle.fill"
|
|
265
|
-
case .warning: return "exclamationmark.triangle.fill"
|
|
266
|
-
case .critical: return "xmark.octagon.fill"
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
@@ -1,367 +0,0 @@
|
|
|
1
|
-
# Runic Build Scripts - Creation Summary
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Successfully created comprehensive setup and build scripts for all Runic platforms with professional error handling, color output, and documentation.
|
|
6
|
-
|
|
7
|
-
## Created Files
|
|
8
|
-
|
|
9
|
-
### Setup Scripts (3 files)
|
|
10
|
-
|
|
11
|
-
1. **setup-ios.sh** (11K)
|
|
12
|
-
- iOS Xcode project setup
|
|
13
|
-
- CocoaPods and SPM dependency management
|
|
14
|
-
- Code signing configuration
|
|
15
|
-
- Prerequisites checking
|
|
16
|
-
|
|
17
|
-
2. **setup-react-native.sh** (14K)
|
|
18
|
-
- React Native setup for Windows and Android
|
|
19
|
-
- Node.js, Java, and Android SDK verification
|
|
20
|
-
- Environment file creation
|
|
21
|
-
- Code quality tools setup
|
|
22
|
-
|
|
23
|
-
3. **setup-all.sh** (9.4K)
|
|
24
|
-
- One-command setup for all platforms
|
|
25
|
-
- Platform detection
|
|
26
|
-
- Orchestrates individual setup scripts
|
|
27
|
-
- Flexible --only and --skip flags
|
|
28
|
-
|
|
29
|
-
### Build Scripts (4 files)
|
|
30
|
-
|
|
31
|
-
4. **build-macos.sh** (14K)
|
|
32
|
-
- Swift Package Manager build
|
|
33
|
-
- SwiftLint and SwiftFormat checks
|
|
34
|
-
- Test execution
|
|
35
|
-
- App bundle creation with Info.plist
|
|
36
|
-
- Code signing support
|
|
37
|
-
- ZIP archive generation
|
|
38
|
-
|
|
39
|
-
5. **build-ios.sh** (13K)
|
|
40
|
-
- Xcode-based iOS builds
|
|
41
|
-
- Simulator and device support
|
|
42
|
-
- Archive and IPA creation
|
|
43
|
-
- Test execution
|
|
44
|
-
- Flexible scheme and configuration options
|
|
45
|
-
|
|
46
|
-
6. **build-android.sh** (13K)
|
|
47
|
-
- Gradle-based Android builds
|
|
48
|
-
- APK and AAB generation
|
|
49
|
-
- Lint and test execution
|
|
50
|
-
- Debug and release variants
|
|
51
|
-
- Keystore signing support
|
|
52
|
-
|
|
53
|
-
7. **build-windows.sh** (14K)
|
|
54
|
-
- React Native Windows build
|
|
55
|
-
- MSBuild integration
|
|
56
|
-
- Multiple architecture support (x64, x86, ARM64)
|
|
57
|
-
- Distribution package creation
|
|
58
|
-
|
|
59
|
-
### CI/CD Configuration (1 file)
|
|
60
|
-
|
|
61
|
-
8. **ci-config.yml** (15K)
|
|
62
|
-
- GitHub Actions workflow
|
|
63
|
-
- Build matrix for all platforms
|
|
64
|
-
- Automated testing
|
|
65
|
-
- Code quality checks (SwiftLint, ESLint)
|
|
66
|
-
- Artifact uploading
|
|
67
|
-
- Optional deployment to TestFlight/Play Store
|
|
68
|
-
- Comprehensive secret management documentation
|
|
69
|
-
|
|
70
|
-
### Documentation (1 file)
|
|
71
|
-
|
|
72
|
-
9. **README-SCRIPTS.md** (19K)
|
|
73
|
-
- Complete usage guide for all scripts
|
|
74
|
-
- Platform-specific setup instructions
|
|
75
|
-
- Troubleshooting section
|
|
76
|
-
- Code signing guides for iOS and Android
|
|
77
|
-
- GitHub Secrets configuration
|
|
78
|
-
- Advanced usage examples
|
|
79
|
-
- Common issues and solutions
|
|
80
|
-
|
|
81
|
-
## Total Lines of Code
|
|
82
|
-
|
|
83
|
-
- **Setup Scripts**: ~2,800 lines
|
|
84
|
-
- **Build Scripts**: ~3,500 lines
|
|
85
|
-
- **CI/CD Config**: ~380 lines
|
|
86
|
-
- **Documentation**: ~650 lines
|
|
87
|
-
- **Total**: ~7,330 lines of professional automation code
|
|
88
|
-
|
|
89
|
-
## Key Features
|
|
90
|
-
|
|
91
|
-
### All Scripts Include
|
|
92
|
-
|
|
93
|
-
✅ **Error Handling**
|
|
94
|
-
- Set -e for exit on error
|
|
95
|
-
- Set -u for undefined variable checking
|
|
96
|
-
- Comprehensive error messages with solutions
|
|
97
|
-
|
|
98
|
-
✅ **Color Output**
|
|
99
|
-
- Terminal detection
|
|
100
|
-
- Color-coded messages (info, success, warning, error)
|
|
101
|
-
- Professional logging with step indicators
|
|
102
|
-
|
|
103
|
-
✅ **Dry-Run Mode**
|
|
104
|
-
- `--dry-run` flag shows what would be executed
|
|
105
|
-
- Safe testing of scripts without making changes
|
|
106
|
-
|
|
107
|
-
✅ **Verbose Mode**
|
|
108
|
-
- `--verbose` flag for detailed output
|
|
109
|
-
- Helpful for debugging build issues
|
|
110
|
-
|
|
111
|
-
✅ **Prerequisites Checking**
|
|
112
|
-
- Verifies required tools are installed
|
|
113
|
-
- Provides installation hints
|
|
114
|
-
- Checks versions and configurations
|
|
115
|
-
|
|
116
|
-
✅ **Clear Error Messages**
|
|
117
|
-
- Explains what went wrong
|
|
118
|
-
- Provides actionable solutions
|
|
119
|
-
- Links to relevant documentation
|
|
120
|
-
|
|
121
|
-
✅ **Built-in Help**
|
|
122
|
-
- `--help` flag for usage information
|
|
123
|
-
- Extracted from header comments
|
|
124
|
-
- Self-documenting scripts
|
|
125
|
-
|
|
126
|
-
### Platform Coverage
|
|
127
|
-
|
|
128
|
-
✅ **macOS**
|
|
129
|
-
- Native Swift/SwiftUI application
|
|
130
|
-
- Swift Package Manager integration
|
|
131
|
-
- Code signing and notarization ready
|
|
132
|
-
|
|
133
|
-
✅ **iOS**
|
|
134
|
-
- Xcode project builds
|
|
135
|
-
- Simulator and device support
|
|
136
|
-
- TestFlight deployment ready
|
|
137
|
-
|
|
138
|
-
✅ **Android**
|
|
139
|
-
- React Native via Gradle
|
|
140
|
-
- Debug and release builds
|
|
141
|
-
- Play Store AAB support
|
|
142
|
-
|
|
143
|
-
✅ **Windows**
|
|
144
|
-
- React Native Windows
|
|
145
|
-
- MSBuild integration
|
|
146
|
-
- Multiple architectures
|
|
147
|
-
|
|
148
|
-
### CI/CD Features
|
|
149
|
-
|
|
150
|
-
✅ **Automated Builds**
|
|
151
|
-
- Triggered on push and PR
|
|
152
|
-
- Manual workflow dispatch
|
|
153
|
-
- All platforms in parallel
|
|
154
|
-
|
|
155
|
-
✅ **Testing**
|
|
156
|
-
- Unit tests on each platform
|
|
157
|
-
- Integration tests
|
|
158
|
-
- Code quality checks
|
|
159
|
-
|
|
160
|
-
✅ **Code Quality**
|
|
161
|
-
- SwiftLint for Swift/iOS
|
|
162
|
-
- ESLint for JavaScript/TypeScript
|
|
163
|
-
- Prettier formatting checks
|
|
164
|
-
- TypeScript type checking
|
|
165
|
-
|
|
166
|
-
✅ **Artifact Management**
|
|
167
|
-
- Build artifacts uploaded
|
|
168
|
-
- 7-day retention
|
|
169
|
-
- Organized by platform
|
|
170
|
-
|
|
171
|
-
✅ **Deployment Support**
|
|
172
|
-
- TestFlight integration
|
|
173
|
-
- Play Console upload
|
|
174
|
-
- Configurable via secrets
|
|
175
|
-
|
|
176
|
-
## Usage Examples
|
|
177
|
-
|
|
178
|
-
### Quick Start
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
# Setup everything
|
|
182
|
-
./scripts/setup-all.sh
|
|
183
|
-
|
|
184
|
-
# Build all platforms
|
|
185
|
-
./scripts/build-macos.sh
|
|
186
|
-
./scripts/build-ios.sh --simulator
|
|
187
|
-
./scripts/build-android.sh --variant debug
|
|
188
|
-
./scripts/build-windows.sh
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### Dry-Run Testing
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
# Test what would happen without executing
|
|
195
|
-
./scripts/setup-all.sh --dry-run --verbose
|
|
196
|
-
./scripts/build-macos.sh --dry-run
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### Platform-Specific
|
|
200
|
-
|
|
201
|
-
```bash
|
|
202
|
-
# iOS only
|
|
203
|
-
./scripts/setup-all.sh --only-ios
|
|
204
|
-
./scripts/build-ios.sh --archive
|
|
205
|
-
|
|
206
|
-
# Android only
|
|
207
|
-
./scripts/setup-all.sh --only-rn --skip-windows
|
|
208
|
-
./scripts/build-android.sh --aab
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
### CI/CD Setup
|
|
212
|
-
|
|
213
|
-
```bash
|
|
214
|
-
# Copy workflow to .github
|
|
215
|
-
mkdir -p .github/workflows
|
|
216
|
-
cp scripts/ci-config.yml .github/workflows/ci.yml
|
|
217
|
-
|
|
218
|
-
# Configure secrets in GitHub repository settings
|
|
219
|
-
# See README-SCRIPTS.md for complete list
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
## File Permissions
|
|
223
|
-
|
|
224
|
-
All shell scripts are executable:
|
|
225
|
-
```bash
|
|
226
|
-
-rwxr-xr-x setup-all.sh
|
|
227
|
-
-rwxr-xr-x setup-ios.sh
|
|
228
|
-
-rwxr-xr-x setup-react-native.sh
|
|
229
|
-
-rwxr-xr-x build-macos.sh
|
|
230
|
-
-rwxr-xr-x build-ios.sh
|
|
231
|
-
-rwxr-xr-x build-android.sh
|
|
232
|
-
-rwxr-xr-x build-windows.sh
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
## Documentation Quality
|
|
236
|
-
|
|
237
|
-
### README-SCRIPTS.md Sections
|
|
238
|
-
|
|
239
|
-
1. **Overview** - Introduction and features
|
|
240
|
-
2. **Quick Start** - Fastest way to get started
|
|
241
|
-
3. **Setup Scripts** - Detailed usage for each setup script
|
|
242
|
-
4. **Build Scripts** - Detailed usage for each build script
|
|
243
|
-
5. **CI/CD Configuration** - GitHub Actions workflow guide
|
|
244
|
-
6. **Platform-Specific Guides** - Deep dives for each platform
|
|
245
|
-
7. **GitHub Secrets Configuration** - Security setup
|
|
246
|
-
8. **Troubleshooting** - Common issues and solutions
|
|
247
|
-
9. **Advanced Usage** - Power user features
|
|
248
|
-
|
|
249
|
-
### Script Headers
|
|
250
|
-
|
|
251
|
-
Each script includes comprehensive header documentation:
|
|
252
|
-
- Purpose statement
|
|
253
|
-
- Detailed description
|
|
254
|
-
- Usage examples
|
|
255
|
-
- All available options
|
|
256
|
-
- Requirements list
|
|
257
|
-
- Author and version
|
|
258
|
-
|
|
259
|
-
## Next Steps
|
|
260
|
-
|
|
261
|
-
### To Use These Scripts
|
|
262
|
-
|
|
263
|
-
1. **Review the Documentation**
|
|
264
|
-
```bash
|
|
265
|
-
cat scripts/README-SCRIPTS.md
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
2. **Setup Development Environment**
|
|
269
|
-
```bash
|
|
270
|
-
# For all platforms
|
|
271
|
-
./scripts/setup-all.sh --verbose
|
|
272
|
-
|
|
273
|
-
# For specific platform
|
|
274
|
-
./scripts/setup-ios.sh
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
3. **Build Applications**
|
|
278
|
-
```bash
|
|
279
|
-
# Try a dry-run first
|
|
280
|
-
./scripts/build-macos.sh --dry-run
|
|
281
|
-
|
|
282
|
-
# Then build for real
|
|
283
|
-
./scripts/build-macos.sh
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
4. **Configure CI/CD**
|
|
287
|
-
```bash
|
|
288
|
-
# Copy workflow
|
|
289
|
-
mkdir -p .github/workflows
|
|
290
|
-
cp scripts/ci-config.yml .github/workflows/ci.yml
|
|
291
|
-
|
|
292
|
-
# Configure secrets (see README-SCRIPTS.md)
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
### Code Signing Setup
|
|
296
|
-
|
|
297
|
-
#### iOS
|
|
298
|
-
- Open Xcode project
|
|
299
|
-
- Configure team in Signing & Capabilities
|
|
300
|
-
- See README-SCRIPTS.md for detailed instructions
|
|
301
|
-
|
|
302
|
-
#### Android
|
|
303
|
-
- Generate keystore
|
|
304
|
-
- Create keystore.properties
|
|
305
|
-
- Update build.gradle
|
|
306
|
-
- See README-SCRIPTS.md for detailed instructions
|
|
307
|
-
|
|
308
|
-
### Customization
|
|
309
|
-
|
|
310
|
-
All scripts support:
|
|
311
|
-
- Custom output directories (--output-dir)
|
|
312
|
-
- Different configurations (--configuration)
|
|
313
|
-
- Skipping tests (--skip-tests)
|
|
314
|
-
- Clean builds (--clean)
|
|
315
|
-
- And more (see --help)
|
|
316
|
-
|
|
317
|
-
## Quality Assurance
|
|
318
|
-
|
|
319
|
-
### Code Quality Features
|
|
320
|
-
|
|
321
|
-
✅ **Consistent Style**
|
|
322
|
-
- All scripts follow same structure
|
|
323
|
-
- Uniform color scheme
|
|
324
|
-
- Consistent error handling patterns
|
|
325
|
-
|
|
326
|
-
✅ **Comprehensive Testing**
|
|
327
|
-
- Prerequisite validation
|
|
328
|
-
- Dry-run mode for safe testing
|
|
329
|
-
- Verbose mode for debugging
|
|
330
|
-
|
|
331
|
-
✅ **Production Ready**
|
|
332
|
-
- Error handling for edge cases
|
|
333
|
-
- Clear documentation
|
|
334
|
-
- CI/CD integration
|
|
335
|
-
|
|
336
|
-
✅ **Maintainability**
|
|
337
|
-
- Self-documenting code
|
|
338
|
-
- Modular functions
|
|
339
|
-
- Clear variable names
|
|
340
|
-
|
|
341
|
-
## Support
|
|
342
|
-
|
|
343
|
-
For help with any script:
|
|
344
|
-
```bash
|
|
345
|
-
# Built-in help
|
|
346
|
-
./scripts/setup-all.sh --help
|
|
347
|
-
./scripts/build-macos.sh --help
|
|
348
|
-
|
|
349
|
-
# Complete documentation
|
|
350
|
-
cat scripts/README-SCRIPTS.md
|
|
351
|
-
|
|
352
|
-
# Verbose output for debugging
|
|
353
|
-
./scripts/build-ios.sh --verbose --dry-run
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
## Summary
|
|
357
|
-
|
|
358
|
-
Created a complete, professional build automation system for Runic with:
|
|
359
|
-
- ✅ 9 new files (7 scripts + 1 workflow + 1 documentation)
|
|
360
|
-
- ✅ ~7,330 lines of professional code
|
|
361
|
-
- ✅ Full platform coverage (macOS, iOS, Android, Windows)
|
|
362
|
-
- ✅ Comprehensive error handling and user feedback
|
|
363
|
-
- ✅ CI/CD automation ready
|
|
364
|
-
- ✅ Extensive documentation
|
|
365
|
-
- ✅ Production-ready quality
|
|
366
|
-
|
|
367
|
-
All scripts are executable, well-documented, and ready to use!
|