feat: création de projet (nouveau dossier + session) & en-tête de session enrichi
- POST /api/v1/projects : crée <root>/<name> (mkdir non récursif, 409 si existant), git init optionnel, puis lance une session dedans. Anti-traversal sur le nom (core/project.ts). - Web : NewProjectModal (racine préremplie scanRoots[0], case git init) + bouton dans SessionsListView. - SessionContextBar : badge du groupe (cliquable) + repos couverts avec leur branche dans l'en-tête de session ; session simple = repo+branche déduits du cwd. - 14 tests (unitaires + route).
This commit is contained in:
@@ -184,6 +184,19 @@ export default {
|
||||
externalSessions: 'external',
|
||||
showExternalSessions: 'Show external sessions ({n})',
|
||||
},
|
||||
project: {
|
||||
new: 'New project',
|
||||
title: 'New project',
|
||||
intro: 'Creates a new folder under the chosen root, then starts a session in it.',
|
||||
nameLabel: 'Project name',
|
||||
namePlaceholder: 'my-project',
|
||||
rootLabel: 'Root folder',
|
||||
rootPlaceholder: '/absolute/path/root',
|
||||
gitInit: 'Initialize a git repository (git init)',
|
||||
commandLabel: 'Command',
|
||||
create: 'Create',
|
||||
creating: 'Creating…',
|
||||
},
|
||||
terminal: {
|
||||
observer: 'observer (read-only)',
|
||||
sessionEnded: 'Session ended',
|
||||
@@ -194,6 +207,8 @@ export default {
|
||||
maximize: 'Maximize',
|
||||
restore: 'Restore',
|
||||
openFullscreen: 'Open fullscreen',
|
||||
group: 'Group',
|
||||
covers: 'covers',
|
||||
},
|
||||
push: {
|
||||
enable: 'Enable notifications',
|
||||
@@ -337,6 +352,7 @@ export default {
|
||||
groupDeleted: 'Group deleted',
|
||||
groupSessionLaunched: 'Group session started',
|
||||
groupSessionPartial: 'Group session started ({n} repo(s) skipped)',
|
||||
projectCreated: 'Project created',
|
||||
genericError: 'Something went wrong',
|
||||
dismiss: 'Dismiss',
|
||||
},
|
||||
|
||||
@@ -186,6 +186,19 @@ const fr: typeof en = {
|
||||
externalSessions: 'externes',
|
||||
showExternalSessions: 'Afficher les sessions externes ({n})',
|
||||
},
|
||||
project: {
|
||||
new: 'Nouveau projet',
|
||||
title: 'Nouveau projet',
|
||||
intro: 'Crée un nouveau dossier sous la racine choisie, puis y lance une session.',
|
||||
nameLabel: 'Nom du projet',
|
||||
namePlaceholder: 'mon-projet',
|
||||
rootLabel: 'Dossier racine',
|
||||
rootPlaceholder: '/chemin/absolu/racine',
|
||||
gitInit: 'Initialiser un dépôt git (git init)',
|
||||
commandLabel: 'Commande',
|
||||
create: 'Créer',
|
||||
creating: 'Création…',
|
||||
},
|
||||
terminal: {
|
||||
observer: 'observateur (lecture seule)',
|
||||
sessionEnded: 'Session terminée',
|
||||
@@ -197,6 +210,8 @@ const fr: typeof en = {
|
||||
maximize: 'Agrandir',
|
||||
restore: 'Réduire',
|
||||
openFullscreen: 'Ouvrir en plein écran',
|
||||
group: 'Groupe',
|
||||
covers: 'couvre',
|
||||
},
|
||||
push: {
|
||||
enable: 'Activer les notifications',
|
||||
@@ -340,6 +355,7 @@ const fr: typeof en = {
|
||||
groupDeleted: 'Groupe supprimé',
|
||||
groupSessionLaunched: 'Session de groupe démarrée',
|
||||
groupSessionPartial: 'Session de groupe démarrée ({n} dépôt(s) ignoré(s))',
|
||||
projectCreated: 'Projet créé',
|
||||
genericError: 'Une erreur est survenue',
|
||||
dismiss: 'Fermer',
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user