px-explorer-v4 / docs /PLAN_UI_STYLING.md
BuildBot
push_hf: sparse-branch für HF-Push (nur Code, 0 LFS)
9644d0b
|
Raw
History Blame Contribute Delete
4.78 kB

A newer version of the Gradio SDK is available: 6.25.0

Upgrade

Plan — Branch ui-styling (UI-Verschönerung)

Branch-Basis: master @ 286e987 User-Scope (bestätigt): Nur Styling — keine Funktionsänderung Status: Scope-Dokument vor Implementierung (DevMind-Regel: 2× fragen)

Ziel

Visuelle Politur der Gradio-WebUI (chat_tab + TTS-Accordion + Profile-Editor + Sessions-Tab), ohne die zugrundeliegende Logik anzufassen. Schneller ästhetischer Gewinn mit minimalem Risiko.

In-Scope

1. CSS-Variablen + Theme-Basis

  • Einheitliche CSS-Variablen für Farben, Spacing, Border-Radius in einer neuen Datei gradio_tabs/_styles.py.
  • Definiert einen --bg-primary, --bg-secondary, --accent, --text-primary etc., aus denen die Komponenten ihre Werte ziehen.
  • Keine Hardcoded-Farben in chat_tab.py mehr; alle bestehenden Inline-Styles durch Variablen ersetzt.

2. Chatbot-Polish

  • Bubble-Alignment User rechts / Assistant links (heute unklar).
  • Avatar-Platzhalter für User und Assistant (Initial-Buchstabe in Kreis, kein Bild-Asset nötig).
  • Code-Block-Highlight via gr.Code(component) statt reinem Markdown für ```-Blöcke.
  • Markdown-Rendering für Assistant-Antworten aktivieren (gr.Markdown statt plain text).
  • Token-Counter-Badge rechts oben in der Toolbar (prompt_tokens / completion_tokens / total).

3. Sidebar / Layout

  • Linke Sidebar mit Logo, Session-Liste, Profile-Auswahl in eigenem Block.
  • Hauptbereich Chat + rechte Sidebar mit Settings-Akkordeon (TTS, Profile, Auto-Tune).
  • 3-Spalten-Layout via gr.Row + gr.Column(scale=...).
  • Tabs oben ersetzen Sidebar-Tabs (Settings/Sessions/Profile/TTS) zu Bottom-Panel-Accordion.

4. Komponenten-Polish

  • Buttons: einheitliche Border-Radius (8px), Hover-Effekt, Disabled-State deutlich.
  • Accordions: Pfeil-Rotation beim Öffnen, Übergangs-Animation.
  • Dropdowns: Suche-Prompt wenn >5 Items, klare Selected-Highlight-Farbe.
  • Textbox: Placeholder-Italic, Focus-Border akzentfarben.

5. TTS-Accordion-Schönheit

  • Engine-Auswahl als Radio-Buttons mit Engine-Icon (Buchstabe oder Initial in Quadrat).
  • Audio-Player zentriert statt full-width.
  • Status-Pill oben rechts ("Engine: piper ✓").

Out-of-Scope (EXPLIZIT)

  • Keine neuen Features (z.B. kein Multi-Chat, kein Theme-Toggle Light/Dark, keine Animation-Frameworks).
  • Keine Änderungen an Server-Endpoints, generators.py, patch.py, model_manager.py — Motor unangetastet (DevMind-Regel: kein motor-touch).
  • Keine Änderungen an der Session-Logik, Auto-Tune-Lock, Profile-Resolution.
  • Keine Änderungen an Tests, die Logik pinnen — nur ggf. neue CSS-/Visual-Tests (Pillow-Snapshot-Tests von Gradio-Komponenten, falls Zeit reicht).
  • Keine Dependency-Additions (kein tailwindcss, kein npm, alles in reinem Gradio-CSS/Inline-Style).

Erlaubte Dateien (lesen + editieren)

  • gradio_tabs/chat_tab.py (UI-Komposition)
  • gradio_tabs/_styles.py (NEU — CSS-Variablen)
  • app.py (nur Mount-Order / Reihenfolge der Tabs, KEINE Logik)
  • gradio_tabs/__init__.py (Re-Exports der neuen Helper)
  • tests/test_ui_styling.py (NEU — Smoke-Tests: Komponenten gerendert, CSS-Vars vorhanden)

Verifikation

  1. bash run.sh startet sauber, keine Warnings.
  2. UI lädt in <2s (kein zusätzlicher Network-IO).
  3. Alle bestehenden Tests grün (189+).
  4. Manuelle Sichtprüfung: Chat-Bubbles aligned, Avatar sichtbar, TTS-Akkordeon ästhetisch, keine 1-Pixel-Bugs.
  5. Optional: Pillow-Snapshot-Test (Vergleich vorher/nachher — hartes Kriterium für "kein Stil-Regress").

Risiken

  • Gradio-CSS-Spezifität: Inline-Styles in Gradio-Komponenten werden oft von Gradio-Defaults überschrieben. Mitigiert durch css=-Argument in gr.Blocks(css=...) + höhere Spezifität.
  • Visuelle Regression in 1b vs 4b: Falls das UI Preset-spezifische States hat (PX-Engine-Aktiv-Indikator). Smoke-Test in beiden Presets.
  • Lade-Regression: Zu viele CSS-Variablen können Theme-Init verlangsamen. Mitigiert durch <50 Variablen.

Reihenfolge

  1. gradio_tabs/_styles.py mit zentralen CSS-Variablen.
  2. chat_tab.py minimal-invasiv: Inline-Styles → Variablen, Avatar hinzu, Markdown-Renderer.
  3. Layout-Refactor 3-Spalten (Sidebar + Chat + Settings).
  4. TTS-Accordion-Polish.
  5. Tests + Smoke (Server lokal, Screenshot-Vergleich).
  6. Commit pro Sub-Bereich, nicht ein Mega-Commit.

Was NICHT in diesem Plan ist

  • KEINE Auto-Tune-Logik-Änderung.
  • KEIN Light/Dark-Toggle (User-Wahl: "Nur Styling", keine Features).
  • KEINE neuen TTS-Engines.
  • KEINE Modal-Overlays oder Toasts (Gradio-Standard reicht).
  • KEINE Mobile-Optimierung (Gradio handhabt das selbst).

Verwandte

  • Branch self-conversation (separater Branch, separat dokumentiert)
  • Branch relay-layer-discovery (separater Branch, separat dokumentiert)