Repository navigation
feat(settings): Einstellungen nach dem Muster der Plugin-Seiten - #390
Merged
Merged
Conversation
added 3 commits
November 2, 2026 16:24
Die Einstellungen bekommen dasselbe Seitenmuster wie Einstellungen › Plugins und nutzen dessen Bausteine (pgx-): Menü ohne Kartenrahmen mit Suche oben, „Übersicht“ mit Zähler offener Punkte, Gruppen in Versalien, Pro-Kennzeichen und Punkt bei Handlungsbedarf. Jeder Eintrag ist ein echter Link mit eigener Adresse /settings/<sektion>; #sektion, alte Tab-Namen, ?tab=, ?plugin=/?install= und /settings/<alter Tab> werden weitergeleitet, „Plugins“ führt direkt nach /settings/plugins. - Neue Start-Seite /settings: Kacheln (Dienste, Domains, Backup, Lizenz), „Braucht deine Aufmerksamkeit“ aus vorhandenen Signalen (Update wartet / zurückgerollt / fehlgeschlagen, update.sh veraltet, Backup ohne Ziel außer Haus / Ziel fehlerhaft / zu alt, Domains mit ausstehendem oder falschem DNS, Server-IP, fehlende Zertifikate, Plugins mit Problemen oder fehlender Lizenz, Plugin-Updates, Lizenzprüfung, SMTP fehlt, WireGuard/Caddy gestört), „Alle Bereiche“ mit dem Stand je Eintrag; Dienste (Neu starten / Neu laden) und Server-Infos der bisherigen „Übersicht“ leben hier weiter. Quelle: GET /api/v1/settings/overview (services/settingsOverview.js, nur lesend, ohne Texte). - Alle Sektionen: Seitenkopf mit Statuszeile aus echtem Zustand und höchstens Zweit- und Hauptknopf, Kacheln wo sinnvoll, Karten mit Aktion rechts im Kartenkopf, Zeilen mit fester Bedienspalte (380 px), geänderte Felder markiert, Listen als Zeilen, eine Knopf- und eine Hinweis-Box-Familie; Hinzufügen ist Seiten- oder Kartenaktion. - KI-Anbieter mit Haupt- und Seitenspalte; die allgemeinen Einstellungen laufen über die Speicherleiste, der eigene „Speichern“-Knopf entfällt. - Client-Richtlinien als Zeilen mit Segmenten und Schaltern, Split-Tunnel als Segment, Lizenz-Funktionen kompakt und aufklappbar; Wiederherstellen und Lizenz entfernen liegen in der Gefahrenzone, die doppelte Aufräumen-Karte in Daten verweist dorthin. - Gleiche Breite wie die Plugin-Seiten, Hell/Dunkel, Handy (< 900 px): Start ist die Bereichsliste mit Stand, Unterseiten mit „‹ Einstellungen“. - Texte de/en vollständig, fehlende Umlaute korrigiert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
- KI-Anbieter: die Karte „Allgemein“ steht in voller Breite unter den Spalten und hat dasselbe Zeilenmuster wie alle Formulare (Beschriftung und Hilfe links, Bedienelement in der festen Spalte). Schmalere Karten behalten die Zeilen mit einer 330-px-Spalte; untereinander nur noch in Karten unter 560 px (Handy). - Segmente brechen nie um: Eine Auswahl, deren Optionen nicht einzeilig in die Bedienspalte passen, wird als Auswahlfeld gezeigt – als Regel im Baustein (segRow in settings.njk, fitsSegment in client-policy-form.js), z. B. „Automatisch verbinden“, Gerätebindung, Split-Tunnel-Modus. - Alle Bedienelemente beginnen bündig am linken Rand der Bedienspalte; Segmente füllen die Spalte nicht mehr auf. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
Ursache des roten „Browser tests“-Laufs: Das Szenario wechselte die Sektion ohne Neuladen und wartete auf networkidle – das bezieht sich auf das Laden der Seite und war längst erreicht. Die Änderung (Portal-Schalter) landete deshalb mitunter, bevor die Sektion ihre gespeicherten Werte geladen hatte; der Wert galt dann nicht als geändert, die Speicherleiste blieb aus und der folgende Klick auf „Verwerfen“ lief in den Timeout. settings.js gibt das Laden der gezeigten Sektion als GCSettings.whenLoaded() heraus; das Szenario wartet nach jedem Wechsel darauf statt auf eine feste Pause. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Die Einstellungen folgen jetzt demselben Seitenmuster wie Einstellungen › Plugins und nutzen dessen Bausteine (
pgx-). Umgesetzt nach den freigegebenen Mockups „Einstellungen – Neugestaltung“ (Start, Formular-Seite, Listen-Seite, Seite mit Seitenspalte, Handy).Was sich ändert
/settings/<sektion>(aria-current="page"); Umschalten ohne Neuladen (pushState, Zurück/Vor funktioniert), ohne JavaScript normale Links. „Plugins“ führt direkt nach/settings/plugins.#sektion, alte Tab-Namen (#backup,#security…), Element-IDs,?tab=,?plugin=/?install=,/settings/<alter Tab>und/settings/uebersichtwerden weitergeleitet (Server:settingsTargetinroutes/index.js, Browser:followLocationinsettings.js). Interne Links (Sicherheits-Check, Dashboard-Probleme, Lizenzhinweis, Benachrichtigungen, Benutzer, Schnellsuche) zeigen auf die neuen Adressen./settings: Seitenkopf mit Statuszeile, „Backup jetzt erstellen“ (mit Lizenz) und „Update ansehen“ nur wenn ein Update im Wartungsfenster wartet; Kacheln Dienste, Domains, Backup, Lizenz; „Braucht deine Aufmerksamkeit“ nur aus vorhandenen Signalen; „Alle Bereiche“ mit dem aktuellen Stand je Eintrag. Die bisherige Sektion „Übersicht“ (Dienste mit Neu starten / Neu laden, Server-Infos) lebt hier weiter. Quelle: neuGET /api/v1/settings/overview(services/settingsOverview.js, nur lesend, liefert Schlüssel statt Texte, jede Quelle einzeln abgesichert; für API-Tokens gesperrt). WireGuard/Caddy fragt die Seite wie bisher über/api/v1/wg/statusund/api/v1/caddy/status.client-policy-form.js, Layoutrows; der Peer-Dialog bleibt unverändert), Split-Tunnel als Segment, Lizenz mit Kacheln und kompakter, aufklappbarer Funktionsliste.st-page,st-nav*,st-layout,st-compact) ist entfernt.Abweichungen von den Mockups
waiting_window) – der Knopf heißt daher „Update ansehen“ und erscheint nur dann.Tests
tests/settings_pages.test.js: alle Adressen/settings/<sektion>(sichtbare Sektion,aria-current, Breadcrumb), Weiterleitungen alter Adressen, 404, Pi-hole ohne Lizenz, Speicherleiste/Feldzugehörigkeit, Seitenkopf-Aktionen, Gefahrenaktionen, Overview-API und jede Aufmerksamkeits-Quelle (Domains, Server-IP, Update-Marker, Backups, SMTP, Lizenzabhängigkeit, ausfallende Quelle), Texte aller Arten/Zustände in beiden Sprachen.aurora_theme,settings_ui,plugins_ui,nav_palette, Lizenz-, Ops-, Notify- und CSS-Tests; Browser-Szenariosettings(Adressen, Zurück/Vor, Start-Seite, Speicherleiste je Sektion inkl. KI, „Verwalten“-Dialog, Handy-Liste und Zurück-Link).npm testgrün bis auf zwei Tests, die auch aufmasterin dieser Umgebung scheitern (Stub-Version der lokalen Abhängigkeiten, signiertes Plugin); alle CI-Browser-Szenarien grün; ESLint (security + no-undef) ohne Fehler.Generated by Claude Code