@cat-factory/app 0.302.1 → 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 +10 -9
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
import { deflateRawSync } from 'node:zlib'
|
|
3
|
+
import { docModeTokens, isSafePaletteName, themeDocToCss } from '~/utils/theme/css'
|
|
4
|
+
import {
|
|
5
|
+
DEFAULT_COLORS,
|
|
6
|
+
docColors,
|
|
7
|
+
docComponentOverrides,
|
|
8
|
+
mergeUi,
|
|
9
|
+
styleComponents,
|
|
10
|
+
styleTokens,
|
|
11
|
+
type ThemeDoc,
|
|
12
|
+
} from '~/utils/theme/doc'
|
|
13
|
+
import { decodeThemeLink, extractThemePayload } from '~/utils/theme/link'
|
|
14
|
+
import { MONO_THEME } from '~/utils/theme/builtins'
|
|
15
|
+
import { presets } from '~/utils/theme/presets'
|
|
16
|
+
|
|
17
|
+
/** A editor link: the Mono preset with Inter / JetBrains Mono in place of Geist (issue #2239). */
|
|
18
|
+
const MONO_LINK =
|
|
19
|
+
'https://ui.nuxt.com/theme?doc=jc3BaoQwEAbgVyn_ORYtCDW39tZCodAnGHVWgzEpyUS6LHn3omXX9dbbz8z3z1ywcIjGO-hKofPWhwh9geMkgSz0LWWF1lI3vcTPYGYKZ2gJiRUC9SZF6PKxVjh5J2s_kovQeHPCAQqzdx4a7yyvgYyLDx_rICtEOVteCz2fKFnZni8UDLm_bNx3WhNiasUyclYQP7H7GqnnjRRFMkU7bFcoTNBNXWZ1HRdzEu7XpTXDKNBVWaorLO8hW17on5a6jt3RPu32ebfCP3KHmh1VR1SMZhg3dbja1LdCXeac8y8'
|
|
20
|
+
|
|
21
|
+
function encode(doc: object): string {
|
|
22
|
+
return deflateRawSync(Buffer.from(JSON.stringify(doc)))
|
|
23
|
+
.toString('base64')
|
|
24
|
+
.replace(/\+/g, '-')
|
|
25
|
+
.replace(/\//g, '_')
|
|
26
|
+
.replace(/=+$/, '')
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe('theme document expansion', () => {
|
|
30
|
+
it('fills the alias map with the library defaults', () => {
|
|
31
|
+
expect(docColors({ version: 1 })).toEqual(DEFAULT_COLORS)
|
|
32
|
+
expect(docColors({ version: 1, colors: { neutral: 'neutral' } }).neutral).toBe('neutral')
|
|
33
|
+
expect(docColors({ version: 1, colors: { neutral: 'neutral' } }).primary).toBe('green')
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
it('expands token shades into ramp references, per mode, whitelisted', () => {
|
|
37
|
+
const tokens = styleTokens({
|
|
38
|
+
tokenShades: {
|
|
39
|
+
'--ui-bg': { dark: 950 },
|
|
40
|
+
'--ui-text-highlighted': { light: 950, dark: 50 },
|
|
41
|
+
'--ui-bg-inverted': { light: 'white' },
|
|
42
|
+
'--not-a-token': { light: 500 },
|
|
43
|
+
},
|
|
44
|
+
})
|
|
45
|
+
expect(tokens.light).toEqual({
|
|
46
|
+
'--ui-text-highlighted': 'var(--ui-color-neutral-950)',
|
|
47
|
+
'--ui-bg-inverted': 'white',
|
|
48
|
+
})
|
|
49
|
+
expect(tokens.dark).toEqual({
|
|
50
|
+
'--ui-bg': 'var(--ui-color-neutral-950)',
|
|
51
|
+
'--ui-text-highlighted': 'var(--ui-color-neutral-50)',
|
|
52
|
+
})
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
it('expands a group variant onto exactly the components that support it', () => {
|
|
56
|
+
const fragments = styleComponents({ defaults: { variants: { inputs: 'subtle' } } })
|
|
57
|
+
expect(fragments.input).toEqual({ defaultVariants: { variant: 'subtle' } })
|
|
58
|
+
expect(fragments.selectMenu).toEqual({ defaultVariants: { variant: 'subtle' } })
|
|
59
|
+
expect(fragments.button).toBeUndefined()
|
|
60
|
+
// `solid` is not in the field vocabulary, so an app-wide solid must not unstyle inputs.
|
|
61
|
+
expect(styleComponents({ defaults: { variant: 'solid' } }).input).toBeUndefined()
|
|
62
|
+
expect(styleComponents({ defaults: { variant: 'solid' } }).button).toEqual({
|
|
63
|
+
defaultVariants: { variant: 'solid' },
|
|
64
|
+
})
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
it('merges component overrides so both sides survive', () => {
|
|
68
|
+
const merged = mergeUi(
|
|
69
|
+
{ modal: { slots: { content: 'bg-app-950' } } },
|
|
70
|
+
{ modal: { slots: { content: 'ring-2' }, defaultVariants: { size: 'lg' } } },
|
|
71
|
+
)
|
|
72
|
+
expect(merged.modal).toEqual({
|
|
73
|
+
slots: { content: 'bg-app-950 ring-2' },
|
|
74
|
+
defaultVariants: { size: 'lg' },
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
it('layers explicit components over the style expansion', () => {
|
|
79
|
+
const doc: ThemeDoc = {
|
|
80
|
+
version: 1,
|
|
81
|
+
style: { defaults: { variants: { inputs: 'subtle' } } },
|
|
82
|
+
components: { input: { defaultVariants: { size: 'lg' } } },
|
|
83
|
+
}
|
|
84
|
+
expect(docComponentOverrides(doc).input).toEqual({
|
|
85
|
+
defaultVariants: { variant: 'subtle', size: 'lg' },
|
|
86
|
+
})
|
|
87
|
+
})
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
describe('themeDocToCss', () => {
|
|
91
|
+
it('emits nothing for the stock document', () => {
|
|
92
|
+
expect(themeDocToCss({ version: 1 })).toBe('')
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
it('anchors every block on the data-theme attribute and puts dark on the higher selector', () => {
|
|
96
|
+
const css = themeDocToCss(MONO_THEME.doc)
|
|
97
|
+
expect(css).toContain(':root[data-theme] {\n --ui-radius: 0.5rem;')
|
|
98
|
+
expect(css).toContain("--font-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;")
|
|
99
|
+
expect(css).toContain("--font-mono: 'Geist Mono', ui-monospace, monospace;")
|
|
100
|
+
expect(css).toMatch(/:root\[data-theme\] \{[^}]*--ui-primary: black;/)
|
|
101
|
+
expect(css).toMatch(/:root\[data-theme\]\.dark \{[^}]*--ui-primary: white;/)
|
|
102
|
+
expect(css).toMatch(/:root\[data-theme\]\.dark \{[^}]*--ui-bg: var\(--ui-color-neutral-950\);/)
|
|
103
|
+
expect(css).not.toMatch(/^\.dark/m)
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
it('lets an explicit token override any variable, including the app tokens', () => {
|
|
107
|
+
const tokens = docModeTokens({
|
|
108
|
+
version: 1,
|
|
109
|
+
tokens: { dark: { '--app-bg-canvas': 'var(--ui-color-neutral-900)' } },
|
|
110
|
+
})
|
|
111
|
+
expect(tokens.dark['--app-bg-canvas']).toBe('var(--ui-color-neutral-900)')
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
it('drops a value that could break out of its declaration', () => {
|
|
115
|
+
const css = themeDocToCss({
|
|
116
|
+
version: 1,
|
|
117
|
+
tokens: { light: { '--ui-bg': 'red; } body { display: none', '--ui-text': 'black' } },
|
|
118
|
+
font: { sans: "Inter'; } </style><script>" },
|
|
119
|
+
palettes: {
|
|
120
|
+
'x;y': { shades: { 500: '#fff' } },
|
|
121
|
+
ok: { shades: { 500: 'url(x)', 600: '#abc' } },
|
|
122
|
+
},
|
|
123
|
+
})
|
|
124
|
+
expect(css).not.toContain('display')
|
|
125
|
+
expect(css).not.toContain('<')
|
|
126
|
+
expect(css).not.toContain('x;y')
|
|
127
|
+
expect(css).not.toContain('url(')
|
|
128
|
+
expect(css).toContain('--ui-text: black;')
|
|
129
|
+
expect(css).toContain('--color-ok-600: #abc;')
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
it('applies blackAsPrimary at the same precedence in both modes', () => {
|
|
133
|
+
const tokens = docModeTokens({
|
|
134
|
+
version: 1,
|
|
135
|
+
blackAsPrimary: true,
|
|
136
|
+
style: { tokenShades: { '--ui-primary': { light: 600, dark: 600 } } },
|
|
137
|
+
})
|
|
138
|
+
// The style sets a --ui-primary shade in both modes; blackAsPrimary is the coarser control and
|
|
139
|
+
// wins in BOTH (the old code let the light style shade suppress it, so light disagreed).
|
|
140
|
+
expect(tokens.light['--ui-primary']).toBe('black')
|
|
141
|
+
expect(tokens.dark['--ui-primary']).toBe('white')
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
it('lets an explicit token beat blackAsPrimary in both modes', () => {
|
|
145
|
+
const tokens = docModeTokens({
|
|
146
|
+
version: 1,
|
|
147
|
+
blackAsPrimary: true,
|
|
148
|
+
tokens: {
|
|
149
|
+
light: { '--ui-primary': 'var(--custom-l)' },
|
|
150
|
+
dark: { '--ui-primary': 'var(--custom-d)' },
|
|
151
|
+
},
|
|
152
|
+
})
|
|
153
|
+
expect(tokens.light['--ui-primary']).toBe('var(--custom-l)')
|
|
154
|
+
expect(tokens.dark['--ui-primary']).toBe('var(--custom-d)')
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
it('accepts a plain palette name and rejects one that could break out of CSS', () => {
|
|
158
|
+
expect(isSafePaletteName('green')).toBe(true)
|
|
159
|
+
expect(isSafePaletteName('brand-1')).toBe(true)
|
|
160
|
+
expect(isSafePaletteName('red; } body { display: none')).toBe(false)
|
|
161
|
+
expect(isSafePaletteName('__proto__')).toBe(false)
|
|
162
|
+
expect(isSafePaletteName(undefined)).toBe(false)
|
|
163
|
+
})
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
describe('decodeThemeLink', () => {
|
|
167
|
+
it('extracts the payload from a editor URL, a bare payload, or raw JSON', () => {
|
|
168
|
+
expect(extractThemePayload(MONO_LINK)).toMatch(/^jc3B/)
|
|
169
|
+
expect(extractThemePayload(' abc_DEF-123 ')).toBe('abc_DEF-123')
|
|
170
|
+
expect(extractThemePayload('{"version":1}')).toBe('{"version":1}')
|
|
171
|
+
expect(extractThemePayload('hello world')).toBeNull()
|
|
172
|
+
expect(extractThemePayload('https://ui.nuxt.com/theme')).toBeNull()
|
|
173
|
+
})
|
|
174
|
+
|
|
175
|
+
it('decodes a real editor link to its document', async () => {
|
|
176
|
+
const result = await decodeThemeLink(MONO_LINK)
|
|
177
|
+
expect(result).toEqual({
|
|
178
|
+
ok: true,
|
|
179
|
+
doc: { ...MONO_THEME.doc, font: { sans: 'Inter', mono: 'JetBrains Mono' } },
|
|
180
|
+
})
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
it('reads an uncompressed payload and raw JSON too', async () => {
|
|
184
|
+
const doc = { version: 1, radius: 0.5 }
|
|
185
|
+
const plain = Buffer.from(JSON.stringify(doc)).toString('base64url')
|
|
186
|
+
expect(await decodeThemeLink(plain)).toEqual({ ok: true, doc })
|
|
187
|
+
expect(await decodeThemeLink(JSON.stringify(doc))).toEqual({ ok: true, doc })
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
it('names each failure so the dialog can show the right remedy', async () => {
|
|
191
|
+
expect(await decodeThemeLink('')).toEqual({ ok: false, reason: 'not_a_link' })
|
|
192
|
+
expect(await decodeThemeLink('https://ui.nuxt.com/theme')).toEqual({
|
|
193
|
+
ok: false,
|
|
194
|
+
reason: 'not_a_link',
|
|
195
|
+
})
|
|
196
|
+
expect(await decodeThemeLink('https://example.com/?doc=%%%')).toEqual({
|
|
197
|
+
ok: false,
|
|
198
|
+
reason: 'malformed',
|
|
199
|
+
})
|
|
200
|
+
expect(await decodeThemeLink('AAAA')).toEqual({ ok: false, reason: 'malformed' })
|
|
201
|
+
expect(await decodeThemeLink(encode({ version: 2 }))).toEqual({
|
|
202
|
+
ok: false,
|
|
203
|
+
reason: 'unsupported_version',
|
|
204
|
+
})
|
|
205
|
+
expect(await decodeThemeLink(encode({ version: 1, preset: 'not-a-preset' }))).toEqual({
|
|
206
|
+
ok: false,
|
|
207
|
+
reason: 'preset_shorthand',
|
|
208
|
+
})
|
|
209
|
+
})
|
|
210
|
+
|
|
211
|
+
it('rebuilds a editor preset shorthand link from the copied preset table', async () => {
|
|
212
|
+
const cobalt = presets.find((preset) => preset.id === 'cobalt')!
|
|
213
|
+
expect(await decodeThemeLink(encode({ version: 1, preset: 'cobalt' }))).toEqual({
|
|
214
|
+
ok: true,
|
|
215
|
+
doc: cobalt.doc,
|
|
216
|
+
})
|
|
217
|
+
expect(await decodeThemeLink(encode({ version: 1, preset: 'default' }))).toEqual({
|
|
218
|
+
ok: true,
|
|
219
|
+
doc: { version: 1 },
|
|
220
|
+
})
|
|
221
|
+
// The built-in Mono IS the editor preset, not a copy.
|
|
222
|
+
expect(presets.find((preset) => preset.id === 'mono')!.doc).toBe(MONO_THEME.doc)
|
|
223
|
+
})
|
|
224
|
+
})
|
package/i18n/locales/de.json
CHANGED
|
@@ -2129,7 +2129,24 @@
|
|
|
2129
2129
|
"promptVariant": "Prompt-Variante",
|
|
2130
2130
|
"promptVariantAdditionOnly": "Nur die Ergänzung dieser Variante wurde angewendet. Der Workspace-Prompt für diesen Agenten hat ihren Basistext ersetzt.",
|
|
2131
2131
|
"promptVariantSuperseded": "Diese Variante wurde nicht angewendet. Der Workspace-Prompt für diesen Agenten hatte Vorrang.",
|
|
2132
|
-
"promptVariantWithdrawn": "Diese Variante ist nicht mehr registriert, daher lief der Schritt mit dem ausgelieferten Prompt."
|
|
2132
|
+
"promptVariantWithdrawn": "Diese Variante ist nicht mehr registriert, daher lief der Schritt mit dem ausgelieferten Prompt.",
|
|
2133
|
+
"delegated": {
|
|
2134
|
+
"status": {
|
|
2135
|
+
"cancelled": "Abgebrochen",
|
|
2136
|
+
"done": "Extern abgeschlossen",
|
|
2137
|
+
"failed": "Extern fehlgeschlagen",
|
|
2138
|
+
"running": "Läuft extern",
|
|
2139
|
+
"starting": "Startet extern",
|
|
2140
|
+
"unrecognised": "Unbekannter Status ({status})"
|
|
2141
|
+
},
|
|
2142
|
+
"run": "Externer Lauf",
|
|
2143
|
+
"branch": "Branch",
|
|
2144
|
+
"copyUrl": "Link zum externen Lauf kopieren",
|
|
2145
|
+
"openRun": "Lauf öffnen",
|
|
2146
|
+
"noOutcome": "Kein Ergebnis festgehalten",
|
|
2147
|
+
"earlierAttempts": "Frühere Versuche",
|
|
2148
|
+
"usageNotReported": "Der Tokenverbrauch wird von {executor} nicht gemeldet, dieser Schritt fehlt daher in den Summen oben."
|
|
2149
|
+
}
|
|
2133
2150
|
},
|
|
2134
2151
|
"stepDetail": {
|
|
2135
2152
|
"contents": "Inhalte",
|
|
@@ -4035,6 +4052,7 @@
|
|
|
4035
4052
|
"timeout": "Zeitüberschreitung",
|
|
4036
4053
|
"agent": "Agent",
|
|
4037
4054
|
"job_failed": "Job fehlgeschlagen",
|
|
4055
|
+
"delegated_failed": "Externer Executor fehlgeschlagen",
|
|
4038
4056
|
"rejected": "Abgelehnt",
|
|
4039
4057
|
"companion_rejected": "Begleiter abgelehnt",
|
|
4040
4058
|
"stalled": "Hängengeblieben",
|
|
@@ -6206,7 +6224,9 @@
|
|
|
6206
6224
|
"service_catalog_filter_missing": "Der Entitätsfilter dieser Verbindung konnte nicht gelesen werden, es gibt also nichts zu importieren. Speichere die Servicekatalog-Verbindung erneut, um ihn wiederherzustellen.",
|
|
6207
6225
|
"service_catalog_response_too_large": "Das Entwicklerportal hat mit mehr Daten geantwortet, als diese Plattform in einer Antwort aufnimmt. Öffne die Servicekatalog-Einstellungen und senke das Service-Limit oder deaktiviere den Import von Schnittstellendefinitionen, und importiere dann erneut.",
|
|
6208
6226
|
"assistant_generation_failed": "Der Modellanbieter des Assistenten hat nicht geantwortet. Er ist korrekt konfiguriert und hier muss nichts eingerichtet werden: Versuchen Sie die Anfrage gleich noch einmal.",
|
|
6209
|
-
"assistant_reply_unreadable": "Das Modell des Assistenten hat etwas geantwortet, das diese Plattform nicht als Entscheidung ausführen kann. Eine Umformulierung hilft selten: Wählen Sie in den Modelleinstellungen ein anderes Modell für den Assistenten."
|
|
6227
|
+
"assistant_reply_unreadable": "Das Modell des Assistenten hat etwas geantwortet, das diese Plattform nicht als Entscheidung ausführen kann. Eine Umformulierung hilft selten: Wählen Sie in den Modelleinstellungen ein anderes Modell für den Assistenten.",
|
|
6228
|
+
"delegated_executor_failed": "Der externe Executor konnte diesen Schritt nicht starten. Das Problem liegt im System, das die Arbeit ausführt, nicht in dieser Installation: prüfe dessen Logs und versuche es erneut.",
|
|
6229
|
+
"delegated_work_branch_unprepared": "Die Plattform konnte den Arbeitsbranch nicht bereitstellen, auf den der Executor dieses Schritts geschickt wird, daher wurde nichts gestartet. Entweder darf die Repository-Verbindung nicht darauf schreiben, oder die Aufgabe nennt einen Branch, den es noch nicht gibt: die Details sagen, was davon."
|
|
6210
6230
|
}
|
|
6211
6231
|
},
|
|
6212
6232
|
"reason": {
|
|
@@ -6290,7 +6310,10 @@
|
|
|
6290
6310
|
"expedition_settled": "Diese Expedition ist bereits abgeschlossen",
|
|
6291
6311
|
"not_awaiting_triage": "Diese Expedition wartet nicht auf eine Sichtung",
|
|
6292
6312
|
"already_addressed": "Für einige Befunde gibt es bereits eine Behebungsaufgabe",
|
|
6293
|
-
"no_host_frame": "Diese Expedition liegt unter keinem Service"
|
|
6313
|
+
"no_host_frame": "Diese Expedition liegt unter keinem Service",
|
|
6314
|
+
"delegated_executor_unwired": "Externer Executor nicht registriert",
|
|
6315
|
+
"delegated_step_async_only": "Dieser Schritt wird abgefragt, nicht abgewartet",
|
|
6316
|
+
"delegated_claim_missing": "Für diesen Schritt gibt es keine externe Arbeit zu prüfen"
|
|
6294
6317
|
},
|
|
6295
6318
|
"description": {
|
|
6296
6319
|
"dependencies_unmet": "Diese Aufgabe hängt von anderen ab, die noch nicht abgeschlossen sind. Schließe sie ab oder gib sie frei und starte dann erneut.",
|
|
@@ -6344,7 +6367,10 @@
|
|
|
6344
6367
|
"expedition_settled": "Der Lauf hat den Fehlersuch-Schritt bereits hinter sich, es lässt sich also nichts mehr markieren oder verwerfen. Laden Sie den Lauf neu, um zu sehen, was gefunden und welche Befunde bearbeitet wurden.",
|
|
6345
6368
|
"not_awaiting_triage": "Sie untersucht entweder noch einen weiteren Blickwinkel oder wurde bereits abgeschlossen. Laden Sie den Lauf neu, um den Stand zu sehen.",
|
|
6346
6369
|
"already_addressed": "Dafür wurde bereits früher eine Behebungsaufgabe erstellt, es wurde also nichts neu angelegt. Öffnen Sie den Befund, um zur vorhandenen Aufgabe zu gelangen.",
|
|
6347
|
-
"no_host_frame": "Eine Behebungsaufgabe braucht einen Service als Zuhause und ein Repository zum Beheben. Verschieben Sie die Expeditionsaufgabe unter einen Service-Rahmen und versuchen Sie es erneut."
|
|
6370
|
+
"no_host_frame": "Eine Behebungsaufgabe braucht einen Service als Zuhause und ein Repository zum Beheben. Verschieben Sie die Expeditionsaufgabe unter einen Service-Rahmen und versuchen Sie es erneut.",
|
|
6371
|
+
"delegated_executor_unwired": "Ein Schritt dieser Pipeline läuft auf einem externen Executor, den diese Installation nicht registriert; es gibt also kein Ziel für die Arbeit. Registriere den Executor im Code oder wähle für den Schritt einen, der hier läuft.",
|
|
6372
|
+
"delegated_step_async_only": "Dieser Schritt läuft auf einem externen Executor und kann Stunden dauern. Er wird deshalb angestoßen und danach abgefragt, statt innerhalb einer Anfrage ausgeführt zu werden. Starte den Lauf über das Board; wenn du aus eigenem Code hierherkommst, steuere den Schritt über den asynchronen Pfad.",
|
|
6373
|
+
"delegated_claim_missing": "Der Eintrag des Laufs darüber, was an den externen Executor geschickt wurde, fehlt, also gibt es nichts abzufragen. Am Executor selbst ist nichts falsch. Lade den Lauf neu und starte den Schritt erneut, falls er weiterhin hängt."
|
|
6348
6374
|
},
|
|
6349
6375
|
"action": {
|
|
6350
6376
|
"connectGitHub": "GitHub verbinden",
|
|
@@ -8566,5 +8592,36 @@
|
|
|
8566
8592
|
"territories": {
|
|
8567
8593
|
"heading": "Gebiete"
|
|
8568
8594
|
}
|
|
8595
|
+
},
|
|
8596
|
+
"appearance": {
|
|
8597
|
+
"switcher": "Darstellung",
|
|
8598
|
+
"mode": {
|
|
8599
|
+
"system": "System",
|
|
8600
|
+
"light": "Hell",
|
|
8601
|
+
"dark": "Dunkel"
|
|
8602
|
+
},
|
|
8603
|
+
"theme": {
|
|
8604
|
+
"section": "Design",
|
|
8605
|
+
"import": "Nuxt-UI-Design importieren…",
|
|
8606
|
+
"remove": "Dieses Design entfernen"
|
|
8607
|
+
},
|
|
8608
|
+
"import": {
|
|
8609
|
+
"title": "Design importieren",
|
|
8610
|
+
"description": "Erstelle ein Design im Nuxt UI Theme-Editor, kopiere den Freigabelink und füge ihn hier ein. Das Design wird nur in diesem Browser gespeichert.",
|
|
8611
|
+
"linkLabel": "Freigabelink",
|
|
8612
|
+
"linkPlaceholder": "https://ui.nuxt.com/theme?doc=…",
|
|
8613
|
+
"nameLabel": "Name",
|
|
8614
|
+
"namePlaceholder": "Mein Design",
|
|
8615
|
+
"nameTaken": "Ein Design namens „{typed}“ gibt es schon. Dieses wird als „{name}“ gespeichert.",
|
|
8616
|
+
"fontNote": "Eine im Design genannte Schrift wird nur verwendet, wenn dieses Gerät oder diese Installation sie bereitstellt; sonst nutzt der Browser seine Standardschrift.",
|
|
8617
|
+
"submit": "Importieren",
|
|
8618
|
+
"cancel": "Abbrechen",
|
|
8619
|
+
"error": {
|
|
8620
|
+
"notALink": "Füge den Freigabelink von ui.nuxt.com/theme ein (oder das JSON des Designs).",
|
|
8621
|
+
"malformed": "Dieser Link enthält kein lesbares Design. Kopiere ihn erneut aus dem Editor.",
|
|
8622
|
+
"presetShorthand": "Dieser Link nennt eine Vorlage des Nuxt UI Editors, die diese App nicht kennt. Ändere eine beliebige Einstellung im Editor, damit der Link das ganze Design enthält, und kopiere ihn erneut.",
|
|
8623
|
+
"unsupportedVersion": "Dieses Design stammt aus einem neueren Editor-Format, als diese App versteht."
|
|
8624
|
+
}
|
|
8625
|
+
}
|
|
8569
8626
|
}
|
|
8570
8627
|
}
|
package/i18n/locales/en.json
CHANGED
|
@@ -708,7 +708,9 @@
|
|
|
708
708
|
"service_catalog_filter_missing": "This connection's entity filter could not be read, so there is nothing to import. Re-save the service-catalog connection to restore it.",
|
|
709
709
|
"service_catalog_response_too_large": "The developer portal answered with more data than this platform will hold in one response. Open the service-catalog settings and lower the service cap, or turn off importing interface definitions, then import again.",
|
|
710
710
|
"assistant_generation_failed": "The assistant's model provider did not answer. It is configured correctly and nothing here needs setting up: try the request again in a moment.",
|
|
711
|
-
"assistant_reply_unreadable": "The assistant's model answered with something that is not a decision this platform can act on. Rephrasing rarely helps: pick a different model for the assistant in the model settings."
|
|
711
|
+
"assistant_reply_unreadable": "The assistant's model answered with something that is not a decision this platform can act on. Rephrasing rarely helps: pick a different model for the assistant in the model settings.",
|
|
712
|
+
"delegated_executor_failed": "The external executor could not start this step. The problem is in the system that runs the work, not in this deployment: check its own logs and try again.",
|
|
713
|
+
"delegated_work_branch_unprepared": "The platform could not prepare the work branch this step's executor is dispatched onto, so nothing was started. Either the repository connection cannot write to it, or the task names a branch that does not exist yet: the details say which."
|
|
712
714
|
}
|
|
713
715
|
},
|
|
714
716
|
"reason": {
|
|
@@ -798,7 +800,10 @@
|
|
|
798
800
|
"expedition_settled": "This expedition has already finished",
|
|
799
801
|
"not_awaiting_triage": "This expedition is not waiting on triage",
|
|
800
802
|
"already_addressed": "Some findings already have a fix task",
|
|
801
|
-
"no_host_frame": "This expedition is not under a service"
|
|
803
|
+
"no_host_frame": "This expedition is not under a service",
|
|
804
|
+
"delegated_executor_unwired": "External executor not registered",
|
|
805
|
+
"delegated_step_async_only": "This step is polled, not awaited",
|
|
806
|
+
"delegated_claim_missing": "This step has no external work to check"
|
|
802
807
|
},
|
|
803
808
|
"description": {
|
|
804
809
|
"dependencies_unmet": "This task depends on others that aren't finished yet. Complete or unblock them, then start it again.",
|
|
@@ -855,7 +860,10 @@
|
|
|
855
860
|
"expedition_settled": "The run has moved past its bug-fishing step, so there is nothing left to mark or dismiss. Reload the run to see what it caught and which findings were acted on.",
|
|
856
861
|
"not_awaiting_triage": "It is either still fishing a later angle or it has already been finished. Refresh the run to see where it is.",
|
|
857
862
|
"already_addressed": "A fix task was created for them earlier, so nothing was created again. Open the finding to reach the task it already has.",
|
|
858
|
-
"no_host_frame": "A fix task needs a service to live under and a repository to fix. Move the expedition task under a service frame and try again."
|
|
863
|
+
"no_host_frame": "A fix task needs a service to live under and a repository to fix. Move the expedition task under a service frame and try again.",
|
|
864
|
+
"delegated_executor_unwired": "A step in this pipeline runs on an external executor this deployment does not register, so there is nowhere to send the work. Register the executor in code, or change the step to one that runs here.",
|
|
865
|
+
"delegated_step_async_only": "This step runs on an external executor, which can take hours, so it is dispatched and then polled rather than run inside one request. Start the run from the board; if you reached this from your own code, drive the step through the async path.",
|
|
866
|
+
"delegated_claim_missing": "The run’s record of what it sent to the external executor is missing, so there is nothing to poll. Nothing is wrong with the executor itself. Reload the run, and re-run the step if it is still stuck."
|
|
859
867
|
},
|
|
860
868
|
"action": {
|
|
861
869
|
"connectGitHub": "Connect GitHub",
|
|
@@ -1707,7 +1715,24 @@
|
|
|
1707
1715
|
"promptVariant": "Prompt variant",
|
|
1708
1716
|
"promptVariantAdditionOnly": "Only this variant's addition applied. The workspace prompt for this agent replaced its base text.",
|
|
1709
1717
|
"promptVariantSuperseded": "This variant did not apply. The workspace prompt for this agent took precedence.",
|
|
1710
|
-
"promptVariantWithdrawn": "This variant is no longer registered, so the step ran the shipped prompt."
|
|
1718
|
+
"promptVariantWithdrawn": "This variant is no longer registered, so the step ran the shipped prompt.",
|
|
1719
|
+
"delegated": {
|
|
1720
|
+
"status": {
|
|
1721
|
+
"cancelled": "Cancelled",
|
|
1722
|
+
"done": "Finished externally",
|
|
1723
|
+
"failed": "Failed externally",
|
|
1724
|
+
"running": "Running externally",
|
|
1725
|
+
"starting": "Starting externally",
|
|
1726
|
+
"unrecognised": "Unrecognised status ({status})"
|
|
1727
|
+
},
|
|
1728
|
+
"run": "External run",
|
|
1729
|
+
"branch": "Branch",
|
|
1730
|
+
"copyUrl": "Copy external run link",
|
|
1731
|
+
"openRun": "Open run",
|
|
1732
|
+
"noOutcome": "No outcome recorded",
|
|
1733
|
+
"earlierAttempts": "Earlier attempts",
|
|
1734
|
+
"usageNotReported": "Token usage is not reported by {executor}, so this step is missing from the totals above."
|
|
1735
|
+
}
|
|
1711
1736
|
},
|
|
1712
1737
|
"stepDetail": {
|
|
1713
1738
|
"contents": "Contents",
|
|
@@ -2134,6 +2159,7 @@
|
|
|
2134
2159
|
"timeout": "Timeout",
|
|
2135
2160
|
"agent": "Agent",
|
|
2136
2161
|
"job_failed": "Job failed",
|
|
2162
|
+
"delegated_failed": "External executor failed",
|
|
2137
2163
|
"rejected": "Rejected",
|
|
2138
2164
|
"companion_rejected": "Companion rejected",
|
|
2139
2165
|
"stalled": "Stalled",
|
|
@@ -8888,5 +8914,45 @@
|
|
|
8888
8914
|
"territories": {
|
|
8889
8915
|
"heading": "Territories"
|
|
8890
8916
|
}
|
|
8917
|
+
},
|
|
8918
|
+
"appearance": {
|
|
8919
|
+
"switcher": "Appearance",
|
|
8920
|
+
"@switcher": {
|
|
8921
|
+
"description": "Label above the sidebar picker that chooses the colour mode (system, light, dark) and the visual theme."
|
|
8922
|
+
},
|
|
8923
|
+
"mode": {
|
|
8924
|
+
"system": "System",
|
|
8925
|
+
"light": "Light",
|
|
8926
|
+
"dark": "Dark"
|
|
8927
|
+
},
|
|
8928
|
+
"theme": {
|
|
8929
|
+
"section": "Theme",
|
|
8930
|
+
"import": "Import a Nuxt UI theme…",
|
|
8931
|
+
"@import": {
|
|
8932
|
+
"description": "Menu entry that opens the dialog for importing a theme built in the Nuxt UI theme editor (ui.nuxt.com/theme). Keep 'Nuxt UI' as a product name."
|
|
8933
|
+
},
|
|
8934
|
+
"remove": "Remove this theme"
|
|
8935
|
+
},
|
|
8936
|
+
"import": {
|
|
8937
|
+
"title": "Import a theme",
|
|
8938
|
+
"description": "Build a theme in the Nuxt UI theme editor, copy its share link and paste it here. The theme is stored in this browser only.",
|
|
8939
|
+
"linkLabel": "Share link",
|
|
8940
|
+
"linkPlaceholder": "https://ui.nuxt.com/theme?doc=…",
|
|
8941
|
+
"nameLabel": "Name",
|
|
8942
|
+
"namePlaceholder": "My theme",
|
|
8943
|
+
"nameTaken": "A theme called “{typed}” already exists. This one will be saved as “{name}”.",
|
|
8944
|
+
"@nameTaken": {
|
|
8945
|
+
"description": "Help text under the Name field of the theme import dialog when the typed name is already used. {typed} is what the user typed, {name} is the name that will be saved instead (e.g. 'Mono (2)')."
|
|
8946
|
+
},
|
|
8947
|
+
"fontNote": "A font the theme names is used only if this device or deployment provides it; otherwise the browser falls back to its default.",
|
|
8948
|
+
"submit": "Import",
|
|
8949
|
+
"cancel": "Cancel",
|
|
8950
|
+
"error": {
|
|
8951
|
+
"notALink": "Paste the share link from ui.nuxt.com/theme (or the theme's JSON).",
|
|
8952
|
+
"malformed": "This link does not carry a readable theme. Copy it again from the editor.",
|
|
8953
|
+
"presetShorthand": "This link names a Nuxt UI editor preset this app does not know. Change any setting in the editor so the link carries the whole theme, then copy it again.",
|
|
8954
|
+
"unsupportedVersion": "This theme was made with a newer editor format than this app understands."
|
|
8955
|
+
}
|
|
8956
|
+
}
|
|
8891
8957
|
}
|
|
8892
8958
|
}
|
package/i18n/locales/es.json
CHANGED
|
@@ -636,7 +636,9 @@
|
|
|
636
636
|
"service_catalog_filter_missing": "No se pudo leer el filtro de entidades de esta conexión, así que no hay nada que importar. Vuelve a guardar la conexión del catálogo de servicios para restaurarlo.",
|
|
637
637
|
"service_catalog_response_too_large": "El portal de desarrollo respondió con más datos de los que esta plataforma admite en una sola respuesta. Abre la configuración del catálogo de servicios y reduce el límite de servicios, o desactiva la importación de definiciones de interfaz, y vuelve a importar.",
|
|
638
638
|
"assistant_generation_failed": "El proveedor de modelos del asistente no respondió. Está configurado correctamente y aquí no hay nada que configurar: vuelve a intentar la solicitud en un momento.",
|
|
639
|
-
"assistant_reply_unreadable": "El modelo del asistente respondió con algo que esta plataforma no puede ejecutar como decisión. Reformular rara vez ayuda: elige otro modelo para el asistente en la configuración de modelos."
|
|
639
|
+
"assistant_reply_unreadable": "El modelo del asistente respondió con algo que esta plataforma no puede ejecutar como decisión. Reformular rara vez ayuda: elige otro modelo para el asistente en la configuración de modelos.",
|
|
640
|
+
"delegated_executor_failed": "El ejecutor externo no pudo iniciar este paso. El problema está en el sistema que realiza el trabajo, no en esta instalación: revisa sus propios registros e inténtalo de nuevo.",
|
|
641
|
+
"delegated_work_branch_unprepared": "La plataforma no pudo preparar la rama de trabajo a la que se envía el ejecutor de este paso, así que no se inició nada. O la conexión al repositorio no puede escribir en ella, o la tarea indica una rama que aún no existe: los detalles dicen cuál de las dos."
|
|
640
642
|
}
|
|
641
643
|
},
|
|
642
644
|
"reason": {
|
|
@@ -720,7 +722,10 @@
|
|
|
720
722
|
"expedition_settled": "Esta expedición ya ha finalizado",
|
|
721
723
|
"not_awaiting_triage": "Esta expedición no está esperando triaje",
|
|
722
724
|
"already_addressed": "Algunos hallazgos ya tienen tarea de corrección",
|
|
723
|
-
"no_host_frame": "Esta expedición no está bajo un servicio"
|
|
725
|
+
"no_host_frame": "Esta expedición no está bajo un servicio",
|
|
726
|
+
"delegated_executor_unwired": "Ejecutor externo no registrado",
|
|
727
|
+
"delegated_step_async_only": "Este paso se consulta, no se espera",
|
|
728
|
+
"delegated_claim_missing": "Este paso no tiene trabajo externo que consultar"
|
|
724
729
|
},
|
|
725
730
|
"description": {
|
|
726
731
|
"dependencies_unmet": "Esta tarea depende de otras que aún no están terminadas. Complétalas o desbloquéalas y vuelve a iniciarla.",
|
|
@@ -774,7 +779,10 @@
|
|
|
774
779
|
"expedition_settled": "La ejecución ya ha superado su paso de pesca de errores, así que no queda nada que marcar ni descartar. Recargue la ejecución para ver qué encontró y sobre qué hallazgos se actuó.",
|
|
775
780
|
"not_awaiting_triage": "O sigue explorando otro ángulo o ya se ha terminado. Recargue la ejecución para ver en qué punto está.",
|
|
776
781
|
"already_addressed": "Ya se creó antes una tarea de corrección para ellos, así que no se ha creado nada nuevo. Abra el hallazgo para llegar a la tarea que ya tiene.",
|
|
777
|
-
"no_host_frame": "Una tarea de corrección necesita un servicio donde vivir y un repositorio que arreglar. Mueva la tarea de la expedición bajo un marco de servicio e inténtelo de nuevo."
|
|
782
|
+
"no_host_frame": "Una tarea de corrección necesita un servicio donde vivir y un repositorio que arreglar. Mueva la tarea de la expedición bajo un marco de servicio e inténtelo de nuevo.",
|
|
783
|
+
"delegated_executor_unwired": "Un paso de esta canalización se ejecuta en un ejecutor externo que esta instalación no registra, así que no hay dónde enviar el trabajo. Registra el ejecutor en el código o cambia el paso por uno que se ejecute aquí.",
|
|
784
|
+
"delegated_step_async_only": "Este paso se ejecuta en un ejecutor externo y puede tardar horas, así que se lanza y luego se consulta en lugar de ejecutarse dentro de una sola petición. Inicia la ejecución desde el tablero; si has llegado aquí desde tu propio código, conduce el paso por la vía asíncrona.",
|
|
785
|
+
"delegated_claim_missing": "Falta el registro de lo que la ejecución envió al ejecutor externo, así que no hay nada que consultar. El ejecutor en sí no tiene ningún problema. Recarga la ejecución y vuelve a lanzar el paso si sigue atascado."
|
|
778
786
|
},
|
|
779
787
|
"action": {
|
|
780
788
|
"connectGitHub": "Conectar GitHub",
|
|
@@ -1586,7 +1594,24 @@
|
|
|
1586
1594
|
"promptVariant": "Variante del prompt",
|
|
1587
1595
|
"promptVariantAdditionOnly": "Solo se aplicó el añadido de esta variante. El prompt del espacio de trabajo para este agente reemplazó su texto base.",
|
|
1588
1596
|
"promptVariantSuperseded": "Esta variante no se aplicó. El prompt del espacio de trabajo para este agente tuvo prioridad.",
|
|
1589
|
-
"promptVariantWithdrawn": "Esta variante ya no está registrada, por lo que el paso se ejecutó con el prompt original."
|
|
1597
|
+
"promptVariantWithdrawn": "Esta variante ya no está registrada, por lo que el paso se ejecutó con el prompt original.",
|
|
1598
|
+
"delegated": {
|
|
1599
|
+
"status": {
|
|
1600
|
+
"cancelled": "Cancelado",
|
|
1601
|
+
"done": "Finalizado fuera de la plataforma",
|
|
1602
|
+
"failed": "Fallido fuera de la plataforma",
|
|
1603
|
+
"running": "Ejecutándose fuera de la plataforma",
|
|
1604
|
+
"starting": "Iniciando fuera de la plataforma",
|
|
1605
|
+
"unrecognised": "Estado no reconocido ({status})"
|
|
1606
|
+
},
|
|
1607
|
+
"run": "Ejecución externa",
|
|
1608
|
+
"branch": "Rama",
|
|
1609
|
+
"copyUrl": "Copiar el enlace de la ejecución externa",
|
|
1610
|
+
"openRun": "Abrir la ejecución",
|
|
1611
|
+
"noOutcome": "Sin resultado registrado",
|
|
1612
|
+
"earlierAttempts": "Intentos anteriores",
|
|
1613
|
+
"usageNotReported": "{executor} no informa del consumo de tokens, así que este paso falta en los totales de arriba."
|
|
1614
|
+
}
|
|
1590
1615
|
},
|
|
1591
1616
|
"stepDetail": {
|
|
1592
1617
|
"contents": "Contenidos",
|
|
@@ -2006,6 +2031,7 @@
|
|
|
2006
2031
|
"timeout": "Tiempo agotado",
|
|
2007
2032
|
"agent": "Agente",
|
|
2008
2033
|
"job_failed": "Trabajo fallido",
|
|
2034
|
+
"delegated_failed": "Fallo del ejecutor externo",
|
|
2009
2035
|
"rejected": "Rechazada",
|
|
2010
2036
|
"companion_rejected": "Acompañante rechazado",
|
|
2011
2037
|
"stalled": "Estancada",
|
|
@@ -8566,5 +8592,36 @@
|
|
|
8566
8592
|
"territories": {
|
|
8567
8593
|
"heading": "Territorios"
|
|
8568
8594
|
}
|
|
8595
|
+
},
|
|
8596
|
+
"appearance": {
|
|
8597
|
+
"switcher": "Apariencia",
|
|
8598
|
+
"mode": {
|
|
8599
|
+
"system": "Sistema",
|
|
8600
|
+
"light": "Claro",
|
|
8601
|
+
"dark": "Oscuro"
|
|
8602
|
+
},
|
|
8603
|
+
"theme": {
|
|
8604
|
+
"section": "Tema",
|
|
8605
|
+
"import": "Importar un tema de Nuxt UI…",
|
|
8606
|
+
"remove": "Quitar este tema"
|
|
8607
|
+
},
|
|
8608
|
+
"import": {
|
|
8609
|
+
"title": "Importar un tema",
|
|
8610
|
+
"description": "Crea un tema en el editor de temas de Nuxt UI, copia su enlace para compartir y pégalo aquí. El tema se guarda solo en este navegador.",
|
|
8611
|
+
"linkLabel": "Enlace para compartir",
|
|
8612
|
+
"linkPlaceholder": "https://ui.nuxt.com/theme?doc=…",
|
|
8613
|
+
"nameLabel": "Nombre",
|
|
8614
|
+
"namePlaceholder": "Mi tema",
|
|
8615
|
+
"nameTaken": "Ya existe un tema llamado «{typed}». Este se guardará como «{name}».",
|
|
8616
|
+
"fontNote": "La fuente que nombra el tema solo se usa si este dispositivo o esta instalación la proporciona; si no, el navegador usa su fuente predeterminada.",
|
|
8617
|
+
"submit": "Importar",
|
|
8618
|
+
"cancel": "Cancelar",
|
|
8619
|
+
"error": {
|
|
8620
|
+
"notALink": "Pega el enlace para compartir de ui.nuxt.com/theme (o el JSON del tema).",
|
|
8621
|
+
"malformed": "Este enlace no contiene un tema legible. Cópialo de nuevo desde el editor.",
|
|
8622
|
+
"presetShorthand": "Este enlace nombra un preajuste del editor de Nuxt UI que esta aplicación no conoce. Cambia cualquier ajuste en el editor para que el enlace lleve el tema completo y cópialo de nuevo.",
|
|
8623
|
+
"unsupportedVersion": "Este tema se creó con un formato del editor más nuevo del que esta aplicación entiende."
|
|
8624
|
+
}
|
|
8625
|
+
}
|
|
8569
8626
|
}
|
|
8570
8627
|
}
|