Wiederholungen bekommen eine eigene Tafel -- und nur den laufenden Monat

Filipe: "ich will da auch noch eine kategorie fuer automatische
wiederholungen. die sollen dann auch nur fuer den monat selbst
angezeigt werden und nicht monate im voraus."

DAS PROBLEM WAR ECHT UND GROSS, UND ES STAND SEIT TAGEN AUF SEINEM
BILDSCHIRM

Der Nachfueller haelt einen Horizont von 180 Tagen gefuellt (siehe
workspace-serien.js). Ein woechentlicher Community-Talk ergibt darin
sechsundzwanzig Zeilen -- und alle standen unter "Steht an". Auf dem
Bild waren es siebenundzwanzig Karten, fast alle derselbe Termin. Die
Liste war damit unbrauchbar fuer genau das, wofuer sie da ist: zu
sehen, was WIRKLICH ansteht.

Jetzt sind es zwei getrennte Fragen:

  STEHT AN            was einmalig bevorsteht
  LAEUFT AUTOMATISCH  was von allein wiederkommt -- und davon nur der
                      LAUFENDE MONAT

Der Monatsschnitt ist die eigentliche Antwort auf "nicht Monate im
Voraus": Eine Wiederholung im November sagt einem heute nichts, was man
nicht schon weiss. Wer weiter schauen will, hat den Kalender -- und
genau das steht als Satz in der Gruppe.

Gerechnet wird auf dem reinen Datumstext (`beginn` beginnt mit
JJJJ-MM), nicht mit `new Date`. Kein Zeitzonenfehler, kein Nachtfehler.
Die Trennung faellt im SERVER, nicht in der Oberflaeche: Eine zweite
Regel im Browser waere die sichere Zusage, dass beide auseinanderlaufen.

DREI AUSSAGEN STATT EINER

pruef-call-kategorien saet jetzt zwei Auspraegungen derselben Serie --
eine in vier, eine in sechzig Tagen -- und misst:

  1. die Wiederholung dieses Monats steht in "Laeuft automatisch"
  2. die des naechsten Monats NICHT
  3. und unter "Steht an" steht keine von beiden

Vorher wird geprueft, dass die beiden ueberhaupt in verschiedenen
Monaten liegen. Ohne diese Zeile waere Nummer 2 an einem 1. des Monats
trivial erfuellt -- gruen, ohne etwas gemessen zu haben.

Zwei Fehler beim Bau der Pruefung, beide von ihr selbst gemeldet:
`page.evaluate` lief in "Target page has been closed" (der Block davor
schliesst seinen Browserkontext -- diese Aussage braucht ohnehin keinen
Browser, sie betrifft die Schnittstelle), und eine Hilfsfunktion stand
nach ihrer ersten Benutzung.

