@cat-factory/app 0.248.0 → 0.250.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 (45) hide show
  1. package/app/components/auth/LoginScreen.vue +8 -2
  2. package/app/components/board/AddTaskModal.vue +1 -0
  3. package/app/components/board/nodes/BlockNode.vue +24 -0
  4. package/app/components/board/nodes/TaskCard.vue +1 -1
  5. package/app/components/bootstrap/BootstrapModal.vue +5 -3
  6. package/app/components/context/ContextAttachmentFields.vue +102 -0
  7. package/app/components/context/pastedLinkOffer.logic.spec.ts +35 -0
  8. package/app/components/context/pastedLinkOffer.logic.ts +50 -0
  9. package/app/components/documents/DocumentSourceConnectModal.vue +50 -0
  10. package/app/components/documents/SpawnPreviewModal.vue +92 -16
  11. package/app/components/documents/StartFromDesignModal.vue +237 -0
  12. package/app/components/github/GitHubPanel.vue +49 -10
  13. package/app/components/layout/AccountDeploymentSettings.vue +122 -0
  14. package/app/components/panels/InspectorPanel.vue +14 -9
  15. package/app/components/vcs/GitLabConnect.vue +8 -2
  16. package/app/composables/api/documents.ts +17 -6
  17. package/app/composables/useDocumentSourceConnect.ts +88 -0
  18. package/app/composables/usePipelineErrorToast.ts +2 -0
  19. package/app/modular/external-tools.spec.ts +1 -0
  20. package/app/modular/nav-contributions.spec.ts +2 -0
  21. package/app/modular/nav-contributions.ts +10 -0
  22. package/app/modular/nav-gates.ts +4 -0
  23. package/app/modular/registry.spec.ts +1 -0
  24. package/app/modular/tutorial-tours.spec.ts +5 -0
  25. package/app/modular/tutorial-tours.ts +77 -0
  26. package/app/pages/index.vue +4 -0
  27. package/app/stores/documents.spec.ts +60 -0
  28. package/app/stores/documents.ts +52 -24
  29. package/app/stores/github/vcsConnect.ts +19 -0
  30. package/app/stores/github.spec.ts +116 -6
  31. package/app/stores/github.ts +23 -6
  32. package/app/stores/ui/modals.ts +15 -0
  33. package/app/utils/vcs.spec.ts +105 -14
  34. package/app/utils/vcs.ts +113 -29
  35. package/i18n/locales/de.json +118 -25
  36. package/i18n/locales/en.json +118 -25
  37. package/i18n/locales/es.json +118 -25
  38. package/i18n/locales/fr.json +118 -25
  39. package/i18n/locales/he.json +118 -25
  40. package/i18n/locales/it.json +118 -25
  41. package/i18n/locales/ja.json +118 -25
  42. package/i18n/locales/pl.json +118 -25
  43. package/i18n/locales/tr.json +118 -25
  44. package/i18n/locales/uk.json +118 -25
  45. 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",
@@ -3037,7 +3050,6 @@
3037
3050
  },
3038
3051
  "pr": "PR",
3039
3052
  "prNumber": "PR #{number}",
3040
- "openPrOnGithub": "{pr} auf GitHub öffnen",
3041
3053
  "readOutcome": "Ergebnis",
3042
3054
  "readOutcomeHint": "Lies nach, was sich geändert hat, mit den Belegen dafür",
3043
3055
  "review": "Überprüfen",
@@ -3051,7 +3063,8 @@
3051
3063
  "module": "Modul: {name}",
3052
3064
  "buildSteps": "Build-Schritte",
3053
3065
  "reviewAndApprove": "Überprüfen & freigeben",
3054
- "clickToViewStep": "Klicken, um Schrittdetails & Ausgabe anzuzeigen"
3066
+ "clickToViewStep": "Klicken, um Schrittdetails & Ausgabe anzuzeigen",
3067
+ "openPrLink": "{pr} öffnen"
3055
3068
  },
