@cat-factory/app 0.155.0 → 0.156.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.
@@ -9,6 +9,8 @@ import type {
9
9
  GitHubPullRequest,
10
10
  GitHubRepo,
11
11
  RepoTreeEntry,
12
+ VcsConnectOption,
13
+ VcsProvider,
12
14
  } from '~/types/domain'
13
15
  import { useSingleFlightProbe } from '~/composables/useSingleFlightProbe'
14
16
  import { useUpsertList } from '~/composables/useUpsertList'
@@ -17,6 +19,7 @@ import { useServicesStore } from '~/stores/services'
17
19
  import { pullKey, type GitHubStoreContext } from '~/stores/github/context'
18
20
  import { createGitHubConnectionActions } from '~/stores/github/connection'
19
21
  import { createGitHubRepoActions } from '~/stores/github/repoActions'
22
+ import { createVcsConnectActions } from '~/stores/github/vcsConnect'
20
23
 
21
24
  /**
22
25
  * GitHub integration state: the workspace's App installation, the projected
@@ -33,8 +36,10 @@ export const useGitHubStore = defineStore('github', () => {
33
36
 
34
37
  /** null = unknown (not probed yet), true/false = integration on/off. */
35
38
  const available = ref<boolean | null>(null)
36
- /** The workspace's App installation, or null when not yet connected. */
39
+ /** The workspace's VCS connection (App installation or PAT), or null when not connected. */
37
40
  const connection = ref<GitHubConnection | null>(null)
41
+ /** The connect surfaces this deployment serves; resolved by the probe alongside `connection`. */
42
+ const connectOptions = ref<VcsConnectOption[]>([])
38
43
  /** Discovered App installations for the connect picker; loaded on demand. */
39
44
  const installations = ref<GitHubInstallationOption[]>([])
40
45
  const loadingInstallations = ref(false)
