@cat-factory/app 0.310.1 → 0.310.3

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 (145) hide show
  1. package/README.md +23 -0
  2. package/app/app.config.ts +11 -0
  3. package/app/components/assistant/AssistantModal.vue +0 -1
  4. package/app/components/auth/BackendMisconfiguredScreen.vue +1 -1
  5. package/app/components/auth/LoginScreen.vue +2 -18
  6. package/app/components/auth/ResetPasswordScreen.vue +2 -3
  7. package/app/components/board/AddTaskModal.vue +0 -1
  8. package/app/components/board/BoardCanvas.vue +0 -2
  9. package/app/components/board/CreateInitiativeModal.vue +0 -1
  10. package/app/components/board/RecurringPipelineModal.vue +1 -7
  11. package/app/components/board/ReviewFrictionDialog.vue +1 -7
  12. package/app/components/board/nodes/InitiativeCard.vue +0 -4
  13. package/app/components/board/nodes/TaskCard.vue +1 -8
  14. package/app/components/bootstrap/AdoptionReviewModal.vue +0 -1
  15. package/app/components/bootstrap/BootstrapModal.vue +1 -7
  16. package/app/components/brainstorm/BrainstormWindow.vue +0 -5
  17. package/app/components/bugFishing/BugFishingWindow.vue +0 -2
  18. package/app/components/clarity/ClarityReviewWindow.vue +0 -4
  19. package/app/components/common/AsyncViewError.vue +1 -1
  20. package/app/components/common/ClarificationItem.vue +0 -2
  21. package/app/components/context/ContextAttachmentFields.vue +1 -1
  22. package/app/components/docs/DocInterviewWindow.vue +0 -1
  23. package/app/components/documents/DocumentImportModal.vue +0 -3
  24. package/app/components/documents/DocumentSourceConnectModal.vue +2 -9
  25. package/app/components/documents/DocumentTemplatesModal.vue +1 -7
  26. package/app/components/documents/SpawnPreviewModal.vue +0 -1
  27. package/app/components/documents/StartFromDesignModal.vue +0 -1
  28. package/app/components/environments/steps/EnvPreflightStep.vue +0 -2
  29. package/app/components/environments/steps/EnvReviewStep.vue +1 -4
  30. package/app/components/environments/steps/EnvSaveStep.vue +0 -1
  31. package/app/components/focus/BlockFocusView.vue +0 -2
  32. package/app/components/followUp/FollowUpWindow.vue +0 -2
  33. package/app/components/forkDecision/ForkDecisionWindow.vue +1 -2
  34. package/app/components/foundational/FoundationalServiceCatalogList.vue +2 -0
  35. package/app/components/foundational/FoundationalServiceRegistry.vue +9 -2
  36. package/app/components/foundational/FoundationalServiceSources.vue +2 -0
  37. package/app/components/foundational/FoundationalSuppressions.vue +1 -0
  38. package/app/components/fragments/FragmentLibraryManager.vue +4 -0
  39. package/app/components/fragments/FragmentSelector.vue +0 -1
  40. package/app/components/gates/GateResultView.vue +0 -1
  41. package/app/components/github/AddServiceFromRepoModal.vue +0 -2
  42. package/app/components/github/GitHubConnect.vue +1 -2
  43. package/app/components/github/GitHubPanel.vue +0 -2
  44. package/app/components/github/RepoTreeBrowser.vue +3 -3
  45. package/app/components/guidedReview/GuidedReviewDraftCard.vue +17 -5
  46. package/app/components/guidedReview/GuidedReviewModal.vue +1 -0
  47. package/app/components/guidedReview/GuidedReviewOverview.vue +1 -0
  48. package/app/components/guidedReview/GuidedReviewPicker.vue +0 -1
  49. package/app/components/guidedReview/GuidedReviewThread.vue +0 -2
  50. package/app/components/humanTest/HumanTestWindow.vue +3 -3
  51. package/app/components/initiative/InitiativePlanDecision.vue +0 -1
  52. package/app/components/initiative/InitiativePlanReview.vue +0 -1
  53. package/app/components/initiative/InitiativePlanningWindow.vue +2 -3
  54. package/app/components/initiative/InitiativeTrackerWindow.vue +1 -1
  55. package/app/components/inputGate/InputGateNotice.vue +0 -1
  56. package/app/components/judge/JudgeResultView.vue +1 -1
  57. package/app/components/layout/AccountDeploymentSettings.vue +13 -43
  58. package/app/components/layout/AccountModelPolicySettings.vue +0 -1
  59. package/app/components/layout/AccountPlatformAlertSettings.vue +0 -1
  60. package/app/components/layout/AccountRunCredentialSettings.vue +0 -1
  61. package/app/components/layout/AccountTeamSettings.vue +4 -4
  62. package/app/components/layout/AiProvidersBanner.vue +1 -7
  63. package/app/components/layout/BoardSwitcher.vue +1 -1
  64. package/app/components/layout/DefaultTestEnvBanner.vue +0 -1
  65. package/app/components/layout/GitHubPatBanner.vue +0 -1
  66. package/app/components/layout/GitHubPatPermissionsBanner.vue +0 -1
  67. package/app/components/layout/InfraSetupBanner.vue +0 -1
  68. package/app/components/layout/IntegrationsHub.vue +0 -2
  69. package/app/components/layout/ModelProvidersHub.vue +1 -6
  70. package/app/components/layout/ProviderConfigBanner.vue +0 -1
  71. package/app/components/layout/SideBar.vue +0 -1
  72. package/app/components/layout/SpendWarningBanner.vue +0 -1
  73. package/app/components/layout/WorkspaceMembersSettings.vue +0 -1
  74. package/app/components/notifications/NotificationSettingsPanel.vue +0 -1
  75. package/app/components/outcome/OutcomeSummaryWindow.vue +0 -3
  76. package/app/components/panels/AgentStepDetail.vue +2 -5
  77. package/app/components/panels/DecisionModal.vue +0 -1
  78. package/app/components/panels/InspectorPanel.vue +1 -1
  79. package/app/components/panels/inspector/ContainerSummary.vue +1 -1
  80. package/app/components/panels/inspector/FrontendConfig.vue +0 -4
  81. package/app/components/panels/inspector/InitiativeInspector.vue +1 -6
  82. package/app/components/panels/inspector/RecurringScheduleSettings.vue +1 -3
  83. package/app/components/panels/inspector/ServiceReleaseHealthConfig.vue +2 -9
  84. package/app/components/panels/inspector/ServiceSelfTests.vue +0 -2
  85. package/app/components/panels/inspector/ServiceTestConfig.vue +1 -4
  86. package/app/components/panels/inspector/ServiceTestSecrets.vue +1 -2
  87. package/app/components/panels/inspector/ServiceTestingContext.vue +0 -1
  88. package/app/components/panels/inspector/ServiceValidationConfig.vue +1 -2
  89. package/app/components/panels/inspector/TaskExecution.vue +1 -5
  90. package/app/components/panels/inspector/TaskReviewTarget.vue +0 -2
  91. package/app/components/panels/inspector/TaskRunSettings.vue +2 -14
  92. package/app/components/panels/inspector/TaskTypeFields.vue +0 -1
  93. package/app/components/pipeline/AgentPromptEditor.vue +0 -2
  94. package/app/components/pipeline/IterationCapPrompt.vue +0 -1
  95. package/app/components/pipeline/PipelineBuilder.vue +2 -11
  96. package/app/components/pipeline/PipelineHealthModal.vue +2 -6
  97. package/app/components/prReview/PrReviewWindow.vue +0 -4
  98. package/app/components/providers/AiPresetMismatchDialog.vue +1 -1
  99. package/app/components/providers/AiProviderOnboardingModal.vue +2 -8
  100. package/app/components/providers/VendorCredentialsModal.vue +1 -7
  101. package/app/components/provisioning/ProvisioningLogsDrawer.vue +1 -0
  102. package/app/components/requirements/RequirementsReviewWindow.vue +0 -7
  103. package/app/components/sandbox/SandboxPanel.vue +1 -3
  104. package/app/components/settings/BudgetSettings.vue +1 -9
  105. package/app/components/settings/ComposeEnvironmentSetupSection.vue +0 -1
  106. package/app/components/settings/ConsensusGroupsSection.vue +0 -1
  107. package/app/components/settings/CustomManifestTypeEditor.vue +1 -1
  108. package/app/components/settings/DefaultProvisionTypeSection.vue +0 -1
  109. package/app/components/settings/InfraHandlersConfigurator.vue +2 -2
  110. package/app/components/settings/IssueTrackerPanel.vue +1 -8
  111. package/app/components/settings/KubernetesEngineForm.vue +1 -7
  112. package/app/components/settings/KubernetesEnvironmentForm.vue +1 -7
  113. package/app/components/settings/LocalContainerPoolSettings.vue +1 -1
  114. package/app/components/settings/LocalModelEndpointsPanel.vue +0 -1
  115. package/app/components/settings/McpAuthorizeScreen.vue +0 -1
  116. package/app/components/settings/McpOAuthCallbackScreen.vue +1 -1
  117. package/app/components/settings/ModelConfigurationPanel.vue +3 -10
  118. package/app/components/settings/ModelPresetHealthModal.vue +0 -3
  119. package/app/components/settings/OpenRouterCatalogPanel.vue +1 -9
  120. package/app/components/settings/ProviderConnectionTab.vue +2 -7
  121. package/app/components/settings/ProviderManifestEditor.vue +0 -1
  122. package/app/components/settings/RiskPolicyCreateForm.vue +0 -1
  123. package/app/components/settings/RiskPolicyEditorRow.vue +1 -2
  124. package/app/components/settings/RiskPolicyHealthModal.vue +0 -3
  125. package/app/components/settings/ServiceFragmentDefaultsPanel.vue +0 -3
  126. package/app/components/settings/ToolServerChecklist.vue +1 -1
  127. package/app/components/settings/UserSecretsSection.vue +1 -7
  128. package/app/components/settings/WorkspaceMetadataSettings.vue +0 -1
  129. package/app/components/settings/WorkspaceSettingsPanel.vue +1 -7
  130. package/app/components/skills/ReviewSkillQueue.vue +0 -1
  131. package/app/components/skills/SkillLibraryManager.vue +2 -0
  132. package/app/components/slack/SlackPanel.vue +1 -5
  133. package/app/components/spec/ServiceSpecWindow.vue +0 -1
  134. package/app/components/tasks/BugHuntModal.vue +0 -3
  135. package/app/components/tasks/TaskImportModal.vue +0 -2
  136. package/app/components/tasks/TaskSourceConnectModal.vue +2 -9
  137. package/app/components/testing/TestReportWindow.vue +2 -0
  138. package/app/components/tutorial/TutorialCatalogue.vue +0 -1
  139. package/app/components/tutorial/TutorialNudge.vue +0 -1
  140. package/app/components/tutorial/TutorialOverlay.vue +0 -2
  141. package/app/components/tutorial/TutorialPrompt.vue +0 -1
  142. package/app/components/vcs/GitLabConnect.vue +0 -1
  143. package/app/components/visualConfirm/VisualConfirmationWindow.vue +1 -1
  144. package/app/pages/index.vue +1 -1
  145. package/package.json +1 -1