pruef-call-kategorien von 17 auf 22. Neun Pruefungen gelaufen, alle
gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-07 23:26:38 +02:00
co-authored by Claude Opus 5
parent fc4616bb05
commit 63036fc33e
22 changed files with 295 additions and 195 deletions
+67
View File
@@ -340,6 +340,73 @@ melde("\n=== Gegenprobe ===");
}
await ctx.close();
/* =======================================================================
4. WIEDERHOLUNGEN STEHEN IN IHRER EIGENEN GRUPPE -- UND NUR DER
LAUFENDE MONAT (07.09.2026)
Filipe: "ich will da auch noch eine kategorie fuer automatische
wiederholungen. die sollen dann auch nur fuer den monat selbst
angezeigt werden und nicht monate im voraus."
Der Nachfueller haelt einen Horizont von 180 Tagen gefuellt; ein
woechentlicher Termin ergibt darin sechsundzwanzig Zeilen, und alle
standen unter "Steht an". Geprueft werden deshalb DREI Aussagen --
eine allein waere auch erfuellt, wenn schlicht nichts ankaeme:
1. die Wiederholung dieses Monats steht in `serien`
2. die des naechsten Monats NICHT
3. und in `anstehend` steht keine von beiden
======================================================================= */
melde("\n=== Wiederholungen: eigene Gruppe, nur dieser Monat ===");
{
const inTagen = (n) => {
const t = new Date(Date.now() + n * 86400000);
const p = (x) => String(x).padStart(2, "0");
return `${t.getFullYear()}-${p(t.getMonth() + 1)}-${p(t.getDate())}T18:00`;
};
const d2 = new DatabaseSync(process.env.WORKSPACE_DB);
d2.prepare(`INSERT INTO termin_serien (titel, art, takt, start_tag, uhrzeit, dauer_min, aktiv, erstellt, erstellt_von)
VALUES ('Community-Talk','call','woechentlich',?,'18:00',30,1,?,1)`)
.run(inTagen(0).slice(0, 10), new Date().toISOString());
const serieId = d2.prepare("SELECT last_insert_rowid() AS id").get().id;
const rein = d2.prepare(`INSERT INTO termine (titel, art, beginn, dauer_min, serie_id, erstellt, erstellt_von)
VALUES (?,?,?,?,?,?,1)`);
/* Zwei Auspraegungen derselben Serie: eine in vier Tagen (also mit
grosser Wahrscheinlichkeit dieser Monat) und eine in sechzig Tagen
(sicher ein anderer). Der Monatsschnitt wird aus dem Datumstext
gerechnet, nicht aus einer Zeitzone. */
const nah = inTagen(4), fern = inTagen(60);
rein.run("Serie dieser Monat", "call", nah, 30, serieId, new Date().toISOString());
rein.run("Serie spaeter", "call", fern, 30, serieId, new Date().toISOString());
d2.close();
/* OHNE BROWSER. Die Seite ist an dieser Stelle laengst geschlossen
(der Block darueber macht seinen Kontext zu), und `page.evaluate`
lief deshalb in "Target page has been closed". Diese Aussage
braucht ohnehin keinen Browser: Sie betrifft die Schnittstelle. */
const anmeldung = await fetch(BASIS + "/workspace/api/anmelden", {
method: "POST", headers: { "Content-Type": "application/json" },
body: JSON.stringify({ rolle: "admin", code: "CODE-DOGI-0001" }),
});
const keks = (anmeldung.headers.getSetCookie?.() || [])
.map((z) => z.split(";")[0]).join("; ");
ok(!!keks, "als DogFather angemeldet");
const antwort = await (await fetch(BASIS + "/workspace/api/calls",
{ headers: { cookie: keks } })).json();
const serien = (antwort.serien || []).map((c) => c.titel);
const anstehend = (antwort.anstehend || []).map((c) => c.titel);
const gleicherMonat = nah.slice(0, 7) === fern.slice(0, 7);
ok(!gleicherMonat,
`die beiden Auspraegungen liegen in verschiedenen Monaten (${nah.slice(0, 7)} / ${fern.slice(0, 7)})`);
ok(serien.includes("Serie dieser Monat"),
`die Wiederholung dieses Monats steht in "Laeuft automatisch" (${serien.join(", ") || "leer"})`);
ok(!serien.includes("Serie spaeter"),
"die des naechsten Monats nicht -- keine Monate im Voraus");
ok(!anstehend.includes("Serie dieser Monat") && !anstehend.includes("Serie spaeter"),
`und unter "Steht an" steht keine von beiden (${anstehend.length} Eintraege)`);
}
await browser.close();
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ }
+28 -2
View File
@@ -69,7 +69,7 @@ callRouter.use("/workspace/api/calls", angemeldet);
const SPALTEN = `
t.id, t.titel, t.beschreibung, t.art, t.beginn, t.dauer_min, t.ort,
t.creator_id, t.teilnehmer_id, t.erledigt,
t.creator_id, t.teilnehmer_id, t.erledigt, t.serie_id,
pc.name AS creator_name, pt.name AS teilnehmer_name,
pr.id AS protokoll_id, pr.punkte, pr.entscheidungen,
pr.erstellt AS protokoll_erstellt, pr.naechster_termin_id,
@@ -133,8 +133,34 @@ callRouter.get("/workspace/api/calls", (req, res) => {
call_link: einstellung("call_link", "") || "",
/* Die Reihenfolge der Gruppen ist die Dringlichkeit: Was fehlt,
steht oben -- nicht was als Naechstes kommt. */
/* WIEDERHOLUNGEN BEKOMMEN EINE EIGENE GRUPPE (07.09.2026).
Filipe: "ich will da auch noch eine kategorie fuer automatische
wiederholungen. die sollen dann auch nur fuer den monat selbst
angezeigt werden und nicht monate im voraus."
DAS PROBLEM WAR ECHT UND GROSS: Der Nachfueller haelt einen
Horizont von 180 Tagen gefuellt (siehe workspace-serien.js).
Ein woechentlicher Community-Talk ergibt darin sechsundzwanzig
Zeilen -- und alle standen unter "Steht an". Auf Filipes Bild
waren es siebenundzwanzig Karten, fast alle derselbe Termin.
Die Liste war damit unbrauchbar fuer das, wofuer sie da ist:
zu sehen, was WIRKLICH ansteht.
Jetzt zwei getrennte Fragen:
STEHT AN was einmalig bevorsteht
LAEUFT AUTOMATISCH was von allein wiederkommt, und davon
nur der LAUFENDE MONAT
Der Monatsschnitt ist die eigentliche Antwort auf "nicht Monate
im Voraus": Eine Wiederholung im November sagt einem heute
nichts, was man nicht schon weiss. Gerechnet wird auf dem
reinen Datumstext (`beginn` beginnt mit JJJJ-MM) -- kein
`new Date`, keine Zeitzone, kein Nachtfehler. */
offen: alle.filter((c) => c.beginn <= grenze && !c.protokoll_id).reverse(),
anstehend: alle.filter((c) => c.beginn > grenze).reverse(),
anstehend: alle.filter((c) => c.beginn > grenze && !c.serie_id).reverse(),
serien: alle.filter((c) => c.beginn > grenze && c.serie_id
&& String(c.beginn).slice(0, 7) === grenze.slice(0, 7)).reverse(),
erledigt: alle.filter((c) => c.beginn <= grenze && c.protokoll_id),
});
} catch (fehler) {
+9 -2
View File
@@ -403,6 +403,8 @@
{ schluessel: 'offen', titel: 'Protokoll fehlt',
frage: 'Diese Gespräche sind vorbei, aber noch nicht festgehalten.' },
{ schluessel: 'anstehend', titel: 'Steht an', frage: null },
{ schluessel: 'serien', titel: 'Läuft automatisch',
frage: 'Wiederholungen dieses Monats. Was danach kommt, steht im Kalender.' },
{ schluessel: 'erledigt', titel: 'Festgehalten', frage: null },
];
@@ -460,7 +462,8 @@
ziel.textContent = '';
ziel.setAttribute('aria-busy', 'false');
if (!daten.offen.length && !daten.anstehend.length && !daten.erledigt.length) {
if (!daten.offen.length && !daten.anstehend.length
&& !(daten.serien || []).length && !daten.erledigt.length) {
const leer = el('div', 'leer-hinweis');
leer.append(document.createTextNode('Noch keine Calls. Termine mit der Art „Call" oder „Review" '));
const a = el('a', 'call__verweis', 'im Kalender');
@@ -493,7 +496,11 @@
ziel.className = 'call-brett';
for (const g of GRUPPEN) {
const liste = daten[g.schluessel];
/* `|| []` fuer den Fall, dass ein Server ohne die neue Gruppe
antwortet -- etwa wenn die Seite noch aus dem Zwischenspeicher
kommt, der Dienst aber schon neu ist. Eine Oberflaeche, die
daran abstuerzt, waere der schlechtere Ausgang. */
const liste = daten[g.schluessel] || [];
if (!liste.length) continue;
const s = el('section', 'gruppe');
s.dataset.gruppe = g.schluessel;
+9 -9
View File
@@ -9,10 +9,10 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -212,10 +212,10 @@
</form>
</dialog>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/aufgaben.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/aufgaben.js?v=202609072322" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -135,10 +135,10 @@
</main>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/automation.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/automation.js?v=202609072322" defer></script>
</body>
</html>
+14 -14
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -144,14 +144,14 @@
</main>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/checkliste.js?v=202609071839" defer></script>
<script src="assets/js/ampel.js?v=202609071839" defer></script>
<script src="assets/js/schulung.js?v=202609071839" defer></script>
<script src="assets/js/vorlagen.js?v=202609071839" defer></script>
<script src="assets/js/bereich.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/checkliste.js?v=202609072322" defer></script>
<script src="assets/js/ampel.js?v=202609072322" defer></script>
<script src="assets/js/schulung.js?v=202609072322" defer></script>
<script src="assets/js/vorlagen.js?v=202609072322" defer></script>
<script src="assets/js/bereich.js?v=202609072322" defer></script>
</body>
</html>
+11 -11
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -77,11 +77,11 @@
</main>
<script src="assets/js/ki.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/calls.js?v=202609071839" defer></script>
<script src="assets/js/ki.js?v=202609072322" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/calls.js?v=202609072322" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,17 +9,17 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<!-- aufgaben.css bringt die Dialog- und Formularstile mit (.dialog,
.neu__zeile, .dialog__knoepfe). Sie stehen dort seit dem
Aufgabenbrett; sie hierher zu kopieren hiesse, sie an zwei Stellen
zu pflegen. Dieselbe Lösung nutzen kalender.html und content.html.
Gemeldet von pruef-css-klassen.mjs, bevor jemand einen ungestylten
Dialog zu sehen bekam. -->
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -155,10 +155,10 @@
</form>
</dialog>
<script src="assets/js/bereiche.js?v=202609071839"></script>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839"></script>
<script src="assets/js/glocke.js?v=202609071839"></script>
<script src="assets/js/chat.js?v=202609071839"></script>
<script src="assets/js/bereiche.js?v=202609072322"></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322"></script>
<script src="assets/js/glocke.js?v=202609072322"></script>
<script src="assets/js/chat.js?v=202609072322"></script>
</body>
</html>
+12 -12
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/content.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/content.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -167,12 +167,12 @@
</main>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/checkliste.js?v=202609071839" defer></script>
<script src="assets/js/vorlagen.js?v=202609071839" defer></script>
<script src="assets/js/content.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/checkliste.js?v=202609072322" defer></script>
<script src="assets/js/vorlagen.js?v=202609072322" defer></script>
<script src="assets/js/content.js?v=202609072322" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -96,10 +96,10 @@
</main>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/dateien.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/dateien.js?v=202609072322" defer></script>
</body>
</html>
+2 -2
View File
@@ -27,7 +27,7 @@
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
</head>
<body class="gate">
@@ -219,6 +219,6 @@
</main>
</div>
<script src="assets/js/gate.js?v=202609071839" defer></script>
<script src="assets/js/gate.js?v=202609072322" defer></script>
</body>
</html>
+11 -11
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -258,11 +258,11 @@
</main>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/kalender.js?v=202609071839" defer></script>
<script src="assets/js/kalender-abo.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/kalender.js?v=202609072322" defer></script>
<script src="assets/js/kalender-abo.js?v=202609072322" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -212,10 +212,10 @@
</form>
</dialog>
<script src="assets/js/wahl.js?v=202609071839"></script>
<script src="assets/js/bereiche.js?v=202609071839"></script>
<script src="assets/js/kopf.js?v=202609071839"></script>
<script src="assets/js/glocke.js?v=202609071839"></script>
<script src="assets/js/leistung.js?v=202609071839"></script>
<script src="assets/js/wahl.js?v=202609072322"></script>
<script src="assets/js/bereiche.js?v=202609072322"></script>
<script src="assets/js/kopf.js?v=202609072322"></script>
<script src="assets/js/glocke.js?v=202609072322"></script>
<script src="assets/js/leistung.js?v=202609072322"></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -157,10 +157,10 @@
</main>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/personen.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/personen.js?v=202609072322" defer></script>
</body>
</html>
+11 -11
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -202,11 +202,11 @@
</main>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/steckbrief.js?v=202609071839" defer></script>
<script src="assets/js/profil.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/steckbrief.js?v=202609072322" defer></script>
<script src="assets/js/profil.js?v=202609072322" defer></script>
</body>
</html>
+11 -11
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/report.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/report.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -94,11 +94,11 @@
</main>
<script src="assets/js/ki.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/report.js?v=202609071839" defer></script>
<script src="assets/js/ki.js?v=202609072322" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/report.js?v=202609072322" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -127,10 +127,10 @@
</div>
</div>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/scouting.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/scouting.js?v=202609072322" defer></script>
</body>
</html>
+9 -9
View File
@@ -9,12 +9,12 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<!-- Nur die Startseite: Begrüßungskachel, Uhr, Glockenmulde. Siehe
den Hinweis in start.css -- dort stand es bis zum 07.09.2026. -->
<link rel="stylesheet" href="assets/css/heim.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/heim.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -320,10 +320,10 @@
</p>
</main>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/start.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/start.js?v=202609072322" defer></script>
</body>
</html>
+11 -11
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -73,11 +73,11 @@
</main>
<script src="assets/js/ki.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/startcheck.js?v=202609071839" defer></script>
<script src="assets/js/ki.js?v=202609072322" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/startcheck.js?v=202609072322" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -114,10 +114,10 @@
</main>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/steckbrief.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/steckbrief.js?v=202609072322" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,13 +9,13 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
Dialog "Creator anlegen". -->
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -137,11 +137,11 @@
</main>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/uebersicht.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/uebersicht.js?v=202609072322" defer></script>
</body>
</html>
+10 -10
View File
@@ -9,11 +9,11 @@
<meta name="theme-color" content="#0674b9" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/start.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/module.css?v=202609071839" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/start.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609072322" />
<link rel="stylesheet" href="assets/css/module.css?v=202609072322" />
</head>
<body class="start">
@@ -178,10 +178,10 @@
</main>
<script src="assets/js/wahl.js?v=202609071839" defer></script>
<script src="assets/js/bereiche.js?v=202609071839" defer></script>
<script src="assets/js/kopf.js?v=202609071839" defer></script>
<script src="assets/js/glocke.js?v=202609071839" defer></script>
<script src="assets/js/wissen.js?v=202609071839" defer></script>
<script src="assets/js/wahl.js?v=202609072322" defer></script>
<script src="assets/js/bereiche.js?v=202609072322" defer></script>
<script src="assets/js/kopf.js?v=202609072322" defer></script>
<script src="assets/js/glocke.js?v=202609072322" defer></script>
<script src="assets/js/wissen.js?v=202609072322" defer></script>
</body>
</html>