@cat-factory/app 0.110.2 → 0.110.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/components/board/AddTaskModal.vue +30 -2
- package/app/components/board/RecurringPipelineModal.vue +29 -2
- package/app/components/bootstrap/BootstrapModal.vue +18 -1
- package/app/components/github/AddServiceFromRepoModal.vue +11 -5
- package/app/components/layout/BoardToolbar.vue +43 -0
- package/app/components/panels/DecisionModal.vue +33 -5
- package/app/components/panels/InspectorPanel.vue +22 -2
- package/app/composables/api/board.ts +9 -0
- package/app/composables/useBlockDeletion.ts +49 -1
- package/app/composables/useUnsavedGuard.spec.ts +104 -0
- package/app/composables/useUnsavedGuard.ts +66 -0
- package/app/stores/board.ts +42 -1
- package/app/stores/services.ts +18 -0
- package/app/stores/workspace.ts +1 -0
- package/i18n/locales/de.json +22 -5
- package/i18n/locales/en.json +22 -5
- package/i18n/locales/es.json +21 -4
- package/i18n/locales/fr.json +21 -4
- package/i18n/locales/he.json +21 -4
- package/i18n/locales/it.json +22 -5
- package/i18n/locales/ja.json +21 -4
- package/i18n/locales/pl.json +21 -4
- package/i18n/locales/tr.json +21 -4
- package/i18n/locales/uk.json +21 -4
- package/package.json +2 -2
package/app/stores/board.ts
CHANGED
|
@@ -42,6 +42,10 @@ export const useBoardStore = defineStore('board', () => {
|
|
|
42
42
|
params ?? {},
|
|
43
43
|
)
|
|
44
44
|
const blocks = ref<Block[]>([])
|
|
45
|
+
// Archived service frames (`archived === true`): hidden from the board but preserved and
|
|
46
|
+
// restorable with no expiry. Hydrated from the snapshot's `archivedServices`; the frames
|
|
47
|
+
// themselves are NOT in `blocks` (the snapshot filters an archived frame + its subtree out).
|
|
48
|
+
const archived = ref<Block[]>([])
|
|
45
49
|
|
|
46
50
|
// Pure derivations (hierarchy, status/progress, sizing) live in the composable.
|
|
47
51
|
const queries = useBlockQueries(blocks)
|
|
@@ -117,6 +121,28 @@ export const useBoardStore = defineStore('board', () => {
|
|
|
117
121
|
blocks.value = applyPendingRemovals(reconciled)
|
|
118
122
|
}
|
|
119
123
|
|
|
124
|
+
/** Replace the archived-services list from the snapshot (absent ⇒ none). */
|
|
125
|
+
function hydrateArchived(next: Block[] = []) {
|
|
126
|
+
archived.value = [...next]
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Archive a service (hide it + its subtree, restorable with no expiry) — the non-destructive
|
|
131
|
+
* alternative to deleting a service that still has unfinished tasks. The acting tab isn't
|
|
132
|
+
* echoed its own coarse board event, so re-hydrate explicitly to drop the frame from the board
|
|
133
|
+
* and surface it under the archived list.
|
|
134
|
+
*/
|
|
135
|
+
async function archiveService(id: string) {
|
|
136
|
+
await api.archiveBlock(useWorkspaceStore().requireId(), id)
|
|
137
|
+
await useWorkspaceStore().refresh()
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** Restore an archived service back onto the board. Re-hydrates to pull its subtree back in. */
|
|
141
|
+
async function restoreService(id: string) {
|
|
142
|
+
await api.restoreBlock(useWorkspaceStore().requireId(), id)
|
|
143
|
+
await useWorkspaceStore().refresh()
|
|
144
|
+
}
|
|
145
|
+
|
|
120
146
|
/** Insert or replace a block returned by the backend. */
|
|
121
147
|
function upsert(block: Block) {
|
|
122
148
|
// A live event for a block awaiting its deferred delete must not resurrect it.
|
|
@@ -135,7 +161,10 @@ export const useBoardStore = defineStore('board', () => {
|
|
|
135
161
|
/**
|
|
136
162
|
* Import an existing GitHub repo (the App is installed + it's projected) as a
|
|
137
163
|
* service frame, with no bootstrap run. The backend links the repo to the new
|
|
138
|
-
* frame and returns it `ready`; we upsert it onto the board.
|
|
164
|
+
* frame and returns it `ready`; we upsert it onto the board. When the repo already
|
|
165
|
+
* backs an org service, the backend MOUNTS that shared service here instead of
|
|
166
|
+
* minting a rival — so refresh the snapshot to pull in the shared frame's subtree
|
|
167
|
+
* + its mount layout (a fresh import has no subtree, but the reconcile is harmless).
|
|
139
168
|
*/
|
|
140
169
|
async function addServiceFromRepo(
|
|
141
170
|
repoGithubId: number,
|
|
@@ -154,6 +183,7 @@ export const useBoardStore = defineStore('board', () => {
|
|
|
154
183
|
...(opts?.position ? { position: opts.position } : {}),
|
|
155
184
|
})
|
|
156
185
|
upsert(block)
|
|
186
|
+
await useWorkspaceStore().refresh()
|
|
157
187
|
return block
|
|
158
188
|
}
|
|
159
189
|
|
|
@@ -408,6 +438,13 @@ export const useBoardStore = defineStore('board', () => {
|
|
|
408
438
|
// the window then leaves the run untouched instead of restoring an already-cancelled one.
|
|
409
439
|
await opts.onCommit?.(pending.wsId)
|
|
410
440
|
await api.removeBlock(pending.wsId, id)
|
|
441
|
+
// A service frame's delete also reclaims its account-owned service server-side, but this
|
|
442
|
+
// tab is not echoed its own coarse `board` event, so nothing re-hydrates the service
|
|
443
|
+
// catalog here — drop the deleted service locally so the add-service picker stops flagging
|
|
444
|
+
// its repo as "already on board" (a no-op for a task/module). Only after the commit, so a
|
|
445
|
+
// still-linked repo is never briefly presented as addable.
|
|
446
|
+
if (useWorkspaceStore().workspaceId === pending.wsId)
|
|
447
|
+
useServicesStore().dropByFrameBlock(id)
|
|
411
448
|
// Stop filtering the subtree only after the server has actually dropped it, so a
|
|
412
449
|
// snapshot that raced the in-flight delete can't briefly resurrect it.
|
|
413
450
|
for (const b of pending.snap.removed) pendingDoomed.delete(b.id)
|
|
@@ -573,7 +610,9 @@ export const useBoardStore = defineStore('board', () => {
|
|
|
573
610
|
|
|
574
611
|
return {
|
|
575
612
|
blocks,
|
|
613
|
+
archived,
|
|
576
614
|
hydrate,
|
|
615
|
+
hydrateArchived,
|
|
577
616
|
upsert,
|
|
578
617
|
...queries,
|
|
579
618
|
addBlock,
|
|
@@ -586,6 +625,8 @@ export const useBoardStore = defineStore('board', () => {
|
|
|
586
625
|
detach,
|
|
587
626
|
reattach,
|
|
588
627
|
removeBlock,
|
|
628
|
+
archiveService,
|
|
629
|
+
restoreService,
|
|
589
630
|
previewMove,
|
|
590
631
|
moveBlock,
|
|
591
632
|
updateBlock,
|
package/app/stores/services.ts
CHANGED
|
@@ -46,6 +46,23 @@ export const useServicesStore = defineStore('services', () => {
|
|
|
46
46
|
return (serviceByFrameBlock.value[frameBlockId]?.mountCount ?? 0) > 1
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Drop the account-owned service (and this board's mount) backing a just-deleted frame.
|
|
51
|
+
* The acting tab is deliberately NOT echoed its own coarse `board` event (see
|
|
52
|
+
* `useWorkspaceStream`), so a service-frame delete never triggers a snapshot re-hydrate
|
|
53
|
+
* here — without this the deleted service lingers in `catalog`, which the add-service
|
|
54
|
+
* picker reads to flag a repo as "already on board", so the repo can't be re-added until
|
|
55
|
+
* a full refresh. Called once the delete has COMMITTED server-side (the service is gone),
|
|
56
|
+
* so it can never briefly present a still-linked repo as addable. A no-op for a task/module
|
|
57
|
+
* id (nothing in the catalog matches its frame).
|
|
58
|
+
*/
|
|
59
|
+
function dropByFrameBlock(frameBlockId: string) {
|
|
60
|
+
const service = catalog.value.find((s) => s.frameBlockId === frameBlockId)
|
|
61
|
+
if (!service) return
|
|
62
|
+
catalog.value = catalog.value.filter((s) => s.id !== service.id)
|
|
63
|
+
mounts.value = mounts.value.filter((m) => m.serviceId !== service.id)
|
|
64
|
+
}
|
|
65
|
+
|
|
49
66
|
async function mount(serviceId: string, position?: { x: number; y: number }) {
|
|
50
67
|
const ws = useWorkspaceStore()
|
|
51
68
|
const created = await api.mountService(ws.requireId(), serviceId, position ? { position } : {})
|
|
@@ -79,6 +96,7 @@ export const useServicesStore = defineStore('services', () => {
|
|
|
79
96
|
serviceByFrameBlock,
|
|
80
97
|
mountable,
|
|
81
98
|
isSharedFrame,
|
|
99
|
+
dropByFrameBlock,
|
|
82
100
|
hydrate,
|
|
83
101
|
mount,
|
|
84
102
|
unmount,
|
package/app/stores/workspace.ts
CHANGED
|
@@ -115,6 +115,7 @@ export const useWorkspaceStore = defineStore(
|
|
|
115
115
|
if (i >= 0) workspaces.value[i] = snapshot.workspace
|
|
116
116
|
else workspaces.value.unshift(snapshot.workspace)
|
|
117
117
|
useBoardStore().hydrate(snapshot.blocks)
|
|
118
|
+
useBoardStore().hydrateArchived(snapshot.archivedServices ?? [])
|
|
118
119
|
usePipelinesStore().hydrate(snapshot.pipelines, snapshot.pipelineCatalogVersions)
|
|
119
120
|
useExecutionStore().hydrate(snapshot.executions, snapshot.workspace.id)
|
|
120
121
|
useAgentRunsStore().hydrate(snapshot.bootstrapJobs ?? [], snapshot.workspace.id)
|
package/i18n/locales/de.json
CHANGED
|
@@ -1217,7 +1217,8 @@
|
|
|
1217
1217
|
"decision": {
|
|
1218
1218
|
"title": "Entscheidung erforderlich",
|
|
1219
1219
|
"agentOnBlock": "{agent} auf {block}",
|
|
1220
|
-
"visualizationHint": "Dies ist eine Visualisierung. Jede Wahl setzt einfach die Pipeline fort."
|
|
1220
|
+
"visualizationHint": "Dies ist eine Visualisierung. Jede Wahl setzt einfach die Pipeline fort.",
|
|
1221
|
+
"resolveFailed": "Entscheidung konnte nicht gespeichert werden"
|
|
1221
1222
|
},
|
|
1222
1223
|
"stepRestart": {
|
|
1223
1224
|
"restartFromStep": "Pipeline ab diesem Schritt neu starten",
|
|
@@ -1412,7 +1413,12 @@
|
|
|
1412
1413
|
"viewRequirements": "Anforderungen anzeigen",
|
|
1413
1414
|
"reRun": "Erneut ausführen",
|
|
1414
1415
|
"run": "Ausführen",
|
|
1415
|
-
"focus": "Fokussieren"
|
|
1416
|
+
"focus": "Fokussieren",
|
|
1417
|
+
"archiveService": "Dienst archivieren",
|
|
1418
|
+
"confirmArchive": {
|
|
1419
|
+
"title": "Diesen Dienst archivieren?",
|
|
1420
|
+
"body": "„{name}“ und seine Aufgaben werden vom Board ausgeblendet. Du kannst den Dienst jederzeit wiederherstellen."
|
|
1421
|
+
}
|
|
1416
1422
|
}
|
|
1417
1423
|
},
|
|
1418
1424
|
"layout": {
|
|
@@ -1864,7 +1870,11 @@
|
|
|
1864
1870
|
"unlinkFailed": "Abhängigkeit konnte nicht entfernt werden",
|
|
1865
1871
|
"recurringDeleteFailed": "Wiederkehrende Pipeline konnte nicht gelöscht werden",
|
|
1866
1872
|
"deleted": "\"{name}\" gelöscht",
|
|
1867
|
-
"moved": "\"{name}\" verschoben"
|
|
1873
|
+
"moved": "\"{name}\" verschoben",
|
|
1874
|
+
"archived": "Archiviert: „{name}“",
|
|
1875
|
+
"restored": "Wiederhergestellt: „{name}“",
|
|
1876
|
+
"archiveFailed": "Dienst konnte nicht archiviert werden",
|
|
1877
|
+
"restoreFailed": "Dienst konnte nicht wiederhergestellt werden"
|
|
1868
1878
|
},
|
|
1869
1879
|
"repoTypes": {
|
|
1870
1880
|
"service": "Service",
|
|
@@ -1889,7 +1899,8 @@
|
|
|
1889
1899
|
"zoomOut": "Verkleinern",
|
|
1890
1900
|
"zoomIn": "Vergrößern",
|
|
1891
1901
|
"fitView": "Board an Inhalt anpassen",
|
|
1892
|
-
"resetZoom": "Zoom auf 100 % zurücksetzen"
|
|
1902
|
+
"resetZoom": "Zoom auf 100 % zurücksetzen",
|
|
1903
|
+
"archivedServices": "Archivierte Dienste"
|
|
1893
1904
|
},
|
|
1894
1905
|
"canvas": {
|
|
1895
1906
|
"emptyTitle": "Ihr Board ist leer",
|
|
@@ -3646,7 +3657,13 @@
|
|
|
3646
3657
|
"undo": "Rückgängig",
|
|
3647
3658
|
"back": "Zurück",
|
|
3648
3659
|
"next": "Weiter",
|
|
3649
|
-
"done": "Fertig"
|
|
3660
|
+
"done": "Fertig",
|
|
3661
|
+
"discard": {
|
|
3662
|
+
"title": "Änderungen verwerfen?",
|
|
3663
|
+
"body": "Du hast Änderungen vorgenommen, die noch nicht gespeichert wurden. Schließen und verlieren?",
|
|
3664
|
+
"confirm": "Verwerfen",
|
|
3665
|
+
"keep": "Weiter bearbeiten"
|
|
3666
|
+
}
|
|
3650
3667
|
},
|
|
3651
3668
|
"clarification": {
|
|
3652
3669
|
"answerPlaceholder": "Ihre Antwort",
|
package/i18n/locales/en.json
CHANGED
|
@@ -74,7 +74,13 @@
|
|
|
74
74
|
"undo": "Undo",
|
|
75
75
|
"back": "Back",
|
|
76
76
|
"next": "Next",
|
|
77
|
-
"done": "Done"
|
|
77
|
+
"done": "Done",
|
|
78
|
+
"discard": {
|
|
79
|
+
"title": "Discard your changes?",
|
|
80
|
+
"body": "You've made changes that haven't been saved. Close this and lose them?",
|
|
81
|
+
"confirm": "Discard",
|
|
82
|
+
"keep": "Keep editing"
|
|
83
|
+
}
|
|
78
84
|
},
|
|
79
85
|
"clarification": {
|
|
80
86
|
"answerPlaceholder": "Your answer",
|
|
@@ -124,7 +130,11 @@
|
|
|
124
130
|
"unlinkFailed": "Could not remove dependency",
|
|
125
131
|
"recurringDeleteFailed": "Could not delete recurring pipeline",
|
|
126
132
|
"deleted": "Deleted \"{name}\"",
|
|
127
|
-
"moved": "Moved \"{name}\""
|
|
133
|
+
"moved": "Moved \"{name}\"",
|
|
134
|
+
"archived": "Archived \"{name}\"",
|
|
135
|
+
"restored": "Restored \"{name}\"",
|
|
136
|
+
"archiveFailed": "Couldn't archive the service",
|
|
137
|
+
"restoreFailed": "Couldn't restore the service"
|
|
128
138
|
},
|
|
129
139
|
"repoTypes": {
|
|
130
140
|
"service": "Service",
|
|
@@ -152,7 +162,8 @@
|
|
|
152
162
|
"zoomOut": "Zoom out",
|
|
153
163
|
"zoomIn": "Zoom in",
|
|
154
164
|
"fitView": "Fit board to content",
|
|
155
|
-
"resetZoom": "Reset zoom to 100%"
|
|
165
|
+
"resetZoom": "Reset zoom to 100%",
|
|
166
|
+
"archivedServices": "Archived services"
|
|
156
167
|
},
|
|
157
168
|
"canvas": {
|
|
158
169
|
"emptyTitle": "Your board is empty",
|
|
@@ -956,7 +967,8 @@
|
|
|
956
967
|
"decision": {
|
|
957
968
|
"title": "Decision required",
|
|
958
969
|
"agentOnBlock": "{agent} on {block}",
|
|
959
|
-
"visualizationHint": "This is a visualization. Any choice simply resumes the pipeline."
|
|
970
|
+
"visualizationHint": "This is a visualization. Any choice simply resumes the pipeline.",
|
|
971
|
+
"resolveFailed": "Couldn't record your decision"
|
|
960
972
|
},
|
|
961
973
|
"stepRestart": {
|
|
962
974
|
"restartFromStep": "Restart pipeline from this step",
|
|
@@ -1151,7 +1163,12 @@
|
|
|
1151
1163
|
"viewRequirements": "View Requirements",
|
|
1152
1164
|
"reRun": "Re-run",
|
|
1153
1165
|
"run": "Run",
|
|
1154
|
-
"focus": "Focus"
|
|
1166
|
+
"focus": "Focus",
|
|
1167
|
+
"archiveService": "Archive service",
|
|
1168
|
+
"confirmArchive": {
|
|
1169
|
+
"title": "Archive this service?",
|
|
1170
|
+
"body": "\"{name}\" and its tasks will be hidden from the board. You can restore it at any time."
|
|
1171
|
+
}
|
|
1155
1172
|
}
|
|
1156
1173
|
},
|
|
1157
1174
|
"observability": {
|
package/i18n/locales/es.json
CHANGED
|
@@ -65,7 +65,13 @@
|
|
|
65
65
|
"undo": "Deshacer",
|
|
66
66
|
"back": "Atrás",
|
|
67
67
|
"next": "Siguiente",
|
|
68
|
-
"done": "Listo"
|
|
68
|
+
"done": "Listo",
|
|
69
|
+
"discard": {
|
|
70
|
+
"title": "¿Descartar los cambios?",
|
|
71
|
+
"body": "Has hecho cambios que no se han guardado. ¿Cerrar y perderlos?",
|
|
72
|
+
"confirm": "Descartar",
|
|
73
|
+
"keep": "Seguir editando"
|
|
74
|
+
}
|
|
69
75
|
},
|
|
70
76
|
"clarification": {
|
|
71
77
|
"answerPlaceholder": "Tu respuesta",
|
|
@@ -109,7 +115,11 @@
|
|
|
109
115
|
"unlinkFailed": "No se pudo eliminar la dependencia",
|
|
110
116
|
"recurringDeleteFailed": "No se pudo eliminar el pipeline recurrente",
|
|
111
117
|
"deleted": "\"{name}\" eliminado",
|
|
112
|
-
"moved": "\"{name}\" movido"
|
|
118
|
+
"moved": "\"{name}\" movido",
|
|
119
|
+
"archived": "Archivado «{name}»",
|
|
120
|
+
"restored": "Restaurado «{name}»",
|
|
121
|
+
"archiveFailed": "No se pudo archivar el servicio",
|
|
122
|
+
"restoreFailed": "No se pudo restaurar el servicio"
|
|
113
123
|
},
|
|
114
124
|
"repoTypes": {
|
|
115
125
|
"service": "Servicio",
|
|
@@ -134,7 +144,8 @@
|
|
|
134
144
|
"zoomOut": "Alejar",
|
|
135
145
|
"zoomIn": "Acercar",
|
|
136
146
|
"fitView": "Ajustar al contenido",
|
|
137
|
-
"resetZoom": "Restablecer zoom al 100%"
|
|
147
|
+
"resetZoom": "Restablecer zoom al 100%",
|
|
148
|
+
"archivedServices": "Servicios archivados"
|
|
138
149
|
},
|
|
139
150
|
"canvas": {
|
|
140
151
|
"emptyTitle": "Tu tablero está vacío",
|
|
@@ -902,7 +913,8 @@
|
|
|
902
913
|
"decision": {
|
|
903
914
|
"title": "Se requiere una decisión",
|
|
904
915
|
"agentOnBlock": "{agent} en {block}",
|
|
905
|
-
"visualizationHint": "Esto es una visualización. Cualquier elección simplemente reanuda el pipeline."
|
|
916
|
+
"visualizationHint": "Esto es una visualización. Cualquier elección simplemente reanuda el pipeline.",
|
|
917
|
+
"resolveFailed": "No se pudo registrar tu decisión"
|
|
906
918
|
},
|
|
907
919
|
"stepRestart": {
|
|
908
920
|
"restartFromStep": "Reiniciar el pipeline desde este paso",
|
|
@@ -1097,6 +1109,11 @@
|
|
|
1097
1109
|
"body": "Se eliminarán \"{name}\", su programación y su historial de ejecución. Esta acción no se puede deshacer."
|
|
1098
1110
|
},
|
|
1099
1111
|
"containerBodyWithCount": "Se eliminará \"{name}\" y el {count} elemento que contiene. Esta acción no se puede deshacer. | Se eliminará \"{name}\" y los {count} elementos que contiene. Esta acción no se puede deshacer."
|
|
1112
|
+
},
|
|
1113
|
+
"archiveService": "Archivar servicio",
|
|
1114
|
+
"confirmArchive": {
|
|
1115
|
+
"title": "¿Archivar este servicio?",
|
|
1116
|
+
"body": "«{name}» y sus tareas se ocultarán del tablero. Puedes restaurarlo en cualquier momento."
|
|
1100
1117
|
}
|
|
1101
1118
|
}
|
|
1102
1119
|
},
|
package/i18n/locales/fr.json
CHANGED
|
@@ -65,7 +65,13 @@
|
|
|
65
65
|
"undo": "Annuler",
|
|
66
66
|
"back": "Retour",
|
|
67
67
|
"next": "Suivant",
|
|
68
|
-
"done": "Terminé"
|
|
68
|
+
"done": "Terminé",
|
|
69
|
+
"discard": {
|
|
70
|
+
"title": "Ignorer vos modifications ?",
|
|
71
|
+
"body": "Vous avez effectué des modifications non enregistrées. Fermer et les perdre ?",
|
|
72
|
+
"confirm": "Ignorer",
|
|
73
|
+
"keep": "Continuer l'édition"
|
|
74
|
+
}
|
|
69
75
|
},
|
|
70
76
|
"clarification": {
|
|
71
77
|
"answerPlaceholder": "Votre réponse",
|
|
@@ -109,7 +115,11 @@
|
|
|
109
115
|
"unlinkFailed": "Impossible de supprimer la dépendance",
|
|
110
116
|
"recurringDeleteFailed": "Impossible de supprimer le pipeline récurrent",
|
|
111
117
|
"deleted": "\"{name}\" supprimé",
|
|
112
|
-
"moved": "\"{name}\" déplacé"
|
|
118
|
+
"moved": "\"{name}\" déplacé",
|
|
119
|
+
"archived": "Archivé « {name} »",
|
|
120
|
+
"restored": "Restauré « {name} »",
|
|
121
|
+
"archiveFailed": "Impossible d'archiver le service",
|
|
122
|
+
"restoreFailed": "Impossible de restaurer le service"
|
|
113
123
|
},
|
|
114
124
|
"repoTypes": {
|
|
115
125
|
"service": "Service",
|
|
@@ -134,7 +144,8 @@
|
|
|
134
144
|
"zoomOut": "Dézoomer",
|
|
135
145
|
"zoomIn": "Zoomer",
|
|
136
146
|
"fitView": "Ajuster au contenu",
|
|
137
|
-
"resetZoom": "Réinitialiser le zoom à 100 %"
|
|
147
|
+
"resetZoom": "Réinitialiser le zoom à 100 %",
|
|
148
|
+
"archivedServices": "Services archivés"
|
|
138
149
|
},
|
|
139
150
|
"canvas": {
|
|
140
151
|
"emptyTitle": "Votre tableau est vide",
|
|
@@ -902,7 +913,8 @@
|
|
|
902
913
|
"decision": {
|
|
903
914
|
"title": "Décision requise",
|
|
904
915
|
"agentOnBlock": "{agent} sur {block}",
|
|
905
|
-
"visualizationHint": "Ceci est une visualisation. Tout choix reprend simplement le pipeline."
|
|
916
|
+
"visualizationHint": "Ceci est une visualisation. Tout choix reprend simplement le pipeline.",
|
|
917
|
+
"resolveFailed": "Impossible d'enregistrer votre décision"
|
|
906
918
|
},
|
|
907
919
|
"stepRestart": {
|
|
908
920
|
"restartFromStep": "Redémarrer le pipeline à partir de cette étape",
|
|
@@ -1097,6 +1109,11 @@
|
|
|
1097
1109
|
"body": "\"{name}\", sa planification et son historique d'exécution seront supprimés. Cette action est irréversible."
|
|
1098
1110
|
},
|
|
1099
1111
|
"containerBodyWithCount": "\"{name}\" et le {count} élément qu'il contient seront supprimés. Cette action est irréversible. | \"{name}\" et les {count} éléments qu'il contient seront supprimés. Cette action est irréversible."
|
|
1112
|
+
},
|
|
1113
|
+
"archiveService": "Archiver le service",
|
|
1114
|
+
"confirmArchive": {
|
|
1115
|
+
"title": "Archiver ce service ?",
|
|
1116
|
+
"body": "« {name} » et ses tâches seront masqués du tableau. Vous pouvez le restaurer à tout moment."
|
|
1100
1117
|
}
|
|
1101
1118
|
}
|
|
1102
1119
|
},
|
package/i18n/locales/he.json
CHANGED
|
@@ -65,7 +65,13 @@
|
|
|
65
65
|
"undo": "בטל",
|
|
66
66
|
"back": "חזרה",
|
|
67
67
|
"next": "הבא",
|
|
68
|
-
"done": "סיום"
|
|
68
|
+
"done": "סיום",
|
|
69
|
+
"discard": {
|
|
70
|
+
"title": "לבטל את השינויים?",
|
|
71
|
+
"body": "ביצעת שינויים שלא נשמרו. לסגור ולאבד אותם?",
|
|
72
|
+
"confirm": "לבטל",
|
|
73
|
+
"keep": "להמשיך לערוך"
|
|
74
|
+
}
|
|
69
75
|
},
|
|
70
76
|
"clarification": {
|
|
71
77
|
"answerPlaceholder": "התשובה שלך",
|
|
@@ -109,7 +115,11 @@
|
|
|
109
115
|
"unlinkFailed": "לא ניתן להסיר את התלות",
|
|
110
116
|
"recurringDeleteFailed": "לא ניתן היה למחוק את הצינור החוזר",
|
|
111
117
|
"deleted": "\"{name}\" נמחק",
|
|
112
|
-
"moved": "\"{name}\" הועבר"
|
|
118
|
+
"moved": "\"{name}\" הועבר",
|
|
119
|
+
"archived": "הועבר לארכיון: \"{name}\"",
|
|
120
|
+
"restored": "שוחזר: \"{name}\"",
|
|
121
|
+
"archiveFailed": "לא ניתן להעביר את השירות לארכיון",
|
|
122
|
+
"restoreFailed": "לא ניתן לשחזר את השירות"
|
|
113
123
|
},
|
|
114
124
|
"repoTypes": {
|
|
115
125
|
"service": "שירות",
|
|
@@ -134,7 +144,8 @@
|
|
|
134
144
|
"zoomOut": "הקטנה",
|
|
135
145
|
"zoomIn": "הגדלה",
|
|
136
146
|
"fitView": "התאמה לתוכן",
|
|
137
|
-
"resetZoom": "איפוס התקריב ל-100%"
|
|
147
|
+
"resetZoom": "איפוס התקריב ל-100%",
|
|
148
|
+
"archivedServices": "שירותים בארכיון"
|
|
138
149
|
},
|
|
139
150
|
"canvas": {
|
|
140
151
|
"emptyTitle": "הלוח שלך ריק",
|
|
@@ -902,7 +913,8 @@
|
|
|
902
913
|
"decision": {
|
|
903
914
|
"title": "נדרשת החלטה",
|
|
904
915
|
"agentOnBlock": "{agent} על {block}",
|
|
905
|
-
"visualizationHint": "זוהי הצגה חזותית. כל בחירה פשוט ממשיכה את הצינור."
|
|
916
|
+
"visualizationHint": "זוהי הצגה חזותית. כל בחירה פשוט ממשיכה את הצינור.",
|
|
917
|
+
"resolveFailed": "לא ניתן היה לשמור את ההחלטה שלך"
|
|
906
918
|
},
|
|
907
919
|
"stepRestart": {
|
|
908
920
|
"restartFromStep": "הפעל מחדש את הצינור משלב זה",
|
|
@@ -1097,6 +1109,11 @@
|
|
|
1097
1109
|
"body": "\"{name}\", התזמון שלו והיסטוריית ההרצות יימחקו. לא ניתן לבטל פעולה זו."
|
|
1098
1110
|
},
|
|
1099
1111
|
"containerBodyWithCount": "\"{name}\" ו-{count} פריט שבתוכו יימחקו. לא ניתן לבטל פעולה זו. | \"{name}\" ו-{count} פריטים שבתוכו יימחקו. לא ניתן לבטל פעולה זו."
|
|
1112
|
+
},
|
|
1113
|
+
"archiveService": "העברת שירות לארכיון",
|
|
1114
|
+
"confirmArchive": {
|
|
1115
|
+
"title": "להעביר שירות זה לארכיון?",
|
|
1116
|
+
"body": "\"{name}\" והמשימות שלו יוסתרו מהלוח. אפשר לשחזר אותו בכל עת."
|
|
1100
1117
|
}
|
|
1101
1118
|
}
|
|
1102
1119
|
},
|
package/i18n/locales/it.json
CHANGED
|
@@ -1217,7 +1217,8 @@
|
|
|
1217
1217
|
"decision": {
|
|
1218
1218
|
"title": "Decisione richiesta",
|
|
1219
1219
|
"agentOnBlock": "{agent} su {block}",
|
|
1220
|
-
"visualizationHint": "Questa e' una visualizzazione. Qualsiasi scelta riprende semplicemente la pipeline."
|
|
1220
|
+
"visualizationHint": "Questa e' una visualizzazione. Qualsiasi scelta riprende semplicemente la pipeline.",
|
|
1221
|
+
"resolveFailed": "Impossibile registrare la tua decisione"
|
|
1221
1222
|
},
|
|
1222
1223
|
"stepRestart": {
|
|
1223
1224
|
"restartFromStep": "Riavvia la pipeline da questo passaggio",
|
|
@@ -1412,7 +1413,12 @@
|
|
|
1412
1413
|
"viewRequirements": "Visualizza requisiti",
|
|
1413
1414
|
"reRun": "Riesegui",
|
|
1414
1415
|
"run": "Esegui",
|
|
1415
|
-
"focus": "Metti a fuoco"
|
|
1416
|
+
"focus": "Metti a fuoco",
|
|
1417
|
+
"archiveService": "Archivia servizio",
|
|
1418
|
+
"confirmArchive": {
|
|
1419
|
+
"title": "Archiviare questo servizio?",
|
|
1420
|
+
"body": "\"{name}\" e le sue attività verranno nascosti dalla board. Puoi ripristinarlo in qualsiasi momento."
|
|
1421
|
+
}
|
|
1416
1422
|
}
|
|
1417
1423
|
},
|
|
1418
1424
|
"layout": {
|
|
@@ -1864,7 +1870,11 @@
|
|
|
1864
1870
|
"unlinkFailed": "Impossibile rimuovere la dipendenza",
|
|
1865
1871
|
"recurringDeleteFailed": "Impossibile eliminare la pipeline ricorrente",
|
|
1866
1872
|
"deleted": "Eliminato \"{name}\"",
|
|
1867
|
-
"moved": "Spostato \"{name}\""
|
|
1873
|
+
"moved": "Spostato \"{name}\"",
|
|
1874
|
+
"archived": "Archiviato \"{name}\"",
|
|
1875
|
+
"restored": "Ripristinato \"{name}\"",
|
|
1876
|
+
"archiveFailed": "Impossibile archiviare il servizio",
|
|
1877
|
+
"restoreFailed": "Impossibile ripristinare il servizio"
|
|
1868
1878
|
},
|
|
1869
1879
|
"repoTypes": {
|
|
1870
1880
|
"service": "Servizio",
|
|
@@ -1889,7 +1899,8 @@
|
|
|
1889
1899
|
"zoomOut": "Riduci lo zoom",
|
|
1890
1900
|
"zoomIn": "Aumenta lo zoom",
|
|
1891
1901
|
"fitView": "Adatta la board al contenuto",
|
|
1892
|
-
"resetZoom": "Reimposta lo zoom al 100%"
|
|
1902
|
+
"resetZoom": "Reimposta lo zoom al 100%",
|
|
1903
|
+
"archivedServices": "Servizi archiviati"
|
|
1893
1904
|
},
|
|
1894
1905
|
"canvas": {
|
|
1895
1906
|
"emptyTitle": "La tua board è vuota",
|
|
@@ -3646,7 +3657,13 @@
|
|
|
3646
3657
|
"undo": "Annulla",
|
|
3647
3658
|
"back": "Indietro",
|
|
3648
3659
|
"next": "Avanti",
|
|
3649
|
-
"done": "Fatto"
|
|
3660
|
+
"done": "Fatto",
|
|
3661
|
+
"discard": {
|
|
3662
|
+
"title": "Ignorare le modifiche?",
|
|
3663
|
+
"body": "Hai apportato modifiche non salvate. Chiudere e perderle?",
|
|
3664
|
+
"confirm": "Ignora",
|
|
3665
|
+
"keep": "Continua a modificare"
|
|
3666
|
+
}
|
|
3650
3667
|
},
|
|
3651
3668
|
"clarification": {
|
|
3652
3669
|
"answerPlaceholder": "La tua risposta",
|
package/i18n/locales/ja.json
CHANGED
|
@@ -65,7 +65,13 @@
|
|
|
65
65
|
"undo": "元に戻す",
|
|
66
66
|
"back": "戻る",
|
|
67
67
|
"next": "次へ",
|
|
68
|
-
"done": "完了"
|
|
68
|
+
"done": "完了",
|
|
69
|
+
"discard": {
|
|
70
|
+
"title": "変更を破棄しますか?",
|
|
71
|
+
"body": "保存されていない変更があります。閉じて破棄しますか?",
|
|
72
|
+
"confirm": "破棄",
|
|
73
|
+
"keep": "編集を続ける"
|
|
74
|
+
}
|
|
69
75
|
},
|
|
70
76
|
"clarification": {
|
|
71
77
|
"answerPlaceholder": "回答を入力",
|
|
@@ -109,7 +115,11 @@
|
|
|
109
115
|
"unlinkFailed": "依存関係を削除できませんでした",
|
|
110
116
|
"recurringDeleteFailed": "定期パイプラインを削除できませんでした",
|
|
111
117
|
"deleted": "\"{name}\" を削除しました",
|
|
112
|
-
"moved": "\"{name}\" を移動しました"
|
|
118
|
+
"moved": "\"{name}\" を移動しました",
|
|
119
|
+
"archived": "「{name}」をアーカイブしました",
|
|
120
|
+
"restored": "「{name}」を復元しました",
|
|
121
|
+
"archiveFailed": "サービスをアーカイブできませんでした",
|
|
122
|
+
"restoreFailed": "サービスを復元できませんでした"
|
|
113
123
|
},
|
|
114
124
|
"repoTypes": {
|
|
115
125
|
"service": "サービス",
|
|
@@ -134,7 +144,8 @@
|
|
|
134
144
|
"zoomOut": "縮小",
|
|
135
145
|
"zoomIn": "拡大",
|
|
136
146
|
"fitView": "内容に合わせる",
|
|
137
|
-
"resetZoom": "ズームを100%にリセット"
|
|
147
|
+
"resetZoom": "ズームを100%にリセット",
|
|
148
|
+
"archivedServices": "アーカイブ済みサービス"
|
|
138
149
|
},
|
|
139
150
|
"canvas": {
|
|
140
151
|
"emptyTitle": "ボードが空です",
|
|
@@ -902,7 +913,8 @@
|
|
|
902
913
|
"decision": {
|
|
903
914
|
"title": "判断が必要",
|
|
904
915
|
"agentOnBlock": "{block} の {agent}",
|
|
905
|
-
"visualizationHint": "これは可視化です。どの選択でもパイプラインを再開するだけです。"
|
|
916
|
+
"visualizationHint": "これは可視化です。どの選択でもパイプラインを再開するだけです。",
|
|
917
|
+
"resolveFailed": "決定を記録できませんでした"
|
|
906
918
|
},
|
|
907
919
|
"stepRestart": {
|
|
908
920
|
"restartFromStep": "このステップからパイプラインを再開",
|
|
@@ -1097,6 +1109,11 @@
|
|
|
1097
1109
|
"body": "「{name}」、そのスケジュール、実行履歴が削除されます。この操作は取り消せません。"
|
|
1098
1110
|
},
|
|
1099
1111
|
"containerBodyWithCount": "「{name}」とその中の {count} 件の項目が削除されます。この操作は取り消せません。 | 「{name}」とその中の {count} 件の項目が削除されます。この操作は取り消せません。"
|
|
1112
|
+
},
|
|
1113
|
+
"archiveService": "サービスをアーカイブ",
|
|
1114
|
+
"confirmArchive": {
|
|
1115
|
+
"title": "このサービスをアーカイブしますか?",
|
|
1116
|
+
"body": "「{name}」とそのタスクはボードから非表示になります。いつでも復元できます。"
|
|
1100
1117
|
}
|
|
1101
1118
|
}
|
|
1102
1119
|
},
|
package/i18n/locales/pl.json
CHANGED
|
@@ -65,7 +65,13 @@
|
|
|
65
65
|
"undo": "Cofnij",
|
|
66
66
|
"back": "Wstecz",
|
|
67
67
|
"next": "Dalej",
|
|
68
|
-
"done": "Gotowe"
|
|
68
|
+
"done": "Gotowe",
|
|
69
|
+
"discard": {
|
|
70
|
+
"title": "Odrzucić zmiany?",
|
|
71
|
+
"body": "Masz niezapisane zmiany. Zamknąć i je utracić?",
|
|
72
|
+
"confirm": "Odrzuć",
|
|
73
|
+
"keep": "Kontynuuj edycję"
|
|
74
|
+
}
|
|
69
75
|
},
|
|
70
76
|
"clarification": {
|
|
71
77
|
"answerPlaceholder": "Twoja odpowiedź",
|
|
@@ -109,7 +115,11 @@
|
|
|
109
115
|
"unlinkFailed": "Nie udało się usunąć zależności",
|
|
110
116
|
"recurringDeleteFailed": "Nie udało się usunąć cyklicznego pipeline'u",
|
|
111
117
|
"deleted": "Usunięto \"{name}\"",
|
|
112
|
-
"moved": "Przeniesiono \"{name}\""
|
|
118
|
+
"moved": "Przeniesiono \"{name}\"",
|
|
119
|
+
"archived": "Zarchiwizowano „{name}”",
|
|
120
|
+
"restored": "Przywrócono „{name}”",
|
|
121
|
+
"archiveFailed": "Nie udało się zarchiwizować usługi",
|
|
122
|
+
"restoreFailed": "Nie udało się przywrócić usługi"
|
|
113
123
|
},
|
|
114
124
|
"repoTypes": {
|
|
115
125
|
"service": "Usługa",
|
|
@@ -134,7 +144,8 @@
|
|
|
134
144
|
"zoomOut": "Pomniejsz",
|
|
135
145
|
"zoomIn": "Powiększ",
|
|
136
146
|
"fitView": "Dopasuj do zawartości",
|
|
137
|
-
"resetZoom": "Zresetuj powiększenie do 100%"
|
|
147
|
+
"resetZoom": "Zresetuj powiększenie do 100%",
|
|
148
|
+
"archivedServices": "Zarchiwizowane usługi"
|
|
138
149
|
},
|
|
139
150
|
"canvas": {
|
|
140
151
|
"emptyTitle": "Twoja tablica jest pusta",
|
|
@@ -902,7 +913,8 @@
|
|
|
902
913
|
"decision": {
|
|
903
914
|
"title": "Wymagana decyzja",
|
|
904
915
|
"agentOnBlock": "{agent} na {block}",
|
|
905
|
-
"visualizationHint": "To jest wizualizacja. Każdy wybór po prostu wznawia potok."
|
|
916
|
+
"visualizationHint": "To jest wizualizacja. Każdy wybór po prostu wznawia potok.",
|
|
917
|
+
"resolveFailed": "Nie udało się zapisać decyzji"
|
|
906
918
|
},
|
|
907
919
|
"stepRestart": {
|
|
908
920
|
"restartFromStep": "Uruchom ponownie potok od tego kroku",
|
|
@@ -1097,6 +1109,11 @@
|
|
|
1097
1109
|
"body": "\"{name}\", jego harmonogram i historia uruchomień zostaną usunięte. Tej operacji nie można cofnąć."
|
|
1098
1110
|
},
|
|
1099
1111
|
"containerBodyWithCount": "\"{name}\" i {count} element w środku zostaną usunięte. Tej operacji nie można cofnąć. | \"{name}\" i {count} elementy w środku zostaną usunięte. Tej operacji nie można cofnąć. | \"{name}\" i {count} elementów w środku zostanie usuniętych. Tej operacji nie można cofnąć."
|
|
1112
|
+
},
|
|
1113
|
+
"archiveService": "Archiwizuj usługę",
|
|
1114
|
+
"confirmArchive": {
|
|
1115
|
+
"title": "Zarchiwizować tę usługę?",
|
|
1116
|
+
"body": "„{name}” i jej zadania zostaną ukryte z tablicy. Możesz przywrócić usługę w dowolnej chwili."
|
|
1100
1117
|
}
|
|
1101
1118
|
}
|
|
1102
1119
|
},
|