@@ -58,6 +63,26 @@ export const useGitHubStore = defineStore('github', () => {
58
63
  const syncing = ref(false)
59
64
 
60
65
  const connected = computed(() => connection.value !== null)
66
+ /**
67
+ * The provider backing the current connection. Presentation (labels, icons, host/URL shapes)
68
+ * keys off this; a connection from a backend predating the discriminator is a GitHub App one.
69
+ */
70
+ const provider = computed<VcsProvider>(() => connection.value?.provider ?? 'github')
71
+ /** Whether the deployment can serve a GitHub App connect / a per-workspace GitLab PAT connect. */
72
+ const canConnectGitHubApp = computed(() =>
73
+ connectOptions.value.some((o) => o.provider === 'github' && o.method === 'app'),
74
+ )
75
+ const canConnectGitLabPat = computed(() =>
76
+ connectOptions.value.some((o) => o.provider === 'gitlab' && o.method === 'pat'),
77
+ )
78
+ /**
79
+ * The single provider this deployment can connect, or null when it offers several (or none) —
80
+ * what the connect copy keys off so a one-provider deployment never says "choose a provider".
81
+ */
82
+ const soleConnectProvider = computed<VcsProvider | null>(() => {
83
+ const providers = new Set(connectOptions.value.map((o) => o.provider))
84
+ return providers.size === 1 ? [...providers][0]! : null
85
+ })
61
86
  /** Whether cat-factory can create repos under the connected account itself. */
62
87
  const canCreateRepos = computed(() => connection.value?.canCreateRepos === true)
63
88
  /**
@@ -104,17 +129,29 @@ export const useGitHubStore = defineStore('github', () => {
104
129
  return base ? `${base}/issues/${issue.number}` : null
105
130
  }
106
131
 
107
- /** Probe the integration: resolves `available` and the current connection. */
132
+ /**
133
+ * Probe the integration: resolves `available`, the current connection, and which connect
134
+ * surfaces the deployment serves. The capability read rides the same round trip (it is what
135
+ * the not-connected UI renders from), and degrades to "no connect surface" on its own.
136
+ */
108
137
  async function runProbe() {
109
138
  if (!workspace.workspaceId) return
110
139
  try {
111
- const { connection: conn } = await api.getGitHubConnection(workspace.requireId())
140
+ const [{ connection: conn }, options] = await Promise.all([
141
+ api.getGitHubConnection(workspace.requireId()),
142
+ api
143
+ .listVcsConnectOptions(workspace.requireId())
144
+ .then((r) => r.options)
145
+ .catch(() => []),
146
+ ])
112
147
  available.value = true
113
148
  connection.value = conn
149
+ connectOptions.value = options
114
150
  } catch {
115
151
  // 503 (integration disabled) or any error → hide the UI entry points.
116
152
  available.value = false
117
153
  connection.value = null
154
+ connectOptions.value = []
118
155
  }
119
156
  }
120
157
  // Single-flight the probe (app-startup initiative, item 12): `probe()` still re-reads on demand,
@@ -162,6 +199,7 @@ export const useGitHubStore = defineStore('github', () => {
162
199
  workspace,
163
200
  available,
164
201
  connection,
202
+ connectOptions,
165
203
  installations,
166
204
  loadingInstallations,
167
205
  repos,
@@ -180,6 +218,7 @@ export const useGitHubStore = defineStore('github', () => {
180
218
  }
181
219
  const connectionActions = createGitHubConnectionActions(context)
182
220
  const repoActions = createGitHubRepoActions(context)
221
+ const vcsConnectActions = createVcsConnectActions(context)
183
222
 
184
223
  /**
185
224
  * Drop the per-workspace projection + connection state (called on workspace switch)
@@ -189,6 +228,7 @@ export const useGitHubStore = defineStore('github', () => {
189
228
  function reset() {
190
229
  available.value = null
191
230
  connection.value = null
231
+ connectOptions.value = []
192
232
  installations.value = []
193
233
  repos.value = []
194
234
  availableRepos.value = []
@@ -201,6 +241,7 @@ export const useGitHubStore = defineStore('github', () => {
201
241
  return {
202
242
  available,
203
243
  connection,
244
+ connectOptions,
204
245
  installations,
205
246
  loadingInstallations,
206
247
  repos,
@@ -213,6 +254,10 @@ export const useGitHubStore = defineStore('github', () => {
213
254
  loading,
214
255
  syncing,
215
256
  connected,
257
+ provider,
258
+ canConnectGitHubApp,
259
+ canConnectGitLabPat,
260
+ soleConnectProvider,
216
261
  canCreateRepos,
217
262
  missingWorkflowsPermission,
218
263
  repoFor,
@@ -229,6 +274,7 @@ export const useGitHubStore = defineStore('github', () => {
229
274
  repoFiles,
230
275
  ...connectionActions,
231
276
  ...repoActions,
277
+ ...vcsConnectActions,
232
278
  reset,
233
279
  }
234
280
  })
@@ -171,6 +171,7 @@ export type * from './tasks'
171
171
  export type * from './bootstrap'
172
172
  export type * from './envConfigRepair'
173
173
  export type * from './github'
174
+ export type * from './vcs'
174
175
  export type * from './accounts'
175
176
  export type * from './notifications'
176
177
  export type * from './slack'
@@ -0,0 +1,14 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Provider-neutral VCS vocabulary. The platform talks to several git providers
3
+ // (GitHub, GitLab, …) through one GitHub-shaped service layer, so the SPA's data
4
+ // stays neutral and only its PRESENTATION switches on the provider.
5
+ //
6
+ // All wire shapes come from @cat-factory/contracts (single source of truth).
7
+ // ---------------------------------------------------------------------------
8
+
9
+ import type { VcsProviderWire } from '@cat-factory/contracts'
10
+
11
+ export type { VcsConnectMethod, VcsConnectOption, VcsProviderWire } from '@cat-factory/contracts'
12
+
13
+ /** The VCS a connection / repository belongs to — the discriminator presentation keys off. */
14
+ export type VcsProvider = VcsProviderWire
@@ -0,0 +1,31 @@
1
+ import type { VcsProvider } from '~/types/domain'
2
+
3
+ // ---------------------------------------------------------------------------
4
+ // Shared VCS provider presentation. The platform's repo DATA is provider-neutral (one
5
+ // GitHub-shaped store serves GitLab through the backend adapter), so only presentation
6
+ // switches on the provider — and it switches HERE, once, rather than per component.
7
+ //
8
+ // Labels are brand names, kept verbatim in every locale, so they are constants rather than
9
+ // catalog keys (the same convention the login screen and the API-key provider descriptors
10
+ // already use). Anything that is PROSE stays in the i18n catalog, keyed per provider.
11
+ //
12
+ // Each map is an exhaustive `Record<VcsProvider, …>`: adding a provider to the union fails
13
+ // the typecheck here instead of silently rendering a GitHub icon for it.
14
+ // ---------------------------------------------------------------------------
15
+
16
+ /** Brand name, as rendered in titles and buttons. */
17
+ export const VCS_PROVIDER_LABELS: Record<VcsProvider, string> = {
18
+ github: 'GitHub',
19
+ gitlab: 'GitLab',
20
+ }
21
+
22
+ export const VCS_PROVIDER_ICONS: Record<VcsProvider, string> = {
23
+ github: 'i-lucide-github',
24
+ gitlab: 'i-lucide-gitlab',
25
+ }
26
+
27
+ /** Where a user creates a personal access token for the provider (the PAT connect flow). */
28
+ export const VCS_PROVIDER_TOKEN_URLS: Record<VcsProvider, string> = {
29
+ github: 'https://github.com/settings/tokens/new',
30
+ gitlab: 'https://gitlab.com/-/user_settings/personal_access_tokens',
31
+ }
@@ -2600,8 +2600,7 @@
2600
2600
  },
2601
2601
  "github": {
2602
2602
  "onboarding": {
2603
- "title": "cat-factory mit GitHub verbinden",
2604
- "intro": "cat-factory funktioniert, indem es Pull Requests in Ihren Repositorys öffnet. Installieren Sie die GitHub App auf Ihrem Account oder Ihrer Organisation, um fortzufahren; Sie können ihr jedes Repository oder eine Teilmenge gewähren.",
2603
+ "appIntro": "Installieren Sie die GitHub App auf Ihrem Account oder Ihrer Organisation; Sie können ihr jedes Repository oder eine Teilmenge gewähren.",
2605
2604
  "signedInAs": "Angemeldet als {login}",
2606
2605
  "signOut": "Abmelden"
2607
2606
  },
@@ -2675,7 +2674,6 @@
2675
2674
  "closed": "geschlossen"
2676
2675
  },
2677
2676
  "toast": {
2678
- "disconnected": "GitHub getrennt",
2679
2677
  "resync": "Neusynchronisierung {status}",
2680
2678
  "reposUpdated": "Verknüpfte Repositorys aktualisiert",
2681
2679
  "branchCreated": "Branch {name} erstellt",
@@ -2691,10 +2689,6 @@
2691
2689
  "createBranch": "Branch konnte nicht erstellt werden",
2692
2690
  "openPr": "Pull Request konnte nicht geöffnet werden",
2693
2691
  "merge": "Mergen nicht möglich"
2694
- },
2695
- "confirmDisconnect": {
2696
- "title": "GitHub trennen?",
2697
- "body": "Die App verliert den Zugriff auf Ihre Repositorys, bis Sie sie erneut verbinden."
2698
2692
  }
2699
2693
  },
2700
2694
  "addService": {
@@ -5188,5 +5182,40 @@
5188
5182
  "sourceUnlinked": "Quelle getrennt",
5189
5183
  "unlinkSourceFailed": "Quelle konnte nicht getrennt werden"
5190
5184
  }
5185
+ },
5186
+ "vcs": {
5187
+ "panel": {
5188
+ "title": "Quellcodeverwaltung",
5189
+ "patMeta": "Verbunden über ein persönliches Zugriffstoken",
5190
+ "confirmDisconnect": {
5191
+ "title": "{provider} trennen?",
5192
+ "body": "Die App verliert den Zugriff auf Ihre Repositorys, bis Sie sie erneut verbinden."
5193
+ },
5194
+ "toast": {
5195
+ "disconnected": "{provider} getrennt"
5196
+ }
5197
+ },
5198
+ "connect": {
5199
+ "or": "oder",
5200
+ "noneConfigured": "Für dieses Deployment ist keine Quellcodeverbindung konfiguriert. Bitten Sie einen Betreiber, eine GitHub App oder einen GitLab-Zugang einzurichten.",
5201
+ "gitlab": {
5202
+ "intro": "Fügen Sie ein persönliches GitLab-Zugriffstoken ein, um diesen Workspace zu verbinden. cat-factory nutzt es, um Ihre Projekte aufzulisten, Branches zu pushen und Merge Requests zu öffnen.",
5203
+ "tokenLabel": "Persönliches Zugriffstoken",
5204
+ "scope": "Benötigt den Bereich api",
5205
+ "createToken": "Token auf GitLab erstellen",
5206
+ "submit": "GitLab verbinden",
5207
+ "toast": {
5208
+ "connected": "GitLab verbunden"
5209
+ },
5210
+ "errors": {
5211
+ "connect": "GitLab konnte nicht verbunden werden"
5212
+ }
5213
+ }
5214
+ },
5215
+ "onboarding": {
5216
+ "title": "cat-factory mit {provider} verbinden",
5217
+ "titleAny": "cat-factory mit Ihren Repositorys verbinden",
5218
+ "intro": "cat-factory funktioniert, indem es Pull Requests in Ihren Repositorys öffnet. Verbinden Sie Ihren Repository-Anbieter, um fortzufahren."
5219
+ }
5191
5220
  }
5192
5221
  }
@@ -3148,8 +3148,7 @@
3148
3148
  },
