@cat-factory/app 0.247.0 → 0.249.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/app/components/board/AddTaskModal.vue +1 -0
  2. package/app/components/board/nodes/BlockNode.vue +24 -0
  3. package/app/components/context/ContextAttachmentFields.vue +102 -0
  4. package/app/components/context/pastedLinkOffer.logic.spec.ts +35 -0
  5. package/app/components/context/pastedLinkOffer.logic.ts +50 -0
  6. package/app/components/documents/DocumentSourceConnectModal.vue +50 -0
  7. package/app/components/documents/SpawnPreviewModal.vue +92 -16
  8. package/app/components/documents/StartFromDesignModal.vue +237 -0
  9. package/app/components/environments/EnvironmentSetupWizard.vue +1 -1
  10. package/app/components/environments/steps/JourneyStepNav.vue +1 -1
  11. package/app/components/layout/AccountDeploymentSettings.vue +122 -0
  12. package/app/components/layout/BoardToolbar.vue +1 -1
  13. package/app/components/layout/CommandBar.vue +1 -1
  14. package/app/components/layout/SideBar.vue +2 -2
  15. package/app/components/merge/MergeEffortChips.vue +1 -1
  16. package/app/components/panels/InspectorPanel.vue +1 -1
  17. package/app/components/panels/ResultWindowShell.vue +2 -2
  18. package/app/components/panels/StepResultViewHost.vue +1 -1
  19. package/app/components/panels/inspector/TaskRunSettings.vue +1 -1
  20. package/app/components/settings/MergeClassRulesEditor.vue +1 -1
  21. package/app/composables/api/documents.ts +17 -6
  22. package/app/composables/useDocumentSourceConnect.ts +88 -0
  23. package/app/modular/agent-kinds.ts +1 -1
  24. package/app/modular/external-tools.spec.ts +1 -0
  25. package/app/modular/journeys/environmentSetup.logic.ts +1 -1
  26. package/app/modular/journeys/environmentSetup.ts +1 -1
  27. package/app/modular/journeys/persistence.ts +1 -1
  28. package/app/modular/nav-contributions.spec.ts +2 -0
  29. package/app/modular/nav-contributions.ts +11 -1
  30. package/app/modular/nav-gates.ts +4 -0
  31. package/app/modular/panels/inspector.logic.ts +1 -1
  32. package/app/modular/registry.spec.ts +1 -0
  33. package/app/modular/registry.ts +1 -1
  34. package/app/modular/result-views.ts +1 -1
  35. package/app/modular/slots.ts +1 -1
  36. package/app/modular/tutorial-tours.spec.ts +5 -0
  37. package/app/modular/tutorial-tours.ts +77 -0
  38. package/app/pages/index.vue +4 -0
  39. package/app/plugins/modular.client.ts +1 -1
  40. package/app/stores/agents.ts +1 -1
  41. package/app/stores/documents.spec.ts +60 -0
  42. package/app/stores/documents.ts +52 -24
  43. package/app/stores/environmentWizard.ts +1 -1
  44. package/app/stores/publicApiKeys.spec.ts +1 -0
  45. package/app/stores/ui/modals.ts +15 -0
  46. package/app/utils/modular.ts +1 -1
  47. package/i18n/locales/de.json +82 -6
  48. package/i18n/locales/en.json +82 -6
  49. package/i18n/locales/es.json +82 -6
  50. package/i18n/locales/fr.json +82 -6
  51. package/i18n/locales/he.json +82 -6
  52. package/i18n/locales/it.json +82 -6
  53. package/i18n/locales/ja.json +82 -6
  54. package/i18n/locales/pl.json +82 -6
  55. package/i18n/locales/tr.json +82 -6
  56. package/i18n/locales/uk.json +82 -6
  57. package/package.json +2 -2
@@ -2198,6 +2198,18 @@
2198
2198
  "keysValidation": "Geben Sie die S3-Access Key ID und das Secret ein",
2199
2199
  "saved": "Inhaltsspeicher gespeichert",
2200
2200
  "saveFailed": "Inhaltsspeicher konnte nicht gespeichert werden"
2201
+ },
2202
+ "figma": {
2203
+ "title": "Figma-App (OAuth)",
2204
+ "description": "Aktiviert den Ablauf „Mit Figma verbinden“. Ohne ihn können Workspaces Figma weiterhin mit einem persönlichen Zugriffstoken verbinden.",
2205
+ "clientId": "Client-ID",
2206
+ "clientSecret": "Client-Secret",
2207
+ "redirectUrl": "Redirect-URL",
2208
+ "validation": "Client-ID, Secret und Redirect-URL eingeben",
2209
+ "saved": "Figma-OAuth gespeichert",
2210
+ "saveFailed": "Figma-OAuth konnte nicht gespeichert werden",
2211
+ "cleared": "Figma-OAuth gelöscht",
2212
+ "clearFailed": "Figma-OAuth konnte nicht gelöscht werden"
2201
2213
  }
