# Changelog Alle relevanten Änderungen am CSS-Framework werden hier dokumentiert. Format orientiert sich an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/). --- ## [2.1.1] — 2026-10-25 ### Behoben - Checkboxen und Radios zeigen wieder, ob sie gewählt sind: Die allgemeine `input`-Regel setzte `appearance: none`, die Regel für Checkboxen und Radios setzte es nicht zurück, und einen eigenen `:checked`-Stil gibt es nicht. Jetzt `appearance: auto`; der Haken erscheint in `--accent` (`accent-color`), hell wie dunkel. Switch, Chips und Segmente sind nicht betroffen (ihre Eingabefelder bleiben versteckt). --- ## [2.1.0] — 2026-10-18 CSP-fest: Framework, Demo und Doku laufen unter einer Content Security Policy ohne `'unsafe-inline'` und ohne `'unsafe-eval'`. Bestehende Projekte laufen unverändert weiter; die globalen Funktionen bleiben. ### Neu - `data-action` für alle Aktionen (`modal-open`, `modal-close`, `modal-backdrop`, `tab`, `dropdown`, `nav-dropdown`, `sidebar-open`, `sidebar-close`, `alert-dismiss`, `sort`, `toggle-class`, `toast`, `toast-close`), ausgewertet von einem Listener am `document`; funktioniert auch in HTMX-Fragmenten - `theme.js` — Hell/Dunkel vor dem Rendern setzen (gespeichert oder `prefers-color-scheme`) und per `data-action="theme-toggle"` umschalten - `.icon-theme-light` / `.icon-theme-dark` — Theme-Icons wechseln per CSS - `data-progress="75"` für `.progress-bar` statt `style="width: 75%"` (`applyProgress()`, auch nach `htmx:load`) - `.htmx-indicator` — Styles im Framework, damit HTMX mit `includeIndicatorStyles: false` laufen kann - `.skeleton-line`, `.skeleton-title`, `.skeleton-block`, `.skeleton-line.is-short` - `.card-media` (Bild 16:9), `.table-wrap.is-scroll` (begrenzte Höhe für Sticky Header), Utility `.min-w-0` - `body.modal-open`, `.toast.is-leaving`, `.toast-icon-{success|warning|danger|info}` - `demo.css`, `demo.js` — Demo-Styles und -Skripte aus `index.html` ausgelagert ### Geändert - `showToast()` baut den Toast über das DOM und setzt die Meldung als Text — **behebt XSS**, wenn die Meldung Benutzereingaben enthielt - `openModal()` / `closeModal()` sperren den Scroll über `body.modal-open` statt `body.style` - `index.html`, README, Skill-Referenzen und `jinja2.md` (Basis-Template) ohne `onclick`, `style`-Attribute und Inline-Skripte - `AGENTS.md`: Regel 10 angepasst, Regel 12 (CSP) neu --- ## [2.0.0] — 2026-06-12 ### Neu - `framework.js` — JavaScript-API aus `index.html` ausgelagert, jetzt eigenständig einbindbar - `build.py` — Minifier ohne externe Abhängigkeiten (`python3 build.py`) - `dist/` — Build-Ausgabe mit `main.min.css`, `framework.min.js` und `index.html` (Sichtprüfung) - `docs/VERGLEICH.md` — Vergleich mit Bootstrap und Tailwind - `toggleSidebar()` / `closeSidebar()` zur JavaScript-API hinzugefügt - `closeOnBackdrop(event, id)` zur JavaScript-API hinzugefügt ### Geändert - `showToast()` — API korrigiert: nimmt jetzt `message` und `type` als Parameter (`showToast('Gespeichert', 'success')`) - Zwei `click`-Event-Listener (Dropdown + TopNav) zu einem zusammengeführt - Modal-Pattern durchgehend auf `closeOnBackdrop(event, id)` umgestellt - Sidebar-Pattern mit `onclick="toggleSidebar()"` / `onclick="closeSidebar()"` vervollständigt - `.opencode/` — alle Pfadreferenzen von `.ai/` korrigiert - Fonts-URL aktualisiert (`gwfh.mranftl.com`) - `AGENTS.md` Regel 10: JS gehört in `framework.js`, nicht in den Template-Script-Block ### Behoben - Minifier: `+` aus Stripping-Regex entfernt — `calc()`-Ausdrücke wie `calc(100% + 0.375rem)` blieben sonst ungültig --- ## [1.0.0] — vor diesem Changelog Initiale Version des Frameworks mit: - Tokenbasiertem Designsystem (`tokens.css`) - Classless Base (`base.css`) - Komponenten-Bibliothek (`components.css`) - Utilities (`utilities.css`) - Vollständiger Komponenten-Demo (`index.html`) - OpenCode-Skill-Dokumentation (`.opencode/`)