3149
3149
  "github": {
3150
3150
  "onboarding": {
3151
- "title": "Connect cat-factory to GitHub",
3152
- "intro": "cat-factory works by opening pull requests on your repositories. Install the GitHub App on your account or organization to continue, and you can grant it every repository or pick a subset.",
3151
+ "appIntro": "Install the GitHub App on your account or organization; you can grant it every repository or pick a subset.",
3153
3152
  "signedInAs": "Signed in as {login}",
3154
3153
  "signOut": "Sign out"
3155
3154
  },
@@ -3223,7 +3222,6 @@
3223
3222
  "closed": "closed"
3224
3223
  },
3225
3224
  "toast": {
3226
- "disconnected": "GitHub disconnected",
3227
3225
  "resync": "Resync {status}",
3228
3226
  "reposUpdated": "Linked repositories updated",
3229
3227
  "branchCreated": "Branch {name} created",
@@ -3239,10 +3237,6 @@
3239
3237
  "createBranch": "Could not create branch",
3240
3238
  "openPr": "Could not open pull request",
3241
3239
  "merge": "Could not merge"
3242
- },
3243
- "confirmDisconnect": {
3244
- "title": "Disconnect GitHub?",
3245
- "body": "The app will lose access to your repositories until you reconnect."
3246
3240
  }
