@cat-factory/app 0.273.2 → 0.275.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 (42) hide show
  1. package/README.md +69 -2
  2. package/app/components/board/nodes/BlockNode.vue +7 -1
  3. package/app/components/layout/CommandBar.vue +8 -1
  4. package/app/components/layout/NotificationsInbox.vue +4 -0
  5. package/app/components/layout/RolePrompt.vue +75 -0
  6. package/app/components/layout/SideBar.vue +22 -13
  7. package/app/components/layout/UiRoleSwitcher.vue +73 -0
  8. package/app/components/slack/SlackPanel.vue +2 -0
  9. package/app/composables/useNavContributions.ts +3 -0
  10. package/app/docs/consumer-extensions.md +20 -6
  11. package/app/modular/external-tools.spec.ts +0 -45
  12. package/app/modular/external-tools.ts +12 -23
  13. package/app/modular/nav-contributions.spec.ts +176 -17
  14. package/app/modular/nav-contributions.ts +106 -23
  15. package/app/modular/nav-gates.ts +11 -2
  16. package/app/modular/registry.spec.ts +1 -0
  17. package/app/modular/tutorial-tours.spec.ts +5 -3
  18. package/app/modular/tutorial-tours.ts +53 -8
  19. package/app/pages/index.vue +36 -7
  20. package/app/stores/launchPrompt.ts +63 -0
  21. package/app/stores/tutorial.ts +4 -4
  22. package/app/stores/uiMode.spec.ts +11 -0
  23. package/app/stores/uiMode.ts +14 -2
  24. package/app/stores/uiRole.spec.ts +185 -0
  25. package/app/stores/uiRole.ts +86 -0
  26. package/app/utils/catalog.spec.ts +5 -10
  27. package/app/utils/catalog.ts +13 -0
  28. package/app/utils/uiMode.spec.ts +12 -0
  29. package/app/utils/uiMode.ts +24 -6
  30. package/app/utils/uiRole.ts +123 -0
  31. package/i18n/locales/de.json +29 -0
  32. package/i18n/locales/en.json +35 -0
  33. package/i18n/locales/es.json +29 -0
  34. package/i18n/locales/fr.json +29 -0
  35. package/i18n/locales/he.json +29 -0
  36. package/i18n/locales/it.json +29 -0
  37. package/i18n/locales/ja.json +29 -0
  38. package/i18n/locales/pl.json +29 -0
  39. package/i18n/locales/tr.json +29 -0
  40. package/i18n/locales/uk.json +29 -0
  41. package/package.json +2 -2
  42. package/app/stores/tutorial.prompt.ts +0 -59