3056
3069
  "dryRunToast": {
3057
3070
  "title": "Probelauf gestartet",
@@ -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": {
@@ -3302,14 +3319,11 @@
3302
3319
  "loading": "Wird geladen…",
3303
3320
  "tabs": {
3304
3321
  "repos": "Repositorys",
3305
- "pulls": "Pull Requests",
3306
3322
  "issues": "Issues"
3307
3323
  },
3308
3324
  "linkedToBoard": "Mit diesem Board verknüpft",
3309
3325
  "manageRepos": "Repos verwalten",
3310
- "manageHint": "Wählen Sie die Repositorys aus, die dieses Board verfolgen soll. Die GitHub-Verbindung wird über den Account geteilt, und jedes Board verknüpft seine eigenen Repos.",
3311
3326
  "loadingRepos": "Repositorys werden geladen…",
3312
- "noAvailableRepos": "Die Installation kann noch auf keine Repositorys zugreifen.",
3313
3327
  "private": "privat",
3314
3328
  "saveSelection": "Auswahl speichern",
3315
3329
  "noLinkedRepos": "Noch keine Repositorys verknüpft. Verwenden Sie \"Repos verwalten\", um auszuwählen, welche Repositorys dieses Board verfolgt.",
@@ -3319,15 +3333,11 @@
3319
3333
  "fromSha": "Von SHA",
3320
3334
  "commitShaPlaceholder": "Commit-SHA",
3321
3335
  "createBranch": "Branch erstellen",
3322
- "openPr": "PR öffnen",
3323
3336
  "repository": "Repository",
3324
3337
  "chooseRepository": "Repository auswählen",
3325
3338
  "prTitle": "Titel",
3326
3339
  "headBranch": "Head-Branch",
3327
3340
  "baseBranch": "Base-Branch",
3328
- "openPullRequest": "Pull Request öffnen",
3329
- "noPulls": "Keine Pull Requests synchronisiert.",
3330
- "mergePr": "Pull Request mergen",
3331
3341
  "noIssues": "Keine Issues synchronisiert.",
3332
3342
  "prState": {
3333
3343
  "open": "offen",
@@ -3341,9 +3351,7 @@
3341
3351
  "toast": {
3342
3352
  "resync": "Neusynchronisierung {status}",
3343
3353
  "reposUpdated": "Verknüpfte Repositorys aktualisiert",
3344
- "branchCreated": "Branch {name} erstellt",
3345
- "prOpened": "Pull Request geöffnet",
3346
- "prMerged": "PR #{number} gemergt"
3354
+ "branchCreated": "Branch {name} erstellt"
3347
3355
  },
3348
3356
  "errors": {
3349
3357
  "disconnect": "Trennen nicht möglich",
@@ -3352,7 +3360,6 @@
3352
3360
  "updateRepos": "Repositorys konnten nicht aktualisiert werden",
3353
3361
  "loadBranches": "Branches konnten nicht geladen werden",
3354
3362
  "createBranch": "Branch konnte nicht erstellt werden",
3355
- "openPr": "Pull Request konnte nicht geöffnet werden",
3356
3363
  "merge": "Mergen nicht möglich"
3357
3364
  }
3358
3365
  },
@@ -3921,13 +3928,19 @@
3921
3928
  "connect": {
3922
3929
  "title": "Quelle verbinden",
3923
3930
  "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.",
3931
+ "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
3932
  "disconnect": "Trennen",
3926
3933
  "connect": "Verbinden",
3927
3934
  "update": "Verbindung aktualisieren",
3928
3935
  "connected": "{source} verbunden",
3929
3936
  "disconnected": "{source} getrennt",
3930
- "connectFailed": "Verbindung nicht möglich"
3937
+ "connectFailed": "Verbindung nicht möglich",
3938
+ "oauth": {
3939
+ "action": "Mit {source} verbinden",
3940
+ "scopes": "Du wirst um folgende Berechtigungen gebeten: {scopes}",
3941
+ "fallback": "Lieber ein Token? Nutze stattdessen die Felder unten.",
3942
+ "failed": "Die Anmeldung bei {source} konnte nicht gestartet werden"
3943
+ }
3931
3944
  },
3932
3945
  "spawn": {
3933
3946
  "title": "Struktur-Vorschau",
@@ -3942,7 +3955,15 @@
3942
3955
  "summary": "{frames} · {modules} · {tasks}",
3943
3956
  "frameCount": "{count} Frame | {count} Frames",
3944
3957
  "moduleCount": "{count} Modul | {count} Module",
3945
- "taskCount": "{count} Aufgabe | {count} Aufgaben"
3958
+ "taskCount": "{count} Aufgabe | {count} Aufgaben",
3959
+ "reusedCount": "{count} Modul wiederverwendet | {count} Module wiederverwendet",
3960
+ "intoService": "innerhalb des gewählten Service",
3961
+ "target": {
3962
+ "label": "Zu Service hinzufügen",
3963
+ "help": "Ein Design beschreibt Screens, keine Architektur. Der Plan schlägt deshalb Arbeit innerhalb eines bereits vorhandenen Service vor.",
3964
+ "placeholder": "Service wählen",
3965
+ "required": "Wähle den Service, zu dem dieses Design gehört."
3966
+ }
3946
3967
  },
3947
3968
  "taskDocs": {
3948
3969
  "heading": "Kontextdokumente",
@@ -3975,6 +3996,20 @@
3975
3996
  "remove": "Entfernen",
3976
3997
  "linkFailed": "Die Dokumentverknüpfung konnte nicht aktualisiert werden",
3977
3998
  "loadFailed": "Dokumentvorlagen konnten nicht geladen werden"
3999
+ },
4000
+ "startFromDesign": {
4001
+ "title": "Mit einem Design starten",
4002
+ "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.",
4003
+ "noSource": "Noch keine Design-Quelle verbunden. Ein Admin kann Figma oder Zeplin unter Integrationen verbinden.",
4004
+ "linkLabel": "Design-Link",
4005
+ "linkPlaceholder": "https://www.figma.com/design/…?node-id=1-2",
4006
+ "checking": "Link wird geprüft…",
4007
+ "trimmed": "Auf die unterstützte Form dieses Links gekürzt.",
4008
+ "widened": "Der Frame {scope} konnte nicht gelesen werden, daher wird die gesamte Datei angehängt.",
4009
+ "unchecked": "Der Link konnte gerade nicht geprüft werden. Er wird beim Anlegen der Aufgabe abgerufen.",
4010
+ "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.",
4011
+ "rejected": "Keine verbundene Design-Quelle erkennt diesen Link.",
4012
+ "continue": "Weiter"
3978
4013
  }
3979
4014
  },