3247
3241
  },
3248
3242
  "addService": {
@@ -5317,5 +5311,40 @@
5317
5311
  "sourceUnlinked": "Source unlinked",
5318
5312
  "unlinkSourceFailed": "Could not unlink source"
5319
5313
  }
5314
+ },
5315
+ "vcs": {
5316
+ "panel": {
5317
+ "title": "Source control",
5318
+ "patMeta": "Connected with a personal access token",
5319
+ "confirmDisconnect": {
5320
+ "title": "Disconnect {provider}?",
5321
+ "body": "The app will lose access to your repositories until you reconnect."
5322
+ },
5323
+ "toast": {
5324
+ "disconnected": "{provider} disconnected"
5325
+ }
5326
+ },
5327
+ "connect": {
5328
+ "or": "or",
5329
+ "noneConfigured": "No source-control connection is configured for this deployment. Ask an operator to set up a GitHub App or GitLab access.",
5330
+ "gitlab": {
5331
+ "intro": "Paste a GitLab personal access token to connect this workspace. cat-factory uses it to list your projects, push branches and open merge requests.",
5332
+ "tokenLabel": "Personal access token",
5333
+ "scope": "Needs the api scope",
5334
+ "createToken": "Create a token on GitLab",
5335
+ "submit": "Connect GitLab",
5336
+ "toast": {
5337
+ "connected": "GitLab connected"
5338
+ },
5339
+ "errors": {
5340
+ "connect": "Could not connect GitLab"
5341
+ }
5342
+ }
5343
+ },
5344
+ "onboarding": {
5345
+ "title": "Connect cat-factory to {provider}",
5346
+ "titleAny": "Connect cat-factory to your repositories",
5347
+ "intro": "cat-factory works by opening pull requests on your repositories. Connect your repository host to continue."
5348
+ }
5320
5349
  }