@@ -0,0 +1,123 @@
1
+ /**
2
+ * The ROLE the person at the keyboard is here to do: `engineer`, `product-manager` or
3
+ * `designer`. Pure resolution logic, kept out of the store so it is testable without Pinia.
4
+ *
5
+ * This is the third narrowing axis in the SPA and it answers a different question from the
6
+ * other two. The interface MODE (`utils/uiMode.ts`) asks how much of the product to show;
7
+ * the AGENT TIER asks how deep into the agent catalog one surface reaches; the role asks
8
+ * WHICH JOB the surfaces are for. Engineer and product-manager do the same job here (plan
9
+ * work, run it, review and merge it), so they resolve to the same surface today and are kept
10
+ * as separate members because the copy people pick themselves by is the thing that makes the
11
+ * question answerable, and because the two diverge the moment one of them gets a surface the
12
+ * other does not.
13
+ *
14
+ * It is NOT authorization. Workspace RBAC (ADR 0025) decides what a request may do, is
15
+ * enforced server-side, and cannot be widened from a browser; this decides what the SPA
16
+ * OFFERS, and every role resolves to a surface the caller's permissions still gate. A role
17
+ * that hid a permitted destination would be a lie about the product, which is why the way
18
+ * back out of a narrowed role is reachable from inside it (see `UiRoleSwitcher`).
19
+ */
20
+ export const UI_ROLES = ['engineer', 'product-manager', 'designer'] as const
21
+
22
+ export type UiRole = (typeof UI_ROLES)[number]
23
+
24
+ /**
25
+ * The role a browser gets before the person picks one.
26
+ *
27
+ * The FULL surface, deliberately: an unanswered question must never take capability away.
28
+ * The first-run prompt is offered once per session until it is answered (see `stores/uiRole.ts`),
29
+ * and closing it leaves the whole product in place rather than guessing a narrower persona.
30
+ */
31
+ export const DEFAULT_UI_ROLE: UiRole = 'engineer'
32
+
33
+ /**
34
+ * How much of the SPA a role is offered.
35
+ *
36
+ * - `full`: every destination the caller's permissions and the interface tier allow.
37
+ * - `intake`: the services already on the board, the tasks in flight on them, and the routes
38
+ * that bring new work IN (a new task, a task from a tracker ticket, a task from a design).
39
+ * None of the platform configuration behind them: an intake role never sets up a repo, a
40
+ * model, a pipeline or an integration, so carrying those destinations costs the surface more
41
+ * than the capability is worth there.
42
+ *
43
+ * A SURFACE rather than a per-role list of ids, because the narrowing is a property of the
44
+ * WORK, not of the persona's name: a second delivery-only persona reuses `intake` instead of
45
+ * copying its allow-list, and nothing has to be re-decided per role. The mapping is an
46
+ * exhaustive Record, so a new role fails the build until it picks a side.
47
+ */
48
+ export type RoleSurface = 'full' | 'intake'
49
+
50
+ export const ROLE_SURFACES: Record<UiRole, RoleSurface> = {
51
+ engineer: 'full',
52
+ 'product-manager': 'full',
53
+ designer: 'intake',
54
+ }
55
+
56
+ /**
57
+ * How each role is PRESENTED: its name, the one line that says what picking it gives you, and
58
+ * its glyph. One table rather than a copy in the switcher and another in the first-run prompt,
59
+ * because the two surfaces must not be able to describe the same role differently. The prompt
60
+ * is where the choice is explained and the switcher is where it is recognised later.
61
+ *
62
+ * i18n keys rather than strings (no display copy in code), and an exhaustive Record, so a new
63
+ * role fails the build until it has both. The keys themselves are invisible to typed messages
64
+ * and to `i18n:check`, since neither sees a key reached through a table lookup rather than
65
+ * written literally at the call site, which is what `uiRole.spec.ts` asserts against the base
66
+ * catalog instead.
67
+ */
68
+ export interface RolePresentation {
69
+ labelKey: string
70
+ hintKey: string
71
+ icon: string
72
+ }
73
+
74
+ export const ROLE_PRESENTATION: Record<UiRole, RolePresentation> = {
75
+ engineer: {
76
+ labelKey: 'uiRole.roles.engineer',
77
+ hintKey: 'uiRole.hints.engineer',
78
+ icon: 'i-lucide-code-xml',
79
+ },
80
+ 'product-manager': {
81
+ labelKey: 'uiRole.roles.productManager',
82
+ hintKey: 'uiRole.hints.productManager',
83
+ icon: 'i-lucide-clipboard-list',
84
+ },
85
+ designer: {
86
+ labelKey: 'uiRole.roles.designer',
87
+ hintKey: 'uiRole.hints.designer',
88
+ icon: 'i-lucide-frame',
89
+ },
90
+ }
91
+
92
+ /**
93
+ * Coerce an untrusted value (a restored localStorage blob, possibly written by an older
94
+ * build or hand-edited) to a known role. Anything unrecognised resolves to `null`, i.e.
95
+ * "nobody has picked one", so {@link resolveUiRole} falls back to the default and the
96
+ * first-run prompt asks again. Never throws: a stale persisted value must not fail the boot.
97
+ */
98
+ export function parseUiRole(raw: unknown): UiRole | null {
99
+ if (typeof raw !== 'string') return null
100
+ const value = raw.trim().toLowerCase()
101
+ return (UI_ROLES as readonly string[]).includes(value) ? (value as UiRole) : null
102
+ }
103
+
104
+ /** Apply the precedence: the person's own stored choice → {@link DEFAULT_UI_ROLE}. */
105
+ export function resolveUiRole(stored: UiRole | null): UiRole {
106
+ return stored ?? DEFAULT_UI_ROLE
107
+ }
108
+
109
+ /** Which surface a role is offered. */
110
+ export function roleSurface(role: UiRole): RoleSurface {
111
+ return ROLE_SURFACES[role]
112
+ }
113
+
114
+ /**
115
+ * Whether the role sees the whole product.
116
+ *
117
+ * Stated POSITIVELY, and read that way everywhere (the `fullSurface` nav gate, the
118
+ * `intake` contribution flag it admits): a narrowing expressed as "not hidden" inverts once
119
+ * per reader and the reader that gets it backwards shows a designer the operator dashboard.
120
+ */
121
+ export function isFullSurfaceRole(role: UiRole): boolean {
122
+ return roleSurface(role) === 'full'
123
+ }
@@ -2490,6 +2490,7 @@
2490
2490
  "pipeline_complete": "Bestätigen & mergen",
2491
2491
  "ci_failed": "Lauf wiederholen",
2492
2492
  "test_failed": "Lauf wiederholen",
2493
+ "deploy_blocked": "Lauf wiederholen",
2493
2494
  "requirement_review": "Als gelesen markieren",
2494
2495
  "clarity_review": "Als gelesen markieren",
2495
2496
  "release_regression": "Bestätigen",
@@ -2666,6 +2667,7 @@
2666
2667
  "shortcuts": "Tastenkürzel",
2667
2668
  "bugHunt": "Fehlerjagd",
2668
2669
  "toggleUiMode": "Oberflächenmodus wechseln",
2670
+ "chooseRole": "Rolle wechseln",
2669
2671
  "foundationalServices": "Basisdienste",
2670
2672
  "notificationSettings": "Benachrichtigungs-Routing verwalten"
2671
2673
  },
@@ -2690,6 +2692,7 @@
2690
2692
  "shortcuts": "keyboard shortcuts keys hotkeys cheatsheet help",
2691
2693
  "bugHunt": "fehler bug jagd triage backlog tracker nicht zugewiesen",
2692
2694
  "toggleUiMode": "oberfläche modus einfach erweitert anzeigen ausblenden",
2695
+ "chooseRole": "rolle entwickler produktmanager designer persona einfachere ansicht",
2693
2696
  "tutorial": "tutorial tour einführung hilfe onboarding lernen grundlagen",