2202
2214
  },
2203
2215
  "accountFragments": {
@@ -3003,7 +3015,8 @@
3003
3015
  "accessDenied": {
3004
3016
  "title": "Zugriff verweigert",
3005
3017
  "hint": "Sie haben keinen Zugriff auf das Repository, das diesem Service zugrunde liegt."
3006
- }
3018
+ },
3019
+ "startFromDesignTitle": "Mit einem Design starten"
3007
3020
  },
3008
3021
  "decisionBadge": {
3009
3022
  "decisionNeeded": "Entscheidung erforderlich",
@@ -3075,7 +3088,11 @@
3075
3088
  "attachIssueDisabledConnect": "Verbinden Sie zuerst einen Issue-Tracker (Integrationen)",
3076
3089
  "attachIssueDisabledEnable": "Aktivieren Sie zuerst die Issue-Tracker-Integration",
3077
3090
  "importsOnAdd": "importiert beim Hinzufügen",
3078
- "unreadable": "Konnte nicht abgerufen werden: {error}"
3091
+ "unreadable": "Konnte nicht abgerufen werden: {error}",
3092
+ "pastedLink": {
3093
+ "offer": "Diese Beschreibung verlinkt eine {source}-Seite. Als Kontext anhängen?",
3094
+ "attach": "Anhängen"
3095
+ }
3079
3096
  },
3080
3097
  "providers": {
3081
3098
  "presetMismatch": {
@@ -3921,13 +3938,19 @@
3921
3938
  "connect": {
3922
3939
  "title": "Quelle verbinden",
3923
3940
  "sourceFallback": "Quelle",
3924
- "intro": "Verbinden Sie {source}, um Anforderungen, RFCs und PRDs zu importieren, und erzeugen Sie dann Board-Struktur oder hängen Sie sie als Agent-Kontext an Aufgaben an.",
3941
+ "intro": "Verbinde {source}, um Seiten und Designs auf dieses Board zu holen: importieren, in Board-Struktur ausklappen oder als Agent-Kontext an eine Aufgabe hängen.",
3925
3942
  "disconnect": "Trennen",
3926
3943
  "connect": "Verbinden",
3927
3944
  "update": "Verbindung aktualisieren",
3928
3945
  "connected": "{source} verbunden",
3929
3946
  "disconnected": "{source} getrennt",
3930
- "connectFailed": "Verbindung nicht möglich"
3947
+ "connectFailed": "Verbindung nicht möglich",
3948
+ "oauth": {
3949
+ "action": "Mit {source} verbinden",
3950
+ "scopes": "Du wirst um folgende Berechtigungen gebeten: {scopes}",
3951
+ "fallback": "Lieber ein Token? Nutze stattdessen die Felder unten.",
3952
+ "failed": "Die Anmeldung bei {source} konnte nicht gestartet werden"
3953
+ }
3931
3954
  },
3932
3955
  "spawn": {
3933
3956
  "title": "Struktur-Vorschau",
@@ -3942,7 +3965,15 @@
3942
3965
  "summary": "{frames} · {modules} · {tasks}",
3943
3966
  "frameCount": "{count} Frame | {count} Frames",
3944
3967
  "moduleCount": "{count} Modul | {count} Module",
3945
- "taskCount": "{count} Aufgabe | {count} Aufgaben"
3968
+ "taskCount": "{count} Aufgabe | {count} Aufgaben",
3969
+ "reusedCount": "{count} Modul wiederverwendet | {count} Module wiederverwendet",
3970
+ "intoService": "innerhalb des gewählten Service",
3971
+ "target": {
3972
+ "label": "Zu Service hinzufügen",
3973
+ "help": "Ein Design beschreibt Screens, keine Architektur. Der Plan schlägt deshalb Arbeit innerhalb eines bereits vorhandenen Service vor.",
3974
+ "placeholder": "Service wählen",
3975
+ "required": "Wähle den Service, zu dem dieses Design gehört."
3976
+ }
3946
3977
  },
3947
3978
  "taskDocs": {
3948
3979
  "heading": "Kontextdokumente",
@@ -3975,6 +4006,20 @@
3975
4006
  "remove": "Entfernen",
3976
4007
  "linkFailed": "Die Dokumentverknüpfung konnte nicht aktualisiert werden",
3977
4008
  "loadFailed": "Dokumentvorlagen konnten nicht geladen werden"
4009
+ },
4010
+ "startFromDesign": {
4011
+ "title": "Mit einem Design starten",
4012
+ "intro": "Füge den Link zu einem Frame oder einer ganzen Datei ein. Er wird an die neue Aufgabe gehängt, und der Agent liest Layout, Texte, Komponenten und Tokens.",
4013
+ "noSource": "Noch keine Design-Quelle verbunden. Ein Admin kann Figma oder Zeplin unter Integrationen verbinden.",
4014
+ "linkLabel": "Design-Link",
4015
+ "linkPlaceholder": "https://www.figma.com/design/…?node-id=1-2",
4016
+ "checking": "Link wird geprüft…",
4017
+ "trimmed": "Auf die unterstützte Form dieses Links gekürzt.",
4018
+ "widened": "Der Frame {scope} konnte nicht gelesen werden, daher wird die gesamte Datei angehängt.",
4019
+ "unchecked": "Der Link konnte gerade nicht geprüft werden. Er wird beim Anlegen der Aufgabe abgerufen.",
4020
+ "uncheckedAmbiguous": "Der Link konnte nicht geprüft werden, und es ist mehr als eine Design-Quelle verbunden. Zu welcher er gehört, ist damit unbekannt. Bitte erneut versuchen.",
4021
+ "rejected": "Keine verbundene Design-Quelle erkennt diesen Link.",
4022
+ "continue": "Weiter"
3978
4023
  }
3979
4024
  },
3980
4025
  "tasks": {
@@ -6969,7 +7014,8 @@
6969
7014
  "library": "Eine in diesem Deployment aktivierte Kontextfragment-Bibliothek",
6970
7015
  "failedRun": "Ein fehlgeschlagener Lauf",
6971
7016
  "infrastructure": "Ein mit diesem Workspace verbundenes Ausführungs-Backend",
6972
- "advancedTier": "Der erweiterte Oberflächenmodus"
7017
+ "advancedTier": "Der erweiterte Oberflächenmodus",
7018
+ "designSource": "Eine verbundene Design-Quelle"
6973
7019
  },
6974
7020
  "overlay": {
6975
7021
  "next": "Weiter",
@@ -7349,6 +7395,36 @@
7349
7395
  "body": "Ein Entwurf, der angibt, welche davon er nutzt, bekommt im nächsten Schritt ihre vollen Kontrakte. Einer, der nichts angibt, bekommt nichts: dass das hier aktuell bleibt, ist also die Bedingung dafür, dass es funktioniert."
7350
7396
  }
7351
7397
  }