@@ -219,7 +219,6 @@ async function saveMapping() {
219
219
  <div v-if="!slack.connected" class="space-y-3 rounded-lg border border-muted p-3">
220
220
  <UButton
221
221
  v-if="slack.oauthEnabled"
222
- color="primary"
223
222
  icon="i-lucide-slack"
224
223
  :loading="connectingOAuth"
225
224
  @click="connectViaOAuth"
@@ -233,7 +232,6 @@ async function saveMapping() {
233
232
  <div class="flex gap-2">
234
233
  <SecretInput v-model="tokenInput" size="sm" class="flex-1" placeholder="xoxb-…" />
235
234
  <UButton
236
- color="primary"
237
235
  variant="soft"
238
236
  size="sm"
239
237
  :loading="slack.connecting"
@@ -259,7 +257,7 @@ async function saveMapping() {
259
257
  </span>
260
258
  <UButton
261
259
  color="error"
262
- variant="ghost"
260
+ variant="soft"
263
261
  size="xs"
264
262
  icon="i-lucide-unplug"
265
263
  @click="disconnect"
@@ -302,7 +300,6 @@ async function saveMapping() {
302
300
 
303
301
  <div class="flex justify-end">
304
302
  <UButton
305
- color="primary"
306
303
  variant="soft"
307
304
  size="xs"
308
305
  icon="i-lucide-save"
@@ -365,7 +362,6 @@ async function saveMapping() {
365
362
  {{ t('slack.members.add') }}
366
363
  </UButton>
367
364
  <UButton
368
- color="primary"
369
365
  variant="soft"
370
366
  size="xs"
371
367
  icon="i-lucide-save"
@@ -428,7 +428,6 @@ function kindLabel(item: RequirementItem): string {
428
428
  >
429
429
  {{ t('spec.state.noneMatchFilter') }}
430
430
  <UButton
431
- color="primary"
432
431
  variant="link"
433
432
  size="xs"
434
433
  class="p-0"
@@ -345,7 +345,6 @@ const STATUS_KEYS: Record<BugHuntAnalysisStatus, string> = {
345
345
  <UButton
346
346
  v-for="choice in addableSources"
347
347
  :key="choice.source"
348
- color="primary"
349
348
  variant="soft"
350
349
  :icon="choice.icon"
351
350
  @click="addSource(choice.source)"
@@ -479,7 +478,6 @@ const STATUS_KEYS: Record<BugHuntAnalysisStatus, string> = {
479
478
 
480
479
  <div class="flex items-center gap-2">
481
480
  <UButton
482
- color="primary"
483
481
  icon="i-lucide-radar"
484
482
  :loading="hunt.hunting"
485
483
  :disabled="!canHunt"
@@ -565,7 +563,6 @@ const STATUS_KEYS: Record<BugHuntAnalysisStatus, string> = {
565
563
  {{ t('bugHunt.recommended') }}
566
564
  </UBadge>
567
565
  <UButton
568
- color="primary"
569
566
  variant="soft"
570
567
  icon="i-lucide-play"
571
568
  size="xs"
@@ -133,7 +133,6 @@ async function doSpawnEpic() {
133
133
  <UButton
134
134
  v-for="choice in addableSources"
135
135
  :key="choice.source"
136
- color="primary"
137
136
  variant="soft"
138
137
  :icon="choice.icon"
139
138
  @click="ui.openTaskConnect(choice.source)"
@@ -197,7 +196,6 @@ async function doSpawnEpic() {
197
196
  />
198
197
  </UFormField>
199
198
  <UButton
200
- color="primary"
201
199
  variant="soft"
202
200
  icon="i-lucide-layers"
203
201
  :loading="importing"
@@ -140,13 +140,7 @@ async function toggleEnabled(enabled: boolean) {
140
140
  <div v-else-if="!connected" class="space-y-3">
141
141
  <!-- OAuth source (Linear): the redirect button, with the manual key form below. -->
142
142
  <template v-if="oauth">
143
- <UButton
144
- block
145
- color="primary"
146
- icon="i-lucide-plug"
147
- :loading="oauthStarting"
148
- @click="startOAuth"
149
- >
143
+ <UButton block icon="i-lucide-plug" :loading="oauthStarting" @click="startOAuth">
150
144
  {{ t('tasks.connect.oauthButton', { label: descriptor.label }) }}
151
145
  </UButton>
152
146
  <p class="text-center text-2xs text-dimmed">
@@ -199,7 +193,7 @@ async function toggleEnabled(enabled: boolean) {
199
193
  <UButton
200
194
  v-if="connected"
201
195
  color="error"
202
- variant="ghost"
196
+ variant="soft"
203
197
  icon="i-lucide-unplug"
204
198
  @click="disconnect"
205
199
  >
@@ -208,7 +202,6 @@ async function toggleEnabled(enabled: boolean) {
208
202
  <div v-else />
209
203
  <UButton
210
204
  v-if="!credentialless"
211
- color="primary"
212
205
  icon="i-lucide-plug"
213
206
  :loading="saving"
214
207
  :disabled="!canSubmit"
@@ -438,6 +438,7 @@ const GROUP_STATUS_META: Record<ScenarioGroup['status'], { icon: string; text: s
438
438
  </p>
439
439
  <template v-if="infraSetup.logs">
440
440
  <UButton
441
+ color="neutral"
441
442
  :icon="showInfraSetupLogs ? 'i-lucide-chevron-up' : 'i-lucide-scroll-text'"
442
443
  variant="ghost"
443
444
  size="xs"
@@ -476,6 +477,7 @@ const GROUP_STATUS_META: Record<ScenarioGroup['status'], { icon: string; text: s
476
477
 
477
478
  <div v-if="executionId">
478
479
  <UButton
480
+ color="neutral"
479
481
  :icon="showProvisioning ? 'i-lucide-chevron-up' : 'i-lucide-scroll-text'"
480
482
  variant="ghost"
481
483
  size="xs"
@@ -118,7 +118,6 @@ const statusColor = (row: TutorialCatalogueRow) =>
118
118
  </div>
119
119
  <UButton
120
120
  size="sm"
121
- color="primary"
122
121
  :variant="row.state === 'completed' ? 'soft' : 'solid'"
123
122
  :disabled="!row.startable"
124
123
  :data-testid="`tutorial-catalogue-start-${row.tour.id}`"
@@ -95,7 +95,6 @@ function take(tourId: string) {
95
95
  <div class="mt-2 flex justify-end">
96
96
  <UButton
97
97
  size="xs"
98
- color="primary"
99
98
  variant="soft"
100
99
  data-testid="tutorial-nudge-start"
101
100
  @click="take(offered.id)"
@@ -636,7 +636,6 @@ onUnmounted(() => {
636
636
  <p class="mt-0.5 text-xs text-muted">{{ t(nextTour.descriptionKey) }}</p>
637
637
  <UButton
638
638
  size="xs"
639
- color="primary"
640
639
  variant="soft"
641
640
  class="mt-2"
642
641
  data-testid="tutorial-next-tour-start"
@@ -671,7 +670,6 @@ onUnmounted(() => {
671
670
  <UButton
672
671
  v-if="step.advanceOn !== 'target-click' || isLast"
673
672
  size="xs"
674
- color="primary"
675
673
  data-testid="tutorial-next"
676
674
  @click="advance('nav-control')"
677
675
  >
@@ -65,7 +65,6 @@ const undecided = computed(() => tutorial.decision === null)
65
65
  </div>
66
66
  <UButton
67
67
  size="sm"
68
- color="primary"
69
68
  :variant="actionFor(tour.id) === 'restart' ? 'soft' : 'solid'"
70
69
  :data-testid="`tutorial-start-${tour.id}`"
71
70
  @click="launch(tour.id)"
@@ -78,7 +78,6 @@ async function connect() {
78
78
  </p>
79
79
 
80
80
  <UButton
81
- color="primary"
82
81
  icon="i-lucide-gitlab"
83
82
  :loading="connecting"
84
83
  :disabled="!pat.trim()"
@@ -406,6 +406,7 @@ watch(pendingUpload, async (file) => {
406
406
  {{ t('visualConfirm.requestFix.foldedHint') }}
407
407
  </span>
408
408
  <UButton
409
+ variant="soft"
409
410
  size="sm"
410
411
  color="warning"
411
412
  icon="i-lucide-wrench"
@@ -490,7 +491,6 @@ watch(pendingUpload, async (file) => {
490
491
  {{ t('visualConfirm.recapture') }}
491
492
  </UButton>
492
493
  <UButton
493
- color="primary"
494
494
  icon="i-lucide-circle-check"
495
495
  :loading="busy"
496
496
  :disabled="!canApprove || !access.canExecuteRuns.value"
@@ -560,7 +560,7 @@ watch(
560
560
  <UIcon name="i-lucide-plug-zap" class="mx-auto mb-3 h-10 w-10 text-app-warning-400" />
561
561
  <h1 class="mb-1 text-lg font-semibold">{{ $t('app.backendUnreachable') }}</h1>
562
562
  <p class="mb-4 text-sm text-muted">{{ workspace.error }}</p>
563
- <UButton color="primary" icon="i-lucide-rotate-ccw" @click="workspace.init()">
563
+ <UButton icon="i-lucide-rotate-ccw" @click="workspace.init()">
564
564
  {{ $t('common.retry') }}
565
565
  </UButton>
566
566
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.310.1",
3
+ "version": "0.310.3",
4
4
  "description": "Reusable Nuxt layer for the Agent Architecture Board SPA (components, stores, composables, pages). Consume it from a thin deployment app via `extends: ['@cat-factory/app']` and point it at your backend with NUXT_PUBLIC_API_BASE. See deploy/frontend for an example.",
5
5
  "repository": {
6
6
  "type": "git",