ki
d0cc69410f
BUG-05: Speichern-Button weg, Save-Status-Indikator mit States
...
Der 'Speichern'-Button war redundant — debouncedSave() lief schon
bei jedem Drop/Resize/Add/Delete. Klick auf den Button machte nur
einen sofortigen POST statt 500ms-debounce. Verwirrend statt hilfreich.
Fix:
- Speichern-Button aus dem Toolbar entfernt.
- Stattdessen: <div id='saveIndicator' data-state='idle'> mit .save-dot
und .save-label — rechtsbündig im Toolbar (margin-left:auto).
- States: idle | pending | saving | error (CSS-Data-Attr-basiert).
- idle: grüner Punkt, 'Gespeichert'
- pending: warn-gelber Punkt pulsiert, 'Ungespeichert…' (debouncedSave-Start)
- saving: info-blauer Punkt pulsiert schneller, 'Speichern…' (saveLayout-Start)
- error: alert-roter Punkt, 'Fehler: ...' (j.ok=false)
- setSaveState(state, label?) als zentraler Helper.
- saveLayout() macht jetzt success-toast weg — der Indicator reicht.
- Fehlerfall: error-toast bleibt (kritisch, separat sichtbar).
Vorteile:
- Toolbar ist aufgeräumter, +Button ist eindeutig der primäre Action.
- User sieht Save-Status ohne Klick auf irgendwas — visuelles Feedback
für Auto-Save.
- Fehler-State zeigt sofort 'Fehler: ...' mit Details.
Beweis: tests/test_save_indicator.js (11/11 grün)
1. Speichern-Button entfernt
2. Save-Indicator #saveIndicator vorhanden
3. setSaveState() Funktion definiert
4. setSaveState setzt dataset.state
5. debouncedSave setzt pending-Status
6. saveLayout setzt saving am Anfang
7. saveLayout setzt idle bei Erfolg
8. saveLayout setzt error bei j.ok=false
9. CSS für alle 4 Indicator-States
10. Kein success-toast in saveLayout mehr
11. Save-Indicator rechtsbündig (margin-left:auto)
Closes #7
2026-08-29 17:47:23 +04:00
epaper-dashboard
5f74238e0e
fix: grid items position:relative to restore multi-cell spans
2026-08-29 17:06:26 +04:00
epaper-dashboard
31d27ffa92
FEAT: 4x4 grid UI fixes, smooth drag-drop ghost preview, WordClock plugin
...
- Grid items now correctly placed inside .grid-cell divs (CSS Grid children)
- Visual occupied-state feedback during drag (CSS classes, no full re-render)
- Drag ghost preview (green=ok, red=overlap) replaces flicker on dragend
- New clock_wordclock plugin: German/English word clock (QWATCH layout)
2026-08-29 16:52:55 +04:00
epaper-dashboard and Hermes
1f142f5245
Sync to Pi: alle Features die live deployed sind
...
Aus dem Backup und Live-Pull vom Pi (10.11.3.144):
- dashboard.py: Grid-Linien nur im freien Hintergrund (nicht durch Widgets)
- templates/index.html: komplett redesigned mit Sidebar + Topbar + Toast + Modal
- plugins/clock.py: responsive Layout (1x1 bis 4x4)
- plugins/system.py, weather.py, minimax.py: mit Threshold-Bars und Color-Variants
- plugins/base.py: NEU — fetch_with_retry Helper (3x retry mit backoff)
+ render_error_banner für fehlgeschlagene API-Plugins
(grosses rotes "!" Icon mit Plugin-Name und Fehler statt Crash)
Cleanup: Helfer-Chaos (renderer.py/2/3, design_a/b/c.html, clock_classic.py,
23x clock_*.png, alte test_*.py) wurde bereits im vorherigen Commit entfernt.
Co-Authored-By: Hermes <noreply@hermes.local >
2026-08-26 22:11:36 +04:00
ki
49de61bb26
Linear design system: new admin UI + display design switcher (8 designs)
...
Admin UI: Linear.app dark theme — near-black canvas, indigo-violet accent, Inter font
Display: Minimal, Minimal Color, Bold, Analog Clock, Magazine, Cards, Kiosk, Classic
2026-08-26 15:08:17 +04:00
ki
a2c4158ba8
Add theme switchers: Admin UI (A/B/C) + Display (5 themes)
...
Admin UI: Dark Minimal / Retro Terminal / Warm Editorial via header buttons
Display: Classic White / Dark / Sepia / Nord / Terminal via Settings tab
Both switchers persist via localStorage / config.json
2026-08-26 14:41:34 +04:00
ki
28124c5617
Initial commit: epaper-dashboard for 7.3" ACeP 7-Color display
...
- dashboard.py: plugin-based renderer with 4x4 grid layout
- admin.py: web UI with layout editor + plugin configs
- layout.py: pack algorithm, item placement, grid system
- plugins/: clock, weather, system, spotify, strava, gmail, minimax, hello
- network_watchdog.py: WiFi AP/client mode management
- waveshare_epd_init.py: vendor driver stub
2026-08-26 14:12:43 +04:00