3980
4015
  "tasks": {
@@ -5429,7 +5464,8 @@
5429
5464
  "unavailable": {
5430
5465
  "description": {
5431
5466
  "binary_generators_unreachable": "Die generativen Integrationen dieser Installation konnten gerade nicht gelesen werden, deshalb wurde der Lauf nicht gestartet. Es ist nichts falsch konfiguriert und keine Änderung nötig: versuchen Sie es erneut, sobald die Verbindung wieder steht.",
5432
- "foundational_builtins_unreachable": "Die integrierten Basisdienste dieser Installation konnten gerade nicht gelesen werden. Es ist nichts falsch konfiguriert und keine Änderung nötig: versuchen Sie es erneut, sobald die Verbindung wieder steht."
5467
+ "foundational_builtins_unreachable": "Die integrierten Basisdienste dieser Installation konnten gerade nicht gelesen werden. Es ist nichts falsch konfiguriert und keine Änderung nötig: versuchen Sie es erneut, sobald die Verbindung wieder steht.",
5468
+ "connection_credentials_unreadable": "Die gespeicherten Zugangsdaten dieser Verbindung konnten nicht gelesen werden. Wenn diese Installation den Dienst mit dem zugehörigen Schlüssel erreicht, verbinden Sie die Quelle neu, um sie zu ersetzen; andernfalls versuchen Sie es erneut, sobald diese Verbindung wiederhergestellt ist."
5433
5469
  }
5434
5470
  },
5435
5471
  "action": {
@@ -5501,7 +5537,7 @@
5501
5537
  "agent_backend_unconfigured": "Es ist kein Runner-Backend verfügbar, um Container-Agenten auszuführen. Registriere einen selbst gehosteten Runner-Pool oder aktiviere Cloudflare Containers in deinem Deployment.",
5502
5538
  "run_not_retryable": "Nur eine fehlgeschlagene oder abgeschlossene Ausführung kann wiederholt werden. Diese Ausführung ist noch aktiv oder in einem Zustand, der keine Wiederholung erlaubt.",
5503
5539
  "no_pr_to_merge": "Diese Ausführung hat noch keinen Pull Request geöffnet, es gibt also nichts zu mergen.",
5504
- "github_not_connected": "Verbinde diesen Workspace mit GitHub, damit Agenten das Repository klonen, Änderungen pushen und Pull Requests öffnen können.",
5540
+ "github_not_connected": "Verbinden Sie diesen Workspace mit einem Repository-Host, damit Agenten das Repository klonen, Änderungen pushen und Pull Requests öffnen können.",
5505
5541
  "bootstrap_not_retryable": "Dieser Bootstrap-Auftrag kann in seinem aktuellen Zustand nicht wiederholt werden (er läuft noch oder wurde bereits erfolgreich abgeschlossen).",
5506
5542
  "bootstrap_reference_missing": "Das Referenz-Repository, das dieser Bootstrap übernimmt, ist nicht mehr erreichbar. Es wurde gelöscht oder der Zugriff wurde entzogen. Wähle eine andere Referenz oder erstelle von Grund auf neu.",
5507
5543
  "preset_unsatisfiable": "Das Modell eines Inline-Schritts kann in diesem Deployment nicht inline laufen (ein reines Abo-Modell ohne Inline-Unterstützung). Wähle ein inline-fähiges Modell oder Preset.",
@@ -5691,7 +5727,7 @@
5691
5727
  "suffixFixing": "· Fixer bearbeitet Kommentare…",
5692
5728
  "suffixFailing": "· zu bearbeitende Review-Kommentare",
5693
5729
  "suffixAwaiting": "· wartet auf Review",
5694
- "reviewPr": "Pull Request auf GitHub prüfen",
5730
+ "reviewPr": "Pull Request prüfen",
5695
5731
  "requestFixHeading": "Eine Korrektur anfordern",
5696
5732
  "requestFixDescription": "Beschreibe eine Änderung, die der Fixer jetzt am PR-Branch vornehmen soll (zusätzlich zu etwaigen Review-Kommentaren, die er automatisch bearbeitet).",
5697
5733
  "requestFixPlaceholder": "z. B. benenne den Helfer um und füge einen Unit-Test für den Fall leerer Eingabe hinzu",
@@ -5705,12 +5741,12 @@
5705
5741
  },
5706
5742
  "conflicts": {
5707
5743
  "mergeability": "Zusammenführbarkeit",
5708
- "viewPr": "Pull Request auf GitHub ansehen"
5744
+ "viewPr": "Pull Request ansehen"
5709
5745
  },
5710
5746
  "docQuality": {
5711
5747
  "findings": "Dokumentprobleme",
5712
5748
  "findingsFallback": "Das Dokument hat die strukturellen Prüfungen bestanden.",
5713
- "viewPr": "Pull Request auf GitHub ansehen"
5749
+ "viewPr": "Pull Request ansehen"
5714
5750
  },
5715
5751
  "attemptsHeading": "{helper}-Versuche",
5716
5752
  "attempt": "Versuch {number}",
@@ -6861,7 +6897,33 @@
6861
6897
  },
