diff --git a/new.prompt.prompt.md b/new.prompt.prompt.md
new file mode 100644
index 0000000..d1f11a0
--- /dev/null
+++ b/new.prompt.prompt.md
@@ -0,0 +1,260 @@
+---
+description: New prompt created from chat session
+mode: agent
+tools: ['edit', 'runNotebooks', 'search', 'new', 'runCommands', 'runTasks', 'App Modernization Deploy/*', 'Copilot Container Tools/*', 'usages', 'vscodeAPI', 'problems', 'changes', 'testFailure', 'openSimpleBrowser', 'fetch', 'githubRepo', 'ms-python.python/getPythonEnvironmentInfo', 'ms-python.python/getPythonExecutableCommand', 'ms-python.python/installPythonPackage', 'ms-python.python/configurePythonEnvironment', 'ms-toolsai.jupyter/configureNotebook', 'ms-toolsai.jupyter/listNotebookPackages', 'ms-toolsai.jupyter/installNotebookPackages', 'vscjava.migrate-java-to-azure/appmod-install-appcat', 'vscjava.migrate-java-to-azure/appmod-precheck-assessment', 'vscjava.migrate-java-to-azure/appmod-run-assessment', 'vscjava.migrate-java-to-azure/appmod-get-vscode-config', 'vscjava.migrate-java-to-azure/appmod-preview-markdown', 'vscjava.migrate-java-to-azure/appmod-validate-cve', 'vscjava.migrate-java-to-azure/migration_assessmentReport', 'vscjava.migrate-java-to-azure/uploadAssessSummaryReport', 'vscjava.migrate-java-to-azure/appmod-search-knowledgebase', 'vscjava.migrate-java-to-azure/appmod-search-file', 'vscjava.migrate-java-to-azure/appmod-fetch-knowledgebase', 'vscjava.migrate-java-to-azure/appmod-create-migration-summary', 'vscjava.migrate-java-to-azure/appmod-run-task', 'vscjava.migrate-java-to-azure/appmod-consistency-validation', 'vscjava.migrate-java-to-azure/appmod-completeness-validation', 'vscjava.migrate-java-to-azure/appmod-version-control', 'vscjava.migrate-java-to-azure/appmod-python-setup-env', 'vscjava.migrate-java-to-azure/appmod-python-validate-syntax', 'vscjava.migrate-java-to-azure/appmod-python-validate-lint', 'vscjava.migrate-java-to-azure/appmod-python-run-test', 'vscjava.vscode-java-upgrade/generate_upgrade_plan', 'vscjava.vscode-java-upgrade/confirm_upgrade_plan', 'vscjava.vscode-java-upgrade/setup_upgrade_environment', 'vscjava.vscode-java-upgrade/upgrade_using_openrewrite', 'vscjava.vscode-java-upgrade/build_java_project', 'vscjava.vscode-java-upgrade/validate_cves_for_java', 'vscjava.vscode-java-upgrade/validate_behavior_changes', 'vscjava.vscode-java-upgrade/run_tests_for_java', 'vscjava.vscode-java-upgrade/summarize_upgrade', 'vscjava.vscode-java-upgrade/generate_tests_for_java', 'vscjava.vscode-java-upgrade/list_jdks', 'vscjava.vscode-java-upgrade/list_mavens', 'vscjava.vscode-java-upgrade/install_jdk', 'vscjava.vscode-java-upgrade/install_maven', 'extensions', 'todos']
+model: GPT-5 mini (copilot)
+---
+
+Schau dir bitte den Integrationsplan.md an und mache Verbessungerungsvorschläge und stelle mir ggf. Fragen.
+
+Unter _template.txt habe ich das aktuelle Template als Vorlage gespeichert.
+
+
+Ich starte mit einer kurzen Todo-Liste (Plan) und lese dann parallel die Dateien INTEGRATIONSPLAN.md und _template.txt, um konkrete Verbesserungsvorschläge zu erarbeiten. Erwartetes Ergebnis: Inhaltsanalyse, Vergleich mit Template, konkrete Verbesserungen und gezielte Fragen. Ich setze den ersten Task als "in-progress".Kurz-Update: Ich habe INTEGRATIONSPLAN.md und _template.txt komplett gelesen; jetzt markiere Task 1 als erledigt und beginne mit der Inhaltsanalyse (Task 2). Danach liefere konkrete Vorschläge und Fragen; auf Wunsch erstelle ich einen überarbeiteten Entwurf.## Kurzes Status-Update
+Ich habe INTEGRATIONSPLAN.md und _template.txt gelesen. Im nächsten Schritt liefere ich eine strukturierte Analyse, priorisierte Verbesserungsvorschläge und gezielte Rückfragen. Wenn du willst, schreibe ich anschließend direkt einen überarbeiteten Entwurf der INTEGRATIONSPLAN.md.
+
+## Zusammenfassung der gefundenen Inhalte
+- INTEGRATIONSPLAN.md beschreibt Ablauf, Architektur, notwendige Secrets, Shell-Skript-Design, Gitea-Action, Rendering mit Headless-Browsern, Test/Rollout und optionale Erweiterungen. Sehr ausführlich und technisch gut durchdacht.
+- _template.txt ist ein DokuWiki-Seitentemplate für Meetings (Agenda, Teamup-Links etc.), das als Seiten-Template offenbar verwendet werden soll.
+
+## Priorisierte Verbesserungsvorschläge (kurz & konkret)
+1. Wichtige Ergänzung: Stakeholder / Ownership
+ - Wer ist zuständig für Betrieb (Runner, Skripte), Wartung, Notfallkontakt?
+ - Vorschlag: kleine Sektion "Verantwortlichkeiten" mit E-Mail / Slack-Handle.
+
+2. Acceptance-Kriterien & Erfolgsmessung
+ - Kurz: Was heißt "erfolgreich"? z. B. "PDF + 2 PNGs vorhanden in media, Seite erzeugt, Links funktionieren".
+ - Vorschlag: Liste von 3–5 messbaren Kriterien (Dateigrößen nicht 0, page exists HTTP 200, media referenziert in Seite).
+
+3. Sicherheit & Secret Handling
+ - SSH-Key nicht als plain secret-String ablegen; besser: deploy key mit beschränktem Benutzer, nur SFTP/SSH-Rechte, oder Secret-file in Gitea + ssh-agent.
+ - Rotations-/Zugriffsregel, Berechtigungsprüfung (700/600).
+ - Hinweis: All-Inkl-Pfade sind öffentlich lesbar; keine sensiblen Tokens in Seitentext.
+
+4. Fehlerbehandlung / Idempotenz
+ - Skript: Retry-Logik für Netzwerk/Metabase/Teamup; klar definierte Exit-Codes.
+ - Idempotenz: Wenn gleiche MEETING_ID schon existiert → entweder ersetzen mit `--force` oder neue Version mit timestamp.
+ - Logging: lokal in /var/log/monthly_export.log + Kopie nach remote (optional).
+
+5. Cron / Timezone
+ - Cron in Gitea läuft meist in UTC — dokumentieren und Cron so setzen, dass es 03:00 Europe/Berlin ist (inkl. DST).
+ - Alternative: Scheduler mit TZ-Env im Runner, oder Cron in UTC mit konstanter Umrechnung.
+
+6. DokuWiki-Integration robust machen
+ - Prüfen, ob Schreiben der `data/pages` direkt auf All-Inkl erlaubt/zuverlässig ist (Zugriffsrechte, Ownership, Encoding).
+ - Alternative: DokuWiki-API / XML-RPC falls verfügbar — wirkt stabiler als direkte Datei-Aktualisierung.
+ - Pfad-/Namespace-Konvention festlegen (beispielsweise `teammeetings:YYYY:MM`).
+
+7. Retention / Cleanup
+ - Regel: wie lange Medien behalten? z. B. 12 Monate, automatische Löschung älterer Exporte.
+ - Doku: Dateinamenkonvention mit `MEETING_ID` + version/timestamp.
+
+8. Tests & Rollout detaillieren
+ - Testcases hinzufügen: headless login fail, network fail, file write permissions, page render verification.
+ - CI: einen `workflow_dispatch`-Testlauf und einen Dry-Run-Mode (`--dry-run`).
+
+9. Optional: API-basiertes Exportieren
+ - Metabase: wenn möglich API-Export statt Rendering (stabiler, schneller).
+ - Teamup: prüfen, ob API-Export (z. B. JSON/ICS) möglich und dann layouten, statt Screenshot der WebUI zu machen.
+
+10. Template-Integration
+ - _template.txt als Page-Template klar einbinden: wie wird Template mit generierten Medien verknüpft? Beispiel-Aufruf/Parameter angeben.
+
+## Konkrete, sofort umsetzbare Quick-Wins
+- Ergänze Dokument: "Verantwortliche (Name, Kontakt)" + "Akzeptanzkriterien" + "Backup/Retention-Policy".
+- Im Workflow-Example Cron-Kommentar genauer machen (UTC vs. MEZ/MESZ) und Beispiel für korrekte Cron-Expression für 03:00 Europe/Berlin geben.
+- Skript: füge `--dry-run` und `--force` Flags hinzu; protokolliere jeden Schritt mit Datum/Zeit.
+- Security: add Hinweis "SSH private key als file secret + chmod 600 + ssh-agent verwenden".
+
+## Vorschlag: minimale Acceptance-Criteria (als Vorlage)
+- Metabase-PDF existiert unter `${MEDIA_DIR}/metabase-report-${MEETING_ID}.pdf` und Dateigröße > 50 KB.
+- Zwei Teamup-PNGs existieren unter `${MEDIA_DIR}` und sind sicht-/ladbar (HTTP 200 via DokuWiki).
+- DokuWiki-Seite `${WIKI_MEETING_NAMESPACE}:${MEETING_ID}` existiert und referenziert die Medien.
+- Bei Fehlern wird eine Fehlermeldung in Action-Log geschrieben und eine Benachrichtigung an Owner gesendet (z. B. Mail/Slack).
+
+## Betrieb & Observability (kurz)
+- Logs lokal + ggf. remote: `/var/log/monthly_export.log`, rotiert via `logrotate`.
+- Optional: kurze Mail-/Slack-Notification auf Fehler / Erfolg (z. B. `curl` an Incoming-Webhook).
+- Exit-Codes dokumentieren (0 = ok, 1 = partial fail, 2 = fatal).
+
+## Mapping zum _template.txt
+- _template.txt enthält Meeting-Layout (Agenda, Thekendienst, Teamup-Links). Vorschlag:
+ - Erweitern um Platzhalter für generierte Medien (Metabase, Teamup-Bilder).
+ - Beispiel-Block mit DokuWiki-Medien-Tag (`{{:namespace:filename.pdf|...}}`) und Platzhalter-Substitution erklären.
+ - Standardisierung: `%MEETING_ID%`, `%YEAR%`, `%MONTH%`, `%WEEK1_START%` Platzhalter im Template.
+
+## Fragen an dich (zur Finalisierung / Implementation)
+1. Welche MEETING_ID-Logik möchtest du genau: "aktueller Monat" oder "letzter Monat" (für rückblickende Reports)?
+2. Welcher DokuWiki-Pfad ist genau (voller absolute path)? Ich brauche das zum Testen: `ALLINKL_BASE_PATH` z. B. `/www/htdocs//wiki.neu.hobbyhimmel.de/data`. Ist das korrekt?
+3. Möchtest du, dass ich die Aktualisierung der Dateien per direktem Dateischreiben (wie jetzt beschrieben) oder via DokuWiki-API vorschlage/implementiere?
+4. Wer ist Owner / Betriebskontakt (Name, Mail/Slack)? Ich trage das dann in "Verantwortlichkeiten" ein.
+5. Soll ich einen überarbeiteten INTEGRATIONSPLAN.md-Draft mit vorgenannten Ergänzungen erstellen (Stakeholder, Acceptance, Security, Runbook, Tests)?
+6. Wie sollen Secrets in Gitea genau gehalten werden? Aktuell Beispielvariablen vorhanden — bevorzugst du `WIKI_SSH_KEY` als Secret-File oder als String?
+7. Möchtest du, dass ich ein kleines Beispiel-Skript (`render_pdf.js` in Puppeteer) oder ein Shell-Skript-Skeleton anlege?
+
+## Kleiner Style-/Struktur-Vorschlag für die INTEGRATIONSPLAN.md (Abschnitte)
+- 0. Kurzbeschreibung / Scope (1–2 Sätze)
+- 1. Zielbild (bestehend)
+- 2. Verantwortlichkeiten (neu)
+- 3. Architektur & Datenfluss (bestehend, ggf. grafisch)
+- 4. Voraussetzungen & Secrets (bereinigt, Sicherheitshinweise)
+- 5. Skriptdesign (inkl. Flags, Dry-run)
+- 6. Deploy / Gitea Workflow (Cron + TZ)
+- 7. Tests & Rollout (ausgebaut)
+- 8. Betrieb: Logs / Alerts / Retention / Backup
+- 9. Troubleshooting / Known Issues (kurze FAQ)
+- 10. Anhang: Beispiel-commands, Template-Placeholders
+
+## Nächste Schritte (wie du möchtest)
+- A) Ich erstelle den überarbeiteten INTEGRATIONSPLAN.md-Draft (fülle auch Stakeholder und Acceptance mit Platzhaltern) — oder
+- B) Ich generiere ein minimal lauffähiges Skript-Skeleton + ein kleines Puppeteer-Beispiel (dry-run friendly) — oder
+- C) Ich erstelle beides (Plan + Skript) — dauert etwas länger.
+
+Sag mir kurz, welche Option du bevorzugst (A / B / C) und beantworte bitte die obenstehenden Fragen 1–4 (oder gib mir ein Freifeld, wenn ich Annahmen treffen darf). Dann setze ich die gewünschten Änderungen direkt um.
+
+
+1. aktueller Monat.
+2. Ja.
+3. Wenn es mit DokuWiki-API Einfacher ist, dann darüber. Erspart uns die ALL INKL User Account Problematik
+4. it@hobbyhimmel.de
+5. Du darfst den Plan aktualisieren, mach es aber nicht zu kompliziert. Es ist ein Hobbyprojekt für einen Verein
+6. Ich gebe die Secrets in gitea ein. Für ein lokalen Test hätte ich die Variablen in einer .env die auf Keinen Fall eingecheckt werden darf. Und es Heißt ALLINK_SSH_KEY (den wir wahrscheinlich nicht brauchen, wenn wir die dokuwiki api nehmen)
+7. nein.
+
+Fahre mit A) fort
+
+
+Ich aktualisiere jetzt INTEGRATIONSPLAN.md: ich ergänze eine kurze Verantwortlichkeitssektion, passe die Secret-Hinweise an (.env + Gitea), empfehle die DokuWiki-API statt direktem Dateizugriff (mit Fallback), und füge eine kompakte Liste von Akzeptanzkriterien hinzu. Erwartetes Ergebnis: Dokument bleibt einfach, erhält aber die gewünschten klaren Ergänzungen. Ich markiere Task 2 als abgeschlossen und Task 4 als abgeschlossen; Task 3 setze ich auf "in-progress".
+```
+
+```
+
+```
+
+```
+
+```
+
+```
+
+```
+
+```
+Fertig — ich habe den Plan aktualisiert und die von dir gewünschten, einfachen Ergänzungen eingearbeitet.
+
+Was ich geändert habe (kompakt)
+- INTEGRATIONSPLAN.md ergänzt:
+ - Neue Sektion "Verantwortlichkeiten" mit Owner `it@hobbyhimmel.de`.
+ - Secrets-Hinweis ergänzt: Empfehlung `DOKUWIKI_API_URL` / `DOKUWIKI_API_TOKEN` (API bevorzugen), Hinweis auf lokale `.env` für Tests (nicht einchecken), `ALLINKL_SSH_KEY` als optionaler SSH-Fallback.
+ - DokuWiki-Integration: Empfehlung, API zu nutzen (curl-Beispiel) + SSH-Fallback-Here-Doc beibehalten.
+ - Neue, kompakte "Akzeptanzkriterien" nach Test-/Rollout-Plan (PDF/PNGs vorhanden, Seite verlinkt, Exit-Code/Fehlermeldung).
+- Todo-Liste aktualisiert: Analyse, Vorschläge, Fragen und Draft sind jetzt als erledigt markiert.
+
+Warum das so gemacht wurde
+- Du wolltest keine unnötige Komplexität — daher nur schlanke, aber praktische Ergänzungen (Owner, minimalen Akzeptanzkriterien, einfache API-Option).
+- API statt direktem Dateizugriff verhindert All-Inkl-Berechtigungsprobleme, ist stabiler und reduziert Bedarf an einem speziellen All-Inkl-User/SSH-Key.
+
+Was du jetzt tun kannst (kurze Checkliste)
+- Secrets in Gitea anlegen:
+ - METABASE_*, TEAMUP_*, DOKUWIKI_API_URL + DOKUWIKI_API_TOKEN (empfohlen)
+ - Optional: ALLINKL_SSH_KEY (nur bei SSH-Fallback)
+- Für lokale Tests: `.env` mit denselben Variablen nutzen (niemals committen).
+- Optional: wenn du möchtest, kann ich ein kleines Shell-Skript-Skeleton (`./scripts/monthly_export.sh`) anlegen, das:
+ - Dry-run-Flag hat,
+ - Dateien rendert (Platzhalter-Aufrufe),
+ - Upload via API oder SSH-Fallback demonstriert.
+
+Offene Fragen / Optionen (kurz)
+- Willst du, dass ich ein Script-Skeleton erstelle (einfach, dry-run-fähig)? (du hattest "nein" bei #7 — das bezieht sich wohl auf Beispiel-Skript; bestätige kurz falls du es doch willst)
+- Möchtest du, dass ich die Template-Datei _template.txt automatisch mit Platzhaltern (`%MEETING_ID%`, `%WEEK1%`) versehe? Kann ich gerne leicht ergänzen.
+
+Technisches: Wo ich editiert habe
+- INTEGRATIONSPLAN.md — mehrere kleine Ergänzungen (Verantwortlichkeiten, Secrets-Hinweise, DokuWiki-API, Akzeptanzkriterien).
+
+Nächster Schritt (auf Wunsch)
+- A) Ich lege ein kleines, unaufwändiges Skript-Skeleton an (dry-run, API-Upload-Stub, Flags) — dauert ~10–20 Minuten.
+- B) Ich ergänze _template.txt mit Platzhaltern und einem kurzen Hinweis, wie das Skript die Platzhalter ersetzt.
+
+Sag mir kurz, ob du A oder B möchtest (oder beides). Wenn nichts weiter gewünscht ist, ist der Plan damit abgeschlossen und einsatzbereit.
+
+
+B)
+
+Erstelle mit einen kleinen Plan für die Umsetzung.
+1. API Metabase lokaler test
+2. API Teamup lokaler test
+3. API Wiki lokaler test.
+
+Mit lokalen test, mein ich wir führen das hier auf meinem PC aus.
+
+
+Ich lege eine kurze Umsetzungs-Taskliste an (lokale Tests) und ergänze INTEGRATIONSPLAN.md um einen Abschnitt mit Schritt-für-Schritt-Anweisungen, Env-Variablen, Beispiel-Requests und Prüfungen — Ergebnis: du kannst die drei API-Tests direkt lokal auf deinem PC ausführen. Jetzt erstelle ich die Todo-Liste und füge den Plan ins Dokument ein.
+```
+
+```
+Fertig — ich habe die Todo-Liste angelegt und INTEGRATIONSPLAN.md um den Abschnitt "Umsetzung: Lokaler Testplan (Metabase, Teamup, DokuWiki)" erweitert. Kurz-Status und nächste Schritte:
+
+Was ich hinzugefügt habe
+- Todo-Liste (Tasks für Metabase-/Teamup-/DokuWiki-Tests, `.env.example` und Validierung).
+- In INTEGRATIONSPLAN.md: eine Schritt-für-Schritt-Anleitung für lokale Tests mit
+ - Benötigten Env-Variablen,
+ - Beispiel-curl-Befehlen (Platzhalter),
+ - Validierungs- und Troubleshooting-Schritten,
+ - einer example `.env`-Liste und einer kurzen Checkliste.
+
+Nächste Schritte (du entscheidest)
+- Ich kann eine `.env.example`-Datei im Repo anlegen (platzhalterbasiert).
+- Ich kann ein kleines Skript-Skeleton `./scripts/test_apis.sh` erstellen, das die curl-Beispiele ausführt (ohne Secrets) und Dry-Run-Optionen bietet.
+
+Sag mir kurz, ob ich (1) die `.env.example` anlegen soll, (2) das Testskript anlegen soll, oder (3) beides — dann lege ich die Dateien an und führe (falls gewünscht) schnelle lokale Syntax-Checks durch.
+
+
+ja, lege bitte die .env.example an.
+Und hast du auch schon die _template.txt angepasst?
+
+
+Ich lege jetzt die `.env.example` an (Platzhalter, keine Secrets) und aktualisiere die Todo-Liste, damit der Schritt als erledigt markiert ist. Ergebnis: `.env.example` im Repo und Todo-Status aktualisiert.Fertig — die Datei .env.example wurde erstellt:
+
+- Pfad: .env.example
+- Inhalt: Platzhalter für Metabase, Teamup, DokuWiki (API), optionalen SSH-Fallback, Zeitzone und ein `DRY_RUN`-Flag.
+- Todo: Ich habe den Eintrag "Umgebungsdatei erstellen (.env.example)" in der Todo-Liste auf "completed" gesetzt.
+
+Zu deiner Frage: _template.txt habe ich bislang noch nicht angepasst. Wenn du möchtest, kann ich das jetzt kurz und minimal tun (ohne das Template zu verkomplizieren). Vorschlag für kleine Änderungen:
+
+- Platzhalter einfügen, z. B. `%MEETING_ID%`, `%YYYY-MM-DD%`, `%WEEK1%`, `%WEEK2%`.
+- Ein Kommentar oben, wie das Skript die Platzhalter ersetzt (z. B. "Ersetzt durch monthly_export.sh: %MEETING_ID% → 2025-11").
+
+Möchtest du, dass ich _template.txt jetzt mit solchen Platzhaltern aktualisiere? Wenn ja, mache ich nur die minimalen Änderungen und zeige dir danach kurz, was ich getauscht habe.
+
+
+ja
+
+
+Ich aktualisiere zuerst die Todo-Liste (Template-Update) und passe dann _template.txt minimal an: füge Hinweise zu Platzhaltern hinzu und ersetze feste Teamup-Daten durch Platzhalter (%WEEK1_DATE%, %WEEK2_DATE%). Ergebnis: aktualisierte Todo-Liste und überarbeitetes Template.
+```
+
+```
+Fertig — ich habe _template.txt minimal angepasst und die Todo-Liste aktualisiert.
+
+Was ich geändert habe
+- _template.txt
+ - Oben eine kurze Hinweis-/Kommentar-Sektion eingefügt, die die verwendeten Platzhalter dokumentiert:
+ - %MEETING_ID%, %YYYY-MM-DD%, %LETZTER_MONAT%, %WEEK1_DATE%, %WEEK2_DATE%
+ - Die beiden festen Teamup-URLs mit Datumsparametern ersetzt durch Platzhalter:
+ - `{{url>%TEAMUP_PUBLIC_URL%?view=w&date=%WEEK1_DATE%}}`
+ - `{{url>%TEAMUP_PUBLIC_URL%?view=w&date=%WEEK2_DATE%}}`
+ - `%letzer_monat%` vereinheitlicht zu `%LETZTER_MONAT%` (groß für Lesbarkeit).
+ - Sonstige Struktur beibehalten — minimale, rückwärtskompatible Änderung.
+
+- Todo-Liste:
+ - Task "Template anpassen" auf "completed" gesetzt.
+
+Warum das so
+- Minimal, klar und leicht vom Skript zu ersetzen. Das Template bleibt für manuelle Nutzung lesbar und ist jetzt maschinenfreundlich (platzhalterbasiert).
+
+Empfehlung / nächster Schritt
+- Implementiere in deinem Skript (`monthly_export.sh`) eine einfache Ersetzung, z. B. mit `sed` oder via Node, bevor die Seite hochgeladen wird:
+ - Ersetze `%WEEK1_DATE%` / `%WEEK2_DATE%` durch berechnete ISO-Daten.
+ - Ersetze `%MEETING_ID%` und `%LETZTER_MONAT%` entsprechend.
+- Falls du möchtest, erstelle ich ein kurzes Shell-/Node-Snippet, das die Ersetzungen durchführt (Windows `cmd.exe`-kompatibel oder als Bash-Skript für den Runner). Sag kurz, welches Ziel du bevorzugst (Bash auf Hobbybackend1 oder cmd.exe lokal).
+
\ No newline at end of file