@cat-factory/app 0.302.2 → 0.303.0
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 +16 -0
- 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 +23 -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 +9 -8
|
@@ -473,9 +473,7 @@ const declaredFormats = computed(() => {
|
|
|
473
473
|
<template>
|
|
474
474
|
<div class="ms-6 flex flex-col gap-1.5" data-testid="binary-output-picker">
|
|
475
475
|
<div class="flex items-center gap-2">
|
|
476
|
-
<span class="text-[10px] text-
|
|
477
|
-
t('pipeline.builder.binaryOutputStorage')
|
|
478
|
-
}}</span>
|
|
476
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryOutputStorage') }}</span>
|
|
479
477
|
<USelect
|
|
480
478
|
class="w-56"
|
|
481
479
|
:model-value="config?.storageServiceId ?? ''"
|
|
@@ -490,9 +488,7 @@ const declaredFormats = computed(() => {
|
|
|
490
488
|
</div>
|
|
491
489
|
|
|
492
490
|
<div v-if="config?.storageServiceId" class="flex items-center gap-2">
|
|
493
|
-
<span class="text-[10px] text-
|
|
494
|
-
t('pipeline.builder.binaryOutputContext')
|
|
495
|
-
}}</span>
|
|
491
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryOutputContext') }}</span>
|
|
496
492
|
<USelectMenu
|
|
497
493
|
class="w-56"
|
|
498
494
|
multiple
|
|
@@ -507,7 +503,7 @@ const declaredFormats = computed(() => {
|
|
|
507
503
|
</div>
|
|
508
504
|
|
|
509
505
|
<div v-if="config?.storageServiceId" class="flex items-center gap-2">
|
|
510
|
-
<span class="text-[10px] text-
|
|
506
|
+
<span class="text-[10px] text-dimmed">{{
|
|
511
507
|
t('pipeline.builder.binaryOutputGenerators')
|
|
512
508
|
}}</span>
|
|
513
509
|
<USelectMenu
|
|
@@ -525,7 +521,7 @@ const declaredFormats = computed(() => {
|
|
|
525
521
|
</div>
|
|
526
522
|
|
|
527
523
|
<div v-if="config?.storageServiceId" class="flex items-center gap-2">
|
|
528
|
-
<span class="text-[10px] text-
|
|
524
|
+
<span class="text-[10px] text-dimmed">{{
|
|
529
525
|
t('pipeline.builder.binaryOutputModalities')
|
|
530
526
|
}}</span>
|
|
531
527
|
<USelectMenu
|
|
@@ -545,7 +541,7 @@ const declaredFormats = computed(() => {
|
|
|
545
541
|
under them. Both tiers: like the rest of this picker it is not an override of a default —
|
|
546
542
|
a format nobody stated is a format the run does not check. -->
|
|
547
543
|
<div v-if="config?.storageServiceId" class="flex items-center gap-2">
|
|
548
|
-
<span class="text-[10px] text-
|
|
544
|
+
<span class="text-[10px] text-dimmed">{{
|
|
549
545
|
t('pipeline.builder.binaryOutputMediaTypes')
|
|
550
546
|
}}</span>
|
|
551
547
|
<UInput
|
|
@@ -560,7 +556,7 @@ const declaredFormats = computed(() => {
|
|
|
560
556
|
</div>
|
|
561
557
|
<p
|
|
562
558
|
v-if="config?.storageServiceId && declaredFormats.length"
|
|
563
|
-
class="ms-1 text-[10px] text-
|
|
559
|
+
class="ms-1 text-[10px] text-dimmed"
|
|
564
560
|
data-testid="binary-output-declared-formats"
|
|
565
561
|
>
|
|
566
562
|
{{
|
|
@@ -576,7 +572,7 @@ const declaredFormats = computed(() => {
|
|
|
576
572
|
option nobody stated is an option the run does not apply. -->
|
|
577
573
|
<template v-if="config?.storageServiceId">
|
|
578
574
|
<div v-if="offers('reference-image')" class="flex items-start gap-2">
|
|
579
|
-
<span class="mt-1 text-[10px] text-
|
|
575
|
+
<span class="mt-1 text-[10px] text-dimmed">{{
|
|
580
576
|
t('pipeline.builder.binaryReferenceImages')
|
|
581
577
|
}}</span>
|
|
582
578
|
<UTextarea
|
|
@@ -592,7 +588,7 @@ const declaredFormats = computed(() => {
|
|
|
592
588
|
</div>
|
|
593
589
|
<p
|
|
594
590
|
v-if="unusableReferences.length"
|
|
595
|
-
class="ms-1 text-[10px] text-
|
|
591
|
+
class="ms-1 text-[10px] text-app-warning-400"
|
|
596
592
|
data-testid="binary-output-reference-unusable"
|
|
597
593
|
>
|
|
598
594
|
{{
|
|
@@ -603,7 +599,7 @@ const declaredFormats = computed(() => {
|
|
|
603
599
|
</p>
|
|
604
600
|
|
|
605
601
|
<div v-if="offers('instruction-edit') || offers('mask-edit')" class="flex items-center gap-2">
|
|
606
|
-
<span class="text-[10px] text-
|
|
602
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryEditMode') }}</span>
|
|
607
603
|
<USelect
|
|
608
604
|
class="w-56"
|
|
609
605
|
size="xs"
|
|
@@ -622,7 +618,7 @@ const declaredFormats = computed(() => {
|
|
|
622
618
|
/>
|
|
623
619
|
</div>
|
|
624
620
|
<div v-if="generation.edit" class="flex items-center gap-2">
|
|
625
|
-
<span class="text-[10px] text-
|
|
621
|
+
<span class="text-[10px] text-dimmed">{{
|
|
626
622
|
t('pipeline.builder.binaryEditInstruction')
|
|
627
623
|
}}</span>
|
|
628
624
|
<UInput
|
|
@@ -640,7 +636,7 @@ const declaredFormats = computed(() => {
|
|
|
640
636
|
</div>
|
|
641
637
|
|
|
642
638
|
<div v-if="offers('negative-prompt')" class="flex items-center gap-2">
|
|
643
|
-
<span class="text-[10px] text-
|
|
639
|
+
<span class="text-[10px] text-dimmed">{{
|
|
644
640
|
t('pipeline.builder.binaryNegativePrompt')
|
|
645
641
|
}}</span>
|
|
646
642
|
<UInput
|
|
@@ -656,9 +652,7 @@ const declaredFormats = computed(() => {
|
|
|
656
652
|
</div>
|
|
657
653
|
|
|
658
654
|
<div v-if="offers('aspect-ratio')" class="flex items-center gap-2">
|
|
659
|
-
<span class="text-[10px] text-
|
|
660
|
-
t('pipeline.builder.binaryAspectRatio')
|
|
661
|
-
}}</span>
|
|
655
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryAspectRatio') }}</span>
|
|
662
656
|
<UInput
|
|
663
657
|
class="w-56"
|
|
664
658
|
size="xs"
|
|
@@ -676,9 +670,7 @@ const declaredFormats = computed(() => {
|
|
|
676
670
|
exists to remove. -->
|
|
677
671
|
<div v-if="offers('exact-size')" class="flex flex-col gap-1">
|
|
678
672
|
<div class="flex items-center gap-2">
|
|
679
|
-
<span class="text-[10px] text-
|
|
680
|
-
t('pipeline.builder.binaryOutputSize')
|
|
681
|
-
}}</span>
|
|
673
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryOutputSize') }}</span>
|
|
682
674
|
<UInput
|
|
683
675
|
class="w-24"
|
|
684
676
|
type="number"
|
|
@@ -688,7 +680,7 @@ const declaredFormats = computed(() => {
|
|
|
688
680
|
data-testid="binary-output-size-width"
|
|
689
681
|
@change="setOutputSize('width', ($event.target as HTMLInputElement).value)"
|
|
690
682
|
/>
|
|
691
|
-
<span class="text-[10px] text-
|
|
683
|
+
<span class="text-[10px] text-dimmed">×</span>
|
|
692
684
|
<UInput
|
|
693
685
|
class="w-24"
|
|
694
686
|
type="number"
|
|
@@ -704,7 +696,7 @@ const declaredFormats = computed(() => {
|
|
|
704
696
|
that does not carry the requirement. -->
|
|
705
697
|
<p
|
|
706
698
|
v-if="outputSizeIncomplete"
|
|
707
|
-
class="text-[10px] text-
|
|
699
|
+
class="text-[10px] text-app-warning-400"
|
|
708
700
|
data-testid="binary-output-size-incomplete"
|
|
709
701
|
>
|
|
710
702
|
{{ t('pipeline.builder.binaryOutputSizeIncomplete') }}
|
|
@@ -712,7 +704,7 @@ const declaredFormats = computed(() => {
|
|
|
712
704
|
</div>
|
|
713
705
|
|
|
714
706
|
<div v-if="offers('seed')" class="flex items-center gap-2">
|
|
715
|
-
<span class="text-[10px] text-
|
|
707
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binarySeed') }}</span>
|
|
716
708
|
<UInput
|
|
717
709
|
class="w-56"
|
|
718
710
|
type="number"
|
|
@@ -739,9 +731,7 @@ const declaredFormats = computed(() => {
|
|
|
739
731
|
setGeneration({ transparentBackground: $event ? true : undefined })
|
|
740
732
|
"
|
|
741
733
|
/>
|
|
742
|
-
<span class="text-[10px] text-
|
|
743
|
-
t('pipeline.builder.binaryTransparent')
|
|
744
|
-
}}</span>
|
|
734
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryTransparent') }}</span>
|
|
745
735
|
</label>
|
|
746
736
|
<label v-if="offers('tileable')" class="flex items-center gap-1.5">
|
|
747
737
|
<UCheckbox
|
|
@@ -749,7 +739,7 @@ const declaredFormats = computed(() => {
|
|
|
749
739
|
data-testid="binary-output-tileable"
|
|
750
740
|
@update:model-value="setGeneration({ tileable: $event ? true : undefined })"
|
|
751
741
|
/>
|
|
752
|
-
<span class="text-[10px] text-
|
|
742
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryTileable') }}</span>
|
|
753
743
|
</label>
|
|
754
744
|
<label v-if="offers('upscale')" class="flex items-center gap-1.5">
|
|
755
745
|
<UCheckbox
|
|
@@ -757,7 +747,7 @@ const declaredFormats = computed(() => {
|
|
|
757
747
|
data-testid="binary-output-upscale"
|
|
758
748
|
@update:model-value="setGeneration({ upscale: $event ? 2 : undefined })"
|
|
759
749
|
/>
|
|
760
|
-
<span class="text-[10px] text-
|
|
750
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryUpscale') }}</span>
|
|
761
751
|
</label>
|
|
762
752
|
</div>
|
|
763
753
|
|
|
@@ -769,12 +759,10 @@ const declaredFormats = computed(() => {
|
|
|
769
759
|
data-testid="binary-output-comparison"
|
|
770
760
|
@update:model-value="setComparison($event === true)"
|
|
771
761
|
/>
|
|
772
|
-
<span class="text-[10px] text-
|
|
762
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryComparison') }}</span>
|
|
773
763
|
</label>
|
|
774
764
|
<div v-if="config.comparison" class="ms-6 flex flex-wrap items-center gap-3">
|
|
775
|
-
<span class="text-[10px] text-
|
|
776
|
-
t('pipeline.builder.binaryPerGenerator')
|
|
777
|
-
}}</span>
|
|
765
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryPerGenerator') }}</span>
|
|
778
766
|
<USelect
|
|
779
767
|
class="w-20"
|
|
780
768
|
size="xs"
|
|
@@ -789,14 +777,12 @@ const declaredFormats = computed(() => {
|
|
|
789
777
|
data-testid="binary-output-multi-select"
|
|
790
778
|
@update:model-value="setMultiSelect($event === true)"
|
|
791
779
|
/>
|
|
792
|
-
<span class="text-[10px] text-
|
|
793
|
-
t('pipeline.builder.binaryMultiSelect')
|
|
794
|
-
}}</span>
|
|
780
|
+
<span class="text-[10px] text-dimmed">{{ t('pipeline.builder.binaryMultiSelect') }}</span>
|
|
795
781
|
</label>
|
|
796
782
|
</div>
|
|
797
783
|
<p
|
|
798
784
|
v-if="comparisonUnreachable"
|
|
799
|
-
class="text-[10px] text-
|
|
785
|
+
class="text-[10px] text-app-warning-400"
|
|
800
786
|
data-testid="binary-output-comparison-unreachable"
|
|
801
787
|
>
|
|
802
788
|
{{ t('pipeline.builder.binaryComparisonUnreachable') }}
|
|
@@ -808,25 +794,25 @@ const declaredFormats = computed(() => {
|
|
|
808
794
|
an untagged one, and a lost CONTEXT service is not a lost storage target. -->
|
|
809
795
|
<p
|
|
810
796
|
v-if="has('catalog_unavailable')"
|
|
811
|
-
class="text-[10px] text-
|
|
797
|
+
class="text-[10px] text-app-warning-400"
|
|
812
798
|
data-testid="binary-output-unavailable"
|
|
813
799
|
>
|
|
814
800
|
{{ t('pipeline.builder.binaryOutputUnavailable') }}
|
|
815
801
|
</p>
|
|
816
802
|
<p
|
|
817
803
|
v-else-if="has('no_storage_service')"
|
|
818
|
-
class="text-[10px] text-
|
|
804
|
+
class="text-[10px] text-app-warning-400"
|
|
819
805
|
data-testid="binary-output-no-storage"
|
|
820
806
|
>
|
|
821
807
|
{{ t('pipeline.builder.binaryOutputNoStorage', { capability: ASSET_STORAGE_CAPABILITY }) }}
|
|
822
808
|
</p>
|
|
823
|
-
<p v-if="has('unknown_service')" class="text-[10px] text-
|
|
809
|
+
<p v-if="has('unknown_service')" class="text-[10px] text-app-warning-400">
|
|
824
810
|
{{ t('pipeline.builder.binaryOutputMissing') }}
|
|
825
811
|
</p>
|
|
826
|
-
<p v-if="has('not_storage_capable')" class="text-[10px] text-
|
|
812
|
+
<p v-if="has('not_storage_capable')" class="text-[10px] text-app-warning-400">
|
|
827
813
|
{{ t('pipeline.builder.binaryOutputNotStorage', { capability: ASSET_STORAGE_CAPABILITY }) }}
|
|
828
814
|
</p>
|
|
829
|
-
<p v-if="has('unknown_context_service')" class="text-[10px] text-
|
|
815
|
+
<p v-if="has('unknown_context_service')" class="text-[10px] text-app-warning-400">
|
|
830
816
|
{{
|
|
831
817
|
t('pipeline.builder.binaryOutputContextMissing', {
|
|
832
818
|
ids: pick.unknownContextIds.join(', '),
|
|
@@ -840,14 +826,14 @@ const declaredFormats = computed(() => {
|
|
|
840
826
|
it says so and stops, exactly as run admission does. -->
|
|
841
827
|
<p
|
|
842
828
|
v-if="has('generators_unavailable')"
|
|
843
|
-
class="text-[10px] text-
|
|
829
|
+
class="text-[10px] text-app-warning-400"
|
|
844
830
|
data-testid="binary-output-generators-unavailable"
|
|
845
831
|
>
|
|
846
832
|
{{ t('pipeline.builder.binaryOutputGeneratorsUnavailable') }}
|
|
847
833
|
</p>
|
|
848
834
|
<p
|
|
849
835
|
v-if="has('unknown_generator')"
|
|
850
|
-
class="text-[10px] text-
|
|
836
|
+
class="text-[10px] text-app-warning-400"
|
|
851
837
|
data-testid="binary-output-unknown-generator"
|
|
852
838
|
>
|
|
853
839
|
{{
|
|
@@ -858,7 +844,7 @@ const declaredFormats = computed(() => {
|
|
|
858
844
|
</p>
|
|
859
845
|
<p
|
|
860
846
|
v-if="has('modality_uncovered')"
|
|
861
|
-
class="text-[10px] text-
|
|
847
|
+
class="text-[10px] text-app-warning-400"
|
|
862
848
|
data-testid="binary-output-modality-uncovered"
|
|
863
849
|
>
|
|
864
850
|
{{
|
|
@@ -869,7 +855,7 @@ const declaredFormats = computed(() => {
|
|
|
869
855
|
</p>
|
|
870
856
|
<p
|
|
871
857
|
v-if="has('media_type_uncovered')"
|
|
872
|
-
class="text-[10px] text-
|
|
858
|
+
class="text-[10px] text-app-warning-400"
|
|
873
859
|
data-testid="binary-output-media-type-uncovered"
|
|
874
860
|
>
|
|
875
861
|
{{
|
|
@@ -884,7 +870,7 @@ const declaredFormats = computed(() => {
|
|
|
884
870
|
would send someone editing a selection that is fine. -->
|
|
885
871
|
<p
|
|
886
872
|
v-if="has('media_type_unverifiable')"
|
|
887
|
-
class="text-[10px] text-
|
|
873
|
+
class="text-[10px] text-dimmed"
|
|
888
874
|
data-testid="binary-output-media-type-unverifiable"
|
|
889
875
|
>
|
|
890
876
|
{{
|
|
@@ -900,7 +886,7 @@ const declaredFormats = computed(() => {
|
|
|
900
886
|
mismatch. Silence here is what turned it into a surprise at the door. -->
|
|
901
887
|
<p
|
|
902
888
|
v-if="has('generator_harness_required')"
|
|
903
|
-
class="text-[10px] text-
|
|
889
|
+
class="text-[10px] text-dimmed"
|
|
904
890
|
data-testid="binary-output-generator-harness"
|
|
905
891
|
>
|
|
906
892
|
{{ t('pipeline.builder.binaryOutputGeneratorHarness', { generators: harnessServedSummary }) }}
|
|
@@ -911,14 +897,14 @@ const declaredFormats = computed(() => {
|
|
|
911
897
|
line carries is the step's own prompt, which is the field right beside it. -->
|
|
912
898
|
<p
|
|
913
899
|
v-if="has('generator_overlap')"
|
|
914
|
-
class="text-[10px] text-
|
|
900
|
+
class="text-[10px] text-dimmed"
|
|
915
901
|
data-testid="binary-output-generator-overlap"
|
|
916
902
|
>
|
|
917
903
|
{{ t('pipeline.builder.binaryOutputGeneratorOverlap', { overlaps: overlapSummary }) }}
|
|
918
904
|
</p>
|
|
919
905
|
<p
|
|
920
906
|
v-if="has('capability_unsupported')"
|
|
921
|
-
class="text-[10px] text-
|
|
907
|
+
class="text-[10px] text-app-warning-400"
|
|
922
908
|
data-testid="binary-output-capability-unsupported"
|
|
923
909
|
>
|
|
924
910
|
{{
|
|
@@ -933,7 +919,7 @@ const declaredFormats = computed(() => {
|
|
|
933
919
|
<p
|
|
934
920
|
v-for="value in pick.unacceptedValues"
|
|
935
921
|
:key="value.option"
|
|
936
|
-
class="text-[10px] text-
|
|
922
|
+
class="text-[10px] text-app-warning-400"
|
|
937
923
|
data-testid="binary-output-value-unaccepted"
|
|
938
924
|
>
|
|
939
925
|
{{
|
|
@@ -949,7 +935,7 @@ const declaredFormats = computed(() => {
|
|
|
949
935
|
two values on this form. -->
|
|
950
936
|
<p
|
|
951
937
|
v-if="has('output_size_ambiguous')"
|
|
952
|
-
class="text-[10px] text-
|
|
938
|
+
class="text-[10px] text-app-warning-400"
|
|
953
939
|
data-testid="binary-output-size-ambiguous"
|
|
954
940
|
>
|
|
955
941
|
{{
|
|
@@ -964,7 +950,7 @@ const declaredFormats = computed(() => {
|
|
|
964
950
|
selections in the product. -->
|
|
965
951
|
<p
|
|
966
952
|
v-if="has('capability_unverifiable')"
|
|
967
|
-
class="text-[10px] text-
|
|
953
|
+
class="text-[10px] text-dimmed"
|
|
968
954
|
data-testid="binary-output-capability-unverifiable"
|
|
969
955
|
>
|
|
970
956
|
{{
|
|
@@ -979,7 +965,7 @@ const declaredFormats = computed(() => {
|
|
|
979
965
|
<p
|
|
980
966
|
v-for="value in pick.partiallyAcceptedValues"
|
|
981
967
|
:key="value.option"
|
|
982
|
-
class="text-[10px] text-
|
|
968
|
+
class="text-[10px] text-dimmed"
|
|
983
969
|
data-testid="binary-output-value-partial"
|
|
984
970
|
>
|
|
985
971
|
{{
|
|
@@ -994,7 +980,7 @@ const declaredFormats = computed(() => {
|
|
|
994
980
|
another has not said what it takes, so the step starts and is served by the second. -->
|
|
995
981
|
<p
|
|
996
982
|
v-if="has('option_value_unverifiable')"
|
|
997
|
-
class="text-[10px] text-
|
|
983
|
+
class="text-[10px] text-dimmed"
|
|
998
984
|
data-testid="binary-output-value-unverifiable"
|
|
999
985
|
>
|
|
1000
986
|
{{
|
|
@@ -1005,7 +991,7 @@ const declaredFormats = computed(() => {
|
|
|
1005
991
|
</p>
|
|
1006
992
|
<p
|
|
1007
993
|
v-if="unusableMediaTypes.length"
|
|
1008
|
-
class="text-[10px] text-
|
|
994
|
+
class="text-[10px] text-app-warning-400"
|
|
1009
995
|
data-testid="binary-output-media-type-unusable"
|
|
1010
996
|
>
|
|
1011
997
|
{{
|
|
@@ -53,12 +53,12 @@ function commit(axis: EstimateAxis, raw: string) {
|
|
|
53
53
|
</script>
|
|
54
54
|
|
|
55
55
|
<template>
|
|
56
|
-
<div class="flex flex-wrap items-center gap-2 border-t border-
|
|
57
|
-
<span class="text-[10px] text-
|
|
56
|
+
<div class="flex flex-wrap items-center gap-2 border-t border-default pt-2">
|
|
57
|
+
<span class="text-[10px] text-dimmed" :title="t(OUTCOME_HINT_KEYS[outcome])">
|
|
58
58
|
{{ t('pipeline.builder.runWhenAny') }}
|
|
59
59
|
</span>
|
|
60
60
|
<template v-for="f in fields" :key="f.axis">
|
|
61
|
-
<label class="text-
|
|
61
|
+
<label class="text-muted" :title="f.hint">{{ f.label }}</label>
|
|
62
62
|
<input
|
|
63
63
|
:value="f.value"
|
|
64
64
|
:title="f.hint"
|
|
@@ -66,7 +66,7 @@ function commit(axis: EstimateAxis, raw: string) {
|
|
|
66
66
|
min="0"
|
|
67
67
|
max="1"
|
|
68
68
|
step="0.1"
|
|
69
|
-
class="w-14 rounded border border-
|
|
69
|
+
class="w-14 rounded border border-muted bg-default px-1.5 py-0.5 text-app-100"
|
|
70
70
|
@change="commit(f.axis, ($event.target as HTMLInputElement).value)"
|
|
71
71
|
/>
|
|
72
72
|
</template>
|
|
@@ -115,13 +115,16 @@ const gateFieldValues = computed<DescriptorFieldValues>({
|
|
|
115
115
|
|
|
116
116
|
<template>
|
|
117
117
|
<div v-if="gated || gateFields?.length" class="ms-6 space-y-2" data-testid="gate-config">
|
|
118
|
-
<div
|
|
118
|
+
<div
|
|
119
|
+
v-if="gated"
|
|
120
|
+
class="space-y-2 rounded-md border border-app-warning-800/40 bg-app-warning-950/10 p-2"
|
|
121
|
+
>
|
|
119
122
|
<div class="flex flex-wrap items-center gap-2 text-[10px]">
|
|
120
|
-
<span class="text-
|
|
123
|
+
<span class="text-dimmed">{{ t('pipeline.gateConfig.approversLabel') }}</span>
|
|
121
124
|
<label
|
|
122
125
|
v-for="role in APPROVER_ROLES"
|
|
123
126
|
:key="role"
|
|
124
|
-
class="flex items-center gap-1 text-
|
|
127
|
+
class="flex items-center gap-1 text-muted"
|
|
125
128
|
>
|
|
126
129
|
<input
|
|
127
130
|
type="checkbox"
|
|
@@ -134,7 +137,7 @@ const gateFieldValues = computed<DescriptorFieldValues>({
|
|
|
134
137
|
</div>
|
|
135
138
|
|
|
136
139
|
<div class="flex flex-wrap items-center gap-2 text-[10px]">
|
|
137
|
-
<span class="text-
|
|
140
|
+
<span class="text-dimmed">{{ t('pipeline.gateConfig.namedApproversLabel') }}</span>
|
|
138
141
|
<USelectMenu
|
|
139
142
|
class="w-64"
|
|
140
143
|
multiple
|
|
@@ -149,7 +152,7 @@ const gateFieldValues = computed<DescriptorFieldValues>({
|
|
|
149
152
|
</div>
|
|
150
153
|
|
|
151
154
|
<div class="flex flex-wrap items-center gap-2 text-[10px]">
|
|
152
|
-
<label class="text-
|
|
155
|
+
<label class="text-dimmed" :title="t('pipeline.gateConfig.requiredApprovalsHint')">
|
|
153
156
|
{{ t('pipeline.gateConfig.requiredApprovalsLabel') }}
|
|
154
157
|
</label>
|
|
155
158
|
<input
|
|
@@ -158,14 +161,14 @@ const gateFieldValues = computed<DescriptorFieldValues>({
|
|
|
158
161
|
min="1"
|
|
159
162
|
:max="MAX_GATE_APPROVALS"
|
|
160
163
|
step="1"
|
|
161
|
-
class="w-14 rounded border border-
|
|
164
|
+
class="w-14 rounded border border-muted bg-default px-1.5 py-0.5 text-app-100"
|
|
162
165
|
data-testid="gate-required-approvals"
|
|
163
166
|
@change="setRequiredApprovals(($event.target as HTMLInputElement).value)"
|
|
164
167
|
/>
|
|
165
|
-
<span class="text-
|
|
168
|
+
<span class="text-dimmed">{{ t('pipeline.gateConfig.requiredApprovalsHint') }}</span>
|
|
166
169
|
</div>
|
|
167
170
|
|
|
168
|
-
<p v-if="!config.approvers" class="text-[10px] text-
|
|
171
|
+
<p v-if="!config.approvers" class="text-[10px] text-dimmed">
|
|
169
172
|
{{ t('pipeline.gateConfig.anyoneHint') }}
|
|
170
173
|
</p>
|
|
171
174
|
</div>
|
|
@@ -174,9 +177,9 @@ const gateFieldValues = computed<DescriptorFieldValues>({
|
|
|
174
177
|
the gate's own English (the descriptor-form convention); only the heading is i18n. -->
|
|
175
178
|
<div
|
|
176
179
|
v-if="gateFields?.length"
|
|
177
|
-
class="space-y-2 rounded-md border border-
|
|
180
|
+
class="space-y-2 rounded-md border border-default bg-default/40 p-2"
|
|
178
181
|
>
|
|
179
|
-
<p class="text-[10px] text-
|
|
182
|
+
<p class="text-[10px] text-dimmed">{{ t('pipeline.gateConfig.gateParametersLabel') }}</p>
|
|
180
183
|
<DescriptorFields
|
|
181
184
|
v-model="gateFieldValues"
|
|
182
185
|
:fields="gateFields"
|
|
@@ -31,12 +31,14 @@ const emit = defineEmits<{ resolve: [choice: IterationCapChoice] }>()
|
|
|
31
31
|
</script>
|
|
32
32
|
|
|
33
33
|
<template>
|
|
34
|
-
<div
|
|
34
|
+
<div
|
|
35
|
+
class="rounded-lg border border-app-warning-500/40 bg-app-warning-500/5 p-4 text-sm text-app-warning-200"
|
|
36
|
+
>
|
|
35
37
|
<div class="flex items-center gap-2 font-medium">
|
|
36
38
|
<UIcon name="i-lucide-alert-triangle" class="h-5 w-5 shrink-0" />
|
|
37
39
|
{{ heading }}
|
|
38
40
|
</div>
|
|
39
|
-
<p class="mt-1 text-[12px] text-
|
|
41
|
+
<p class="mt-1 text-[12px] text-app-warning-200/80">{{ detail }}</p>
|
|
40
42
|
<div class="mt-3 flex flex-wrap gap-2">
|
|
41
43
|
<UButton
|
|
42
44
|
color="primary"
|