7398
+ },
7399
+ "startFromDesign": {
7400
+ "title": "Mit einem Design starten",
7401
+ "description": "Mach aus einem Design-Frame eine Aufgabe, die ein Agent bauen kann.",
7402
+ "steps": {
7403
+ "intro": {
7404
+ "title": "Vom Design aus arbeiten",
7405
+ "body": "Wenn die Arbeit im Design-Tool beginnt, ist der Frame das Briefing. Diese Tour hängt einen an eine neue Aufgabe."
7406
+ },
7407
+ "open": {
7408
+ "title": "Mit einem Design starten",
7409
+ "body": "Jeder Service-Frame hat diese Schaltfläche, sobald eine Design-Quelle verbunden ist."
7410
+ },
7411
+ "paste": {
7412
+ "title": "Link einfügen",
7413
+ "body": "Kopiere im Design-Tool den Link zu einem Frame oder einer ganzen Datei und füge ihn hier ein."
7414
+ },
7415
+ "resolved": {
7416
+ "title": "Prüfen, was angehängt wurde",
7417
+ "body": "Der Link wird auf seine unterstützte Form gekürzt. Konnte der Frame selbst nicht gelesen werden, wird stattdessen die ganze Datei angehängt, und genau das steht hier."
7418
+ },
7419
+ "continue": {
7420
+ "title": "Weiter zur Aufgabe",
7421
+ "body": "Das Design liegt an der neuen Aufgabe bereit. Beschreibe das gewünschte Ergebnis und lege sie an."
7422
+ },
7423
+ "finish": {
7424
+ "title": "Bereit für den Lauf",
7425
+ "body": "Der Agent liest Layout, Texte, Komponenten und Tokens des Designs, und jeder Lauf gleicht es erneut mit der Quelle ab."
7426
+ }
7427
+ }
7352
7428
  }
7353
7429
  },
7354
7430
  "nudge": {
@@ -481,7 +481,8 @@
481
481
  "accessDenied": {
482
482
  "title": "Permission denied",
483
483
  "hint": "You don't have access to the repository backing this service."
484
- }
484
+ },
485
+ "startFromDesignTitle": "Start from a design"
485
486
  },
486
487
  "decisionBadge": {
487
488
  "decisionNeeded": "Decision needed",
@@ -556,7 +557,11 @@
556
557
  "attachIssueDisabledConnect": "Connect an issue tracker first (Integrations)",
557
558
  "attachIssueDisabledEnable": "Enable the issue-tracker integration first",
558
559
  "importsOnAdd": "imports on add",
559
- "unreadable": "Could not be fetched: {error}"
560
+ "unreadable": "Could not be fetched: {error}",
561
+ "pastedLink": {
562
+ "offer": "This description links a {source} page. Attach it as context?",
563
+ "attach": "Attach"
564
+ }
560
565
  },