6862
6898
  "toast": {
6863
6899
  "disconnected": "{provider} getrennt"
6864
- }
6900
+ },
6901
+ "pulls": {
6902
+ "github": {
6903
+ "tab": "Pull Requests",
6904
+ "open": "PR öffnen",
6905
+ "openSubmit": "Pull Request öffnen",
6906
+ "merge": "Diesen Pull Request mergen",
6907
+ "none": "Keine Pull Requests synchronisiert.",
6908
+ "opened": "Pull Request geöffnet",
6909
+ "mergedToast": "PR #{number} gemergt",
6910
+ "openFailed": "Pull Request konnte nicht geöffnet werden"
6911
+ },
6912
+ "gitlab": {
6913
+ "tab": "Merge Requests",
6914
+ "open": "MR öffnen",
6915
+ "openSubmit": "Merge Request öffnen",
6916
+ "merge": "Diesen Merge Request mergen",
6917
+ "none": "Keine Merge Requests synchronisiert.",
6918
+ "opened": "Merge Request geöffnet",
6919
+ "mergedToast": "MR !{number} gemergt",
6920
+ "openFailed": "Merge Request konnte nicht geöffnet werden"
6921
+ }
6922
+ },
6923
+ "manageHintApp": "Wählen Sie die Repositories aus, die dieses Board verfolgen soll. Die App-Installation wird kontoweit geteilt, und jedes Board verknüpft seine eigenen Repositories.",
6924
+ "manageHintToken": "Wählen Sie die Repositories aus, die dieses Board verfolgen soll. Die Liste zeigt, was das verbundene Token erreicht, und jedes Board verknüpft seine eigenen Repositories.",
6925
+ "noAvailableReposApp": "Die App-Installation hat noch auf keine Repositories Zugriff.",
6926
+ "noAvailableReposToken": "Das verbundene Token erreicht noch keine Repositories. Prüfen Sie seinen Scope und Ihren Zugriff darauf."
6865
6927
  },
