@cat-factory/app 0.30.2 → 0.30.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.
@@ -372,7 +372,7 @@ async function add() {
372
372
  <template>
373
373
  <UModal v-model:open="open" title="Add a task">
374
374
  <template #body>
375
- <div class="space-y-4">
375
+ <div class="space-y-4" data-testid="add-task-modal">
376
376
  <p v-if="container" class="text-xs text-slate-400">
377
377
  New task in <span class="font-medium text-slate-200">{{ container.title }}</span>
378
378
  </p>
@@ -411,6 +411,7 @@ async function add() {
411
411
  <UFormField label="Title" required>
412
412
  <UInput
413
413
  v-model="title"
414
+ data-testid="add-task-title"
414
415
  placeholder="What needs to be done?"
415
416
  autofocus
416
417
  class="w-full"
@@ -746,6 +747,7 @@ async function add() {
746
747
  <UButton color="neutral" variant="ghost" @click="ui.closeAddTask()">Cancel</UButton>
747
748
  <UButton
748
749
  color="primary"
750
+ data-testid="add-task-submit"
749
751
  :icon="isRecurring ? 'i-lucide-arrow-right' : 'i-lucide-plus'"
750
752
  :loading="saving"
751
753
  :disabled="!canAdd"
@@ -368,6 +368,7 @@ const ITEM_ICON: Record<string, string> = {
368
368
  }}</UBadge>
369
369
  <UButton
370
370
  class="nodrag"
371
+ data-testid="frame-add-task"
371
372
  size="xs"
372
373
  variant="ghost"
373
374
  color="neutral"
@@ -425,6 +426,7 @@ const ITEM_ICON: Record<string, string> = {
425
426
  <button
426
427
  v-if="!hasTasks"
427
428
  type="button"
429
+ data-testid="frame-add-task"
428
430
  class="absolute inset-4 flex items-center justify-center gap-1 rounded-lg border border-dashed border-slate-700 text-[11px] text-slate-500 hover:border-slate-500 hover:text-slate-300"
429
431
  @click.stop="addTask"
430
432
  >
@@ -115,7 +115,13 @@ function revealDecision(n: Notification) {
115
115
 
116
116
  <template>
117
117
  <UPopover v-if="notifications.count" :content="{ align: 'end' }">
118
- <UButton :color="hasUrgent ? 'error' : 'warning'" variant="soft" size="sm" icon="i-lucide-bell">
118
+ <UButton
119
+ data-testid="notifications-bell"
120
+ :color="hasUrgent ? 'error' : 'warning'"
121
+ variant="soft"
122
+ size="sm"
123
+ icon="i-lucide-bell"
124
+ >
119
125
  {{ notifications.count }}
120
126
  </UButton>
121
127
 
@@ -127,6 +133,8 @@ function revealDecision(n: Notification) {
127
133
  <div
128
134
  v-for="n in notifications.open"
129
135
  :key="n.id"
136
+ data-testid="notification-item"
137
+ :data-notification-type="n.type"
130
138
  class="rounded-lg border p-2.5 mt-1.5"
131
139
  :class="
132
140
  isUrgent(n)
@@ -167,6 +175,7 @@ function revealDecision(n: Notification) {
167
175
  </a>
168
176
  <div class="mt-2 flex items-center gap-1.5">
169
177
  <UButton
178
+ data-testid="notification-act"
170
179
  :color="accent(n)"
171
180
  variant="soft"
172
181
  size="xs"
@@ -176,6 +185,7 @@ function revealDecision(n: Notification) {
176
185
  {{ META[n.type].action }}
177
186
  </UButton>
178
187
  <UButton
188
+ data-testid="notification-dismiss"
179
189
  color="neutral"
180
190
  variant="ghost"
181
191
  size="xs"
@@ -175,6 +175,7 @@ async function copyOutput() {
175
175
  <Transition name="reader-fade">
176
176
  <div
177
177
  v-if="open && step && agent"
178
+ data-testid="step-detail"
178
179
  class="fixed inset-0 z-50 flex bg-slate-950/96 backdrop-blur-sm"
179
180
  role="dialog"
180
181
  aria-modal="true"
@@ -552,6 +553,7 @@ async function copyOutput() {
552
553
  <div v-else class="space-y-2 border-t border-slate-800 px-4 py-3">
553
554
  <UButton
554
555
  color="primary"
556
+ data-testid="step-approve"
555
557
  size="sm"
556
558
  icon="i-lucide-check"
557
559
  block
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.30.2",
3
+ "version": "0.30.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",