561
566
  "errors": {
562
567
  "generic": {
@@ -2138,6 +2143,18 @@
2138
2143
  "keysValidation": "Enter the S3 access key id and secret",
2139
2144
  "saved": "Content storage saved",
2140
2145
  "saveFailed": "Could not save content storage"
2146
+ },
2147
+ "figma": {
2148
+ "title": "Figma app (OAuth)",
2149
+ "description": "Enables the \"Connect with Figma\" flow. Without it, workspaces can still connect Figma by pasting a personal access token.",
2150
+ "clientId": "Client ID",
2151
+ "clientSecret": "Client secret",
2152
+ "redirectUrl": "Redirect URL",
2153
+ "validation": "Enter the client id, secret and redirect URL",
2154
+ "saved": "Figma OAuth saved",
2155
+ "saveFailed": "Could not save Figma OAuth",
2156
+ "cleared": "Figma OAuth cleared",
2157
+ "clearFailed": "Could not clear Figma OAuth"
2141
2158
  }
2142
2159
  },
2143
2160
  "accountFragments": {
@@ -4443,13 +4460,19 @@
4443
4460
  "connect": {
4444
4461
  "title": "Connect source",
4445
4462
  "sourceFallback": "Source",
4446
- "intro": "Connect {source} to import requirements, RFCs and PRDs, then spawn board structure or attach them to tasks as agent context.",
4463
+ "intro": "Connect {source} to bring its pages and designs onto this board: import one, expand it into board structure, or attach it to a task as agent context.",
4447
4464
  "disconnect": "Disconnect",
4448
4465
  "connect": "Connect",
4449
4466
  "update": "Update connection",
4450
4467
  "connected": "{source} connected",
4451
4468
  "disconnected": "{source} disconnected",
4452
- "connectFailed": "Could not connect"
4469
+ "connectFailed": "Could not connect",
4470
+ "oauth": {
4471
+ "action": "Connect with {source}",
4472
+ "scopes": "You will be asked to grant: {scopes}",
4473
+ "fallback": "Prefer a token? Use the fields below instead.",
4474
+ "failed": "Could not start the {source} sign-in"
4475
+ }
4453
4476
  },
4454
4477
  "spawn": {
4455
4478
  "title": "Preview structure",
@@ -4464,7 +4487,15 @@
4464
4487
  "summary": "{frames} · {modules} · {tasks}",
4465
4488
  "frameCount": "{count} frame | {count} frames",
4466
4489
  "moduleCount": "{count} module | {count} modules",
4467
- "taskCount": "{count} task | {count} tasks"
4490
+ "taskCount": "{count} task | {count} tasks",
4491
+ "reusedCount": "{count} module reused | {count} modules reused",
4492
+ "intoService": "inside the selected service",
4493
+ "target": {
4494
+ "label": "Add to service",
4495
+ "help": "A design describes screens, not an architecture, so the plan proposes work inside a service that already exists.",
4496
+ "placeholder": "Pick a service",
4497
+ "required": "Pick the service this design belongs to."
4498
+ }
4468
4499
  },
4469
4500
  "taskDocs": {
4470
4501
  "heading": "Context documents",
@@ -4497,6 +4528,20 @@
4497
4528
  "remove": "Remove",
4498
4529
  "linkFailed": "Couldn't update the document link",
4499
4530
  "loadFailed": "Couldn't load document templates"
4531
+ },
4532
+ "startFromDesign": {
4533
+ "title": "Start from a design",
4534
+ "intro": "Paste a link to a frame or a whole file. It is attached to the new task, and the agent reads its layout, text, components and tokens.",
4535
+ "noSource": "No design source is connected yet. An admin can connect Figma or Zeplin from Integrations.",
4536
+ "linkLabel": "Design link",
4537
+ "linkPlaceholder": "https://www.figma.com/design/…?node-id=1-2",
4538
+ "checking": "Checking the link…",
4539
+ "trimmed": "Trimmed to the supported form of this link.",
4540
+ "widened": "The frame {scope} could not be read, so the whole file is attached instead.",
4541
+ "unchecked": "The link could not be checked right now. It is fetched when the task is created.",
4542
+ "uncheckedAmbiguous": "The link could not be checked, and more than one design source is connected, so which one it belongs to is unknown. Try again.",
4543
+ "rejected": "No connected design source recognises this link.",
4544
+ "continue": "Continue"
4500
4545
  }
4501
4546
  },
4502
4547
  "tasks": {
@@ -7215,7 +7260,8 @@
7215
7260
  "library": "The context fragment library enabled on this deployment",
7216
7261
  "failedRun": "A run that failed",
7217
7262
  "infrastructure": "An execution backend connected to this workspace",
7218
- "advancedTier": "The advanced interface mode"
7263
+ "advancedTier": "The advanced interface mode",
7264
+ "designSource": "A connected design source"
7219
7265
  },
