Commit Graph
100 Commits
Author SHA1 Message Date
adminandClaude Opus 5.5 ff8bf3b2eb Organisation: Abschnitte aufklappbar mit Stand im Kopf
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 09:04:48 +01:00
adminandClaude Opus 5.5 6aee658a95 Auftragskatalog aufklappbar, Aufklapp-Köpfe leicht hinterlegt
Abschnitte (Standort/Zweck, Debug-Modus, Veyon, Personalisierung,
Einzelgerät) und Merkmal-Kategorien starten eingeklappt; die Köpfe
zeigen den aktuellen Stand, Merkmal-Suche über alle Kategorien.
Aufklapp-Köpfe seitenweit leicht in der Primärfarbe hinterlegt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 08:55:22 +01:00
adminandClaude Opus 5.5 9724b5e784 Admin: Hinweis auf den abgeleiteten Gerätenamen beim Anlegen einer Organisation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 17:33:11 +01:00
adminandClaude Opus 5.5 f736b42ae7 Admin: Organisation archivieren mit Bestätigung durch den Namen
Deaktiviert die Kunden-Konten der Organisation (benutzer.is_active), auch
laufende Sitzungen. Benötigt provisioning-server mit Migration 0076.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 17:28:33 +01:00
adminandClaude Opus 5.5 2d1b45e973 Einstieg Schritt 6: Unterrichtssteuerung (Veyon) am Standort/Zweck einschalten
Raum bleibt der Standort/Zweck (Schlüssel, Raumliste je OE). Auf der
Einstellungsseite des Standorts: Veyon einschalten (ohne Häkchen) und
Lehrergerät(e) ankreuzen; die kommen in die Gruppe "Lehrergeräte" (eine je
Organisation, Häkchen veyon_lehrer gesetzt), alle anderen dort sind
Schülergeräte. Ausschalten nimmt die Lehrergeräte aus der Gruppe. Hinweis
auf die alte Falle (Häkchen am Standort), Speichern behebt sie.
Geräteseite: "Als Lehrergerät festlegen" / "Kein Lehrergerät mehr".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:44:35 +01:00
adminandClaude Opus 5.5 fed0e9e48a Personalisierung: deutlicher Hinweis zur sofortigen Sperre, Sperrgrund beim Konto
Befund Erstkontakt 25.10.2026 (Bildschirmschoner ließ sich nicht mehr
entsperren). Benötigt provisioning-server d76fdad (gesperrt_durch_einladung).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:32:16 +01:00
adminandClaude Opus 5.5 8e2df14a5a Workspace-Assistent: Standort/Zweck als Optionsfelder, Vorauswahl neuer Standort
Befund Erstkontakt 25.10.2026: Der Workspace wurde angelegt, der neue
Standort nicht; die Auswahlliste stand unbemerkt auf "Später entscheiden".
Jetzt drei Optionsfelder mit "Neuen Standort/Zweck anlegen" vorausgewählt
und Namensfeld direkt darunter; ein eingetragener Name legt den Standort
auch ohne passende Wahl an.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:22:25 +01:00
adminandClaude Opus 5.5 3613331e8c Einstieg Schritt 5: Workspace-Assistent mit Distribution zuerst und Standort/Zweck
Assistent: 1 Distribution (Kurzcharakteristik, für Kunden Hinweis ohne
eingerichtete Installation, Debian vorerst nur Admin), 2 Name und
Standort/Zweck (bestehend, neu oder später; Namensvorschlag), 3-5 nur
Einträge der gewählten Distro (Wechsel wählt ab, mit Hinweis), 6 Prüfen.
Speichern weist im Kundenportal gleich zu, Fehler der Zuweisung stehen auf
der Workspace-Seite. Distro-Leiste und Konfliktkarten entfallen; behebt
nebenbei den Absturz der Zusammenfassung im Kundenportal (Eigentümerfeld
gibt es nur im Admin). Versionsliste und Version festhalten unter
Erweitert; Link "neuen Workspace für … erstellen" bei jedem Standort.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:10:56 +01:00
adminandClaude Opus 5.5 6e79baedf6 Einstieg Schritt 7: Einladung zur Personalisierung ohne Seitenwechsel
Geräteseite: Formular immer da; fehlt "Personalisierung möglich", kommt
das Gerät beim Senden in die Gruppe "Personalisierte Geräte" (eine je
Organisation, bei Bedarf angelegt, Merkmal aktiv). Gruppen- und
Standortseite: mit aktivem Merkmal eine Liste der Geräte mit E-Mail-Feld,
nach dem Senden zurück auf dieselbe Seite. Gefunden im Erstkontakt-Probelauf.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 15:58:51 +01:00
adminandClaude Opus 5.5 e44b1b64b8 Einstieg Schritt 4: Erste Schritte auf dem Dashboard, Navigation in Reihenfolge des Wegs, Standort/Zweck statt OE
Kunden landen nach der Anmeldung auf dem Dashboard; der Assistent
verschwindet mit dem ersten Gerät online, danach ein Hinweis auf
Standorte/Zwecke, solange es nur "Neue Geräte" gibt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 12:47:35 +01:00
adminandClaude Opus 5.5 ecb5c9b63e Einstieg Schritt 3: Medium fragt nur WLAN-Weg, Anzahl, Gültigkeit; Installation aus dem Standort
WLAN der Organisation, anderes WLAN oder Kabel; Standort/Zweck nur bei
Auswahl; Offline-Medium und Neuinstallation unter Erweitert;
Installationsprofil nur für Tuxflotte-Admins (sonst wählt der Server).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 12:44:19 +01:00
adminandClaude Opus 5.5 bb5229e05e Einstieg Schritt 2: WLAN der Organisation auf der Organisationsseite, Übernahme vom Medium
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 12:41:06 +01:00
adminandClaude Opus 5.5 3662df9e2a Einstieg Schritt 1: Art der Organisation, Ausrollstufen Vorab/Testing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 12:36:56 +01:00
adminandClaude Opus 5.5 c6861d15a9 Schlüsselbund-Hinweis gekürzt: WLANs bleiben, nur Browser-Passwörter betroffen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 11:30:41 +01:00
adminandClaude Opus 5.5 dbb39a7d6f Schlüsselbund-Hinweis: nur selbst eingegebene WLANs, Org-WLAN ausdrücklich nicht betroffen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 11:17:38 +01:00
adminandClaude Opus 5.5 84735dab5d Passwort vergessen: Hinweis zu Schlüsselbund und WLAN hervorgehoben (ADR-0041, 25.10.2026)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 11:15:38 +01:00
adminandClaude Opus 5.5 7d758fb0f2 Passwort vergessen: Konto und Gerätename aus dem QR-Code (ADR-0041, 25.10.2026)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 10:36:06 +01:00
adminandClaude Opus 5.5 c3683b0351 Passwort vergessen als öffentliche Seite (ADR-0041, 24.10.2026)
/personalisierung/vergessen ohne Gerät fragt die Adresse ab, Antwort immer
gleich, Begrenzung je IP. Kiosk-Aufruf mit Gerät und Token bleibt.
Einladungsmail, Stand-Seite und Admin-Reset verweisen auf die Seite.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 11:09:57 +02:00
adminandClaude Opus 5.5 8937c28028 Personalisierung per Einladung statt Aktivierungscode (ADR-0041, 24.10.2026)
Geräte-Info: Adressfeld (Domänenliste, nur mit Merkmal), erneut senden,
zurückziehen. Öffentlich: Einladungsseite mit Namensvorschlag, Stand-Seite
mit Selbstaktualisierung, Hinweis für den Kiosk älterer Rollen.
Code-Formular und Bestätigungsseiten entfernt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:52:15 +02:00
adminandClaude Opus 5.5 4e701cdf82 Struktur: Meldung zur Workspace-Zuweisung bei der OE
Die Distro-Ablehnung stand oben auf der Seite und wurde übersehen (Befund
Liebherr 23.10.2026). Jetzt erscheint sie im aufgeklappten Formular der
OE, die Seite springt dorthin; ebenso im Admin-Reiter. Kundenseitig zeigt
jede OE zusätzlich Gerätezahl und Distro.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 10:44:26 +02:00
adminandClaude Opus 5.5 ff7f9d314e OE-Wechsel auf die Geräteseite verlegt
Im fest ausgerichteten Aktionen-Menü klappte die Auswahlliste wieder zu,
abgeschickt wurde die alte OE (Liebherr-84, 23.10.2026). Jetzt auf der
Geräteseite (#oe), Erfolg und Distro-Ablehnung erscheinen dort. Der
Admin-Weg zeigt die Ablehnung jetzt ebenfalls an.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 10:00:45 +02:00
adminandClaude Opus 5.5 8cc98698e3 Workspace-Creator für Kunden je Organisation freischaltbar
- Freischaltung je Organisation (Portal-Migration 0010, alle bisherigen
  Organisationen = Testschulen frei), Schalter unter Admin › Organisation ›
  Organisationsdaten
- Kunden-Creator auf den Stand des Admin-Creators: Assistent mit Distro,
  Entwurf/Veröffentlichen, Webapps, Standardbrowser, Kopie, Löschen;
  gemeinsame Vorlagen _workspace_detail.html/_workspace_assistent.html
- Vorlagen von tuxflotte nur lesend, ohne fremde Nutzung; Kopie immer in
  die eigene Organisation
- Organisation › Struktur: Workspace je OE zuweisen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 07:57:07 +02:00
adminandClaude Opus 5.5 90e7b967c4 GUI-Runde 23.10.: Organisation mit sieben Reitern, Katalog auf einer Seite, Medien verwalten
- Admin › Organisation: Hostnamenkonvention und Ressourcen als aufklappbare
  Abschnitte der Organisationsdaten, Aktivierungscodes bei den
  Bereitstellungsvorlagen (mit Abgrenzung Vorlage/Workspace), Flows oben
  auf Aktivitäten; alte Adressen leiten weiter
- Katalog: Kategorien und Webapp-Vorlagen aufklappbar unter den Einträgen,
  keine vierte Navigationsebene mehr
- Kunden-Dashboard: Läufe ohne Fehler je Gerät zusammengefasst, aufklappbar
- Ausgegebene Medien: Deaktivieren und Löschen
- Geräteliste: Tooltips zu De-Provisionieren und Löschen, Löschtext ehrlich
- Inline-Skripte (Aktivitäten-Filter, Katalog-Suche) in statische Dateien:
  die CSP (script-src 'self') hatte sie blockiert

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 07:49:53 +02:00
adminandClaude Opus 5.5 65734a7ed7 Dashboard: Geräte-Ampel oben, Admin zeigt Änderungen an der Plattform
Flotten-Gesundheit als Ampel (Zahlenkacheln Handeln/Beobachten/In
Ordnung, je Gerät ein Kästchen mit Tooltip und Link aufs Protokoll,
Liste der auffälligen Geräte mit Grund), Statusfarben aus der
Dataviz-Palette, immer mit Symbol und Text. Ersetzt Textlisten und den
Ring "Gerätezustand". Admin-Dashboard: "Änderungen an der Plattform"
(Deploy, Migration, Boot-Medium, Stände vorab/stabil) statt Agent-Läufen.
Braucht provisioning-server 844faa2 mit Migration 0071.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 17:25:47 +02:00
adminandClaude Opus 5.5 bae0bd9c35 Ausgegebene Medien auf der Installationsmedium-Seite, ältere Sessions in Flows eingeklappt
Kundenseite: aufklappbarer Abschnitt "Ausgegebene Medien" mit allen
Enrollment Sessions und Status (aktuell, gültig, aufgebraucht,
abgelaufen, widerrufen). Admin-Flows: neueste Session offen, ältere
unter "Ältere Sessions" mit Zahl der noch gültigen. Kein automatisches
Ungültigmachen (Entscheidung 22.10.2026).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:57:43 +02:00
adminandClaude Opus 5.5 126ea892a4 Organisation › Aktivitäten: je Tag aufklappbar, fehlerfreie Läufe zusammengefasst, Filter
Tage (Ortszeit) als aufklappbare Abschnitte, der neueste offen.
Agent-Läufe ohne Fehler je Gerät und Tag in einer Zeile mit Zahl der
Läufe; Fehler und Installationen einzeln. Filter nach Gerät und Art
(Nur Fehler, Installationen, Agent-Läufe). Abruf 500 statt 100.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:56:01 +02:00
adminandClaude Opus 5.5 f0389f1b48 Katalog: Übersicht, Merkmale bearbeiten und Distro-Abdeckung auf einer Seite
Eine Seite "Einträge" statt drei: nach Bereich und Kategorie aufklappbar,
je Zeile Name, Key, Distro-Kennzeichen (Tooltip mit Ansible-Rolle) und
"Bearbeiten" für Merkmale und Webapp-Vorlagen. Suche und Filter "Fehlt
auf <Distro>" ersetzen die frühere Matrix. Alte Adressen leiten auf den
Katalog, die POST-Ziele bleiben.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:54:21 +02:00
adminandClaude Opus 5.5 f39ff4aa69 Installationsmedium: ohne Medium gleich Erstellen, Kontingent und Gültigkeit als Abschnitt unter Medien
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 15:27:56 +02:00
adminandClaude Opus 5.5 829dc34167 Spaltenfilter: Sortieren und Alle an/aus im Menü, Menü fest am Fenster (nicht mehr abgeschnitten)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 15:27:00 +02:00
adminandClaude Opus 5.5 416771af55 Webapps standardmäßig nur im Menü, Desktop-Symbol per Häkchen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 15:01:53 +02:00
adminandClaude Opus 5.5 40046a01be Geräte: Weg zum Ansible-Stand anzeigen (Admin-Liste, Hardware-Seite, ADR-0046)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 09:40:42 +02:00
adminandClaude Opus 5.5 e52e7f66b2 Hilfetexte OE/Gruppen an Server-Regel angleichen, Portal durchgehend mit du
- Struktur/Gruppen: OE-Kette und Gruppen sind gleichberechtigte Stimmen,
  aktiv gewinnt auch gegenüber der OE (ADR-0012, resolve_katalog_overrides)
- Anrede wie in manuals: du statt Sie, auch in den Passwort-Mails

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 19:10:48 +02:00
adminandClaude Opus 5.5 ad87f4ab5d Merge branch 'neustart-warten'
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 10:37:49 +02:00
adminandClaude Opus 5.5 bc25752af0 Personalisierung: Hinweis 'nach dem Neustart bis zu 2 Minuten warten' in Seiten und Mails
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 10:37:49 +02:00
adminandClaude Opus 5.5 e29f6df46f Merge branch 'passwort-vergessen'
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 10:30:17 +02:00
adminandClaude Opus 5.5 c4b52e2da4 Personalisierung: Seiten 'Passwort vergessen?' (Kiosk) und 'Neues Passwort' (Mail-Link); Admin-Reset ohne Änderungszwang
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 10:27:49 +02:00
adminandClaude Opus 5.5 d02184df64 Geräteseite: roter Hinweis 'Jetzt notieren' bei einmalig angezeigtem Code und Passwort
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 10:13:42 +02:00
adminandClaude Opus 5.5 1de871a721 Merge branch 'passwort-reset'
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 10:00:22 +02:00
adminandClaude Opus 5.5 25339f40cf Geräteseite: Passwort zurücksetzen für persönliche Konten (vorläufiges Passwort, einmal angezeigt)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 09:57:55 +02:00
adminandClaude Opus 5.5 7542c2135c Personalisierung: Hinweis auf Passwort-Reset entfernt (Funktion fehlt noch)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 09:46:27 +02:00
adminandClaude Opus 5.5 c2beb54330 Merge branch 'personalisierung-merkmal'
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 17:02:33 +02:00
adminandClaude Opus 5.5 b076e9959f Personalisierung Schritt 3: Konten sperren/entsperren, Meldungen des Geräts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 15:56:51 +02:00
adminandClaude Opus 5.5 1f38549c02 Personalisierung Schritt 2: Formular am Gerät, Bestätigung per Mail, Code in der Geräte-Info
Öffentliches Formular /personalisierung (Code, dann E-Mail mit
Domänenvorgabe, Anmeldename, Passwort; ?kiosk=1 zeigt Abmelden), Passwort
nur als SHA-512-crypt an anode, Bestätigungslink per mail_ausgang (GET
zeigt Knopf, erst POST bestätigt). Geräte-Info: Code erzeugen (einmalig
angezeigt), Kästchen „Bestehenden Zugang behalten“, zurückziehen, Verlauf.
Geräteliste: Spalte Personalisiert, Schuladressen sichtbar. Organisation:
E-Mail-Domänen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 15:32:08 +02:00
adminandClaude Opus 5.5 cd747e4992 Merkmal-Seiten: Kategorie-Koepfe blau, fett, 2 pt groesser
Nutzer-Wunsch 15.10.2026. In Chromium gemessen: 18 -> 20,7 px, 700,
--pico-primary; Zaehler 'aktiv: n von m' normal und gedaempft.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 14:51:00 +02:00
adminandClaude Opus 5.5 22dffa1c73 Merkmal-Seiten: Aktiv/Inaktiv-Knoepfe kompakt (wie .klein)
Nutzer-Wunsch 15.10.2026. Hoehe in Chromium gemessen: 59 -> 34 px.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 14:50:32 +02:00
adminandClaude Opus 5.5 8b5127e8d2 Merkmal-Seiten: Kategorien eingeklappt, Suche ueber alle Kategorien
Nutzer-Wunsch 15.10.2026: Gruppe/OE (Kunden- und Admin-Seite) zeigten alle
Kategorien offen, man scrollte weit. Jetzt <details> je Kategorie mit
'aktiv: n von m' im Kopf, ein Suchfeld filtert ueber alle Kategorien und
klappt Treffer auf (static/merkmal-kategorien.js); offene Kategorien
bleiben nach dem Neuladen (Aktiv/Inaktiv) offen. Verhalten in headless
Chromium geprueft.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 14:44:31 +02:00
admin 612d743b71 Merge branch 'veyon-lehrer' 2026-10-15 14:06:46 +02:00
adminandClaude Opus 5.5 51c872c24f Optionen fileserver: gemeinsame Ablage (Freigabename, Anzeigename, Schreibzugriff)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:58:05 +02:00
adminandClaude Opus 5.5 3a7d7a424b Veyon-Lehrer-Checkbox; Admin-Seiten fuer Gruppe und OE nehmen Merkmal-Optionen an
optionen_felder: veyon_lehrer (Checkbox, Entscheidung 15.10.2026).
Bisher konnte der root-Admin auf den Admin-Seiten fuer Gruppe/OE keine
Optionen setzen (Aktiv-Formular ohne Felder, Route ohne Formular) - betraf
auch Org-WLAN. Jetzt wie auf der Kundenseite: Felder im Aktiv-Formular,
parse_optionen_form, optionen an die API.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:57:21 +02:00
adminandClaude Opus 5.5 ccf7b547a7 Org-Ressourcen: Seite Organisation > Ressourcen und Admin-Reiter
Kunden-Admins pflegen Mail, Nextcloud, ownCloud, WebDAV, SMB und Web-Proxy
ihrer Organisation (Formulare aus den Typ-Definitionen des Servers, keine
Zugangsdaten), Wirkung fuer die ganze Org, OEs oder Gruppen. Unterseite
erscheint nur fuer freigeschaltete Organisationen; root pflegt immer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:02:51 +02:00
adminandClaude Opus 5.5 a104a026c0 Optionen fuer Merkmal org-wlan: SSID und Passwort
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:31:30 +02:00
adminandClaude Opus 5.5 b580d10660 Installationsmedium: Sicherheitshinweis zum WLAN-Passwort, offenes WLAN waehlbar
Hinweis laut Entscheidung vom 13.10.2026 (Roadmap Schritt 2). Dabei
behoben: Ein gespeichertes Passwort wurde bei leerem Feld immer
weiterverwendet, auch fuer ein offenes Netz, eine andere SSID oder ohne
WLAN. Jetzt verworfen bei "Offenes WLAN", leerer SSID oder neuer SSID
ohne neues Passwort.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:27:15 +02:00
adminandClaude Opus 5.5 12df7a9495 Geraete: Agent-Fassung (Pruefsumme) in Admin-Liste und Hardware-Ansicht
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:46:13 +02:00
adminandClaude Opus 5.5 b669800856 Organisationen: Kundengruppe beim Anlegen und in den Organisationsdaten waehlen
Vorauswahl Schule beim Anlegen, Spalte Kundengruppe in der Liste.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 08:50:43 +02:00
adminandClaude Opus 5.5 b5ef8e0a9a Organisationsdaten: Ausrollstufe (stabil/vorab) waehlen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 16:57:20 +02:00
adminandClaude Opus 5.5 632319aac6 Workspace-Creator: Standardbrowser je Workspace waehlen
Auswahl im Entwurf, Anzeige in der veroeffentlichten Version und in der
Wirkungsvorschau. Die Brave-Option "Als Standardbrowser festlegen" an OE
und Gruppe entfaellt dafuer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:10:30 +02:00
adminandClaude Opus 5.5 18a8cd7ea6 GUI Schritt 1: Aktionen-Menue am Fenster ausgerichtet, Reiterleiste, Konten aendern
- Aktionen-Menue in den Geraetelisten oeffnet nach oben, wenn unten kein
  Platz ist, bleibt im Fenster und wird unter 1024 px nicht mehr vom
  scrollenden Hauptbereich abgeschnitten (static/dropdown-platz.js).
- Flows-Seite nutzt dieselbe Reiterleiste wie die Organisationsseite; ihre
  eigene Kopie kannte Struktur, Diagnosezugang und Aktivitaeten nicht.
- Dashboard: "Erstes Geraet aktiv" zeigte auf /flotte (gibt es nicht),
  jetzt /geraete.
- Kundenkonten: E-Mail und Org-Admin-Zuweisung nachtraeglich aendern.
- Merkmale bearbeiten: Tabelle kompakt, Knopf nicht mehr abgeschnitten.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:55:12 +02:00
adminandClaude Opus 5.5 cc356d7c16 Hostnamenkonvention: Text an Standardpräfix tuxflotte angepasst
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:47:59 +02:00
adminandClaude Opus 5.5 6e44295c18 Sitzung an den Passwortstand binden
Das Sitzungs-JWT traegt einen Abdruck des Passwort-Hashes; jeder
Passwortwechsel (Reset per Mail, Selbstaenderung, Skript) beendet damit
alle bestehenden Sitzungen des Kontos. Die Selbstaenderung stellt der
eigenen Sitzung ein neues Cookie aus. Alte Tokens ohne Abdruck gelten
nicht mehr - nach dem Ausrollen einmalige Neuanmeldung fuer alle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:08:05 +02:00
adminandClaude Opus 5.5 8ef9c719e1 Passwort-Reset per Mail fuer Kundenkonten
Login-Seite verlinkt 'Passwort vergessen?'. Der Link in der Mail gilt
eine Stunde und nur einmal (fastapi-users-Token). Gleiche Antwort fuer
bekannte und unbekannte Adressen, Begrenzung je Adresse und IP.
Plattform-Admins (is_superuser) sind ausgenommen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:01:25 +02:00
adminandClaude Opus 5.5 7a7450c829 Mailversand ueber Ausgangstabelle (ADR-0041)
mail.py reiht Mails in mail_ausgang ein (Migration 0009), eine
Versandschleife im Dienst liefert sie per SMTP mit Anmeldung ein und
wiederholt bei Fehlern. Voreinstellung ist Trockenlauf; das Passwort
kommt als systemd-Credential. Dazu scripts/testmail.py und Tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:43:25 +02:00
adminandClaude Opus 5.5 c0d7a55dcc Admin-Geraeteliste wie Kundenliste: Aktionen-Menue, Hostname verlinkt
Auftragskatalog, Log und 'In OE verschieben' im Aktionen-Menue statt
eigener Knoepfe/Spalte; Kennung unter dem Hostnamen; kompakte Tabelle -
passt jetzt ab 1280px ins Fenster (vorher ~1560px). In beiden Listen
fuehrt der Hostname direkt zum Auftragskatalog. Lokal geprueft.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 13:32:09 +02:00
adminandClaude Opus 5.5 a029010009 Geraeteliste: Aktionen-Menue nicht mehr abgeschnitten, einheitliche Knoepfe
Nutzer-Befund 09.10.2026 (Kunden-Admin, Flotte): 'Auftragskatalog' war
deutlich groesser als 'Aktionen', und das Aktionen-Menue wurde vom
scrollenden Tabellenrahmen (GUI-Runde Punkt 1) abgeschnitten.
- Tabellen mit Aufklapp-Menue scrollen nicht im Rahmen; Menues in der
  letzten Spalte oeffnen nach links; Formulare im Menue untereinander.
- Kunden-Geraeteliste schmaler: Auftragskatalog als erster Menue-Eintrag,
  Kennung klein unter dem Hostnamen, kompakte Tabelle - passt ab 1280px
  ohne Seitenscrollen; bis 1024px scrollt der Hauptbereich.
- Admin-Geraeteliste: kleine, gleich hohe Knoepfe.
Lokal mit headless Chromium geprueft (Menue vollstaendig sichtbar,
800/1024/1280/1440/1920px).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 13:27:36 +02:00
adminandClaude Opus 5.5 5f97ba1454 Diagnosezugang-Seite: Hinweis auf Merkmal 'Diagnosezugang sperren' und Konsolensperre
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:44:43 +02:00
adminandClaude Opus 5.5 8126b019a9 Dashboards mit Ringdiagrammen (Kunden- und Admin-Seite)
Reines SVG (Geometrie in templating.ring_segmente, Makros in
_diagramme.html), kein JS. Farben nach den Dataviz-Regeln: Kategorien
in fester Reihenfolge, mit validate_palette.js gegen Pico hell/dunkel
geprueft; Statusfarben plus Symbol fuer den Geraetezustand; 'Weitere'
und Sonderfaelle grau. Legende mit Zahl und Prozent (Farbe nie allein),
Tooltip je Segment, eine einzige Kategorie als Satz statt Ring.
Hell/dunkel und 390-1920px lokal geprueft.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:40:42 +02:00
adminandClaude Opus 5.5 90698573a7 Bereitstellungsvorlagen als sortierbare Tabelle mit Bearbeiten-Seite
Sortier-/filterbare Tabelle mit Distro, Partitionierung, Nutzung;
Hinweis, wenn die Distro nicht zum Workspace passt (in Produktion bei
zwei Liebherr-Entwicklungsprofilen). Bezeichnung fuehrt zur
Bearbeiten-Seite (vorbelegtes Formular, Loeschen nur ohne Nutzung).
Backend-Feld entfaellt, die Distro kommt vom Workspace; nur globale und
eigene Workspaces zur Auswahl. Lokal mit Browser-Ablauf geprueft.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:34:57 +02:00
adminandClaude Opus 5.5 606d0858e2 Datum statt Zeitstempel ueberall, Aktivitaetenliste je Organisation
Alle Zeitstempel-Ausgaben laufen durch den Filter datum; sortierbare
Datumsspalten tragen data-sort-wert (ISO), table-tools.js sortiert danach
chronologisch statt textuell. Neuer Reiter 'Aktivitaeten' bei der
Organisation, 'Letzte Aktivitaeten' auf beiden Dashboards mit
zusammengefassten Agent-Laeufen statt Einzelereignissen. Lokal geprueft.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:30:32 +02:00
adminandClaude Opus 5.5 50f27a2e57 Aktivierungscodes-Seite: Status, Gueltigkeit, Nutzung, Deaktivieren/Loeschen
Neue Tabelle mit Bezeichnung, Status (aktiv/deaktiviert/abgelaufen),
Gueltig bis, Nutzung, Datum statt Rohzeitstempel; Anlegen mit
Bezeichnung und Gueltigkeit; Loeschen mit Bestaetigung. Neuer
Jinja-Filter datum (Ortszeit, deutsches Format), gemeinsame Bausteine
(kompakte Tabelle, Status-Marken, Inline-Aktionen), Tabellen scrollen
im eigenen Rahmen statt die Seite zu verbreitern. Lokal mit headless
Chromium geprueft (Anlegen/Deaktivieren/Loeschen, Breiten 1280-1920).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:25:39 +02:00
adminandClaude Opus 5.5 44cb50c3af GUI: Seiten nicht mehr 10px zu breit, Innenabstand am Rand, Handy-Kopfzeile
Pico setzt den Container-Innenabstand ab 576px auf 0; mit unseren groesseren
max-width-Stufen war der Container so breit wie das Fenster, der Inhalt
klebte am Rand und Picos -10px-Rand der Kopfzeilen-Liste erzeugte einen
horizontalen Scrollbalken. Jetzt fester seitlicher Innenabstand. Auf dem
Handy: E-Mail in der Kopfzeile ausgeblendet, breite Tabellen scrollen im
Hauptbereich statt die ganze Seite. Lokal mit headless Chromium bei
390/800/1280/1440/1920px geprueft (scrollWidth == clientWidth).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:20:35 +02:00
adminandClaude Opus 5.5 f3d082e47d Workspace-Einstellungen: feste weiße Schrift im geöffneten Knopf
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:07:08 +02:00
adminandClaude Opus 5.5 e118c1d977 Workspace-Einstellungen: Schrift im geöffneten Knopf lesbar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:06:41 +02:00
adminandClaude Opus 5.5 1f22c2b257 Workspace-Creator: Menüname, Katalogpflege im Katalog, Vorlage für Schulen
Hauptmenü heißt Workspace-Creator mit den Reitern Katalog und Workspaces;
der verwechselbare Reiter Vorlagen entfällt, Merkmale/Kategorien/
Webapp-Vorlagen/Distro-Abdeckung liegen als Unterseiten im Katalog.
Vorlagen zeigen „für Schulen“ bzw. „für alle“/Organisationsnamen statt
„Kundengruppe“. Aufklapp-Bereiche der Workspace-Einstellungen sehen wie
Knöpfe aus und heben sich geöffnet ab (Nutzer-Feedback 07.10.2026).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:06:11 +02:00
adminandClaude Opus 5.5 f83f4c460c ISO-Dateiname nennt den Workspace der Ziel-OE
Beim E2E-Test mit Ziel-OE gefunden: der Name zeigte den Workspace des
Installationsprofils, installiert wird aber der der Ziel-OE.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:47:04 +02:00
adminandClaude Opus 5.5 6e4caf7e95 Struktur & Workspaces für root, Ziel-OE am Installationsmedium (Schritt F)
Admin-Reiter je Organisation: OE-Baum als Karten mit Geräten/Distros,
eigenem bzw. geerbtem Workspace, Workspace zuweisen (automatisch oder
Version pinnen) und Unter-OEs anlegen; Ablehnungen der Distro-Regel
werden mit Begründung angezeigt. Reiterleiste bricht jetzt um.
Kundenseite: Struktur zeigt den Workspace je OE, Gerät verschieben zeigt
die Ablehnung statt sie zu verschlucken, Installationsmedium mit
Ziel-OE (gespeichert, Konflikt mit dem Profil verständlich gemeldet).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:12:35 +02:00
adminandClaude Opus 5.5 9dccf7dd79 Migration 0008: Ziel-OE in der Installationsmedium-Konfiguration
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:12:21 +02:00
adminandClaude Opus 5.5 e390f58bb7 Workspace-Detailseite mit Versionen, Entwurf und Verwaltung (Schritt E)
Veröffentlichte Version nur lesend, Bearbeiten legt einen Entwurf an.
Im Entwurf: Inhalt wie im Assistenten (auf der Distro nicht umgesetzte
Einträge gesperrt), Webapps aus Vorlage oder frei, Wirkungsvorschau
(+/− je Bereich, wie viele Geräte automatisch umsteigen, gepinnte,
Profile), Veröffentlichen mit Notiz, Verwerfen. Dazu Nutzung,
Versionsliste, Name/Zweck, Vorlage und Sichtbarkeit (alle, Kundengruppen,
Organisationen), Kopieren mit Vorab-Prüfung für andere Distro, Löschen
nur wenn ungenutzt mit Bestätigung.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 13:34:40 +02:00
adminandClaude Opus 5.5 b4c9ea3b00 Assistent Workspace erstellen (Schritt D), Theme-Init CSP-konform
Sechs Schritte: Name/Zweck/Eigentümer, Apps, Webapps, Richtlinien
(aufklappbar wie im Katalog), Distro, Prüfen. Mitlaufende Distro-Leiste
zeigt, welche Distro noch möglich ist; bei Konflikten nennt Schritt 5 die
fehlenden Einträge mit Alternativen aus derselben Kategorie und
Entfernen-Knopf. Ohne JavaScript ein langes Formular, der Server prüft
ohnehin. Workspace-Liste verweist auf den Assistenten statt auf das alte
Schnellformular.

Nebenbei gefunden: das Inline-Skript in base.html, das ein manuell
gewähltes Hell-/Dunkel-Design vor dem CSS setzt, wurde von der eigenen
CSP blockiert - jetzt static/theme-init.js.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 12:12:14 +02:00
adminandClaude Opus 5.5 5e80cc40c6 Gruppen ohne eigenen Workspace, Admin-Liste mit Distro/Version/Vorlage
Workspace-Zuweisung an Gerätegruppen entfällt (Kunden- und Admin-Seite),
Gruppen ergänzen nur noch. Workspace-Liste zeigt Distro, Version,
Eigentümer und Vorlagen-Status, beim Anlegen wählbare Distro.
Workspace-Creator neu, Schritt C.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 11:54:37 +02:00
adminandClaude Opus 5.5 3c7a7e49f3 Bereich Datenbank geht in Workspaces auf (Reiter Workspaces und Vorlagen)
Workspace-Liste unter /admin/workspaces/liste, Merkmale, Kategorien,
Webapp-Vorlagen und Distro-Abdeckung (frühere Flottenmatrix) unter
/admin/workspaces/vorlagen. Gemeinsame Unternavigation, Menüpunkt
Datenbank entfällt, alte /admin/technik-Adressen leiten weiter
(POST mit 307). Workspace-Creator neu, Schritt B.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 11:45:37 +02:00
adminandClaude Opus 5.5 bf1470a3ff Neuer Bereich Workspaces für root, Reiter Katalog
Katalog ersetzt die Flottenmatrix als Übersicht: Apps, Webapps und
Konfigurationsrichtlinien aufklappbar nach Kategorien, je Eintrag Icon
(Fallback Zahnrad) und Distro-Verfügbarkeit aus den Blueprints.
Kategorien bekommen eine Art (App/Richtlinie), Webapp-Vorlagen eine
Kategorie. Workspace-Creator neu, Schritt A.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 11:28:51 +02:00
adminandClaude Opus 5.5 57221bb180 Workspace-Creator kundenseitig sperren, Einrichtung vorerst nur durch root-admin
Menüpunkt ausgegraut, /workspace zeigt nur einen Hinweis plus die
bereitstehenden Workspaces (lesend), alle schreibenden Endpunkte liefern
403. Zuweisung an Gerätegruppen bleibt offen. Freischalten über
WORKSPACE_CREATOR_FREIGEGEBEN in routers/workspace.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 08:11:25 +02:00
adminandClaude Opus 5.5 19460174c1 Installationsmedium: Optionen Offline-Medium und Neuinstallation ohne Rueckfrage
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:17:31 +02:00
adminandClaude Opus 5.5 ee9fefce67 Vorlagen-Formular: Partitionierungsschema aus den Haken ableiten, Serverfehler anzeigen
Angehakte /home-/var-Partitionen wurden ohne Hinweis verworfen, wenn das
separate Auswahlfeld auf 'Einfach' stand (Kunden-ISO-Test 02.10.2026).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 14:51:44 +02:00
adminandClaude Opus 5.5 ee3f6596c5 Admin-Reiter Diagnosezugang pro Organisation, Hash an ISO-Build (ADR-0035)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 14:18:26 +02:00
adminandClaude Sonnet 5 a196fd2ea4 Admin-GUI: custom-Partitionierungsschema in Bereitstellungsvorlagen-Formular
Neues Schema-Dropdown (single/custom) + feste Auswahl fuer /home, /var,
/usr (Aktivieren-Checkbox + Prozent + Dateisystem je Mountpoint) - bewusst
keine freie Mountpoint-Liste, einfacher serverseitig zu validieren und
deckt die konkret gewuenschten Faelle ab. Admin-Tabelle zeigt das
gewaehlte Schema jetzt mit an.

Teil der E2E-Testrunde, siehe platform-docs/roadmap/
e2e-testrunde-lokale-adressierung.md Phase 3. Gegenstueck in
provisioning-server (Validierung, DB-Persistenz) ist dort bereits
committet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DWKevK2QUK5tsGmqfSD6Yy
2026-09-19 14:52:23 +02:00
adminandClaude Sonnet 5 de4a6ea819 Phase 6: App-Icons + Beschreibungen in Merkmale-Verwaltung und Flottenmatrix
Neuer Proxy /admin/technik/merkmal-icons/{filename} (gleiches Muster wie
der bestehende Webapp-Icon-Proxy, anode kennt seine öffentliche Adresse
nicht) - anders als dort aber mit tatsächlich durchgereichtem Content-
Type statt fest angenommenem "image/x-icon", weil der Bildtyp hier
wirklich variiert (Simple-Icons-SVG vs. Favicon-ICO/PNG/JPG). Icons sind
klein genug (Obergrenze 2 MB) für einmaliges Einlesen statt echtem
Streaming.

Merkmale-Verwaltung zeigt jetzt Icon + Beschreibung sichtbar (vorher nur
im Bearbeiten-Formular versteckt), Flottenmatrix zeigt das Icon neben
Key/Name der Zeile.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 11:44:20 +02:00
adminandClaude Sonnet 5 830c96eaf1 Phase 5: Dashboard-Inhalt (Kunde + Admin)
Beide Platzhalter-Dashboards aus Phase 1 bekommen jetzt echten Inhalt -
Nächste-Schritte-Checkliste, Flotten-Gesundheit (Balken für Platten-/
RAM-Auslastung, Liste überfälliger Check-ins), letzte Aktionen. Holt die
Auswertung von den neuen anode-Endpunkten (provisioning-server), ergänzt
kundenseitig nur die Installationsmedium-Prüfung (iso_build_id lebt in
installationsmedium_konfiguration, kundenplattforms eigener DB).

Grafiken bewusst als einfache CSS-Balken (.balken/.balken-fuellung in
base.html) - kein Chart-Framework/CDN-Import, passt zum bestehenden
Vanilla-JS/CSS-Ansatz (table-tools.js, theme-toggle.js).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 11:21:45 +02:00
adminandClaude Sonnet 5 7efd9759a7 Phase 4: Kategorie-Auswahl + Kiosk-Checkbox beim Webapp-Anlegen
Formular-Ergänzung zum serverseitigen Gegenstück (provisioning-server):
optionale Kategorie-Auswahl (dieselben App-Kategorien wie bei Merkmalen)
und ein Kiosk-Modus-Kontrollkästchen. Das Kontrollkästchen ist deaktiviert
mit Hinweistext, solange der Workspace weder Chrome noch Chromium als
Merkmal hat (hat_kiosk_browser in workspace.py) - vermeidet einen
Schalter, der sichtbar existiert, aber wirkungslos wäre. Webapp-Liste
zeigt Kategorie/Kiosk-Status als kleine Badges an.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 11:10:45 +02:00
adminandClaude Sonnet 5 44659ae305 Autofilter auf alle sortierbaren Spalten ausgeweitet + aktiver-Filter-Farbmarkierung
Nutzer-Feedback (11.09.2026): der Excel-artige Spalten-Filter (Runde von
heute Vormittag) fehlte weiterhin auf einigen Spalten - Hostname/Kennung/
Gruppen/Letzter Check-in in der Flotte, Key/Name in den Merkmalen, sowie
allen Spalten der Flottenmatrix. Jetzt bekommt konsequent jede
data-sort-Spalte auch data-filter, wie beim Vorbild Excel (auch dort hat
jede Spalte einen Autofilter, unabhängig von der Sinnhaftigkeit im
Einzelfall).

Zweiter Wunsch: solange ein Filter tatsächlich einschränkt (nicht mehr
alle Werte angehakt), färbt sich die Titelzeile sanft in der Akzentfarbe
(neue CSS-Klasse .spalten-gefiltert, von wendeSpaltenFilterAn() gesetzt) -
das Trichter-Icon nutzt fill="currentColor" und färbt sich automatisch
mit.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 10:58:53 +02:00
adminandClaude Sonnet 5 fb10419d88 "Diesen Standard übernehmen"-Knopf bei globalen Workspace-Standards
Schliesst die Lücke aus dem heutigen Nutzer-Feedback: Organisationen ohne
einen einzigen eigenen Workspace hatten keinen Weg mehr zu Webapps, weil
Webapps strikt an Besitz gebunden sind (fetch_sichtbaren_workspace()).
Neue Route POST /workspace/{id}/uebernehmen prüft Sichtbarkeit (global
oder eigene Organisation), ruft den neuen anode-Klon-Endpunkt auf und
leitet auf die Detailseite des neuen, voll editierbaren Workspace um.
Button dazu in workspace_detail.html, nur bei schreibgeschützten
(globalen) Standards sichtbar.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 10:36:13 +02:00
adminandClaude Sonnet 5 8b3943e953 Filter-Icon: Trichter-Symbol statt Dreieck (Verwechslung mit Sortierung)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 10:29:56 +02:00
adminandClaude Sonnet 5 383f2a1949 Fix: Filter-Icon zeigt sich jetzt immer, nicht erst ab 2 Werten
Gleicher Rueckfall wie der Bugfix vom Vortag (workspace_namen|length),
diesmal in der neuen clientseitigen baueSpaltenFilter() - Nutzer wollte
das Icon konsistent immer sehen, unabhaengig von der aktuellen
Werteanzahl in der Spalte.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 10:15:15 +02:00
adminandClaude Sonnet 5 70d70dbf99 Fix: Cache-Busting für /static/*-Dateien ergänzt
Live vom Nutzer gefunden: eine Aktualisierung von table-tools.js kam
nicht an, weil der Browser die alte Version unter derselben URL
gecacht hatte - kein Grund fuer den Browser, neu zu laden. Neuer
static_version-Jinja-Global (Hash ueber den tatsaechlichen Inhalt aller
static/-Dateien, bei Prozessstart berechnet), als ?v=... an pico.min.css/
table-tools.js/theme-toggle.js angehaengt - aendert sich automatisch bei
jedem Deploy, ohne manuelles Hochzaehlen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 10:05:34 +02:00
adminandClaude Sonnet 5 3aa653e002 Tabellen-Filter als Excel-artiger Spalten-Autofilter statt separatem Block
Nutzer-Wunsch: Filter-Icon direkt in der Titelzeile statt eines eigenen
Blocks unter der Suche. table-tools.js komplett umgebaut - ein
th[data-filter] bekommt automatisch ein ▾-Symbol, Klick oeffnet ein
Dropdown mit Checkboxen fuer jeden in dieser Spalte tatsaechlich
vorkommenden Wert (rein clientseitig aus den gerenderten Zellen
ermittelt, kein Server-Code mehr noetig). Ersetzt das aeltere,
serverseitig befuellte data-table-category-filter-Muster vollstaendig -
Merkmale/Kategorie und beide Geraete-Listen/Workspace nutzen jetzt nur
noch das Attribut, kein <details>-Block + kein workspace_namen/
Wertelisten-Handling im Router mehr noetig. Bei Gelegenheit gleich auf
OE, Status (Kunde) und Organisation (Admin) ausgeweitet, da jetzt keine
Server-Aenderung mehr pro Spalte noetig ist.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 09:51:45 +02:00
adminandClaude Sonnet 5 2f22b34076 Fix: Workspace-Filter fälschlich erst ab 2 verschiedenen Werten gezeigt
Nutzer-Feedback: als Org-Admin (Liebherr, aktuell alle 6 Geräte auf
'Entwickler') war der Filter unsichtbar, weil er absichtlich erst ab 2
unterschiedlichen Workspace-Namen erschien - schlechte Entscheidung,
Filter jetzt immer sichtbar sobald mindestens ein Workspace vorkommt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 09:43:11 +02:00
adminandClaude Sonnet 5 6d9b2f5a0d GUI-Umbau Phase 3: Kunden-Workspace-Creator
Organisations-Admins bekommen erstmals Zugriff auf die Workspace-
Komposition (bisher exklusiv /admin/technik/workspaces vorbehalten,
ADR-0028 hatte das als "zunaechst admin-only" offen gelassen).

- routers/workspace.py (Neubau, ersetzt den Phase-1-Platzhalter):
  /workspace (eigene Workspaces + bereitgestellte globale Standards,
  ueber den bestehenden ADR-0028-Endpunkt), /workspace (POST, anlegen -
  organization_id kommt nie aus dem Formular), /workspace/{id} (Detail:
  eigener Workspace -> volle Kategorie-Checkbox-Komposition, Wiederver-
  wendung von admin_technik.gruppiere_merkmale_nach_kategorie(); globaler
  Standard -> reine Leseansicht, kein Formular).
- Webapps-Verwaltung zieht von der bisherigen eigenen Seite (/webapps)
  hierher um (workspace_detail.html, nur fuer eigene Workspaces sichtbar)
  - alte Route bleibt nur noch als 301-Redirect auf /workspace bestehen.
- Neue Besitz-/Sichtbarkeitspruefung fetch_sichtbaren_workspace() (eigene
  Organisation ODER global sichtbar, sonst 404) analog zum bestehenden
  find_oe_in_organization()-Muster.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 09:03:04 +02:00
adminandClaude Sonnet 5 ae6a1c38c6 GUI-Umbau Phase 2: Workspace-Checkbox-Filter für Flotte-Tabellen
Nach dem in Runde 2 gebauten data-table-category-filter-Muster (gleicher
JS-Mechanismus, kein neuer Code) - Kunden- und Admin-Geräteliste bekommen
einen Checkbox-Filter nach Workspace-Name. Admin-Geräteliste hatte bisher
gar keine Workspace-Spalte, jetzt ergänzt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 08:59:04 +02:00
adminandClaude Sonnet 5 5b65d08e15 GUI-Neuordnung Phase 1: Navigation, Dashboard/Workspace-Platzhalter, Flows->Reiter
- Neue Primaer-Nav-Reihenfolge Kunde: Dashboard -> Organisation ->
  Workspace (neu) -> Installationsmedium -> Flotte (ans Ende verschoben).
- Neue Primaer-Nav-Reihenfolge Admin: Dashboard -> Organisationen ->
  Datenbank -> Flotte -> Admin-Accounts (Flows als eigener Punkt entfernt).
- Dashboard (Kunde+Admin) und Workspace (Kunde) als Platzhalter-Routen
  angelegt - Navigationspunkte von Anfang an klickbar, Inhalt folgt in
  spaeteren Phasen (Dashboard: Phase 5: Workspace: Phase 3).
- "Webapps" aus der Organisation-Unternavigation entfernt (zieht in
  Phase 3 in den neuen Workspace-Bereich um, vorlaeufig weiter unter
  /webapps erreichbar ueber einen Link auf der Workspace-Platzhalterseite).
- Flows: frueherer eigenstaendiger Einstiegspunkt (/admin/flows,
  Organisationswahl) entfernt (admin/flows_index.html geloescht) - neuer
  7. Reiter "Flows" auf der Organisations-Detailseite
  (admin/kunden_detail.html + admin/flows_organisation.html mit
  derselben Reiter-Nav), routers/admin_flows.py-Logik unveraendert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-11 08:55:00 +02:00
adminandClaude Sonnet 5 e8baa61137 Fix: Navigationsspalte fälschlich zentriert statt linksbündig
Pico setzt "nav ul { align-items: center }" fuer den ueblichen
horizontalen Navbar-Fall - durch die erzwungene flex-direction:column
in .primary-nav wurde daraus horizontale Zentrierung jedes Eintrags
statt linksbuendig ueber die volle Spaltenbreite. align-items:stretch
behoben, macht nebenbei die ganze Zeile klickbar statt nur den Text.
Mobile Zeilen-Variante behaelt bewusst align-items:center (dort richtig).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-10 16:44:10 +02:00
adminandClaude Sonnet 5 5b134342dc Fix: Admin-Konten konnten eigenes Passwort nicht mehr aendern
Der GUI-Umbau vom Vortag entfernte den "Organisation"-Nav-Punkt fuer
is_superuser-Konten - "Mein Konto" lag aber ausschliesslich auf
/organisation, wodurch root sein eigenes Passwort nicht mehr erreichen
konnte (Route funktionierte weiter, war nur aus der Navigation
verschwunden - live vom Nutzer bemerkt). passwort_aendern() antwortet
jetzt rollenabhaengig (admin/accounts.html statt organisation.html fuer
is_superuser-Konten), neue "Mein Konto"-Sektion auf der Admin-Accounts-
Seite, beide Formulare posten an denselben bestehenden Endpunkt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
2026-09-10 16:39:18 +02:00