From a8e49496ad7b9721f58529112c36369ac7ed110a Mon Sep 17 00:00:00 2001 From: Dogfather Date: Tue, 22 Sep 2026 14:16:03 +0200 Subject: [PATCH] =?UTF-8?q?Der=20Installieren-Knopf=20war=20nie=20zu=20seh?= =?UTF-8?q?en=20=E2=80=94=20jetzt=20schon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Filipe, 22.09.2026: "und nochmal, ich will einen installieren button. damit die leute es viel einfacher haben die seite auf dem pc oder auf dem handy zu installieren!!! bitte das hab ich auch schon paar mal gefragt. mach das es ist seeeeeeeehr wichtig." Er hatte recht, und der Knopf war seit dem 20.09. gebaut. Er konnte nur nie erscheinen. ZWEI URSACHEN, beide ausserhalb dessen, was geprueft wurde: 1. DER SERVICE WORKER LIEF NIE. Er wurde ausschliesslich in glocke.js angemeldet -- also erst, wenn jemand Benachrichtigungen ERLAUBT. Auf Filipes Rechner stehen sie auf "Vom Browser blockiert"; das steht sogar in seiner Kopfleiste auf dem Bildschirmfoto von heute frueh. Ohne Service Worker macht Chrome kein Installationsangebot. 2. UND AUCH MIT WAERE ES NICHT GEGANGEN: Chrome verlangt einen Service Worker MIT `fetch`-Zuhoerer. Dieser hatte keinen. Ohne Angebot kommt `beforeinstallprompt` nie, und der Knopf bleibt `hidden`. Fuer immer. WAS SICH GEAENDERT HAT - Der Service Worker wird jetzt auf JEDER Seite angemeldet, unabhaengig von Benachrichtigungen. Das gehoert zum Installieren, nicht zur Glocke. - sw.js bekommt einen `fetch`-Zuhoerer, der NICHTS ablegt. Das Versprechen im Kopf der Datei ("bewusst ohne Zwischenspeicher, der Workspace liegt hinter einer Anmeldung") bleibt damit wortwoertlich gueltig: Er reicht Seitenaufrufe durch und baut nur dann selbst eine Antwort, wenn das Netz weg ist. Keine Serverantwort wird aufgehoben. - Der Knopf zeigt sich, sobald der Browser installieren KANN, statt erst nach dem Angebot. Geprueft wird die Faehigkeit (`'onbeforeinstallprompt' in window`), nicht der Name des Browsers. - DIE ANMELDEWAND BEKOMMT IHN AUCH. Sie hat keine Kopfleiste und deshalb bisher gar kein Angebot -- dabei ist sie die Seite, auf der jeder zuerst landet. Genau die Leute, um die es Filipe geht. - Dafuer steht der Knopf jetzt in einer eigenen Datei (assets/js/installieren.js) statt in kopf.js, das die Wand nicht laedt. Und sein Stil in gate.css statt in module.css -- vierter Fall derselben Art nach .knopf-still, dem Schalter und .feld-hinweis. - Ohne `nachfrage.js` (also auf der Wand) erklaert er den Weg als Absatz unter sich. Der erste Entwurf rief `window.frageNach?.()` auf: Auf dem iPhone steht der Knopf dort von Anfang an da, und er haette beim Antippen stumm nichts getan. - Der Aufruf haengt nicht mehr an der Reihenfolge der Skriptzeilen. chat.html und leistung.html laden kopf.js OHNE `defer`, dort waere installieren.js immer zu spaet gekommen -- zwei von 37 Seiten ohne Knopf, ohne Meldung. - Chromes Manifest-Warnung zum `share_target` behoben (enctype). WARUM DIE PRUEFUNG DAS NICHT GEFUNDEN HAT -- und was jetzt anders ist Sie war gruen, die ganze Zeit. Sie hat `beforeinstallprompt` SELBST zugestellt und gemessen, ob der Knopf darauf reagiert. Die eine Frage, auf die es ankam -- "bietet der Browser es ueberhaupt an?" -- hat sie nie gestellt. Jetzt fragt sie Chrome direkt (`Page.getInstallabilityErrors`, sein eigenes Urteil) und misst die Voraussetzungen statt der Reaktion: laeuft ein Service Worker, OBWOHL Benachrichtigungen auf "denied" stehen; hat sw.js einen fetch-Zuhoerer; legt er wirklich nichts ab; steht der Knopf auf der Wand und tut er dort auch etwas. Gemessen, mit Benachrichtigungen auf "denied": Service Worker: activated Chromes Urteil: kein einziges Hindernis Manifest: nichts beanstandet Knopf: 124x45 px, sichtbar, genau einer pruef-installieren 29/0 (von 14). Dazu gruen: pruef-css-klassen, pruef-struktur, pruef-crew-adresse, pruef-start-ansicht. Co-Authored-By: Claude Opus 5 --- server/pruef-installieren.mjs | 175 +++++- workspace/anruf-probe.html | 12 +- workspace/app.webmanifest | 9 +- workspace/assets/css/gate.css | 81 +++ workspace/assets/css/module.css | 48 +- workspace/assets/js/installieren.js | 273 +++++++++ workspace/assets/js/kopf.js | 151 +---- workspace/aufgaben.html | 35 +- workspace/automation.html | 362 ++++++------ workspace/befinden.html | 29 +- workspace/bereich.html | 41 +- workspace/bewerben.html | 240 ++++---- workspace/bewerbungen.html | 186 +++--- workspace/calls.html | 33 +- workspace/chat.html | 37 +- workspace/content.html | 33 +- workspace/crew-index.html | 25 +- workspace/crew.webmanifest | 9 +- workspace/dateien.html | 33 +- workspace/entwicklung.html | 29 +- workspace/hilfe.html | 27 +- workspace/index.html | 849 ++++++++++++++-------------- workspace/kalender.html | 33 +- workspace/leistung.html | 31 +- workspace/material.html | 31 +- workspace/personen.html | 31 +- workspace/profil.html | 35 +- workspace/rechte.html | 29 +- workspace/report.html | 240 ++++---- workspace/scouting.html | 31 +- workspace/start.html | 31 +- workspace/startcheck.html | 198 +++---- workspace/steckbrief.html | 35 +- workspace/sw.js | 92 ++- workspace/talente.html | 31 +- workspace/team.html | 244 ++++---- workspace/teamlage.html | 190 ++++--- workspace/teilen.html | 248 ++++---- workspace/treff-moderation.html | 29 +- workspace/treff-regeln.html | 464 +++++++-------- workspace/uebersicht.html | 326 +++++------ workspace/unsere-seiten.html | 27 +- workspace/werdegang.html | 310 +++++----- workspace/willkommen.html | 29 +- workspace/wissen.html | 33 +- 45 files changed, 3008 insertions(+), 2457 deletions(-) create mode 100644 workspace/assets/js/installieren.js diff --git a/server/pruef-installieren.mjs b/server/pruef-installieren.mjs index c4eda236..483ffa5e 100644 --- a/server/pruef-installieren.mjs +++ b/server/pruef-installieren.mjs @@ -46,7 +46,9 @@ 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 }); }; await import("./index.js"); -notbremse(220_000, "pruef-installieren"); +/* 220 -> 360 s: Abschnitt 0 startet einen weiteren Browser + und wartet auf den Service Worker. */ +notbremse(360_000, "pruef-installieren"); await new Promise((r) => setTimeout(r, 900)); const BASIS = `http://127.0.0.1:${PORT}`; @@ -101,6 +103,155 @@ try { return { ctx, s }; } + /* ===================================================================== + 0. BIETET DER BROWSER ES UEBERHAUPT AN? (neu am 22.09.2026) + ===================================================================== + DAS HIER IST DIE FRAGE, DIE ZWEI TAGE LANG NIEMAND GESTELLT HAT. + + Die Pruefungen darunter stellen `beforeinstallprompt` SELBST zu und + messen, was die Seite damit macht. Das war richtig gedacht und + vollstaendig wertlos: Sie waren gruen, waehrend der Knopf auf + Filipes Rechner seit dem 20.09. unsichtbar blieb, weil das echte + Ereignis nie kam. Er hat dreimal danach gefragt. + + ZWEI URSACHEN, beide ausserhalb dessen, was gemessen wurde: + + 1. Der Service Worker wurde nur in `glocke.js` angemeldet, also + erst beim ERLAUBEN von Benachrichtigungen. Auf Filipes + Rechner stehen sie auf "Vom Browser blockiert". + 2. Der Service Worker hatte keinen `fetch`-Zuhoerer. Chrome + verlangt ihn fuer sein Installationsangebot. + + Ohne Service Worker kein Angebot, ohne Angebot kein Knopf. + + GEMESSEN WIRD JETZT AN DER QUELLE: `Page.getInstallabilityErrors` + ist Chromes eigenes Urteil ueber genau diese Frage. Eine leere + Liste heisst, dass der Browser es anbietet. Das kann keine + nachgestellte Veranstaltung vortaeuschen. + + `beforeinstallprompt` selbst wird hier bewusst NICHT verlangt: In + dieser Umgebung (kein Profil, kein Nutzerverhalten, kein Fenster) + loest Chromium es nicht aus. Das Urteil oben ist die Aussage, auf + die es ankommt. + ===================================================================== */ + { + const ctx0 = await browser.newContext({ viewport: { width: 1280, height: 860 } }); + const s0 = await ctx0.newPage(); + const cdp = await ctx0.newCDPSession(s0); + await cdp.send("Page.enable"); + /* OHNE ANMELDUNG UND OHNE BENACHRICHTIGUNGSRECHT -- genau die Lage, + in der es bisher nicht ging. Die Anmeldewand ist ausserdem die + Seite, auf der jeder zuerst landet. */ + await s0.goto(BASIS + "/workspace/", { waitUntil: "networkidle" }); + await s0.waitForTimeout(2200); + + const sw = await s0.evaluate(async () => { + if (!("serviceWorker" in navigator)) return { da: false }; + const r = await navigator.serviceWorker.getRegistration("/workspace/"); + return { da: !!r, aktiv: !!r?.active, stand: r?.active?.state || null, + recht: Notification.permission }; + }); + ok(sw.recht !== "granted", + `Benachrichtigungen sind NICHT erlaubt (${sw.recht}) -- genau Filipes Lage`); + ok(sw.da === true && sw.aktiv === true, + `und trotzdem laeuft ein Service Worker (${sw.stand}) ` + + `-- vorher haette hier "keiner" gestanden`); + + /* Der `fetch`-Zuhoerer: ohne ihn bietet Chrome nichts an. Gemessen + an der Datei, nicht am Gedaechtnis. */ + const { readFileSync: lies } = await import("node:fs"); + const { fileURLToPath: alsPfad } = await import("node:url"); + const { dirname: ordnerVon } = await import("node:path"); + const wurzel = join(ordnerVon(alsPfad(import.meta.url)), ".."); + const swText = lies(join(wurzel, "workspace", "sw.js"), "utf8"); + ok(/addEventListener\(\s*["']fetch["']/.test(swText), + "sw.js hat einen fetch-Zuhoerer -- Chromes Bedingung fuers Anbieten"); + /* UND ER LEGT NICHTS AB. Das Versprechen im Kopf der Datei ist + keine Absichtserklaerung, sondern wird hier nachgesehen: Wer + `caches.open` einbaut, hebt Antworten auf -- hinter einer + Anmeldung waeren das persoenliche Daten auf fremden Geraeten. */ + ok(!/caches\.(open|match)|cache\.put/.test(swText), + "und er legt nichts ab -- keine persoenlichen Daten auf dem Geraet"); + + let urteil = null; + try { + urteil = (await cdp.send("Page.getInstallabilityErrors")).installabilityErrors; + } catch (f) { urteil = "unlesbar: " + f.message; } + /* DRITTER AUSGANG: Kann die Frage gar nicht gestellt werden, ist + das kein Bestehen. Eine Pruefung, die ihre Voraussetzung nicht + hat, muss das sagen. */ + ok(Array.isArray(urteil), + Array.isArray(urteil) ? "Chrome laesst sich nach der Installierbarkeit fragen" + : `KONNTE NICHT NACHSEHEN (${urteil})`); + ok(Array.isArray(urteil) && urteil.length === 0, + Array.isArray(urteil) && urteil.length + ? `Chrome nennt Hindernisse: ${urteil.map((f) => f.errorId).join(", ")}` + : "und nennt kein einziges Hindernis -- die Seite ist installierbar"); + + let manifest = null; + try { manifest = await cdp.send("Page.getAppManifest"); } catch { /* s.o. */ } + const mFehler = (manifest?.errors || []).filter((f) => f.critical !== 0); + ok(!!manifest?.url, `Chrome findet das Manifest (${manifest?.url || "nicht"})`); + ok(mFehler.length === 0 && (manifest?.errors || []).length === 0, + (manifest?.errors || []).length + ? `es meldet: ${(manifest.errors || []).map((f) => f.message).join(" | ").slice(0, 120)}` + : "und beanstandet nichts daran"); + + /* DER KNOPF STEHT AUF DER ANMELDEWAND. Sie hat keine Kopfleiste und + hatte deshalb frueher gar kein Angebot -- dabei landet dort + jeder zuerst. */ + const aufWand = await s0.evaluate(() => { + const k = document.querySelector(".install-knopf"); + if (!k) return { da: false }; + const r = k.getBoundingClientRect(); + return { da: true, sichtbar: !k.hidden, breit: Math.round(r.width), + hoch: Math.round(r.height), imPlatz: !!k.closest("[data-install-platz]"), + wort: k.textContent.trim() }; + }); + ok(aufWand.da && aufWand.imPlatz, + `der Knopf steht auf der Anmeldewand, an seinem vorgesehenen Platz`); + ok(aufWand.sichtbar === true && aufWand.hoch >= 44, + `und ist zu sehen und zu treffen (${aufWand.breit}x${aufWand.hoch} px, "${aufWand.wort}")`); + ok(/installieren/i.test(aufWand.wort || ""), + `und sagt, was er tut ("${aufWand.wort}")`); + + /* GEGENPROBE: nur EIN Knopf. Seit der Aufruf nicht mehr an der + Reihenfolge der Skriptzeilen haengt, kann er aus zwei Richtungen + kommen. */ + const anzahl = await s0.locator(".install-knopf").count(); + ok(anzahl === 1, `und zwar genau einer (${anzahl})`); + + /* UND ER TUT ETWAS, WENN MAN IHN DRUECKT. + Das ist hier keine Formalie, sondern der Fall, an dem der erste + Entwurf gescheitert waere: Der Knopf rief `window.frageNach?.()` + auf. Diese Seite laedt `nachfrage.js` NICHT -- also war die + Funktion `undefined`, und `?.()` verschluckt das lautlos. Auf + dem iPhone steht der Knopf hier von Anfang an da. Er haette + stumm dagestanden, und wer ihn drueckt, sucht den Fehler bei + sich. + + Gegenprobe gleich dahinter: ein zweiter Druck macht die + Erklaerung wieder zu. Sonst sammeln sich Absaetze. */ + const ohneDialog = await s0.evaluate(() => typeof window.frageNach !== "function"); + ok(ohneDialog, "auf der Anmeldewand gibt es den Dialogbaustein nicht (nachfrage.js fehlt dort)"); + + await s0.click(".install-knopf"); + await s0.waitForTimeout(400); + const hinweis = await s0.evaluate(() => { + const h = document.querySelector(".install-hinweis"); + return h ? h.textContent.replace(/\s+/g, " ").trim() : null; + }); + ok(!!hinweis && /Menü|Teilen|Home-Bildschirm/i.test(hinweis), + `er erklaert trotzdem den Weg ("${(hinweis || "nichts").slice(0, 60)}…")`); + + await s0.click(".install-knopf"); + await s0.waitForTimeout(300); + const zu = await s0.locator(".install-hinweis").count(); + ok(zu === 0, `und ein zweiter Druck macht sie wieder zu (${zu})`); + + await ctx0.close(); + } + /* ---- Zustand 2: der Browser bietet es an ----------------------- */ const a = await seiteAuf(); /* Chromium loest `beforeinstallprompt` in dieser Umgebung nicht von @@ -111,8 +262,19 @@ try { const sichtbarVorher = await a.s.evaluate(() => !!document.querySelector(".install-knopf:not([hidden])")); ok(vorher === 1, `der Knopf steht im Dokument (${vorher})`); - ok(sichtbarVorher === false, - "bleibt aber versteckt, solange der Browser nichts anbietet — kein Knopf ohne Wirkung"); + /* HIER STAND: "bleibt versteckt, solange der Browser nichts + anbietet". Das war bis zum 22.09.2026 richtig -- und genau der + Grund, warum Filipe ihn nie gesehen hat. `beforeinstallprompt` + kommt in Chrome nicht verlaesslich sofort und gar nicht mehr, + wenn es kurz vorher weggeklickt wurde. + + Jetzt zeigt er sich, sobald der Browser das Installieren + ueberhaupt KANN (`'onbeforeinstallprompt' in window`, wahr bei + allen Chromium-Browsern) -- und faellt auf die Erklaerung + zurueck, falls das Angebot ausbleibt. Wo auch das nicht zutrifft + und kein Apple-Geraet vorliegt, bleibt er weg. */ + ok(sichtbarVorher === true, + "und ist in einem Browser, der installieren kann, von Anfang an zu sehen"); await a.s.evaluate(() => { const e = new Event("beforeinstallprompt"); @@ -201,6 +363,13 @@ try { await browser.close(); } +/* Die Zahl gehoert in die Bedingung. Faellt sie, ist still ein + Abschnitt ausgefallen -- und genau der neue Abschnitt 0 ist der, + auf den es ankommt. */ +if (geprueft < 29) { + console.log(` FEHL nur ${geprueft} Pruefungen gelaufen -- erwartet waren 29+`); + fehler++; +} console.log(`\n${fehler ? fehler + " FEHLER" : "Alles in Ordnung"} — ${geprueft} Prüfungen\n`); try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ } process.exit(fehler ? 1 : 0); diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index f89ac0d1..3314d4df 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,15 +16,15 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - + +
+

Gerade kein Netz

+

Dein Gerät ist offline — deshalb konnte die Seite nicht geladen werden.

+

Es liegt nicht an der App. Sobald du wieder Empfang oder WLAN hast, geht es weiter.

+ +
`; + +self.addEventListener("fetch", (e) => { + const a = e.request; + /* NUR SEITENAUFRUFE. Bilder, Stilvorlagen und vor allem die + Schnittstellen bleiben unangetastet -- ein Service Worker, der + sich in eine API einmischt, ist die Sorte Fehler, die man Tage + spaeter an unerklaerlichen Antworten sucht. */ + if (a.method !== "GET" || a.mode !== "navigate") return; + e.respondWith(fetch(a).catch(() => new Response(OHNE_NETZ, { + status: 503, + headers: { + "Content-Type": "text/html; charset=utf-8", + /* Nicht aufheben -- auch nicht vom Browser selbst. */ + "Cache-Control": "no-store", + }, + }))); +}); + /* --------------------------------------------------------------------- Eine Benachrichtigung kommt an. ------------------------------------------------------------------ */ diff --git a/workspace/talente.html b/workspace/talente.html index f841b6bf..641abe73 100644 --- a/workspace/talente.html +++ b/workspace/talente.html @@ -7,18 +7,18 @@ - - - - - - + + + + + + - - - + + + @@ -111,12 +111,13 @@ - - + + - - - - + + + + + diff --git a/workspace/team.html b/workspace/team.html index 47626b0c..c86af4a2 100644 --- a/workspace/team.html +++ b/workspace/team.html @@ -1,121 +1,123 @@ - - - - - -Team · Spicy & Dogi - - - - - - - - - - - - - - - - - - -
- -

Creator Workspace · Team

-
- … - -
-
- -
- - - -
-
-
-

Rund um das Team

-

Manager & Scouts

-

- Wer betreut wen, wo staut sich etwas, wo fehlt jemand. -

-
-

- Termine, Chats und Dateien kommen hier nicht vor – weder Inhalte - noch Zahlen. Das ist eine Arbeitslage, keine Überwachung. -

-
-
- - - - - - - - - - - - - - -

Die Arbeitslage wird geladen …

- -
- - - - - - - - - - + + + + + +Team · Spicy & Dogi + + + + + + + + + + + + + + + + + + +
+ +

Creator Workspace · Team

+
+ … + +
+
+ +
+ + + +
+
+
+

Rund um das Team

+

Manager & Scouts

+

+ Wer betreut wen, wo staut sich etwas, wo fehlt jemand. +

+
+

+ Termine, Chats und Dateien kommen hier nicht vor – weder Inhalte + noch Zahlen. Das ist eine Arbeitslage, keine Überwachung. +

+
+
+ + + + + + + + + + + + + + +

Die Arbeitslage wird geladen …

+ +
+ + + + + + + + + + + + diff --git a/workspace/teamlage.html b/workspace/teamlage.html index 6b94fb12..cae23fa2 100644 --- a/workspace/teamlage.html +++ b/workspace/teamlage.html @@ -1,94 +1,96 @@ - - - - - -Dein Team · Spicy & Dogi - - - - - - - - - - - - - - - - - - - -
- -

Creator Workspace · Dein Team

-
- … - -
-
- -
- - -
-
-
-

Zusammen

-

Was auf dich wartet

-

…

-

- Was hier steht, ist eine Merkliste für euch beide – keine Bewertung - von Menschen. „Offen“ heißt: darüber habt ihr noch nicht gesprochen. - Eingeschätzt wird dort, wo die Punkte stehen; jede Zahl führt dorthin. -

-
-
- -
- -
- -
- - - - - - - - - - + + + + + +Dein Team · Spicy & Dogi + + + + + + + + + + + + + + + + + + + +
+ +

Creator Workspace · Dein Team

+
+ … + +
+
+ +
+ + +
+
+
+

Zusammen

+

Was auf dich wartet

+

…

+

+ Was hier steht, ist eine Merkliste für euch beide – keine Bewertung + von Menschen. „Offen“ heißt: darüber habt ihr noch nicht gesprochen. + Eingeschätzt wird dort, wo die Punkte stehen; jede Zahl führt dorthin. +

+
+
+ +
+ +
+ +
+ + + + + + + + + + + + diff --git a/workspace/teilen.html b/workspace/teilen.html index 062d5c83..1148d529 100644 --- a/workspace/teilen.html +++ b/workspace/teilen.html @@ -1,123 +1,125 @@ - - - - - -Video übernehmen · Spicy & Dogi - - - - - - - - - - - - - - - - -
- -

Team Dogi · Video übernehmen

-
- … - -
-
- -
- - - -
-
-

Geteilt

-

Video übernehmen

-

- Titel und Coverbild werden von TikTok geholt – du musst nichts abtippen. -

-
-
- - - -
-

einen Moment …

- - - - - - - - - - - - - - -
- -
- - - - - - - - - - + + + + + +Video übernehmen · Spicy & Dogi + + + + + + + + + + + + + + + + +
+ +

Team Dogi · Video übernehmen

+
+ … + +
+
+ +
+ + + +
+
+

Geteilt

+

Video übernehmen

+

+ Titel und Coverbild werden von TikTok geholt – du musst nichts abtippen. +

+
+
+ + + +
+

einen Moment …

+ + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + diff --git a/workspace/treff-moderation.html b/workspace/treff-moderation.html index 1bde1092..02616599 100644 --- a/workspace/treff-moderation.html +++ b/workspace/treff-moderation.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -126,12 +126,13 @@ - - + + - - - - + + + + + diff --git a/workspace/treff-regeln.html b/workspace/treff-regeln.html index 4c223efa..939d5ac7 100644 --- a/workspace/treff-regeln.html +++ b/workspace/treff-regeln.html @@ -1,231 +1,233 @@ - - - - - -Die Regeln · Der Treff - - - - - - - - - - - - - - - - - - -
- -

Der Treff · Regeln

-
- … - -
-
- -
- -
-
-

Der Treff

- -

Die Regeln

-

- Kurz, in normaler Sprache, und alles, was hier steht, gilt auch. -

-
-
- - - - -
-

Schön, dass du da bist

-
-

- Der Treff ist der Ort rund um DogFather: Hier steht, was gerade gilt, - was ansteht, und hier redet ihr miteinander. Er ist nicht öffentlich – - du bist hier, weil dir jemand einen Code gegeben hat. -

-

- Gib diesen Code nicht weiter. Er gehört zu dir, und was damit - geschrieben wird, steht unter deinem Namen. -

-
-
- -
-

Die fünf Regeln

-
-
    -
  1. Sei anständig. Keine Beleidigungen, keine Angriffe - auf Menschen, keine Hetze. Streiten über eine Sache ist in Ordnung – - über einen Menschen nicht.
  2. -
  3. Keine privaten Daten. Keine Adressen, keine - Telefonnummern, keine Klarnamen von anderen. Auch nicht von dir - selbst, es liest mehr mit, als du denkst.
  4. -
  5. Nichts Fremdes hochladen. Was du einstellst, muss - von dir sein oder dir gehören.
  6. -
  7. Keine Werbung, kein Verkauf. Auch nicht für - andere Streams.
  8. -
  9. Was hier passiert, bleibt hier. Keine - Bildschirmfotos nach draußen.
  10. -
-
-
- -
-

Wie du weiterkommst

-
-

- In der ersten Zeit kannst du lesen und bei Wünschen mitstimmen. - Das ist kein Misstrauen gegen dich – es ist eines gegen - Wegwerf-Zugänge. -

-
    -
  • wird geladen …
  • -
-
-
- -
-

Wenn etwas nicht stimmt

-
-

- An jedem Beitrag, der nicht von dir ist, steht melden. - Schreib in einem Satz, was daran nicht in Ordnung ist – ohne das - können wir es nicht prüfen. -

-

- Wir sehen uns jede Meldung an. Wird ein Beitrag entfernt, halten wir - fest, warum – und die Person, die ihn geschrieben hat, - erfährt den Grund. Das ist keine Höflichkeit, sondern - Artikel 17 des Digital Services Act. -

-

- Du erreichst uns außerdem direkt: Schreib es auf das Brett - Der Treff oder sag es jemandem aus dem Team. -

-

- Häufige Fragen und Antworten stehen auf dem Brett - Regeln & Hilfe. -

-
-
- -
-

Was passiert, wenn jemand sich nicht daran hält

-
-

Wir gehen der Reihe nach vor, und niemand fliegt ohne Ansage:

-
    -
  1. Hinweis. Jemand sagt dir, was nicht ging.
  2. -
  3. Pause. Ein paar Tage nichts schreiben. Lesen - geht weiter.
  4. -
  5. Ende. Der Zugang wird geschlossen.
  6. -
-

…

-
-
- -
-

Das Kleingedruckte – kurz

-
-

…

-

- Was gespeichert wird: dein Name, dein Zugangscode - (verschlüsselt, niemand kann ihn lesen), was du schreibst, und wann - du dich anmeldest. Mehr nicht – kein Standort, keine Werbe-IDs, - keine Weitergabe an Dritte. -

-

- Du willst weg? Sag Bescheid. Dein Zugang wird - geschlossen und deine Beiträge werden entfernt. -

-

- Der Treff ist ein kleiner, geschlossener Bereich. Es gibt keine - Direktnachrichten zwischen Mitgliedern – absichtlich: Ein - öffentlicher Raum lässt sich moderieren, ein privater nicht. -

-
-
- - - -
-
-

Was ist über mich gespeichert?

- -
-

- Alles, was dieser Workspace über dich weiß, als Datei zum Mitnehmen. - Zugangsgeheimnisse sind nicht dabei, und wo andere Menschen vorkommen, - stehen sie nicht mit Namen darin – ihre Daten gehören ihnen. -

- -
- -
- - - - - - - - - - + + + + + +Die Regeln · Der Treff + + + + + + + + + + + + + + + + + + +
+ +

Der Treff · Regeln

+
+ … + +
+
+ +
+ +
+
+

Der Treff

+ +

Die Regeln

+

+ Kurz, in normaler Sprache, und alles, was hier steht, gilt auch. +

+
+
+ + + + +
+

Schön, dass du da bist

+
+

+ Der Treff ist der Ort rund um DogFather: Hier steht, was gerade gilt, + was ansteht, und hier redet ihr miteinander. Er ist nicht öffentlich – + du bist hier, weil dir jemand einen Code gegeben hat. +

+

+ Gib diesen Code nicht weiter. Er gehört zu dir, und was damit + geschrieben wird, steht unter deinem Namen. +

+
+
+ +
+

Die fünf Regeln

+
+
    +
  1. Sei anständig. Keine Beleidigungen, keine Angriffe + auf Menschen, keine Hetze. Streiten über eine Sache ist in Ordnung – + über einen Menschen nicht.
  2. +
  3. Keine privaten Daten. Keine Adressen, keine + Telefonnummern, keine Klarnamen von anderen. Auch nicht von dir + selbst, es liest mehr mit, als du denkst.
  4. +
  5. Nichts Fremdes hochladen. Was du einstellst, muss + von dir sein oder dir gehören.
  6. +
  7. Keine Werbung, kein Verkauf. Auch nicht für + andere Streams.
  8. +
  9. Was hier passiert, bleibt hier. Keine + Bildschirmfotos nach draußen.
  10. +
+
+
+ +
+

Wie du weiterkommst

+
+

+ In der ersten Zeit kannst du lesen und bei Wünschen mitstimmen. + Das ist kein Misstrauen gegen dich – es ist eines gegen + Wegwerf-Zugänge. +

+
    +
  • wird geladen …
  • +
+
+
+ +
+

Wenn etwas nicht stimmt

+
+

+ An jedem Beitrag, der nicht von dir ist, steht melden. + Schreib in einem Satz, was daran nicht in Ordnung ist – ohne das + können wir es nicht prüfen. +

+

+ Wir sehen uns jede Meldung an. Wird ein Beitrag entfernt, halten wir + fest, warum – und die Person, die ihn geschrieben hat, + erfährt den Grund. Das ist keine Höflichkeit, sondern + Artikel 17 des Digital Services Act. +

+

+ Du erreichst uns außerdem direkt: Schreib es auf das Brett + Der Treff oder sag es jemandem aus dem Team. +

+

+ Häufige Fragen und Antworten stehen auf dem Brett + Regeln & Hilfe. +

+
+
+ +
+

Was passiert, wenn jemand sich nicht daran hält

+
+

Wir gehen der Reihe nach vor, und niemand fliegt ohne Ansage:

+
    +
  1. Hinweis. Jemand sagt dir, was nicht ging.
  2. +
  3. Pause. Ein paar Tage nichts schreiben. Lesen + geht weiter.
  4. +
  5. Ende. Der Zugang wird geschlossen.
  6. +
+

…

+
+
+ +
+

Das Kleingedruckte – kurz

+
+

…

+

+ Was gespeichert wird: dein Name, dein Zugangscode + (verschlüsselt, niemand kann ihn lesen), was du schreibst, und wann + du dich anmeldest. Mehr nicht – kein Standort, keine Werbe-IDs, + keine Weitergabe an Dritte. +

+

+ Du willst weg? Sag Bescheid. Dein Zugang wird + geschlossen und deine Beiträge werden entfernt. +

+

+ Der Treff ist ein kleiner, geschlossener Bereich. Es gibt keine + Direktnachrichten zwischen Mitgliedern – absichtlich: Ein + öffentlicher Raum lässt sich moderieren, ein privater nicht. +

+
+
+ + + +
+
+

Was ist über mich gespeichert?

+ +
+

+ Alles, was dieser Workspace über dich weiß, als Datei zum Mitnehmen. + Zugangsgeheimnisse sind nicht dabei, und wo andere Menschen vorkommen, + stehen sie nicht mit Namen darin – ihre Daten gehören ihnen. +

+ +
+ +
+ + + + + + + + + + + + diff --git a/workspace/uebersicht.html b/workspace/uebersicht.html index e2bdaa1a..07c4670c 100644 --- a/workspace/uebersicht.html +++ b/workspace/uebersicht.html @@ -1,162 +1,164 @@ - - - - - -Dashboard · Spicy & Dogi - - - - - - - - - - - - - - - - - - - - - -
- -

Creator Workspace · Dashboard

-
- … - -
-
- -
- -
-
-

Alles zentral

-

Dashboard

-

- Eine Karte je Creator – mit einem Blick sehen, wo es hakt und wo es läuft. -

-
- - -
- - - - - -
-

Creator anlegen

-

- Der Zugangscode erscheint genau einmal – danach ist er weg und - kann nur neu gesetzt werden. -

- -
- - -
- - - - - - - - -
- - -
-
-
- - - - - - - -

Übersicht wird geladen …

- - - -
- - - - - - - - - - - - + + + + + +Dashboard · Spicy & Dogi + + + + + + + + + + + + + + + + + + + + + +
+ +

Creator Workspace · Dashboard

+
+ … + +
+
+ +
+ +
+
+

Alles zentral

+

Dashboard

+

+ Eine Karte je Creator – mit einem Blick sehen, wo es hakt und wo es läuft. +

+
+ + +
+ + + + + +
+

Creator anlegen

+

+ Der Zugangscode erscheint genau einmal – danach ist er weg und + kann nur neu gesetzt werden. +

+ +
+ + +
+ + + + + + + + +
+ + +
+
+
+ + + + + + + +

Übersicht wird geladen …

+ + + +
+ + + + + + + + + + + + + + diff --git a/workspace/unsere-seiten.html b/workspace/unsere-seiten.html index 93b0da12..b8cfbf4e 100644 --- a/workspace/unsere-seiten.html +++ b/workspace/unsere-seiten.html @@ -7,13 +7,13 @@ - - - - - - - + + + + + + + @@ -335,12 +335,13 @@ - + - - - - - + + + + + + diff --git a/workspace/werdegang.html b/workspace/werdegang.html index 6c878cb8..c4cd6cc7 100644 --- a/workspace/werdegang.html +++ b/workspace/werdegang.html @@ -1,154 +1,156 @@ - - - - - -Entwicklung · Spicy & Dogi - - - - - - - - - - - - - - - - - - -
- -

Team Dogi · Entwicklung

-
- … - -
-
- -
- - - -
-
-

Entwicklung & Nachwuchs

-

Entwicklung

-

- Wie sich jemand über die Zeit bewegt. Keine Note, kein Vergleich – - jede Karte nur mit sich selbst. -

-
-
- - - - - - - - - - - - - -
- - - - - - - - - + + + + + +Entwicklung · Spicy & Dogi + + + + + + + + + + + + + + + + + + +
+ +

Team Dogi · Entwicklung

+
+ … + +
+
+ +
+ + + +
+
+

Entwicklung & Nachwuchs

+

Entwicklung

+

+ Wie sich jemand über die Zeit bewegt. Keine Note, kein Vergleich – + jede Karte nur mit sich selbst. +

+
+
+ + + + + + + + + + + + + +
+ + + + + + + + + + + diff --git a/workspace/willkommen.html b/workspace/willkommen.html index 5c18f634..38baf92b 100644 --- a/workspace/willkommen.html +++ b/workspace/willkommen.html @@ -12,13 +12,13 @@ vergessen wird. --> - - - - - - - + + + + + + + - - - - - - - + + + + + + + - + @@ -190,14 +190,15 @@ - - - + + + - - - - - + + + + + +