6866
6928
  "connect": {
6867
6929
  "or": "oder",
@@ -6969,7 +7031,8 @@
6969
7031
  "library": "Eine in diesem Deployment aktivierte Kontextfragment-Bibliothek",
6970
7032
  "failedRun": "Ein fehlgeschlagener Lauf",
6971
7033
  "infrastructure": "Ein mit diesem Workspace verbundenes Ausführungs-Backend",
6972
- "advancedTier": "Der erweiterte Oberflächenmodus"
7034
+ "advancedTier": "Der erweiterte Oberflächenmodus",
7035
+ "designSource": "Eine verbundene Design-Quelle"
6973
7036
  },
6974
7037
  "overlay": {
6975
7038
  "next": "Weiter",
@@ -7349,6 +7412,36 @@
7349
7412
  "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
7413
  }
7351
7414
  }
7415
+ },
7416
+ "startFromDesign": {
7417
+ "title": "Mit einem Design starten",
7418
+ "description": "Mach aus einem Design-Frame eine Aufgabe, die ein Agent bauen kann.",
7419
+ "steps": {
7420
+ "intro": {
7421
+ "title": "Vom Design aus arbeiten",
7422
+ "body": "Wenn die Arbeit im Design-Tool beginnt, ist der Frame das Briefing. Diese Tour hängt einen an eine neue Aufgabe."
7423
+ },
7424
+ "open": {
7425
+ "title": "Mit einem Design starten",
7426
+ "body": "Jeder Service-Frame hat diese Schaltfläche, sobald eine Design-Quelle verbunden ist."
7427
+ },
7428
+ "paste": {
7429
+ "title": "Link einfügen",
7430
+ "body": "Kopiere im Design-Tool den Link zu einem Frame oder einer ganzen Datei und füge ihn hier ein."
7431
+ },
7432
+ "resolved": {
7433
+ "title": "Prüfen, was angehängt wurde",
7434
+ "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."
7435
+ },
7436
+ "continue": {
7437
+ "title": "Weiter zur Aufgabe",
7438
+ "body": "Das Design liegt an der neuen Aufgabe bereit. Beschreibe das gewünschte Ergebnis und lege sie an."
7439
+ },
7440
+ "finish": {
7441
+ "title": "Bereit für den Lauf",
7442
+ "body": "Der Agent liest Layout, Texte, Komponenten und Tokens des Designs, und jeder Lauf gleicht es erneut mit der Quelle ab."
7443
+ }
7444
+ }
7352
7445
  }
7353
7446
  },
7354
7447
  "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",
@@ -515,7 +516,6 @@
515
516
  },
516
517
  "pr": "PR",
517
518
  "prNumber": "PR #{number}",
518
- "openPrOnGithub": "Open {pr} on GitHub",
519
519
  "readOutcome": "Outcome",
520
520
  "readOutcomeHint": "Read what changed, with the evidence behind it",
521
521
  "review": "Review",
@@ -529,7 +529,8 @@
529
529
  "module": "Module: {name}",
530
530
  "buildSteps": "Build steps",
531
531
  "reviewAndApprove": "Review & approve",
532
- "clickToViewStep": "Click to view step details & output"
532
+ "clickToViewStep": "Click to view step details & output",
533
+ "openPrLink": "Open {pr}"
533
534
  },