5321
5350
  }
@@ -3061,8 +3061,7 @@
3061
3061
  },
3062
3062
  "github": {
3063
3063
  "onboarding": {
3064
- "title": "Conecta cat-factory con GitHub",
3065
- "intro": "cat-factory funciona abriendo solicitudes de incorporación de cambios en tus repositorios. Instala la GitHub App en tu cuenta u organización para continuar, y puedes concederle todos los repositorios o elegir un subconjunto.",
3064
+ "appIntro": "Instala la GitHub App en tu cuenta u organización; puedes concederle todos los repositorios o elegir un subconjunto.",
3066
3065
  "signedInAs": "Sesión iniciada como {login}",
3067
3066
  "signOut": "Cerrar sesión"
3068
3067
  },
@@ -3136,7 +3135,6 @@
3136
3135
  "closed": "cerrada"
3137
3136
  },
3138
3137
  "toast": {
3139
- "disconnected": "GitHub desconectado",
3140
3138
  "resync": "Resincronización {status}",
3141
3139
  "reposUpdated": "Repositorios vinculados actualizados",
3142
3140
  "branchCreated": "Rama {name} creada",
@@ -3152,10 +3150,6 @@
3152
3150
  "createBranch": "No se pudo crear la rama",
3153
3151
  "openPr": "No se pudo abrir la solicitud de incorporación de cambios",
3154
3152
  "merge": "No se pudo fusionar"
3155
- },
3156
- "confirmDisconnect": {
3157
- "title": "¿Desconectar GitHub?",
3158
- "body": "La app perderá acceso a tus repositorios hasta que vuelvas a conectar."
3159
3153
  }
3160
3154
  },
3161
3155
  "addService": {
@@ -5176,5 +5170,40 @@
5176
5170
  "sourceUnlinked": "Fuente desvinculada",
5177
5171
  "unlinkSourceFailed": "No se pudo desvincular la fuente"
5178
5172
  }
5173
+ },
5174
+ "vcs": {
5175
+ "panel": {
5176
+ "title": "Control de código fuente",
5177
+ "patMeta": "Conectado con un token de acceso personal",
5178
+ "confirmDisconnect": {
5179
+ "title": "¿Desconectar {provider}?",
5180
+ "body": "La app perderá acceso a tus repositorios hasta que vuelvas a conectar."
5181
+ },
5182
+ "toast": {
5183
+ "disconnected": "{provider} desconectado"
5184
+ }
5185
+ },
5186
+ "connect": {
5187
+ "or": "o",
5188
+ "noneConfigured": "Este despliegue no tiene configurada ninguna conexión de control de código. Pide a un operador que configure una GitHub App o el acceso a GitLab.",
5189
+ "gitlab": {
5190
+ "intro": "Pega un token de acceso personal de GitLab para conectar este espacio de trabajo. cat-factory lo usa para listar tus proyectos, subir ramas y abrir solicitudes de fusión.",
5191
+ "tokenLabel": "Token de acceso personal",
5192
+ "scope": "Necesita el ámbito api",
5193
+ "createToken": "Crear un token en GitLab",
5194
+ "submit": "Conectar GitLab",
5195
+ "toast": {
5196
+ "connected": "GitLab conectado"
5197
+ },
5198
+ "errors": {
5199
+ "connect": "No se pudo conectar GitLab"
5200
+ }
5201
+ }
5202
+ },
5203
+ "onboarding": {
5204
+ "title": "Conecta cat-factory con {provider}",
5205
+ "titleAny": "Conecta cat-factory con tus repositorios",
5206
+ "intro": "cat-factory funciona abriendo solicitudes de incorporación de cambios en tus repositorios. Conecta tu proveedor de repositorios para continuar."
5207
+ }
5179
5208
  }
