Archiv-Navigator: Baum nur Ordner + flache Inhaltsliste (Zeilen: öffnen/umbenennen/löschen), Ordner/Dokument anlegen (Dateiname ohne Stempel, Datum im Frontmatter), Write-back geöffneter Archiv-Dokumente über Quell-Verknüpfung; Ablösen übergibt aktiven Tab

This commit is contained in:
marcus hinz
2026-07-23 21:17:41 +02:00
parent 1523856ea7
commit f58b9887c7
26 changed files with 1362 additions and 468 deletions
+23 -4
View File
@@ -9,11 +9,30 @@ export const wikiTab: PanelTab = {
buffer: "wiki",
labelKey: "panel.tabWiki",
titleKey: "panel.tabWikiTitle",
init: (container, ctx) => initWikiView(container, ctx.openWiki),
// Wiki-Tab bei leerem Puffer (Session-Start): Übersicht direkt laden.
onActivate: (view, ctx) => {
if (view.empty()) ctx.openWiki("tag:");
// Dokument-/Ordner-Operationen laufen als Commands; der neue Stand kommt
// über den Wiki-Puffer (wiki-update) zurück, Fehler als Toast. Der
// Dokument-Sprung lädt wie ein Suchtreffer in den Dokument-Tab.
init: (container, ctx) => {
const run = (cmd: string, args: Record<string, string>) =>
void invoke(cmd, { project: ctx.project, ...args }).catch((e) =>
ctx.toast(String(e)),
);
return initWikiView(container, {
openDoc: ctx.openDoc,
openWiki: ctx.openWiki,
actions: {
rename: (relpath, name) => run("archive_rename", { relpath, name }),
remove: (relpath) => run("archive_delete", { relpath }),
moveFolder: (folder, to) => run("archive_move_folder", { folder, to }),
createFolder: (folder) => run("archive_create_folder", { folder }),
createDoc: (folder, name) => run("archive_create_doc", { folder, name }),
},
});
},
// Beim Aktivieren die Übersicht frisch laden: das Anlegen eines Dokuments
// öffnet den Dokument-Tab, ohne den Wiki-Puffer anzufassen — und auch
// direkt archivierte oder von Hand abgelegte Dateien erscheinen so.
onActivate: (_view, ctx) => ctx.openWiki("tag:"),
};
export const searchTab: PanelTab = {