2694
2697
  "foundationalServices": "gemeinsame Fähigkeit Plattform Dienst API Vertrag OpenAPI Katalog",
2695
2698
  "notificationSettings": "benachrichtigungen e-mail routing kanäle posteingang"
@@ -5664,6 +5667,25 @@
5664
5667
  "switchTo": "Zu „{mode}“ wechseln",
5665
5668
  "pinned": "Von dieser Installation festgelegt"
5666
5669
  },
5670
+ "uiRole": {
5671
+ "switcher": "Deine Rolle",
5672
+ "roles": {
5673
+ "engineer": "Entwickler",
5674
+ "productManager": "Produktmanager",
5675
+ "designer": "Designer"
5676
+ },
5677
+ "hints": {
5678
+ "engineer": "Alles: Arbeit planen, ausführen, prüfen und mergen sowie die Plattform dahinter einrichten.",
5679
+ "productManager": "Dieselben Flächen wie beim Entwickler: Arbeit planen, ausführen und bis zum Merge begleiten.",
5680
+ "designer": "Ein einfacheres Board: die Services, die schon darauf sind, die laufende Arbeit und neue Aufgaben aus einem Design oder Issue."
5681
+ },
5682
+ "prompt": {
5683
+ "title": "Woran arbeitest du?",
5684
+ "intro": "Wähle das Passendste, dann startet die App mit den Flächen, die diese Aufgabe braucht. Das ändert nur, was du SIEHST, nie was du darfst.",
5685
+ "change": "Du kannst das jederzeit oben in der Seitenleiste ändern.",
5686
+ "later": "Jetzt nicht"
5687
+ }
5688
+ },
5667
5689
  "common": {
5668
5690
  "loading": "Wird geladen…",
5669
5691
  "save": "Speichern",
@@ -5966,6 +5988,7 @@
5966
5988
  "pipeline_complete": "Pipeline abgeschlossen",
5967
5989
  "ci_failed": "CI fehlgeschlagen",
5968
5990
  "test_failed": "Tests fehlgeschlagen",
5991
+ "deploy_blocked": "Deployment blockiert",
5969
5992
  "requirement_review": "Anforderungs-Review",
5970
5993
  "clarity_review": "Klarheits-Review",
5971
5994
  "release_regression": "Release-Regression",
@@ -6029,6 +6052,7 @@
6029
6052
  "pipeline_complete": "Pipeline abgeschlossen",
6030
6053
  "ci_failed": "CI fehlgeschlagen",
6031
6054
  "test_failed": "Tests fehlgeschlagen",
6055
+ "deploy_blocked": "Deployment blockiert",
6032
6056
  "requirement_review": "Anforderungs-Review",
6033
6057
  "clarity_review": "Klarheits-Review",
6034
6058
  "release_regression": "Release-Regression",
@@ -7450,6 +7474,7 @@
7450
7474
  "failedRun": "Ein fehlgeschlagener Lauf",
7451
7475
  "infrastructure": "Ein mit diesem Workspace verbundenes Ausführungs-Backend",
7452
7476
  "advancedTier": "Der erweiterte Oberflächenmodus",
7477
+ "fullSurface": "Die Rolle „Entwickler“ oder „Produktmanager“",
7453
7478
  "designSource": "Eine verbundene Design-Quelle"
7454
7479
  },
7455
7480
  "overlay": {
@@ -7491,6 +7516,10 @@
7491
7516
  "title": "Board-Steuerung",
7492
7517
  "body": "Mit diesen Steuerelementen zoomst du hinein und heraus oder bringst das ganze Board ins Bild."
7493
7518
  },
7519
+ "role": {
7520
+ "title": "Deine Rolle",
7521
+ "body": "Das Board richtet sich nach deiner Aufgabe: Entwickler und Produktmanager sehen alle Flächen, Designer eine einfachere, die Arbeit hereinholt und verfolgt. Du kannst das hier jederzeit ändern."
7522
+ },
7494
7523
  "interfaceTier": {
7495
7524
  "title": "Einfach und erweitert",
7496
7525
  "body": "Die Oberfläche startet im einfachen Modus, der die alltäglichen Arbeitsflächen zeigt. Wechsle hier auf erweitert, wenn du zusätzlich die Flächen für Experimente, Bootstrap und Betrieb brauchst."
@@ -38,6 +38,31 @@
38
38
  },
39
39
  "pinned": "Set by this deployment"
40
40
  },