534
535
  "dryRunToast": {
535
536
  "title": "Dry run started",
@@ -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": {
@@ -587,7 +592,8 @@
587
592
  "unavailable": {
588
593
  "description": {
589
594
  "binary_generators_unreachable": "This deployment's generative integrations could not be read just now, so the run was not started. Nothing is misconfigured and no change is needed: try again once the connection recovers.",
590
- "foundational_builtins_unreachable": "This deployment's built-in foundational services could not be read just now. Nothing is misconfigured and no change is needed: try again once the connection recovers."
595
+ "foundational_builtins_unreachable": "This deployment's built-in foundational services could not be read just now. Nothing is misconfigured and no change is needed: try again once the connection recovers.",
596
+ "connection_credentials_unreadable": "The stored credentials for this connection could not be read. If this deployment can reach the service holding its key, re-connect the source to replace them; otherwise try again once that connection recovers."
591
597
  }
592
598
  },
593
599
  "action": {
@@ -665,7 +671,7 @@
665
671
  "agent_backend_unconfigured": "No runner backend is available to run container agents. Register a self-hosted runner pool, or enable Cloudflare Containers in your deployment.",
666
672
  "run_not_retryable": "Only a failed or finished run can be retried. This run is still active or in a state that can't be retried.",
667
673
  "no_pr_to_merge": "This run hasn't opened a pull request yet, so there is nothing to merge.",
668
- "github_not_connected": "Connect this workspace to GitHub so agents can clone the repository, push changes, and open pull requests.",
674
+ "github_not_connected": "Connect this workspace to a repository host so agents can clone the repository, push changes, and open pull requests.",
669
675
  "bootstrap_not_retryable": "This bootstrap job can't be retried in its current state (it is still running or already finished successfully).",
670
676
  "bootstrap_reference_missing": "The reference repository this bootstrap adapts is no longer reachable. It was deleted or its access was revoked. Pick another reference, or scaffold from scratch.",
671
677
  "preset_unsatisfiable": "An inline step's model can't run inline on this deployment (a subscription-only model with no inline support). Pick an inline-capable model or preset.",
@@ -2138,6 +2144,18 @@
2138
2144
  "keysValidation": "Enter the S3 access key id and secret",
2139
2145
  "saved": "Content storage saved",
2140
2146
  "saveFailed": "Could not save content storage"
2147
+ },
2148
+ "figma": {
2149
+ "title": "Figma app (OAuth)",
2150
+ "description": "Enables the \"Connect with Figma\" flow. Without it, workspaces can still connect Figma by pasting a personal access token.",
2151
+ "clientId": "Client ID",
2152
+ "clientSecret": "Client secret",
2153
+ "redirectUrl": "Redirect URL",
2154
+ "validation": "Enter the client id, secret and redirect URL",
2155
+ "saved": "Figma OAuth saved",
2156
+ "saveFailed": "Could not save Figma OAuth",
2157
+ "cleared": "Figma OAuth cleared",
2158
+ "clearFailed": "Could not clear Figma OAuth"
2141
2159
  }
2142
2160
  },