7220
7266
  "overlay": {
7221
7267
  "next": "Next",
@@ -7604,6 +7650,36 @@
7604
7650
  "body": "A design that declares which of these it uses gets their full contracts in the next step. One that declares nothing gets nothing, so keeping this current is what makes it work."
7605
7651
  }
7606
7652
  }
7653
+ },
7654
+ "startFromDesign": {
7655
+ "title": "Start from a design",
7656
+ "description": "Turn a design frame into a task an agent can build.",
7657
+ "steps": {
7658
+ "intro": {
7659
+ "title": "Work from the design",
7660
+ "body": "When the work starts in a design tool, the frame is the brief. This tour attaches one to a new task."
7661
+ },
7662
+ "open": {
7663
+ "title": "Start from a design",
7664
+ "body": "Every service frame carries this button once a design source is connected."
7665
+ },
7666
+ "paste": {
7667
+ "title": "Paste the link",
7668
+ "body": "Copy the link to a frame or a whole file from your design tool and paste it here."
7669
+ },
7670
+ "resolved": {
7671
+ "title": "Check what was attached",
7672
+ "body": "The link is trimmed to its supported form. If the frame itself could not be read, the whole file is attached instead and it says so here."
7673
+ },
7674
+ "continue": {
7675
+ "title": "Carry on to the task",
7676
+ "body": "The design is staged on the new task. Describe the outcome you want and create it."
7677
+ },
7678
+ "finish": {
7679
+ "title": "Ready to run",
7680
+ "body": "The agent reads the design's layout, text, components and tokens, and every run re-checks it against the source."
7681
+ }
7682
+ }
7607
7683
  }
7608
7684
  },
7609
7685
  "nudge": {
@@ -430,7 +430,8 @@
430
430
  "accessDenied": {
431
431
  "title": "Permiso denegado",
432
432
  "hint": "No tienes acceso al repositorio que respalda este servicio."
433
- }
433
+ },
434
+ "startFromDesignTitle": "Empezar desde un diseño"
434
435
  },
435
436
  "decisionBadge": {
436
437
  "decisionNeeded": "Decisión necesaria",
@@ -502,7 +503,11 @@
502
503
  "attachIssueDisabledConnect": "Conecta primero un gestor de incidencias (Integraciones)",
503
504
  "attachIssueDisabledEnable": "Activa primero la integración del gestor de incidencias",
504
505
  "importsOnAdd": "se importa al añadir",
505
- "unreadable": "No se pudo obtener: {error}"
506
+ "unreadable": "No se pudo obtener: {error}",
507
+ "pastedLink": {
508
+ "offer": "Esta descripción enlaza una página de {source}. ¿Adjuntarla como contexto?",
509
+ "attach": "Adjuntar"
510
+ }
506
511
  },
507
512
  "errors": {
508
513
  "generic": {
@@ -2031,6 +2036,18 @@
2031
2036
  "keysValidation": "Introduce el id de clave de acceso y el secreto de S3",
2032
2037
  "saved": "Almacenamiento de contenido guardado",
2033
2038
  "saveFailed": "No se pudo guardar el almacenamiento de contenido"
2039
+ },
2040
+ "figma": {
2041
+ "title": "App de Figma (OAuth)",
2042
+ "description": "Habilita el flujo «Conectar con Figma». Sin él, los espacios de trabajo aún pueden conectar Figma pegando un token de acceso personal.",
2043
+ "clientId": "ID de cliente",
2044
+ "clientSecret": "Secreto de cliente",
2045
+ "redirectUrl": "URL de redirección",
2046
+ "validation": "Introduce el id de cliente, el secreto y la URL de redirección",
2047
+ "saved": "OAuth de Figma guardado",
2048
+ "saveFailed": "No se pudo guardar el OAuth de Figma",
2049
+ "cleared": "OAuth de Figma borrado",
2050
+ "clearFailed": "No se pudo borrar el OAuth de Figma"
2034
2051
  }
2035
2052
  },