41
+ "uiRole": {
42
+ "switcher": "Your role",
43
+ "@switcher": {
44
+ "description": "Label above the picker that chooses which job the person does (Engineer, Product manager, Designer). It tunes which surfaces the app shows; it is NOT a permission or a job title in an org chart."
45
+ },
46
+ "roles": {
47
+ "engineer": "Engineer",
48
+ "productManager": "Product manager",
49
+ "designer": "Designer",
50
+ "@designer": {
51
+ "description": "A product/UX designer: the person who makes the designs the work is built from. Not a 'designer' in any other sense."
52
+ }
53
+ },
54
+ "hints": {
55
+ "engineer": "Everything: plan work, run it, review and merge it, and set up the platform it runs on.",
56
+ "productManager": "The same surfaces as an engineer: plan work, run it, and follow it through to a merge.",
57
+ "designer": "A simpler board: the services already on it, the work in flight, and new tasks from a design or a ticket."
58
+ },
59
+ "prompt": {
60
+ "title": "What do you work on?",
61
+ "intro": "Pick the closest match and the app opens on the surfaces that job needs. This changes what you SEE, never what you are allowed to do.",
62
+ "change": "You can change this at any time from the top of the sidebar.",
63
+ "later": "Not now"
64
+ }
65
+ },
41
66
  "common": {
42
67
  "loading": "Loading…",
43
68
  "save": "Save",
@@ -2317,6 +2342,7 @@
2317
2342
  "pipeline_complete": "Confirm & merge",
2318
2343
  "ci_failed": "Retry run",
2319
2344
  "test_failed": "Retry run",
2345
+ "deploy_blocked": "Retry run",
2320
2346
  "requirement_review": "Mark read",
2321
2347
  "clarity_review": "Mark read",
2322
2348
  "release_regression": "Acknowledge",
@@ -2511,6 +2537,7 @@
2511
2537
  "shortcuts": "Keyboard shortcuts",
2512
2538
  "bugHunt": "Bug hunt",
2513
2539
  "toggleUiMode": "Switch interface mode",
2540
+ "chooseRole": "Change your role",
2514
2541
  "foundationalServices": "Foundational services",
2515
2542
  "notificationSettings": "Manage notification routing"
2516
2543
  },
@@ -2535,6 +2562,7 @@
2535
2562
  "shortcuts": "keyboard shortcuts keys hotkeys cheatsheet help",
2536
2563
  "bugHunt": "bug hunt triage backlog issue tracker unassigned",
2537
2564
  "toggleUiMode": "interface mode basic advanced simple expert show hide",
2565
+ "chooseRole": "role engineer product manager designer persona simpler view",
2538
2566
  "tutorial": "tutorial onboarding tour guide help learn basics",
2539
2567
  "foundationalServices": "shared capability platform service api contract openapi catalog",
2540
2568
  "notificationSettings": "notifications email routing channels inbox"
@@ -4544,6 +4572,7 @@
4544
4572
  "pipeline_complete": "Pipeline complete",
4545
4573
  "ci_failed": "CI failed",
4546
4574
  "test_failed": "Tests failed",
4575
+ "deploy_blocked": "Deployment blocked",
4547
4576
  "requirement_review": "Requirement review",
4548
4577
  "clarity_review": "Clarity review",
4549
4578
  "release_regression": "Release regression",
@@ -4607,6 +4636,7 @@
4607
4636
  "pipeline_complete": "Pipeline complete",
4608
4637
  "ci_failed": "CI failed",
4609
4638
  "test_failed": "Tests failed",
4639
+ "deploy_blocked": "Deployment blocked",
4610
4640
  "requirement_review": "Requirement review",
4611
4641
  "clarity_review": "Clarity review",
4612
4642
  "release_regression": "Release regression",
@@ -7724,6 +7754,7 @@
7724
7754
  "failedRun": "A run that failed",
7725
7755
  "infrastructure": "An execution backend connected to this workspace",
7726
7756
  "advancedTier": "The advanced interface mode",
7757
+ "fullSurface": "The Engineer or Product manager role",
7727
7758
  "designSource": "A connected design source"
7728
7759
  },
7729
7760
  "overlay": {
@@ -7771,6 +7802,10 @@
7771
7802
  "title": "Board controls",
7772
7803
  "body": "Zoom in and out or fit the whole board into view with these controls."
7773
7804
  },
7805
+ "role": {
7806
+ "title": "Your role",
7807
+ "body": "The board is tuned to the job you do. Engineers and product managers get every surface; designers get a simpler one that brings work in and follows it. Change it here whenever you like."
7808
+ },
7774
7809
  "interfaceTier": {
7775
7810
  "title": "Basic and advanced",
7776
7811
  "body": "The interface starts in basic mode, which shows the everyday delivery surfaces. Switch to advanced here when you also want the experimentation, bootstrap and operator surfaces."
@@ -32,6 +32,25 @@
32
32
  "switchTo": "Cambiar a {mode}",
33
33
  "pinned": "Definido por este despliegue"
34
34
  },