2143
2161
  "accountFragments": {
@@ -4165,14 +4183,11 @@
4165
4183
  "loading": "Loading…",
4166
4184
  "tabs": {
4167
4185
  "repos": "Repositories",
4168
- "pulls": "Pull requests",
4169
4186
  "issues": "Issues"
4170
4187
  },
4171
4188
  "linkedToBoard": "Linked to this board",
4172
4189
  "manageRepos": "Manage repos",
4173
- "manageHint": "Pick the repositories this board should track. The GitHub connection is shared across the account, and each board links its own repos.",
4174
4190
  "loadingRepos": "Loading repositories…",
4175
- "noAvailableRepos": "The installation can't access any repositories yet.",
4176
4191
  "private": "private",
4177
4192
  "saveSelection": "Save selection",
4178
4193
  "noLinkedRepos": "No repositories linked yet. Use Manage repos to pick which repositories this board tracks.",
@@ -4182,15 +4197,11 @@
4182
4197
  "fromSha": "From SHA",
4183
4198
  "commitShaPlaceholder": "commit sha",
4184
4199
  "createBranch": "Create branch",
4185
- "openPr": "Open PR",
4186
4200
  "repository": "Repository",
4187
4201
  "chooseRepository": "Choose a repository",
4188
4202
  "prTitle": "Title",
4189
4203
  "headBranch": "Head branch",
4190
4204
  "baseBranch": "Base branch",
4191
- "openPullRequest": "Open pull request",
4192
- "noPulls": "No pull requests synced.",
4193
- "mergePr": "Merge pull request",
4194
4205
  "noIssues": "No issues synced.",
4195
4206
  "prState": {
4196
4207
  "open": "open",
@@ -4204,9 +4215,7 @@
4204
4215
  "toast": {
4205
4216
  "resync": "Resync {status}",
4206
4217
  "reposUpdated": "Linked repositories updated",
4207
- "branchCreated": "Branch {name} created",
4208
- "prOpened": "Pull request opened",
4209
- "prMerged": "PR #{number} merged"
4218
+ "branchCreated": "Branch {name} created"
4210
4219
  },
4211
4220
  "errors": {
4212
4221
  "disconnect": "Could not disconnect",
@@ -4215,7 +4224,6 @@
4215
4224
  "updateRepos": "Could not update repositories",
4216
4225
  "loadBranches": "Could not load branches",
4217
4226
  "createBranch": "Could not create branch",
4218
- "openPr": "Could not open pull request",
4219
4227
  "merge": "Could not merge"
4220
4228
  }
4221
4229
  },
@@ -4443,13 +4451,19 @@
4443
4451
  "connect": {
4444
4452
  "title": "Connect source",
4445
4453
  "sourceFallback": "Source",
4446
- "intro": "Connect {source} to import requirements, RFCs and PRDs, then spawn board structure or attach them to tasks as agent context.",
4454
+ "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
4455
  "disconnect": "Disconnect",
4448
4456
  "connect": "Connect",
4449
4457
  "update": "Update connection",
4450
4458
  "connected": "{source} connected",
4451
4459
  "disconnected": "{source} disconnected",
4452
- "connectFailed": "Could not connect"
4460
+ "connectFailed": "Could not connect",
4461
+ "oauth": {
4462
+ "action": "Connect with {source}",
4463
+ "scopes": "You will be asked to grant: {scopes}",
4464
+ "fallback": "Prefer a token? Use the fields below instead.",
4465
+ "failed": "Could not start the {source} sign-in"
4466
+ }
4453
4467
  },
4454
4468
  "spawn": {
4455
4469
  "title": "Preview structure",
@@ -4464,7 +4478,15 @@
4464
4478
  "summary": "{frames} · {modules} · {tasks}",
4465
4479
  "frameCount": "{count} frame | {count} frames",
4466
4480
  "moduleCount": "{count} module | {count} modules",
4467
- "taskCount": "{count} task | {count} tasks"
4481
+ "taskCount": "{count} task | {count} tasks",
4482
+ "reusedCount": "{count} module reused | {count} modules reused",
4483
+ "intoService": "inside the selected service",
4484
+ "target": {
4485
+ "label": "Add to service",
4486
+ "help": "A design describes screens, not an architecture, so the plan proposes work inside a service that already exists.",
4487
+ "placeholder": "Pick a service",
4488
+ "required": "Pick the service this design belongs to."
4489
+ }
4468
4490
  },
4469
4491
  "taskDocs": {
4470
4492
  "heading": "Context documents",
@@ -4497,6 +4519,20 @@
4497
4519
  "remove": "Remove",
4498
4520
  "linkFailed": "Couldn't update the document link",
4499
4521
  "loadFailed": "Couldn't load document templates"
4522
+ },
4523
+ "startFromDesign": {
4524
+ "title": "Start from a design",
4525
+ "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.",
4526
+ "noSource": "No design source is connected yet. An admin can connect Figma or Zeplin from Integrations.",
4527
+ "linkLabel": "Design link",
4528
+ "linkPlaceholder": "https://www.figma.com/design/…?node-id=1-2",
4529
+ "checking": "Checking the link…",
4530
+ "trimmed": "Trimmed to the supported form of this link.",
4531
+ "widened": "The frame {scope} could not be read, so the whole file is attached instead.",
4532
+ "unchecked": "The link could not be checked right now. It is fetched when the task is created.",
4533
+ "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.",
4534
+ "rejected": "No connected design source recognises this link.",
4535
+ "continue": "Continue"
4500
4536
  }
4501
4537
  },
4502
4538
  "tasks": {
@@ -5058,7 +5094,7 @@
5058
5094
  "suffixFixing": "· fixer addressing comments…",
5059
5095
  "suffixFailing": "· review comments to address",
5060
5096
  "suffixAwaiting": "· awaiting review",
5061
- "reviewPr": "Review pull request on GitHub",
5097
+ "reviewPr": "Review pull request",
5062
5098
  "requestFixHeading": "Request a fix",
5063
5099
  "requestFixDescription": "Describe a change for the fixer to make on the PR branch now (in addition to any review comments, which it addresses automatically).",
5064
5100
  "requestFixPlaceholder": "e.g. rename the helper and add a unit test for the empty-input case",
@@ -5072,12 +5108,12 @@
5072
5108
  },