5180
5209
  }
@@ -3061,8 +3061,7 @@
3061
3061
  },
3062
3062
  "github": {
3063
3063
  "onboarding": {
3064
- "title": "Connecter cat-factory à GitHub",
3065
- "intro": "cat-factory fonctionne en ouvrant des pull requests sur vos dépôts. Installez la GitHub App sur votre compte ou votre organisation pour continuer, et vous pouvez lui accorder tous les dépôts ou en choisir un sous-ensemble.",
3064
+ "appIntro": "Installez la GitHub App sur votre compte ou votre organisation ; vous pouvez lui accorder tous les dépôts ou en choisir un sous-ensemble.",
3066
3065
  "signedInAs": "Connecté en tant que {login}",
3067
3066
  "signOut": "Se déconnecter"
3068
3067
  },
@@ -3136,7 +3135,6 @@
3136
3135
  "closed": "fermé"
3137
3136
  },
3138
3137
  "toast": {
3139
- "disconnected": "GitHub déconnecté",
3140
3138
  "resync": "Resynchronisation {status}",
3141
3139
  "reposUpdated": "Dépôts liés mis à jour",
3142
3140
  "branchCreated": "Branche {name} créée",
@@ -3152,10 +3150,6 @@
3152
3150
  "createBranch": "Impossible de créer la branche",
3153
3151
  "openPr": "Impossible d'ouvrir la pull request",
3154
3152
  "merge": "Impossible de fusionner"
3155
- },
3156
- "confirmDisconnect": {
3157
- "title": "Déconnecter GitHub ?",
3158
- "body": "L'application perdra l'accès à vos dépôts jusqu'à la reconnexion."
3159
3153
  }
3160
3154
  },
3161
3155
  "addService": {
@@ -5176,5 +5170,40 @@
5176
5170
  "sourceUnlinked": "Source dissociée",
5177
5171
  "unlinkSourceFailed": "Impossible de dissocier la source"
5178
5172
  }
5173
+ },
5174
+ "vcs": {
5175
+ "panel": {
5176
+ "title": "Gestion de code source",
5177
+ "patMeta": "Connecté avec un jeton d'accès personnel",
5178
+ "confirmDisconnect": {
5179
+ "title": "Déconnecter {provider} ?",
5180
+ "body": "L'application perdra l'accès à vos dépôts jusqu'à la reconnexion."
5181
+ },
5182
+ "toast": {
5183
+ "disconnected": "{provider} déconnecté"
5184
+ }
5185
+ },
5186
+ "connect": {
5187
+ "or": "ou",
5188
+ "noneConfigured": "Aucune connexion de gestion de code n'est configurée pour ce déploiement. Demandez à un opérateur de configurer une GitHub App ou un accès GitLab.",
5189
+ "gitlab": {
5190
+ "intro": "Collez un jeton d'accès personnel GitLab pour connecter cet espace de travail. cat-factory l'utilise pour lister vos projets, pousser des branches et ouvrir des merge requests.",
5191
+ "tokenLabel": "Jeton d'accès personnel",
5192
+ "scope": "Nécessite la portée api",
5193
+ "createToken": "Créer un jeton sur GitLab",
5194
+ "submit": "Connecter GitLab",
5195
+ "toast": {
5196
+ "connected": "GitLab connecté"
5197
+ },
5198
+ "errors": {
5199
+ "connect": "Impossible de connecter GitLab"
5200
+ }
5201
+ }
5202
+ },
5203
+ "onboarding": {
5204
+ "title": "Connecter cat-factory à {provider}",
5205
+ "titleAny": "Connecter cat-factory à vos dépôts",
5206
+ "intro": "cat-factory fonctionne en ouvrant des pull requests sur vos dépôts. Connectez votre hébergeur de dépôts pour continuer."
5207
+ }
5179
5208
  }