35
+ "uiRole": {
36
+ "switcher": "Tu rol",
37
+ "roles": {
38
+ "engineer": "Ingeniero",
39
+ "productManager": "Gestor de producto",
40
+ "designer": "Diseñador"
41
+ },
42
+ "hints": {
43
+ "engineer": "Todo: planificar el trabajo, ejecutarlo, revisarlo y fusionarlo, y configurar la plataforma que lo ejecuta.",
44
+ "productManager": "Las mismas superficies que un ingeniero: planificar el trabajo, ejecutarlo y seguirlo hasta la fusión.",
45
+ "designer": "Un tablero más sencillo: los servicios que ya están en él, el trabajo en curso y tareas nuevas desde un diseño o una incidencia."
46
+ },
47
+ "prompt": {
48
+ "title": "¿En qué trabajas?",
49
+ "intro": "Elige la opción más parecida y la app se abrirá en las superficies que necesita ese trabajo. Esto cambia lo que VES, nunca lo que puedes hacer.",
50
+ "change": "Puedes cambiarlo cuando quieras desde la parte superior de la barra lateral.",
51
+ "later": "Ahora no"
52
+ }
53
+ },
35
54
  "common": {
36
55
  "loading": "Cargando…",
37
56
  "save": "Guardar",
@@ -2204,6 +2223,7 @@
2204
2223
  "pipeline_complete": "Confirmar y fusionar",
2205
2224
  "ci_failed": "Reintentar ejecución",
2206
2225
  "test_failed": "Reintentar ejecución",
2226
+ "deploy_blocked": "Reintentar ejecución",
2207
2227
  "requirement_review": "Marcar como leída",
2208
2228
  "clarity_review": "Marcar como leída",
2209
2229
  "release_regression": "Confirmar recepción",
@@ -2386,6 +2406,7 @@
2386
2406
  "shortcuts": "Atajos de teclado",
2387
2407
  "bugHunt": "Caza de errores",
2388
2408
  "toggleUiMode": "Cambiar el modo de interfaz",
2409
+ "chooseRole": "Cambiar tu rol",
2389
2410
  "foundationalServices": "Servicios fundamentales",
2390
2411
  "notificationSettings": "Gestionar el enrutamiento de notificaciones"
2391
2412
  },
@@ -2410,6 +2431,7 @@
2410
2431
  "shortcuts": "atajos teclado teclas ayuda",
2411
2432
  "bugHunt": "error bug caza triaje backlog incidencias sin asignar",
2412
2433
  "toggleUiMode": "interfaz modo básico avanzado mostrar ocultar",
2434
+ "chooseRole": "rol ingeniero gestor de producto diseñador perfil vista sencilla",
2413
2435
  "tutorial": "tutorial recorrido guía ayuda aprender introducción",
2414
2436
  "foundationalServices": "capacidad compartida plataforma servicio api contrato openapi catálogo",
2415
2437
  "notificationSettings": "notificaciones correo enrutamiento canales bandeja"
@@ -4389,6 +4411,7 @@
4389
4411
  "pipeline_complete": "Pipeline completado",
4390
4412
  "ci_failed": "CI fallido",
4391
4413
  "test_failed": "Pruebas fallidas",
4414
+ "deploy_blocked": "Despliegue bloqueado",
4392
4415
  "requirement_review": "Revision de requisitos",
4393
4416
  "clarity_review": "Revision de claridad",
4394
4417
  "release_regression": "Regresion de version",
@@ -4452,6 +4475,7 @@
4452
4475
  "pipeline_complete": "Pipeline completado",
4453
4476
  "ci_failed": "CI fallido",
4454
4477
  "test_failed": "Pruebas fallidas",
4478
+ "deploy_blocked": "Despliegue bloqueado",
4455
4479
  "requirement_review": "Revision de requisitos",
4456
4480
  "clarity_review": "Revision de claridad",
4457
4481
  "release_regression": "Regresion de version",
@@ -7450,6 +7474,7 @@
7450
7474
  "failedRun": "Una ejecución que ha fallado",
7451
7475
  "infrastructure": "Un backend de ejecución conectado a este espacio de trabajo",
7452
7476
  "advancedTier": "El modo de interfaz avanzado",
7477
+ "fullSurface": "El rol de Ingeniero o Gestor de producto",
7453
7478
  "designSource": "Una fuente de diseño conectada"
7454
7479
  },
7455
7480
  "overlay": {
@@ -7491,6 +7516,10 @@
7491
7516
  "title": "Controles del tablero",
7492
7517
  "body": "Con estos controles acercas, alejas o ajustas todo el tablero a la vista."
7493
7518
  },
7519
+ "role": {
7520
+ "title": "Tu rol",
7521
+ "body": "El tablero se adapta al trabajo que haces: los ingenieros y los gestores de producto ven todas las superficies; los diseñadores, una más sencilla que trae trabajo nuevo y lo sigue. Puedes cambiarlo aquí cuando quieras."
7522
+ },
7494
7523
  "interfaceTier": {
7495
7524
  "title": "Básico y avanzado",
7496
7525
  "body": "La interfaz arranca en modo básico, que muestra las superficies del trabajo diario. Cambia aquí a avanzado cuando también quieras las de experimentación, arranque de repositorios y operación."
@@ -32,6 +32,25 @@
32
32
  "switchTo": "Passer en {mode}",
33
33
  "pinned": "Défini par ce déploiement"
34
34
  },
