@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.
Files changed (328) hide show
  1. package/README.md +16 -0
  2. package/app/app.config.ts +19 -10
  3. package/app/assets/css/main.css +13 -13
  4. package/app/assets/css/prose.css +22 -22
  5. package/app/assets/css/tokens.css +298 -0
  6. package/app/components/assistant/AssistantModal.vue +22 -22
  7. package/app/components/auth/AuthGate.vue +1 -1
  8. package/app/components/auth/BackendMisconfiguredScreen.vue +10 -10
  9. package/app/components/auth/LoginScreen.vue +34 -36
  10. package/app/components/auth/ResetPasswordScreen.vue +12 -12
  11. package/app/components/auth/UserMenu.vue +4 -4
  12. package/app/components/binaryCandidates/BinaryCandidatesWindow.vue +27 -25
  13. package/app/components/binaryOutput/BinaryOutputReport.vue +15 -15
  14. package/app/components/binaryOutput/StoredAssetView.vue +5 -5
  15. package/app/components/board/AddTaskModal.vue +17 -20
  16. package/app/components/board/AgentFailureCard.vue +11 -11
  17. package/app/components/board/AgentFailureHistory.vue +2 -2
  18. package/app/components/board/BoardCanvas.vue +6 -5
  19. package/app/components/board/CreateInitiativeModal.vue +8 -10
  20. package/app/components/board/DependencyConnectOverlay.vue +1 -1
  21. package/app/components/board/FailureHistoryList.vue +7 -7
  22. package/app/components/board/RecurringPipelineModal.vue +17 -17
  23. package/app/components/board/ReviewFrictionDialog.vue +6 -6
  24. package/app/components/board/StepExecutionHistory.vue +13 -13
  25. package/app/components/board/TaskDependencyEdges.vue +8 -8
  26. package/app/components/board/nodes/AgentChip.vue +10 -10
  27. package/app/components/board/nodes/BlockNode.vue +29 -29
  28. package/app/components/board/nodes/DecisionBadge.vue +2 -2
  29. package/app/components/board/nodes/EpicNode.vue +14 -10
  30. package/app/components/board/nodes/FrameSwimlanes.vue +7 -9
  31. package/app/components/board/nodes/InitiativeCard.vue +8 -8
  32. package/app/components/board/nodes/LaneGroup.vue +1 -1
  33. package/app/components/board/nodes/LaneTask.vue +2 -2
  34. package/app/components/board/nodes/ResizeGrips.vue +4 -4
  35. package/app/components/board/nodes/TaskCard.vue +18 -18
  36. package/app/components/board/nodes/TaskLane.vue +5 -5
  37. package/app/components/board/nodes/TaskPipelineMini.vue +18 -18
  38. package/app/components/bootstrap/AdoptionReviewModal.vue +29 -26
  39. package/app/components/bootstrap/BootstrapModal.vue +21 -23
  40. package/app/components/bootstrap/BootstrapRunSteps.vue +1 -1
  41. package/app/components/brainstorm/BrainstormWindow.vue +30 -33
  42. package/app/components/bugFishing/BugFishingWindow.vue +49 -49
  43. package/app/components/clarity/ClarityReviewWindow.vue +30 -30
  44. package/app/components/common/AsyncViewError.vue +5 -5
  45. package/app/components/common/ClarificationItem.vue +8 -13
  46. package/app/components/common/ConfirmDialog.vue +4 -2
  47. package/app/components/common/DescriptorFields.vue +1 -1
  48. package/app/components/common/EmptyState.vue +3 -3
  49. package/app/components/common/InterviewGateNotice.vue +7 -7
  50. package/app/components/common/KeyboardShortcutsHelp.vue +1 -1
  51. package/app/components/common/MarkdownProse.vue +14 -13
  52. package/app/components/consensus/ConsensusSessionWindow.vue +26 -26
  53. package/app/components/context/ContextAttachmentFields.vue +17 -17
  54. package/app/components/docs/DocInterviewWindow.vue +14 -14
  55. package/app/components/documents/ContextDocumentPicker.vue +17 -17
  56. package/app/components/documents/DocumentImportModal.vue +7 -7
  57. package/app/components/documents/DocumentSourceConnectModal.vue +3 -3
  58. package/app/components/documents/DocumentSyncState.vue +5 -5
  59. package/app/components/documents/DocumentTemplatesModal.vue +15 -15
  60. package/app/components/documents/RepoContextDocPicker.vue +5 -5
  61. package/app/components/documents/SpawnPreviewModal.vue +12 -12
  62. package/app/components/documents/StartFromDesignModal.vue +11 -11
  63. package/app/components/documents/TaskContextDocs.vue +5 -5
  64. package/app/components/environments/EnvSetupStepper.vue +6 -6
  65. package/app/components/environments/EnvironmentStatusPanel.vue +17 -17
  66. package/app/components/environments/steps/EnvPickStep.vue +3 -3
  67. package/app/components/environments/steps/EnvPreflightStep.vue +9 -9
  68. package/app/components/environments/steps/EnvReviewStep.vue +25 -22
  69. package/app/components/environments/steps/EnvSaveStep.vue +7 -5
  70. package/app/components/environments/steps/JourneyStepNav.vue +1 -1
  71. package/app/components/focus/BlockFocusView.vue +17 -19
  72. package/app/components/followUp/FollowUpWindow.vue +23 -23
  73. package/app/components/forkDecision/ForkDecisionWindow.vue +37 -39
  74. package/app/components/foundational/FoundationalContractSummary.vue +7 -7
  75. package/app/components/foundational/FoundationalServiceCatalogList.vue +11 -11
  76. package/app/components/foundational/FoundationalServiceManager.vue +1 -1
  77. package/app/components/foundational/FoundationalServiceRegistry.vue +13 -13
  78. package/app/components/foundational/FoundationalServiceSources.vue +13 -13
  79. package/app/components/foundational/FoundationalSuppressions.vue +7 -7
  80. package/app/components/foundational/ServiceCatalogConnection.vue +10 -10
  81. package/app/components/fragments/FragmentLibraryManager.vue +41 -44
  82. package/app/components/fragments/FragmentSelector.vue +13 -13
  83. package/app/components/fragments/GitHubDocUrlImport.vue +1 -1
  84. package/app/components/gates/GateFailingCheckList.vue +5 -5
  85. package/app/components/gates/GateResultView.vue +50 -47
  86. package/app/components/github/AddServiceFromRepoModal.vue +14 -14
  87. package/app/components/github/BranchProtectionPreflight.vue +13 -13
  88. package/app/components/github/GitHubConnect.vue +7 -7
  89. package/app/components/github/GitHubOnboarding.vue +7 -7
  90. package/app/components/github/GitHubPanel.vue +37 -40
  91. package/app/components/github/RepoTreeBrowser.vue +18 -18
  92. package/app/components/humanTest/HumanTestWindow.vue +30 -33
  93. package/app/components/initiative/InitiativePlanNotice.vue +5 -5
  94. package/app/components/initiative/InitiativePlanReview.vue +27 -29
  95. package/app/components/initiative/InitiativePlanningWindow.vue +10 -10
  96. package/app/components/initiative/InitiativeTrackerWindow.vue +71 -65
  97. package/app/components/inputGate/InputGateNotice.vue +2 -4
  98. package/app/components/judge/JudgeResultView.vue +30 -32
  99. package/app/components/kaizen/KaizenPanel.vue +40 -36
  100. package/app/components/kaizen/KaizenStepStatus.vue +21 -21
  101. package/app/components/layout/AccountAuditLog.vue +10 -10
  102. package/app/components/layout/AccountDeploymentSettings.vue +20 -20
  103. package/app/components/layout/AccountFailureKindRules.vue +13 -13
  104. package/app/components/layout/AccountFoundationalSettings.vue +1 -1
  105. package/app/components/layout/AccountFragmentSettings.vue +1 -1
  106. package/app/components/layout/AccountModelPolicySettings.vue +9 -9
  107. package/app/components/layout/AccountPlatformAlertSettings.vue +11 -11
  108. package/app/components/layout/AccountRiskPolicySettings.vue +2 -2
  109. package/app/components/layout/AccountRunCredentialSettings.vue +5 -5
  110. package/app/components/layout/AccountSkillSettings.vue +1 -1
  111. package/app/components/layout/AccountTeamSettings.vue +23 -15
  112. package/app/components/layout/AiProvidersBanner.vue +11 -8
  113. package/app/components/layout/AppearanceSwitcher.vue +108 -0
  114. package/app/components/layout/BoardSwitcher.vue +8 -11
  115. package/app/components/layout/BoardToolbar.vue +3 -3
  116. package/app/components/layout/CommandBar.vue +7 -9
  117. package/app/components/layout/ConnectionStatusBanner.vue +2 -2
  118. package/app/components/layout/DefaultTestEnvBanner.vue +5 -5
  119. package/app/components/layout/GitHubPatBanner.vue +5 -5
  120. package/app/components/layout/GitHubPatPermissionsBanner.vue +16 -10
  121. package/app/components/layout/InfraSetupBanner.vue +6 -6
  122. package/app/components/layout/IntegrationsHub.vue +15 -15
  123. package/app/components/layout/LanguageSwitcher.vue +5 -5
  124. package/app/components/layout/ModelProvidersHub.vue +13 -16
  125. package/app/components/layout/NotificationsInbox.vue +10 -10
  126. package/app/components/layout/PersonalSetupModal.vue +8 -8
  127. package/app/components/layout/ProviderConfigBanner.vue +4 -4
  128. package/app/components/layout/RolePrompt.vue +7 -7
  129. package/app/components/layout/SideBar.vue +6 -4
  130. package/app/components/layout/SpendWarningBanner.vue +17 -14
  131. package/app/components/layout/TranslationWarningBanner.vue +4 -4
  132. package/app/components/layout/UiModeSwitcher.vue +13 -13
  133. package/app/components/layout/UiRoleSwitcher.vue +8 -8
  134. package/app/components/layout/WorkspaceMembersSettings.vue +15 -11
  135. package/app/components/media/ArtifactLightbox.vue +13 -13
  136. package/app/components/media/ImageCompare.vue +31 -24
  137. package/app/components/merge/MergeEffortChips.vue +2 -2
  138. package/app/components/notifications/NotificationSettingsPanel.vue +14 -12
  139. package/app/components/observability/OutcomeFilterChips.vue +6 -6
  140. package/app/components/observability/RunFailureSummary.vue +28 -25
  141. package/app/components/observability/StepMetricsBar.vue +26 -28
  142. package/app/components/observability/StepModelActivity.vue +2 -2
  143. package/app/components/observability/ToolCallList.vue +24 -24
  144. package/app/components/outcome/OutcomeSummaryWindow.vue +47 -47
  145. package/app/components/palettes/AgentPalette.vue +8 -8
  146. package/app/components/palettes/AgentTierSelect.vue +1 -1
  147. package/app/components/palettes/PipelinePurposeSelect.vue +1 -1
  148. package/app/components/panels/AgentStepDetail.vue +52 -51
  149. package/app/components/panels/AttemptEntryHeader.vue +4 -6
  150. package/app/components/panels/DecisionModal.vue +7 -7
  151. package/app/components/panels/GenericStructuredResultView.vue +7 -7
  152. package/app/components/panels/InspectorPanel.vue +17 -17
  153. package/app/components/panels/MergerResultView.vue +19 -19
  154. package/app/components/panels/ObservabilityPanel.vue +115 -123
  155. package/app/components/panels/OperatorDashboardPanel.vue +89 -97
  156. package/app/components/panels/ReportsPanel.vue +69 -66
  157. package/app/components/panels/ReportsSpendBreakdown.vue +9 -9
  158. package/app/components/panels/ResultWindowShell.vue +38 -38
  159. package/app/components/panels/RunDetailLoadState.vue +2 -2
  160. package/app/components/panels/StepContainerStatus.vue +9 -9
  161. package/app/components/panels/StepDelegatedStatus.logic.spec.ts +135 -0
  162. package/app/components/panels/StepDelegatedStatus.logic.ts +160 -0
  163. package/app/components/panels/StepDelegatedStatus.vue +181 -0
  164. package/app/components/panels/StepEffortReport.vue +16 -15
  165. package/app/components/panels/StepFragmentAdherence.vue +14 -10
  166. package/app/components/panels/StepMetadataCard.vue +74 -45
  167. package/app/components/panels/StepReproductionReport.vue +25 -21
  168. package/app/components/panels/StepRunMeta.vue +20 -20
  169. package/app/components/panels/StepTestReport.logic.spec.ts +8 -3
  170. package/app/components/panels/StepTestReport.logic.ts +4 -4
  171. package/app/components/panels/StepTestReport.vue +28 -28
  172. package/app/components/panels/StepToolServers.vue +14 -11
  173. package/app/components/panels/StepValidationReport.vue +7 -7
  174. package/app/components/panels/inspector/ContainerSummary.vue +9 -9
  175. package/app/components/panels/inspector/DocReferenceRepos.vue +3 -3
  176. package/app/components/panels/inspector/EnvProbeReport.vue +24 -27
  177. package/app/components/panels/inspector/EpicChildren.vue +8 -12
  178. package/app/components/panels/inspector/FrontendBindingsResolved.vue +11 -11
  179. package/app/components/panels/inspector/FrontendConfig.vue +37 -41
  180. package/app/components/panels/inspector/InitiativeInspector.vue +3 -3
  181. package/app/components/panels/inspector/InspectorSection.vue +6 -6
  182. package/app/components/panels/inspector/RecurringScheduleSettings.vue +16 -19
  183. package/app/components/panels/inspector/ServiceConnections.vue +2 -2
  184. package/app/components/panels/inspector/ServiceReleaseHealthConfig.vue +2 -2
  185. package/app/components/panels/inspector/ServiceSelfTests.vue +21 -17
  186. package/app/components/panels/inspector/ServiceTestConfig.vue +51 -59
  187. package/app/components/panels/inspector/ServiceTestSecrets.vue +5 -5
  188. package/app/components/panels/inspector/ServiceTestingContext.vue +3 -3
  189. package/app/components/panels/inspector/ServiceValidationConfig.vue +2 -2
  190. package/app/components/panels/inspector/TaskAgentConfig.vue +3 -3
  191. package/app/components/panels/inspector/TaskAprioriBranches.vue +8 -5
  192. package/app/components/panels/inspector/TaskDependencies.vue +1 -1
  193. package/app/components/panels/inspector/TaskEstimateBadge.vue +11 -11
  194. package/app/components/panels/inspector/TaskExecution.vue +17 -17
  195. package/app/components/panels/inspector/TaskReviewTarget.vue +2 -2
  196. package/app/components/panels/inspector/TaskRunSettings.vue +35 -37
  197. package/app/components/panels/inspector/TaskStructure.vue +3 -3
  198. package/app/components/pipeline/AgentKindIcon.vue +1 -1
  199. package/app/components/pipeline/AgentPromptEditor.vue +17 -17
  200. package/app/components/pipeline/BinaryOutputStepPicker.vue +42 -56
  201. package/app/components/pipeline/EstimateThresholdFields.vue +4 -4
  202. package/app/components/pipeline/GateConfigFields.vue +13 -10
  203. package/app/components/pipeline/IterationCapPrompt.vue +4 -2
  204. package/app/components/pipeline/PipelineBuilder.vue +47 -55
  205. package/app/components/pipeline/PipelineHealthModal.vue +27 -29
  206. package/app/components/pipeline/PipelinePicker.vue +10 -10
  207. package/app/components/pipeline/PipelinePreview.vue +10 -10
  208. package/app/components/pipeline/PipelineProgress.vue +64 -67
  209. package/app/components/prReview/PrReviewPhaseBadge.vue +7 -7
  210. package/app/components/prReview/PrReviewWindow.vue +75 -77
  211. package/app/components/providers/AiPresetMismatchDialog.vue +5 -5
  212. package/app/components/providers/AiProviderOnboardingModal.vue +9 -9
  213. package/app/components/providers/ApiKeysSection.vue +13 -13
  214. package/app/components/providers/PersonalCredentialModal.vue +2 -2
  215. package/app/components/providers/PersonalSubscriptionSection.vue +10 -10
  216. package/app/components/providers/SignInRequiredNotice.vue +1 -1
  217. package/app/components/providers/VendorCredentialsModal.vue +10 -10
  218. package/app/components/provisioning/ProvisioningLogsDrawer.vue +13 -13
  219. package/app/components/ralph/RalphLoopResultView.vue +28 -30
  220. package/app/components/recurring/RecurrenceEditor.vue +2 -2
  221. package/app/components/requirements/RequirementsReviewWindow.vue +51 -58
  222. package/app/components/riskPolicy/RiskPolicyPicker.vue +12 -15
  223. package/app/components/riskPolicy/RiskPolicyPreview.vue +14 -14
  224. package/app/components/sandbox/SandboxPanel.vue +58 -59
  225. package/app/components/settings/AccountSettingsPanel.vue +1 -1
  226. package/app/components/settings/ApiTokensPanel.vue +10 -10
  227. package/app/components/settings/BudgetSettings.vue +18 -22
  228. package/app/components/settings/CapabilityCredentialsPanel.vue +15 -15
  229. package/app/components/settings/CloudflareHandlerSection.vue +20 -20
  230. package/app/components/settings/ComposeEnvironmentSetupSection.vue +13 -13
  231. package/app/components/settings/ConnectionTestVerdict.vue +3 -3
  232. package/app/components/settings/ConnectionWarnings.vue +1 -1
  233. package/app/components/settings/ConsensusGroupsSection.vue +27 -35
  234. package/app/components/settings/CustomManifestTypeEditor.vue +10 -10
  235. package/app/components/settings/DefaultProvisionTypeSection.vue +6 -6
  236. package/app/components/settings/InfraHandlersConfigurator.vue +24 -22
  237. package/app/components/settings/InfrastructureBackendPicker.vue +6 -6
  238. package/app/components/settings/InfrastructureWindow.vue +5 -5
  239. package/app/components/settings/IssueTrackerPanel.vue +29 -23
  240. package/app/components/settings/KubernetesEngineForm.vue +11 -11
  241. package/app/components/settings/KubernetesEnvironmentForm.vue +4 -4
  242. package/app/components/settings/LocalContainerPoolSettings.vue +6 -11
  243. package/app/components/settings/LocalModelEndpointsPanel.vue +20 -18
  244. package/app/components/settings/McpAuthorizeScreen.vue +13 -15
  245. package/app/components/settings/McpOAuthCallbackScreen.vue +16 -10
  246. package/app/components/settings/MergeClassRulesEditor.vue +6 -9
  247. package/app/components/settings/MergeRolePolicyEditor.vue +16 -16
  248. package/app/components/settings/ModelConfigurationPanel.vue +23 -30
  249. package/app/components/settings/ModelPresetHealthModal.vue +15 -13
  250. package/app/components/settings/ObservabilityConnectionPanel.vue +4 -4
  251. package/app/components/settings/OpenRouterCatalogPanel.vue +23 -19
  252. package/app/components/settings/PackageRegistriesPanel.vue +8 -8
  253. package/app/components/settings/ProviderConnectionTab.vue +8 -11
  254. package/app/components/settings/ProviderManifestEditor.vue +9 -9
  255. package/app/components/settings/ProviderPreferenceEditor.vue +8 -8
  256. package/app/components/settings/RiskPolicyCreateForm.vue +10 -10
  257. package/app/components/settings/RiskPolicyEditorRow.vue +14 -14
  258. package/app/components/settings/RiskPolicyHealthModal.vue +15 -13
  259. package/app/components/settings/RiskPolicyInheritedRow.vue +1 -1
  260. package/app/components/settings/RiskPolicyPanel.vue +10 -15
  261. package/app/components/settings/ServiceFragmentDefaultsPanel.vue +7 -7
  262. package/app/components/settings/SharedStacksPanel.vue +9 -12
  263. package/app/components/settings/TaskSourceCard.vue +4 -4
  264. package/app/components/settings/TaskTypeSuppressionsPanel.vue +6 -6
  265. package/app/components/settings/ToolServerChecklist.vue +36 -29
  266. package/app/components/settings/UsageSettings.vue +15 -15
  267. package/app/components/settings/UserSecretsSection.vue +9 -12
  268. package/app/components/settings/WorkspaceMetadataSettings.vue +5 -5
  269. package/app/components/settings/WorkspaceSettingsPanel.vue +47 -47
  270. package/app/components/skills/ReviewSkillQueue.vue +10 -10
  271. package/app/components/skills/SkillLibraryManager.vue +23 -20
  272. package/app/components/slack/SlackPanel.vue +13 -17
  273. package/app/components/spec/ServiceSpecWindow.vue +45 -42
  274. package/app/components/tasks/BugHuntModal.vue +24 -27
  275. package/app/components/tasks/ContextIssuePicker.vue +11 -11
  276. package/app/components/tasks/TaskContextIssues.vue +3 -3
  277. package/app/components/tasks/TaskImportModal.vue +7 -7
  278. package/app/components/tasks/TaskSourceConnectModal.vue +10 -8
  279. package/app/components/testing/TestReportWindow.vue +99 -82
  280. package/app/components/theme/ThemeImportModal.vue +115 -0
  281. package/app/components/tutorial/TutorialCatalogue.vue +9 -9
  282. package/app/components/tutorial/TutorialNudge.vue +5 -5
  283. package/app/components/tutorial/TutorialOverlay.vue +12 -12
  284. package/app/components/tutorial/TutorialPrompt.vue +6 -9
  285. package/app/components/vcs/GitLabConnect.vue +4 -4
  286. package/app/components/vcs/VcsConnectSurfaces.vue +2 -2
  287. package/app/components/visualConfirm/VisualConfirmationWindow.vue +36 -36
  288. package/app/composables/api/client.ts +6 -1
  289. package/app/composables/usePipelineErrorToast.ts +17 -0
  290. package/app/modular/agent-kinds.ts +24 -0
  291. package/app/pages/index.vue +5 -5
  292. package/app/plugins/theme.client.ts +125 -0
  293. package/app/spa-loading-template.html +52 -14
  294. package/app/stores/agents.ts +1 -1
  295. package/app/stores/theme.spec.ts +56 -0
  296. package/app/stores/theme.ts +87 -0
  297. package/app/types/domain.ts +19 -0
  298. package/app/types/execution.ts +4 -0
  299. package/app/utils/agentOutput.ts +1 -1
  300. package/app/utils/binaryOutput.ts +6 -6
  301. package/app/utils/bootstrapSteps.ts +14 -14
  302. package/app/utils/catalog.ts +87 -83
  303. package/app/utils/colorTint.ts +10 -0
  304. package/app/utils/failureKinds.ts +1 -0
  305. package/app/utils/observability.ts +3 -3
  306. package/app/utils/pipelineRender.ts +13 -17
  307. package/app/utils/swimlanes.ts +4 -4
  308. package/app/utils/theme/bootPalette.spec.ts +54 -0
  309. package/app/utils/theme/bootPalette.ts +108 -0
  310. package/app/utils/theme/builtins.spec.ts +38 -0
  311. package/app/utils/theme/builtins.ts +55 -0
  312. package/app/utils/theme/css.ts +162 -0
  313. package/app/utils/theme/doc.ts +353 -0
  314. package/app/utils/theme/link.ts +93 -0
  315. package/app/utils/theme/presets.ts +509 -0
  316. package/app/utils/theme/theme.spec.ts +224 -0
  317. package/i18n/locales/de.json +61 -4
  318. package/i18n/locales/en.json +70 -4
  319. package/i18n/locales/es.json +61 -4
  320. package/i18n/locales/fr.json +61 -4
  321. package/i18n/locales/he.json +61 -4
  322. package/i18n/locales/it.json +61 -4
  323. package/i18n/locales/ja.json +61 -4
  324. package/i18n/locales/pl.json +61 -4
  325. package/i18n/locales/tr.json +61 -4
  326. package/i18n/locales/uk.json +61 -4
  327. package/nuxt.config.ts +37 -11
  328. 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-slate-800 bg-slate-900/60 lg:flex"
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-slate-800 px-3 py-2">
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-slate-500"
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-amber-500/15 font-medium text-amber-100'
197
- : 'text-slate-400 hover:bg-slate-800/60 hover:text-slate-200'
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-slate-800/40"
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-slate-500">
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-slate-500"
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-white"
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-slate-500 transition-transform group-hover:text-slate-300"
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-slate-100"
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-slate-300"
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-slate-800 bg-slate-900/60 lg:max-h-none lg:w-72 lg:border-s lg:border-t-0"
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-slate-800 px-4 py-3">
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-amber-400"
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-slate-400">
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-indigo-500/40 bg-indigo-500/5 p-2.5"
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-indigo-300">
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-slate-950/60 p-1.5 text-[11px] text-slate-300"
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-slate-800 bg-slate-900/50 p-2.5"
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-slate-500">
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-slate-500 transition hover:text-rose-400"
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-slate-950/50 p-1.5 text-[10px] text-slate-400"
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-slate-200">{{ c.body }}</p>
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-slate-400"
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-slate-800 px-4 pt-3 pb-[calc(0.75rem+env(safe-area-inset-bottom))]"
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-indigo-500/15 text-indigo-300"
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-slate-400"
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-slate-300">
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-slate-800 bg-slate-950/40 p-4 text-center text-[13px] text-slate-400"
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-slate-800 bg-slate-950/40 p-4 text-center text-[13px] text-slate-400"
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-amber-300"
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-slate-800 bg-slate-900/50 px-4 py-4 lg:flex"
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-slate-800 px-5 py-3"
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-slate-500">
363
+ <p class="text-[11px] text-dimmed">
364
364
  <span
365
365
  v-if="unanswered > 0"
366
- class="text-amber-400/90"
366
+ class="text-app-warning-400/90"
367
367
  data-testid="initiative-planning-unanswered"
368
368
  >
369
369
  {{ t('initiative.planning.unanswered', { count: unanswered }) }}