5073
5109
  "conflicts": {
5074
5110
  "mergeability": "Mergeability",
5075
- "viewPr": "View pull request on GitHub"
5111
+ "viewPr": "View pull request"
5076
5112
  },
5077
5113
  "docQuality": {
5078
5114
  "findings": "Document issues",
5079
5115
  "findingsFallback": "The document passed the structural checks.",
5080
- "viewPr": "View pull request on GitHub"
5116
+ "viewPr": "View pull request"
5081
5117
  },
5082
5118
  "attemptsHeading": "{helper} attempts",
5083
5119
  "attempt": "Attempt {number}",
@@ -7098,7 +7134,33 @@
7098
7134
  },
7099
7135
  "toast": {
7100
7136
  "disconnected": "{provider} disconnected"
7101
- }
7137
+ },
7138
+ "pulls": {
7139
+ "github": {
7140
+ "tab": "Pull requests",
7141
+ "open": "Open PR",
7142
+ "openSubmit": "Open pull request",
7143
+ "merge": "Merge this pull request",
7144
+ "none": "No pull requests synced.",
7145
+ "opened": "Pull request opened",
7146
+ "mergedToast": "PR #{number} merged",
7147
+ "openFailed": "Could not open pull request"
7148
+ },
7149
+ "gitlab": {
7150
+ "tab": "Merge requests",
7151
+ "open": "Open MR",
7152
+ "openSubmit": "Open merge request",
7153
+ "merge": "Merge this merge request",
7154
+ "none": "No merge requests synced.",
7155
+ "opened": "Merge request opened",
7156
+ "mergedToast": "MR !{number} merged",
7157
+ "openFailed": "Could not open merge request"
7158
+ }
7159
+ },
7160
+ "manageHintApp": "Pick the repositories this board should track. The App installation is shared across the account, and each board links its own repositories.",
7161
+ "manageHintToken": "Pick the repositories this board should track. The list is what the connected token can reach, and each board links its own repositories.",
7162
+ "noAvailableReposApp": "The App installation can’t access any repositories yet.",
7163
+ "noAvailableReposToken": "The connected token can’t reach any repositories yet. Check its scope and your access to them."
7102
7164
  },
7103
7165
  "connect": {
7104
7166
  "or": "or",
@@ -7215,7 +7277,8 @@
7215
7277
  "library": "The context fragment library enabled on this deployment",
7216
7278
  "failedRun": "A run that failed",
7217
7279
  "infrastructure": "An execution backend connected to this workspace",
7218
- "advancedTier": "The advanced interface mode"
7280
+ "advancedTier": "The advanced interface mode",
7281
+ "designSource": "A connected design source"
7219
7282
  },
7220
7283
  "overlay": {
7221
7284
  "next": "Next",
@@ -7604,6 +7667,36 @@
7604
7667
  "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
7668
  }
7606
7669
  }
7670
+ },
7671
+ "startFromDesign": {
7672
+ "title": "Start from a design",
7673
+ "description": "Turn a design frame into a task an agent can build.",
7674
+ "steps": {
7675
+ "intro": {
7676
+ "title": "Work from the design",
7677
+ "body": "When the work starts in a design tool, the frame is the brief. This tour attaches one to a new task."
7678
+ },
7679
+ "open": {
7680
+ "title": "Start from a design",
7681
+ "body": "Every service frame carries this button once a design source is connected."
7682
+ },
7683
+ "paste": {
7684
+ "title": "Paste the link",
7685
+ "body": "Copy the link to a frame or a whole file from your design tool and paste it here."
7686
+ },
7687
+ "resolved": {
7688
+ "title": "Check what was attached",
7689
+ "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."
7690
+ },
7691
+ "continue": {
7692
+ "title": "Carry on to the task",
7693
+ "body": "The design is staged on the new task. Describe the outcome you want and create it."
7694
+ },
7695
+ "finish": {
7696
+ "title": "Ready to run",
7697
+ "body": "The agent reads the design's layout, text, components and tokens, and every run re-checks it against the source."
7698
+ }
7699
+ }
7607
7700
  }
7608
7701
  },
7609
7702
  "nudge": {