2036
2053
  "accountFragments": {
@@ -4306,13 +4323,19 @@
4306
4323
  "connect": {
4307
4324
  "title": "Conectar fuente",
4308
4325
  "sourceFallback": "Fuente",
4309
- "intro": "Conecta {source} para importar requisitos, RFC y PRD, y luego generar la estructura del tablero o adjuntarlos a las tareas como contexto para los agentes.",
4326
+ "intro": "Conecta {source} para traer sus páginas y diseños a este tablero: impórtalos, conviértelos en estructura del tablero o adjúntalos a una tarea como contexto para los agentes.",
4310
4327
  "disconnect": "Desconectar",
4311
4328
  "connect": "Conectar",
4312
4329
  "update": "Actualizar conexión",
4313
4330
  "connected": "{source} conectado",
4314
4331
  "disconnected": "{source} desconectado",
4315
- "connectFailed": "No se pudo conectar"
4332
+ "connectFailed": "No se pudo conectar",
4333
+ "oauth": {
4334
+ "action": "Conectar con {source}",
4335
+ "scopes": "Se te pedirán estos permisos: {scopes}",
4336
+ "fallback": "¿Prefieres un token? Usa los campos de abajo.",
4337
+ "failed": "No se pudo iniciar el acceso a {source}"
4338
+ }
4316
4339
  },
4317
4340
  "spawn": {
4318
4341
  "title": "Previsualizar estructura",
@@ -4327,7 +4350,15 @@
4327
4350
  "summary": "{frames} · {modules} · {tasks}",
4328
4351
  "frameCount": "{count} marco | {count} marcos",
4329
4352
  "moduleCount": "{count} módulo | {count} módulos",
4330
- "taskCount": "{count} tarea | {count} tareas"
4353
+ "taskCount": "{count} tarea | {count} tareas",
4354
+ "reusedCount": "{count} módulo reutilizado | {count} módulos reutilizados",
4355
+ "intoService": "dentro del servicio elegido",
4356
+ "target": {
4357
+ "label": "Añadir al servicio",
4358
+ "help": "Un diseño describe pantallas, no una arquitectura, así que el plan propone trabajo dentro de un servicio que ya existe.",
4359
+ "placeholder": "Elige un servicio",
4360
+ "required": "Elige el servicio al que pertenece este diseño."
4361
+ }
4331
4362
  },
4332
4363
  "taskDocs": {
4333
4364
  "heading": "Documentos de contexto",
@@ -4360,6 +4391,20 @@
4360
4391
  "remove": "Quitar",
4361
4392
  "linkFailed": "No se pudo actualizar el vínculo del documento",
4362
4393
  "loadFailed": "No se pudieron cargar las plantillas de documentos"
4394
+ },
4395
+ "startFromDesign": {
4396
+ "title": "Empezar desde un diseño",
4397
+ "intro": "Pega el enlace a un frame o a un archivo completo. Se adjunta a la nueva tarea y el agente lee su maquetación, textos, componentes y tokens.",
4398
+ "noSource": "Todavía no hay ninguna fuente de diseño conectada. Un administrador puede conectar Figma o Zeplin desde Integraciones.",
4399
+ "linkLabel": "Enlace de diseño",
4400
+ "linkPlaceholder": "https://www.figma.com/design/…?node-id=1-2",
4401
+ "checking": "Comprobando el enlace…",
4402
+ "trimmed": "Recortado a la forma admitida de este enlace.",
4403
+ "widened": "No se pudo leer el frame {scope}, así que se adjunta el archivo completo.",
4404
+ "unchecked": "El enlace no se ha podido comprobar ahora mismo. Se descargará al crear la tarea.",
4405
+ "uncheckedAmbiguous": "No se pudo comprobar el enlace y hay más de una fuente de diseño conectada, así que no se sabe a cuál pertenece. Inténtalo de nuevo.",
4406
+ "rejected": "Ninguna fuente de diseño conectada reconoce este enlace.",
4407
+ "continue": "Continuar"
4363
4408
  }
4364
4409
  },
4365
4410
  "tasks": {
@@ -6969,7 +7014,8 @@
6969
7014
  "library": "La biblioteca de fragmentos de contexto habilitada en este despliegue",
6970
7015
  "failedRun": "Una ejecución que ha fallado",
6971
7016
  "infrastructure": "Un backend de ejecución conectado a este espacio de trabajo",
6972
- "advancedTier": "El modo de interfaz avanzado"
7017
+ "advancedTier": "El modo de interfaz avanzado",
7018
+ "designSource": "Una fuente de diseño conectada"
6973
7019
  },
6974
7020
  "overlay": {
6975
7021
  "next": "Siguiente",
@@ -7349,6 +7395,36 @@
7349
7395
  "body": "Un diseño que declara cuáles de estos usa recibe sus contratos completos en el paso siguiente. Uno que no declara nada no recibe nada: mantener esto al día es lo que lo hace funcionar."
7350
7396
  }
7351
7397
  }
7398
+ },
7399
+ "startFromDesign": {
7400
+ "title": "Empezar desde un diseño",
7401
+ "description": "Convierte un frame de diseño en una tarea que un agente pueda construir.",
7402
+ "steps": {
7403
+ "intro": {
7404
+ "title": "Trabajar desde el diseño",
7405
+ "body": "Cuando el trabajo empieza en una herramienta de diseño, el frame es el encargo. Este recorrido adjunta uno a una tarea nueva."
7406
+ },
7407
+ "open": {
7408
+ "title": "Empezar desde un diseño",
7409
+ "body": "Todo marco de servicio muestra este botón en cuanto hay una fuente de diseño conectada."
7410
+ },
7411
+ "paste": {
7412
+ "title": "Pega el enlace",
7413
+ "body": "Copia en tu herramienta de diseño el enlace a un frame o a un archivo completo y pégalo aquí."
7414
+ },
7415
+ "resolved": {
7416
+ "title": "Comprueba lo que se adjuntó",
7417
+ "body": "El enlace se recorta a su forma admitida. Si el frame en sí no se pudo leer, se adjunta el archivo completo y aquí se dice."
7418
+ },
7419
+ "continue": {
7420
+ "title": "Sigue hasta la tarea",
7421
+ "body": "El diseño queda preparado en la nueva tarea. Describe el resultado que quieres y créala."
7422
+ },
7423
+ "finish": {
7424
+ "title": "Lista para ejecutarse",
7425
+ "body": "El agente lee la maquetación, los textos, los componentes y los tokens del diseño, y cada ejecución vuelve a contrastarlo con la fuente."
7426
+ }
7427
+ }
7352
7428
  }
