feat(p9): commit/push avancé dans l'IDE (staging sélectif, discard, amend, fetch/pull)

- components/workspace/CommitPanel.vue : staging sélectif par fichier (stage/unstage/stage all/unstage all), discard avec confirmation (includeUntracked), zone de commit (message + amend), commit mode 'staged', push, fetch, pull --ff-only (rebase proposé en cas de divergence), gestion 409 ALREADY_PUSHED
- components/workspace/FileRow.vue : ligne de fichier réutilisable (badge statut M/A/D/?/U + clic → diff + slot actions)
- WorkspaceView : CommitPanel remplace ChangedFilesPanel ; @changed → reload des changements
- stores/worktrees : applyWorktree (upsert depuis les mutations git → header live)
- i18n EN+FR (commit.*) ; acceptance-p9.mjs (staging sélectif, amend OK/409, pull ff-only OK + divergence refusée)
This commit is contained in:
2026-06-27 13:53:05 +02:00
parent 75efecf93f
commit 92670a796a
8 changed files with 385 additions and 60 deletions

View File

@@ -235,6 +235,25 @@ export default {
unstaged: 'unstaged',
conflicts: 'conflicts',
},
commit: {
staged: 'Staged',
changes: 'Changes',
stage: 'Stage',
unstage: 'Unstage',
stageAll: 'Stage all',
unstageAll: 'Unstage all',
discard: 'Discard',
confirmDiscard: 'Confirm discard (destructive)',
amend: 'Amend last commit',
amendPlaceholder: 'New message (leave empty to keep the previous one)',
messagePlaceholder: 'Commit message…',
commit: 'Commit',
push: 'Push',
fetch: 'Fetch',
pull: 'Pull (fast-forward)',
pullRebase: 'Pull --rebase',
alreadyPushed: 'Cannot amend: this commit was already pushed.',
},
terminal: {
observer: 'observer (read-only)',
sessionEnded: 'Session ended',

View File

@@ -237,6 +237,25 @@ const fr: typeof en = {
unstaged: 'non indexé',
conflicts: 'conflits',
},
commit: {
staged: 'Indexés',
changes: 'Changements',
stage: 'Indexer',
unstage: 'Désindexer',
stageAll: 'Tout indexer',
unstageAll: 'Tout désindexer',
discard: 'Abandonner',
confirmDiscard: 'Confirmer labandon (destructif)',
amend: 'Amender le dernier commit',
amendPlaceholder: 'Nouveau message (vide = conserver le précédent)',
messagePlaceholder: 'Message de commit…',
commit: 'Commit',
push: 'Push',
fetch: 'Fetch',
pull: 'Pull (fast-forward)',
pullRebase: 'Pull --rebase',
alreadyPushed: 'Amend impossible : ce commit a déjà été poussé.',
},
terminal: {
observer: 'observateur (lecture seule)',
sessionEnded: 'Session terminée',