@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,926 +0,0 @@
|
|
|
1
|
-
# Runic Build Scripts Documentation
|
|
2
|
-
|
|
3
|
-
Complete collection of setup and build scripts for all Runic platforms.
|
|
4
|
-
|
|
5
|
-
## Table of Contents
|
|
6
|
-
|
|
7
|
-
- [Overview](#overview)
|
|
8
|
-
- [Quick Start](#quick-start)
|
|
9
|
-
- [Setup Scripts](#setup-scripts)
|
|
10
|
-
- [Build Scripts](#build-scripts)
|
|
11
|
-
- [CI/CD Configuration](#cicd-configuration)
|
|
12
|
-
- [Platform-Specific Guides](#platform-specific-guides)
|
|
13
|
-
- [Troubleshooting](#troubleshooting)
|
|
14
|
-
- [Advanced Usage](#advanced-usage)
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## Overview
|
|
19
|
-
|
|
20
|
-
This directory contains comprehensive scripts for setting up and building Runic across all supported platforms:
|
|
21
|
-
|
|
22
|
-
- **macOS** - Native Swift/SwiftUI application
|
|
23
|
-
- **iOS** - Native iOS application
|
|
24
|
-
- **Android** - React Native application
|
|
25
|
-
- **Windows** - React Native Windows application
|
|
26
|
-
|
|
27
|
-
All scripts include:
|
|
28
|
-
- ✅ Prerequisite checking
|
|
29
|
-
- ✅ Error handling with clear messages
|
|
30
|
-
- ✅ Color-coded output for better UX
|
|
31
|
-
- ✅ Dry-run mode for safety
|
|
32
|
-
- ✅ Verbose mode for debugging
|
|
33
|
-
- ✅ Comprehensive logging
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## Quick Start
|
|
38
|
-
|
|
39
|
-
### One-Command Setup (All Platforms)
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
# Setup everything
|
|
43
|
-
./scripts/setup-all.sh
|
|
44
|
-
|
|
45
|
-
# Setup with dry-run to see what would happen
|
|
46
|
-
./scripts/setup-all.sh --dry-run
|
|
47
|
-
|
|
48
|
-
# Setup with verbose output
|
|
49
|
-
./scripts/setup-all.sh --verbose
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### One-Command Build (All Platforms)
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
# Build all platforms
|
|
56
|
-
./scripts/build-all.sh
|
|
57
|
-
|
|
58
|
-
# Build specific platform
|
|
59
|
-
./scripts/build-macos.sh
|
|
60
|
-
./scripts/build-ios.sh
|
|
61
|
-
./scripts/build-android.sh
|
|
62
|
-
./scripts/build-windows.sh
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## Setup Scripts
|
|
68
|
-
|
|
69
|
-
### setup-all.sh
|
|
70
|
-
|
|
71
|
-
**Purpose**: One-command setup for all platforms
|
|
72
|
-
|
|
73
|
-
**Usage**:
|
|
74
|
-
```bash
|
|
75
|
-
./scripts/setup-all.sh [OPTIONS]
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
**Options**:
|
|
79
|
-
- `--dry-run` - Show what would be done without executing
|
|
80
|
-
- `--verbose` - Enable verbose output
|
|
81
|
-
- `--only-macos` - Only setup macOS
|
|
82
|
-
- `--only-ios` - Only setup iOS
|
|
83
|
-
- `--only-rn` - Only setup React Native (Android/Windows)
|
|
84
|
-
- `--skip-macos` - Skip macOS setup
|
|
85
|
-
- `--skip-ios` - Skip iOS setup
|
|
86
|
-
- `--skip-rn` - Skip React Native setup
|
|
87
|
-
- `--help` - Show help message
|
|
88
|
-
|
|
89
|
-
**Examples**:
|
|
90
|
-
```bash
|
|
91
|
-
# Setup everything
|
|
92
|
-
./scripts/setup-all.sh
|
|
93
|
-
|
|
94
|
-
# Setup only iOS
|
|
95
|
-
./scripts/setup-all.sh --only-ios
|
|
96
|
-
|
|
97
|
-
# Setup everything except React Native
|
|
98
|
-
./scripts/setup-all.sh --skip-rn
|
|
99
|
-
|
|
100
|
-
# Dry-run to see what would happen
|
|
101
|
-
./scripts/setup-all.sh --dry-run --verbose
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
### setup-ios.sh
|
|
107
|
-
|
|
108
|
-
**Purpose**: Setup iOS Xcode project
|
|
109
|
-
|
|
110
|
-
**Prerequisites**:
|
|
111
|
-
- macOS 14.0+
|
|
112
|
-
- Xcode 15.0+
|
|
113
|
-
- Command Line Tools
|
|
114
|
-
- Ruby (for CocoaPods)
|
|
115
|
-
|
|
116
|
-
**Usage**:
|
|
117
|
-
```bash
|
|
118
|
-
./scripts/setup-ios.sh [OPTIONS]
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
**Options**:
|
|
122
|
-
- `--dry-run` - Show what would be done
|
|
123
|
-
- `--verbose` - Enable verbose output
|
|
124
|
-
- `--skip-pods` - Skip CocoaPods installation
|
|
125
|
-
- `--help` - Show help message
|
|
126
|
-
|
|
127
|
-
**What it does**:
|
|
128
|
-
1. Checks for Xcode and required tools
|
|
129
|
-
2. Verifies iOS project structure
|
|
130
|
-
3. Installs CocoaPods dependencies (if Podfile exists)
|
|
131
|
-
4. Resolves Swift Package dependencies
|
|
132
|
-
5. Creates configuration template
|
|
133
|
-
6. Provides code signing instructions
|
|
134
|
-
|
|
135
|
-
**Examples**:
|
|
136
|
-
```bash
|
|
137
|
-
# Standard setup
|
|
138
|
-
./scripts/setup-ios.sh
|
|
139
|
-
|
|
140
|
-
# Skip CocoaPods
|
|
141
|
-
./scripts/setup-ios.sh --skip-pods
|
|
142
|
-
|
|
143
|
-
# Verbose output for debugging
|
|
144
|
-
./scripts/setup-ios.sh --verbose
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
### setup-react-native.sh
|
|
150
|
-
|
|
151
|
-
**Purpose**: Setup React Native project for Windows and Android
|
|
152
|
-
|
|
153
|
-
**Prerequisites**:
|
|
154
|
-
- Node.js 18+
|
|
155
|
-
- npm or yarn
|
|
156
|
-
- Java Development Kit 17+ (for Android)
|
|
157
|
-
- Android SDK (for Android)
|
|
158
|
-
- Windows 10+ with Visual Studio (for Windows)
|
|
159
|
-
|
|
160
|
-
**Usage**:
|
|
161
|
-
```bash
|
|
162
|
-
./scripts/setup-react-native.sh [OPTIONS]
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
**Options**:
|
|
166
|
-
- `--dry-run` - Show what would be done
|
|
167
|
-
- `--verbose` - Enable verbose output
|
|
168
|
-
- `--skip-android` - Skip Android setup
|
|
169
|
-
- `--skip-windows` - Skip Windows setup
|
|
170
|
-
- `--help` - Show help message
|
|
171
|
-
|
|
172
|
-
**What it does**:
|
|
173
|
-
1. Checks for Node.js, npm, Java, Android SDK
|
|
174
|
-
2. Installs npm dependencies
|
|
175
|
-
3. Sets up Android SDK configuration
|
|
176
|
-
4. Initializes React Native Windows (if needed)
|
|
177
|
-
5. Creates environment configuration files
|
|
178
|
-
6. Checks for code quality tools (ESLint, Prettier)
|
|
179
|
-
|
|
180
|
-
**Examples**:
|
|
181
|
-
```bash
|
|
182
|
-
# Setup both Android and Windows
|
|
183
|
-
./scripts/setup-react-native.sh
|
|
184
|
-
|
|
185
|
-
# Setup only Android
|
|
186
|
-
./scripts/setup-react-native.sh --skip-windows
|
|
187
|
-
|
|
188
|
-
# Setup only Windows
|
|
189
|
-
./scripts/setup-react-native.sh --skip-android
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
## Build Scripts
|
|
195
|
-
|
|
196
|
-
### build-macos.sh
|
|
197
|
-
|
|
198
|
-
**Purpose**: Build macOS application using Swift Package Manager
|
|
199
|
-
|
|
200
|
-
**Usage**:
|
|
201
|
-
```bash
|
|
202
|
-
./scripts/build-macos.sh [OPTIONS]
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
**Options**:
|
|
206
|
-
- `--dry-run` - Show what would be done
|
|
207
|
-
- `--verbose` - Enable verbose output
|
|
208
|
-
- `--skip-tests` - Skip running tests
|
|
209
|
-
- `--skip-signing` - Skip code signing
|
|
210
|
-
- `--configuration` - Build configuration (debug|release) [default: release]
|
|
211
|
-
- `--output-dir` - Output directory for build artifacts
|
|
212
|
-
- `--clean` - Clean build directory before building
|
|
213
|
-
- `--help` - Show help message
|
|
214
|
-
|
|
215
|
-
**What it does**:
|
|
216
|
-
1. Runs SwiftLint and SwiftFormat checks
|
|
217
|
-
2. Executes Swift tests
|
|
218
|
-
3. Builds the application
|
|
219
|
-
4. Creates .app bundle with Info.plist
|
|
220
|
-
5. Signs the application (if certificates available)
|
|
221
|
-
6. Creates ZIP archive for distribution
|
|
222
|
-
|
|
223
|
-
**Output**:
|
|
224
|
-
- `builds/macos/Runic.app` - Application bundle
|
|
225
|
-
- `builds/macos/Runic-*.zip` - Distributable archive
|
|
226
|
-
|
|
227
|
-
**Examples**:
|
|
228
|
-
```bash
|
|
229
|
-
# Standard release build
|
|
230
|
-
./scripts/build-macos.sh
|
|
231
|
-
|
|
232
|
-
# Debug build without tests
|
|
233
|
-
./scripts/build-macos.sh --configuration debug --skip-tests
|
|
234
|
-
|
|
235
|
-
# Clean build with verbose output
|
|
236
|
-
./scripts/build-macos.sh --clean --verbose
|
|
237
|
-
|
|
238
|
-
# Dry-run to see what would happen
|
|
239
|
-
./scripts/build-macos.sh --dry-run
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
### build-ios.sh
|
|
245
|
-
|
|
246
|
-
**Purpose**: Build iOS application using Xcode
|
|
247
|
-
|
|
248
|
-
**Usage**:
|
|
249
|
-
```bash
|
|
250
|
-
./scripts/build-ios.sh [OPTIONS]
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
**Options**:
|
|
254
|
-
- `--dry-run` - Show what would be done
|
|
255
|
-
- `--verbose` - Enable verbose output
|
|
256
|
-
- `--skip-tests` - Skip running tests
|
|
257
|
-
- `--configuration` - Build configuration (Debug|Release) [default: Release]
|
|
258
|
-
- `--scheme` - Build scheme [default: RuniciOS]
|
|
259
|
-
- `--output-dir` - Output directory for build artifacts
|
|
260
|
-
- `--simulator` - Build for iOS Simulator
|
|
261
|
-
- `--device` - Build for iOS Device [default]
|
|
262
|
-
- `--archive` - Create archive and IPA
|
|
263
|
-
- `--clean` - Clean build directory before building
|
|
264
|
-
- `--help` - Show help message
|
|
265
|
-
|
|
266
|
-
**What it does**:
|
|
267
|
-
1. Runs iOS tests (optional)
|
|
268
|
-
2. Builds for simulator or device
|
|
269
|
-
3. Creates archive (optional)
|
|
270
|
-
4. Exports IPA (requires code signing)
|
|
271
|
-
|
|
272
|
-
**Output**:
|
|
273
|
-
- `builds/ios/DerivedData/` - Build products
|
|
274
|
-
- `builds/ios/RuniciOS.xcarchive` - Archive (if --archive)
|
|
275
|
-
- `builds/ios/Export/*.ipa` - IPA file (if --archive and signed)
|
|
276
|
-
|
|
277
|
-
**Examples**:
|
|
278
|
-
```bash
|
|
279
|
-
# Build for device
|
|
280
|
-
./scripts/build-ios.sh --device
|
|
281
|
-
|
|
282
|
-
# Build for simulator
|
|
283
|
-
./scripts/build-ios.sh --simulator
|
|
284
|
-
|
|
285
|
-
# Create archive and IPA
|
|
286
|
-
./scripts/build-ios.sh --archive
|
|
287
|
-
|
|
288
|
-
# Debug build for simulator without tests
|
|
289
|
-
./scripts/build-ios.sh --simulator --configuration Debug --skip-tests
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
**Code Signing Note**:
|
|
293
|
-
- Device builds and archives require valid code signing certificates
|
|
294
|
-
- See [iOS Code Signing](#ios-code-signing) section
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
### build-android.sh
|
|
299
|
-
|
|
300
|
-
**Purpose**: Build Android application using Gradle
|
|
301
|
-
|
|
302
|
-
**Usage**:
|
|
303
|
-
```bash
|
|
304
|
-
./scripts/build-android.sh [OPTIONS]
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
**Options**:
|
|
308
|
-
- `--dry-run` - Show what would be done
|
|
309
|
-
- `--verbose` - Enable verbose output
|
|
310
|
-
- `--skip-tests` - Skip running tests
|
|
311
|
-
- `--skip-lint` - Skip lint checks
|
|
312
|
-
- `--variant` - Build variant (debug|release) [default: release]
|
|
313
|
-
- `--output-dir` - Output directory for build artifacts
|
|
314
|
-
- `--aab` - Build Android App Bundle (AAB) instead of APK
|
|
315
|
-
- `--clean` - Clean build directory before building
|
|
316
|
-
- `--help` - Show help message
|
|
317
|
-
|
|
318
|
-
**What it does**:
|
|
319
|
-
1. Checks for Java and Android SDK
|
|
320
|
-
2. Installs npm dependencies
|
|
321
|
-
3. Runs Android lint checks
|
|
322
|
-
4. Executes tests
|
|
323
|
-
5. Builds APK or AAB
|
|
324
|
-
6. Copies artifacts to output directory
|
|
325
|
-
|
|
326
|
-
**Output**:
|
|
327
|
-
- `builds/android/app-debug.apk` - Debug APK
|
|
328
|
-
- `builds/android/app-release.apk` - Release APK (unsigned without keystore)
|
|
329
|
-
- `builds/android/app-release.aab` - Release AAB (if --aab)
|
|
330
|
-
|
|
331
|
-
**Examples**:
|
|
332
|
-
```bash
|
|
333
|
-
# Build debug APK
|
|
334
|
-
./scripts/build-android.sh --variant debug
|
|
335
|
-
|
|
336
|
-
# Build release APK
|
|
337
|
-
./scripts/build-android.sh --variant release
|
|
338
|
-
|
|
339
|
-
# Build AAB for Play Store
|
|
340
|
-
./scripts/build-android.sh --aab
|
|
341
|
-
|
|
342
|
-
# Build without tests and lint
|
|
343
|
-
./scripts/build-android.sh --skip-tests --skip-lint
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
**Code Signing Note**:
|
|
347
|
-
- Release builds require a keystore for signing
|
|
348
|
-
- See [Android Code Signing](#android-code-signing) section
|
|
349
|
-
|
|
350
|
-
---
|
|
351
|
-
|
|
352
|
-
### build-windows.sh
|
|
353
|
-
|
|
354
|
-
**Purpose**: Build Windows application using React Native Windows
|
|
355
|
-
|
|
356
|
-
**Usage**:
|
|
357
|
-
```bash
|
|
358
|
-
./scripts/build-windows.sh [OPTIONS]
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
**Options**:
|
|
362
|
-
- `--dry-run` - Show what would be done
|
|
363
|
-
- `--verbose` - Enable verbose output
|
|
364
|
-
- `--skip-tests` - Skip running tests
|
|
365
|
-
- `--configuration` - Build configuration (Debug|Release) [default: Release]
|
|
366
|
-
- `--arch` - Target architecture (x64|x86|ARM64) [default: x64]
|
|
367
|
-
- `--output-dir` - Output directory for build artifacts
|
|
368
|
-
- `--clean` - Clean build directory before building
|
|
369
|
-
- `--help` - Show help message
|
|
370
|
-
|
|
371
|
-
**What it does**:
|
|
372
|
-
1. Checks for Node.js and MSBuild
|
|
373
|
-
2. Installs npm dependencies
|
|
374
|
-
3. Runs tests
|
|
375
|
-
4. Builds Windows application
|
|
376
|
-
5. Copies build artifacts
|
|
377
|
-
6. Creates distribution package
|
|
378
|
-
|
|
379
|
-
**Output**:
|
|
380
|
-
- `builds/windows/` - Build artifacts and executable
|
|
381
|
-
- `builds/windows/Runic-*.zip` - Distribution package
|
|
382
|
-
|
|
383
|
-
**Examples**:
|
|
384
|
-
```bash
|
|
385
|
-
# Build release for x64
|
|
386
|
-
./scripts/build-windows.sh
|
|
387
|
-
|
|
388
|
-
# Build debug for x64
|
|
389
|
-
./scripts/build-windows.sh --configuration Debug
|
|
390
|
-
|
|
391
|
-
# Build for ARM64
|
|
392
|
-
./scripts/build-windows.sh --arch ARM64
|
|
393
|
-
|
|
394
|
-
# Clean build
|
|
395
|
-
./scripts/build-windows.sh --clean
|
|
396
|
-
```
|
|
397
|
-
|
|
398
|
-
**Platform Note**:
|
|
399
|
-
- This script works best on native Windows
|
|
400
|
-
- Can run on macOS/Linux via Git Bash but may have limitations
|
|
401
|
-
|
|
402
|
-
---
|
|
403
|
-
|
|
404
|
-
## CI/CD Configuration
|
|
405
|
-
|
|
406
|
-
### ci-config.yml
|
|
407
|
-
|
|
408
|
-
**Purpose**: GitHub Actions workflow for automated builds and deployments
|
|
409
|
-
|
|
410
|
-
**Location**: Copy to `.github/workflows/ci.yml`
|
|
411
|
-
|
|
412
|
-
**Features**:
|
|
413
|
-
- ✅ Build matrix for all platforms
|
|
414
|
-
- ✅ Automated testing on each platform
|
|
415
|
-
- ✅ Code quality checks (SwiftLint, ESLint)
|
|
416
|
-
- ✅ Artifact uploading
|
|
417
|
-
- ✅ Optional deployment to TestFlight/Play Store
|
|
418
|
-
- ✅ Build status summary
|
|
419
|
-
|
|
420
|
-
**Triggers**:
|
|
421
|
-
- Push to `main` or `develop` branches
|
|
422
|
-
- Pull requests to `main`
|
|
423
|
-
- Manual workflow dispatch
|
|
424
|
-
|
|
425
|
-
**Jobs**:
|
|
426
|
-
1. **code-quality** - ESLint, Prettier, TypeScript checks
|
|
427
|
-
2. **build-macos** - Build and test macOS application
|
|
428
|
-
3. **build-ios** - Build and test iOS application
|
|
429
|
-
4. **build-android** - Build and test Android application
|
|
430
|
-
5. **build-windows** - Build and test Windows application
|
|
431
|
-
6. **deploy** - Optional deployment to distribution platforms
|
|
432
|
-
7. **build-summary** - Generate build status summary
|
|
433
|
-
|
|
434
|
-
**Required Secrets**:
|
|
435
|
-
|
|
436
|
-
See the [GitHub Secrets Configuration](#github-secrets-configuration) section.
|
|
437
|
-
|
|
438
|
-
**Setup**:
|
|
439
|
-
```bash
|
|
440
|
-
# Copy to workflows directory
|
|
441
|
-
mkdir -p .github/workflows
|
|
442
|
-
cp scripts/ci-config.yml .github/workflows/ci.yml
|
|
443
|
-
|
|
444
|
-
# Commit and push
|
|
445
|
-
git add .github/workflows/ci.yml
|
|
446
|
-
git commit -m "Add CI/CD workflow"
|
|
447
|
-
git push
|
|
448
|
-
```
|
|
449
|
-
|
|
450
|
-
---
|
|
451
|
-
|
|
452
|
-
## Platform-Specific Guides
|
|
453
|
-
|
|
454
|
-
### macOS Development
|
|
455
|
-
|
|
456
|
-
**Setup**:
|
|
457
|
-
```bash
|
|
458
|
-
./scripts/setup-all.sh --only-macos
|
|
459
|
-
```
|
|
460
|
-
|
|
461
|
-
**Build**:
|
|
462
|
-
```bash
|
|
463
|
-
# Development build
|
|
464
|
-
swift build
|
|
465
|
-
|
|
466
|
-
# Release build with script
|
|
467
|
-
./scripts/build-macos.sh
|
|
468
|
-
|
|
469
|
-
# Run application
|
|
470
|
-
open builds/macos/Runic.app
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
**Testing**:
|
|
474
|
-
```bash
|
|
475
|
-
# Run all tests
|
|
476
|
-
swift test
|
|
477
|
-
|
|
478
|
-
# Run specific test
|
|
479
|
-
swift test --filter RunicTests
|
|
480
|
-
```
|
|
481
|
-
|
|
482
|
-
**Code Quality**:
|
|
483
|
-
```bash
|
|
484
|
-
# SwiftLint
|
|
485
|
-
swiftlint lint
|
|
486
|
-
|
|
487
|
-
# SwiftFormat
|
|
488
|
-
swiftformat .
|
|
489
|
-
```
|
|
490
|
-
|
|
491
|
-
---
|
|
492
|
-
|
|
493
|
-
### iOS Development
|
|
494
|
-
|
|
495
|
-
**Setup**:
|
|
496
|
-
```bash
|
|
497
|
-
./scripts/setup-ios.sh
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
**Build**:
|
|
501
|
-
```bash
|
|
502
|
-
# Simulator build
|
|
503
|
-
./scripts/build-ios.sh --simulator
|
|
504
|
-
|
|
505
|
-
# Device build (requires code signing)
|
|
506
|
-
./scripts/build-ios.sh --device
|
|
507
|
-
|
|
508
|
-
# Create IPA for distribution
|
|
509
|
-
./scripts/build-ios.sh --archive
|
|
510
|
-
```
|
|
511
|
-
|
|
512
|
-
**Testing**:
|
|
513
|
-
```bash
|
|
514
|
-
# Run tests
|
|
515
|
-
./scripts/build-ios.sh --simulator --skip-signing
|
|
516
|
-
```
|
|
517
|
-
|
|
518
|
-
**Code Signing**:
|
|
519
|
-
|
|
520
|
-
1. **Development**:
|
|
521
|
-
- Open `RuniciOS/*.xcodeproj` or `*.xcworkspace` in Xcode
|
|
522
|
-
- Select target → Signing & Capabilities
|
|
523
|
-
- Choose your team and enable automatic signing
|
|
524
|
-
|
|
525
|
-
2. **Distribution**:
|
|
526
|
-
- Create App ID in Apple Developer Portal
|
|
527
|
-
- Create provisioning profile
|
|
528
|
-
- Update `RuniciOS/Config.xcconfig` with your team ID
|
|
529
|
-
|
|
530
|
-
---
|
|
531
|
-
|
|
532
|
-
### Android Development
|
|
533
|
-
|
|
534
|
-
**Setup**:
|
|
535
|
-
```bash
|
|
536
|
-
./scripts/setup-react-native.sh --skip-windows
|
|
537
|
-
|
|
538
|
-
# Set ANDROID_HOME
|
|
539
|
-
export ANDROID_HOME=$HOME/Library/Android/sdk
|
|
540
|
-
export PATH=$PATH:$ANDROID_HOME/platform-tools
|
|
541
|
-
```
|
|
542
|
-
|
|
543
|
-
**Build**:
|
|
544
|
-
```bash
|
|
545
|
-
# Debug build
|
|
546
|
-
./scripts/build-android.sh --variant debug
|
|
547
|
-
|
|
548
|
-
# Release build
|
|
549
|
-
./scripts/build-android.sh --variant release
|
|
550
|
-
|
|
551
|
-
# AAB for Play Store
|
|
552
|
-
./scripts/build-android.sh --aab
|
|
553
|
-
```
|
|
554
|
-
|
|
555
|
-
**Testing**:
|
|
556
|
-
```bash
|
|
557
|
-
# Run tests
|
|
558
|
-
cd runic-cross-platform/android
|
|
559
|
-
./gradlew test
|
|
560
|
-
|
|
561
|
-
# Run on emulator
|
|
562
|
-
npm run android
|
|
563
|
-
```
|
|
564
|
-
|
|
565
|
-
**Code Signing**:
|
|
566
|
-
|
|
567
|
-
1. **Generate Keystore**:
|
|
568
|
-
```bash
|
|
569
|
-
keytool -genkey -v -keystore runic-release.keystore \
|
|
570
|
-
-alias runic-key -keyalg RSA -keysize 2048 -validity 10000
|
|
571
|
-
```
|
|
572
|
-
|
|
573
|
-
2. **Create `android/keystore.properties`**:
|
|
574
|
-
```properties
|
|
575
|
-
storePassword=YOUR_STORE_PASSWORD
|
|
576
|
-
keyPassword=YOUR_KEY_PASSWORD
|
|
577
|
-
keyAlias=runic-key
|
|
578
|
-
storeFile=runic-release.keystore
|
|
579
|
-
```
|
|
580
|
-
|
|
581
|
-
3. **Update `android/app/build.gradle`**:
|
|
582
|
-
```gradle
|
|
583
|
-
// Load keystore
|
|
584
|
-
def keystorePropertiesFile = rootProject.file("keystore.properties")
|
|
585
|
-
def keystoreProperties = new Properties()
|
|
586
|
-
if (keystorePropertiesFile.exists()) {
|
|
587
|
-
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
android {
|
|
591
|
-
signingConfigs {
|
|
592
|
-
release {
|
|
593
|
-
if (keystorePropertiesFile.exists()) {
|
|
594
|
-
storeFile file(keystoreProperties['storeFile'])
|
|
595
|
-
storePassword keystoreProperties['storePassword']
|
|
596
|
-
keyAlias keystoreProperties['keyAlias']
|
|
597
|
-
keyPassword keystoreProperties['keyPassword']
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
buildTypes {
|
|
602
|
-
release {
|
|
603
|
-
signingConfig signingConfigs.release
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
```
|
|
608
|
-
|
|
609
|
-
---
|
|
610
|
-
|
|
611
|
-
### Windows Development
|
|
612
|
-
|
|
613
|
-
**Setup**:
|
|
614
|
-
```bash
|
|
615
|
-
./scripts/setup-react-native.sh --skip-android
|
|
616
|
-
```
|
|
617
|
-
|
|
618
|
-
**Prerequisites**:
|
|
619
|
-
- Windows 10+
|
|
620
|
-
- Visual Studio 2022 with:
|
|
621
|
-
- Desktop development with C++
|
|
622
|
-
- Windows 10 SDK (10.0.19041.0 or higher)
|
|
623
|
-
|
|
624
|
-
**Build**:
|
|
625
|
-
```bash
|
|
626
|
-
# Release build
|
|
627
|
-
./scripts/build-windows.sh
|
|
628
|
-
|
|
629
|
-
# Debug build
|
|
630
|
-
./scripts/build-windows.sh --configuration Debug
|
|
631
|
-
|
|
632
|
-
# Different architecture
|
|
633
|
-
./scripts/build-windows.sh --arch ARM64
|
|
634
|
-
```
|
|
635
|
-
|
|
636
|
-
**Testing**:
|
|
637
|
-
```bash
|
|
638
|
-
# Run tests
|
|
639
|
-
cd runic-cross-platform
|
|
640
|
-
npm test
|
|
641
|
-
|
|
642
|
-
# Run in development
|
|
643
|
-
npm run windows
|
|
644
|
-
```
|
|
645
|
-
|
|
646
|
-
**Deployment**:
|
|
647
|
-
- Create installer with WiX Toolset or Inno Setup
|
|
648
|
-
- Sign executable with code signing certificate
|
|
649
|
-
|
|
650
|
-
---
|
|
651
|
-
|
|
652
|
-
## GitHub Secrets Configuration
|
|
653
|
-
|
|
654
|
-
Configure these secrets in your GitHub repository settings (Settings → Secrets and variables → Actions):
|
|
655
|
-
|
|
656
|
-
### iOS Secrets
|
|
657
|
-
|
|
658
|
-
| Secret Name | Description | How to Generate |
|
|
659
|
-
|------------|-------------|-----------------|
|
|
660
|
-
| `IOS_CERTIFICATE_P12` | Base64-encoded P12 certificate | `base64 -i certificate.p12 -o cert.txt` |
|
|
661
|
-
| `IOS_CERTIFICATE_PASSWORD` | Certificate password | Password used when exporting certificate |
|
|
662
|
-
| `IOS_PROVISIONING_PROFILE` | Base64-encoded provisioning profile | `base64 -i profile.mobileprovision -o profile.txt` |
|
|
663
|
-
| `APP_STORE_CONNECT_API_KEY` | API key for TestFlight | Create in App Store Connect → Users and Access → Keys |
|
|
664
|
-
|
|
665
|
-
### Android Secrets
|
|
666
|
-
|
|
667
|
-
| Secret Name | Description | How to Generate |
|
|
668
|
-
|------------|-------------|-----------------|
|
|
669
|
-
| `ANDROID_KEYSTORE_BASE64` | Base64-encoded keystore file | `base64 -i runic-release.keystore -o keystore.txt` |
|
|
670
|
-
| `ANDROID_KEYSTORE_PASSWORD` | Keystore password | Password from keystore creation |
|
|
671
|
-
| `ANDROID_KEY_ALIAS` | Key alias | Alias from keystore creation |
|
|
672
|
-
| `ANDROID_KEY_PASSWORD` | Key password | Password from keystore creation |
|
|
673
|
-
| `GOOGLE_PLAY_SERVICE_ACCOUNT_JSON` | Service account JSON | Create in Google Play Console → API access |
|
|
674
|
-
|
|
675
|
-
---
|
|
676
|
-
|
|
677
|
-
## Troubleshooting
|
|
678
|
-
|
|
679
|
-
### Common Issues
|
|
680
|
-
|
|
681
|
-
#### macOS Build Issues
|
|
682
|
-
|
|
683
|
-
**Problem**: `swift build` fails with "missing package"
|
|
684
|
-
|
|
685
|
-
**Solution**:
|
|
686
|
-
```bash
|
|
687
|
-
# Clean and resolve
|
|
688
|
-
rm -rf .build
|
|
689
|
-
swift package resolve
|
|
690
|
-
swift package clean
|
|
691
|
-
swift build
|
|
692
|
-
```
|
|
693
|
-
|
|
694
|
-
**Problem**: Code signing fails
|
|
695
|
-
|
|
696
|
-
**Solution**:
|
|
697
|
-
```bash
|
|
698
|
-
# Check signing identities
|
|
699
|
-
security find-identity -v -p codesigning
|
|
700
|
-
|
|
701
|
-
# Build without signing
|
|
702
|
-
./scripts/build-macos.sh --skip-signing
|
|
703
|
-
```
|
|
704
|
-
|
|
705
|
-
---
|
|
706
|
-
|
|
707
|
-
#### iOS Build Issues
|
|
708
|
-
|
|
709
|
-
**Problem**: "No provisioning profile found"
|
|
710
|
-
|
|
711
|
-
**Solution**:
|
|
712
|
-
1. Open project in Xcode
|
|
713
|
-
2. Select target → Signing & Capabilities
|
|
714
|
-
3. Enable "Automatically manage signing"
|
|
715
|
-
4. Select your team
|
|
716
|
-
|
|
717
|
-
**Problem**: Tests fail on simulator
|
|
718
|
-
|
|
719
|
-
**Solution**:
|
|
720
|
-
```bash
|
|
721
|
-
# List available simulators
|
|
722
|
-
xcrun simctl list devices
|
|
723
|
-
|
|
724
|
-
# Specify simulator in build script
|
|
725
|
-
# Edit build-ios.sh and change simulator name
|
|
726
|
-
```
|
|
727
|
-
|
|
728
|
-
---
|
|
729
|
-
|
|
730
|
-
#### Android Build Issues
|
|
731
|
-
|
|
732
|
-
**Problem**: "ANDROID_HOME is not set"
|
|
733
|
-
|
|
734
|
-
**Solution**:
|
|
735
|
-
```bash
|
|
736
|
-
# macOS/Linux
|
|
737
|
-
export ANDROID_HOME=$HOME/Library/Android/sdk
|
|
738
|
-
export PATH=$PATH:$ANDROID_HOME/platform-tools
|
|
739
|
-
export PATH=$PATH:$ANDROID_HOME/tools
|
|
740
|
-
|
|
741
|
-
# Add to ~/.bashrc or ~/.zshrc to persist
|
|
742
|
-
|
|
743
|
-
# Windows
|
|
744
|
-
setx ANDROID_HOME "%LOCALAPPDATA%\Android\Sdk"
|
|
745
|
-
```
|
|
746
|
-
|
|
747
|
-
**Problem**: Gradle build fails
|
|
748
|
-
|
|
749
|
-
**Solution**:
|
|
750
|
-
```bash
|
|
751
|
-
# Clean Gradle cache
|
|
752
|
-
cd runic-cross-platform/android
|
|
753
|
-
./gradlew clean
|
|
754
|
-
./gradlew --stop
|
|
755
|
-
|
|
756
|
-
# Clear global Gradle cache
|
|
757
|
-
rm -rf ~/.gradle/caches/
|
|
758
|
-
```
|
|
759
|
-
|
|
760
|
-
---
|
|
761
|
-
|
|
762
|
-
#### Windows Build Issues
|
|
763
|
-
|
|
764
|
-
**Problem**: "MSBuild not found"
|
|
765
|
-
|
|
766
|
-
**Solution**:
|
|
767
|
-
- Install Visual Studio 2022 with C++ development tools
|
|
768
|
-
- Add MSBuild to PATH:
|
|
769
|
-
```
|
|
770
|
-
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
|
|
771
|
-
```
|
|
772
|
-
|
|
773
|
-
**Problem**: React Native Windows initialization fails
|
|
774
|
-
|
|
775
|
-
**Solution**:
|
|
776
|
-
```bash
|
|
777
|
-
# Reinstall React Native Windows
|
|
778
|
-
cd runic-cross-platform
|
|
779
|
-
npm install react-native-windows --save
|
|
780
|
-
npx react-native-windows-init --overwrite
|
|
781
|
-
```
|
|
782
|
-
|
|
783
|
-
---
|
|
784
|
-
|
|
785
|
-
### Getting Help
|
|
786
|
-
|
|
787
|
-
**Check build logs**:
|
|
788
|
-
```bash
|
|
789
|
-
# Verbose output
|
|
790
|
-
./scripts/build-macos.sh --verbose
|
|
791
|
-
./scripts/build-ios.sh --verbose
|
|
792
|
-
./scripts/build-android.sh --verbose
|
|
793
|
-
./scripts/build-windows.sh --verbose
|
|
794
|
-
```
|
|
795
|
-
|
|
796
|
-
**Dry-run mode**:
|
|
797
|
-
```bash
|
|
798
|
-
# See what would happen without executing
|
|
799
|
-
./scripts/build-macos.sh --dry-run
|
|
800
|
-
```
|
|
801
|
-
|
|
802
|
-
**Platform-specific diagnostics**:
|
|
803
|
-
```bash
|
|
804
|
-
# macOS/iOS
|
|
805
|
-
xcodebuild -version
|
|
806
|
-
swift --version
|
|
807
|
-
|
|
808
|
-
# Android
|
|
809
|
-
./gradlew --version
|
|
810
|
-
adb devices
|
|
811
|
-
|
|
812
|
-
# React Native
|
|
813
|
-
npx react-native doctor
|
|
814
|
-
```
|
|
815
|
-
|
|
816
|
-
---
|
|
817
|
-
|
|
818
|
-
## Advanced Usage
|
|
819
|
-
|
|
820
|
-
### Custom Build Configurations
|
|
821
|
-
|
|
822
|
-
**macOS with custom output**:
|
|
823
|
-
```bash
|
|
824
|
-
./scripts/build-macos.sh \
|
|
825
|
-
--configuration release \
|
|
826
|
-
--output-dir /path/to/output \
|
|
827
|
-
--clean
|
|
828
|
-
```
|
|
829
|
-
|
|
830
|
-
**iOS archive with custom scheme**:
|
|
831
|
-
```bash
|
|
832
|
-
./scripts/build-ios.sh \
|
|
833
|
-
--scheme MyCustomScheme \
|
|
834
|
-
--configuration Release \
|
|
835
|
-
--archive
|
|
836
|
-
```
|
|
837
|
-
|
|
838
|
-
**Android with multiple variants**:
|
|
839
|
-
```bash
|
|
840
|
-
# Debug build
|
|
841
|
-
./scripts/build-android.sh --variant debug
|
|
842
|
-
|
|
843
|
-
# Release APK
|
|
844
|
-
./scripts/build-android.sh --variant release
|
|
845
|
-
|
|
846
|
-
# Release AAB
|
|
847
|
-
./scripts/build-android.sh --variant release --aab
|
|
848
|
-
```
|
|
849
|
-
|
|
850
|
-
### Continuous Integration
|
|
851
|
-
|
|
852
|
-
**Local CI testing**:
|
|
853
|
-
```bash
|
|
854
|
-
# Simulate CI environment
|
|
855
|
-
export CI=true
|
|
856
|
-
|
|
857
|
-
# Run builds as CI would
|
|
858
|
-
./scripts/build-macos.sh --skip-signing
|
|
859
|
-
./scripts/build-ios.sh --simulator --skip-signing
|
|
860
|
-
./scripts/build-android.sh --variant release
|
|
861
|
-
```
|
|
862
|
-
|
|
863
|
-
**Custom CI workflows**:
|
|
864
|
-
- Copy `scripts/ci-config.yml` to `.github/workflows/`
|
|
865
|
-
- Modify as needed for your workflow
|
|
866
|
-
- Configure required secrets
|
|
867
|
-
|
|
868
|
-
### Automated Versioning
|
|
869
|
-
|
|
870
|
-
**Update version across all platforms**:
|
|
871
|
-
```bash
|
|
872
|
-
# Update version.env
|
|
873
|
-
echo "VERSION=1.2.3" > version.env
|
|
874
|
-
|
|
875
|
-
# Builds will automatically use this version
|
|
876
|
-
./scripts/build-macos.sh
|
|
877
|
-
./scripts/build-ios.sh
|
|
878
|
-
./scripts/build-android.sh
|
|
879
|
-
```
|
|
880
|
-
|
|
881
|
-
---
|
|
882
|
-
|
|
883
|
-
## Script Maintenance
|
|
884
|
-
|
|
885
|
-
All scripts follow these conventions:
|
|
886
|
-
|
|
887
|
-
- ✅ Bash shebang: `#!/usr/bin/env bash`
|
|
888
|
-
- ✅ Strict mode: `set -e -u`
|
|
889
|
-
- ✅ Color output with terminal detection
|
|
890
|
-
- ✅ Comprehensive help via `--help`
|
|
891
|
-
- ✅ Dry-run mode via `--dry-run`
|
|
892
|
-
- ✅ Verbose mode via `--verbose`
|
|
893
|
-
- ✅ Error handling with clear messages
|
|
894
|
-
- ✅ Prerequisite checking
|
|
895
|
-
- ✅ Build summaries
|
|
896
|
-
|
|
897
|
-
**Make scripts executable**:
|
|
898
|
-
```bash
|
|
899
|
-
chmod +x scripts/*.sh
|
|
900
|
-
```
|
|
901
|
-
|
|
902
|
-
**Update all scripts**:
|
|
903
|
-
```bash
|
|
904
|
-
# Pull latest changes
|
|
905
|
-
git pull
|
|
906
|
-
|
|
907
|
-
# Make executable
|
|
908
|
-
chmod +x scripts/*.sh
|
|
909
|
-
```
|
|
910
|
-
|
|
911
|
-
---
|
|
912
|
-
|
|
913
|
-
## License
|
|
914
|
-
|
|
915
|
-
These scripts are part of the Runic project and follow the same license.
|
|
916
|
-
|
|
917
|
-
---
|
|
918
|
-
|
|
919
|
-
## Support
|
|
920
|
-
|
|
921
|
-
For issues, questions, or contributions:
|
|
922
|
-
- Open an issue on GitHub
|
|
923
|
-
- Check existing documentation
|
|
924
|
-
- Run scripts with `--verbose` for debugging
|
|
925
|
-
|
|
926
|
-
**Happy Building! 🚀**
|