-
0.4.0 Stable
released this
2026-11-09 12:01:49 +00:00 | 0 commits to master since this releaseÄnderungen
- Übersicht am Rand: Eine Leiste links zeigt je Jahrgang / Stunde / Lehrkraft, ob der Abschnitt schon durchgelaufen ist, gerade zu sehen ist oder noch kommt. Bei wenigen Gruppen als mitlaufende Kästchen, bei vielen (Lehrkräfte) als Register mit Balken über den sichtbaren. Pro Ansicht (Schüler / Lehrer) in den Einstellungen ein- und ausschaltbar.
- Lehrer-Kürzel (Verwaltung → Einstellungen): Namen werden automatisch aus den Plänen gesammelt. Kürzel zuordnen, nicht mehr vorhandene Lehrkräfte entfernen, Warnung bei doppelten Kürzeln, ausblendbarer Hinweis bei neuen Lehrkräften ohne Kürzel. Import/Export als CSV/TXT, volle Namen werden zugeordnet.
- Ohne Kürzel: Kurzform des Nachnamens mit Großbuchstaben (z. B. „Must", bei Gleichstand „MusA").
- Abstände immer kompakt, Kopfabstand angeglichen.
- Verwaltung am Handy: größere Eingaben und Knöpfe, kein iOS-Zoom.
Update: Image-Tag auf
0.4.0setzen, danndocker compose pull && docker compose up -d. Einstellungen und Aushänge bleiben erhalten. Die Übersicht am Rand ist nach dem Update an; Kürzel per Import nachtragen.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.3.7 Stable
released this
2026-11-09 09:28:47 +00:00 | 1 commits to master since this releaseÄnderungen
- Lehrer nach Lehrkraft: Vertretungen stehen jetzt bei der alten und der neuen Lehrkraft (vorher nur bei der neuen). So sieht jede Lehrkraft alle sie betreffenden Stunden in ihrer eigenen Gruppe. „Einträge" zählt weiterhin jeden Eintrag nur einmal.
- Kein Wackeln mehr: Ist der Plan nur ein paar Pixel zu lang (nur Zellenabstand/Linie abgeschnitten), bleibt er stehen statt endlos hoch und runter zu scrollen. Ab 24 px Überhang wird immer gescrollt.
- Pausen bei schnellem Scrollen: Die schnelleren Tempo-Stufen warten oben/unten länger (+0,8 s bzw. +1,8 s bei max). Standard und langsamer unverändert.
Update: Image-Tag auf
0.3.7setzen, danndocker compose pull && docker compose up -d. Einstellungen und Aushänge bleiben erhalten.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.3.6 Stable
released this
2026-09-18 10:09:25 +00:00 | 2 commits to master since this releaseUpdate von 0.3.5: nur das Image-Tag in der
docker-compose.ymlauf0.3.6setzen. Keine neuen Einstellungen nötig, die Anzeige sieht danach aus wie vorher.Admin-Panel
- Einstellungen (Zahnrad oben): Scrollgeschwindigkeit und Textgröße der Tabellen, getrennt für Schüler- und Lehreransicht.
- Je 5 Stufen, dazu ein „Standard"-Knopf.
- Wird erst mit „Speichern" übernommen.
- Größere Schrift macht Ränder und Spaltenabstände automatisch etwas enger.
- Plan-Hinweise oben im Panel (unter einem Alarm-Banner): Störung, veraltet, unvollständig, unsicher, jeweils mit Details zur Fehlersuche. Beispiele: Datei fehlt, Parser-Fehlermeldung mit Quelle, neuester Tag in der Datei.
- Einheitliche Kopfzeile, Status-Anzeige „Kein Aushang".
Anzeige
- Neues Badge „Server nicht erreichbar – Anzeige evtl. veraltet":
- erscheint nach 1 min ohne Server-Antwort
- hat Vorrang vor allen anderen Hinweisen, auch im Vollbild-Aushang
- blinkt ab 15 min ruhig rot/orange
- Hinweis-Badges stehen jetzt rechts vom Trennstrich statt unter der Uhr.
- Kürzere Texte. Beide Störungsfälle heißen auf dem Bildschirm „Störung: Plan konnte nicht gelesen werden".
- Aushang-Bilder und PDF-Seiten werden vorgeladen: Die Diashow läuft bei einem Serverausfall komplett weiter. Nicht ladbare Bilder zeigen „Aushang kann nicht geladen werden" statt einer weißen Fläche.
Server / Betrieb
- Der Server prüft die
vertretungen.jsonalle 20 s. Neue Hinweise stehen im Log, Störungen als FEHLER, alles andere als WARNUNG. Behobene Hinweise werden ebenfalls geloggt. - Neue Endpunkte
/api/anzeigeund/api/status, beide nur mit Anmeldung.
Alarm-Logik unverändert gegenüber 0.3.5, erneut auf Fehlalarm getestet.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
0 downloads
- Einstellungen (Zahnrad oben): Scrollgeschwindigkeit und Textgröße der Tabellen, getrennt für Schüler- und Lehreransicht.
-
0.3.5 Stable
released this
2026-09-16 19:33:03 +00:00 | 3 commits to master since this release⚠️ Vor dem Update lesen
ADMIN_PASSWORD: "bitte-aendern"sperrt ab jetzt den Login. Wer noch das Beispiel-Passwort nutzt, vorher ein eigenes in derdocker-compose.ymlsetzen.- Neue
docker-compose.ymlübernehmen (Log-Begrenzung +LOG_LEVEL) oder die Blöcke von Hand ergänzen.
Alarm (Feueralarm / Lockdown)
- Kein Fehlalarm beim Laden: Alarm-Overlays blitzen nicht mehr auf und erscheinen auch bei abgebrochener Verbindung, fehlendem Skript oder kaputter Server-Antwort nie.
- Bestätigungsdialog vor dem Auslösen; Beenden weiterhin sofort.
- Doppeltipp schaltet den Alarm nicht mehr versehentlich zurück.
- Mehrere Geräte: Wurde der Alarm woanders geändert, wird nichts überschrieben – das Panel zeigt den echten Zustand und warnt.
- Hängende Verbindung blockiert das Alarm-Panel nicht mehr (Abbruch nach 8 s mit Hinweis).
- Das Panel gleicht Alarm und Aushang alle 4 s mit dem Server ab.
Admin-Panel
- Responsive: gut bedienbar auf Handy, Tablet und kleinen Fenstern.
- Stift- und Mülleimer-Symbole statt Text-Buttons.
- Ungespeicherte Änderungen bleiben bei abgelaufener Anmeldung und bei Änderungen von anderen Geräten erhalten (mit Hinweis).
- Hinweis, wenn ein PDF mehr als 20 Seiten hat, und wenn Dateien beim Veröffentlichen nicht übernommen wurden.
- Große Sperranzeige beim Login, solange das Standard-Passwort gesetzt ist.
Server / Betrieb
LOG_LEVEL(debug/info/warning/error, Standardwarning): keine Log-Zeile mehr pro Anfrage; Alarme und Fehlversuche bleiben sichtbar.- Log-Begrenzung in der
docker-compose.yml(max. 30 MB). - Große PDFs: nur die ersten 20 Seiten werden gerendert (kein Timeout mehr).
- Frisch hochgeladene, noch nicht veröffentlichte Dateien werden 7 Tage aufbewahrt.
- Unterstrichen im Texteditor bleibt erhalten.
- Schriften lokal im Image – keine Anfragen an Google, voll offline.
POLL_SECONDSunter 1 wird abgefangen; Version im Image korrekt gesetzt.
Anzeige
- Weniger Neuzeichnen (Uhr springt pünktlich zur Minute).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.3.4 Stable
released this
2026-09-16 09:16:21 +00:00 | 4 commits to master since this releaseMehr Platz für den Vertretungsplan.
- Legende neben dem Trennstrich: Die Legende (Entfall / Vertretung / Raumänderung) steht jetzt links auf Höhe des schwarzen Strichs unter dem Kopf, der Strich beginnt rechts daneben. Die eigene Legenden-Zeile entfällt, die Tabellen beginnen dadurch 20 px weiter oben. Gilt für Schüler- und beide Lehreransichten.
- Vollbild-Aushang unverändert: Legende und Strich werden dort weiterhin ausgeblendet.
- Credits klein und unauffällig unten links in allen Ansichten; belegt keinen Platz im Plan.
- Rein anzeigeseitig, keine neue Einstellung. Update:
docker compose pull && docker compose up -d.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.3.3 Stable
released this
2026-09-15 12:33:34 +00:00 | 5 commits to master since this releaseWeichere Übergänge beim Ein-/Ausblenden des Aushangs.
- Crossfade (320 ms) beim Ein- und Ausblenden des Aushangs im Intervall. Statt
hart zwischen Vertretungsplan und Aushang umzuschalten, wird der Aushang jetzt
sanft ein- und ausgeblendet: er liegt als Ebene über dem Plan, der Plan bleibt
darunter sichtbar, sodass ein echter Crossfade entsteht (Aushang blendet über den
Plan ein / gibt ihn beim Ausblenden wieder frei) – gilt für Seiten-Aushang
(links/rechts) wie Vollbild. - Diashow bleibt unverändert: der Wechsel zwischen mehreren Dateien innerhalb
einer Einblendung schaltet weiterhin hart um. Der Crossfade betrifft ausschließlich
das Ein-/Ausblenden des Aushangs, nicht die Diashow. - Rein anzeigeseitig, ohne neue Einstellung; der übrige Aushang-/Plan-Aufbau bleibt
gleich.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Crossfade (320 ms) beim Ein- und Ausblenden des Aushangs im Intervall. Statt
-
0.3.2 Stable
released this
2026-09-15 12:33:34 +00:00 | 6 commits to master since this releaseDiashow im Intervall sinnvoller getaktet.
- Intervall-Diashow: „Bilder pro Einblendung" statt Sekunden. Im Intervall-Modus
wird die Diashow nicht mehr nach einer festen Sekunden-Zeit weitergeschaltet
(die passte nie sauber zu den Einblende-Fenstern und führte nach dem
Wiedereinblenden zu kurzem Zucken), sondern über die Anzahl der Bilder, die
pro Einblendung durchlaufen. Die Einblende-Dauer wird gleichmäßig auf sie
aufgeteilt – immer volle Slots, kein Rest über die Pause hinweg, und jedes Bild
kommt der Reihe nach dran.- Neues Dropdown im Admin-Panel (nur im Intervall sichtbar, an Stelle des
Sekunden-Sliders, weiterhin unter „Diashow-Wechsel"). Die Auswahl zeigt die
resultierende Zeit je Bild, z. B. „3,4 sek (5 Einblendungen)". Obergrenze
skaliert linear mit der Einblende-Dauer: 10 s → 2, 300 s → 25. Das Dropdown
zeigt höchstens 10 Einträge – die kleinen (aussagekräftigen) bleiben, oben
wird ausgedünnt; der Höchstwert bleibt wählbar. - Dauerhaft bleibt unverändert (weiterhin „Diashow-Wechsel" in Sekunden).
- Neues Dropdown im Admin-Panel (nur im Intervall sichtbar, an Stelle des
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Intervall-Diashow: „Bilder pro Einblendung" statt Sekunden. Im Intervall-Modus
-
0.3.1 Stable
released this
2026-09-15 12:33:34 +00:00 | 7 commits to master since this releaseVerbesserungen am Admin-Panel (auf 0.3.0 aufbauend).
- Drag-and-Drop: Dateien können jetzt direkt auf die Upload-Zone gezogen
werden (mit optischer Hervorhebung beim Drüberziehen) – zusätzlich zum
Auswählen-Knopf. Läuft durch denselben Weg (25-MB-Limit, PDF→PNG, Ziel-Auswahl). - Überarbeiteter Text-Editor für Textmeldungen:
- Symbol-Werkzeugleiste statt Text-Knöpfen (B / I / U, Ausrichtung und
Aufzählung als Icons, „T✕" zum Formatieren-Entfernen), in Gruppen mit
vertikalen Trennstrichen. - Live-Hervorhebung der aktiven Formate: markierter Text zeigt (hellblau),
was gerade an ist – zuverlässig überselectionchange. - Schriftgröße als Auswahl mit Live-Anzeige der aktuellen Größe; bei
gemischter Markierung erscheint „?". - Textfarbe als Dropdown mit 10 Farben; der Trigger zeigt die aktuelle
Farbe als Kreis – bei mehreren Farben einen Kreis mit „?".
- Symbol-Werkzeugleiste statt Text-Knöpfen (B / I / U, Ausrichtung und
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Drag-and-Drop: Dateien können jetzt direkt auf die Upload-Zone gezogen
-
0.3.0 Stable
released this
2026-09-15 12:33:34 +00:00 | 8 commits to master since this releaseAdmin-Panel für Aushänge („Werbung") und Alarme – serverseitig, gerätübergreifend.
Admin-Panel & gemeinsamer Zustand
- Neues Admin-Panel unter
/admin(Login + Verwaltung). Die Schulleitung kann
Bilder/PDFs/Textmeldungen als Aushang auf die Aula-Anzeige schalten
(Platzierung links/rechts/vollbild, dauerhaft oder im Intervall, Diashow,
Enddatum) und die Alarme Feueralarm und Amok/Lockdown ein-/ausschalten. - Serverseitiger gemeinsamer Zustand statt Browser-
localStorage: Aushang- und
Alarmzustand liegen im Container (/data/userdata/state.json+media/) und
werden über eine kleine API geteilt (/api/state,/api/aushang,/api/notfall,
/api/upload,/api/login). Dadurch steuert die Schulleitung von einem anderen
Gerät aus, was am Aula-Display erscheint. Zustand übersteht einen Neustart. - Schulname im Kopf über
SCHULNAMEin der Compose einstellbar
(Default „Johannes-Gutenberg-Gymnasium").
Sicherheit
- Echte Anmeldung mit Zugangsdaten aus der
docker-compose.yml
(ADMIN_USER/ADMIN_PASSWORD, alternativADMIN_PASSWORD_HASH= PBKDF2;
Hash erzeugen mitserver.py --hash 'passwort'). Session-Cookie (HttpOnly,
SameSite=Strict), Ablauf überSESSION_HOURS. - Brute-Force-Schutz: Fehlversuche pro IP werden gezählt, ab
LOGIN_MAX_FAILS
greift eine ansteigende Sperre, plus feste Verzögerung; Passwortvergleich in
konstanter Zeit (kein Timing-Oracle für den Benutzernamen). - Textmeldungen werden serverseitig bereinigt (Allowlist): nur harmlose
Formatier-Tags + gefilterte Inline-Styles;script/Event-Handler/iframe/
javascript:-URLs werden entfernt. Kein Skript kann auf die Anzeige gelangen. - Server-Härtung: Socket-Timeout gegen hängende Verbindungen, Aufräumen von
Sessions/Sperr-Einträgen. (Noch kein HTTPS – im LAN Klartext; TLS später per
Reverse-Proxy davor, dann IP-Sperre aufX-Forwarded-Forumstellen.)
Uploads & PDF
- Uploads als Dateien im neuen Volume
./data/vplan-websrv-userdata
(bis 25 MB pro Datei, JPG/PNG/WebP/PDF), über/media/<id>ausgeliefert und
browser-cachebar. - PDFs werden serverseitig in Seiten-PNGs umgewandelt (
poppler-utils/
pdftoppm) – identische Darstellung in jedem Browser (kein Firefox-Toolbar/Zoom),
ermöglicht mehrseitige Aushänge. Im Vollbild werden 2 Seiten nebeneinander
gezeigt und paarweise durchgewechselt; sonst je 1 Seite. - Zuverlässiges Aufräumen: nicht mehr referenzierte Dateien werden entfernt –
auch verwaiste Dateien direkt von der Platte (mit Alters-Schutz für laufende
Uploads) sowie beim Start.
Anzeige
- Neue Aushang-Anzeige neben/über dem Plan; Textmeldungen scrollen bei
Überlänge automatisch durch (wie die Vertretungen). - Diashow-Timing gefixt: im Intervall zählt nur die sichtbare Zeit, dadurch
kommt jede Datei dran (vorher konnte eine genau in die Pause fallen). - Der Plan scrollt nach einem Vollbild-/Intervall-Aushang genau dort weiter, wo
er war (statt oben neu zu starten). - Vollbild-Feinschliff: minimaler Kopf (nur Schule + Uhr; ohne Mittel-Titel,
Trennlinie und „Plan veraltet"), heller Rand statt dunkel, „Aktualisiert" zeigt
die Aushang-Zeit, bei mehreren Seiten steht mittig klein „Aushang x / y". - Am Vertretungsplan selbst ändert sich sonst nichts: ohne veröffentlichten
Aushang und ohne Alarm ist die Anzeige identisch zu 0.2.0.
Alarme
- Feueralarm/Amok werden bewusst über das Admin-Panel geschaltet und kommen
ausschließlich aus dem Server-Zustand – so kann bei Lade-/Verbindungsproblemen
niemals versehentlich ein Alarm erscheinen.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Neues Admin-Panel unter
-
0.2.0 Stable
released this
2026-09-15 12:33:33 +00:00 | 9 commits to master since this release- Ferien-Banner („Nächste Ferien" / Sommerferien-Countdown) im Kopf komplett
entfernt (Markup + Berechnung). - Lehreransichten: die „Lehrkraft"-Spalte zeigt jetzt Lehrkraft alt→neu
(ursprüngliche → vertretende Lehrkraft), analog zur „Lehrer alt→neu"-Spalte der
Schüleransicht. - Farbkategorien Betreuung, EVA und Verlegung entfernt und in Vertretung
zusammengefasst (Legende, KlassifizierungartVon, Farbtabelle). Es bleiben nur
noch drei Farben: Entfall, Vertretung, Raumänderung. Ein etwaiger Hinweis (z. B.
„EVA") steht ohnehin im Text und wird weiterhin in der Spalte „Information"
angezeigt; die „entfällt"-Kennzeichnung bleibt unverändert.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Ferien-Banner („Nächste Ferien" / Sommerferien-Countdown) im Kopf komplett