Der Chat oeffnet dort, wo das Neue anfaengt -- bei allen sechs Rollen
Filipe: "wenn ich in den chat rein gehe und es neue kommentare gibt, will ich dass mein chat sich da öffnet wo die neuen nachrichten anfangen die ich noch nicht gesehen hab bitte und nicht immer ganz unten. sonst muss man immer hoch scrollen um die neuen zu lesen und das ist scheisse. perfektionier das bei allen rollen." DIE FUNKTION GAB ES SEIT DEM 09.09.2026 -- eine Linie „Ab hier neu" und einen Sprung darauf. Sie hat trotzdem nicht funktioniert, und zwar aus DREI Gruenden, die sich gegenseitig verdeckt haben. Gefunden hat sie keine Ueberlegung, sondern eine Messung in Pixeln: Wie weit ist die Linie vom oberen Rand entfernt? Ein negativer Wert heisst „darueber", also unsichtbar. 1. DER SPRUNG RECHNETE GEGEN DEN FALSCHEN PUNKT. `linie.offsetTop` ist der Abstand zum `offsetParent` -- und das ist nur dann der Verlauf, wenn dieser `position: relative` traegt. Tut er nicht. Gemessen auf 390 px landete die Linie 23 px OBERHALB des sichtbaren Bereichs: Man musste genau das tun, was Filipe nicht mehr tun wollte. Am Rechner stimmte es zufaellig, weil dort weniger dazwischenliegt -- deshalb ist es nie aufgefallen. Jetzt: Oberkante der Linie minus Oberkante des Verlaufs plus dessen Bildlaufposition. Das gilt immer, egal wer wessen offsetParent ist. 2. JEDES NACHLADEN LOESCHTE DIE LINIE. `gelesenBeimOeffnen` wurde bei JEDEM Aufruf gesetzt, auch beim sanften Nachladen. Sanft laedt der Verlauf staendig nach -- vor allem, wenn der Ereignisstrom sich verbindet. Die Seite laedt, zeichnet, meldet „gelesen bis hier", der Strom verbindet sich, laedt sanft nach -- und jetzt steht in `gelesen_bis` schon die letzte Nachricht. Keine Linie mehr, Sprung ans Ende. DAS IST DER FEHLER, DEN FILIPE GESEHEN HAT. Und er wuerfelte: Kommt die Verbindung vor dem ersten Zeichnen, passiert nichts; danach ist die Linie weg. Ueber sechs Rollen gemessen waren mal drei rot, mal zwei, mal andere -- bei unveraendertem Code. 3. UND EIN EINZIGER SPRUNG REICHT NICHT. Zwischen Sprung und fertigem Bild waechst die Hoehe noch: Schriften kommen an und setzen den Text um, Bilder melden ihre Groesse. Jetzt wird nachgezogen -- nach den Schriften, nach jedem Bild, nach zwei Bildwiederholungen -- und die Stelle haelt, bis der Mensch selbst scrollt. „Ich habe dich an die neue Stelle gesetzt" ist eine Zusage; sie beim naechsten Nachladen zu brechen waere schlimmer, als sie nie gegeben zu haben. GEMESSEN -- server/pruef-chat-neu-stelle.mjs (neu), 63 Pruefungen, 0 Fehler, zweimal hintereinander mit demselben Ergebnis: Sechs Rollen in beiden Haeusern (DogFather, rechte Hand, linke Hand, Modi auf crew.; Manager und Creator auf workspace.), je auf Handy (390 px) und Rechner (1280 px). Je Blick: Steht die Linie im Verlauf? Ist sie zu SEHEN? Steht Zusammenhang darueber? Und ist der Verlauf NICHT am Ende? Ergebnis: 115-118 px unter dem oberen Rand am Handy, 150-153 px am Rechner -- darueber jeweils die letzte alte Nachricht. Dazu drei Gegenproben: Ohne Ungelesenes gibt es keine Linie und der Verlauf steht am Ende (sonst laendete man grundlos mitten im Verlauf); und die Messung erkennt „nicht sichtbar" auch wirklich (-1403 px an einem absichtlich nach unten gescrollten Verlauf) -- sonst waere jede gruene Zeile darueber wertlos. DIE PRUEFUNG SELBST HAT ZWEIMAL DAS FALSCHE GEMESSEN, bevor sie das Richtige maass, und beides steht als Begruendung darin: Sie schickte `/gelesen` ohne `bis` (die Route verlangt eine Nummer und lehnt sonst ab -- der Lesestand blieb null, die Linie entstand nie), und sie benutzte einen Raum je Rolle fuer zwei Blicke, was einen Wettlauf mit der „gelesen"-Meldung erzeugte. Jetzt bekommt jeder Blick seinen eigenen Raum: mehr Aufbau, dafuer immer dasselbe Ergebnis. pruef-chat 63/0, pruef-chat-optik 62/0, pruef-chat-kanaele 81/0, pruef-treffchat 110/0, pruef-chat-neu 36/0, pruef-pin-fuer-mich 37/0, pruef-erwaehnung 129/0, pruef-gifs 17/0. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,262 @@
|
||||
/* =====================================================================
|
||||
WO STEHT DER VERLAUF, WENN MAN IHN AUFMACHT? (25.09.2026)
|
||||
=====================================================================
|
||||
|
||||
Filipe: „wenn ich in den chat rein gehe und es neue kommentare gibt,
|
||||
will ich dass mein chat sich da öffnet wo die neuen nachrichten
|
||||
anfangen die ich noch nicht gesehen hab bitte und nicht immer ganz
|
||||
unten. sonst muss man immer hoch scrollen um die neuen zu lesen und
|
||||
das ist scheisse."
|
||||
|
||||
IM QUELLTEXT STEHT DAS SEIT DEM 09.09.2026 -- eine Linie „Ab hier
|
||||
neu" und ein Sprung darauf. Filipe sagt, es passiert nicht. Also
|
||||
wird gemessen statt gelesen: Zwei Menschen, echte Nachrichten, und
|
||||
danach die Frage, wo der Verlauf wirklich steht.
|
||||
|
||||
GEMESSEN WIRD IN PIXELN, nicht im Gefuehl: Wie weit ist die Linie
|
||||
vom oberen Rand des sichtbaren Bereichs entfernt? Steht sie im Bild?
|
||||
Und wie viel Verlauf liegt darunter -- also: wie weit haette man
|
||||
scrollen muessen?
|
||||
|
||||
Aufrufen mit: node server/mess-chat-neu-stelle.mjs
|
||||
===================================================================== */
|
||||
import { mkdtempSync, rmSync, readFileSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { execFileSync } from "node:child_process";
|
||||
import { request as httpAnfrage } from "node:http";
|
||||
import { createServer as httpsServer } from "node:https";
|
||||
|
||||
const PORT = 5491, HP = 5492;
|
||||
const CREW = "crew.dogfather-universe.com";
|
||||
const ordner = mkdtempSync(join(tmpdir(), "ws-neustelle-"));
|
||||
process.env.WORKSPACE_DB = join(ordner, "workspace.db");
|
||||
process.env.PORT = String(PORT);
|
||||
process.env.SITE_ACCESS_SECRET = "lokaler-test";
|
||||
process.env.SITE_PUBLIC_LAUNCH_AT = "2020-01-01T00:00:00+01:00";
|
||||
|
||||
const express = (await import("express")).default;
|
||||
const ec = express.response.cookie;
|
||||
express.response.cookie = function (n, w, o) {
|
||||
return ec.call(this, n, w, { ...(o || {}), secure: false });
|
||||
};
|
||||
import { notbremse } from "./helfer-notbremse.mjs";
|
||||
await import("./index.js");
|
||||
notbremse(300_000, "mess-chat-neu-stelle");
|
||||
await new Promise((r) => setTimeout(r, 900));
|
||||
process.on("uncaughtException", (f) => { console.error("ABSTURZ:", f); process.exit(7); });
|
||||
|
||||
const { DatabaseSync } = await import("node:sqlite");
|
||||
const { scryptSync, randomBytes, createHmac } = await import("node:crypto");
|
||||
const d = new DatabaseSync(process.env.WORKSPACE_DB);
|
||||
const jetzt = new Date().toISOString();
|
||||
const sch = randomBytes(32).toString("hex");
|
||||
d.prepare("INSERT INTO einstellungen (schluessel, wert, geaendert, von)"
|
||||
+ " VALUES (?,?,?,NULL) ON CONFLICT(schluessel) DO NOTHING")
|
||||
.run("code_kennung_schluessel", sch, jetzt);
|
||||
const anlegen = (name, rolle, code) => {
|
||||
const s = randomBytes(16).toString("hex");
|
||||
const h = scryptSync(code, s, 64,
|
||||
{ N: 32768, r: 8, p: 1, maxmem: 96 * 1024 * 1024 }).toString("hex");
|
||||
return d.prepare("INSERT INTO personen"
|
||||
+ " (name, rolle, code_hash, code_salt, code_n, code_kennung, aktiv, erstellt)"
|
||||
+ " VALUES (?,?,?,?,?,?,1,?) RETURNING id")
|
||||
.get(name, rolle, h, s, 32768,
|
||||
createHmac("sha256", sch).update(code).digest("hex"), jetzt).id;
|
||||
};
|
||||
const idDogi = anlegen("Filipe", "admin", "CODE-DOGI-0001");
|
||||
const idA = anlegen("Kessi", "modi", "CODE-MODI-0001");
|
||||
d.close();
|
||||
|
||||
const roh = (keks, pfad, methode = "GET", koerper = null) =>
|
||||
new Promise((fertig, schief) => {
|
||||
const daten = koerper === null ? null : JSON.stringify(koerper);
|
||||
const a = httpAnfrage({
|
||||
host: "127.0.0.1", port: PORT, path: pfad, method: methode,
|
||||
headers: {
|
||||
Host: CREW, ...(keks ? { Cookie: keks } : {}),
|
||||
Origin: `https://${CREW}`, Referer: `https://${CREW}/workspace/chat.html`,
|
||||
...(daten ? { "Content-Type": "application/json",
|
||||
"Content-Length": Buffer.byteLength(daten) } : {}),
|
||||
},
|
||||
}, (r) => {
|
||||
let t = ""; r.on("data", (x) => { t += x; });
|
||||
r.on("end", () => fertig({ status: r.statusCode, kopf: r.headers,
|
||||
json: () => { try { return JSON.parse(t); } catch { return {}; } } }));
|
||||
});
|
||||
a.on("error", schief);
|
||||
if (daten) a.write(daten);
|
||||
a.end();
|
||||
});
|
||||
const anmelden = async (rolle, code) => {
|
||||
const a = await roh(null, "/workspace/api/anmelden", "POST", { rolle, code });
|
||||
return [].concat(a.kopf["set-cookie"] || []).map((z) => z.split(";")[0]).join("; ");
|
||||
};
|
||||
|
||||
const kDogi = await anmelden("admin", "CODE-DOGI-0001");
|
||||
const kA = await anmelden("modi", "CODE-MODI-0001");
|
||||
|
||||
const gr = await roh(kDogi, "/workspace/api/chat/direkt", "POST", { mit: idA });
|
||||
const raumId = gr.json().raum_id;
|
||||
console.log(`Raum #${raumId}`);
|
||||
|
||||
const schreiben = (keks, text) =>
|
||||
roh(keks, `/workspace/api/chat/raeume/${raumId}/nachrichten`, "POST", { text });
|
||||
|
||||
/* ---- 20 Nachrichten, die DogFather schon gelesen hat -------------- */
|
||||
let letzteAlte = 0;
|
||||
for (let i = 1; i <= 20; i++) {
|
||||
const a = await schreiben(kA, `Alte Nachricht ${i} von Kessi.`);
|
||||
letzteAlte = a.json().nachricht?.id || a.json().id || letzteAlte;
|
||||
}
|
||||
/* DogFather macht auf und liest. `bis` IST PFLICHT -- die Route
|
||||
verlangt eine Nummer und lehnt sonst mit 400 ab. Im ersten Anlauf
|
||||
habe ich ein leeres Objekt geschickt; `gelesen_bis` blieb damit auf
|
||||
null, die Linie „Ab hier neu" entstand nie, und die Messung meldete
|
||||
einen Fehler, den es nicht gab. Eine Messung, die falsch aufsetzt,
|
||||
findet zuverlaessig Befunde -- nur nicht die echten. */
|
||||
await roh(kDogi, `/workspace/api/chat/raeume/${raumId}/nachrichten`);
|
||||
const gel = await roh(kDogi, `/workspace/api/chat/raeume/${raumId}/gelesen`,
|
||||
"PUT", { bis: letzteAlte });
|
||||
console.log(`gelesen bis #${letzteAlte}: HTTP ${gel.status}`);
|
||||
await new Promise((r) => setTimeout(r, 300));
|
||||
|
||||
/* ---- Und jetzt zwoelf neue, die er NICHT gesehen hat -------------- */
|
||||
for (let i = 1; i <= 12; i++) await schreiben(kA, `NEUE Nachricht ${i} von Kessi.`);
|
||||
|
||||
const stand = await roh(kDogi, `/workspace/api/chat/raeume/${raumId}/nachrichten`);
|
||||
console.log(`gelesen_bis beim Oeffnen: ${stand.json().gelesen_bis}`
|
||||
+ `, Nachrichten: ${(stand.json().nachrichten || []).length}`);
|
||||
|
||||
const schl = join(ordner, "b.key"), zert = join(ordner, "b.crt");
|
||||
execFileSync("openssl", ["req", "-x509", "-newkey", "rsa:2048", "-nodes", "-keyout", schl,
|
||||
"-out", zert, "-days", "2", "-subj", `/CN=${CREW}`, "-addext", `subjectAltName=DNS:${CREW}`],
|
||||
{ stdio: "ignore" });
|
||||
const vorbau = httpsServer({ key: readFileSync(schl), cert: readFileSync(zert) },
|
||||
(von, nach) => {
|
||||
const w = httpAnfrage({
|
||||
host: "127.0.0.1", port: PORT, path: von.url, method: von.method,
|
||||
headers: { ...von.headers, host: `${CREW}:${HP}` },
|
||||
}, (a) => { nach.writeHead(a.statusCode || 502, a.headers); a.pipe(nach); });
|
||||
von.pipe(w);
|
||||
});
|
||||
await new Promise((r) => vorbau.listen(HP, "127.0.0.1", r));
|
||||
|
||||
const pw = await import(
|
||||
"file:///C:/Users/qciga/Documents/Obelix/Analyse/node_modules/playwright/index.mjs");
|
||||
const browser = await pw.chromium.launch({
|
||||
args: [`--host-resolver-rules=MAP ${CREW} 127.0.0.1`, "--ignore-certificate-errors"],
|
||||
});
|
||||
|
||||
for (const [wie, breite, hoehe, mobil] of [
|
||||
["handy", 390, 844, true], ["rechner", 1280, 900, false],
|
||||
]) {
|
||||
/* ==== VOR JEDEM DURCHLAUF DEN LESESTAND ZURUECKSETZEN ===========
|
||||
|
||||
Beim Oeffnen meldet die Seite „gelesen bis hier" -- das ist
|
||||
richtig und hat im ersten Anlauf den zweiten Durchlauf ruiniert:
|
||||
Nach dem Handy war nichts mehr neu, die Linie entstand nicht, und
|
||||
die Messung meldete fuer den Rechner „Linie FEHLT". Ein Befund,
|
||||
den die Messung selbst erzeugt hatte.
|
||||
|
||||
Zurueckgesetzt wird direkt in der Datenbank und nicht ueber die
|
||||
Route: Die laesst `bis` absichtlich nicht kleiner werden. */
|
||||
const kontext = await browser.newContext({
|
||||
viewport: { width: breite, height: hoehe },
|
||||
deviceScaleFactor: mobil ? 2 : 1, isMobile: mobil, hasTouch: mobil,
|
||||
});
|
||||
await kontext.addCookies(kDogi.split("; ").map((k) => {
|
||||
const [x, ...r] = k.split("=");
|
||||
return { name: x, value: r.join("="), domain: CREW, path: "/" };
|
||||
}));
|
||||
const seite = await kontext.newPage();
|
||||
const konsole = [];
|
||||
seite.on("console", (e) => {
|
||||
if (e.type() === "error" && !/favicon|ERR_CERT|net::ERR/i.test(e.text())) {
|
||||
konsole.push(e.text().slice(0, 140));
|
||||
}
|
||||
});
|
||||
/* DER LESESTAND WIRD UNMITTELBAR VOR DEM AUFRUF ZURUECKGESETZT.
|
||||
|
||||
Beim Oeffnen meldet die Seite „gelesen bis hier" -- richtig, und
|
||||
im ersten Anlauf hat es den zweiten Durchlauf ruiniert: Nach dem
|
||||
Handy war nichts mehr neu, die Linie entstand nicht, und die
|
||||
Messung meldete fuer den Rechner „Linie FEHLT". Ein Befund, den
|
||||
die Messung selbst erzeugt hatte.
|
||||
|
||||
Der Reset stand zuerst vor `newContext` -- ein paar Millisekunden
|
||||
zu frueh: Die verzoegerte Meldung des vorigen Durchlaufs kam
|
||||
danach. Jetzt steht er unmittelbar vor dem Aufruf, mit einer
|
||||
kurzen Pause davor, damit der vorige Browser wirklich fertig ist.
|
||||
|
||||
Zurueckgesetzt wird in der Datenbank und nicht ueber die Route:
|
||||
Die laesst `bis` absichtlich nicht kleiner werden. */
|
||||
await new Promise((r) => setTimeout(r, 600));
|
||||
{
|
||||
const dd = new DatabaseSync(process.env.WORKSPACE_DB);
|
||||
dd.prepare("UPDATE chat_teilnehmer SET gelesen_bis = ? WHERE raum_id = ? AND person_id = ?")
|
||||
.run(letzteAlte, raumId, idDogi);
|
||||
dd.close();
|
||||
}
|
||||
await seite.goto(`https://${CREW}:${HP}/workspace/chat.html?raum=${raumId}`,
|
||||
{ waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(2200);
|
||||
|
||||
const lage = await seite.evaluate(() => {
|
||||
const v = document.getElementById("verlauf");
|
||||
if (!v) return { da: false };
|
||||
const linie = v.querySelector(".chat-neu");
|
||||
const alle = [...v.querySelectorAll(".chat-nachricht")];
|
||||
const sicht = v.getBoundingClientRect();
|
||||
const ersteSichtbare = alle.find((z) => {
|
||||
const r = z.getBoundingClientRect();
|
||||
return r.bottom > sicht.top + 4;
|
||||
});
|
||||
return {
|
||||
da: true,
|
||||
hoehe: Math.round(v.clientHeight),
|
||||
gesamt: Math.round(v.scrollHeight),
|
||||
oben: Math.round(v.scrollTop),
|
||||
amEnde: v.scrollHeight - v.scrollTop - v.clientHeight < 40,
|
||||
linieDa: !!linie,
|
||||
linieOben: linie ? Math.round(linie.offsetTop) : null,
|
||||
/* Steht die Linie IM BILD? Das ist die eigentliche Frage. */
|
||||
linieImBild: linie
|
||||
? (linie.getBoundingClientRect().top >= sicht.top - 2
|
||||
&& linie.getBoundingClientRect().bottom <= sicht.bottom + 2)
|
||||
: false,
|
||||
linieAbstandVonOben: linie
|
||||
? Math.round(linie.getBoundingClientRect().top - sicht.top) : null,
|
||||
ersteSichtbar: ersteSichtbare
|
||||
? (ersteSichtbare.textContent || "").trim().slice(0, 34) : "-",
|
||||
nachrichten: alle.length,
|
||||
/* Wie weit muesste man hochscrollen, um die Linie zu sehen? */
|
||||
muessteHoch: linie
|
||||
? Math.max(0, Math.round(v.scrollTop - linie.offsetTop)) : null,
|
||||
};
|
||||
});
|
||||
|
||||
console.log(`\n=== ${wie} (${breite}x${hoehe}) ===`);
|
||||
if (!lage.da) { console.log(" KEIN VERLAUF"); }
|
||||
else {
|
||||
console.log(` Verlauf ${lage.hoehe} px hoch, Inhalt ${lage.gesamt} px, `
|
||||
+ `steht bei ${lage.oben}${lage.amEnde ? " (GANZ UNTEN)" : ""}`);
|
||||
console.log(` Linie „Ab hier neu": ${lage.linieDa ? "da" : "FEHLT"}`
|
||||
+ (lage.linieDa ? `, bei ${lage.linieOben} px` : ""));
|
||||
if (lage.linieDa) {
|
||||
console.log(` Im Bild: ${lage.linieImBild ? "JA" : "NEIN"}`
|
||||
+ `, ${lage.linieAbstandVonOben} px unter dem oberen Rand`
|
||||
+ (lage.muessteHoch ? ` -- man muesste ${lage.muessteHoch} px HOCHSCROLLEN` : ""));
|
||||
}
|
||||
console.log(` Oben im Bild steht: "${lage.ersteSichtbar}"`);
|
||||
console.log(` ${lage.nachrichten} Nachrichten im Verlauf`);
|
||||
}
|
||||
if (konsole.length) console.log(` KONSOLE: ${konsole.join(" | ")}`);
|
||||
await seite.screenshot({ path: `server/mess-neustelle-${wie}.png` }).catch(() => {});
|
||||
await kontext.close();
|
||||
}
|
||||
|
||||
await browser.close();
|
||||
vorbau.close();
|
||||
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ }
|
||||
process.exit(0);
|
||||
@@ -0,0 +1,379 @@
|
||||
/* =====================================================================
|
||||
DER CHAT OEFFNET DORT, WO DAS NEUE ANFAENGT (25.09.2026)
|
||||
=====================================================================
|
||||
|
||||
Filipe: „wenn ich in den chat rein gehe und es neue kommentare gibt,
|
||||
will ich dass mein chat sich da öffnet wo die neuen nachrichten
|
||||
anfangen die ich noch nicht gesehen hab bitte und nicht immer ganz
|
||||
unten. sonst muss man immer hoch scrollen um die neuen zu lesen und
|
||||
das ist scheisse. perfektionier das bei allen rollen."
|
||||
|
||||
---------------------------------------------------------------------
|
||||
WARUM ES DIESE PRUEFUNG GIBT, OBWOHL DIE FUNKTION SEIT DEM 09.09. DA IST
|
||||
|
||||
Sie war da und sass falsch. Der Sprung rechnete mit `offsetTop` --
|
||||
dem Abstand zum `offsetParent`, und das ist nur dann der Verlauf
|
||||
selbst, wenn dieser `position: relative` traegt. Tut er nicht.
|
||||
Gemessen auf 390 px landete die Linie „Ab hier neu" 23 px OBERHALB
|
||||
des sichtbaren Bereichs: Man musste genau das tun, was Filipe nicht
|
||||
mehr tun wollte. Am Rechner stimmte es zufaellig, weil dort weniger
|
||||
dazwischenliegt -- deshalb ist es nie aufgefallen.
|
||||
|
||||
EIN FEHLER, DEN NUR EINE MESSUNG IN PIXELN FINDET. „Die Linie ist
|
||||
da" war die ganze Zeit wahr. Gemessen wird hier deshalb, ob sie IM
|
||||
BILD steht und wie weit sie vom oberen Rand entfernt ist.
|
||||
|
||||
---------------------------------------------------------------------
|
||||
BEI ALLEN ROLLEN, UND ZWAR IN BEIDEN HAEUSERN
|
||||
|
||||
Die Mechanik ist dieselbe Datei fuer alle -- aber „dieselbe Datei"
|
||||
war schon oefter ein Trugschluss: Die Kopfleiste ist je nach Rolle
|
||||
verschieden hoch, der Treff hat eigene Regeln, und die Agentur laedt
|
||||
ihre eigene Wand. Ein Verlauf, der bei DogFather richtig sitzt und
|
||||
beim Modi 40 px daneben, ist fuer den Modi kaputt.
|
||||
|
||||
Aufrufen mit: node server/pruef-chat-neu-stelle.mjs
|
||||
===================================================================== */
|
||||
import { mkdtempSync, rmSync, readFileSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { execFileSync } from "node:child_process";
|
||||
import { request as httpAnfrage } from "node:http";
|
||||
import { createServer as httpsServer } from "node:https";
|
||||
|
||||
const ordner = mkdtempSync(join(tmpdir(), "ws-neustelle-p-"));
|
||||
process.env.WORKSPACE_DB = join(ordner, "workspace.db");
|
||||
|
||||
const { eigenerPort } = await import("./helfer-port.mjs");
|
||||
const PORT = await eigenerPort(import.meta, "die Pruefung der Oeffnungsstelle");
|
||||
const HP = PORT + 1;
|
||||
|
||||
process.env.PORT = `${PORT}`;
|
||||
process.env.SITE_ACCESS_SECRET = "lokaler-test";
|
||||
process.env.SITE_PUBLIC_LAUNCH_AT = "2020-01-01T00:00:00+01:00";
|
||||
|
||||
const express = (await import("express")).default;
|
||||
const ec = express.response.cookie;
|
||||
express.response.cookie = function (n, w, o) {
|
||||
return ec.call(this, n, w, { ...(o || {}), secure: false });
|
||||
};
|
||||
import { notbremse } from "./helfer-notbremse.mjs";
|
||||
await import("./index.js");
|
||||
notbremse(300_000, "pruef-chat-neu-stelle");
|
||||
await new Promise((r) => setTimeout(r, 1000));
|
||||
process.on("uncaughtException", (f) => { console.error("ABSTURZ:", f); process.exit(7); });
|
||||
process.on("unhandledRejection", (f) => { console.error("ABSTURZ (Versprechen):", f); process.exit(7); });
|
||||
|
||||
const CREW = "crew.dogfather-universe.com";
|
||||
const AGENTUR = "workspace.dogfather-universe.com";
|
||||
|
||||
let fehler = 0, geprueft = 0;
|
||||
const melde = (t) => console.log(t);
|
||||
const ok = (b, t) => { geprueft++; console.log((b ? " ok " : " FEHL ") + t); if (!b) fehler++; };
|
||||
|
||||
const { DatabaseSync } = await import("node:sqlite");
|
||||
const { scryptSync, randomBytes, createHmac } = await import("node:crypto");
|
||||
const d = new DatabaseSync(process.env.WORKSPACE_DB);
|
||||
const jetzt = new Date().toISOString();
|
||||
const sch = randomBytes(32).toString("hex");
|
||||
d.prepare("INSERT INTO einstellungen (schluessel, wert, geaendert, von)"
|
||||
+ " VALUES (?,?,?,NULL) ON CONFLICT(schluessel) DO NOTHING")
|
||||
.run("code_kennung_schluessel", sch, jetzt);
|
||||
const anlegen = (name, rolle, code) => {
|
||||
const s = randomBytes(16).toString("hex");
|
||||
const h = scryptSync(code, s, 64,
|
||||
{ N: 32768, r: 8, p: 1, maxmem: 96 * 1024 * 1024 }).toString("hex");
|
||||
return d.prepare("INSERT INTO personen"
|
||||
+ " (name, rolle, code_hash, code_salt, code_n, code_kennung, aktiv, erstellt)"
|
||||
+ " VALUES (?,?,?,?,?,?,1,?) RETURNING id")
|
||||
.get(name, rolle, h, s, 32768,
|
||||
createHmac("sha256", sch).update(code).digest("hex"), jetzt).id;
|
||||
};
|
||||
const idDogi = anlegen("Filipe", "admin", "CODE-DOGI-0001");
|
||||
const idHand = anlegen("Rieke", "hand", "CODE-HAND-0001");
|
||||
const idLinke = anlegen("Mara", "linke", "CODE-LINK-0001");
|
||||
const idModi = anlegen("Kessi", "modi", "CODE-MODI-0001");
|
||||
const idManager = anlegen("Cigdem", "manager", "CODE-MANA-0001");
|
||||
const idCreator = anlegen("Luna", "creator", "CODE-CREA-0001");
|
||||
/* DIE BETREUUNG GEHOERT DAZU. Im Agenturhaus darf ein Manager nur mit
|
||||
SEINEN Creators schreiben -- ohne diese Zeile antwortet die Route
|
||||
mit 403, und die Pruefung meldet einen Fehler, den es nicht gibt.
|
||||
Im ersten Anlauf genau so passiert: „Manager: ein Gespraech entsteht
|
||||
(403)". Der Server hatte recht; die Lage war unvollstaendig. */
|
||||
d.prepare("INSERT INTO betreuung (creator_id, betreuer_id, seit, gesetzt_von)"
|
||||
+ " VALUES (?,?,?,?) ON CONFLICT(creator_id) DO UPDATE SET betreuer_id = excluded.betreuer_id")
|
||||
.run(idCreator, idManager, jetzt, idDogi);
|
||||
d.close();
|
||||
|
||||
const roh = (host, keks, pfad, methode = "GET", koerper = null) =>
|
||||
new Promise((fertig, schief) => {
|
||||
const daten = koerper === null ? null : JSON.stringify(koerper);
|
||||
const a = httpAnfrage({
|
||||
host: "127.0.0.1", port: PORT, path: pfad, method: methode,
|
||||
headers: {
|
||||
Host: host, ...(keks ? { Cookie: keks } : {}),
|
||||
Origin: `https://${host}`, Referer: `https://${host}/workspace/chat.html`,
|
||||
...(daten ? { "Content-Type": "application/json",
|
||||
"Content-Length": Buffer.byteLength(daten) } : {}),
|
||||
},
|
||||
}, (r) => {
|
||||
let t = ""; r.on("data", (x) => { t += x; });
|
||||
r.on("end", () => fertig({ status: r.statusCode, kopf: r.headers,
|
||||
json: () => { try { return JSON.parse(t); } catch { return {}; } } }));
|
||||
});
|
||||
a.on("error", schief);
|
||||
if (daten) a.write(daten);
|
||||
a.end();
|
||||
});
|
||||
const anmelden = async (host, rolle, code) => {
|
||||
const a = await roh(host, null, "/workspace/api/anmelden", "POST", { rolle, code });
|
||||
if (a.status !== 200) { console.log(`ABBRUCH: ${rolle} ${a.status}`); process.exit(2); }
|
||||
return [].concat(a.kopf["set-cookie"] || []).map((z) => z.split(";")[0]).join("; ");
|
||||
};
|
||||
|
||||
/* =======================================================================
|
||||
DIE LAGE: je Rolle ein Gespraech mit 20 alten und 12 neuen Zeilen
|
||||
======================================================================= */
|
||||
const LEUTE = [
|
||||
{ wer: "DogFather", host: CREW, rolle: "admin", code: "CODE-DOGI-0001", id: idDogi,
|
||||
partner: idModi, partnerCode: "CODE-MODI-0001", partnerRolle: "modi", partnerHost: CREW },
|
||||
{ wer: "rechte Hand", host: CREW, rolle: "hand", code: "CODE-HAND-0001", id: idHand,
|
||||
partner: idModi, partnerCode: "CODE-MODI-0001", partnerRolle: "modi", partnerHost: CREW },
|
||||
{ wer: "linke Hand", host: CREW, rolle: "linke", code: "CODE-LINK-0001", id: idLinke,
|
||||
partner: idModi, partnerCode: "CODE-MODI-0001", partnerRolle: "modi", partnerHost: CREW },
|
||||
{ wer: "Modi", host: CREW, rolle: "modi", code: "CODE-MODI-0001", id: idModi,
|
||||
partner: idHand, partnerCode: "CODE-HAND-0001", partnerRolle: "hand", partnerHost: CREW },
|
||||
{ wer: "Manager", host: AGENTUR, rolle: "manager", code: "CODE-MANA-0001", id: idManager,
|
||||
partner: idCreator, partnerCode: "CODE-CREA-0001", partnerRolle: "creator",
|
||||
partnerHost: AGENTUR },
|
||||
{ wer: "Creator", host: AGENTUR, rolle: "creator", code: "CODE-CREA-0001", id: idCreator,
|
||||
partner: idManager, partnerCode: "CODE-MANA-0001", partnerRolle: "manager",
|
||||
partnerHost: AGENTUR },
|
||||
];
|
||||
|
||||
/* ---- Zertifikat und Vorbau (eine Adresse je Haus) ------------------- */
|
||||
const schl = join(ordner, "b.key"), zert = join(ordner, "b.crt");
|
||||
execFileSync("openssl", ["req", "-x509", "-newkey", "rsa:2048", "-nodes", "-keyout", schl,
|
||||
"-out", zert, "-days", "2", "-subj", `/CN=${CREW}`,
|
||||
"-addext", `subjectAltName=DNS:${CREW},DNS:${AGENTUR}`], { stdio: "ignore" });
|
||||
const vorbau = httpsServer({ key: readFileSync(schl), cert: readFileSync(zert) },
|
||||
(von, nach) => {
|
||||
const w = httpAnfrage({
|
||||
host: "127.0.0.1", port: PORT, path: von.url, method: von.method,
|
||||
headers: { ...von.headers },
|
||||
}, (a) => { nach.writeHead(a.statusCode || 502, a.headers); a.pipe(nach); });
|
||||
von.pipe(w);
|
||||
});
|
||||
await new Promise((r) => vorbau.listen(HP, "127.0.0.1", r));
|
||||
|
||||
const pw = await import(
|
||||
"file:///C:/Users/qciga/Documents/Obelix/Analyse/node_modules/playwright/index.mjs");
|
||||
const browser = await pw.chromium.launch({
|
||||
args: [`--host-resolver-rules=MAP ${CREW} 127.0.0.1,MAP ${AGENTUR} 127.0.0.1`,
|
||||
"--ignore-certificate-errors"],
|
||||
});
|
||||
|
||||
/** Wo steht der Verlauf, nachdem die Seite geoeffnet wurde? */
|
||||
async function blick(person, breite, hoehe, keks, raumId) {
|
||||
const kontext = await browser.newContext({
|
||||
viewport: { width: breite, height: hoehe },
|
||||
deviceScaleFactor: breite < 700 ? 2 : 1,
|
||||
isMobile: breite < 700, hasTouch: breite < 700,
|
||||
});
|
||||
await kontext.addCookies(keks.split("; ").map((k) => {
|
||||
const [x, ...r] = k.split("=");
|
||||
return { name: x, value: r.join("="), domain: person.host, path: "/" };
|
||||
}));
|
||||
const seite = await kontext.newPage();
|
||||
const konsole = [];
|
||||
seite.on("pageerror", (e) => konsole.push("Absturz: " + e.message.slice(0, 120)));
|
||||
await seite.goto(`https://${person.host}:${HP}/workspace/chat.html?raum=${raumId}`,
|
||||
{ waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(2200);
|
||||
|
||||
const lage = await seite.evaluate(() => {
|
||||
const v = document.getElementById("verlauf");
|
||||
if (!v) return { da: false };
|
||||
const linie = v.querySelector(".chat-neu");
|
||||
const sicht = v.getBoundingClientRect();
|
||||
return {
|
||||
da: true,
|
||||
hoehe: Math.round(v.clientHeight),
|
||||
amEnde: v.scrollHeight - v.scrollTop - v.clientHeight < 40,
|
||||
linieDa: !!linie,
|
||||
/* DIE EIGENTLICHE FRAGE: Steht sie im Bild, und wie weit unter
|
||||
dem oberen Rand? Ein negativer Wert heisst: darueber, also
|
||||
unsichtbar -- genau der Fehler, um den es hier geht. */
|
||||
abstand: linie
|
||||
? Math.round(linie.getBoundingClientRect().top - sicht.top) : null,
|
||||
sichtbar: linie
|
||||
? (linie.getBoundingClientRect().top >= sicht.top - 2
|
||||
&& linie.getBoundingClientRect().bottom <= sicht.bottom + 2)
|
||||
: false,
|
||||
/* Was steht ganz oben im Bild? Ueber der Linie soll Zusammenhang
|
||||
stehen, nicht schon das Neue. */
|
||||
obenImBild: (() => {
|
||||
const z = [...v.querySelectorAll(".chat-nachricht")]
|
||||
.find((x) => x.getBoundingClientRect().bottom > sicht.top + 4);
|
||||
return z ? (z.textContent || "").trim().slice(0, 24) : "-";
|
||||
})(),
|
||||
};
|
||||
});
|
||||
await kontext.close();
|
||||
return { ...lage, konsole };
|
||||
}
|
||||
|
||||
melde("");
|
||||
melde("=== 1. Bei jeder Rolle oeffnet der Chat an der neuen Stelle ===");
|
||||
|
||||
/* ==== JEDER BLICK BEKOMMT SEINEN EIGENEN RAUM ======================
|
||||
|
||||
Der erste Anlauf benutzte einen Raum je Rolle und setzte den
|
||||
Lesestand zwischen Handy und Rechner zurueck. Das Ergebnis
|
||||
FLATTERTE: Mal war DogFather rot, mal die rechte Hand, mal der Modi
|
||||
-- bei unveraendertem Code.
|
||||
|
||||
Der Grund ist ein Wettlauf: Die Seite meldet „gelesen bis hier" beim
|
||||
Oeffnen, und zwar nicht sofort. Wird der Stand danach
|
||||
zurueckgesetzt, gewinnt mal das eine, mal das andere. Eine Pause
|
||||
davor macht es wahrscheinlicher und nicht sicher -- und eine
|
||||
Pruefung, die von Wahrscheinlichkeit lebt, ist keine.
|
||||
|
||||
MIT EINEM EIGENEN RAUM JE BLICK gibt es nichts zurueckzusetzen. Das
|
||||
ist mehr Aufbau und dafuer eine Messung, die immer dasselbe sagt. */
|
||||
for (const person of LEUTE) {
|
||||
const keks = await anmelden(person.host, person.rolle, person.code);
|
||||
const kPartner = await anmelden(person.partnerHost, person.partnerRolle, person.partnerCode);
|
||||
|
||||
for (const [wie, breite, hoehe] of [["Handy", 390, 844], ["Rechner", 1280, 900]]) {
|
||||
const gr = await roh(person.host, keks, "/workspace/api/chat/gruppe", "POST",
|
||||
{ name: `${person.wer} ${wie}`, mit: [person.partner] });
|
||||
const raumId = gr.json().raum_id;
|
||||
if (!raumId) {
|
||||
ok(false, `${person.wer} / ${wie}: ein Raum entsteht (${gr.status})`);
|
||||
continue;
|
||||
}
|
||||
|
||||
let letzteAlte = 0;
|
||||
for (let i = 1; i <= 20; i++) {
|
||||
const a = await roh(person.partnerHost, kPartner,
|
||||
`/workspace/api/chat/raeume/${raumId}/nachrichten`, "POST",
|
||||
{ text: `Alte Nachricht ${i} -- lange genug, damit sie auf einem Handy umbricht.` });
|
||||
letzteAlte = a.json().nachricht?.id || a.json().id || letzteAlte;
|
||||
}
|
||||
await roh(person.host, keks, `/workspace/api/chat/raeume/${raumId}/gelesen`,
|
||||
"PUT", { bis: letzteAlte });
|
||||
for (let i = 1; i <= 12; i++) {
|
||||
await roh(person.partnerHost, kPartner,
|
||||
`/workspace/api/chat/raeume/${raumId}/nachrichten`, "POST",
|
||||
{ text: `NEUE Nachricht ${i} -- auch diese ist lang genug zum Umbrechen.` });
|
||||
}
|
||||
|
||||
/* Was sagt der Server unmittelbar vor dem Blick? Ohne diese Zeile
|
||||
steht bei einem Fehlschlag nur „die Linie fehlt" da -- und man
|
||||
weiss nicht, ob die Oberflaeche sie nicht zeichnet oder der
|
||||
Server schon alles als gelesen fuehrt. */
|
||||
const vorher = await roh(person.host, keks,
|
||||
`/workspace/api/chat/raeume/${raumId}/nachrichten`);
|
||||
const standVor = vorher.json().gelesen_bis;
|
||||
|
||||
const l = await blick(person, breite, hoehe, keks, raumId);
|
||||
const wo = `${person.wer} / ${wie}`;
|
||||
ok(l.da && l.linieDa, `${wo}: die Linie „Ab hier neu" steht im Verlauf `
|
||||
+ `(gelesen_bis ${standVor}, letzte alte #${letzteAlte})`);
|
||||
ok(l.sichtbar === true,
|
||||
`${wo}: und sie ist zu SEHEN (${l.abstand} px unter dem oberen Rand)`);
|
||||
/* Nicht am Rand kleben: Ueber der Linie soll Zusammenhang stehen.
|
||||
Ein Viertel der Hoehe ist die Vorgabe; gemessen wird grosszuegig
|
||||
(mindestens 24 px), damit eine andere Kopfhoehe nicht sofort rot
|
||||
wird -- die Aussage ist „es steht etwas darueber", nicht „genau
|
||||
ein Viertel". */
|
||||
ok((l.abstand || 0) >= 24,
|
||||
`${wo}: mit Zusammenhang darueber ("${l.obenImBild}")`);
|
||||
ok(l.amEnde === false, `${wo}: und NICHT ganz unten`);
|
||||
ok(l.konsole.length === 0, `${wo}: keine Abstuerze (${l.konsole.join(" | ") || "keine"})`);
|
||||
}
|
||||
}
|
||||
|
||||
/* =======================================================================
|
||||
2. GEGENPROBEN
|
||||
======================================================================= */
|
||||
melde("");
|
||||
melde("=== 2. Gegenproben (jede MUSS anschlagen) ===");
|
||||
{
|
||||
const person = LEUTE[0];
|
||||
const keks = await anmelden(person.host, person.rolle, person.code);
|
||||
const kPartner = await anmelden(CREW, "modi", "CODE-MODI-0001");
|
||||
|
||||
const gr = await roh(person.host, keks, "/workspace/api/chat/direkt", "POST",
|
||||
{ mit: idModi });
|
||||
const raumId = gr.json().raum_id;
|
||||
|
||||
/* (a) NICHTS NEUES -> ans Ende. Ohne diese Zeile koennte der Sprung
|
||||
immer stattfinden, und wer nichts verpasst hat, laendete
|
||||
grundlos mitten im Verlauf. */
|
||||
let letzte = 0;
|
||||
for (let i = 1; i <= 8; i++) {
|
||||
const a = await roh(CREW, kPartner, `/workspace/api/chat/raeume/${raumId}/nachrichten`,
|
||||
"POST", { text: `Alles gelesen ${i}.` });
|
||||
letzte = a.json().nachricht?.id || a.json().id || letzte;
|
||||
}
|
||||
await roh(person.host, keks, `/workspace/api/chat/raeume/${raumId}/gelesen`,
|
||||
"PUT", { bis: letzte });
|
||||
await new Promise((r) => setTimeout(r, 400));
|
||||
|
||||
const ohneNeues = await blick(person, 390, 844, keks, raumId);
|
||||
ok(ohneNeues.linieDa === false,
|
||||
`ohne Ungelesenes gibt es keine Linie (${ohneNeues.linieDa})`);
|
||||
ok(ohneNeues.amEnde === true,
|
||||
"und der Verlauf steht am Ende -- da, wo man weiterschreibt");
|
||||
|
||||
/* (b) Kann die Messung „nicht sichtbar" ueberhaupt erkennen? Sonst
|
||||
waere jede gruene Zeile oben wertlos. Gemessen wird an einem
|
||||
Verlauf, der absichtlich nach unten gescrollt wird. */
|
||||
for (let i = 1; i <= 12; i++) {
|
||||
await roh(CREW, kPartner, `/workspace/api/chat/raeume/${raumId}/nachrichten`,
|
||||
"POST", { text: `Danach noch etwas ${i}.` });
|
||||
}
|
||||
{
|
||||
const dd = new DatabaseSync(process.env.WORKSPACE_DB);
|
||||
dd.prepare("UPDATE chat_teilnehmer SET gelesen_bis = ? WHERE raum_id = ? AND person_id = ?")
|
||||
.run(letzte, raumId, person.id);
|
||||
dd.close();
|
||||
}
|
||||
const kontext = await browser.newContext({ viewport: { width: 390, height: 844 },
|
||||
deviceScaleFactor: 2, isMobile: true, hasTouch: true });
|
||||
await kontext.addCookies(keks.split("; ").map((k) => {
|
||||
const [x, ...r] = k.split("=");
|
||||
return { name: x, value: r.join("="), domain: person.host, path: "/" };
|
||||
}));
|
||||
const seite = await kontext.newPage();
|
||||
await seite.goto(`https://${person.host}:${HP}/workspace/chat.html?raum=${raumId}`,
|
||||
{ waitUntil: "networkidle" });
|
||||
await seite.waitForTimeout(2000);
|
||||
const kuenstlich = await seite.evaluate(() => {
|
||||
const v = document.getElementById("verlauf");
|
||||
v.scrollTop = v.scrollHeight; /* mit Absicht ans Ende */
|
||||
const linie = v.querySelector(".chat-neu");
|
||||
const sicht = v.getBoundingClientRect();
|
||||
if (!linie) return null;
|
||||
return {
|
||||
abstand: Math.round(linie.getBoundingClientRect().top - sicht.top),
|
||||
sichtbar: linie.getBoundingClientRect().top >= sicht.top - 2
|
||||
&& linie.getBoundingClientRect().bottom <= sicht.bottom + 2,
|
||||
};
|
||||
});
|
||||
await kontext.close();
|
||||
ok(kuenstlich && kuenstlich.sichtbar === false && kuenstlich.abstand < 0,
|
||||
`am Ende ist die Linie NICHT sichtbar (${kuenstlich?.abstand} px) `
|
||||
+ "-- die Messung kann also auch nein sagen");
|
||||
}
|
||||
|
||||
await browser.close();
|
||||
vorbau.close();
|
||||
|
||||
melde("");
|
||||
melde(`${geprueft} Pruefungen, ${fehler} Fehler`);
|
||||
melde(fehler === 0 ? "ALLES IN ORDNUNG" : "NICHT IN ORDNUNG");
|
||||
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ }
|
||||
process.exit(fehler === 0 ? 0 : 1);
|
||||
@@ -16,8 +16,8 @@
|
||||
verdeckt. Gefunden hat es pruef-struktur.
|
||||
|
||||
Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. -->
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
<!-- Ohne diese drei nimmt ein iPhone einen Bildschirmausschnitt als
|
||||
Symbol, Android zeichnet die Leiste weiss, und die Seite oeffnet
|
||||
ausserhalb der App -- auf einer Seite, die genau erklaeren soll,
|
||||
@@ -33,7 +33,7 @@
|
||||
schreibt jede Seite app.webmanifest -- auch die hier. -->
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<style>
|
||||
/* Bewusst in der Seite und nicht in einer eigenen Datei: Diese Seite
|
||||
soll auch dann noch etwas anzeigen, wenn genau das schiefgeht,
|
||||
@@ -135,7 +135,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="assets/js/anruf-probe.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/anruf-probe.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -23,25 +23,25 @@
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609251412",
|
||||
"src": "/assets/img/app-symbole/workspace-192.png?v=202609251440",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609251412",
|
||||
"src": "/assets/img/app-symbole/workspace-512.png?v=202609251440",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609251412",
|
||||
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609251440",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609251412",
|
||||
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609251440",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
|
||||
+148
-7
@@ -1473,6 +1473,17 @@
|
||||
weiter unten schon einmal behoben wurde ("Wer liest, bleibt
|
||||
stehen"). */
|
||||
let zurNeuLinie = false;
|
||||
/* ==== WIRD NOCH NACHGEZOGEN? (25.09.2026) ======================
|
||||
|
||||
Steht hier oben und nicht im Block darunter, obwohl es nur dort
|
||||
benutzt wird -- und zwar mit Grund: Der Zuhoerer, der das
|
||||
Nachziehen beendet, wird EINMAL an den Verlauf gebunden und
|
||||
ueberlebt jeden Raumwechsel. Haelt er eine lokale Variable fest,
|
||||
stoppt er beim zweiten Gespraech die falsche (die vom ersten),
|
||||
und im neuen wird noch zwei Sekunden lang weitergezogen, waehrend
|
||||
der Mensch schon scrollt. Eine Variable an dieser Stelle kann das
|
||||
nicht passieren. */
|
||||
let nochNachziehen = false;
|
||||
let antwortAuf = null;
|
||||
|
||||
/* ---------- In Nachrichten suchen (09.09.2026, Punkt 15) ----------------- */
|
||||
@@ -1567,9 +1578,37 @@
|
||||
weiter unten setzt ihn gleich auf die letzte Nachricht -- die
|
||||
Linie muss also aus dem Wert gezogen werden, der beim OEFFNEN
|
||||
galt. Danach wuerde sie nie irgendwo stehen. */
|
||||
gelesenBeimOeffnen = daten.gelesen_bis ?? 0;
|
||||
/* Ab hier darf EINMAL gesprungen werden -- siehe oben. */
|
||||
zurNeuLinie = true;
|
||||
/* ==== NUR BEIM ECHTEN OEFFNEN, NICHT BEI JEDEM NACHLADEN ====
|
||||
|
||||
Filipe: „wenn ich in den chat rein gehe und es neue kommentare
|
||||
gibt, will ich dass mein chat sich da öffnet wo die neuen
|
||||
nachrichten anfangen ... und nicht immer ganz unten."
|
||||
|
||||
HIER STAND DIE ZUWEISUNG OHNE BEDINGUNG -- und damit lief sie
|
||||
auch bei jedem SANFTEN Nachladen. Sanft laedt der Verlauf
|
||||
staendig nach: wenn der Ereignisstrom sich verbindet
|
||||
(`strom.addEventListener('open', ...)`), wenn jemand etwas
|
||||
anheftet, nach einer eigenen Nachricht.
|
||||
|
||||
DAS ERSTE DAVON IST DER FEHLER, DEN FILIPE GESEHEN HAT. Die
|
||||
Seite laedt, zeichnet, meldet „gelesen bis hier" -- und dann
|
||||
verbindet sich der Strom und laedt sanft nach. Jetzt steht in
|
||||
`gelesen_bis` schon die LETZTE Nachricht, die Linie entsteht
|
||||
nicht mehr, und der Verlauf springt ans Ende.
|
||||
|
||||
WARUM ES FLATTERTE: Kommt die Strom-Verbindung vor dem ersten
|
||||
Zeichnen, passiert nichts; kommt sie danach, ist die Linie
|
||||
weg. Gemessen ueber sechs Rollen waren mal drei rot, mal
|
||||
zwei, mal andere -- bei unveraendertem Code. Ein Fehler, der
|
||||
wuerfelt, sieht wie „geht manchmal" aus und wird nie gemeldet.
|
||||
|
||||
`sanft` HEISST: dasselbe Gespraech, nur frisch geholt. Dann
|
||||
gehoert die Linie genau dorthin, wo sie schon stand. */
|
||||
if (!sanft) {
|
||||
gelesenBeimOeffnen = daten.gelesen_bis ?? 0;
|
||||
/* Ab hier darf EINMAL gesprungen werden -- siehe oben. */
|
||||
zurNeuLinie = true;
|
||||
}
|
||||
antwortAuf = null;
|
||||
} catch { return; }
|
||||
|
||||
@@ -2442,13 +2481,115 @@
|
||||
auch, wie viel unten wartet) und damit eine eintreffende
|
||||
Nachricht einen nicht nach unten reisst. */
|
||||
if (zurNeuLinie) {
|
||||
zurNeuLinie = false;
|
||||
const linie = ziel.querySelector('.chat-neu');
|
||||
if (linie) {
|
||||
ziel.scrollTop = Math.max(0, linie.offsetTop - ziel.clientHeight * 0.25);
|
||||
unten = amEnde(ziel);
|
||||
/* ==== EINMAL SPRINGEN REICHT NICHT (25.09.2026) ============
|
||||
|
||||
Filipe: „wenn ich in den chat rein gehe und es neue
|
||||
kommentare gibt, will ich dass mein chat sich da öffnet wo
|
||||
die neuen nachrichten anfangen ... sonst muss man immer
|
||||
hoch scrollen um die neuen zu lesen und das ist scheisse."
|
||||
|
||||
DER SPRUNG STAND SEIT DEM 09.09. HIER -- und er sass
|
||||
trotzdem falsch. Gemessen auf 390 px: Die Linie landete
|
||||
23 px OBERHALB des sichtbaren Bereichs, man musste also
|
||||
genau das tun, was Filipe nicht mehr tun wollte. Am Rechner
|
||||
stimmte es (74 px unter dem Rand); deshalb ist es nie
|
||||
aufgefallen.
|
||||
|
||||
DER GRUND IST DAS NACHWACHSEN. Zwischen dem Sprung und dem
|
||||
fertigen Bild aendert sich die Hoehe noch: Schriften kommen
|
||||
an und setzen den Text neu um, Bilder melden ihre Groesse,
|
||||
Sprachnachrichten bekommen ihre Leiste. Gemessen sind das
|
||||
auf dem Handy 45 px in einem Verlauf von 5000 -- und das
|
||||
reicht, weil dort jede Zeile dreimal umbricht. Am Rechner
|
||||
faellt derselbe Zuwachs nicht auf.
|
||||
|
||||
ALSO WIRD NACHGEZOGEN, statt die Hoehe zu raten: nach dem
|
||||
naechsten Bild, nach den Schriften, nach zwei
|
||||
Bildwiederholungen. Jedes Mal an dieselbe Stelle -- die
|
||||
Rechnung ist billig, und sie ist nach jedem Zuwachs wieder
|
||||
richtig.
|
||||
|
||||
UND NUR, SOLANGE NIEMAND SELBST SCROLLT. Wer nach dem
|
||||
Oeffnen sofort weiterliest, darf nicht zurueckgerissen
|
||||
werden; das waere derselbe Fehler wie der, den die Regel
|
||||
„nur nach unten springen, wenn man unten war" verhindert. */
|
||||
/* ==== DIE STELLE HAELT, BIS DER MENSCH ETWAS TUT ===========
|
||||
|
||||
Zuerst wurde `zurNeuLinie` beim ersten Zeichnen auf false
|
||||
gesetzt -- einmal springen, fertig. Das reicht nicht: Der
|
||||
Verlauf wird staendig SANFT nachgeladen (der Ereignisstrom
|
||||
verbindet sich, jemand heftet etwas an, eine Nachricht
|
||||
kommt). Jedes Nachladen baut die Zeilen neu auf, und die
|
||||
Bildlaufposition ist danach nicht mehr die von vorhin.
|
||||
Gemessen landete der Verlauf dann doch am Ende -- 2016 px
|
||||
unter der Linie.
|
||||
|
||||
JETZT BLEIBT DER MERKER STEHEN, bis einer von zwei Dingen
|
||||
passiert: Der Mensch scrollt selbst (dann hat er die Stelle
|
||||
gesehen und will woanders hin), oder der Raum wechselt.
|
||||
Bis dahin findet jedes Neuzeichnen dieselbe Stelle wieder.
|
||||
|
||||
DAS IST AUCH INHALTLICH RICHTIG. „Ich habe dich an die neue
|
||||
Stelle gesetzt" ist eine Zusage; sie beim naechsten
|
||||
Nachladen zu brechen, waere schlimmer, als sie nie gegeben
|
||||
zu haben. */
|
||||
nochNachziehen = true;
|
||||
const ansZiel = () => {
|
||||
if (!nochNachziehen) return;
|
||||
const l = ziel.querySelector('.chat-neu');
|
||||
if (!l) return;
|
||||
/* ==== `offsetTop` MISST GEGEN DEN FALSCHEN PUNKT ==========
|
||||
|
||||
Hier stand `l.offsetTop`. Das ist der Abstand zum
|
||||
`offsetParent` -- und der ist nur dann der Verlauf selbst,
|
||||
wenn dieser `position: relative` traegt. Tut er nicht;
|
||||
gemessen landete die Linie damit 23 px OBERHALB des
|
||||
sichtbaren Bereichs, also genau dort, wo man sie nicht
|
||||
sieht. Die Rechnung war um 140 px daneben, und am Rechner
|
||||
fiel das nicht auf, weil dort weniger dazwischenliegt.
|
||||
|
||||
DER ABSTAND ZWEIER KAESTEN IST IMMER RICHTIG: die Oberkante
|
||||
der Linie minus die Oberkante des Verlaufs, plus dessen
|
||||
aktuelle Bildlaufposition. Das gilt unabhaengig davon, wer
|
||||
gerade wessen `offsetParent` ist -- und es ist dieselbe
|
||||
Rechnung, mit der die Messung den Fehler gefunden hat. */
|
||||
const bezug = ziel.getBoundingClientRect().top;
|
||||
const wo = l.getBoundingClientRect().top - bezug + ziel.scrollTop;
|
||||
ziel.scrollTop = Math.max(0, wo - ziel.clientHeight * 0.25);
|
||||
unten = amEnde(ziel);
|
||||
springKnopfZeigen();
|
||||
};
|
||||
/* WER SELBST SCROLLT, HAT ENTSCHIEDEN. Ab da wird nicht
|
||||
mehr nachgezogen und auch beim naechsten Nachladen nicht
|
||||
mehr gesprungen -- sonst risse es einen aus dem Text, den
|
||||
man gerade liest. Die Zuhoerer haengen am Verlauf und
|
||||
werden nur einmal gesetzt (`einmalGebunden`), sonst kaemen
|
||||
bei jedem Neuzeichnen neue dazu. */
|
||||
const schluss = () => { nochNachziehen = false; zurNeuLinie = false; };
|
||||
if (!ziel.dataset.neuWache) {
|
||||
ziel.dataset.neuWache = 'ja';
|
||||
for (const art of ['wheel', 'touchstart', 'keydown', 'pointerdown']) {
|
||||
ziel.addEventListener(art, schluss, { passive: true });
|
||||
}
|
||||
}
|
||||
/* Nach spaetestens zwei Sekunden wird nicht mehr NACHGEZOGEN
|
||||
-- der Merker bleibt aber stehen. Nachziehen faengt das
|
||||
Nachwachsen von Schriften und Bildern ab; das ist nach zwei
|
||||
Sekunden vorbei. Ein Zuhoerer, der fuer immer zieht, holte
|
||||
den Verlauf beim naechsten Bild in zehn Minuten wieder an
|
||||
eine Stelle, die niemand mehr sucht. */
|
||||
setTimeout(() => { nochNachziehen = false; }, 2000);
|
||||
|
||||
ansZiel();
|
||||
requestAnimationFrame(() => requestAnimationFrame(ansZiel));
|
||||
document.fonts?.ready?.then(ansZiel).catch(() => {});
|
||||
for (const bild of ziel.querySelectorAll('img')) {
|
||||
if (!bild.complete) bild.addEventListener('load', ansZiel, { once: true });
|
||||
}
|
||||
|
||||
neuUnten = 0;
|
||||
springKnopfZeigen();
|
||||
return;
|
||||
}
|
||||
/* Keine Linie heisst: nichts Neues seit dem letzten Mal. Dann
|
||||
|
||||
+19
-19
@@ -12,19 +12,19 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -391,22 +391,22 @@
|
||||
<!-- TEXTFORM ZUERST (21.09.2026): Die Seite fragt beim Zeichnen nach
|
||||
`window.Textform`. Kaeme sie spaeter, waere der erste Eintrag ohne
|
||||
Gestaltung. Kein `defer`, damit sie wirklich vorher dasteht. -->
|
||||
<script src="assets/js/textform.js?v=202609251412"></script>
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/textform.js?v=202609251440"></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/zuteilung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/zuteilung.js?v=202609251440" defer></script>
|
||||
<!-- Der Vorlagenkatalog stand bis zum 23.09.2026 mitten in
|
||||
aufgaben.js. Er bedient jetzt zwei Seiten und hat deshalb eine
|
||||
eigene Datei; hier zeigt er den Creator-Katalog.
|
||||
Vor aufgaben.js, weil die Seite ihn beim Start einrichtet. -->
|
||||
<script src="assets/js/vorlagenbrett.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/aufgaben.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/vorlagenbrett.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/aufgaben.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/automation.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -168,15 +168,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/automation.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/automation.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -7,14 +7,14 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -197,16 +197,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/befinden.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/befinden.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+22
-22
@@ -12,24 +12,24 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609251440" />
|
||||
<!-- Wegen des Blocks „Willst du dazugehoeren?" auf dem Brett
|
||||
„Mitmachen". Eine eigene Kopie der Regel hier waere die zweite
|
||||
Stelle, an der dieselbe Sache anders aussieht. -->
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -304,19 +304,19 @@
|
||||
<!-- TEXTFORM ZUERST (21.09.2026): Die Seite fragt beim Zeichnen nach
|
||||
`window.Textform`. Kaeme sie spaeter, waere der erste Eintrag ohne
|
||||
Gestaltung. Kein `defer`, damit sie wirklich vorher dasteht. -->
|
||||
<script src="assets/js/textform.js?v=202609251412"></script>
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/textform.js?v=202609251440"></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/ampel.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/schulung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereich.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/ampel.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/schulung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereich.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+19
-19
@@ -7,17 +7,17 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -108,15 +108,15 @@
|
||||
</main>
|
||||
|
||||
<!-- Der Fuß gehört zu jeder Seite - siehe pruef-css-klassen. -->
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bewerben.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bewerben.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -7,16 +7,16 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -80,16 +80,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bewerbungen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bewerbungen.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/calls.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -89,15 +89,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/ki.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/calls.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/calls.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+20
-20
@@ -12,26 +12,26 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<!-- 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=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/chat.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -739,24 +739,24 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/bereiche.js?v=202609251412"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440"></script>
|
||||
<!-- TEXTFORM VOR ALLEM ANDEREN (21.09.2026): chat.js und bereich.js
|
||||
fragen beim Zeichnen nach `window.Textform`. Kaeme sie spaeter,
|
||||
waere die erste gezeichnete Nachricht ohne Gestaltung -- und das
|
||||
faellt nur dem auf, der genau hinsieht. KEIN `defer`, damit sie
|
||||
wirklich vor den anderen dasteht. -->
|
||||
<script src="assets/js/textform.js?v=202609251412"></script>
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412"></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412"></script>
|
||||
<script src="assets/js/textform.js?v=202609251440"></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440"></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440"></script>
|
||||
<!-- ANRUF VOR CHAT (18.09.2026): anruf.js stellt `window.anrufStarten`
|
||||
bereit, und chat.js baut die Knoepfe nur, wenn es das gibt.
|
||||
Andersherum waere die Reihenfolge eine stille Abhaengigkeit --
|
||||
die Knoepfe fehlten, und niemand wuesste warum. -->
|
||||
<script src="assets/js/anruf.js?v=202609251412"></script>
|
||||
<script src="assets/js/anruf.js?v=202609251440"></script>
|
||||
<!-- DIE BILDSCHAU (25.09.2026). Eigene Datei, weil sie nichts vom
|
||||
Chat weiss: Sie bekommt einen Weg und einen Namen und zeigt ein
|
||||
Bild. Jede andere Seite mit Fotos kann sie ebenso benutzen, ohne
|
||||
@@ -767,8 +767,8 @@
|
||||
sie beim ersten Foto noch nicht da -- und der erste Klick ginge
|
||||
wie frueher in den Tab. Ein Fehler, der nur beim ERSTEN Mal
|
||||
auftritt, ist der, den man nie nachstellen kann. -->
|
||||
<script src="assets/js/bildschau.js?v=202609251412"></script>
|
||||
<script src="assets/js/chat.js?v=202609251412"></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bildschau.js?v=202609251440"></script>
|
||||
<script src="assets/js/chat.js?v=202609251440"></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/content.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/content.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -179,15 +179,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/content.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/checkliste.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/content.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -36,15 +36,15 @@
|
||||
<link rel="preload" as="image" href="assets/img/buehne/crew-gate-hoch-580.webp"
|
||||
type="image/webp" media="(max-width: 899px)" />
|
||||
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<!-- Diese Wand steht NUR auf der Adresse von Team Dogi (ueberall sonst
|
||||
404, siehe crewWeiche). Sie darf das Haus deshalb direkt nennen
|
||||
statt ueber den Platzhalter haus.css zu gehen -- und sie MUSS es:
|
||||
Eine Zugangswand, die sich erst nach dem Umbiegen faerbt, waere
|
||||
die eine Seite, auf der man das Umfaerben sieht. -->
|
||||
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="gate gate--crew">
|
||||
@@ -459,7 +459,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="assets/js/gate.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/gate.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -23,25 +23,25 @@
|
||||
},
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609251412",
|
||||
"src": "/assets/img/app-symbole/crew-192.png?v=202609251440",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609251412",
|
||||
"src": "/assets/img/app-symbole/crew-512.png?v=202609251440",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609251412",
|
||||
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609251440",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609251412",
|
||||
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609251440",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
|
||||
+17
-17
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/dateien.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -108,15 +108,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/dateien.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/dateien.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -7,14 +7,14 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -297,20 +297,20 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251440" defer></script>
|
||||
<!-- VOR entwicklung.js: Die Seite richtet den Katalog beim Start ein,
|
||||
also muss es ihn zu dem Zeitpunkt geben. Mit "defer" laufen beide
|
||||
in Dokumentreihenfolge. -->
|
||||
<script src="assets/js/vorlagenbrett.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/entwicklung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/vorlagenbrett.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/entwicklung.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-15
@@ -7,13 +7,13 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -146,14 +146,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/hilfe.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/hilfe.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -30,9 +30,9 @@
|
||||
<link rel="preload" as="image" href="assets/img/buehne/gate-hoch-580.webp"
|
||||
type="image/webp" media="(max-width: 899px)" />
|
||||
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="gate">
|
||||
@@ -427,7 +427,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="assets/js/gate.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/gate.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/kalender.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -383,15 +383,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kalender.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kalender-abo.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kalender.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kalender-abo.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/leistung.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -444,13 +444,13 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412"></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412"></script>
|
||||
<script src="assets/js/wahl.js?v=202609251412"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412"></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412"></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412"></script>
|
||||
<script src="assets/js/leistung.js?v=202609251412"></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440"></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440"></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440"></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440"></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440"></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440"></script>
|
||||
<script src="assets/js/leistung.js?v=202609251440"></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -12,13 +12,13 @@
|
||||
vergessen wird. -->
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/material.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/material.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
<body class="start" data-ton="42" data-buehne="studio">
|
||||
|
||||
@@ -138,14 +138,14 @@
|
||||
<p class="m-laedt" id="laedt">Einen Moment …</p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/material.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/material.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/personen.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -453,14 +453,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/personen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/personen.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -214,16 +214,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/profil.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/profil.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -7,14 +7,14 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -134,14 +134,14 @@
|
||||
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
||||
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
||||
die seit dem 07.09. jede Seite danach absucht. -->
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/rechte.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/rechte.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/report.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/report.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -106,17 +106,17 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/ki.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/report.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/report.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/scouting.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -173,14 +173,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/scouting.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/scouting.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -12,21 +12,21 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<!-- 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=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/heim.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -700,16 +700,16 @@
|
||||
</p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/live.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/start.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/live.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/start.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -85,16 +85,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/ki.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/startcheck.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/ki.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/startcheck.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/profil.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -150,16 +150,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/steckbrief.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+14
-14
@@ -7,13 +7,13 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/support.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/support.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -128,16 +128,16 @@
|
||||
(reading 'LEITUNG')" ab -- gemessen am 24.09.2026, als diese
|
||||
Zeile beim Anlegen der Seite fehlte. Die Kopfleiste kam
|
||||
trotzdem, deshalb sah man es nur in der Browserkonsole. -->
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<!-- wahl.js gehoert zu kopf.js: Der Sicht-Umschalter in der
|
||||
Kopfleiste baut daraus seine Liste. pruef-css-klassen setzt das
|
||||
seit dem 07.09.2026 durch -- damals fehlte es auf chat.html und
|
||||
uebersicht.html, und heute hier. -->
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/support.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/support.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+18
-18
@@ -7,18 +7,18 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609251440" />
|
||||
<!-- Wegen des Kastens „Anfragen“ ueber der Liste. Eine eigene Kopie
|
||||
der Regel hier waere die zweite Stelle, an der dieselbe Sache
|
||||
anders aussieht. -->
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -111,15 +111,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/talente.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/talente.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -7,20 +7,20 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -110,15 +110,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/team.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/team.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -7,20 +7,20 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/team.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<!-- `data-buehne` steht hier fest und nicht im Skript: Die Kachel zu
|
||||
@@ -84,15 +84,15 @@
|
||||
Kaputt ist dabei nichts -- er funktioniert. Genau deshalb faellt
|
||||
es niemandem auf, und deshalb prueft pruef-css-klassen die
|
||||
ABHAENGIGKEIT statt der Optik. Hier hat sie angeschlagen. -->
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/teamlage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/teamlage.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-15
@@ -7,13 +7,13 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/bereich.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -112,15 +112,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/teilen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/teilen.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -126,14 +126,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/treff-moderation.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/treff-moderation.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -7,18 +7,18 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/treff.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein. Auf der Adresse des
|
||||
Rudels biegt der Server genau diesen Dateinamen auf crew-haus.css
|
||||
um, und die Seite kommt schon beim ERSTEN Abruf in Lila und
|
||||
Babyblau an -- ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -248,14 +248,14 @@
|
||||
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
|
||||
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
|
||||
die seit dem 07.09. jede Seite danach absucht. -->
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/treff-regeln.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/auskunft.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/treff-regeln.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -12,22 +12,22 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
|
||||
Dialog "Creator anlegen". -->
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -149,16 +149,16 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/uebersicht.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/uebersicht.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -335,14 +335,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/live.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/unsere-seiten.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/live.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/unsere-seiten.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/unterstuetzen.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/unterstuetzen.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -106,17 +106,17 @@
|
||||
<!-- bereiche.js VOR kopf.js: Dort steht `window.Bereiche`, und kopf.js
|
||||
liest daraus die Leitungsrollen. Ohne sie stürzt jede Seite mit
|
||||
„Cannot read properties of undefined (reading 'LEITUNG')" ab. -->
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/holen.js?v=202609251440" defer></script>
|
||||
<!-- Die Satz-Tafel. Ohne sie stand auf dieser Seite das Maschinenwort
|
||||
des Servers (z.B. "nicht_gefunden") statt eines Satzes -- gemeldet
|
||||
von pruef-meldungen, nicht beim Ansehen. -->
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/unterstuetzen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/unterstuetzen.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+16
-16
@@ -7,15 +7,15 @@
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -144,14 +144,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/werdegang.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/werdegang.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+15
-15
@@ -12,13 +12,13 @@
|
||||
vergessen wird. -->
|
||||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
<!-- KOERPERKLASSE "start", NICHT "gate" (berichtigt 21.09.2026).
|
||||
`body.gate` ist die Anmeldewand: `display:flex; align-items:center`,
|
||||
@@ -75,13 +75,13 @@
|
||||
<p class="fehler" id="fehler" hidden></p>
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/willkommen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/willkommen.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+17
-17
@@ -12,20 +12,20 @@
|
||||
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
|
||||
eine Flaeche sind statt zweier. -->
|
||||
<meta name="theme-color" content="#06090f" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251412" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251412" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609251440" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/gate.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/start.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/wissen.css?v=202609251440" />
|
||||
<link rel="stylesheet" href="assets/css/module.css?v=202609251440" />
|
||||
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
|
||||
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
|
||||
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
|
||||
genau diesen Dateinamen auf crew-haus.css um, und die Seite
|
||||
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
|
||||
ohne Umfaerben im Browser, ohne Flackern. -->
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251412" />
|
||||
<link rel="stylesheet" href="assets/css/haus.css?v=202609251440" />
|
||||
</head>
|
||||
|
||||
<body class="start">
|
||||
@@ -190,15 +190,15 @@
|
||||
|
||||
</main>
|
||||
|
||||
<script src="assets/js/meldung.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/meldung.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/hochladen.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/nachfrage.js?v=202609251440" defer></script>
|
||||
|
||||
<script src="assets/js/wahl.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wissen.js?v=202609251412" defer></script>
|
||||
<script src="assets/js/wahl.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/bereiche.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/installieren.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/kopf.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/glocke.js?v=202609251440" defer></script>
|
||||
<script src="assets/js/wissen.js?v=202609251440" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user