5180
5209
  }
@@ -3072,8 +3072,7 @@
3072
3072
  },
3073
3073
  "github": {
3074
3074
  "onboarding": {
3075
- "title": "חבר את cat-factory ל-GitHub",
3076
- "intro": "cat-factory פועל על ידי פתיחת בקשות משיכה במאגרים שלך. התקן את אפליקציית GitHub בחשבון או בארגון שלך כדי להמשיך, ותוכל להעניק לה גישה לכל מאגר או לבחור תת-קבוצה.",
3075
+ "appIntro": "התקן את אפליקציית GitHub בחשבון או בארגון שלך; תוכל להעניק לה גישה לכל מאגר או לבחור תת-קבוצה.",
3077
3076
  "signedInAs": "מחובר כ-{login}",
3078
3077
  "signOut": "התנתק"
3079
3078
  },
@@ -3147,7 +3146,6 @@
3147
3146
  "closed": "סגור"
3148
3147
  },
3149
3148
  "toast": {
3150
- "disconnected": "GitHub נותק",
3151
3149
  "resync": "סנכרון מחדש {status}",
3152
3150
  "reposUpdated": "המאגרים המקושרים עודכנו",
3153
3151
  "branchCreated": "הענף {name} נוצר",
@@ -3163,10 +3161,6 @@
3163
3161
  "createBranch": "לא ניתן היה ליצור ענף",
3164
3162
  "openPr": "לא ניתן היה לפתוח בקשת משיכה",
3165
3163
  "merge": "לא ניתן היה למזג"
3166
- },
3167
- "confirmDisconnect": {
3168
- "title": "לנתק את GitHub?",
3169
- "body": "האפליקציה תאבד גישה למאגרים שלך עד לחיבור מחדש."
3170
3164
  }
3171
3165
  },
3172
3166
  "addService": {
@@ -5187,5 +5181,40 @@
5187
5181
  "sourceUnlinked": "קישור המקור בוטל",
5188
5182
  "unlinkSourceFailed": "לא ניתן לבטל את קישור המקור"
5189
5183
  }
5184
+ },
5185
+ "vcs": {
5186
+ "panel": {
5187
+ "title": "ניהול קוד מקור",
5188
+ "patMeta": "מחובר באמצעות אסימון גישה אישי",
5189
+ "confirmDisconnect": {
5190
+ "title": "לנתק את {provider}?",
5191
+ "body": "האפליקציה תאבד גישה למאגרים שלך עד לחיבור מחדש."
5192
+ },
5193
+ "toast": {
5194
+ "disconnected": "{provider} נותק"
5195
+ }
5196
+ },
5197
+ "connect": {
5198
+ "or": "או",
5199
+ "noneConfigured": "לא הוגדר חיבור לניהול קוד מקור בפריסה הזו. בקש ממפעיל להגדיר אפליקציית GitHub או גישה ל-GitLab.",
5200
+ "gitlab": {
5201
+ "intro": "הדבק אסימון גישה אישי של GitLab כדי לחבר את סביבת העבודה הזו. cat-factory משתמש בו כדי להציג את הפרויקטים שלך, לדחוף ענפים ולפתוח בקשות מיזוג.",
5202
+ "tokenLabel": "אסימון גישה אישי",
5203
+ "scope": "נדרש היקף api",
5204
+ "createToken": "צור אסימון ב-GitLab",
5205
+ "submit": "חבר את GitLab",
5206
+ "toast": {
5207
+ "connected": "GitLab חובר"
5208
+ },
5209
+ "errors": {
5210
+ "connect": "לא ניתן היה לחבר את GitLab"
5211
+ }
5212
+ }
5213
+ },
5214
+ "onboarding": {
5215
+ "title": "חבר את cat-factory ל-{provider}",
5216
+ "titleAny": "חבר את cat-factory למאגרים שלך",
5217
+ "intro": "cat-factory פועל על ידי פתיחת בקשות משיכה במאגרים שלך. חבר את ספק המאגרים שלך כדי להמשיך."
5218
+ }
5190
5219
  }