35
+ "uiRole": {
36
+ "switcher": "Votre rôle",
37
+ "roles": {
38
+ "engineer": "Ingénieur",
39
+ "productManager": "Chef de produit",
40
+ "designer": "Designer"
41
+ },
42
+ "hints": {
43
+ "engineer": "Tout : planifier le travail, l'exécuter, le relire et le fusionner, et configurer la plateforme qui l'exécute.",
44
+ "productManager": "Les mêmes surfaces qu'un ingénieur : planifier le travail, l'exécuter et le suivre jusqu'à la fusion.",
45
+ "designer": "Un tableau plus simple : les services déjà présents, le travail en cours et de nouvelles tâches à partir d'une maquette ou d'un ticket."
46
+ },
47
+ "prompt": {
48
+ "title": "Sur quoi travaillez-vous ?",
49
+ "intro": "Choisissez ce qui correspond le mieux : l'application s'ouvrira sur les surfaces dont ce métier a besoin. Cela change ce que vous VOYEZ, jamais ce que vous avez le droit de faire.",
50
+ "change": "Vous pouvez changer ce choix à tout moment en haut de la barre latérale.",
51
+ "later": "Pas maintenant"
52
+ }
53
+ },
35
54
  "common": {
36
55
  "loading": "Chargement…",
37
56
  "save": "Enregistrer",
@@ -2204,6 +2223,7 @@
2204
2223
  "pipeline_complete": "Confirmer et fusionner",
2205
2224
  "ci_failed": "Relancer l'exécution",
2206
2225
  "test_failed": "Relancer l'exécution",
2226
+ "deploy_blocked": "Relancer l'exécution",
2207
2227
  "requirement_review": "Marquer comme lu",
2208
2228
  "clarity_review": "Marquer comme lu",
2209
2229
  "release_regression": "Accuser réception",
@@ -2386,6 +2406,7 @@
2386
2406
  "shortcuts": "Raccourcis clavier",
2387
2407
  "bugHunt": "Chasse aux bugs",
2388
2408
  "toggleUiMode": "Changer le mode d'interface",
2409
+ "chooseRole": "Changer de rôle",
2389
2410
  "foundationalServices": "Services fondamentaux",
2390
2411
  "notificationSettings": "Gérer le routage des notifications"
2391
2412
  },
@@ -2410,6 +2431,7 @@
2410
2431
  "shortcuts": "raccourcis clavier touches aide",
2411
2432
  "bugHunt": "bug chasse tri backlog tickets non assignés",
2412
2433
  "toggleUiMode": "interface mode simple avancé afficher masquer",
2434
+ "chooseRole": "rôle ingénieur chef de produit designer profil vue simplifiée",
2413
2435
  "tutorial": "tutoriel visite guide aide apprendre découverte",
2414
2436
  "foundationalServices": "capacité partagée plateforme service api contrat openapi catalogue",
2415
2437
  "notificationSettings": "notifications e-mail routage canaux boîte"
@@ -4389,6 +4411,7 @@
4389
4411
  "pipeline_complete": "Pipeline termine",
4390
4412
  "ci_failed": "Echec de CI",
4391
4413
  "test_failed": "Echec des tests",
4414
+ "deploy_blocked": "Déploiement bloqué",
4392
4415
  "requirement_review": "Revue des exigences",
4393
4416
  "clarity_review": "Revue de clarte",
4394
4417
  "release_regression": "Regression de version",
@@ -4452,6 +4475,7 @@
4452
4475
  "pipeline_complete": "Pipeline termine",
4453
4476
  "ci_failed": "Echec de CI",
4454
4477
  "test_failed": "Echec des tests",
4478
+ "deploy_blocked": "Déploiement bloqué",
4455
4479
  "requirement_review": "Revue des exigences",
4456
4480
  "clarity_review": "Revue de clarte",
4457
4481
  "release_regression": "Regression de version",
@@ -7450,6 +7474,7 @@
7450
7474
  "failedRun": "Une exécution en échec",
7451
7475
  "infrastructure": "Un backend d’exécution connecté à cet espace de travail",
7452
7476
  "advancedTier": "Le mode d’interface avancé",
7477
+ "fullSurface": "Le rôle Ingénieur ou Chef de produit",
7453
7478
  "designSource": "Une source de design connectée"
7454
7479
  },
7455
7480
  "overlay": {
@@ -7491,6 +7516,10 @@
7491
7516
  "title": "Contrôles du tableau",
7492
7517
  "body": "Ces contrôles permettent de zoomer ou d'ajuster tout le tableau à la vue."
7493
7518
  },
7519
+ "role": {
7520
+ "title": "Votre rôle",
7521
+ "body": "Le tableau s'adapte au métier que vous exercez : les ingénieurs et les chefs de produit voient toutes les surfaces, les designers une version plus simple qui fait entrer le travail et le suit. Vous pouvez en changer ici à tout moment."
7522
+ },
7494
7523
  "interfaceTier": {
7495
7524
  "title": "Simple et avancé",
7496
7525
  "body": "L'interface démarre en mode simple, qui montre les surfaces de travail quotidiennes. Passez en avancé ici lorsque vous voulez aussi les surfaces d'expérimentation, d'amorçage et d'exploitation."
@@ -32,6 +32,25 @@
32
32
  "switchTo": "מעבר ל{mode}",
33
33
  "pinned": "נקבע על ידי פריסה זו"
34
34
  },