7353
7429
  },
7354
7430
  "nudge": {
@@ -430,7 +430,8 @@
430
430
  "accessDenied": {
431
431
  "title": "Autorisation refusée",
432
432
  "hint": "Vous n'avez pas accès au dépôt sur lequel repose ce service."
433
- }
433
+ },
434
+ "startFromDesignTitle": "Partir d'une maquette"
434
435
  },
435
436
  "decisionBadge": {
436
437
  "decisionNeeded": "Décision requise",
@@ -502,7 +503,11 @@
502
503
  "attachIssueDisabledConnect": "Connectez d’abord un suivi de tickets (Intégrations)",
503
504
  "attachIssueDisabledEnable": "Activez d’abord l’intégration du suivi de tickets",
504
505
  "importsOnAdd": "importé à l’ajout",
505
- "unreadable": "Récupération impossible : {error}"
506
+ "unreadable": "Récupération impossible : {error}",
507
+ "pastedLink": {
508
+ "offer": "Cette description renvoie à une page {source}. L’attacher comme contexte ?",
509
+ "attach": "Attacher"
510
+ }
506
511
  },
507
512
  "errors": {
508
513
  "generic": {
@@ -2031,6 +2036,18 @@
2031
2036
  "keysValidation": "Saisissez l’id de clé d’accès et le secret S3",
2032
2037
  "saved": "Stockage de contenu enregistré",
2033
2038
  "saveFailed": "Impossible d’enregistrer le stockage de contenu"
2039
+ },
2040
+ "figma": {
2041
+ "title": "Application Figma (OAuth)",
2042
+ "description": "Active le parcours « Se connecter avec Figma ». Sans lui, les espaces de travail peuvent toujours connecter Figma en collant un jeton d'accès personnel.",
2043
+ "clientId": "Identifiant client",
2044
+ "clientSecret": "Secret client",
2045
+ "redirectUrl": "URL de redirection",
2046
+ "validation": "Saisissez l'identifiant client, le secret et l'URL de redirection",
2047
+ "saved": "OAuth Figma enregistré",
2048
+ "saveFailed": "Impossible d'enregistrer l'OAuth Figma",
2049
+ "cleared": "OAuth Figma effacé",
2050
+ "clearFailed": "Impossible d'effacer l'OAuth Figma"
2034
2051
  }
2035
2052
  },
