@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
|
@@ -147,12 +147,12 @@ async function copyPlan() {
|
|
|
147
147
|
reason, in a main-column header this surface does not have. -->
|
|
148
148
|
<aside
|
|
149
149
|
v-if="outline.hasToc || $slots['run-details']"
|
|
150
|
-
class="hidden w-52 shrink-0 flex-col border-e border-
|
|
150
|
+
class="hidden w-52 shrink-0 flex-col border-e border-default bg-default/60 lg:flex"
|
|
151
151
|
>
|
|
152
|
-
<div class="flex items-center gap-0.5 border-b border-
|
|
152
|
+
<div class="flex items-center gap-0.5 border-b border-default px-3 py-2">
|
|
153
153
|
<span
|
|
154
154
|
v-if="outline.hasToc"
|
|
155
|
-
class="min-w-0 flex-1 truncate text-[11px] font-semibold uppercase tracking-wide text-
|
|
155
|
+
class="min-w-0 flex-1 truncate text-[11px] font-semibold uppercase tracking-wide text-dimmed"
|
|
156
156
|
>
|
|
157
157
|
{{ t('panels.stepDetail.contents') }}
|
|
158
158
|
</span>
|
|
@@ -193,8 +193,8 @@ async function copyPlan() {
|
|
|
193
193
|
class="block w-full truncate rounded-md px-2 py-1 text-start text-[12px] transition"
|
|
194
194
|
:class="
|
|
195
195
|
activeId === s.id
|
|
196
|
-
? 'bg-
|
|
197
|
-
: 'text-
|
|
196
|
+
? 'bg-app-warning-500/15 font-medium text-app-warning-100'
|
|
197
|
+
: 'text-muted hover:bg-elevated/60 hover:text-default'
|
|
198
198
|
"
|
|
199
199
|
:style="{ paddingLeft: `${(s.depth - outline.minDepth) * 0.7 + 0.5}rem` }"
|
|
200
200
|
:title="s.title"
|
|
@@ -212,23 +212,21 @@ async function copyPlan() {
|
|
|
212
212
|
<div
|
|
213
213
|
v-if="$slots['run-details']"
|
|
214
214
|
class="flex flex-col"
|
|
215
|
-
:class="
|
|
216
|
-
outline.hasToc ? 'max-h-[45%] shrink-0 border-t border-slate-800' : 'min-h-0 flex-1'
|
|
217
|
-
"
|
|
215
|
+
:class="outline.hasToc ? 'max-h-[45%] shrink-0 border-t border-default' : 'min-h-0 flex-1'"
|
|
218
216
|
>
|
|
219
217
|
<button
|
|
220
218
|
type="button"
|
|
221
219
|
data-testid="initiative-plan-run-meta-toggle"
|
|
222
|
-
class="flex shrink-0 items-center gap-1.5 px-3 py-2 text-start transition hover:bg-
|
|
220
|
+
class="flex shrink-0 items-center gap-1.5 px-3 py-2 text-start transition hover:bg-elevated/40"
|
|
223
221
|
:aria-expanded="runDetailsOpen"
|
|
224
222
|
@click="runDetailsOpen = !runDetailsOpen"
|
|
225
223
|
>
|
|
226
|
-
<span class="flex-1 text-[11px] font-semibold uppercase tracking-wide text-
|
|
224
|
+
<span class="flex-1 text-[11px] font-semibold uppercase tracking-wide text-dimmed">
|
|
227
225
|
{{ t('panels.stepDetail.details') }}
|
|
228
226
|
</span>
|
|
229
227
|
<UIcon
|
|
230
228
|
:name="runDetailsOpen ? 'i-lucide-chevron-down' : 'i-lucide-chevron-up'"
|
|
231
|
-
class="h-3.5 w-3.5 shrink-0 text-
|
|
229
|
+
class="h-3.5 w-3.5 shrink-0 text-dimmed"
|
|
232
230
|
/>
|
|
233
231
|
</button>
|
|
234
232
|
<div
|
|
@@ -266,17 +264,17 @@ async function copyPlan() {
|
|
|
266
264
|
>
|
|
267
265
|
<button
|
|
268
266
|
v-if="s.depth > 0"
|
|
269
|
-
class="group flex w-full items-center gap-1.5 rounded py-0.5 text-start transition hover:text-
|
|
267
|
+
class="group flex w-full items-center gap-1.5 rounded py-0.5 text-start transition hover:text-highlighted"
|
|
270
268
|
:aria-expanded="!collapsed[s.id]"
|
|
271
269
|
@click="toggle(s.id)"
|
|
272
270
|
>
|
|
273
271
|
<UIcon
|
|
274
272
|
name="i-lucide-chevron-right"
|
|
275
|
-
class="h-3.5 w-3.5 shrink-0 text-
|
|
273
|
+
class="h-3.5 w-3.5 shrink-0 text-dimmed transition-transform group-hover:text-toned"
|
|
276
274
|
:class="collapsed[s.id] ? '' : 'rotate-90'"
|
|
277
275
|
/>
|
|
278
276
|
<span
|
|
279
|
-
class="font-semibold text-
|
|
277
|
+
class="font-semibold text-app-100"
|
|
280
278
|
:class="s.depth <= 1 ? 'text-base' : s.depth === 2 ? 'text-sm' : 'text-[13px]'"
|
|
281
279
|
v-html="s.titleHtml"
|
|
282
280
|
/>
|
|
@@ -287,7 +285,7 @@ async function copyPlan() {
|
|
|
287
285
|
<!-- eslint-disable-next-line vue/no-v-html -->
|
|
288
286
|
<div
|
|
289
287
|
v-show="!collapsed[s.id]"
|
|
290
|
-
class="reader-prose mt-0.5 text-[13px] leading-relaxed text-
|
|
288
|
+
class="reader-prose mt-0.5 text-[13px] leading-relaxed text-toned"
|
|
291
289
|
:class="[s.depth > 0 ? 'ps-5' : '', canExecute ? 'review-mode' : '']"
|
|
292
290
|
@click="onProseClick"
|
|
293
291
|
v-html="s.bodyHtml"
|
|
@@ -301,18 +299,18 @@ async function copyPlan() {
|
|
|
301
299
|
so a long comment list can't crowd the plan off the screen. -->
|
|
302
300
|
<aside
|
|
303
301
|
:aria-label="t('initiative.planReview.title')"
|
|
304
|
-
class="flex max-h-[55%] w-full shrink-0 flex-col border-t border-
|
|
302
|
+
class="flex max-h-[55%] w-full shrink-0 flex-col border-t border-default bg-default/60 lg:max-h-none lg:w-72 lg:border-s lg:border-t-0"
|
|
305
303
|
>
|
|
306
|
-
<div class="border-b border-
|
|
304
|
+
<div class="border-b border-default px-4 py-3">
|
|
307
305
|
<!-- A HEADING, not a styled div: this rail is what the window is now for, so the surface
|
|
308
306
|
that asks the human for a decision has to be reachable as one. -->
|
|
309
307
|
<h3
|
|
310
|
-
class="flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-
|
|
308
|
+
class="flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-app-warning-400"
|
|
311
309
|
>
|
|
312
310
|
<UIcon name="i-lucide-clipboard-check" class="h-3.5 w-3.5 shrink-0" />
|
|
313
311
|
{{ t('initiative.planReview.title') }}
|
|
314
312
|
</h3>
|
|
315
|
-
<p class="mt-1 text-[12px] leading-relaxed text-
|
|
313
|
+
<p class="mt-1 text-[12px] leading-relaxed text-muted">
|
|
316
314
|
{{ t('initiative.planReview.body') }}
|
|
317
315
|
</p>
|
|
318
316
|
</div>
|
|
@@ -322,13 +320,13 @@ async function copyPlan() {
|
|
|
322
320
|
<div
|
|
323
321
|
v-if="draftTarget"
|
|
324
322
|
data-testid="initiative-plan-composer"
|
|
325
|
-
class="rounded-lg border border-
|
|
323
|
+
class="rounded-lg border border-primary/40 bg-primary/5 p-2.5"
|
|
326
324
|
>
|
|
327
|
-
<div class="mb-1 text-[10px] uppercase tracking-wide text-
|
|
325
|
+
<div class="mb-1 text-[10px] uppercase tracking-wide text-primary">
|
|
328
326
|
{{ t('panels.stepDetail.commentingOn') }}
|
|
329
327
|
</div>
|
|
330
328
|
<pre
|
|
331
|
-
class="mb-2 max-h-20 overflow-auto whitespace-pre-wrap rounded bg-
|
|
329
|
+
class="mb-2 max-h-20 overflow-auto whitespace-pre-wrap rounded bg-app-950/60 p-1.5 text-[11px] text-toned"
|
|
332
330
|
>{{ draftTarget.quotedSource }}</pre>
|
|
333
331
|
<UTextarea
|
|
334
332
|
v-model="draftBody"
|
|
@@ -360,14 +358,14 @@ async function copyPlan() {
|
|
|
360
358
|
v-for="(c, idx) in planComments"
|
|
361
359
|
:key="idx"
|
|
362
360
|
data-testid="initiative-plan-comment"
|
|
363
|
-
class="rounded-lg border border-
|
|
361
|
+
class="rounded-lg border border-default bg-default/50 p-2.5"
|
|
364
362
|
>
|
|
365
363
|
<div class="mb-1 flex items-start justify-between gap-2">
|
|
366
|
-
<div class="text-[10px] uppercase tracking-wide text-
|
|
364
|
+
<div class="text-[10px] uppercase tracking-wide text-dimmed">
|
|
367
365
|
{{ t('panels.stepDetail.commentN', { number: idx + 1 }) }}
|
|
368
366
|
</div>
|
|
369
367
|
<button
|
|
370
|
-
class="text-
|
|
368
|
+
class="text-dimmed transition hover:text-app-error-400"
|
|
371
369
|
:title="t('panels.stepDetail.removeComment')"
|
|
372
370
|
@click="removeComment(idx)"
|
|
373
371
|
>
|
|
@@ -375,16 +373,16 @@ async function copyPlan() {
|
|
|
375
373
|
</button>
|
|
376
374
|
</div>
|
|
377
375
|
<pre
|
|
378
|
-
class="mb-1 max-h-16 overflow-auto whitespace-pre-wrap rounded bg-
|
|
376
|
+
class="mb-1 max-h-16 overflow-auto whitespace-pre-wrap rounded bg-app-950/50 p-1.5 text-[10px] text-muted"
|
|
379
377
|
>{{ c.quotedSource }}</pre>
|
|
380
|
-
<p class="text-[12px] text-
|
|
378
|
+
<p class="text-[12px] text-default">{{ c.body }}</p>
|
|
381
379
|
</div>
|
|
382
380
|
|
|
383
381
|
<!-- Only worth saying where clicking a block does something (the RBAC to act on it) and
|
|
384
382
|
where nothing has been said yet. -->
|
|
385
383
|
<p
|
|
386
384
|
v-if="canExecute && !draftTarget && !planComments.length"
|
|
387
|
-
class="text-[11px] leading-relaxed text-
|
|
385
|
+
class="text-[11px] leading-relaxed text-muted"
|
|
388
386
|
>
|
|
389
387
|
{{ t('initiative.planReview.commentHint') }}
|
|
390
388
|
</p>
|
|
@@ -394,7 +392,7 @@ async function copyPlan() {
|
|
|
394
392
|
"request changes" step: with per-block comments in play the human is already composing a
|
|
395
393
|
review, and a hidden field reads as "there is nothing more to say". -->
|
|
396
394
|
<InitiativePlanDecision
|
|
397
|
-
class="border-t border-
|
|
395
|
+
class="border-t border-default px-4 pt-3 pb-[calc(0.75rem+env(safe-area-inset-bottom))]"
|
|
398
396
|
:approval-id="approval.id"
|
|
399
397
|
:instance-id="instanceId"
|
|
400
398
|
:can-execute="canExecute"
|
|
@@ -196,7 +196,7 @@ async function onDiscard() {
|
|
|
196
196
|
<ResultWindowShell
|
|
197
197
|
:open="open"
|
|
198
198
|
icon="i-lucide-messages-square"
|
|
199
|
-
icon-class="bg-
|
|
199
|
+
icon-class="bg-primary/15 text-primary"
|
|
200
200
|
:title="initiative?.title ?? block?.title ?? t('initiative.planning.title')"
|
|
201
201
|
:subtitle="t('initiative.planning.subtitle')"
|
|
202
202
|
width="4xl"
|
|
@@ -214,14 +214,14 @@ async function onDiscard() {
|
|
|
214
214
|
<!-- No entity yet -->
|
|
215
215
|
<div
|
|
216
216
|
v-if="!initiative"
|
|
217
|
-
class="flex h-full flex-col items-center justify-center gap-2 text-center text-
|
|
217
|
+
class="flex h-full flex-col items-center justify-center gap-2 text-center text-muted"
|
|
218
218
|
>
|
|
219
219
|
<UIcon name="i-lucide-messages-square" class="h-8 w-8 opacity-40" />
|
|
220
220
|
<p class="text-sm">{{ t('initiative.planning.empty') }}</p>
|
|
221
221
|
</div>
|
|
222
222
|
|
|
223
223
|
<template v-else>
|
|
224
|
-
<p class="mb-4 text-[13px] leading-relaxed text-
|
|
224
|
+
<p class="mb-4 text-[13px] leading-relaxed text-toned">
|
|
225
225
|
{{ t('initiative.planning.intro') }}
|
|
226
226
|
</p>
|
|
227
227
|
|
|
@@ -259,7 +259,7 @@ async function onDiscard() {
|
|
|
259
259
|
converged, which means the planner already has what it needs). -->
|
|
260
260
|
<div
|
|
261
261
|
v-else-if="phase === 'idle' && questions.length === 0"
|
|
262
|
-
class="rounded-lg border border-
|
|
262
|
+
class="rounded-lg border border-default bg-app-950/40 p-4 text-center text-[13px] text-muted"
|
|
263
263
|
data-testid="initiative-planning-idle"
|
|
264
264
|
>
|
|
265
265
|
{{ t('initiative.planning.idle') }}
|
|
@@ -268,7 +268,7 @@ async function onDiscard() {
|
|
|
268
268
|
<!-- Converged / no pending questions -->
|
|
269
269
|
<div
|
|
270
270
|
v-else-if="phase === 'converged' || questions.length === 0"
|
|
271
|
-
class="rounded-lg border border-
|
|
271
|
+
class="rounded-lg border border-default bg-app-950/40 p-4 text-center text-[13px] text-muted"
|
|
272
272
|
data-testid="initiative-planning-converged"
|
|
273
273
|
>
|
|
274
274
|
{{ t('initiative.planning.converged') }}
|
|
@@ -301,7 +301,7 @@ async function onDiscard() {
|
|
|
301
301
|
flush could only drop. -->
|
|
302
302
|
<p
|
|
303
303
|
v-if="!addressable(q)"
|
|
304
|
-
class="mt-1 text-[11px] text-
|
|
304
|
+
class="mt-1 text-[11px] text-app-warning-300"
|
|
305
305
|
data-testid="initiative-planning-unanswerable"
|
|
306
306
|
>
|
|
307
307
|
{{ t('initiative.planning.unanswerable') }}
|
|
@@ -318,7 +318,7 @@ async function onDiscard() {
|
|
|
318
318
|
<aside
|
|
319
319
|
v-if="metaStep"
|
|
320
320
|
data-testid="initiative-planning-run-meta"
|
|
321
|
-
class="hidden w-60 shrink-0 flex-col gap-4 overflow-y-auto border-s border-
|
|
321
|
+
class="hidden w-60 shrink-0 flex-col gap-4 overflow-y-auto border-s border-default bg-default/50 px-4 py-4 lg:flex"
|
|
322
322
|
>
|
|
323
323
|
<StepRunMeta
|
|
324
324
|
:step="metaStep"
|
|
@@ -338,7 +338,7 @@ async function onDiscard() {
|
|
|
338
338
|
exactly the ones a wedged run sits in. -->
|
|
339
339
|
<footer
|
|
340
340
|
v-if="initiative && (canDiscard || (phase === 'awaiting' && questions.length > 0))"
|
|
341
|
-
class="flex items-center justify-between gap-3 border-t border-
|
|
341
|
+
class="flex items-center justify-between gap-3 border-t border-default px-5 py-3"
|
|
342
342
|
>
|
|
343
343
|
<UButton
|
|
344
344
|
v-if="canDiscard"
|
|
@@ -360,10 +360,10 @@ async function onDiscard() {
|
|
|
360
360
|
v-if="phase === 'awaiting' && questions.length > 0"
|
|
361
361
|
class="ms-auto flex items-center gap-2"
|
|
362
362
|
>
|
|
363
|
-
<p class="text-[11px] text-
|
|
363
|
+
<p class="text-[11px] text-dimmed">
|
|
364
364
|
<span
|
|
365
365
|
v-if="unanswered > 0"
|
|
366
|
-
class="text-
|
|
366
|
+
class="text-app-warning-400/90"
|
|
367
367
|
data-testid="initiative-planning-unanswered"
|
|
368
368
|
>
|
|
369
369
|
{{ t('initiative.planning.unanswered', { count: unanswered }) }}
|