35
+ "uiRole": {
36
+ "switcher": "התפקיד שלך",
37
+ "roles": {
38
+ "engineer": "מהנדס",
39
+ "productManager": "מנהל מוצר",
40
+ "designer": "מעצב"
41
+ },
42
+ "hints": {
43
+ "engineer": "הכול: לתכנן עבודה, להריץ אותה, לבדוק ולמזג, וגם להגדיר את הפלטפורמה שמריצה אותה.",
44
+ "productManager": "אותם משטחים כמו למהנדס: לתכנן עבודה, להריץ אותה ולעקוב אחריה עד המיזוג.",
45
+ "designer": "לוח פשוט יותר: השירותים שכבר נמצאים בו, העבודה שבתהליך ומשימות חדשות מעיצוב או מאישיו."
46
+ },
47
+ "prompt": {
48
+ "title": "על מה אתה עובד?",
49
+ "intro": "בחר את האפשרות הקרובה ביותר, והאפליקציה תיפתח במשטחים שהתפקיד הזה צריך. זה משנה מה שאתה רואה, לא מה שמותר לך לעשות.",
50
+ "change": "אפשר לשנות זאת בכל עת בראש סרגל הצד.",
51
+ "later": "לא כרגע"
52
+ }
53
+ },
35
54
  "common": {
36
55
  "loading": "טוען…",
37
56
  "save": "שמור",
@@ -2204,6 +2223,7 @@
2204
2223
  "pipeline_complete": "אשר ומזג",
2205
2224
  "ci_failed": "נסה הרצה שוב",
2206
2225
  "test_failed": "נסה הרצה שוב",
2226
+ "deploy_blocked": "נסה הרצה שוב",
2207
2227
  "requirement_review": "סמן כנקרא",
2208
2228
  "clarity_review": "סמן כנקרא",
2209
2229
  "release_regression": "אשר",
@@ -2386,6 +2406,7 @@
2386
2406
  "shortcuts": "קיצורי מקלדת",
2387
2407
  "bugHunt": "ציד באגים",
2388
2408
  "toggleUiMode": "החלפת מצב ממשק",
2409
+ "chooseRole": "החלפת תפקיד",
2389
2410
  "foundationalServices": "שירותי תשתית",
2390
2411
  "notificationSettings": "ניהול ניתוב התראות"
2391
2412
  },
@@ -2410,6 +2431,7 @@
2410
2431
  "shortcuts": "קיצורים מקלדת מקשים עזרה",
2411
2432
  "bugHunt": "באג bug ציד מיון צבר פניות לא משויכות",
2412
2433
  "toggleUiMode": "ממשק מצב בסיסי מתקדם הצגה הסתרה",
2434
+ "chooseRole": "תפקיד מהנדס מנהל מוצר מעצב תצוגה פשוטה",
2413
2435
  "tutorial": "מדריך סיור עזרה הדרכה לימוד",
2414
2436
  "foundationalServices": "יכולת משותפת פלטפורמה שירות api חוזה openapi קטלוג",
2415
2437
  "notificationSettings": "התראות אימייל ניתוב ערוצים תיבה"
@@ -4389,6 +4411,7 @@
4389
4411
  "pipeline_complete": "הצינור הושלם",
4390
4412
  "ci_failed": "CI נכשל",
4391
4413
  "test_failed": "הבדיקות נכשלו",
4414
+ "deploy_blocked": "הפריסה חסומה",
4392
4415
  "requirement_review": "סקירת דרישות",
4393
4416
  "clarity_review": "סקירת בהירות",
4394
4417
  "release_regression": "רגרסיית שחרור",
@@ -4452,6 +4475,7 @@
4452
4475
  "pipeline_complete": "הצינור הושלם",
4453
4476
  "ci_failed": "CI נכשל",
4454
4477
  "test_failed": "הבדיקות נכשלו",
4478
+ "deploy_blocked": "הפריסה חסומה",
4455
4479
  "requirement_review": "סקירת דרישות",
4456
4480
  "clarity_review": "סקירת בהירות",
4457
4481
  "release_regression": "רגרסיית שחרור",
@@ -7450,6 +7474,7 @@
7450
7474
  "failedRun": "ריצה שנכשלה",
7451
7475
  "infrastructure": "עורף הרצה המחובר למרחב העבודה הזה",
7452
7476
  "advancedTier": "מצב הממשק המתקדם",
7477
+ "fullSurface": "תפקיד מהנדס או מנהל מוצר",
7453
7478
  "designSource": "מקור עיצוב מחובר"
7454
7479
  },
7455
7480
  "overlay": {
@@ -7491,6 +7516,10 @@
7491
7516
  "title": "פקדי הלוח",
7492
7517
  "body": "בעזרת הפקדים האלה מתקרבים, מתרחקים או מתאימים את כל הלוח לתצוגה."
7493
7518
  },
7519
+ "role": {
7520
+ "title": "התפקיד שלך",
7521
+ "body": "הלוח מותאם לתפקיד שלך: מהנדסים ומנהלי מוצר רואים את כל המשטחים, ומעצבים רואים לוח פשוט יותר שמכניס עבודה ועוקב אחריה. אפשר לשנות זאת כאן בכל עת."
7522
+ },
7494
7523
  "interfaceTier": {
7495
7524
  "title": "בסיסי ומתקדם",
7496
7525
  "body": "הממשק נפתח במצב הבסיסי, שמציג את משטחי העבודה היומיומיים. עבור כאן למתקדם כשאתה רוצה גם את משטחי הניסויים, הקמת המאגרים והתפעול."
@@ -2490,6 +2490,7 @@
2490
2490
  "pipeline_complete": "Conferma e unisci",
2491
2491
  "ci_failed": "Riprova l'esecuzione",
2492
2492
  "test_failed": "Riprova l'esecuzione",
2493
+ "deploy_blocked": "Riprova l'esecuzione",
2493
2494
  "requirement_review": "Segna come letto",
2494
2495
  "clarity_review": "Segna come letto",
2495
2496
  "release_regression": "Conferma presa visione",
@@ -2666,6 +2667,7 @@
2666
2667
  "shortcuts": "Scorciatoie da tastiera",
2667
2668
  "bugHunt": "Caccia ai bug",
2668
2669
  "toggleUiMode": "Cambia modalità interfaccia",
2670
+ "chooseRole": "Cambia il tuo ruolo",
2669
2671
  "foundationalServices": "Servizi fondamentali",
2670
2672
  "notificationSettings": "Gestisci l'instradamento delle notifiche"
2671
2673
  },
