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 \
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;