2036
2053
  "accountFragments": {
@@ -4306,13 +4323,19 @@
4306
4323
  "connect": {
4307
4324
  "title": "Connecter une source",
4308
4325
  "sourceFallback": "Source",
4309
- "intro": "Connectez {source} pour importer des exigences, des RFC et des PRD, puis générer la structure du tableau ou les joindre aux tâches comme contexte pour les agents.",
4326
+ "intro": "Connecte {source} pour amener ses pages et ses maquettes sur ce tableau : importe-les, déplie-les en structure de tableau, ou attache-les à une tâche comme contexte pour les agents.",
4310
4327
  "disconnect": "Déconnecter",
4311
4328
  "connect": "Connecter",
4312
4329
  "update": "Mettre à jour la connexion",
4313
4330
  "connected": "{source} connecté",
4314
4331
  "disconnected": "{source} déconnecté",
4315
- "connectFailed": "Connexion impossible"
4332
+ "connectFailed": "Connexion impossible",
4333
+ "oauth": {
4334
+ "action": "Se connecter avec {source}",
4335
+ "scopes": "Les autorisations demandées seront : {scopes}",
4336
+ "fallback": "Vous préférez un jeton ? Utilisez plutôt les champs ci-dessous.",
4337
+ "failed": "Impossible de lancer la connexion à {source}"
4338
+ }
4316
4339
  },
4317
4340
  "spawn": {
4318
4341
  "title": "Aperçu de la structure",
@@ -4327,7 +4350,15 @@
4327
4350
  "summary": "{frames} · {modules} · {tasks}",
4328
4351
  "frameCount": "{count} cadre | {count} cadres",
4329
4352
  "moduleCount": "{count} module | {count} modules",
4330
- "taskCount": "{count} tâche | {count} tâches"
4353
+ "taskCount": "{count} tâche | {count} tâches",
4354
+ "reusedCount": "{count} module réutilisé | {count} modules réutilisés",
4355
+ "intoService": "dans le service choisi",
4356
+ "target": {
4357
+ "label": "Ajouter au service",
4358
+ "help": "Une maquette décrit des écrans, pas une architecture : le plan propose donc du travail à l'intérieur d'un service qui existe déjà.",
4359
+ "placeholder": "Choisir un service",
4360
+ "required": "Choisissez le service auquel appartient cette maquette."
4361
+ }
4331
4362
  },
4332
4363
  "taskDocs": {
4333
4364
  "heading": "Documents de contexte",
@@ -4360,6 +4391,20 @@
4360
4391
  "remove": "Retirer",
4361
4392
  "linkFailed": "Impossible de mettre à jour le lien du document",
4362
4393
  "loadFailed": "Impossible de charger les modèles de documents"
4394
+ },
4395
+ "startFromDesign": {
4396
+ "title": "Partir d'une maquette",
4397
+ "intro": "Collez le lien vers un frame ou un fichier entier. Il est attaché à la nouvelle tâche, et l'agent en lit la mise en page, les textes, les composants et les tokens.",
4398
+ "noSource": "Aucune source de design n'est connectée. Un administrateur peut connecter Figma ou Zeplin depuis les intégrations.",
4399
+ "linkLabel": "Lien de maquette",
4400
+ "linkPlaceholder": "https://www.figma.com/design/…?node-id=1-2",
4401
+ "checking": "Vérification du lien…",
4402
+ "trimmed": "Réduit à la forme prise en charge de ce lien.",
4403
+ "widened": "Le frame {scope} n'a pas pu être lu : c'est le fichier entier qui est attaché.",
4404
+ "unchecked": "Le lien n'a pas pu être vérifié pour l'instant. Il sera récupéré à la création de la tâche.",
4405
+ "uncheckedAmbiguous": "Le lien n'a pas pu être vérifié, et plusieurs sources de design sont connectées : impossible de savoir de laquelle il vient. Réessayez.",
4406
+ "rejected": "Aucune source de design connectée ne reconnaît ce lien.",
4407
+ "continue": "Continuer"
4363
4408
  }
4364
4409
  },
4365
4410
  "tasks": {
@@ -6969,7 +7014,8 @@
6969
7014
  "library": "La bibliothèque de fragments de contexte activée sur ce déploiement",
6970
7015
  "failedRun": "Une exécution en échec",
6971
7016
  "infrastructure": "Un backend d’exécution connecté à cet espace de travail",
6972
- "advancedTier": "Le mode d’interface avancé"
7017
+ "advancedTier": "Le mode d’interface avancé",
7018
+ "designSource": "Une source de design connectée"
6973
7019
  },
6974
7020
  "overlay": {
6975
7021
  "next": "Suivant",
@@ -7349,6 +7395,36 @@
7349
7395
  "body": "Une conception qui déclare lesquels elle utilise reçoit leurs contrats complets à l’étape suivante. Celle qui ne déclare rien ne reçoit rien : tenir ceci à jour est ce qui fait que cela marche."
7350
7396
  }
7351
7397
  }
7398
+ },
7399
+ "startFromDesign": {
7400
+ "title": "Partir d'une maquette",
7401
+ "description": "Transformez un frame de maquette en tâche qu'un agent peut réaliser.",
7402
+ "steps": {
7403
+ "intro": {
7404
+ "title": "Travailler depuis la maquette",
7405
+ "body": "Quand le travail commence dans un outil de design, le frame est le brief. Cette visite en attache un à une nouvelle tâche."
7406
+ },
7407
+ "open": {
7408
+ "title": "Partir d'une maquette",
7409
+ "body": "Chaque cadre de service porte ce bouton dès qu'une source de design est connectée."
7410
+ },
7411
+ "paste": {
7412
+ "title": "Collez le lien",
7413
+ "body": "Copiez dans votre outil de design le lien vers un frame ou un fichier entier, et collez-le ici."
7414
+ },
7415
+ "resolved": {
7416
+ "title": "Vérifiez ce qui a été attaché",
7417
+ "body": "Le lien est réduit à sa forme prise en charge. Si le frame lui-même n'a pas pu être lu, c'est le fichier entier qui est attaché, et c'est dit ici."
7418
+ },
7419
+ "continue": {
7420
+ "title": "Passez à la tâche",
7421
+ "body": "La maquette est prête sur la nouvelle tâche. Décrivez le résultat attendu et créez-la."
7422
+ },
7423
+ "finish": {
7424
+ "title": "Prêt à lancer",
7425
+ "body": "L'agent lit la mise en page, les textes, les composants et les tokens de la maquette, et chaque exécution la revérifie auprès de la source."
7426
+ }
7427
+ }
7352
7428
  }
7353
7429
  },
7354
7430
  "nudge": {