diff --git a/frontend/index.html b/frontend/index.html index 96f3a2d..1c675da 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4374,13 +4374,10 @@ curl -X POST https://votre-serveur.com/webhook \
Fichiers ouverts - +
+ + +
diff --git a/frontend/js/ai.js b/frontend/js/ai.js index b5b6559..34da007 100644 --- a/frontend/js/ai.js +++ b/frontend/js/ai.js @@ -212,8 +212,11 @@ export async function createAIToolbar(container, getEditorView) { gap: '2px', padding: '4px 8px', borderBottom: '1px solid var(--border-color)', - background: '#2a2a2a', + background: 'var(--bg-secondary)', flexWrap: 'wrap', + position: 'sticky', + top: '0', + zIndex: '5', }); function ev() { return getEditorView(); } diff --git a/frontend/js/mobile-toolbar.js b/frontend/js/mobile-toolbar.js index 03d31e0..24ca70d 100644 --- a/frontend/js/mobile-toolbar.js +++ b/frontend/js/mobile-toolbar.js @@ -112,6 +112,7 @@ export function initMobileToolbar() { const paletteBtn = document.getElementById('mt-palette'); const tabsBtn = document.getElementById('mt-tabs'); const sheetClose = document.getElementById('mt-sheet-close'); + const closeAll = document.getElementById('mt-close-all'); const overlay = document.getElementById('mt-overlay'); if (explorerBtn) explorerBtn.addEventListener('click', toggleExplorer); @@ -119,6 +120,12 @@ export function initMobileToolbar() { if (paletteBtn) paletteBtn.addEventListener('click', openCommandPalette); if (tabsBtn) tabsBtn.addEventListener('click', openTabSwitcher); if (sheetClose) sheetClose.addEventListener('click', closeTabSwitcher); + if (closeAll) closeAll.addEventListener('click', () => { + const tabs = [...(TabManager._tabs || [])]; + tabs.forEach(t => TabManager.close(t.id)); + updateTabCount(); + renderTabList(); + }); if (overlay) overlay.addEventListener('click', closeTabSwitcher); setInterval(updateTabCount, 2000); diff --git a/frontend/js/palette.js b/frontend/js/palette.js index 508ec70..9c33b6a 100644 --- a/frontend/js/palette.js +++ b/frontend/js/palette.js @@ -40,6 +40,7 @@ const CMDS = [ { id:'create-file', label:'📄 Créer fichier markdown', desc:'Choisir la vault, naviguer, puis nommer le fichier', cat:'Fichiers', act:()=>startBrowse('create-file') }, { id:'delete-file', label:'🗑️ Supprimer fichier', desc:'Rechercher un fichier à supprimer', cat:'Fichiers', act:()=>startBrowse('delete-file') }, { id:'delete-cur', label:'🗑️ Supprimer fichier courant', desc:'Supprimer le fichier de l\'onglet actif', cat:'Fichiers', act:async()=>{close();await delCurFile();} }, + { id:'close-cur', label:'✕ Fermer fichier courant', desc:'Fermer l\'onglet actif sans supprimer', cat:'Fichiers', act:()=>{close();const f=getCurrentFile();if(f){const tab=TabManager._tabs.find(t=>t.vault===f.vault&&t.path===f.path);if(tab)TabManager.close(tab.id);else triggerGoHome();}else{showToast('Aucun fichier ouvert','error');}} }, { id:'create-dir', label:'📁 Créer répertoire', desc:'Choisir la vault, naviguer, puis nommer le dossier', cat:'Répertoires', act:()=>startBrowse('create-dir') }, { id:'delete-dir', label:'🗑️ Supprimer répertoire', desc:'Choisir la vault, naviguer et supprimer', cat:'Répertoires', act:()=>startBrowse('delete-dir') }, { id:'theme', label:'🌓 Changer le thème', desc:'Basculer clair/sombre', cat:'Actions', act:()=>{close();toggleTheme();} }, diff --git a/frontend/popout.html b/frontend/popout.html index f83dad9..bd35915 100644 --- a/frontend/popout.html +++ b/frontend/popout.html @@ -1180,7 +1180,8 @@ const RightSidebarManager = { toolbar.className = 'ai-toolbar'; Object.assign(toolbar.style, { display: 'flex', alignItems: 'center', gap: '2px', padding: '4px 8px', - borderBottom: '1px solid var(--border-color)', background: '#2a2a2a', flexWrap: 'wrap', + borderBottom: '1px solid var(--border-color)', background: 'var(--bg-secondary)', flexWrap: 'wrap', + position: 'sticky', top: '0', zIndex: '5', }); // AI inline complete button diff --git a/frontend/style.css b/frontend/style.css index a95d166..4a23dcf 100644 --- a/frontend/style.css +++ b/frontend/style.css @@ -6740,6 +6740,25 @@ body.popup-mode .content-area { justify-content: center; } .mt-sheet-close:hover { color: var(--accent); border-color: var(--accent); } + .mt-sheet-actions { + display: flex; + align-items: center; + gap: 8px; + } + .mt-sheet-close-all { + padding: 5px 10px; + border: 1px solid var(--danger, #ef4444); + border-radius: 6px; + background: transparent; + color: var(--danger, #ef4444); + cursor: pointer; + font-size: 0.7rem; + font-weight: 600; + transition: background 0.15s; + } + .mt-sheet-close-all:hover { + background: rgba(239,68,68,0.1); + } .mt-sheet-list { flex: 1;