From e616d88a30473b15bbe7a83b1de5065d07a89217 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Wed, 9 Sep 2026 02:05:30 +0200 Subject: [PATCH] Punkt 7: Vier Koennensstufen in den Bereichslisten -- Anfaenger bis Meister Wunsch Filipe: "ich will dass es in diesen kategorien ... kategorien gibt wie jetzt, aber fuer anfaenger, fortgeschrittene, profis .... falls es noch eine kategorie gibt fuege ruhig hinzu. informiere dich so krass wie es nur geht ... und dan will ich dass du das perfekt alles aufbaust mit aufgaben und so." VIER STUFEN, UND DIE VIERTE IST NICHT AUSGEDACHT. In den gaengigen Kompetenzmodellen (Dreyfus) folgt auf "kompetent" eine Stufe, auf der es nicht mehr um das eigene Koennen geht, sondern darum, dass es OHNE einen weiterlaeuft. Genau daran haengen die elf Punkte der obersten Stufe: Vorlagen, eingewiesene Vertretung, abgelegte Loesungen. Anfaenger was von Anfang an sitzen muss Fortgeschritten Routine statt Zufall Profi gemessen statt geschaetzt Meister laeuft auch ohne dich DIE STUFE HAENGT AM PUNKT, NICHT AN DER GRUPPE. Eine Gruppe ist ein ABLAUF ("Vor der Sendung"), eine Stufe ist ein KOENNEN. Als Gruppen gebaut waeren es zwoelf Abschnitte statt drei, und dieselbe Frage stuende viermal da. So bleibt der Ablauf die Gliederung und die Stufe ein Filter darueber. DIE INHALTE SIND RECHERCHIERT, NICHT AUSGEDACHT. 47 vorhandene Punkte haben eine Stufe bekommen, 28 neue sind dazugekommen -- ueberwiegend auf Profi und Meister, weil der Bestand dort duenn war. Was jetzt drinsteht und vorher fehlte, unter anderem: * Bitrate hoechstens 70-80 % des GEMESSENEN Uploads; der Rest ist der Puffer gegen verworfene Bilder. * Keyframe-Abstand zwei Sekunden -- alles andere kann beim Zuschauer zu Puffern oder gar nicht erst zum Abspielen fuehren. * Tonfilter in der Reihenfolge Rauschunterdrueckung, Kompressor, Rauschsperre: Ein Kompressor davor hebt das Rauschen mit an. * Hardware-Encoder statt Prozessor -- der groesste Einzelgewinn an Stabilitaet. * Verworfene Bilder ABLESEN: Leitung und Kodierung sind zwei verschiedene Fehler mit zwei verschiedenen Loesungen. * Eskalationsleiter in vier Stufen (ansprechen, loeschen, Auszeit, Sperre) -- vorher festgelegt, weil Ungleichbehandlung das ist, was Communitys spaltet. * Moderatoren EINGEWIESEN, nicht nur ernannt: Regeln schriftlich, Eskalationsleiter, Werkzeuge einmal gezeigt. * Privater Probelauf statt Programmvorschau -- erst der zeigt, was beim Zuschauer ankommt. Zahlen: LIVE 33 Punkte (11/10/8/4), Community 23 (7/7/5/4), Technik 19 (6/6/4/3). Jeder Punkt hat genau eine Stufe -- nachgemessen, nicht angenommen. DIE VORGABE IST "ALLE". Ein Filter, der beim Oeffnen schon etwas versteckt, laesst einen Punkte suchen, die man gestern noch gesehen hat. Die Gruppenzahlen zaehlen mit dem Filter mit; eine Gruppe, in der nichts uebrigbleibt, sagt das in einem Satz statt leer dazustehen. Die vier Stufenfarben sind GELIEHEN, nicht ausgesucht: dieselben, die auf der Uebersicht schon "offen / dringend / laeuft / erledigt" tragen. Wer die eine Seite kennt, liest die andere ohne Legende. ZWEI EIGENE FEHLER UNTERWEGS: 1. NAMENSKOLLISION. Ich habe die Marke `fest-punkt__stufe` genannt -- den Namen gibt es dort laengst fuer den BEARBEITUNGSstand (Offen / Passt so / Verbessern). Gemessen standen danach 66 Marken an 33 Punkten, und mein neues CSS faerbte den alten Behaelter mit. Heisst jetzt `__koennen`. Zwei verschiedene Dinge unter einem Namen ist derselbe Fehler wie zwei Regeln fuer dieselbe Sache, nur eine Ebene frueher. 2. SCHRIFTGROESSE. Die Marke stand auf 0,66 rem = 10,56 px. pruef-css-klassen hat es sofort gemeldet (44 statt 43 Stellen unter 11,5 px). Jetzt 0,72 rem. Geprueft: pruef-checkliste, pruef-css-klassen, pruef-workspace-seiten, pruef-schulung -- alle in Ordnung. Dazu alle drei Bereiche im Browser durchgefiltert. Quellen der Recherche: obsproject.com (NVENC/Encoder), dacast.com und obs-versions.com (Bitrate, Keyframe, Tonfilter), switcherstudio.com (Probelauf), help.twitch.tv und sendbird.com (Moderation, Eskalation), jeffbullas.com (Einweisung von Moderatoren). Co-Authored-By: Claude Opus 5 --- server/workspace-vorlagen.js | 122 ++++++++++++++++++------------ workspace/assets/css/start.css | 117 ++++++++++++++++++++++++++++ workspace/assets/js/checkliste.js | 110 ++++++++++++++++++++++++++- workspace/aufgaben.html | 18 ++--- workspace/automation.html | 20 ++--- workspace/bereich.html | 28 +++---- workspace/calls.html | 22 +++--- workspace/chat.html | 20 ++--- workspace/content.html | 24 +++--- workspace/dateien.html | 20 ++--- workspace/index.html | 4 +- workspace/kalender.html | 22 +++--- workspace/leistung.html | 20 ++--- workspace/personen.html | 20 ++--- workspace/profil.html | 22 +++--- workspace/report.html | 22 +++--- workspace/scouting.html | 20 ++--- workspace/start.html | 18 ++--- workspace/startcheck.html | 22 +++--- workspace/steckbrief.html | 20 ++--- workspace/uebersicht.html | 20 ++--- workspace/wissen.html | 20 ++--- 22 files changed, 491 insertions(+), 240 deletions(-) diff --git a/server/workspace-vorlagen.js b/server/workspace-vorlagen.js index ee2629cc..9ea04756 100644 --- a/server/workspace-vorlagen.js +++ b/server/workspace-vorlagen.js @@ -137,31 +137,43 @@ export const CONTENT_IDEEN = [ export const LIVE_PUNKTE = { vorbereitung: [ - { schluessel: "ton-geprueft", titel: "Ton geprüft", text: "Eine Minute aufnehmen und anhören. Ton ist der Grund Nummer eins, warum Leute wieder gehen." }, - { schluessel: "licht-sitzt", titel: "Licht sitzt", text: "Gesicht heller als der Hintergrund. Kein Fenster im Rücken." }, - { schluessel: "verbindung-getestet", titel: "Verbindung getestet", text: "Upload-Geschwindigkeit geprüft, Kabel statt WLAN wenn möglich." }, - { schluessel: "titel-und-thema-stehen", titel: "Titel und Thema stehen", text: "Wer den Titel liest, weiß, was ihn erwartet – und ob es für ihn ist." }, - { schluessel: "ablauf-grob-im-kopf", titel: "Ablauf grob im Kopf", text: "Drei Blöcke reichen. Ein Stream ohne roten Faden fühlt sich für Zuschauer wie Warten an." }, - { schluessel: "angekuendigt", titel: "Angekündigt", text: "Mindestens einmal vorher gesagt, dass es losgeht – Story, Post oder Nachricht." }, - { schluessel: "moderation-geklaert", titel: "Moderation geklärt", text: "Weiß jemand Bescheid, der eingreifen kann, wenn es im Chat kippt?" }, - { schluessel: "technik-ersatz-bereit", titel: "Technik-Ersatz bereit", text: "Was passiert, wenn der Stream abbricht? Handy als Notlösung bereitlegen." }, + { schluessel: "ton-geprueft", titel: "Ton geprüft", text: "Eine Minute aufnehmen und anhören. Ton ist der Grund Nummer eins, warum Leute wieder gehen.", stufe: "anfaenger" }, + { schluessel: "licht-sitzt", titel: "Licht sitzt", text: "Gesicht heller als der Hintergrund. Kein Fenster im Rücken.", stufe: "anfaenger" }, + { schluessel: "verbindung-getestet", titel: "Verbindung getestet", text: "Upload-Geschwindigkeit geprüft, Kabel statt WLAN wenn möglich.", stufe: "anfaenger" }, + { schluessel: "titel-und-thema-stehen", titel: "Titel und Thema stehen", text: "Wer den Titel liest, weiß, was ihn erwartet – und ob es für ihn ist.", stufe: "anfaenger" }, + { schluessel: "ablauf-grob-im-kopf", titel: "Ablauf grob im Kopf", text: "Drei Blöcke reichen. Ein Stream ohne roten Faden fühlt sich für Zuschauer wie Warten an.", stufe: "fort" }, + { schluessel: "angekuendigt", titel: "Angekündigt", text: "Mindestens einmal vorher gesagt, dass es losgeht – Story, Post oder Nachricht.", stufe: "fort" }, + { schluessel: "moderation-geklaert", titel: "Moderation geklärt", text: "Weiß jemand Bescheid, der eingreifen kann, wenn es im Chat kippt?", stufe: "fort" }, + { schluessel: "technik-ersatz-bereit", titel: "Technik-Ersatz bereit", text: "Was passiert, wenn der Stream abbricht? Handy als Notlösung bereitlegen.", stufe: "fort" }, + { schluessel: "upload-gemessen-bitrate-darunter", titel: "Upload gemessen, Bitrate darunter", text: "Vor der Sendung messen, nicht schaetzen. Video und Ton zusammen sollen hoechstens 70 bis 80 Prozent des gemessenen Uploads belegen -- der Rest ist der Puffer, der verworfene Bilder verhindert.", stufe: "profi" }, + { schluessel: "keyframe-alle-zwei-sekunden", titel: "Keyframe alle zwei Sekunden", text: "Der Abstand, in dem ein volles Bild geschickt wird. Zwei Sekunden ist keine Geschmacksfrage: Alles andere kann bei Zuschauern zu Puffern oder gar nicht erst zum Abspielen fuehren.", stufe: "profi" }, + { schluessel: "probelauf-privat-gestreamt", titel: "Probelauf privat gestreamt", text: "Nicht die Vorschau im Programm, sondern ein echter privater Stream. Erst der zeigt, was beim Zuschauer ankommt -- Ton, Bild, Verzoegerung, Verbindung.", stufe: "profi" }, + { schluessel: "die-ersten-dreissig-sekunden-stehen", titel: "Die ersten dreissig Sekunden stehen", text: "Wortwoertlich vorbereitet. In dieser halben Minute entscheidet sich, ob jemand bleibt, und genau dort improvisiert man am schlechtesten.", stufe: "profi" }, + { schluessel: "ausweichweg-laeuft-mit", titel: "Ausweichweg laeuft mit", text: "Zweites Geraet bereit und angemeldet, nicht nur daneben. Ein Ersatz, den man erst einrichten muss, ist im Moment des Ausfalls keiner.", stufe: "meister" }, + { schluessel: "ablauf-als-vorlage-nicht-als-zettel", titel: "Ablauf als Vorlage, nicht als Zettel", text: "Derselbe Aufbau jedes Mal, als Vorlage gespeichert. Was jedes Mal neu erfunden wird, wird jedes Mal anders gut.", stufe: "meister" }, + { schluessel: "ein-ziel-in-einer-zahl", titel: "Ein Ziel in einer Zahl", text: "Vorher festlegen, woran diese Sendung gemessen wird -- Verweildauer, Wiederkehrer, Kommentare. Ohne Zahl vorher ist die Auswertung danach eine Meinung.", stufe: "meister" }, ], mitschrift: [ - { schluessel: "guter-moment-aufheben", titel: "Guter Moment – aufheben", text: "Etwas ist gut gelaufen. Kurz notieren, woran es lag – daraus wird später ein Clip." }, - { schluessel: "hier-sind-leute-gegangen", titel: "Hier sind Leute gegangen", text: "Zeitpunkt merken. Später nachsehen, was in dem Moment passiert ist." }, - { schluessel: "frage-aus-dem-chat-die-wiederkommt", titel: "Frage aus dem Chat, die wiederkommt", text: "Wird oft gefragt? Dann gehört sie in ein eigenes Video." }, - { schluessel: "technik-hat-gehakt", titel: "Technik hat gehakt", text: "Ton weg, Bild eingefroren, Verzögerung – aufschreiben, solange man es noch weiß." }, - { schluessel: "unangenehme-situation-im-chat", titel: "Unangenehme Situation im Chat", text: "Was war es, wie ist es ausgegangen? Auch wenn es gut lief." }, - { schluessel: "neue-zuschauer-aufgetaucht", titel: "Neue Zuschauer aufgetaucht", text: "Woher kamen sie? Wurde jemand begrüßt oder ging es unter?" }, - { schluessel: "ich-wusste-nicht-weiter", titel: "Ich wusste nicht weiter", text: "Stelle merken, an der es gestockt hat. Dafür gibt es Hilfe." }, + { schluessel: "guter-moment-aufheben", titel: "Guter Moment – aufheben", text: "Etwas ist gut gelaufen. Kurz notieren, woran es lag – daraus wird später ein Clip.", stufe: "anfaenger" }, + { schluessel: "hier-sind-leute-gegangen", titel: "Hier sind Leute gegangen", text: "Zeitpunkt merken. Später nachsehen, was in dem Moment passiert ist.", stufe: "fort" }, + { schluessel: "frage-aus-dem-chat-die-wiederkommt", titel: "Frage aus dem Chat, die wiederkommt", text: "Wird oft gefragt? Dann gehört sie in ein eigenes Video.", stufe: "fort" }, + { schluessel: "technik-hat-gehakt", titel: "Technik hat gehakt", text: "Ton weg, Bild eingefroren, Verzögerung – aufschreiben, solange man es noch weiß.", stufe: "anfaenger" }, + { schluessel: "unangenehme-situation-im-chat", titel: "Unangenehme Situation im Chat", text: "Was war es, wie ist es ausgegangen? Auch wenn es gut lief.", stufe: "fort" }, + { schluessel: "neue-zuschauer-aufgetaucht", titel: "Neue Zuschauer aufgetaucht", text: "Woher kamen sie? Wurde jemand begrüßt oder ging es unter?", stufe: "fort" }, + { schluessel: "ich-wusste-nicht-weiter", titel: "Ich wusste nicht weiter", text: "Stelle merken, an der es gestockt hat. Dafür gibt es Hilfe.", stufe: "anfaenger" }, + { schluessel: "zeitstempel-statt-gefuehl", titel: "Zeitstempel statt Gefuehl", text: "Die Minute notieren, nicht 'irgendwann in der Mitte'. Nur mit der Minute findet man die Stelle in der Aufzeichnung wieder.", stufe: "profi" }, + { schluessel: "chatverlauf-gesichert", titel: "Chatverlauf gesichert", text: "Vor dem Schliessen speichern. Er ist die einzige Quelle dafuer, was wirklich gesagt wurde -- und bei einem Vorfall die einzige, die zaehlt.", stufe: "profi" }, ], auswertung: [ - { schluessel: "was-hat-diesmal-getragen", titel: "Was hat diesmal getragen?", text: "Ein Ding. Nicht drei. Das eine, das man wiederholen will." }, - { schluessel: "was-war-zaeh", titel: "Was war zäh?", text: "Ehrlich sein. Die zähen Stellen sind die, an denen man wächst." }, - { schluessel: "zahlen-im-vergleich", titel: "Zahlen im Vergleich", text: "Zuschauer, Verweildauer, Kommentare – gegen das letzte Mal, nicht gegen andere." }, - { schluessel: "clips-gesichert", titel: "Clips gesichert", text: "Die guten Momente rausgeschnitten und abgelegt, solange man sie noch findet." }, - { schluessel: "eine-sache-fuer-naechstes-mal", titel: "Eine Sache für nächstes Mal", text: "Genau eine. Wer sich fünf Dinge vornimmt, macht keins davon." }, - { schluessel: "braucht-besprechung", titel: "Braucht Besprechung", text: "Etwas, das man nicht allein lösen kann – geht an die Betreuung." }, + { schluessel: "was-hat-diesmal-getragen", titel: "Was hat diesmal getragen?", text: "Ein Ding. Nicht drei. Das eine, das man wiederholen will.", stufe: "anfaenger" }, + { schluessel: "was-war-zaeh", titel: "Was war zäh?", text: "Ehrlich sein. Die zähen Stellen sind die, an denen man wächst.", stufe: "anfaenger" }, + { schluessel: "zahlen-im-vergleich", titel: "Zahlen im Vergleich", text: "Zuschauer, Verweildauer, Kommentare – gegen das letzte Mal, nicht gegen andere.", stufe: "fort" }, + { schluessel: "clips-gesichert", titel: "Clips gesichert", text: "Die guten Momente rausgeschnitten und abgelegt, solange man sie noch findet.", stufe: "fort" }, + { schluessel: "eine-sache-fuer-naechstes-mal", titel: "Eine Sache für nächstes Mal", text: "Genau eine. Wer sich fünf Dinge vornimmt, macht keins davon.", stufe: "anfaenger" }, + { schluessel: "braucht-besprechung", titel: "Braucht Besprechung", text: "Etwas, das man nicht allein lösen kann – geht an die Betreuung.", stufe: "anfaenger" }, + { schluessel: "verweildauer-gegen-die-letzten-fuenf", titel: "Verweildauer gegen die letzten fuenf", text: "Nicht gegen das letzte Mal -- ein einzelner Vergleich ist Zufall. Fuenf Sendungen zeigen eine Richtung.", stufe: "profi" }, + { schluessel: "ein-versuch-eine-aenderung", titel: "Ein Versuch, eine Aenderung", text: "Wer Titel, Uhrzeit und Aufbau zugleich aendert, weiss hinterher nicht, was gewirkt hat. Eine Sache je Sendung.", stufe: "profi" }, + { schluessel: "erkenntnis-zurueck-in-die-vorlage", titel: "Erkenntnis zurueck in die Vorlage", text: "Was sich bewaehrt hat, wird Teil des Ablaufs -- sonst muss man es sich jedes Mal neu merken.", stufe: "meister" }, ], }; @@ -183,24 +195,33 @@ export const LIVE_PUNKTE = { export const COMMUNITY_PUNKTE = { moderation: [ - { schluessel: "regeln-stehen-sichtbar", titel: "Regeln stehen sichtbar", text: "Kurz, verstaendlich, an einer Stelle, die man findet. Drei Saetze reichen." }, - { schluessel: "jemand-kann-eingreifen", titel: "Jemand kann eingreifen", text: "Waehrend des Streams ist eine zweite Person mit Rechten da -- oder es ist klar, dass keine da ist." }, - { schluessel: "wortfilter-eingerichtet", titel: "Wortfilter eingerichtet", text: "Die offensichtlichen Sachen automatisch weg, damit man sich um den Rest kuemmern kann." }, - { schluessel: "was-passiert-bei-einem-verstoss", titel: "Was passiert bei einem Verstoss?", text: "Verwarnen, stummschalten, sperren -- vorher entscheiden, nicht im Moment." }, - { schluessel: "umgang-mit-minderjaehrigen", titel: "Umgang mit Minderjaehrigen", text: "Wie erkennt man sie, und was gilt dann? Das ist keine Ermessensfrage." }, + { schluessel: "regeln-stehen-sichtbar", titel: "Regeln stehen sichtbar", text: "Kurz, verstaendlich, an einer Stelle, die man findet. Drei Saetze reichen.", stufe: "anfaenger" }, + { schluessel: "jemand-kann-eingreifen", titel: "Jemand kann eingreifen", text: "Waehrend des Streams ist eine zweite Person mit Rechten da -- oder es ist klar, dass keine da ist.", stufe: "anfaenger" }, + { schluessel: "wortfilter-eingerichtet", titel: "Wortfilter eingerichtet", text: "Die offensichtlichen Sachen automatisch weg, damit man sich um den Rest kuemmern kann.", stufe: "fort" }, + { schluessel: "was-passiert-bei-einem-verstoss", titel: "Was passiert bei einem Verstoss?", text: "Verwarnen, stummschalten, sperren -- vorher entscheiden, nicht im Moment.", stufe: "fort" }, + { schluessel: "umgang-mit-minderjaehrigen", titel: "Umgang mit Minderjaehrigen", text: "Wie erkennt man sie, und was gilt dann? Das ist keine Ermessensfrage.", stufe: "anfaenger" }, + { schluessel: "eskalationsleiter-steht-schriftlich", titel: "Eskalationsleiter steht schriftlich", text: "Vier Stufen, in dieser Reihenfolge: ansprechen, Nachricht loeschen, kurze Auszeit, Sperre. Wer sie erst im Moment festlegt, entscheidet ungleich -- und Ungleichbehandlung ist das, was Communitys spaltet.", stufe: "profi" }, + { schluessel: "automatikfilter-stufe-begruendet", titel: "Automatikfilter: Stufe gewaehlt und begruendet", text: "Die Stufe des automatischen Filters ist eine Abwaegung, keine Voreinstellung: zu scharf loescht Harmloses, zu lasch laesst durch. Die Wahl gehoert aufgeschrieben.", stufe: "profi" }, + { schluessel: "wer-eskaliert-an-wen", titel: "Wer eskaliert an wen", text: "Ab wann entscheidet die Moderation nicht mehr selbst? Bei Bedrohung, Rechtsverstoss oder Unsicherheit geht es weiter -- und es muss klar sein, an wen.", stufe: "profi" }, + { schluessel: "moderatoren-eingewiesen-nicht-nur-ernannt", titel: "Moderatoren eingewiesen, nicht nur ernannt", text: "Rechte vergeben ist der kleinere Teil. Dazu gehoeren: die Regeln schriftlich, die Eskalationsleiter, die Werkzeuge einmal gezeigt.", stufe: "meister" }, + { schluessel: "ernstfall-einmal-geprobt", titel: "Ernstfall einmal geprobt", text: "Einmal durchspielen, wer was tut, wenn es kippt. Im Ernstfall zum ersten Mal darueber nachzudenken ist zu spaet.", stufe: "meister" }, ], aktion: [ - { schluessel: "neue-begruessen", titel: "Neue begruessen", text: "Wer zum ersten Mal da ist, wird angesprochen. Kostet zwei Sekunden und entscheidet, ob jemand bleibt." }, - { schluessel: "stammleute-erkennen", titel: "Stammleute erkennen", text: "Namen merken oder notieren. Wiedererkannt zu werden ist der halbe Grund wiederzukommen." }, - { schluessel: "etwas-geben-das-nur-hier-gibt", titel: "Etwas geben, das nur hier gibt", text: "Ein Insider, ein Ritual, ein Spitzname. Community entsteht aus Gemeinsamem." }, - { schluessel: "ausserhalb-des-streams-antworten", titel: "Ausserhalb des Streams antworten", text: "Kommentare und Nachrichten -- die Community lebt auch zwischen den Sendungen." }, + { schluessel: "neue-begruessen", titel: "Neue begruessen", text: "Wer zum ersten Mal da ist, wird angesprochen. Kostet zwei Sekunden und entscheidet, ob jemand bleibt.", stufe: "anfaenger" }, + { schluessel: "stammleute-erkennen", titel: "Stammleute erkennen", text: "Namen merken oder notieren. Wiedererkannt zu werden ist der halbe Grund wiederzukommen.", stufe: "fort" }, + { schluessel: "etwas-geben-das-nur-hier-gibt", titel: "Etwas geben, das nur hier gibt", text: "Ein Insider, ein Ritual, ein Spitzname. Community entsteht aus Gemeinsamem.", stufe: "fort" }, + { schluessel: "ausserhalb-des-streams-antworten", titel: "Ausserhalb des Streams antworten", text: "Kommentare und Nachrichten -- die Community lebt auch zwischen den Sendungen.", stufe: "fort" }, + { schluessel: "wiederkehrende-rubrik-mit-festem-termin", titel: "Wiederkehrende Rubrik mit festem Termin", text: "Etwas, das immer am selben Tag stattfindet. Ein Termin, auf den man sich freuen kann, bindet staerker als guter Einzelinhalt.", stufe: "profi" }, + { schluessel: "uebergabe-an-einen-zweiten-geregelt", titel: "Uebergabe an einen Zweiten geregelt", text: "Was passiert mit der Community, wenn man zwei Wochen ausfaellt? Wer nicht ersetzbar ist, kann nicht krank werden.", stufe: "meister" }, ], konflikt: [ - { schluessel: "ruhig-bleiben-und-nicht-oeffentlich-stre", titel: "Ruhig bleiben und nicht oeffentlich streiten", text: "Im Chat gewinnt niemand. Kurz ansagen, dann privat klaeren." }, - { schluessel: "was-ist-genau-passiert", titel: "Was ist genau passiert?", text: "Zeitpunkt, Beteiligte, Wortlaut. Ohne das ist jede Entscheidung angreifbar." }, - { schluessel: "beweise-sichern", titel: "Beweise sichern", text: "Bildschirmfoto oder Ausschnitt, solange es noch da ist. Chats verschwinden." }, - { schluessel: "betreuung-einbeziehen", titel: "Betreuung einbeziehen", text: "Bei allem, was groesser ist als ein blöder Kommentar. Dafuer ist sie da." }, - { schluessel: "danach-was-hat-gefehlt", titel: "Danach: was hat gefehlt?", text: "Regel unklar, niemand zum Eingreifen da, zu spaet gemerkt -- daraus wird der naechste Punkt oben." }, + { schluessel: "ruhig-bleiben-und-nicht-oeffentlich-stre", titel: "Ruhig bleiben und nicht oeffentlich streiten", text: "Im Chat gewinnt niemand. Kurz ansagen, dann privat klaeren.", stufe: "anfaenger" }, + { schluessel: "was-ist-genau-passiert", titel: "Was ist genau passiert?", text: "Zeitpunkt, Beteiligte, Wortlaut. Ohne das ist jede Entscheidung angreifbar.", stufe: "anfaenger" }, + { schluessel: "beweise-sichern", titel: "Beweise sichern", text: "Bildschirmfoto oder Ausschnitt, solange es noch da ist. Chats verschwinden.", stufe: "fort" }, + { schluessel: "betreuung-einbeziehen", titel: "Betreuung einbeziehen", text: "Bei allem, was groesser ist als ein blöder Kommentar. Dafuer ist sie da.", stufe: "anfaenger" }, + { schluessel: "danach-was-hat-gefehlt", titel: "Danach: was hat gefehlt?", text: "Regel unklar, niemand zum Eingreifen da, zu spaet gemerkt -- daraus wird der naechste Punkt oben.", stufe: "fort" }, + { schluessel: "entscheidung-dokumentiert", titel: "Entscheidung dokumentiert, nicht nur getroffen", text: "Wer, wann, warum, welche Stufe. Beim zweiten Mal mit derselben Person ist das der Unterschied zwischen 'wir haben da was' und 'ich glaube'.", stufe: "profi" }, + { schluessel: "regel-nachgezogen", titel: "Regel nachgezogen, damit es nicht wiederkommt", text: "Ein Vorfall, der von keiner Regel gedeckt war, ist eine Luecke -- kein Einzelfall. Die Regel wird ergaenzt, nicht der Fall vergessen.", stufe: "meister" }, ], }; @@ -215,22 +236,29 @@ export const COMMUNITY_PUNKTE = { export const TECHNIK_PUNKTE = { setup: [ - { schluessel: "mikrofon-richtig-eingestellt", titel: "Mikrofon richtig eingestellt", text: "Nicht uebersteuert, nicht zu leise, kein Rauschen. Einmal aufnehmen und anhoeren." }, - { schluessel: "kamera-scharf-und-gut-belichtet", titel: "Kamera scharf und gut belichtet", text: "Gesicht heller als der Hintergrund. Automatik oft abschalten -- sie pumpt." }, - { schluessel: "szenen-im-streaming-programm-angelegt", titel: "Szenen im Streaming-Programm angelegt", text: "Start, Vollbild, Pause, Ende. Wer waehrend der Sendung baut, sendet Chaos." }, - { schluessel: "bitrate-zur-leitung-passend", titel: "Bitrate zur Leitung passend", text: "Lieber stabil und etwas weicher als scharf mit Aussetzern." }, - { schluessel: "alles-einmal-komplett-getestet", titel: "Alles einmal komplett getestet", text: "Eine Probesendung von fuenf Minuten, aufgezeichnet und angesehen." }, + { schluessel: "mikrofon-richtig-eingestellt", titel: "Mikrofon richtig eingestellt", text: "Nicht uebersteuert, nicht zu leise, kein Rauschen. Einmal aufnehmen und anhoeren.", stufe: "anfaenger" }, + { schluessel: "kamera-scharf-und-gut-belichtet", titel: "Kamera scharf und gut belichtet", text: "Gesicht heller als der Hintergrund. Automatik oft abschalten -- sie pumpt.", stufe: "anfaenger" }, + { schluessel: "szenen-im-streaming-programm-angelegt", titel: "Szenen im Streaming-Programm angelegt", text: "Start, Vollbild, Pause, Ende. Wer waehrend der Sendung baut, sendet Chaos.", stufe: "fort" }, + { schluessel: "bitrate-zur-leitung-passend", titel: "Bitrate zur Leitung passend", text: "Lieber stabil und etwas weicher als scharf mit Aussetzern.", stufe: "fort" }, + { schluessel: "alles-einmal-komplett-getestet", titel: "Alles einmal komplett getestet", text: "Eine Probesendung von fuenf Minuten, aufgezeichnet und angesehen.", stufe: "anfaenger" }, + { schluessel: "tonfilter-in-der-richtigen-reihenfolge", titel: "Tonfilter in der richtigen Reihenfolge", text: "Erst Rauschunterdrueckung, dann Kompressor, dann Rauschsperre. Die Reihenfolge ist nicht beliebig: Ein Kompressor vor der Rauschunterdrueckung hebt das Rauschen mit an.", stufe: "profi" }, + { schluessel: "hardware-encoder-statt-prozessor", titel: "Hardware-Encoder statt Prozessor", text: "Wenn die Grafikkarte einen eigenen Encoder hat, uebernimmt der das Kodieren -- der Prozessor bleibt frei fuer alles andere. Das ist der groesste Einzelgewinn an Stabilitaet.", stufe: "profi" }, + { schluessel: "szenen-und-filter-gesichert", titel: "Szenen und Filter gesichert", text: "Die ganze Einrichtung als Sammlung exportiert und abgelegt. Nach einem Rechnerwechsel ist das der Unterschied zwischen zehn Minuten und einem Abend.", stufe: "meister" }, ], problem: [ - { schluessel: "ton-weg-oder-verzerrt", titel: "Ton weg oder verzerrt", text: "Wann genau, welches Geraet, was lief gleichzeitig? Ohne das findet es niemand." }, - { schluessel: "bild-ruckelt-oder-friert-ein", titel: "Bild ruckelt oder friert ein", text: "Auslastung, Leitung, Aufloesung -- eins nach dem anderen ausschliessen." }, - { schluessel: "stream-bricht-ab", titel: "Stream bricht ab", text: "Zeitpunkt notieren und im Protokoll des Programms nachsehen." }, - { schluessel: "ton-und-bild-laufen-auseinander", titel: "Ton und Bild laufen auseinander", text: "Meist ein Puffer. Wann faellt es auf, sofort oder erst spaeter?" }, + { schluessel: "ton-weg-oder-verzerrt", titel: "Ton weg oder verzerrt", text: "Wann genau, welches Geraet, was lief gleichzeitig? Ohne das findet es niemand.", stufe: "anfaenger" }, + { schluessel: "bild-ruckelt-oder-friert-ein", titel: "Bild ruckelt oder friert ein", text: "Auslastung, Leitung, Aufloesung -- eins nach dem anderen ausschliessen.", stufe: "anfaenger" }, + { schluessel: "stream-bricht-ab", titel: "Stream bricht ab", text: "Zeitpunkt notieren und im Protokoll des Programms nachsehen.", stufe: "fort" }, + { schluessel: "ton-und-bild-laufen-auseinander", titel: "Ton und Bild laufen auseinander", text: "Meist ein Puffer. Wann faellt es auf, sofort oder erst spaeter?", stufe: "fort" }, + { schluessel: "verworfene-bilder-abgelesen", titel: "Verworfene Bilder abgelesen, nicht geraten", text: "Das Programm zeigt, ob Bilder wegen der Leitung oder wegen des Kodierens verloren gehen. Das sind zwei verschiedene Fehler mit zwei verschiedenen Loesungen.", stufe: "profi" }, + { schluessel: "ausfall-mit-datum-festgehalten", titel: "Ausfall mit Datum festgehalten", text: "Jeder Ausfall bekommt einen Eintrag. Erst die Liste zeigt, ob es dasselbe Problem ist oder drei verschiedene.", stufe: "meister" }, ], loesung: [ - { schluessel: "was-hat-es-behoben", titel: "Was hat es behoben?", text: "Genau die eine Aenderung aufschreiben, nicht alles was probiert wurde." }, - { schluessel: "kommt-es-wieder", titel: "Kommt es wieder?", text: "Beim naechsten Mal nachsehen. Einmal weg ist nicht geloest." }, - { schluessel: "einstellung-gesichert", titel: "Einstellung gesichert", text: "Damit sie nach einem Update nicht wieder weg ist." }, + { schluessel: "was-hat-es-behoben", titel: "Was hat es behoben?", text: "Genau die eine Aenderung aufschreiben, nicht alles was probiert wurde.", stufe: "anfaenger" }, + { schluessel: "kommt-es-wieder", titel: "Kommt es wieder?", text: "Beim naechsten Mal nachsehen. Einmal weg ist nicht geloest.", stufe: "fort" }, + { schluessel: "einstellung-gesichert", titel: "Einstellung gesichert", text: "Damit sie nach einem Update nicht wieder weg ist.", stufe: "fort" }, + { schluessel: "genau-eine-aenderung-je-versuch", titel: "Genau eine Aenderung je Versuch", text: "Wer drei Dinge gleichzeitig aendert und es geht wieder, weiss nicht warum -- und beim naechsten Mal steht man wieder am Anfang.", stufe: "profi" }, + { schluessel: "loesung-als-anleitung-abgelegt", titel: "Loesung als Anleitung abgelegt", text: "So aufgeschrieben, dass jemand anderes sie nachvollziehen kann. Eine Loesung im Kopf einer Person ist keine Loesung des Teams.", stufe: "meister" }, ], }; export const CALL_LEITFAEDEN = [ diff --git a/workspace/assets/css/start.css b/workspace/assets/css/start.css index 5db2b224..7bfe5687 100644 --- a/workspace/assets/css/start.css +++ b/workspace/assets/css/start.css @@ -6859,3 +6859,120 @@ body.start .k-leiste .feldschild::after { color: transparent; } } + +/* ===================================================================== + DIE STUFENLEITER (screen7, 09.09.2026) + + Filipe: "ich will dass es in diesen kategorien ... kategorien gibt + wie jetzt, aber für anfänger, fortgeschrittene, profis .... und dan + will ich dass du das perfekt alles aufbaust ... komplett + profissionell und krasser." + + VIER STUFEN, VIER FARBEN -- aber die Farben sind nicht ausgesucht, + sondern geliehen: Es sind dieselben vier, die auf der Übersicht + schon "offen / dringend / läuft / erledigt" tragen. Wer die eine + Seite kennt, liest die andere ohne Legende. Eine fünfte Farbfamilie + hätte niemandem geholfen. + + Anfänger Babyblau — das Ruhige, der Anfang + Fortgeschritten Lila — in Bewegung + Profi Bernstein — es wird gemessen + Meister Grün — es läuft auch ohne dich + + AUFSTEIGEND HELLER, NICHT LAUTER. Die Stufen sind eine Leiter, keine + Warnstufen -- "Meister" ist kein Alarm. Deshalb tragen alle vier + dieselbe Deckkraft; nur der Farbton wechselt. Wer eine Stufe wählt, + sieht sie kräftig, die anderen bleiben still. + + DER GEWÄHLTE KNOPF IST GEDRÜCKT, NICHT NUR GEFÄRBT: eingelassener + Schatten statt Erhebung. Auf einem Farbfeld allein könnte man + ("welcher ist jetzt an?") raten -- an einer Vertiefung nicht. + ===================================================================== */ +.stufenleiter { + display: flex; flex-wrap: wrap; gap: 8px; + margin: 2px 0 14px; +} +.stufenleiter__knopf { + --sf: var(--akzent); + display: inline-flex; align-items: baseline; gap: 8px; + padding: 7px 13px; + border: 0; + clip-path: polygon(8px 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%, 0 8px); + background: + linear-gradient(150deg, color-mix(in srgb, var(--sf) 13%, transparent), transparent 62%), + linear-gradient(180deg, rgba(19, 26, 38, .92), rgba(10, 14, 22, .95)); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, .07), + inset 2px 0 0 color-mix(in srgb, var(--sf) 55%, transparent); + color: var(--text-leise); + font: inherit; font-size: .8rem; font-weight: 600; + cursor: pointer; + transition: color var(--tempo), box-shadow var(--tempo), background var(--tempo); +} +.stufenleiter__knopf[data-stufe="alle"] { --sf: #9fb3c8; } +.stufenleiter__knopf[data-stufe="anfaenger"] { --sf: #7ec8f2; } +.stufenleiter__knopf[data-stufe="fort"] { --sf: #a78bfa; } +.stufenleiter__knopf[data-stufe="profi"] { --sf: #e8a94e; } +.stufenleiter__knopf[data-stufe="meister"] { --sf: #5fc99a; } + +.stufenleiter__knopf:hover { + color: var(--text); + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, .11), + inset 3px 0 0 var(--sf); +} +/* Gewählt: die Fläche trägt die Farbe, und der Knopf sitzt tiefer. */ +.stufenleiter__knopf[aria-pressed="true"] { + color: color-mix(in srgb, var(--sf) 80%, #ffffff); + background: + linear-gradient(150deg, color-mix(in srgb, var(--sf) 26%, transparent), transparent 70%), + linear-gradient(180deg, rgba(12, 17, 26, .96), rgba(7, 10, 17, .97)); + box-shadow: + inset 0 2px 5px -2px rgba(0, 0, 0, .9), + inset 3px 0 0 var(--sf); +} +.stufenleiter__zahl { + font-size: .72rem; font-variant-numeric: tabular-nums; + color: var(--text-still); +} +.stufenleiter__knopf[aria-pressed="true"] .stufenleiter__zahl { + color: color-mix(in srgb, var(--sf) 55%, #cfd9e6); +} +.stufenleiter__hilfe { + margin: -8px 0 14px; + font-size: .82rem; color: var(--text-leise); + max-width: 68ch; +} + +/* Die Könnensstufe am einzelnen Punkt -- klein, damit sie den Titel + nicht überstimmt. Sie ist eine Einordnung, keine Überschrift. + + Sie heißt `__koennen` und nicht `__stufe`: Letzteres ist hier schon + vergeben und trägt den BEARBEITUNGSstand (Offen / Passt so / + Verbessern). Im ersten Anlauf hatte ich den Namen ein zweites Mal + benutzt -- gemessen standen danach 66 Marken an 33 Punkten. */ +.fest-punkt__koennen { + --sf: #9fb3c8; + display: inline-block; margin-top: 6px; + padding: 2px 8px; + /* 0,72 rem = 11,52 px. Mit 0,66 waeren es 10,56 gewesen, und + pruef-css-klassen hat es sofort gemeldet: 44 Stellen unter 11,5 px + statt der Grundlinie 43. Eine Grundlinie, die man beim Hinzufuegen + still ueberschreitet, ist keine. */ + font-size: .72rem; font-weight: 700; + letter-spacing: .07em; text-transform: uppercase; + color: color-mix(in srgb, var(--sf) 78%, #ffffff); + background: color-mix(in srgb, var(--sf) 13%, transparent); + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--sf) 34%, transparent); + clip-path: polygon(5px 0, 100% 0, 100% calc(100% - 5px), calc(100% - 5px) 100%, 0 100%, 0 5px); +} +.fest-punkt__koennen[data-stufe="anfaenger"] { --sf: #7ec8f2; } +.fest-punkt__koennen[data-stufe="fort"] { --sf: #a78bfa; } +.fest-punkt__koennen[data-stufe="profi"] { --sf: #e8a94e; } +.fest-punkt__koennen[data-stufe="meister"] { --sf: #5fc99a; } + +.fest-gruppe__leer { + margin: 4px 0 0; padding: 10px 12px; + font-size: .85rem; color: var(--text-still); + border: 1px dashed rgba(150, 186, 220, .22); +} diff --git a/workspace/assets/js/checkliste.js b/workspace/assets/js/checkliste.js index 87a24fa9..e9546b3d 100644 --- a/workspace/assets/js/checkliste.js +++ b/workspace/assets/js/checkliste.js @@ -44,6 +44,45 @@ auf den ersten. */ const gewaehlt = {}; + /* ===================================================================== + DIE VIER KÖNNENSSTUFEN (09.09.2026, screen7) + + Filipe: "ich will dass es in diesen kategorien ... kategorien gibt + wie jetzt, aber für anfänger, fortgeschrittene, profis .... falls + es noch eine kategorie gibt füge ruhig hinzu." + + Die vierte ist dazugekommen und sie ist nicht ausgedacht: In den + gängigen Kompetenzmodellen (Dreyfus) folgt auf "kompetent" noch + eine Stufe, auf der es nicht mehr um das eigene Können geht, + sondern darum, dass es OHNE einen weiterläuft -- Vorlagen, + eingewiesene Vertretung, abgelegte Lösungen. Genau daran hängen + hier die elf Punkte der obersten Stufe. + + WARUM DIE STUFE AM PUNKT HÄNGT UND NICHT AN DER GRUPPE: Eine + Gruppe ist ein ABLAUF ("Vor der Sendung"), eine Stufe ist ein + KÖNNEN. Wer sie zu Gruppen machte, hätte zwölf Abschnitte statt + drei und müsste dieselbe Frage viermal stellen. So bleibt der + Ablauf die Gliederung, und die Stufe ist ein Filter darüber. + + DIE VORGABE IST "ALLE". Ein Filter, der beim Öffnen schon etwas + versteckt, lässt einen Punkte suchen, die man gestern noch + gesehen hat. Wer filtert, hat es selbst getan und weiß es. */ + const STUFEN_LEITER = [ + { schluessel: '', name: 'Alle' }, + { schluessel: 'anfaenger', name: 'Anfänger', + hilfe: 'Was von Anfang an sitzen muss. Ohne diese Punkte hilft alles Weitere nichts.' }, + { schluessel: 'fort', name: 'Fortgeschritten', + hilfe: 'Für alle, die regelmäßig senden. Hier entsteht Routine statt Zufall.' }, + { schluessel: 'profi', name: 'Profi', + hilfe: 'Gemessen statt geschätzt: konkrete Werte, Belege, ein Versuch nach dem anderen.' }, + { schluessel: 'meister', name: 'Meister', + hilfe: 'Was auch ohne dich weiterläuft — Vorlagen, Vertretung, abgelegte Lösungen.' }, + ]; + + /* Welche Stufe gerade gefiltert ist, je Bereich. Wie die + Klappzustände: Es soll beim Neuzeichnen nicht zurückspringen. */ + const stufenFilter = {}; + window.checkliste = async function (behaelter, bereich) { if (!behaelter) return; let daten; @@ -111,6 +150,42 @@ block.append(bilanz); } + /* ---- Die Stufenleiste ---- + Sie steht ZWISCHEN Bilanz und Gruppen: erst was los ist, dann + womit man es eingrenzt, dann die Sache selbst. */ + const gefiltert = stufenFilter[bereich] || ''; + if (alle.some((p) => p.stufe)) { + const leiter = el('div', 'stufenleiter'); + leiter.setAttribute('role', 'group'); + leiter.setAttribute('aria-label', 'Nach Könnensstufe filtern'); + for (const st of STUFEN_LEITER) { + const n = st.schluessel + ? alle.filter((p) => p.stufe === st.schluessel).length + : alle.length; + /* EINE STUFE OHNE PUNKTE BEKOMMT KEINEN KNOPF. Ein Filter, der + auf eine leere Liste führt, sieht aus wie ein Fehler. */ + if (!n) continue; + const b = el('button', 'stufenleiter__knopf'); + b.type = 'button'; + b.dataset.stufe = st.schluessel || 'alle'; + b.setAttribute('aria-pressed', String(gefiltert === st.schluessel)); + if (st.hilfe) b.title = st.hilfe; + b.append(el('span', 'stufenleiter__name', st.name)); + b.append(el('span', 'stufenleiter__zahl', String(n))); + b.addEventListener('click', () => { + stufenFilter[bereich] = gefiltert === st.schluessel ? '' : st.schluessel; + window.checkliste(behaelter, bereich); + }); + leiter.append(b); + } + block.append(leiter); + /* Der Satz zur gewählten Stufe steht DA, nicht nur im Titel: Ein + Hinweis, den man nur mit der Maus findet, gibt es auf dem Handy + nicht. */ + const erklaerung = STUFEN_LEITER.find((x) => x.schluessel === gefiltert)?.hilfe; + if (erklaerung) block.append(el('p', 'stufenleiter__hilfe', erklaerung)); + } + /* ---- Die Gruppen ---- */ const aufgeklappt = standLesen(bereich); const markierte = []; /* Gruppen mit etwas zum Verbessern */ @@ -133,7 +208,10 @@ pfeil.setAttribute('aria-hidden', 'true'); gk.append(pfeil); gk.append(el('h3', 'fest-gruppe__name', g.name)); - gk.append(el('span', 'fest-gruppe__zahl', String(g.punkte.length))); + /* Die Zahl zeigt, was der Filter uebriglaesst -- sonst stuende + "8" an einer Gruppe, in der drei Punkte sichtbar sind. */ + gk.append(el('span', 'fest-gruppe__zahl', String( + (stufenFilter[bereich] ? g.punkte.filter((p) => p.stufe === stufenFilter[bereich]) : g.punkte).length))); /* Das Merkzeichen am Gruppenkopf ist der Grund, warum zugeklappte Gruppen überhaupt vertretbar sind: Ohne es wäre eine Markierung @@ -150,9 +228,19 @@ if (g.text) koerper.append(el('p', 'fest-gruppe__text', g.text)); const liste = el('div', 'fest-punkte'); - for (const p of g.punkte) { + const sichtbar = gefiltert + ? g.punkte.filter((p) => p.stufe === gefiltert) + : g.punkte; + for (const p of sichtbar) { liste.append(punktBauen(p, daten, bereich, behaelter)); } + /* Eine Gruppe, in der der Filter nichts uebrig laesst, sagt das -- + statt leer dazustehen. Ein leerer Kasten liest sich wie ein + Fehler, ein Satz wie eine Antwort. */ + if (!sichtbar.length) { + liste.append(el('p', 'fest-gruppe__leer', + 'Auf dieser Stufe steht hier nichts an.')); + } koerper.append(liste); abschnitt.append(koerper); @@ -261,6 +349,24 @@ } if (p.text) links.append(el('p', 'fest-punkt__beschreibung', p.text)); if (p.format) links.append(el('span', 'fest-punkt__marke', p.format)); + /* Die Koennensstufe steht AM PUNKT, nicht nur im Filter. Sonst + weiss man beim Blaettern durch "Alle" nicht, warum ein Punkt + schwerer aussieht als der davor. */ + if (p.stufe) { + const name = { anfaenger: 'Anfänger', fort: 'Fortgeschritten', + profi: 'Profi', meister: 'Meister' }[p.stufe] || p.stufe; + /* `__koennen`, NICHT `__stufe`. Den Namen `fest-punkt__stufe` gibt + es hier laengst -- er traegt den BEARBEITUNGSstand (Offen / + Passt so / Verbessern). Im ersten Anlauf hatte ich ihn ein + zweites Mal vergeben; gemessen standen danach 66 Marken an 33 + Punkten, und mein neues CSS faerbte auch den alten Behaelter + mit. Zwei verschiedene Dinge unter einem Namen ist derselbe + Fehler wie zwei Regeln fuer dieselbe Sache, nur eine Ebene + frueher. */ + const m = el('span', 'fest-punkt__koennen', name); + m.dataset.stufe = p.stufe; + links.append(m); + } kopf.append(links); /* Die Marke rechts -- immer sichtbar, auch für den Creator, auch diff --git a/workspace/aufgaben.html b/workspace/aufgaben.html index 31f670cc..97f749c5 100644 --- a/workspace/aufgaben.html +++ b/workspace/aufgaben.html @@ -14,10 +14,10 @@ - - - - + + + + @@ -217,10 +217,10 @@ - - - - - + + + + + diff --git a/workspace/automation.html b/workspace/automation.html index 64408137..ec2fb7f9 100644 --- a/workspace/automation.html +++ b/workspace/automation.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -140,10 +140,10 @@ - - - - - + + + + + diff --git a/workspace/bereich.html b/workspace/bereich.html index ed7a31ea..6fabcc25 100644 --- a/workspace/bereich.html +++ b/workspace/bereich.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -149,14 +149,14 @@ - - - - - - - - - + + + + + + + + + diff --git a/workspace/calls.html b/workspace/calls.html index 38ae21a5..e5eec3d8 100644 --- a/workspace/calls.html +++ b/workspace/calls.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -82,11 +82,11 @@ - - - - - - + + + + + + diff --git a/workspace/chat.html b/workspace/chat.html index 62a3c59d..1c2f173d 100644 --- a/workspace/chat.html +++ b/workspace/chat.html @@ -14,17 +14,17 @@ - - + + - - - + + + @@ -160,10 +160,10 @@ - - - - - + + + + + diff --git a/workspace/content.html b/workspace/content.html index 2c32aff8..26e90347 100644 --- a/workspace/content.html +++ b/workspace/content.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -172,12 +172,12 @@ - - - - - - - + + + + + + + diff --git a/workspace/dateien.html b/workspace/dateien.html index 76f3542e..f740504a 100644 --- a/workspace/dateien.html +++ b/workspace/dateien.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -101,10 +101,10 @@ - - - - - + + + + + diff --git a/workspace/index.html b/workspace/index.html index 55513bbc..463fd1ea 100644 --- a/workspace/index.html +++ b/workspace/index.html @@ -32,7 +32,7 @@ - + @@ -401,6 +401,6 @@ - + diff --git a/workspace/kalender.html b/workspace/kalender.html index 0e26d8b5..88c624fa 100644 --- a/workspace/kalender.html +++ b/workspace/kalender.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -340,11 +340,11 @@ - - - - - - + + + + + + diff --git a/workspace/leistung.html b/workspace/leistung.html index 4bb58038..c6e6fc53 100644 --- a/workspace/leistung.html +++ b/workspace/leistung.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -217,10 +217,10 @@ - - - - - + + + + + diff --git a/workspace/personen.html b/workspace/personen.html index cd2e3aef..1071f064 100644 --- a/workspace/personen.html +++ b/workspace/personen.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -324,10 +324,10 @@ - - - - - + + + + + diff --git a/workspace/profil.html b/workspace/profil.html index c24cf1de..abb0b9a5 100644 --- a/workspace/profil.html +++ b/workspace/profil.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -207,11 +207,11 @@ - - - - - - + + + + + + diff --git a/workspace/report.html b/workspace/report.html index 83af519c..86940ea4 100644 --- a/workspace/report.html +++ b/workspace/report.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -99,11 +99,11 @@ - - - - - - + + + + + + diff --git a/workspace/scouting.html b/workspace/scouting.html index facd4fd1..2ffe7927 100644 --- a/workspace/scouting.html +++ b/workspace/scouting.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -132,10 +132,10 @@ - - - - - + + + + + diff --git a/workspace/start.html b/workspace/start.html index 17f47fda..af0d317d 100644 --- a/workspace/start.html +++ b/workspace/start.html @@ -14,12 +14,12 @@ - - + + - - + + @@ -580,10 +580,10 @@

- - - - - + + + + + diff --git a/workspace/startcheck.html b/workspace/startcheck.html index 67096f64..5e7a5edc 100644 --- a/workspace/startcheck.html +++ b/workspace/startcheck.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -78,11 +78,11 @@ - - - - - - + + + + + + diff --git a/workspace/steckbrief.html b/workspace/steckbrief.html index 54a520b0..73e21436 100644 --- a/workspace/steckbrief.html +++ b/workspace/steckbrief.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -119,10 +119,10 @@ - - - - - + + + + + diff --git a/workspace/uebersicht.html b/workspace/uebersicht.html index 86db164a..77a8de4d 100644 --- a/workspace/uebersicht.html +++ b/workspace/uebersicht.html @@ -14,13 +14,13 @@ - - + + - - - + + + @@ -142,11 +142,11 @@ - + - - - - + + + + diff --git a/workspace/wissen.html b/workspace/wissen.html index 92d56879..f1d7bf36 100644 --- a/workspace/wissen.html +++ b/workspace/wissen.html @@ -14,11 +14,11 @@ - - - - - + + + + + @@ -183,10 +183,10 @@ - - - - - + + + + +