From f62404234b64be5d98f51255033e2d4b6e5a106d Mon Sep 17 00:00:00 2001 From: Johan LEROY Date: Fri, 17 Jul 2026 17:12:15 +0200 Subject: [PATCH] =?UTF-8?q?feat(web):=20zone=20=C3=A9diteur=20=C3=A0=20ong?= =?UTF-8?q?lets=20(Monaco=20multi-mod=C3=A8les=20+=20diff)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit components/ide/EditorArea.vue : UNE instance Monaco partagée avec cache de modèles par onglet (préserve contenu, undo et curseur au changement d'onglet ; view states restaurés), thème arboretum-dark, save + conflit STALE_FILE + reload/overwrite, dispose des modèles à la fermeture d'onglet et au démontage. Onglets diff via DiffViewer. components/ide/EditorTabs.vue : bandeau d'onglets multi-projets, point de modification, fermeture immédiate si propre et garde à deux clics si modifié. Bascule éditeur/diff par onglet. Branché dans IdeShell (centre). 427 tests. --- .../web/src/components/ide/EditorArea.vue | 253 ++++++++++++++++++ .../web/src/components/ide/EditorTabs.vue | 56 ++++ packages/web/src/components/ide/IdeShell.vue | 7 +- 3 files changed, 313 insertions(+), 3 deletions(-) create mode 100644 packages/web/src/components/ide/EditorArea.vue create mode 100644 packages/web/src/components/ide/EditorTabs.vue diff --git a/packages/web/src/components/ide/EditorArea.vue b/packages/web/src/components/ide/EditorArea.vue new file mode 100644 index 0000000..e62db1d --- /dev/null +++ b/packages/web/src/components/ide/EditorArea.vue @@ -0,0 +1,253 @@ + + + diff --git a/packages/web/src/components/ide/EditorTabs.vue b/packages/web/src/components/ide/EditorTabs.vue new file mode 100644 index 0000000..9273550 --- /dev/null +++ b/packages/web/src/components/ide/EditorTabs.vue @@ -0,0 +1,56 @@ + + + diff --git a/packages/web/src/components/ide/IdeShell.vue b/packages/web/src/components/ide/IdeShell.vue index 744fe28..02eed44 100644 --- a/packages/web/src/components/ide/IdeShell.vue +++ b/packages/web/src/components/ide/IdeShell.vue @@ -8,9 +8,9 @@
- +
- +
@@ -33,7 +33,7 @@ // des ressources ouvertes contre les données live (worktrees / sessions). import { watch } from 'vue'; import { useI18n } from 'vue-i18n'; -import { FileCode, SquareTerminal } from '@lucide/vue'; +import { SquareTerminal } from '@lucide/vue'; import { useIdeStore, wtKey } from '../../stores/ide'; import { useWorktreesStore } from '../../stores/worktrees'; import { useSessionsStore } from '../../stores/sessions'; @@ -41,6 +41,7 @@ import ActivityBar from './ActivityBar.vue'; import PrimarySidebar from './PrimarySidebar.vue'; import PanelSplitter from './PanelSplitter.vue'; import StatusBar from './StatusBar.vue'; +import EditorArea from './EditorArea.vue'; import EmptyState from '../ui/EmptyState.vue'; const { t } = useI18n();