@@ -2690,6 +2692,7 @@
2690
2692
  "shortcuts": "scorciatoie da tastiera tasti hotkey cheatsheet aiuto",
2691
2693
  "bugHunt": "bug caccia triage backlog ticket non assegnati",
2692
2694
  "toggleUiMode": "interfaccia modalità base avanzata mostra nascondi",
2695
+ "chooseRole": "ruolo ingegnere responsabile di prodotto designer profilo vista semplice",
2693
2696
  "tutorial": "tutorial tour guida aiuto imparare introduzione",
2694
2697
  "foundationalServices": "capacità condivisa piattaforma servizio api contratto openapi catalogo",
2695
2698
  "notificationSettings": "notifiche email instradamento canali casella"
@@ -5664,6 +5667,25 @@
5664
5667
  "switchTo": "Passa alla modalità {mode}",
5665
5668
  "pinned": "Impostato da questo deployment"
5666
5669
  },
5670
+ "uiRole": {
5671
+ "switcher": "Il tuo ruolo",
5672
+ "roles": {
5673
+ "engineer": "Ingegnere",
5674
+ "productManager": "Responsabile di prodotto",
5675
+ "designer": "Designer"
5676
+ },
5677
+ "hints": {
5678
+ "engineer": "Tutto: pianificare il lavoro, eseguirlo, revisionarlo e fare il merge, e configurare la piattaforma che lo esegue.",
5679
+ "productManager": "Le stesse superfici di un ingegnere: pianificare il lavoro, eseguirlo e seguirlo fino al merge.",
5680
+ "designer": "Una board più semplice: i servizi già presenti, il lavoro in corso e nuove attività da un design o da una issue."
5681
+ },
5682
+ "prompt": {
5683
+ "title": "Su cosa lavori?",
5684
+ "intro": "Scegli l'opzione più vicina e l'app si aprirà sulle superfici che quel lavoro richiede. Cambia ciò che VEDI, non ciò che ti è permesso fare.",
5685
+ "change": "Puoi cambiarlo quando vuoi dall'alto della barra laterale.",
5686
+ "later": "Non ora"
5687
+ }
5688
+ },
5667
5689
  "common": {
5668
5690
  "loading": "Caricamento…",
5669
5691
  "save": "Salva",
@@ -5966,6 +5988,7 @@
5966
5988
  "pipeline_complete": "Pipeline completata",
5967
5989
  "ci_failed": "CI non riuscita",
5968
5990
  "test_failed": "Test non riusciti",
5991
+ "deploy_blocked": "Deployment bloccato",
5969
5992
  "requirement_review": "Revisione dei requisiti",
5970
5993
  "clarity_review": "Revisione della chiarezza",
5971
5994
  "release_regression": "Regressione della release",
@@ -6029,6 +6052,7 @@
6029
6052
  "pipeline_complete": "Pipeline completata",
6030
6053
  "ci_failed": "CI non riuscita",
6031
6054
  "test_failed": "Test non riusciti",
6055
+ "deploy_blocked": "Deployment bloccato",
6032
6056
  "requirement_review": "Revisione dei requisiti",
6033
6057
  "clarity_review": "Revisione della chiarezza",
6034
6058
  "release_regression": "Regressione della release",
@@ -7450,6 +7474,7 @@
7450
7474
  "failedRun": "Un’esecuzione fallita",
7451
7475
  "infrastructure": "Un backend di esecuzione collegato a questo workspace",
7452
7476
  "advancedTier": "La modalità interfaccia avanzata",
7477
+ "fullSurface": "Il ruolo Ingegnere o Responsabile di prodotto",
7453
7478
  "designSource": "Una sorgente di design collegata"
7454
7479
  },
7455
7480
  "overlay": {
@@ -7491,6 +7516,10 @@
7491
7516
  "title": "Controlli della board",
7492
7517
  "body": "Con questi controlli ingrandisci, riduci o adatti l’intera board alla vista."
7493
7518
  },
7519
+ "role": {
7520
+ "title": "Il tuo ruolo",
7521
+ "body": "La board si adatta al lavoro che fai: ingegneri e responsabili di prodotto vedono tutte le superfici, i designer una più semplice che porta dentro il lavoro e lo segue. Puoi cambiarlo qui quando vuoi."
7522
+ },
7494
7523
  "interfaceTier": {
7495
7524
  "title": "Base e avanzata",
7496
7525
  "body": "L'interfaccia parte in modalità base, che mostra le superfici di lavoro quotidiane. Passa qui ad avanzata quando vuoi anche quelle di sperimentazione, avvio dei repository e gestione operativa."