feat(web): dock terminaux en bas (multi-sessions attachées)
components/ide/TerminalDock.vue + TerminalDockTabs.vue : dock à onglets, une TerminalView par session du dock, toutes montées en v-show pour préserver l'attache WS (seule l'active visible). Fermer un onglet démonte réellement la vue -> detach() propre, pas de fuite. DialogPrompt au-dessus du terminal actif en attente. Repli via la barre de statut ou le chevron. Branché dans IdeShell (section dock redimensionnable, splitter inversé). 427 tests.
This commit is contained in:
@@ -13,11 +13,11 @@
|
||||
<EditorArea />
|
||||
</main>
|
||||
|
||||
<!-- dock terminaux (livré en B5). Placeholder pour l'instant. -->
|
||||
<!-- dock terminaux (B5) -->
|
||||
<template v-if="ide.bottomVisible">
|
||||
<PanelSplitter v-model="ide.bottomHeight" axis="y" :min="120" :max="640" invert />
|
||||
<section class="shrink-0 overflow-hidden border-t border-border" :style="{ height: `${ide.bottomHeight}px` }">
|
||||
<EmptyState :icon="SquareTerminal" :title="t('ide.noTerminal')" :hint="t('ide.noTerminalHint')" class="m-6" />
|
||||
<TerminalDock />
|
||||
</section>
|
||||
</template>
|
||||
</div>
|
||||
@@ -32,8 +32,6 @@
|
||||
// zone centrale (éditeur), dock terminaux et barre de statut. Propriétaire de la réconciliation
|
||||
// des ressources ouvertes contre les données live (worktrees / sessions).
|
||||
import { watch } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { SquareTerminal } from '@lucide/vue';
|
||||
import { useIdeStore, wtKey } from '../../stores/ide';
|
||||
import { useWorktreesStore } from '../../stores/worktrees';
|
||||
import { useSessionsStore } from '../../stores/sessions';
|
||||
@@ -42,9 +40,8 @@ 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';
|
||||
import TerminalDock from './TerminalDock.vue';
|
||||
|
||||
const { t } = useI18n();
|
||||
const ide = useIdeStore();
|
||||
const worktrees = useWorktreesStore();
|
||||
const sessions = useSessionsStore();
|
||||
|
||||
Reference in New Issue
Block a user