feat: diff viewer backups — point 6 (backups, diff, restore)
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 8s

- Backend: 3 nouveaux endpoints
  - GET /api/file/{vault}/backups — liste les backups horodatés
  - GET /api/file/{vault}/diff — diff unifié entre versions
  - POST /api/file/{vault}/restore — restaure une version (backup auto avant)
- Frontend: module backups.js — UI modale avec:
  - Sélecteur gauche (backup) / droite (version actuelle ou autre backup)
  - Diff coloré: vert pour ajouts, rouge pour suppressions
  - Bouton Restaurer avec confirmation
- Menu contextuel: clic droit fichier → 'Backups / Versions'
- CSS: styles complets pour la modale, toolbar, table de diff
- ROADMAP: point 6 marqué comme complété
This commit is contained in:
2026-06-03 22:22:50 -04:00
parent c07de4fd65
commit d1ba15c3aa
5 changed files with 967 additions and 9 deletions
+12
View File
@@ -1675,6 +1675,8 @@ export const ContextMenuManager = {
this._addItem('trash-2', 'Supprimer', () => this._deleteFile(), isReadonly);
this._addSeparator();
this._addItem('bookmark-plus', 'Ajouter aux bookmarks', () => this._toggleBookmark(), false);
this._addSeparator();
this._addItem('history', 'Backups / Versions', () => this._openBackupViewer(), false);
}
this._menu.classList.add('active');
@@ -1800,6 +1802,16 @@ export const ContextMenuManager = {
DashboardBookmarkWidget.load();
}
} catch (err) { showToast("Erreur: " + err.message, "error"); }
},
_openBackupViewer() {
// Dynamically import the backup viewer module to avoid circular deps
import('./backups.js').then(mod => {
mod.openBackupViewer(this._targetVault, this._targetPath);
}).catch(err => {
showToast("Erreur lors du chargement du viewer: " + err.message, "error");
});
this.hide();
}
};
export const TabManager = {