@cat-factory/app 0.302.2 → 0.303.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -14
- package/app/app.config.ts +19 -10
- package/app/assets/css/main.css +13 -13
- package/app/assets/css/prose.css +22 -22
- package/app/assets/css/tokens.css +298 -0
- package/app/components/assistant/AssistantModal.vue +22 -22
- package/app/components/auth/AuthGate.vue +1 -1
- package/app/components/auth/BackendMisconfiguredScreen.vue +10 -10
- package/app/components/auth/LoginScreen.vue +34 -36
- package/app/components/auth/ResetPasswordScreen.vue +12 -12
- package/app/components/auth/UserMenu.vue +4 -4
- package/app/components/binaryCandidates/BinaryCandidatesWindow.vue +27 -25
- package/app/components/binaryOutput/BinaryOutputReport.vue +15 -15
- package/app/components/binaryOutput/StoredAssetView.vue +5 -5
- package/app/components/board/AddTaskModal.vue +17 -20
- package/app/components/board/AgentFailureCard.vue +11 -11
- package/app/components/board/AgentFailureHistory.vue +2 -2
- package/app/components/board/BoardCanvas.vue +6 -5
- package/app/components/board/CreateInitiativeModal.vue +8 -10
- package/app/components/board/DependencyConnectOverlay.vue +1 -1
- package/app/components/board/FailureHistoryList.vue +7 -7
- package/app/components/board/RecurringPipelineModal.vue +17 -17
- package/app/components/board/ReviewFrictionDialog.vue +6 -6
- package/app/components/board/StepExecutionHistory.vue +13 -13
- package/app/components/board/TaskDependencyEdges.vue +8 -8
- package/app/components/board/nodes/AgentChip.vue +10 -10
- package/app/components/board/nodes/BlockNode.vue +29 -29
- package/app/components/board/nodes/DecisionBadge.vue +2 -2
- package/app/components/board/nodes/EpicNode.vue +14 -10
- package/app/components/board/nodes/FrameSwimlanes.vue +7 -9
- package/app/components/board/nodes/InitiativeCard.vue +8 -8
- package/app/components/board/nodes/LaneGroup.vue +1 -1
- package/app/components/board/nodes/LaneTask.vue +2 -2
- package/app/components/board/nodes/ResizeGrips.vue +4 -4
- package/app/components/board/nodes/TaskCard.vue +18 -18
- package/app/components/board/nodes/TaskLane.vue +5 -5
- package/app/components/board/nodes/TaskPipelineMini.vue +18 -18
- package/app/components/bootstrap/AdoptionReviewModal.vue +29 -26
- package/app/components/bootstrap/BootstrapModal.vue +21 -23
- package/app/components/bootstrap/BootstrapRunSteps.vue +1 -1
- package/app/components/brainstorm/BrainstormWindow.vue +30 -33
- package/app/components/bugFishing/BugFishingWindow.vue +49 -49
- package/app/components/clarity/ClarityReviewWindow.vue +30 -30
- package/app/components/common/AsyncViewError.vue +5 -5
- package/app/components/common/ClarificationItem.vue +8 -13
- package/app/components/common/ConfirmDialog.vue +4 -2
- package/app/components/common/DescriptorFields.vue +1 -1
- package/app/components/common/EmptyState.vue +3 -3
- package/app/components/common/InterviewGateNotice.vue +7 -7
- package/app/components/common/KeyboardShortcutsHelp.vue +1 -1
- package/app/components/common/MarkdownProse.vue +14 -13
- package/app/components/consensus/ConsensusSessionWindow.vue +26 -26
- package/app/components/context/ContextAttachmentFields.vue +17 -17
- package/app/components/docs/DocInterviewWindow.vue +14 -14
- package/app/components/documents/ContextDocumentPicker.vue +17 -17
- package/app/components/documents/DocumentImportModal.vue +7 -7
- package/app/components/documents/DocumentSourceConnectModal.vue +3 -3
- package/app/components/documents/DocumentSyncState.vue +5 -5
- package/app/components/documents/DocumentTemplatesModal.vue +15 -15
- package/app/components/documents/RepoContextDocPicker.vue +5 -5
- package/app/components/documents/SpawnPreviewModal.vue +12 -12
- package/app/components/documents/StartFromDesignModal.vue +11 -11
- package/app/components/documents/TaskContextDocs.vue +5 -5
- package/app/components/environments/EnvSetupStepper.vue +6 -6
- package/app/components/environments/EnvironmentStatusPanel.vue +17 -17
- package/app/components/environments/steps/EnvPickStep.vue +3 -3
- package/app/components/environments/steps/EnvPreflightStep.vue +9 -9
- package/app/components/environments/steps/EnvReviewStep.vue +25 -22
- package/app/components/environments/steps/EnvSaveStep.vue +7 -5
- package/app/components/environments/steps/JourneyStepNav.vue +1 -1
- package/app/components/focus/BlockFocusView.vue +17 -19
- package/app/components/followUp/FollowUpWindow.vue +23 -23
- package/app/components/forkDecision/ForkDecisionWindow.vue +37 -39
- package/app/components/foundational/FoundationalContractSummary.vue +7 -7
- package/app/components/foundational/FoundationalServiceCatalogList.vue +11 -11
- package/app/components/foundational/FoundationalServiceManager.vue +1 -1
- package/app/components/foundational/FoundationalServiceRegistry.vue +13 -13
- package/app/components/foundational/FoundationalServiceSources.vue +13 -13
- package/app/components/foundational/FoundationalSuppressions.vue +7 -7
- package/app/components/foundational/ServiceCatalogConnection.vue +10 -10
- package/app/components/fragments/FragmentLibraryManager.vue +41 -44
- package/app/components/fragments/FragmentSelector.vue +13 -13
- package/app/components/fragments/GitHubDocUrlImport.vue +1 -1
- package/app/components/gates/GateFailingCheckList.vue +5 -5
- package/app/components/gates/GateResultView.vue +50 -47
- package/app/components/github/AddServiceFromRepoModal.vue +14 -14
- package/app/components/github/BranchProtectionPreflight.vue +13 -13
- package/app/components/github/GitHubConnect.vue +7 -7
- package/app/components/github/GitHubOnboarding.vue +7 -7
- package/app/components/github/GitHubPanel.vue +37 -40
- package/app/components/github/RepoTreeBrowser.vue +18 -18
- package/app/components/humanTest/HumanTestWindow.vue +30 -33
- package/app/components/initiative/InitiativePlanNotice.vue +5 -5
- package/app/components/initiative/InitiativePlanReview.vue +27 -29
- package/app/components/initiative/InitiativePlanningWindow.vue +10 -10
- package/app/components/initiative/InitiativeTrackerWindow.vue +71 -65
- package/app/components/inputGate/InputGateNotice.vue +2 -4
- package/app/components/judge/JudgeResultView.vue +30 -32
- package/app/components/kaizen/KaizenPanel.vue +40 -36
- package/app/components/kaizen/KaizenStepStatus.vue +21 -21
- package/app/components/layout/AccountAuditLog.vue +10 -10
- package/app/components/layout/AccountDeploymentSettings.vue +20 -20
- package/app/components/layout/AccountFailureKindRules.vue +13 -13
- package/app/components/layout/AccountFoundationalSettings.vue +1 -1
- package/app/components/layout/AccountFragmentSettings.vue +1 -1
- package/app/components/layout/AccountModelPolicySettings.vue +9 -9
- package/app/components/layout/AccountPlatformAlertSettings.vue +11 -11
- package/app/components/layout/AccountRiskPolicySettings.vue +2 -2
- package/app/components/layout/AccountRunCredentialSettings.vue +5 -5
- package/app/components/layout/AccountSkillSettings.vue +1 -1
- package/app/components/layout/AccountTeamSettings.vue +23 -15
- package/app/components/layout/AiProvidersBanner.vue +11 -8
- package/app/components/layout/AppearanceSwitcher.vue +108 -0
- package/app/components/layout/BoardSwitcher.vue +8 -11
- package/app/components/layout/BoardToolbar.vue +3 -3
- package/app/components/layout/CommandBar.vue +7 -9
- package/app/components/layout/ConnectionStatusBanner.vue +2 -2
- package/app/components/layout/DefaultTestEnvBanner.vue +5 -5
- package/app/components/layout/GitHubPatBanner.vue +5 -5
- package/app/components/layout/GitHubPatPermissionsBanner.vue +16 -10
- package/app/components/layout/InfraSetupBanner.vue +6 -6
- package/app/components/layout/IntegrationsHub.vue +15 -15
- package/app/components/layout/LanguageSwitcher.vue +5 -5
- package/app/components/layout/ModelProvidersHub.vue +13 -16
- package/app/components/layout/NotificationsInbox.vue +10 -10
- package/app/components/layout/PersonalSetupModal.vue +8 -8
- package/app/components/layout/ProviderConfigBanner.vue +4 -4
- package/app/components/layout/RolePrompt.vue +7 -7
- package/app/components/layout/SideBar.vue +6 -4
- package/app/components/layout/SpendWarningBanner.vue +17 -14
- package/app/components/layout/TranslationWarningBanner.vue +4 -4
- package/app/components/layout/UiModeSwitcher.vue +13 -13
- package/app/components/layout/UiRoleSwitcher.vue +8 -8
- package/app/components/layout/WorkspaceMembersSettings.vue +15 -11
- package/app/components/media/ArtifactLightbox.vue +13 -13
- package/app/components/media/ImageCompare.vue +31 -24
- package/app/components/merge/MergeEffortChips.vue +2 -2
- package/app/components/notifications/NotificationSettingsPanel.vue +14 -12
- package/app/components/observability/OutcomeFilterChips.vue +6 -6
- package/app/components/observability/RunFailureSummary.vue +28 -25
- package/app/components/observability/StepMetricsBar.vue +26 -28
- package/app/components/observability/StepModelActivity.vue +2 -2
- package/app/components/observability/ToolCallList.vue +24 -24
- package/app/components/outcome/OutcomeSummaryWindow.vue +47 -47
- package/app/components/palettes/AgentPalette.vue +8 -8
- package/app/components/palettes/AgentTierSelect.vue +1 -1
- package/app/components/palettes/PipelinePurposeSelect.vue +1 -1
- package/app/components/panels/AgentStepDetail.vue +52 -51
- package/app/components/panels/AttemptEntryHeader.vue +4 -6
- package/app/components/panels/DecisionModal.vue +7 -7
- package/app/components/panels/GenericStructuredResultView.vue +7 -7
- package/app/components/panels/InspectorPanel.vue +17 -17
- package/app/components/panels/MergerResultView.vue +19 -19
- package/app/components/panels/ObservabilityPanel.vue +115 -123
- package/app/components/panels/OperatorDashboardPanel.vue +89 -97
- package/app/components/panels/ReportsPanel.vue +69 -66
- package/app/components/panels/ReportsSpendBreakdown.vue +9 -9
- package/app/components/panels/ResultWindowShell.vue +38 -38
- package/app/components/panels/RunDetailLoadState.vue +2 -2
- package/app/components/panels/StepContainerStatus.vue +9 -9
- package/app/components/panels/StepDelegatedStatus.logic.spec.ts +135 -0
- package/app/components/panels/StepDelegatedStatus.logic.ts +160 -0
- package/app/components/panels/StepDelegatedStatus.vue +181 -0
- package/app/components/panels/StepEffortReport.vue +16 -15
- package/app/components/panels/StepFragmentAdherence.vue +14 -10
- package/app/components/panels/StepMetadataCard.vue +74 -45
- package/app/components/panels/StepReproductionReport.vue +25 -21
- package/app/components/panels/StepRunMeta.vue +20 -20
- package/app/components/panels/StepTestReport.logic.spec.ts +8 -3
- package/app/components/panels/StepTestReport.logic.ts +4 -4
- package/app/components/panels/StepTestReport.vue +28 -28
- package/app/components/panels/StepToolServers.vue +14 -11
- package/app/components/panels/StepValidationReport.vue +7 -7
- package/app/components/panels/inspector/ContainerSummary.vue +9 -9
- package/app/components/panels/inspector/DocReferenceRepos.vue +3 -3
- package/app/components/panels/inspector/EnvProbeReport.vue +24 -27
- package/app/components/panels/inspector/EpicChildren.vue +8 -12
- package/app/components/panels/inspector/FrontendBindingsResolved.vue +11 -11
- package/app/components/panels/inspector/FrontendConfig.vue +37 -41
- package/app/components/panels/inspector/InitiativeInspector.vue +3 -3
- package/app/components/panels/inspector/InspectorSection.vue +6 -6
- package/app/components/panels/inspector/RecurringScheduleSettings.vue +16 -19
- package/app/components/panels/inspector/ServiceConnections.vue +2 -2
- package/app/components/panels/inspector/ServiceReleaseHealthConfig.vue +2 -2
- package/app/components/panels/inspector/ServiceSelfTests.vue +21 -17
- package/app/components/panels/inspector/ServiceTestConfig.vue +51 -59
- package/app/components/panels/inspector/ServiceTestSecrets.vue +5 -5
- package/app/components/panels/inspector/ServiceTestingContext.vue +3 -3
- package/app/components/panels/inspector/ServiceValidationConfig.vue +2 -2
- package/app/components/panels/inspector/TaskAgentConfig.vue +3 -3
- package/app/components/panels/inspector/TaskAprioriBranches.vue +8 -5
- package/app/components/panels/inspector/TaskDependencies.vue +1 -1
- package/app/components/panels/inspector/TaskEstimateBadge.vue +11 -11
- package/app/components/panels/inspector/TaskExecution.vue +17 -17
- package/app/components/panels/inspector/TaskReviewTarget.vue +2 -2
- package/app/components/panels/inspector/TaskRunSettings.vue +35 -37
- package/app/components/panels/inspector/TaskStructure.vue +3 -3
- package/app/components/pipeline/AgentKindIcon.vue +1 -1
- package/app/components/pipeline/AgentPromptEditor.vue +17 -17
- package/app/components/pipeline/BinaryOutputStepPicker.vue +42 -56
- package/app/components/pipeline/EstimateThresholdFields.vue +4 -4
- package/app/components/pipeline/GateConfigFields.vue +13 -10
- package/app/components/pipeline/IterationCapPrompt.vue +4 -2
- package/app/components/pipeline/PipelineBuilder.vue +47 -55
- package/app/components/pipeline/PipelineHealthModal.vue +27 -29
- package/app/components/pipeline/PipelinePicker.vue +10 -10
- package/app/components/pipeline/PipelinePreview.vue +10 -10
- package/app/components/pipeline/PipelineProgress.vue +64 -67
- package/app/components/prReview/PrReviewPhaseBadge.vue +7 -7
- package/app/components/prReview/PrReviewWindow.vue +75 -77
- package/app/components/providers/AiPresetMismatchDialog.vue +5 -5
- package/app/components/providers/AiProviderOnboardingModal.vue +9 -9
- package/app/components/providers/ApiKeysSection.vue +13 -13
- package/app/components/providers/PersonalCredentialModal.vue +2 -2
- package/app/components/providers/PersonalSubscriptionSection.vue +10 -10
- package/app/components/providers/SignInRequiredNotice.vue +1 -1
- package/app/components/providers/VendorCredentialsModal.vue +10 -10
- package/app/components/provisioning/ProvisioningLogsDrawer.vue +13 -13
- package/app/components/ralph/RalphLoopResultView.vue +28 -30
- package/app/components/recurring/RecurrenceEditor.vue +2 -2
- package/app/components/requirements/RequirementsReviewWindow.vue +51 -58
- package/app/components/riskPolicy/RiskPolicyPicker.vue +12 -15
- package/app/components/riskPolicy/RiskPolicyPreview.vue +14 -14
- package/app/components/sandbox/SandboxPanel.vue +58 -59
- package/app/components/settings/AccountSettingsPanel.vue +1 -1
- package/app/components/settings/ApiTokensPanel.vue +10 -10
- package/app/components/settings/BudgetSettings.vue +18 -22
- package/app/components/settings/CapabilityCredentialsPanel.vue +15 -15
- package/app/components/settings/CloudflareHandlerSection.vue +20 -20
- package/app/components/settings/ComposeEnvironmentSetupSection.vue +13 -13
- package/app/components/settings/ConnectionTestVerdict.vue +3 -3
- package/app/components/settings/ConnectionWarnings.vue +1 -1
- package/app/components/settings/ConsensusGroupsSection.vue +27 -35
- package/app/components/settings/CustomManifestTypeEditor.vue +10 -10
- package/app/components/settings/DefaultProvisionTypeSection.vue +6 -6
- package/app/components/settings/InfraHandlersConfigurator.vue +24 -22
- package/app/components/settings/InfrastructureBackendPicker.vue +6 -6
- package/app/components/settings/InfrastructureWindow.vue +5 -5
- package/app/components/settings/IssueTrackerPanel.vue +29 -23
- package/app/components/settings/KubernetesEngineForm.vue +11 -11
- package/app/components/settings/KubernetesEnvironmentForm.vue +4 -4
- package/app/components/settings/LocalContainerPoolSettings.vue +6 -11
- package/app/components/settings/LocalModelEndpointsPanel.vue +20 -18
- package/app/components/settings/McpAuthorizeScreen.vue +13 -15
- package/app/components/settings/McpOAuthCallbackScreen.vue +16 -10
- package/app/components/settings/MergeClassRulesEditor.vue +6 -9
- package/app/components/settings/MergeRolePolicyEditor.vue +16 -16
- package/app/components/settings/ModelConfigurationPanel.vue +23 -30
- package/app/components/settings/ModelPresetHealthModal.vue +15 -13
- package/app/components/settings/ObservabilityConnectionPanel.vue +4 -4
- package/app/components/settings/OpenRouterCatalogPanel.vue +26 -19
- package/app/components/settings/PackageRegistriesPanel.vue +8 -8
- package/app/components/settings/ProviderConnectionTab.vue +8 -11
- package/app/components/settings/ProviderManifestEditor.vue +9 -9
- package/app/components/settings/ProviderPreferenceEditor.vue +8 -8
- package/app/components/settings/RiskPolicyCreateForm.vue +10 -10
- package/app/components/settings/RiskPolicyEditorRow.vue +14 -14
- package/app/components/settings/RiskPolicyHealthModal.vue +15 -13
- package/app/components/settings/RiskPolicyInheritedRow.vue +1 -1
- package/app/components/settings/RiskPolicyPanel.vue +10 -15
- package/app/components/settings/ServiceFragmentDefaultsPanel.vue +7 -7
- package/app/components/settings/SharedStacksPanel.vue +9 -12
- package/app/components/settings/TaskSourceCard.vue +4 -4
- package/app/components/settings/TaskTypeSuppressionsPanel.vue +6 -6
- package/app/components/settings/ToolServerChecklist.vue +36 -29
- package/app/components/settings/UsageSettings.vue +15 -15
- package/app/components/settings/UserSecretsSection.vue +9 -12
- package/app/components/settings/WorkspaceMetadataSettings.vue +5 -5
- package/app/components/settings/WorkspaceSettingsPanel.vue +47 -47
- package/app/components/skills/ReviewSkillQueue.vue +10 -10
- package/app/components/skills/SkillLibraryManager.vue +23 -20
- package/app/components/slack/SlackPanel.vue +13 -17
- package/app/components/spec/ServiceSpecWindow.vue +45 -42
- package/app/components/tasks/BugHuntModal.vue +24 -27
- package/app/components/tasks/ContextIssuePicker.vue +11 -11
- package/app/components/tasks/TaskContextIssues.vue +3 -3
- package/app/components/tasks/TaskImportModal.vue +7 -7
- package/app/components/tasks/TaskSourceConnectModal.vue +10 -8
- package/app/components/testing/TestReportWindow.vue +99 -82
- package/app/components/theme/ThemeImportModal.vue +115 -0
- package/app/components/tutorial/TutorialCatalogue.vue +9 -9
- package/app/components/tutorial/TutorialNudge.vue +5 -5
- package/app/components/tutorial/TutorialOverlay.vue +12 -12
- package/app/components/tutorial/TutorialPrompt.vue +6 -9
- package/app/components/vcs/GitLabConnect.vue +4 -4
- package/app/components/vcs/VcsConnectSurfaces.vue +2 -2
- package/app/components/visualConfirm/VisualConfirmationWindow.vue +36 -36
- package/app/composables/api/client.ts +6 -1
- package/app/composables/usePipelineErrorToast.ts +17 -0
- package/app/modular/agent-kinds.ts +24 -0
- package/app/pages/index.vue +5 -5
- package/app/plugins/theme.client.ts +125 -0
- package/app/spa-loading-template.html +52 -14
- package/app/stores/agents.ts +1 -1
- package/app/stores/theme.spec.ts +56 -0
- package/app/stores/theme.ts +87 -0
- package/app/types/domain.ts +19 -0
- package/app/types/execution.ts +4 -0
- package/app/utils/agentOutput.ts +1 -1
- package/app/utils/binaryOutput.ts +6 -6
- package/app/utils/bootstrapSteps.ts +14 -14
- package/app/utils/catalog.ts +87 -83
- package/app/utils/colorTint.ts +10 -0
- package/app/utils/failureKinds.ts +1 -0
- package/app/utils/observability.ts +3 -3
- package/app/utils/pipelineRender.ts +13 -17
- package/app/utils/swimlanes.ts +4 -4
- package/app/utils/theme/bootPalette.spec.ts +54 -0
- package/app/utils/theme/bootPalette.ts +108 -0
- package/app/utils/theme/builtins.spec.ts +38 -0
- package/app/utils/theme/builtins.ts +55 -0
- package/app/utils/theme/css.ts +162 -0
- package/app/utils/theme/doc.ts +353 -0
- package/app/utils/theme/link.ts +93 -0
- package/app/utils/theme/presets.ts +509 -0
- package/app/utils/theme/theme.spec.ts +224 -0
- package/i18n/locales/de.json +61 -4
- package/i18n/locales/en.json +70 -4
- package/i18n/locales/es.json +61 -4
- package/i18n/locales/fr.json +61 -4
- package/i18n/locales/he.json +61 -4
- package/i18n/locales/it.json +61 -4
- package/i18n/locales/ja.json +61 -4
- package/i18n/locales/pl.json +61 -4
- package/i18n/locales/tr.json +61 -4
- package/i18n/locales/uk.json +61 -4
- package/nuxt.config.ts +37 -11
- package/package.json +10 -9
|
@@ -309,15 +309,15 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
309
309
|
<template v-else>
|
|
310
310
|
<!-- connection header -->
|
|
311
311
|
<div
|
|
312
|
-
class="flex items-center justify-between gap-2 rounded-md border border-
|
|
312
|
+
class="flex items-center justify-between gap-2 rounded-md border border-default bg-default/60 px-3 py-2"
|
|
313
313
|
>
|
|
314
314
|
<div class="flex items-center gap-2 min-w-0">
|
|
315
|
-
<UIcon :name="providerIcon" class="h-5 w-5 text-
|
|
315
|
+
<UIcon :name="providerIcon" class="h-5 w-5 text-toned" />
|
|
316
316
|
<div class="min-w-0">
|
|
317
|
-
<div class="truncate text-sm text-
|
|
317
|
+
<div class="truncate text-sm text-default">
|
|
318
318
|
{{ github.connection?.accountLogin }}
|
|
319
319
|
</div>
|
|
320
|
-
<div class="text-[11px] text-
|
|
320
|
+
<div class="text-[11px] text-dimmed">{{ connectionMeta }}</div>
|
|
321
321
|
</div>
|
|
322
322
|
</div>
|
|
323
323
|
<div class="flex items-center gap-1">
|
|
@@ -371,7 +371,7 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
371
371
|
</UButton>
|
|
372
372
|
</div>
|
|
373
373
|
|
|
374
|
-
<div v-if="github.loading" class="flex items-center gap-2 py-6 text-sm text-
|
|
374
|
+
<div v-if="github.loading" class="flex items-center gap-2 py-6 text-sm text-muted">
|
|
375
375
|
<UIcon name="i-lucide-loader" class="h-4 w-4 animate-spin" />
|
|
376
376
|
{{ t('github.panel.loading') }}
|
|
377
377
|
</div>
|
|
@@ -380,7 +380,7 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
380
380
|
<section v-else-if="tab === 'repos'" class="space-y-2">
|
|
381
381
|
<!-- manage which repos this board links -->
|
|
382
382
|
<div class="flex items-center justify-between">
|
|
383
|
-
<span class="text-[11px] uppercase tracking-wide text-
|
|
383
|
+
<span class="text-[11px] uppercase tracking-wide text-dimmed">
|
|
384
384
|
{{ t('github.panel.linkedToBoard') }}
|
|
385
385
|
</span>
|
|
386
386
|
<UButton
|
|
@@ -398,23 +398,20 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
398
398
|
</UButton>
|
|
399
399
|
</div>
|
|
400
400
|
|
|
401
|
-
<div
|
|
402
|
-
|
|
403
|
-
class="space-y-2 rounded-md border border-slate-700 bg-slate-900/80 p-3"
|
|
404
|
-
>
|
|
405
|
-
<p class="text-[12px] text-slate-400">
|
|
401
|
+
<div v-if="managing" class="space-y-2 rounded-md border border-muted bg-default/80 p-3">
|
|
402
|
+
<p class="text-[12px] text-muted">
|
|
406
403
|
{{
|
|
407
404
|
isAppConnection ? t('vcs.panel.manageHintApp') : t('vcs.panel.manageHintToken')
|
|
408
405
|
}}
|
|
409
406
|
</p>
|
|
410
407
|
<div
|
|
411
408
|
v-if="github.loadingAvailable"
|
|
412
|
-
class="flex items-center gap-2 py-3 text-sm text-
|
|
409
|
+
class="flex items-center gap-2 py-3 text-sm text-muted"
|
|
413
410
|
>
|
|
414
411
|
<UIcon name="i-lucide-loader" class="h-4 w-4 animate-spin" />
|
|
415
412
|
{{ t('github.panel.loadingRepos') }}
|
|
416
413
|
</div>
|
|
417
|
-
<p v-else-if="!github.availableRepos.length" class="py-2 text-sm text-
|
|
414
|
+
<p v-else-if="!github.availableRepos.length" class="py-2 text-sm text-muted">
|
|
418
415
|
{{
|
|
419
416
|
isAppConnection
|
|
420
417
|
? t('vcs.panel.noAvailableReposApp')
|
|
@@ -426,15 +423,15 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
426
423
|
v-for="r in github.availableRepos"
|
|
427
424
|
:key="r.githubId"
|
|
428
425
|
type="button"
|
|
429
|
-
class="flex w-full items-center gap-2 rounded px-2 py-1.5 text-start transition hover:bg-
|
|
426
|
+
class="flex w-full items-center gap-2 rounded px-2 py-1.5 text-start transition hover:bg-elevated/60"
|
|
430
427
|
@click="toggleSelected(r.githubId)"
|
|
431
428
|
>
|
|
432
429
|
<UIcon
|
|
433
430
|
:name="selected.has(r.githubId) ? 'i-lucide-check-square' : 'i-lucide-square'"
|
|
434
431
|
class="h-4 w-4 shrink-0"
|
|
435
|
-
:class="selected.has(r.githubId) ? 'text-
|
|
432
|
+
:class="selected.has(r.githubId) ? 'text-primary' : 'text-dimmed'"
|
|
436
433
|
/>
|
|
437
|
-
<span class="truncate text-sm text-
|
|
434
|
+
<span class="truncate text-sm text-default">{{ r.owner }}/{{ r.name }}</span>
|
|
438
435
|
<UBadge v-if="r.private" color="neutral" variant="subtle" size="sm">
|
|
439
436
|
{{ t('github.panel.private') }}
|
|
440
437
|
</UBadge>
|
|
@@ -465,7 +462,7 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
465
462
|
</div>
|
|
466
463
|
</div>
|
|
467
464
|
|
|
468
|
-
<p v-if="!github.repos.length && !managing" class="py-4 text-sm text-
|
|
465
|
+
<p v-if="!github.repos.length && !managing" class="py-4 text-sm text-muted">
|
|
469
466
|
{{ t('github.panel.noLinkedRepos') }}
|
|
470
467
|
</p>
|
|
471
468
|
|
|
@@ -477,13 +474,13 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
477
474
|
with a control whose result is the operator's to act on. -->
|
|
478
475
|
<BranchProtectionPreflight
|
|
479
476
|
v-if="github.repos.length && access.canManageIntegrations.value"
|
|
480
|
-
class="rounded-md border border-
|
|
477
|
+
class="rounded-md border border-default bg-default/40 p-3"
|
|
481
478
|
/>
|
|
482
479
|
|
|
483
480
|
<div
|
|
484
481
|
v-for="repo in github.repos"
|
|
485
482
|
:key="repo.githubId"
|
|
486
|
-
class="rounded-md border border-
|
|
483
|
+
class="rounded-md border border-default bg-default/60"
|
|
487
484
|
>
|
|
488
485
|
<div class="flex items-center justify-between gap-2 px-3 py-2">
|
|
489
486
|
<button
|
|
@@ -496,9 +493,9 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
496
493
|
? 'i-lucide-chevron-down'
|
|
497
494
|
: 'i-lucide-chevron-right'
|
|
498
495
|
"
|
|
499
|
-
class="h-4 w-4 shrink-0 text-
|
|
496
|
+
class="h-4 w-4 shrink-0 text-dimmed"
|
|
500
497
|
/>
|
|
501
|
-
<span class="truncate text-sm text-
|
|
498
|
+
<span class="truncate text-sm text-default">
|
|
502
499
|
{{ repo.owner }}/{{ repo.name }}
|
|
503
500
|
</span>
|
|
504
501
|
<UBadge v-if="repo.private" color="neutral" variant="subtle" size="sm">
|
|
@@ -506,13 +503,13 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
506
503
|
</UBadge>
|
|
507
504
|
</button>
|
|
508
505
|
<div class="flex items-center gap-2">
|
|
509
|
-
<span v-if="repo.defaultBranch" class="text-[11px] text-
|
|
506
|
+
<span v-if="repo.defaultBranch" class="text-[11px] text-dimmed">
|
|
510
507
|
{{ repo.defaultBranch }}
|
|
511
508
|
</span>
|
|
512
509
|
<ULink
|
|
513
510
|
:to="github.repoUrl(repo.githubId) ?? '#'"
|
|
514
511
|
target="_blank"
|
|
515
|
-
class="text-[11px] text-
|
|
512
|
+
class="text-[11px] text-primary hover:underline"
|
|
516
513
|
>
|
|
517
514
|
{{ t('github.panel.open') }}
|
|
518
515
|
</ULink>
|
|
@@ -521,21 +518,21 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
521
518
|
|
|
522
519
|
<div
|
|
523
520
|
v-if="expandedRepo === repo.githubId"
|
|
524
|
-
class="space-y-2 border-t border-
|
|
521
|
+
class="space-y-2 border-t border-default px-3 py-2"
|
|
525
522
|
>
|
|
526
523
|
<div
|
|
527
524
|
v-for="b in github.branches[repo.githubId] ?? []"
|
|
528
525
|
:key="b.name"
|
|
529
526
|
class="flex items-center justify-between gap-2 text-[12px]"
|
|
530
527
|
>
|
|
531
|
-
<span class="flex items-center gap-1.5 truncate text-
|
|
532
|
-
<UIcon name="i-lucide-git-branch" class="h-3.5 w-3.5 text-
|
|
528
|
+
<span class="flex items-center gap-1.5 truncate text-toned">
|
|
529
|
+
<UIcon name="i-lucide-git-branch" class="h-3.5 w-3.5 text-dimmed" />
|
|
533
530
|
{{ b.name }}
|
|
534
531
|
<UBadge v-if="b.protected" color="warning" variant="subtle" size="sm">
|
|
535
532
|
{{ t('github.panel.protected') }}
|
|
536
533
|
</UBadge>
|
|
537
534
|
</span>
|
|
538
|
-
<code class="text-[10px] text-
|
|
535
|
+
<code class="text-[10px] text-dimmed">{{ b.headSha.slice(0, 7) }}</code>
|
|
539
536
|
</div>
|
|
540
537
|
|
|
541
538
|
<!-- new branch -->
|
|
@@ -591,7 +588,7 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
591
588
|
|
|
592
589
|
<div
|
|
593
590
|
v-if="showPrForm"
|
|
594
|
-
class="space-y-2 rounded-md border border-
|
|
591
|
+
class="space-y-2 rounded-md border border-muted bg-default/80 p-3"
|
|
595
592
|
>
|
|
596
593
|
<UFormField :label="t('github.panel.repository')">
|
|
597
594
|
<UDropdownMenu :items="repoMenu" :content="{ align: 'start' }">
|
|
@@ -635,19 +632,19 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
635
632
|
</div>
|
|
636
633
|
</div>
|
|
637
634
|
|
|
638
|
-
<p v-if="!github.pulls.length" class="py-4 text-sm text-
|
|
635
|
+
<p v-if="!github.pulls.length" class="py-4 text-sm text-muted">
|
|
639
636
|
{{ t(pullTerms.none) }}
|
|
640
637
|
</p>
|
|
641
638
|
<div
|
|
642
639
|
v-for="pr in github.pulls"
|
|
643
640
|
:key="`${pr.repoGithubId}-${pr.number}`"
|
|
644
|
-
class="flex items-center justify-between gap-2 rounded-md border border-
|
|
641
|
+
class="flex items-center justify-between gap-2 rounded-md border border-default bg-default/60 px-3 py-2"
|
|
645
642
|
>
|
|
646
643
|
<div class="min-w-0">
|
|
647
|
-
<div class="truncate text-sm text-
|
|
648
|
-
<span class="text-
|
|
644
|
+
<div class="truncate text-sm text-default">
|
|
645
|
+
<span class="text-dimmed">#{{ pr.number }}</span> {{ pr.title }}
|
|
649
646
|
</div>
|
|
650
|
-
<div class="truncate text-[11px] text-
|
|
647
|
+
<div class="truncate text-[11px] text-dimmed">
|
|
651
648
|
{{ github.repoFor(pr.repoGithubId)?.name }} · {{ pr.headRef }} → {{ pr.baseRef }}
|
|
652
649
|
</div>
|
|
653
650
|
</div>
|
|
@@ -672,7 +669,7 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
672
669
|
<ULink
|
|
673
670
|
:to="github.pullUrl(pr) ?? '#'"
|
|
674
671
|
target="_blank"
|
|
675
|
-
class="text-[11px] text-
|
|
672
|
+
class="text-[11px] text-primary hover:underline"
|
|
676
673
|
>
|
|
677
674
|
{{ t('github.panel.open') }}
|
|
678
675
|
</ULink>
|
|
@@ -682,19 +679,19 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
682
679
|
|
|
683
680
|
<!-- issues -->
|
|
684
681
|
<section v-else class="space-y-2">
|
|
685
|
-
<p v-if="!github.issues.length" class="py-4 text-sm text-
|
|
682
|
+
<p v-if="!github.issues.length" class="py-4 text-sm text-muted">
|
|
686
683
|
{{ t('github.panel.noIssues') }}
|
|
687
684
|
</p>
|
|
688
685
|
<div
|
|
689
686
|
v-for="issue in github.issues"
|
|
690
687
|
:key="`${issue.repoGithubId}-${issue.number}`"
|
|
691
|
-
class="flex items-center justify-between gap-2 rounded-md border border-
|
|
688
|
+
class="flex items-center justify-between gap-2 rounded-md border border-default bg-default/60 px-3 py-2"
|
|
692
689
|
>
|
|
693
690
|
<div class="min-w-0">
|
|
694
|
-
<div class="truncate text-sm text-
|
|
695
|
-
<span class="text-
|
|
691
|
+
<div class="truncate text-sm text-default">
|
|
692
|
+
<span class="text-dimmed">#{{ issue.number }}</span> {{ issue.title }}
|
|
696
693
|
</div>
|
|
697
|
-
<div class="truncate text-[11px] text-
|
|
694
|
+
<div class="truncate text-[11px] text-dimmed">
|
|
698
695
|
{{ github.repoFor(issue.repoGithubId)?.name }}
|
|
699
696
|
<span v-if="issue.labels.length">· {{ issue.labels.join(', ') }}</span>
|
|
700
697
|
</div>
|
|
@@ -710,7 +707,7 @@ async function merge(pr: GitHubPullRequest) {
|
|
|
710
707
|
<ULink
|
|
711
708
|
:to="github.issueUrl(issue) ?? '#'"
|
|
712
709
|
target="_blank"
|
|
713
|
-
class="text-[11px] text-
|
|
710
|
+
class="text-[11px] text-primary hover:underline"
|
|
714
711
|
>
|
|
715
712
|
{{ t('github.panel.open') }}
|
|
716
713
|
</ULink>
|
|
@@ -179,7 +179,7 @@ watch(
|
|
|
179
179
|
{{ t('github.repoTree.root') }}
|
|
180
180
|
</UButton>
|
|
181
181
|
<template v-for="crumb in breadcrumbs" :key="crumb.path">
|
|
182
|
-
<span class="text-
|
|
182
|
+
<span class="text-app-600">/</span>
|
|
183
183
|
<UButton
|
|
184
184
|
size="xs"
|
|
185
185
|
variant="ghost"
|
|
@@ -193,14 +193,14 @@ watch(
|
|
|
193
193
|
</div>
|
|
194
194
|
|
|
195
195
|
<!-- listing -->
|
|
196
|
-
<div class="max-h-56 overflow-auto rounded border border-
|
|
197
|
-
<div v-if="loading" class="p-3 text-sm text-
|
|
196
|
+
<div class="max-h-56 overflow-auto rounded border border-default">
|
|
197
|
+
<div v-if="loading" class="p-3 text-sm text-muted">
|
|
198
198
|
{{ t('github.repoTree.loading') }}
|
|
199
199
|
</div>
|
|
200
|
-
<div v-else-if="isEmpty" class="p-3 text-sm text-
|
|
200
|
+
<div v-else-if="isEmpty" class="p-3 text-sm text-muted">
|
|
201
201
|
{{ mode === 'dir' ? t('github.repoTree.noSubdirectories') : t('github.repoTree.empty') }}
|
|
202
202
|
</div>
|
|
203
|
-
<ul v-else class="divide-y divide-
|
|
203
|
+
<ul v-else class="divide-y divide-default">
|
|
204
204
|
<li
|
|
205
205
|
v-for="entry in dirEntries"
|
|
206
206
|
:key="entry.path"
|
|
@@ -208,22 +208,22 @@ watch(
|
|
|
208
208
|
>
|
|
209
209
|
<button
|
|
210
210
|
type="button"
|
|
211
|
-
class="flex items-center gap-2 truncate text-sm text-
|
|
211
|
+
class="flex items-center gap-2 truncate text-sm text-default hover:text-primary"
|
|
212
212
|
@click="browseTo(entry.path)"
|
|
213
213
|
>
|
|
214
|
-
<UIcon name="i-lucide-folder" class="h-4 w-4 shrink-0 text-
|
|
214
|
+
<UIcon name="i-lucide-folder" class="h-4 w-4 shrink-0 text-app-warning-400" />
|
|
215
215
|
<span class="truncate">{{ entry.name }}</span>
|
|
216
216
|
</button>
|
|
217
217
|
<span
|
|
218
218
|
v-if="clashes(entry)"
|
|
219
|
-
class="flex shrink-0 items-center gap-1 text-xs text-
|
|
219
|
+
class="flex shrink-0 items-center gap-1 text-xs text-app-warning-400"
|
|
220
220
|
>
|
|
221
221
|
<UIcon name="i-lucide-circle-alert" class="h-3.5 w-3.5" />
|
|
222
222
|
{{ t('github.repoTree.exists') }}
|
|
223
223
|
</span>
|
|
224
224
|
<span
|
|
225
225
|
v-else-if="mode === 'dir' && isAdded(entry.path)"
|
|
226
|
-
class="flex shrink-0 items-center gap-1 text-xs text-
|
|
226
|
+
class="flex shrink-0 items-center gap-1 text-xs text-dimmed"
|
|
227
227
|
>
|
|
228
228
|
<UIcon name="i-lucide-check" class="h-3.5 w-3.5" />
|
|
229
229
|
{{ t('github.repoTree.added') }}
|
|
@@ -242,7 +242,7 @@ watch(
|
|
|
242
242
|
<!-- multiple: a bulk header so a whole directory of documents is one click -->
|
|
243
243
|
<li
|
|
244
244
|
v-if="selectableFiles.length > 1"
|
|
245
|
-
class="flex items-center gap-2 bg-
|
|
245
|
+
class="flex items-center gap-2 bg-default/60 px-3 py-1.5"
|
|
246
246
|
>
|
|
247
247
|
<UCheckbox
|
|
248
248
|
:model-value="allSelected"
|
|
@@ -258,7 +258,7 @@ watch(
|
|
|
258
258
|
/>
|
|
259
259
|
<button
|
|
260
260
|
type="button"
|
|
261
|
-
class="text-xs text-
|
|
261
|
+
class="text-xs text-muted hover:text-primary"
|
|
262
262
|
@click="toggleAllFiles"
|
|
263
263
|
>
|
|
264
264
|
{{
|
|
@@ -284,18 +284,18 @@ watch(
|
|
|
284
284
|
/>
|
|
285
285
|
<button
|
|
286
286
|
type="button"
|
|
287
|
-
class="flex items-center gap-2 truncate text-sm hover:text-primary
|
|
288
|
-
:class="isPicked(entry.path) ? 'text-primary
|
|
287
|
+
class="flex items-center gap-2 truncate text-sm hover:text-primary"
|
|
288
|
+
:class="isPicked(entry.path) ? 'text-primary' : 'text-toned'"
|
|
289
289
|
:disabled="isAdded(entry.path)"
|
|
290
290
|
@click="pick(entry.path)"
|
|
291
291
|
>
|
|
292
|
-
<UIcon name="i-lucide-file" class="h-4 w-4 shrink-0 text-
|
|
292
|
+
<UIcon name="i-lucide-file" class="h-4 w-4 shrink-0 text-muted" />
|
|
293
293
|
<span class="truncate">{{ entry.name }}</span>
|
|
294
294
|
</button>
|
|
295
295
|
</div>
|
|
296
296
|
<span
|
|
297
297
|
v-if="isAdded(entry.path)"
|
|
298
|
-
class="flex shrink-0 items-center gap-1 text-xs text-
|
|
298
|
+
class="flex shrink-0 items-center gap-1 text-xs text-dimmed"
|
|
299
299
|
>
|
|
300
300
|
<UIcon name="i-lucide-check" class="h-3.5 w-3.5" />
|
|
301
301
|
{{ t('github.repoTree.added') }}
|
|
@@ -303,7 +303,7 @@ watch(
|
|
|
303
303
|
<UIcon
|
|
304
304
|
v-else-if="!multiple && isPicked(entry.path)"
|
|
305
305
|
name="i-lucide-check"
|
|
306
|
-
class="h-4 w-4 shrink-0 text-primary
|
|
306
|
+
class="h-4 w-4 shrink-0 text-primary"
|
|
307
307
|
/>
|
|
308
308
|
</li>
|
|
309
309
|
</template>
|
|
@@ -316,14 +316,14 @@ watch(
|
|
|
316
316
|
<div v-if="placingNewDir" class="mt-2 flex items-center justify-between gap-2">
|
|
317
317
|
<p
|
|
318
318
|
class="min-w-0 truncate text-xs"
|
|
319
|
-
:class="nameTakenHere ? 'text-
|
|
319
|
+
:class="nameTakenHere ? 'text-app-warning-400' : 'text-muted'"
|
|
320
320
|
>
|
|
321
321
|
<template v-if="nameTakenHere">
|
|
322
322
|
{{ t('github.repoTree.nameTaken', { name: newDirName }) }}
|
|
323
323
|
</template>
|
|
324
324
|
<template v-else>
|
|
325
325
|
{{ t('github.repoTree.newDirTarget') }}
|
|
326
|
-
<code class="text-
|
|
326
|
+
<code class="text-default">{{ pickedPathFor(currentPath) }}</code>
|
|
327
327
|
</template>
|
|
328
328
|
</p>
|
|
329
329
|
<UButton
|
|
@@ -65,12 +65,12 @@ const ENV_STATUS_LABEL: Record<HumanTestEnvironmentStatus, string> = {
|
|
|
65
65
|
torn_down: 'humanTest.envStatus.tornDown',
|
|
66
66
|
}
|
|
67
67
|
const ENV_STATUS_COLOR: Record<HumanTestEnvironmentStatus, string> = {
|
|
68
|
-
provisioning: 'text-
|
|
69
|
-
ready: 'text-
|
|
70
|
-
failed: 'text-
|
|
71
|
-
expired: 'text-
|
|
72
|
-
tearing_down: 'text-
|
|
73
|
-
torn_down: 'text-
|
|
68
|
+
provisioning: 'text-app-warning-300',
|
|
69
|
+
ready: 'text-app-success-300',
|
|
70
|
+
failed: 'text-app-error-300',
|
|
71
|
+
expired: 'text-muted',
|
|
72
|
+
tearing_down: 'text-muted',
|
|
73
|
+
torn_down: 'text-muted',
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
const PHASE_LABEL: Record<NonNullable<HumanTestStepState['phase']>, string> = {
|
|
@@ -150,7 +150,7 @@ const canDestroy = computed(
|
|
|
150
150
|
<ResultWindowShell
|
|
151
151
|
:open="open"
|
|
152
152
|
icon="i-lucide-user-check"
|
|
153
|
-
icon-class="bg-
|
|
153
|
+
icon-class="bg-app-warning-500/15 text-app-warning-300"
|
|
154
154
|
:title="headerTitle"
|
|
155
155
|
:subtitle="phase ? t(PHASE_LABEL[phase]) : t('humanTest.subtitle')"
|
|
156
156
|
width="3xl"
|
|
@@ -159,7 +159,7 @@ const canDestroy = computed(
|
|
|
159
159
|
<div class="flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto px-5 py-4">
|
|
160
160
|
<div
|
|
161
161
|
v-if="!ht"
|
|
162
|
-
class="flex flex-col items-center justify-center gap-2 py-10 text-center text-
|
|
162
|
+
class="flex flex-col items-center justify-center gap-2 py-10 text-center text-muted"
|
|
163
163
|
>
|
|
164
164
|
<UIcon name="i-lucide-user-check" class="h-8 w-8 opacity-40" />
|
|
165
165
|
<p class="text-sm">{{ t('humanTest.notStarted') }}</p>
|
|
@@ -167,8 +167,8 @@ const canDestroy = computed(
|
|
|
167
167
|
|
|
168
168
|
<template v-else>
|
|
169
169
|
<!-- Environment -->
|
|
170
|
-
<section class="rounded-lg border border-
|
|
171
|
-
<h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wide text-
|
|
170
|
+
<section class="rounded-lg border border-default bg-default/60 p-4">
|
|
171
|
+
<h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wide text-dimmed">
|
|
172
172
|
{{ t('humanTest.environment.heading') }}
|
|
173
173
|
</h3>
|
|
174
174
|
<div v-if="env" class="space-y-2">
|
|
@@ -187,22 +187,22 @@ const canDestroy = computed(
|
|
|
187
187
|
:href="env.url"
|
|
188
188
|
target="_blank"
|
|
189
189
|
rel="noopener"
|
|
190
|
-
class="inline-flex items-center gap-1.5 break-all text-[13px] text-
|
|
190
|
+
class="inline-flex items-center gap-1.5 break-all text-[13px] text-app-info-300 hover:underline"
|
|
191
191
|
>
|
|
192
192
|
<UIcon name="i-lucide-external-link" class="h-3.5 w-3.5 shrink-0" />
|
|
193
193
|
{{ env.url }}
|
|
194
194
|
</a>
|
|
195
|
-
<p v-else class="text-[12px] italic text-
|
|
195
|
+
<p v-else class="text-[12px] italic text-dimmed">
|
|
196
196
|
{{ t('humanTest.environment.noUrl') }}
|
|
197
197
|
</p>
|
|
198
|
-
<p v-if="env.expiresAt" class="text-[11px] text-
|
|
198
|
+
<p v-if="env.expiresAt" class="text-[11px] text-dimmed">
|
|
199
199
|
{{ t('humanTest.environment.expires', { date: d(new Date(env.expiresAt), 'long') }) }}
|
|
200
200
|
</p>
|
|
201
201
|
</div>
|
|
202
|
-
<p v-else class="text-[12px] text-
|
|
202
|
+
<p v-else class="text-[12px] text-app-warning-300/90">
|
|
203
203
|
{{ ht.degradedReason ?? t('humanTest.environment.none') }}
|
|
204
204
|
</p>
|
|
205
|
-
<p v-if="env && ht.degradedReason" class="mt-2 text-[12px] text-
|
|
205
|
+
<p v-if="env && ht.degradedReason" class="mt-2 text-[12px] text-app-warning-300/90">
|
|
206
206
|
{{ ht.degradedReason }}
|
|
207
207
|
</p>
|
|
208
208
|
|
|
@@ -249,23 +249,20 @@ const canDestroy = computed(
|
|
|
249
249
|
<!-- Working state -->
|
|
250
250
|
<p
|
|
251
251
|
v-if="working"
|
|
252
|
-
class="flex items-center gap-2 rounded-lg border border-
|
|
252
|
+
class="flex items-center gap-2 rounded-lg border border-default bg-app-950/40 px-3 py-2 text-[12px] text-toned"
|
|
253
253
|
>
|
|
254
|
-
<UIcon name="i-lucide-loader" class="h-3.5 w-3.5 animate-spin text-
|
|
254
|
+
<UIcon name="i-lucide-loader" class="h-3.5 w-3.5 animate-spin text-app-warning-300" />
|
|
255
255
|
{{ phase ? t(PHASE_LABEL[phase]) : '' }}
|
|
256
256
|
</p>
|
|
257
257
|
|
|
258
258
|
<!-- Findings / fix -->
|
|
259
|
-
<section
|
|
260
|
-
v-if="awaitingHuman"
|
|
261
|
-
class="rounded-lg border border-slate-800 bg-slate-900/60 p-4"
|
|
262
|
-
>
|
|
259
|
+
<section v-if="awaitingHuman" class="rounded-lg border border-default bg-default/60 p-4">
|
|
263
260
|
<div class="flex items-center justify-between">
|
|
264
|
-
<h3 class="text-[11px] font-semibold uppercase tracking-wide text-
|
|
261
|
+
<h3 class="text-[11px] font-semibold uppercase tracking-wide text-dimmed">
|
|
265
262
|
{{ t('humanTest.fix.heading') }}
|
|
266
263
|
</h3>
|
|
267
264
|
<button
|
|
268
|
-
class="text-[12px] text-
|
|
265
|
+
class="text-[12px] text-muted hover:text-default"
|
|
269
266
|
@click="showFindings = !showFindings"
|
|
270
267
|
>
|
|
271
268
|
{{ showFindings ? t('humanTest.fix.cancel') : t('humanTest.fix.requestFix') }}
|
|
@@ -276,7 +273,7 @@ const canDestroy = computed(
|
|
|
276
273
|
v-model="findings"
|
|
277
274
|
rows="4"
|
|
278
275
|
:placeholder="t('humanTest.fix.placeholder')"
|
|
279
|
-
class="w-full rounded-md border border-
|
|
276
|
+
class="w-full rounded-md border border-muted bg-app-950 px-3 py-2 text-[13px] text-default placeholder:text-app-600 focus:border-app-warning-500 focus:outline-none focus-visible:ring-2 focus-visible:ring-app-warning-500/60"
|
|
280
277
|
/>
|
|
281
278
|
<UButton
|
|
282
279
|
size="sm"
|
|
@@ -295,19 +292,19 @@ const canDestroy = computed(
|
|
|
295
292
|
<!-- Rounds history -->
|
|
296
293
|
<section
|
|
297
294
|
v-if="ht.rounds && ht.rounds.length"
|
|
298
|
-
class="rounded-lg border border-
|
|
295
|
+
class="rounded-lg border border-default bg-default/60 p-4"
|
|
299
296
|
>
|
|
300
|
-
<h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wide text-
|
|
297
|
+
<h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wide text-dimmed">
|
|
301
298
|
{{ t('humanTest.history.heading', { count: ht.attempts }, ht.attempts) }}
|
|
302
299
|
</h3>
|
|
303
300
|
<ol class="space-y-2">
|
|
304
301
|
<li v-for="(r, i) in ht.rounds" :key="i" class="flex items-start gap-2 text-[12px]">
|
|
305
302
|
<UIcon
|
|
306
303
|
:name="r.kind === 'fix' ? 'i-lucide-wrench' : 'i-lucide-git-merge'"
|
|
307
|
-
class="mt-0.5 h-3.5 w-3.5 shrink-0 text-
|
|
304
|
+
class="mt-0.5 h-3.5 w-3.5 shrink-0 text-muted"
|
|
308
305
|
/>
|
|
309
306
|
<div class="min-w-0 flex-1">
|
|
310
|
-
<span class="text-
|
|
307
|
+
<span class="text-default">{{
|
|
311
308
|
r.kind === 'fix'
|
|
312
309
|
? t('humanTest.history.fixRequested')
|
|
313
310
|
: t('humanTest.history.pulledMain')
|
|
@@ -316,10 +313,10 @@ const canDestroy = computed(
|
|
|
316
313
|
class="ms-1.5 rounded px-1 text-[10px] uppercase"
|
|
317
314
|
:class="
|
|
318
315
|
r.outcome === 'completed'
|
|
319
|
-
? 'bg-
|
|
316
|
+
? 'bg-app-success-500/15 text-app-success-300'
|
|
320
317
|
: r.outcome === 'failed'
|
|
321
|
-
? 'bg-
|
|
322
|
-
: 'bg-
|
|
318
|
+
? 'bg-app-error-500/15 text-app-error-300'
|
|
319
|
+
: 'bg-app-500/15 text-toned'
|
|
323
320
|
"
|
|
324
321
|
>
|
|
325
322
|
{{
|
|
@@ -328,7 +325,7 @@ const canDestroy = computed(
|
|
|
328
325
|
: t('humanTest.roundOutcome.inProgress')
|
|
329
326
|
}}
|
|
330
327
|
</span>
|
|
331
|
-
<p v-if="r.findings" class="leading-snug text-
|
|
328
|
+
<p v-if="r.findings" class="leading-snug text-muted">{{ r.findings }}</p>
|
|
332
329
|
</div>
|
|
333
330
|
</li>
|
|
334
331
|
</ol>
|
|
@@ -339,7 +336,7 @@ const canDestroy = computed(
|
|
|
339
336
|
<!-- Footer: the primary confirm action -->
|
|
340
337
|
<footer
|
|
341
338
|
v-if="ht"
|
|
342
|
-
class="flex items-center justify-between gap-3 border-t border-
|
|
339
|
+
class="flex items-center justify-between gap-3 border-t border-default px-5 py-3"
|
|
343
340
|
>
|
|
344
341
|
<StepRunMeta
|
|
345
342
|
v-if="step"
|
|
@@ -39,19 +39,19 @@ const { t } = useI18n()
|
|
|
39
39
|
|
|
40
40
|
<template>
|
|
41
41
|
<section
|
|
42
|
-
class="mb-4 rounded-lg border border-
|
|
42
|
+
class="mb-4 rounded-lg border border-app-warning-500/40 bg-app-warning-500/10 p-3.5"
|
|
43
43
|
data-testid="initiative-plan-notice"
|
|
44
44
|
>
|
|
45
45
|
<header class="flex items-start gap-2.5">
|
|
46
|
-
<UIcon name="i-lucide-clipboard-check" class="mt-0.5 h-4 w-4 shrink-0 text-
|
|
46
|
+
<UIcon name="i-lucide-clipboard-check" class="mt-0.5 h-4 w-4 shrink-0 text-app-warning-300" />
|
|
47
47
|
<div class="min-w-0 flex-1">
|
|
48
|
-
<h3 class="text-[13px] font-semibold text-
|
|
48
|
+
<h3 class="text-[13px] font-semibold text-app-warning-200">
|
|
49
49
|
{{ t('initiative.planReview.title') }}
|
|
50
50
|
</h3>
|
|
51
|
-
<p class="mt-0.5 text-[12px] leading-relaxed text-
|
|
51
|
+
<p class="mt-0.5 text-[12px] leading-relaxed text-app-warning-100/80">
|
|
52
52
|
{{ t('initiative.planReview.body') }}
|
|
53
53
|
</p>
|
|
54
|
-
<p class="mt-2 text-[12px] leading-relaxed text-
|
|
54
|
+
<p class="mt-2 text-[12px] leading-relaxed text-app-warning-100/70">
|
|
55
55
|
{{ t('initiative.planReview.noDocument') }}
|
|
56
56
|
<template v-if="hasSections">
|
|
57
57
|
{{ t('initiative.planReview.noDocumentSections') }}
|