Modul-System (Registry Backend+Frontend, generierte Tabs, Settings-Sektion); ToDo-Modul: persistente Liste mit Anlegen/Bearbeiten im Panel (todos_add/todos_update, Formular mit Abbrechen); alte Hook-Todoliste (OFFENE-PUNKTE.md) komplett entfernt

This commit is contained in:
marcus hinz
2026-07-23 11:35:29 +02:00
parent 513e1a768f
commit 1523856ea7
40 changed files with 1832 additions and 600 deletions
+38
View File
@@ -0,0 +1,38 @@
import { invoke } from "@tauri-apps/api/core";
import { initSearchView } from "../search-view";
import { initWikiView } from "../wiki-view";
import type { PanelTab } from "./index";
export const wikiTab: PanelTab = {
mode: "wiki",
module: "archive",
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:");
},
};
export const searchTab: PanelTab = {
mode: "search",
module: "archive",
buffer: "search",
labelKey: "panel.tabSearch",
titleKey: "panel.tabSearchTitle",
sepAfter: true,
// Treffer-Klick lädt das Dokument in den Dokument-Tab (dort editier- und
// archivierbar); der Sprung ins Wiki geht von dort aus.
init: (container, ctx) =>
initSearchView(container, ctx.openDoc, (raw) => {
// `#tag`-Tokens filtern aufs Schlagwort, der Rest ist die Volltext-Query.
const words = raw.split(/\s+/).filter(Boolean);
const tag = words.find((w) => w.startsWith("#"))?.slice(1) ?? null;
const query = words.filter((w) => !w.startsWith("#")).join(" ");
void invoke("search_run", { project: ctx.project, query, tag }).catch((e) =>
ctx.toast(`Suche fehlgeschlagen: ${e}`),
);
}),
};