5191
5220
  }
@@ -2600,8 +2600,7 @@
2600
2600
  },
2601
2601
  "github": {
2602
2602
  "onboarding": {
2603
- "title": "Collega cat-factory a GitHub",
2604
- "intro": "cat-factory funziona aprendo pull request sui tuoi repository. Installa la GitHub App sul tuo account o sulla tua organizzazione per continuare, e potrai concederle ogni repository oppure scegliere un sottoinsieme.",
2603
+ "appIntro": "Installa la GitHub App sul tuo account o sulla tua organizzazione; potrai concederle ogni repository oppure scegliere un sottoinsieme.",
2605
2604
  "signedInAs": "Accesso effettuato come {login}",
2606
2605
  "signOut": "Esci"
2607
2606
  },
@@ -2675,7 +2674,6 @@
2675
2674
  "closed": "chiusa"
2676
2675
  },
2677
2676
  "toast": {
2678
- "disconnected": "GitHub disconnesso",
2679
2677
  "resync": "Risincronizzazione {status}",
2680
2678
  "reposUpdated": "Repository collegati aggiornati",
2681
2679
  "branchCreated": "Branch {name} creato",
@@ -2691,10 +2689,6 @@
2691
2689
  "createBranch": "Impossibile creare il branch",
2692
2690
  "openPr": "Impossibile aprire la pull request",
2693
2691
  "merge": "Impossibile effettuare il merge"
2694
- },
2695
- "confirmDisconnect": {
2696
- "title": "Disconnettere GitHub?",
2697
- "body": "L'app perderà l'accesso ai tuoi repository finché non ti riconnetti."
2698
2692
  }
2699
2693
  },
2700
2694
  "addService": {
@@ -5188,5 +5182,40 @@
5188
5182
  "sourceUnlinked": "Fonte scollegata",
5189
5183
  "unlinkSourceFailed": "Impossibile scollegare la fonte"
5190
5184
  }
5185
+ },
5186
+ "vcs": {
5187
+ "panel": {
5188
+ "title": "Controllo del codice sorgente",
5189
+ "patMeta": "Connesso con un token di accesso personale",
5190
+ "confirmDisconnect": {
5191
+ "title": "Disconnettere {provider}?",
5192
+ "body": "L'app perderà l'accesso ai tuoi repository finché non ti riconnetti."
5193
+ },
5194
+ "toast": {
5195
+ "disconnected": "{provider} disconnesso"
5196
+ }
5197
+ },
5198
+ "connect": {
5199
+ "or": "oppure",
5200
+ "noneConfigured": "Per questo deployment non è configurata alcuna connessione al controllo del codice. Chiedi a un operatore di configurare una GitHub App o l'accesso a GitLab.",
5201
+ "gitlab": {
5202
+ "intro": "Incolla un token di accesso personale GitLab per collegare questo workspace. cat-factory lo usa per elencare i tuoi progetti, inviare branch e aprire merge request.",
5203
+ "tokenLabel": "Token di accesso personale",
5204
+ "scope": "Richiede l'ambito api",
5205
+ "createToken": "Crea un token su GitLab",
5206
+ "submit": "Collega GitLab",
5207
+ "toast": {
5208
+ "connected": "GitLab collegato"
5209
+ },
5210
+ "errors": {
5211
+ "connect": "Impossibile collegare GitLab"
5212
+ }
5213
+ }
5214
+ },
5215
+ "onboarding": {
5216
+ "title": "Collega cat-factory a {provider}",
5217
+ "titleAny": "Collega cat-factory ai tuoi repository",
5218
+ "intro": "cat-factory funziona aprendo pull request sui tuoi repository. Collega il tuo host di repository per continuare."
5219
+ }
5191
5220
  }
5192
5221
  }