@cat-factory/app 0.245.0 → 0.247.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.
@@ -11,6 +11,7 @@ import type { IssueIntakeRefusalReason } from '@cat-factory/contracts'
11
11
  import { BUILTIN_TASK_SOURCE_KINDS } from '@cat-factory/contracts'
12
12
  import { apiErrorReason } from '~/composables/api/errors'
13
13
  import { pipelineAllowedForSchedule } from '~/utils/pipeline'
14
+ import { appliesIntakePredicate } from '~/utils/intakePredicates'
14
15
 
15
16
  const ui = useUiStore()
16
17
  const board = useBoardStore()
@@ -48,6 +49,10 @@ const intakeSource = ref<TaskSourceKind | null>(null)
48
49
  const intakeJiraProjectKey = ref('')
49
50
  const intakeLinearTeamId = ref('')
50
51
  const intakeGithubRepo = ref('')
52
+ // A GitLab project is its full path with namespace, which NESTS (`group/sub/project`), so it is
53
+ // its own field rather than a reuse of the GitHub one: the two are not the same shape and the two
54
+ // providers read different legs of the stored board scope.
55
+ const intakeGitlabProject = ref('')
51
56
  /**
52
57
  * The board scope for a DEPLOYMENT-REGISTERED source, held opaquely. Its own field rather than
53
58
  * reusing one of the three above, mirroring `issueIntakeConfigSchema.board.boardId`: only that
@@ -181,6 +186,20 @@ const intakeDispatch = computed<'queue' | 'per-ticket'>(() =>
181
186
  // (`supportsIntake`, derived from the registered provider) rather than inferred from the id here.
182
187
  const intakeSources = computed(() => tasks.offeredSources.filter((s) => s.supportsIntake))
183
188
 
189
+ /** The selected source's state, which is what declares the predicates it will not apply. */
190
+ const intakeSourceState = computed(() =>
191
+ intakeSource.value ? tasks.descriptorFor(intakeSource.value) : undefined,
192
+ )
193
+ const intakeSourceLabel = computed(() => intakeSourceState.value?.label ?? '')
194
+ /**
195
+ * Whether the selected source will actually apply the issue-type predicate. A schedule fires
196
+ * unattended, and `BugIntakeService` defaults the predicate to `bug`, so a source that drops it
197
+ * starts the bugfix pipeline on whatever is oldest and open with nothing to point at.
198
+ */
199
+ const intakeIssueTypeApplies = computed(() =>
200
+ appliesIntakePredicate(intakeSourceState.value, 'issueType'),
201
+ )
202
+
184
203
  watch(open, (isOpen) => {
185
204
  if (!isOpen) return
186
205
  name.value = ''
@@ -199,6 +218,7 @@ watch(open, (isOpen) => {
199
218
  intakeJiraProjectKey.value = ''
200
219
  intakeLinearTeamId.value = ''
201
220
  intakeGithubRepo.value = ''
221
+ intakeGitlabProject.value = ''
202
222
  intakeBoardId.value = ''
203
223
  trackerTrigger.value = false
204
224
  intakeTitleFragment.value = ''
@@ -229,6 +249,7 @@ const { requestClose } = useUnsavedGuard({
229
249
  intakeJiraProjectKey: intakeJiraProjectKey.value.trim(),
230
250
  intakeLinearTeamId: intakeLinearTeamId.value.trim(),
231
251
  intakeGithubRepo: intakeGithubRepo.value.trim(),
252
+ intakeGitlabProject: intakeGitlabProject.value.trim(),
232
253
  intakeBoardId: intakeBoardId.value.trim(),
233
254
  trackerTrigger: trackerTrigger.value,
234
255
  intakeTitleFragment: intakeTitleFragment.value.trim(),
@@ -253,6 +274,7 @@ const intakeReady = computed(() => {
253
274
  if (intakeSource.value === 'jira') return intakeJiraProjectKey.value.trim().length > 0
254
275
  if (intakeSource.value === 'linear') return intakeLinearTeamId.value.trim().length > 0
255
276
  if (intakeSource.value === 'github') return intakeGithubRepo.value.trim().length > 0
277
+ if (intakeSource.value === 'gitlab') return intakeGitlabProject.value.trim().length > 0
256
278
  // A registered source is scoped by its opaque board id. Falling through to `false` here would
257
279
  // make its schedule permanently unsaveable rather than merely unscoped.
258
280
  if (intakeSource.value) return intakeBoardId.value.trim().length > 0
@@ -277,6 +299,9 @@ function buildIssueIntake(): IssueIntakeConfig {
277
299
  ...(source === 'github' && intakeGithubRepo.value.trim()
278
300
  ? { githubRepo: intakeGithubRepo.value.trim() }
279
301
  : {}),
302
+ ...(source === 'gitlab' && intakeGitlabProject.value.trim()
303
+ ? { gitlabProject: intakeGitlabProject.value.trim() }
304
+ : {}),
280
305
  ...(!intakeSourceIsBuiltin.value && intakeBoardId.value.trim()
281
306
  ? { boardId: intakeBoardId.value.trim() }
282
307
  : {}),
@@ -286,7 +311,12 @@ function buildIssueIntake(): IssueIntakeConfig {
286
311
  ? { titleFragment: intakeTitleFragment.value.trim() }
287
312
  : {}),
288
313
  ...(labels.length ? { labels } : {}),
289
- ...(intakeIssueType.value.trim() ? { issueType: intakeIssueType.value.trim() } : {}),
314
+ // Withheld for a source that would drop it anyway, so the STORED config carries no
315
+ // predicate the schedule never applies: a config read back later is evidence of what the
316
+ // schedule does, and a dead `issueType: 'bug'` on it is the same lie the form would tell.
317
+ ...(intakeIssueTypeApplies.value && intakeIssueType.value.trim()
318
+ ? { issueType: intakeIssueType.value.trim() }
319
+ : {}),
290
320
  },
291
321
  ...(source === 'github' && intakeInProgressLabel.value.trim()
292
322
  ? { inProgressLabel: intakeInProgressLabel.value.trim() }
@@ -546,6 +576,15 @@ async function add() {
546
576
  <!-- A GitHub repo ref is always the literal `owner/name` path, never localized. -->
547
577
  <UInput v-model="intakeGithubRepo" placeholder="owner/name" class="w-full" />
548
578
  </UFormField>
579
+ <UFormField
580
+ v-if="intakeSource === 'gitlab'"
581
+ :label="t('board.recurring.intakeGitlabProject')"
582
+ :help="t('board.recurring.intakeGitlabProjectHelp')"
583
+ required
584
+ >
585
+ <!-- A GitLab project path is literal, and NESTS: subgroups are part of it. -->
586
+ <UInput v-model="intakeGitlabProject" placeholder="group/project" class="w-full" />
587
+ </UFormField>
549
588
  <UFormField
550
589
  v-if="intakeSource && !intakeSourceIsBuiltin"
551
590
  :label="t('board.recurring.intakeBoardId')"
@@ -579,7 +618,23 @@ async function add() {
579
618
  </UFormField>
580
619
  <UFormField :label="t('board.recurring.intakeIssueType')">
581
620
  <!-- A literal issue-type example (tracker vocabulary), kept verbatim across locales. -->
582
- <UInput v-model="intakeIssueType" placeholder="bug" class="w-full" />
621
+ <UInput
622
+ v-if="intakeIssueTypeApplies"
623
+ v-model="intakeIssueType"
624
+ placeholder="bug"
625
+ class="w-full"
626
+ />
627
+ <!-- Not a disabled input: this source's provider never sends the predicate, so a box
628
+ still holding a value would read as a filter that is on. Stated here because a
629
+ schedule fires unattended — the only other evidence of the gap is a bugfix run
630
+ started on a docs chore. -->
631
+ <p v-else class="text-xs text-amber-400">
632
+ {{
633
+ t('board.recurring.intakeIssueTypeUnsupported', {
634
+ tracker: intakeSourceLabel,
635
+ })
636
+ }}
637
+ </p>
583
638
  </UFormField>
584
639
  <UFormField
585
640
  v-if="intakeSource === 'github'"
@@ -36,6 +36,7 @@ import {
36
36
  sourceMenuItems,
37
37
  } from '~/utils/sourcePicker'
38
38
  import IntegrationBackTitle from '~/components/layout/IntegrationBackTitle.vue'
39
+ import { appliesIntakePredicate } from '~/utils/intakePredicates'
39
40
 
40
41
  const { t, d, n } = useI18n()
41
42
  const ui = useUiStore()
@@ -67,6 +68,13 @@ const {
67
68
 
68
69
  const descriptor = computed(() => (source.value ? tasks.descriptorFor(source.value) : undefined))
69
70
 
71
+ /**
72
+ * Whether the picked tracker will actually apply the issue-type predicate. Asked of the source's
73
+ * own declaration, because a hunt whose type filter is silently dropped ranks and adopts whatever
74
+ * is oldest and open, and `run` sends the `bug` default whether or not the user typed one.
75
+ */
76
+ const issueTypeApplies = computed(() => appliesIntakePredicate(descriptor.value, 'issueType'))
77
+
70
78
  /**
71
79
  * Wording for an addable tracker, as an exhaustive map over the add actions a TRACKER menu can
72
80
  * carry: `enable` is connected but toggled off for this workspace, so the user is never told to
@@ -325,8 +333,17 @@ const STATUS_KEYS: Record<BugHuntAnalysisStatus, string> = {
325
333
  </p>
326
334
  </UFormField>
327
335
 
328
- <UFormField :label="t('bugHunt.issueType')" :help="t('bugHunt.issueTypeHelp')">
329
- <UInput v-model="issueType" placeholder="bug" class="w-full" />
336
+ <UFormField
337
+ :label="t('bugHunt.issueType')"
338
+ :help="issueTypeApplies ? t('bugHunt.issueTypeHelp') : undefined"
339
+ >
340
+ <UInput v-if="issueTypeApplies" v-model="issueType" placeholder="bug" class="w-full" />
341
+ <!-- Not a disabled input: this tracker's provider never sends the predicate, so a box
342
+ still holding a value would read as a filter that is on. What it CAN narrow by is
343
+ named instead, since the alternative is a hunt over every open issue. -->
344
+ <p v-else class="text-xs text-amber-400">
345
+ {{ t('bugHunt.issueTypeUnsupported', { tracker: descriptor?.label ?? '' }) }}
346
+ </p>
330
347
  </UFormField>
331
348
 
332
349
  <UFormField :label="t('bugHunt.labels')" :help="t('bugHunt.labelsHelp')">
@@ -92,6 +92,10 @@ const CONFLICT_INFO: Record<Exclude<ConflictReason, BespokeConflictReason>, Conf
92
92
  titleKey: 'errors.conflict.title.task_limit_reached',
93
93
  descriptionKey: 'errors.conflict.description.task_limit_reached',
94
94
  },
95
+ webhook_limit_reached: {
96
+ titleKey: 'errors.conflict.title.webhook_limit_reached',
97
+ descriptionKey: 'errors.conflict.description.webhook_limit_reached',
98
+ },
95
99
  tester_infra_unsupported: {
96
100
  titleKey: 'errors.conflict.title.tester_infra_unsupported',
97
101
  descriptionKey: 'errors.conflict.description.tester_infra_unsupported',
@@ -33,6 +33,7 @@ const jiraDescriptor: TaskSourceState = {
33
33
  available: true,
34
34
  enabled: true,
35
35
  supportsIntake: true,
36
+ ignoredIntakePredicates: [],
36
37
  // Jira carries its own credentials, so it rides no VCS connection.
37
38
  ridesVcsProvider: null,
38
39
  }
@@ -0,0 +1,43 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import type { TaskSourceState } from '@cat-factory/contracts'
3
+ import { appliesIntakePredicate } from './intakePredicates'
4
+
5
+ function state(ignored: TaskSourceState['ignoredIntakePredicates']): TaskSourceState {
6
+ return {
7
+ source: 'gitlab',
8
+ label: 'GitLab Issues',
9
+ icon: 'i-lucide-gitlab',
10
+ credentialFields: [],
11
+ refLabel: 'Issue URL',
12
+ refPlaceholder: 'acme/web#123',
13
+ available: true,
14
+ enabled: true,
15
+ ridesVcsProvider: 'gitlab',
16
+ supportsIntake: true,
17
+ ignoredIntakePredicates: ignored,
18
+ }
19
+ }
20
+
21
+ describe('appliesIntakePredicate', () => {
22
+ it('applies a predicate the source did not name', () => {
23
+ expect(appliesIntakePredicate(state(['issueType']), 'labels')).toBe(true)
24
+ })
25
+
26
+ it('withholds the one it did', () => {
27
+ expect(appliesIntakePredicate(state(['issueType']), 'issueType')).toBe(false)
28
+ })
29
+
30
+ // An unresolved source is not a source with a known gap. Answering `false` here would put a
31
+ // warning under every freshly-opened form, before anything has been picked to warn about.
32
+ it('treats an unresolved source as applying everything', () => {
33
+ expect(appliesIntakePredicate(undefined, 'issueType')).toBe(true)
34
+ })
35
+
36
+ // A state from an older backend carries no array at all; a missing declaration is the same
37
+ // claim as an empty one ("this source applies them all"), not a reason to render nothing.
38
+ it('treats a missing declaration as applying everything', () => {
39
+ const legacy = { ...state([]) } as Partial<TaskSourceState>
40
+ delete legacy.ignoredIntakePredicates
41
+ expect(appliesIntakePredicate(legacy as TaskSourceState, 'issueType')).toBe(true)
42
+ })
43
+ })
@@ -0,0 +1,25 @@
1
+ import type { IssueIntakePredicate, TaskSourceState } from '@cat-factory/contracts'
2
+
3
+ /**
4
+ * Whether the selected task source will actually APPLY an intake predicate the form offers.
5
+ *
6
+ * Both surfaces that compose an intake query (the recurring `bug-intake` schedule and the
7
+ * interactive bug hunt) render one field per predicate, and not every tracker can evaluate every
8
+ * one: Linear has no issue-type notion at all, and GitLab's is a closed set with no member meaning
9
+ * "bug". A field whose value the backend then drops is worse than a missing field, because the
10
+ * schedule saves, fires, and picks up an issue the operator believes it filtered out.
11
+ *
12
+ * The answer comes off `TaskSourceState`, which each provider declares, rather than a source-id
13
+ * check here: restating the backend's compiler in the SPA is exactly how the two drift, and the
14
+ * deployment-registered sources are not on a list this file could hold anyway.
15
+ *
16
+ * An UNRESOLVED source (nothing picked yet, or a state not loaded) answers `true`. The field is
17
+ * shown plainly in that case, which is what it looked like before a source was chosen; claiming a
18
+ * gap we cannot see yet would put a warning under every freshly-opened form.
19
+ */
20
+ export function appliesIntakePredicate(
21
+ state: TaskSourceState | undefined,
22
+ predicate: IssueIntakePredicate,
23
+ ): boolean {
24
+ return !state?.ignoredIntakePredicates?.includes(predicate)
25
+ }
@@ -2920,6 +2920,8 @@
2920
2920
  "intakeNoSources": "Verbinden Sie zuerst eine Task-Quelle, um Issues daraus zu ziehen.",
2921
2921
  "intakeNoIntakeSources": "Eine Task-Quelle ist verbunden, aber keine der verbundenen Quellen kann bereits eine geplante Issue-Suche ausführen.",
2922
2922
  "intakeGithubRepo": "Repository",
2923
+ "intakeGitlabProject": "Projekt",
2924
+ "intakeGitlabProjectHelp": "Der vollständige Pfad des GitLab-Projekts, einschließlich aller Untergruppen, z. B. gruppe/untergruppe/projekt.",
2923
2925
  "intakeBoardId": "Board-ID",
2924
2926
  "intakeBoardIdHelp": "Das Board, Projekt oder die Warteschlange, auf die dieser Tracker die Aufnahme eingrenzt. Das Format gibt der Tracker vor.",
2925
2927
  "trackerTrigger": "Läufe durch Tracker-Webhooks starten",
@@ -2931,6 +2933,7 @@
2931
2933
  "intakeLabels": "Labels",
2932
2934
  "intakeLabelsPlaceholder": "durch Komma getrennt",
2933
2935
  "intakeIssueType": "Issue-Typ",
2936
+ "intakeIssueTypeUnsupported": "{tracker} kennt keinen Ticket-Typ mit der Bedeutung „Bug“, daher wendet dieser Zeitplan ihn nicht an. Grenzen Sie die Auswahl stattdessen mit einem Label ein.",
2934
2937
  "intakeInProgressLabel": "In-Bearbeitung-Label",
2935
2938
  "refusalPerTicketRequiresOnDemand": "Ein per Tracker ausgelöster Zeitplan muss bedarfsgesteuert sein. Ein Rhythmus-Tick enthält kein Ticket, das übergeben werden könnte.",
2936
2939
  "refusalPerTicketConflictsWithBugIntake": "Diese Pipeline wählt ihr Issue selbst vom Board und kann daher nicht zusätzlich von einem eingehenden Ticket gesteuert werden. Wählen Sie eine Pipeline ohne Bug-Intake-Schritt."
@@ -4068,6 +4071,7 @@
4068
4071
  "boardsFailed": "Boards konnten nicht geladen werden: {reason}",
4069
4072
  "issueType": "Vorgangstyp",
4070
4073
  "issueTypeHelp": "Standard ist bug. Wird von Trackern ohne Vorgangstypen ignoriert.",
4074
+ "issueTypeUnsupported": "{tracker} kennt keinen Ticket-Typ mit der Bedeutung „Bug“, daher wird dieser Filter nicht angewendet. Grenzen Sie den Scan stattdessen mit einem Label ein.",
4071
4075
  "labels": "Labels",
4072
4076
  "labelsHelp": "Durch Komma getrennt. Alle müssen vorhanden sein.",
4073
4077
  "adoptInto": "Ausgewählten Fehler hinzufügen zu",
@@ -5487,7 +5491,8 @@
5487
5491
  "ticket_already_linked": "Dieses Ticket hat bereits eine Aufgabe",
5488
5492
  "document_already_linked": "Dokument bereits angehängt",
5489
5493
  "dry_run_not_mergeable": "Probelauf kann nicht zusammengeführt werden",
5490
- "submission_not_allowed": "Zusammenführen für diesen Lauf nicht erlaubt"
5494
+ "submission_not_allowed": "Zusammenführen für diesen Lauf nicht erlaubt",
5495
+ "webhook_limit_reached": "Webhook-Limit erreicht"
5491
5496
  },
5492
5497
  "description": {
5493
5498
  "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.",
@@ -5525,7 +5530,8 @@
5525
5530
  "ticket_already_linked": "Ein Ticket kann nur eine Aufgabe stützen. Es erneut zu verknüpfen würde der bestehenden Aufgabe genau den Kontext entziehen, mit dem sie angelegt wurde. Öffne stattdessen diese Aufgabe oder hebe die Verknüpfung des Tickets zuerst auf.",
5526
5531
  "document_already_linked": "Dieses Dokument ist an eine andere Aufgabe angehängt. Lösen Sie es dort zuerst, oder hängen Sie eine separate Kopie an.",
5527
5532
  "dry_run_not_mergeable": "Dieser Pull Request stammt aus einem Probelauf und kann hier nicht zusammengeführt werden. Starte die Aufgabe erneut als echten Lauf, um einen Pull Request zu erzeugen, den dieser Arbeitsbereich zusammenführt.",
5528
- "submission_not_allowed": "Die Merge-Richtlinie dieser Aufgabe erlaubt der Rolle, die diesen Lauf gestartet hat, diese Änderungsart nicht zusammenzuführen. Jemand mit einer passenden Rolle kann es tun, oder ein Admin erweitert die Richtlinie in der Merge-Vorlage."
5533
+ "submission_not_allowed": "Die Merge-Richtlinie dieser Aufgabe erlaubt der Rolle, die diesen Lauf gestartet hat, diese Änderungsart nicht zusammenzuführen. Jemand mit einer passenden Rolle kann es tun, oder ein Admin erweitert die Richtlinie in der Merge-Vorlage.",
5534
+ "webhook_limit_reached": "Für diesen Workspace ist bereits die maximale Anzahl ausgehender Webhooks registriert. Entfernen Sie einen nicht mehr benötigten und registrieren Sie diesen erneut."
5529
5535
  },
5530
5536
  "action": {
5531
5537
  "connectGitHub": "GitHub verbinden",
@@ -386,6 +386,8 @@
386
386
  "intakeNoSources": "Connect a task source first to pull issues from it.",
387
387
  "intakeNoIntakeSources": "A task source is connected, but none of the connected sources can run a scheduled issue search yet.",
388
388
  "intakeGithubRepo": "Repository",
389
+ "intakeGitlabProject": "Project",
390
+ "intakeGitlabProjectHelp": "The GitLab project's full path, including any subgroups, e.g. group/sub/project.",
389
391
  "intakeBoardId": "Board id",
390
392
  "intakeBoardIdHelp": "The board, project or queue this tracker scopes intake to. Its format is defined by the tracker.",
391
393
  "trackerTrigger": "Start runs from tracker webhooks",
@@ -397,6 +399,7 @@
397
399
  "intakeLabels": "Labels",
398
400
  "intakeLabelsPlaceholder": "comma-separated",
399
401
  "intakeIssueType": "Issue type",
402
+ "intakeIssueTypeUnsupported": "{tracker} has no issue type that means \"bug\", so this schedule will not apply it. Narrow the pickup with a label instead.",
400
403
  "intakeInProgressLabel": "In-progress label",
401
404
  "refusalPerTicketRequiresOnDemand": "A tracker-triggered schedule must be on-demand. A cadence tick carries no ticket to dispatch.",
402
405
  "refusalPerTicketConflictsWithBugIntake": "This pipeline picks its own issue from the board, so it cannot also be driven by a pushed ticket. Choose a pipeline without a bug-intake step."
@@ -652,7 +655,8 @@
652
655
  "ticket_already_linked": "This issue already has a task",
653
656
  "document_already_linked": "Document already attached",
654
657
  "dry_run_not_mergeable": "Dry run cannot be merged",
655
- "submission_not_allowed": "Merge not allowed for this run"
658
+ "submission_not_allowed": "Merge not allowed for this run",
659
+ "webhook_limit_reached": "Webhook limit reached"
656
660
  },
657
661
  "description": {
658
662
  "dependencies_unmet": "This task depends on others that aren't finished yet. Complete or unblock them, then start it again.",
@@ -693,7 +697,8 @@
693
697
  "ticket_already_linked": "An issue can back only one task, so linking it again would strip the existing task of the context it was created with. Open that task instead, or unlink the issue first.",
694
698
  "document_already_linked": "That document is attached to another task. Detach it there first, or attach a separate copy.",
695
699
  "dry_run_not_mergeable": "This pull request came from a dry run, so it can't be merged from here. Start the task again as a live run to produce a pull request this workspace will merge.",
696
- "submission_not_allowed": "This task's merge policy doesn't let the role that started this run merge this kind of change. Somebody whose role may merge it can do so, or an admin can widen the policy in the merge preset."
700
+ "submission_not_allowed": "This task's merge policy doesn't let the role that started this run merge this kind of change. Somebody whose role may merge it can do so, or an admin can widen the policy in the merge preset.",
701
+ "webhook_limit_reached": "This workspace already has the maximum number of outbound webhooks registered. Remove one you no longer need, then register this again."
697
702
  },
698
703
  "action": {
699
704
  "connectGitHub": "Connect GitHub",
@@ -4591,6 +4596,7 @@
4591
4596
  "boardsFailed": "Boards could not be loaded: {reason}",
4592
4597
  "issueType": "Issue type",
4593
4598
  "issueTypeHelp": "Defaults to bug. Ignored by trackers with no issue types.",
4599
+ "issueTypeUnsupported": "{tracker} has no issue type that means \"bug\", so this filter is not applied. Narrow the scan with a label instead.",
4594
4600
  "labels": "Labels",
4595
4601
  "labelsHelp": "Comma separated. All of them must be present.",
4596
4602
  "adoptInto": "Add the picked bug to",
@@ -347,6 +347,8 @@
347
347
  "intakeNoSources": "Primero conecta una fuente de tareas para extraer incidencias de ella.",
348
348
  "intakeNoIntakeSources": "Hay una fuente de tareas conectada, pero ninguna de las fuentes conectadas puede ejecutar todavía una búsqueda programada de incidencias.",
349
349
  "intakeGithubRepo": "Repositorio",
350
+ "intakeGitlabProject": "Proyecto",
351
+ "intakeGitlabProjectHelp": "La ruta completa del proyecto de GitLab, incluidos los subgrupos, p. ej. grupo/subgrupo/proyecto.",
350
352
  "intakeBoardId": "ID del tablero",
351
353
  "intakeBoardIdHelp": "El tablero, proyecto o cola al que este rastreador limita la admisión. El formato lo define el rastreador.",
352
354
  "trackerTrigger": "Iniciar ejecuciones desde webhooks del rastreador",
@@ -358,6 +360,7 @@
358
360
  "intakeLabels": "Etiquetas",
359
361
  "intakeLabelsPlaceholder": "separadas por comas",
360
362
  "intakeIssueType": "Tipo de incidencia",
363
+ "intakeIssueTypeUnsupported": "{tracker} no tiene ningún tipo de incidencia que signifique «bug», así que esta programación no lo aplicará. Acota la selección con una etiqueta en su lugar.",
361
364
  "intakeInProgressLabel": "Etiqueta de en progreso",
362
365
  "refusalPerTicketRequiresOnDemand": "Una programación activada por el rastreador debe ser bajo demanda. Un ciclo de cadencia no lleva ningún ticket que despachar.",
363
366
  "refusalPerTicketConflictsWithBugIntake": "Esta canalización elige su propia incidencia del tablero, así que no puede además activarse con un ticket entrante. Elija una canalización sin paso de admisión de errores."
@@ -583,7 +586,8 @@
583
586
  "ticket_already_linked": "Esta incidencia ya tiene una tarea",
584
587
  "document_already_linked": "El documento ya está adjunto",
585
588
  "dry_run_not_mergeable": "Una ejecución de prueba no se puede fusionar",
586
- "submission_not_allowed": "Fusión no permitida para esta ejecución"
589
+ "submission_not_allowed": "Fusión no permitida para esta ejecución",
590
+ "webhook_limit_reached": "Límite de webhooks alcanzado"
587
591
  },
588
592
  "description": {
589
593
  "dependencies_unmet": "Esta tarea depende de otras que aún no están terminadas. Complétalas o desbloquéalas y vuelve a iniciarla.",
@@ -621,7 +625,8 @@
621
625
  "ticket_already_linked": "Una incidencia solo puede respaldar una tarea, así que volver a vincularla dejaría a la tarea existente sin el contexto con el que se creó. Abre esa tarea o desvincula antes la incidencia.",
622
626
  "document_already_linked": "Ese documento está adjunto a otra tarea. Sepáralo allí primero o adjunta una copia aparte.",
623
627
  "dry_run_not_mergeable": "Esta pull request proviene de una ejecución de prueba, así que no se puede fusionar desde aquí. Vuelve a iniciar la tarea como ejecución real para producir una pull request que este espacio de trabajo sí fusionará.",
624
- "submission_not_allowed": "La política de fusión de esta tarea no permite que el rol que inició la ejecución fusione este tipo de cambio. Alguien cuyo rol sí lo permita puede hacerlo, o un administrador puede ampliar la política en el preajuste de fusión."
628
+ "submission_not_allowed": "La política de fusión de esta tarea no permite que el rol que inició la ejecución fusione este tipo de cambio. Alguien cuyo rol sí lo permita puede hacerlo, o un administrador puede ampliar la política en el preajuste de fusión.",
629
+ "webhook_limit_reached": "Este espacio de trabajo ya tiene registrado el número máximo de webhooks salientes. Elimina uno que ya no necesites y vuelve a registrar este."
625
630
  },
626
631
  "action": {
627
632
  "connectGitHub": "Conectar GitHub",
@@ -4451,6 +4456,7 @@
4451
4456
  "boardsFailed": "No se pudieron cargar los tableros: {reason}",
4452
4457
  "issueType": "Tipo de incidencia",
4453
4458
  "issueTypeHelp": "Por defecto bug. Se ignora en gestores sin tipos de incidencia.",
4459
+ "issueTypeUnsupported": "{tracker} no tiene ningún tipo de incidencia que signifique «bug», por lo que este filtro no se aplica. Acota el análisis con una etiqueta en su lugar.",
4454
4460
  "labels": "Etiquetas",
4455
4461
  "labelsHelp": "Separadas por comas. Todas deben estar presentes.",
4456
4462
  "adoptInto": "Añadir el error elegido a",
@@ -347,6 +347,8 @@
347
347
  "intakeNoSources": "Connectez d'abord une source de tâches pour en extraire des tickets.",
348
348
  "intakeNoIntakeSources": "Une source de tâches est connectée, mais aucune des sources connectées ne peut encore exécuter une recherche de tickets planifiée.",
349
349
  "intakeGithubRepo": "Dépôt",
350
+ "intakeGitlabProject": "Projet",
351
+ "intakeGitlabProjectHelp": "Le chemin complet du projet GitLab, sous-groupes compris, par exemple groupe/sous-groupe/projet.",
350
352
  "intakeBoardId": "ID du tableau",
351
353
  "intakeBoardIdHelp": "Le tableau, projet ou file d’attente auquel ce traqueur limite la prise en charge. Son format est défini par le traqueur.",
352
354
  "trackerTrigger": "Lancer des exécutions depuis les webhooks du traqueur",
@@ -358,6 +360,7 @@
358
360
  "intakeLabels": "Étiquettes",
359
361
  "intakeLabelsPlaceholder": "séparées par des virgules",
360
362
  "intakeIssueType": "Type de ticket",
363
+ "intakeIssueTypeUnsupported": "{tracker} n’a aucun type de ticket signifiant « bug », cette planification ne l’appliquera donc pas. Restreignez plutôt la sélection avec une étiquette.",
361
364
  "intakeInProgressLabel": "Étiquette en cours",
362
365
  "refusalPerTicketRequiresOnDemand": "Une planification déclenchée par le traqueur doit être à la demande. Un cycle de cadence ne porte aucun ticket à répartir.",
363
366
  "refusalPerTicketConflictsWithBugIntake": "Ce pipeline choisit lui-même son ticket sur le tableau : il ne peut pas être piloté en plus par un ticket entrant. Choisissez un pipeline sans étape de collecte de bogues."
@@ -583,7 +586,8 @@
583
586
  "ticket_already_linked": "Ce ticket a déjà une tâche",
584
587
  "document_already_linked": "Document déjà joint",
585
588
  "dry_run_not_mergeable": "Une exécution à blanc ne peut pas être fusionnée",
586
- "submission_not_allowed": "Fusion non autorisée pour cette exécution"
589
+ "submission_not_allowed": "Fusion non autorisée pour cette exécution",
590
+ "webhook_limit_reached": "Limite de webhooks atteinte"
587
591
  },
588
592
  "description": {
589
593
  "dependencies_unmet": "Cette tâche dépend d'autres qui ne sont pas encore terminées. Terminez-les ou débloquez-les, puis relancez-la.",
@@ -621,7 +625,8 @@
621
625
  "ticket_already_linked": "Un ticket ne peut alimenter qu'une seule tâche : le relier à nouveau priverait la tâche existante du contexte avec lequel elle a été créée. Ouvrez plutôt cette tâche, ou dissociez d'abord le ticket.",
622
626
  "document_already_linked": "Ce document est joint à une autre tâche. Détachez-le d'abord, ou joignez-en une copie distincte.",
623
627
  "dry_run_not_mergeable": "Cette pull request provient d'une exécution à blanc et ne peut pas être fusionnée ici. Relancez la tâche en exécution réelle pour produire une pull request que cet espace de travail fusionnera.",
624
- "submission_not_allowed": "La politique de fusion de cette tâche n'autorise pas le rôle qui a lancé cette exécution à fusionner ce type de changement. Un coéquipier dont le rôle le permet peut le faire, ou un admin peut élargir la politique dans le préréglage de fusion."
628
+ "submission_not_allowed": "La politique de fusion de cette tâche n'autorise pas le rôle qui a lancé cette exécution à fusionner ce type de changement. Un coéquipier dont le rôle le permet peut le faire, ou un admin peut élargir la politique dans le préréglage de fusion.",
629
+ "webhook_limit_reached": "Cet espace de travail a déjà enregistré le nombre maximal de webhooks sortants. Supprimez-en un dont vous n’avez plus besoin, puis enregistrez celui-ci à nouveau."
625
630
  },
626
631
  "action": {
627
632
  "connectGitHub": "Connecter GitHub",
@@ -4451,6 +4456,7 @@
4451
4456
  "boardsFailed": "Impossible de charger les tableaux : {reason}",
4452
4457
  "issueType": "Type de ticket",
4453
4458
  "issueTypeHelp": "Par défaut bug. Ignoré par les gestionnaires sans types de tickets.",
4459
+ "issueTypeUnsupported": "{tracker} n’a aucun type de ticket signifiant « bug », ce filtre n’est donc pas appliqué. Restreignez plutôt l’analyse avec une étiquette.",
4454
4460
  "labels": "Étiquettes",
4455
4461
  "labelsHelp": "Séparées par des virgules. Toutes doivent être présentes.",
4456
4462
  "adoptInto": "Ajouter le bug retenu à",
@@ -347,6 +347,8 @@
347
347
  "intakeNoSources": "חבר תחילה מקור משימות כדי למשוך ממנו תקלות.",
348
348
  "intakeNoIntakeSources": "מקור משימות מחובר, אך אף אחד מהמקורות המחוברים אינו יכול עדיין להריץ חיפוש תקלות מתוזמן.",
349
349
  "intakeGithubRepo": "מאגר",
350
+ "intakeGitlabProject": "פרויקט",
351
+ "intakeGitlabProjectHelp": "הנתיב המלא של פרויקט ה-GitLab, כולל תת-קבוצות, לדוגמה group/sub/project.",
350
352
  "intakeBoardId": "מזהה לוח",
351
353
  "intakeBoardIdHelp": "הלוח, הפרויקט או התור שאליהם מערכת המעקב מגבילה את הקליטה. התבנית נקבעת על ידי מערכת המעקב.",
352
354
  "trackerTrigger": "להתחיל הרצות מ-webhooks של מערכת המעקב",
@@ -358,6 +360,7 @@
358
360
  "intakeLabels": "תוויות",
359
361
  "intakeLabelsPlaceholder": "מופרדות בפסיקים",
360
362
  "intakeIssueType": "סוג תקלה",
363
+ "intakeIssueTypeUnsupported": "ל-{tracker} אין סוג פנייה שמשמעותו „bug”, לכן תזמון זה לא יחיל אותו. צמצמו את הבחירה באמצעות תווית במקום זאת.",
361
364
  "intakeInProgressLabel": "תווית בתהליך",
362
365
  "refusalPerTicketRequiresOnDemand": "תזמון המופעל ממערכת המעקב חייב להיות לפי דרישה. פעימת קצב אינה נושאת כרטיס לשיגור.",
363
366
  "refusalPerTicketConflictsWithBugIntake": "צינור זה בוחר בעצמו את הנושא מהלוח, ולכן אינו יכול להיות מונע גם מכרטיס נכנס. בחרו צינור ללא שלב bug-intake."
@@ -583,7 +586,8 @@
583
586
  "ticket_already_linked": "לכרטיס הזה כבר יש משימה",
584
587
  "document_already_linked": "המסמך כבר מצורף",
585
588
  "dry_run_not_mergeable": "לא ניתן למזג הרצת יבש",
586
- "submission_not_allowed": "מיזוג אינו מותר עבור הרצה זו"
589
+ "submission_not_allowed": "מיזוג אינו מותר עבור הרצה זו",
590
+ "webhook_limit_reached": "הגעת למגבלת ה-Webhooks"
587
591
  },
588
592
  "description": {
589
593
  "dependencies_unmet": "משימה זו תלויה במשימות אחרות שטרם הושלמו. השלם או שחרר אותן, ולאחר מכן הפעל אותה שוב.",
@@ -621,7 +625,8 @@
621
625
  "ticket_already_linked": "כרטיס יכול לגבות משימה אחת בלבד, ולכן קישור נוסף שלו ישלול מהמשימה הקיימת את ההקשר שאיתו נוצרה. פתחו את המשימה הזו במקום זאת, או בטלו קודם את קישור הכרטיס.",
622
626
  "document_already_linked": "המסמך מצורף למשימה אחרת. נתקו אותו שם תחילה, או צרפו עותק נפרד.",
623
627
  "dry_run_not_mergeable": "בקשת המשיכה הזו הגיעה מהרצת יבש, ולכן לא ניתן למזג אותה מכאן. הפעילו את המשימה מחדש כהרצה רגילה כדי ליצור בקשת משיכה שסביבת העבודה הזו תמזג.",
624
- "submission_not_allowed": "מדיניות המיזוג של המשימה הזו אינה מתירה לתפקיד שהתחיל את ההרצה למזג שינוי מסוג זה. חבר צוות שתפקידו מתיר זאת יכול למזג, או שמנהל יכול להרחיב את המדיניות בהגדרת המיזוג."
628
+ "submission_not_allowed": "מדיניות המיזוג של המשימה הזו אינה מתירה לתפקיד שהתחיל את ההרצה למזג שינוי מסוג זה. חבר צוות שתפקידו מתיר זאת יכול למזג, או שמנהל יכול להרחיב את המדיניות בהגדרת המיזוג.",
629
+ "webhook_limit_reached": "במרחב העבודה הזה כבר רשום המספר המרבי של Webhooks יוצאים. הסירו אחד שאינכם צריכים עוד ולאחר מכן רשמו את זה שוב."
625
630
  },
626
631
  "action": {
627
632
  "connectGitHub": "חבר את GitHub",
@@ -4451,6 +4456,7 @@
4451
4456
  "boardsFailed": "לא ניתן היה לטעון את הלוחות: {reason}",
4452
4457
  "issueType": "סוג הפנייה",
4453
4458
  "issueTypeHelp": "ברירת המחדל היא bug. מתעלמים ממנו במערכות ללא סוגי פניות.",
4459
+ "issueTypeUnsupported": "ל-{tracker} אין סוג פנייה שמשמעותו „bug”, לכן מסנן זה אינו מוחל. צמצמו את הסריקה באמצעות תווית במקום זאת.",
4454
4460
  "labels": "תוויות",
4455
4461
  "labelsHelp": "מופרדות בפסיקים. כולן חייבות להופיע.",
4456
4462
  "adoptInto": "הוסף את הבאג הנבחר אל",
@@ -2920,6 +2920,8 @@
2920
2920
  "intakeNoSources": "Connetti prima una sorgente di attività per estrarne le issue.",
2921
2921
  "intakeNoIntakeSources": "Una sorgente di attività è connessa, ma nessuna delle sorgenti connesse può ancora eseguire una ricerca pianificata delle issue.",
2922
2922
  "intakeGithubRepo": "Repository",
2923
+ "intakeGitlabProject": "Progetto",
2924
+ "intakeGitlabProjectHelp": "Il percorso completo del progetto GitLab, sottogruppi inclusi, ad esempio gruppo/sottogruppo/progetto.",
2923
2925
  "intakeBoardId": "ID della board",
2924
2926
  "intakeBoardIdHelp": "La board, il progetto o la coda a cui questo tracker limita l’acquisizione. Il formato è definito dal tracker.",
2925
2927
  "trackerTrigger": "Avvia esecuzioni dai webhook del tracker",
@@ -2931,6 +2933,7 @@
2931
2933
  "intakeLabels": "Etichette",
2932
2934
  "intakeLabelsPlaceholder": "separate da virgole",
2933
2935
  "intakeIssueType": "Tipo di issue",
2936
+ "intakeIssueTypeUnsupported": "{tracker} non ha un tipo di issue che significhi «bug», quindi questa pianificazione non lo applicherà. Restringi la selezione con un’etichetta.",
2934
2937
  "intakeInProgressLabel": "Etichetta in corso",
2935
2938
  "refusalPerTicketRequiresOnDemand": "Una pianificazione attivata dal tracker deve essere su richiesta. Un ciclo a cadenza non porta con sé alcun ticket da assegnare.",
2936
2939
  "refusalPerTicketConflictsWithBugIntake": "Questa pipeline sceglie da sola il proprio problema dalla bacheca, quindi non può essere guidata anche da un ticket in arrivo. Scegli una pipeline senza passaggio di raccolta bug."
@@ -4068,6 +4071,7 @@
4068
4071
  "boardsFailed": "Impossibile caricare le board: {reason}",
4069
4072
  "issueType": "Tipo di ticket",
4070
4073
  "issueTypeHelp": "Per impostazione predefinita bug. Ignorato dai tracker senza tipi di ticket.",
4074
+ "issueTypeUnsupported": "{tracker} non ha un tipo di issue che significhi «bug», quindi questo filtro non viene applicato. Restringi la scansione con un’etichetta.",
4071
4075
  "labels": "Etichette",
4072
4076
  "labelsHelp": "Separate da virgole. Devono essere tutte presenti.",
4073
4077
  "adoptInto": "Aggiungi il bug scelto a",
@@ -5487,7 +5491,8 @@
5487
5491
  "ticket_already_linked": "Questo ticket ha già un'attività",
5488
5492
  "document_already_linked": "Documento già allegato",
5489
5493
  "dry_run_not_mergeable": "Una prova non può essere unita",
5490
- "submission_not_allowed": "Unione non consentita per questa esecuzione"
5494
+ "submission_not_allowed": "Unione non consentita per questa esecuzione",
5495
+ "webhook_limit_reached": "Limite di webhook raggiunto"
5491
5496
  },
5492
5497
  "description": {
5493
5498
  "dependencies_unmet": "Questa attività dipende da altre non ancora completate. Completale o sbloccale, poi avviala di nuovo.",
@@ -5525,7 +5530,8 @@
5525
5530
  "ticket_already_linked": "Un ticket può sostenere una sola attività, quindi ricollegarlo toglierebbe all'attività esistente il contesto con cui è stata creata. Apri invece quell'attività, oppure scollega prima il ticket.",
5526
5531
  "document_already_linked": "Quel documento è allegato a un'altra attività. Scollegalo prima da lì oppure allega una copia separata.",
5527
5532
  "dry_run_not_mergeable": "Questa pull request proviene da una prova, quindi non può essere unita da qui. Riavvia l’attività come esecuzione reale per produrre una pull request che questo spazio di lavoro unirà.",
5528
- "submission_not_allowed": "La politica di unione di questa attività non consente al ruolo che ha avviato l'esecuzione di unire questo tipo di modifica. Un collega il cui ruolo lo consente può farlo, oppure un amministratore può ampliare la politica nel preset di unione."
5533
+ "submission_not_allowed": "La politica di unione di questa attività non consente al ruolo che ha avviato l'esecuzione di unire questo tipo di modifica. Un collega il cui ruolo lo consente può farlo, oppure un amministratore può ampliare la politica nel preset di unione.",
5534
+ "webhook_limit_reached": "Questo spazio di lavoro ha già registrato il numero massimo di webhook in uscita. Rimuovine uno che non ti serve più, poi registra di nuovo questo."
5529
5535
  },
5530
5536
  "action": {
5531
5537
  "connectGitHub": "Collega GitHub",
@@ -347,6 +347,8 @@
347
347
  "intakeNoSources": "課題を取り込むには、まずタスクソースを接続してください。",
348
348
  "intakeNoIntakeSources": "タスクソースは接続されていますが、接続済みのソースはいずれもまだ定期的な課題検索を実行できません。",
349
349
  "intakeGithubRepo": "リポジトリ",
350
+ "intakeGitlabProject": "プロジェクト",
351
+ "intakeGitlabProjectHelp": "GitLab プロジェクトのフルパス。サブグループを含みます (例: group/sub/project)。",
350
352
  "intakeBoardId": "ボード ID",
351
353
  "intakeBoardIdHelp": "このトラッカーが取り込み対象とするボード、プロジェクト、またはキュー。形式はトラッカーが定めます。",
352
354
  "trackerTrigger": "トラッカーの Webhook から実行を開始",
@@ -358,6 +360,7 @@
358
360
  "intakeLabels": "ラベル",
359
361
  "intakeLabelsPlaceholder": "カンマ区切り",
360
362
  "intakeIssueType": "課題タイプ",
363
+ "intakeIssueTypeUnsupported": "{tracker} には「bug」を意味する課題タイプがないため、このスケジュールでは適用されません。代わりにラベルで取得対象を絞り込んでください。",
361
364
  "intakeInProgressLabel": "進行中ラベル",
362
365
  "refusalPerTicketRequiresOnDemand": "トラッカー起動のスケジュールはオンデマンドである必要があります。定期実行のタイミングには、割り当てるチケットがありません。",
363
366
  "refusalPerTicketConflictsWithBugIntake": "このパイプラインはボードから自分で課題を選ぶため、送信されたチケットで駆動することはできません。bug-intake ステップのないパイプラインを選んでください。"
@@ -583,7 +586,8 @@
583
586
  "ticket_already_linked": "この課題にはすでにタスクがあります",
584
587
  "document_already_linked": "ドキュメントは既に添付されています",
585
588
  "dry_run_not_mergeable": "ドライランはマージできません",
586
- "submission_not_allowed": "この実行ではマージできません"
589
+ "submission_not_allowed": "この実行ではマージできません",
590
+ "webhook_limit_reached": "Webhook の上限に達しました"
587
591
  },
588
592
  "description": {
589
593
  "dependencies_unmet": "このタスクは、まだ完了していない他のタスクに依存しています。それらを完了または解除してから、もう一度開始してください。",
@@ -621,7 +625,8 @@
621
625
  "ticket_already_linked": "1 つの課題が支えられるタスクは 1 つだけです。もう一度リンクすると、既存のタスクは作成時の文脈を失います。代わりにそのタスクを開くか、先に課題のリンクを解除してください。",
622
626
  "document_already_linked": "そのドキュメントは別のタスクに添付されています。先にそちらで添付を解除するか、別のコピーを添付してください。",
623
627
  "dry_run_not_mergeable": "このプルリクエストはドライランによるものなので、ここからはマージできません。このワークスペースがマージするプルリクエストを作るには、タスクを通常の実行として開始し直してください。",
624
- "submission_not_allowed": "このタスクのマージポリシーでは、実行を開始したロールがこの種類の変更をマージすることを許可していません。マージできるロールのメンバーが対応するか、管理者がマージプリセットでポリシーを広げてください。"
628
+ "submission_not_allowed": "このタスクのマージポリシーでは、実行を開始したロールがこの種類の変更をマージすることを許可していません。マージできるロールのメンバーが対応するか、管理者がマージプリセットでポリシーを広げてください。",
629
+ "webhook_limit_reached": "このワークスペースには送信 Webhook がすでに上限数まで登録されています。不要なものを削除してから、もう一度登録してください。"
625
630
  },
626
631
  "action": {
627
632
  "connectGitHub": "GitHub に接続",
@@ -4451,6 +4456,7 @@
4451
4456
  "boardsFailed": "ボードを読み込めませんでした: {reason}",
4452
4457
  "issueType": "課題タイプ",
4453
4458
  "issueTypeHelp": "既定は bug です。課題タイプを持たないトラッカーでは無視されます。",
4459
+ "issueTypeUnsupported": "{tracker} には「bug」を意味する課題タイプがないため、このフィルターは適用されません。代わりにラベルでスキャンを絞り込んでください。",
4454
4460
  "labels": "ラベル",
4455
4461
  "labelsHelp": "カンマ区切り。すべて付いている必要があります。",
4456
4462
  "adoptInto": "選んだバグの追加先",
@@ -347,6 +347,8 @@
347
347
  "intakeNoSources": "Najpierw połącz źródło zadań, aby pobierać z niego zgłoszenia.",
348
348
  "intakeNoIntakeSources": "Źródło zadań jest połączone, ale żadne z połączonych źródeł nie może jeszcze uruchomić zaplanowanego wyszukiwania zgłoszeń.",
349
349
  "intakeGithubRepo": "Repozytorium",
350
+ "intakeGitlabProject": "Projekt",
351
+ "intakeGitlabProjectHelp": "Pełna ścieżka projektu GitLab, wraz z podgrupami, np. grupa/podgrupa/projekt.",
350
352
  "intakeBoardId": "ID tablicy",
351
353
  "intakeBoardIdHelp": "Tablica, projekt lub kolejka, do której ten tracker ogranicza pozyskiwanie. Format określa tracker.",
352
354
  "trackerTrigger": "Uruchamiaj przebiegi z webhooków trackera",
@@ -358,6 +360,7 @@
358
360
  "intakeLabels": "Etykiety",
359
361
  "intakeLabelsPlaceholder": "oddzielone przecinkami",
360
362
  "intakeIssueType": "Typ zgłoszenia",
363
+ "intakeIssueTypeUnsupported": "{tracker} nie ma typu zgłoszenia oznaczającego „bug”, więc ten harmonogram go nie zastosuje. Zawęż wybór etykietą.",
361
364
  "intakeInProgressLabel": "Etykieta w toku",
362
365
  "refusalPerTicketRequiresOnDemand": "Harmonogram wyzwalany przez tracker musi być na żądanie. Takt cyklu nie niesie ze sobą żadnego zgłoszenia do przekazania.",
363
366
  "refusalPerTicketConflictsWithBugIntake": "Ten potok sam wybiera zgłoszenie z tablicy, więc nie może być dodatkowo sterowany przesłanym zgłoszeniem. Wybierz potok bez kroku bug-intake."
@@ -583,7 +586,8 @@
583
586
  "ticket_already_linked": "To zgłoszenie ma już zadanie",
584
587
  "document_already_linked": "Dokument jest już załączony",
585
588
  "dry_run_not_mergeable": "Uruchomienia próbnego nie można scalić",
586
- "submission_not_allowed": "Scalanie niedozwolone dla tego uruchomienia"
589
+ "submission_not_allowed": "Scalanie niedozwolone dla tego uruchomienia",
590
+ "webhook_limit_reached": "Osiągnięto limit webhooków"
587
591
  },
588
592
  "description": {
589
593
  "dependencies_unmet": "To zadanie zależy od innych, które nie zostały jeszcze ukończone. Ukończ je lub odblokuj, a następnie uruchom je ponownie.",
@@ -621,7 +625,8 @@
621
625
  "ticket_already_linked": "Zgłoszenie może stać za tylko jednym zadaniem, więc ponowne powiązanie pozbawiłoby istniejące zadanie kontekstu, z którym powstało. Otwórz to zadanie albo najpierw odłącz zgłoszenie.",
622
626
  "document_already_linked": "Ten dokument jest załączony do innego zadania. Najpierw odłącz go tam albo załącz osobną kopię.",
623
627
  "dry_run_not_mergeable": "Ten pull request pochodzi z uruchomienia próbnego, więc nie można go tutaj scalić. Uruchom zadanie ponownie w trybie rzeczywistym, aby powstał pull request, który ta przestrzeń robocza scali.",
624
- "submission_not_allowed": "Polityka scalania tego zadania nie pozwala roli, która rozpoczęła to uruchomienie, scalić tego typu zmiany. Może to zrobić osoba o odpowiedniej roli albo administrator może rozszerzyć politykę w ustawieniu scalania."
628
+ "submission_not_allowed": "Polityka scalania tego zadania nie pozwala roli, która rozpoczęła to uruchomienie, scalić tego typu zmiany. Może to zrobić osoba o odpowiedniej roli albo administrator może rozszerzyć politykę w ustawieniu scalania.",
629
+ "webhook_limit_reached": "Ta przestrzeń robocza ma już zarejestrowaną maksymalną liczbę wychodzących webhooków. Usuń jeden, którego już nie potrzebujesz, a następnie zarejestruj ten ponownie."
625
630
  },
626
631
  "action": {
627
632
  "connectGitHub": "Połącz GitHub",
@@ -4451,6 +4456,7 @@
4451
4456
  "boardsFailed": "Nie udało się wczytać tablic: {reason}",
4452
4457
  "issueType": "Typ zgłoszenia",
4453
4458
  "issueTypeHelp": "Domyślnie bug. Ignorowane przez systemy bez typów zgłoszeń.",
4459
+ "issueTypeUnsupported": "{tracker} nie ma typu zgłoszenia oznaczającego „bug”, więc ten filtr nie jest stosowany. Zawęż skanowanie etykietą.",
4454
4460
  "labels": "Etykiety",
4455
4461
  "labelsHelp": "Oddzielone przecinkami. Wszystkie muszą występować.",
4456
4462
  "adoptInto": "Dodaj wybrany błąd do",
@@ -347,6 +347,8 @@
347
347
  "intakeNoSources": "Sorunları çekmek için önce bir görev kaynağı bağlayın.",
348
348
  "intakeNoIntakeSources": "Bir görev kaynağı bağlı, ancak bağlı kaynakların hiçbiri henüz zamanlanmış bir sorun aramasını çalıştıramıyor.",
349
349
  "intakeGithubRepo": "Depo",
350
+ "intakeGitlabProject": "Proje",
351
+ "intakeGitlabProjectHelp": "GitLab projesinin alt gruplar dahil tam yolu, örneğin grup/altgrup/proje.",
350
352
  "intakeBoardId": "Pano kimliği",
351
353
  "intakeBoardIdHelp": "Bu izleyicinin alımı kapsamlandırdığı pano, proje veya kuyruk. Biçimini izleyici belirler.",
352
354
  "trackerTrigger": "Çalıştırmaları izleyici webhookları ile başlat",
@@ -358,6 +360,7 @@
358
360
  "intakeLabels": "Etiketler",
359
361
  "intakeLabelsPlaceholder": "virgülle ayrılmış",
360
362
  "intakeIssueType": "Sorun türü",
363
+ "intakeIssueTypeUnsupported": "{tracker} “bug” anlamına gelen bir konu türüne sahip değil, bu nedenle bu zamanlama onu uygulamaz. Seçimi bunun yerine bir etiketle daraltın.",
361
364
  "intakeInProgressLabel": "Devam ediyor etiketi",
362
365
  "refusalPerTicketRequiresOnDemand": "İzleyici tetiklemeli bir zamanlama istek üzerine olmalıdır. Döngü tikinin gönderilecek bir kaydı yoktur.",
363
366
  "refusalPerTicketConflictsWithBugIntake": "Bu işlem hattı kendi kaydını panodan seçer, bu nedenle ayrıca gelen bir kayıtla sürülemez. Bug-intake adımı olmayan bir işlem hattı seçin."
@@ -583,7 +586,8 @@
583
586
  "ticket_already_linked": "Bu kayda ait bir görev zaten var",
584
587
  "document_already_linked": "Belge zaten ekli",
585
588
  "dry_run_not_mergeable": "Prova çalışması birleştirilemez",
586
- "submission_not_allowed": "Bu çalışma için birleştirmeye izin verilmiyor"
589
+ "submission_not_allowed": "Bu çalışma için birleştirmeye izin verilmiyor",
590
+ "webhook_limit_reached": "Webhook sınırına ulaşıldı"
587
591
  },
588
592
  "description": {
589
593
  "dependencies_unmet": "Bu görev henüz tamamlanmamış başka görevlere bağlı. Onları tamamla veya engelini kaldır, ardından yeniden başlat.",
@@ -621,7 +625,8 @@
621
625
  "ticket_already_linked": "Bir kayıt yalnızca tek bir görevi besleyebilir; yeniden bağlamak mevcut görevi oluşturulduğu bağlamdan yoksun bırakır. Bunun yerine o görevi açın ya da önce kaydın bağlantısını kaldırın.",
622
626
  "document_already_linked": "Bu belge başka bir göreve ekli. Önce oradan ayırın ya da ayrı bir kopya ekleyin.",
623
627
  "dry_run_not_mergeable": "Bu pull request bir prova çalışmasından geliyor, bu yüzden buradan birleştirilemez. Bu çalışma alanının birleştireceği bir pull request üretmek için görevi gerçek çalışma olarak yeniden başlatın.",
624
- "submission_not_allowed": "Bu görevin birleştirme politikası, çalışmayı başlatan rolün bu tür bir değişikliği birleştirmesine izin vermiyor. Rolü buna izin veren bir takım arkadaşı birleştirebilir ya da bir yönetici birleştirme ön ayarındaki politikayı genişletebilir."
628
+ "submission_not_allowed": "Bu görevin birleştirme politikası, çalışmayı başlatan rolün bu tür bir değişikliği birleştirmesine izin vermiyor. Rolü buna izin veren bir takım arkadaşı birleştirebilir ya da bir yönetici birleştirme ön ayarındaki politikayı genişletebilir.",
629
+ "webhook_limit_reached": "Bu çalışma alanında zaten en fazla sayıda giden webhook kayıtlı. Artık ihtiyaç duymadığınız birini kaldırın ve bunu yeniden kaydedin."
625
630
  },
626
631
  "action": {
627
632
  "connectGitHub": "GitHub'ı bağla",
@@ -4451,6 +4456,7 @@
4451
4456
  "boardsFailed": "Panolar yüklenemedi: {reason}",
4452
4457
  "issueType": "Kayıt türü",
4453
4458
  "issueTypeHelp": "Varsayılan olarak bug. Kayıt türü olmayan araçlarda yok sayılır.",
4459
+ "issueTypeUnsupported": "{tracker} “bug” anlamına gelen bir konu türüne sahip değil, bu nedenle bu filtre uygulanmaz. Taramayı bunun yerine bir etiketle daraltın.",
4454
4460
  "labels": "Etiketler",
4455
4461
  "labelsHelp": "Virgülle ayrılır. Hepsinin bulunması gerekir.",
4456
4462
  "adoptInto": "Seçilen hatayı şuraya ekle",
@@ -347,6 +347,8 @@
347
347
  "intakeNoSources": "Спочатку підключіть джерело завдань, щоб отримувати з нього завдання.",
348
348
  "intakeNoIntakeSources": "Джерело завдань підключено, але жодне з підключених джерел ще не може виконувати заплановий пошук завдань.",
349
349
  "intakeGithubRepo": "Репозиторій",
350
+ "intakeGitlabProject": "Проєкт",
351
+ "intakeGitlabProjectHelp": "Повний шлях проєкту GitLab, включно з підгрупами, напр. group/sub/project.",
350
352
  "intakeBoardId": "ID дошки",
351
353
  "intakeBoardIdHelp": "Дошка, проєкт або черга, якими цей трекер обмежує приймання. Формат визначає трекер.",
352
354
  "trackerTrigger": "Запускати виконання з вебхуків трекера",
@@ -358,6 +360,7 @@
358
360
  "intakeLabels": "Мітки",
359
361
  "intakeLabelsPlaceholder": "через кому",
360
362
  "intakeIssueType": "Тип завдання",
363
+ "intakeIssueTypeUnsupported": "{tracker} не має типу завдання зі значенням «bug», тому цей графік його не застосує. Натомість звузьте відбір міткою.",
361
364
  "intakeInProgressLabel": "Мітка «в роботі»",
362
365
  "refusalPerTicketRequiresOnDemand": "Розклад, запущений трекером, має бути на вимогу. Спрацювання за розкладом не несе жодної заявки для передавання.",
363
366
  "refusalPerTicketConflictsWithBugIntake": "Цей конвеєр сам обирає задачу з дошки, тож його не можна додатково запускати надісланою заявкою. Оберіть конвеєр без кроку bug-intake."
@@ -583,7 +586,8 @@
583
586
  "ticket_already_linked": "У цього тікета вже є завдання",
584
587
  "document_already_linked": "Документ уже прикріплено",
585
588
  "dry_run_not_mergeable": "Пробний запуск не можна злити",
586
- "submission_not_allowed": "Злиття для цього запуску не дозволено"
589
+ "submission_not_allowed": "Злиття для цього запуску не дозволено",
590
+ "webhook_limit_reached": "Досягнуто ліміт вебхуків"
587
591
  },
588
592
  "description": {
589
593
  "dependencies_unmet": "Це завдання залежить від інших, які ще не завершені. Заверши або розблокуй їх, а потім запусти його знову.",
@@ -621,7 +625,8 @@
621
625
  "ticket_already_linked": "Тікет може живити лише одне завдання, тож повторне звʼязування позбавить наявне завдання контексту, з яким його створено. Відкрийте це завдання або спершу відʼєднайте тікет.",
622
626
  "document_already_linked": "Цей документ прикріплено до іншого завдання. Спершу відкріпіть його там або прикріпіть окрему копію.",
623
627
  "dry_run_not_mergeable": "Цей pull request походить із пробного запуску, тому його не можна злити звідси. Запустіть завдання ще раз у звичайному режимі, щоб отримати pull request, який цей робочий простір зіллє.",
624
- "submission_not_allowed": "Політика злиття цього завдання не дозволяє ролі, яка розпочала запуск, зливати такий тип змін. Це може зробити колега з відповідною роллю, або адміністратор може розширити політику в наборі злиття."
628
+ "submission_not_allowed": "Політика злиття цього завдання не дозволяє ролі, яка розпочала запуск, зливати такий тип змін. Це може зробити колега з відповідною роллю, або адміністратор може розширити політику в наборі злиття.",
629
+ "webhook_limit_reached": "У цьому робочому просторі вже зареєстровано максимальну кількість вихідних вебхуків. Видаліть той, який більше не потрібен, і зареєструйте цей знову."
625
630
  },
626
631
  "action": {
627
632
  "connectGitHub": "Під'єднати GitHub",
@@ -4451,6 +4456,7 @@
4451
4456
  "boardsFailed": "Не вдалося завантажити дошки: {reason}",
4452
4457
  "issueType": "Тип запиту",
4453
4458
  "issueTypeHelp": "Типово bug. Ігнорується трекерами без типів запитів.",
4459
+ "issueTypeUnsupported": "{tracker} не має типу завдання зі значенням «bug», тому цей фільтр не застосовується. Натомість звузьте сканування міткою.",
4454
4460
  "labels": "Мітки",
4455
4461
  "labelsHelp": "Через кому. Усі мають бути присутні.",
4456
4462
  "adoptInto": "Додати обрану помилку до",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.245.0",
3
+ "version": "0.247.0",
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",
@@ -40,7 +40,7 @@
40
40
  "valibot": "^1.4.2",
41
41
  "vue": "3.5.40",
42
42
  "wretch": "^3.0.9",
43
- "@cat-factory/contracts": "0.267.0"
43
+ "@cat-factory/contracts": "0.269.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@toad-contracts/testing": "0.3.2",