# AssetManager v0.3.15.0

## Performance-Refactoring der Assetliste

Die Diagnose aus v0.3.14.8 zeigte zwei konkrete Ursachen:

- `innerText` in den Tabellenwerkzeugen erzwang Layoutberechnungen.
- `table.scrollWidth` löste bei der breiten Assettabelle einen teuren Reflow aus.

Diese Bereiche wurden grundlegend überarbeitet.

### Tabellenlayout

- Die Assettabelle verwendet jetzt `table-layout: fixed`.
- Jede Datenspalte erhält eine feste Breite.
- Ohne konfigurierte Listenbreite gelten sinnvolle Standardbreiten:
  - Bezeichnung: 220 px
  - andere Datenfelder: 180 px
- Lange Inhalte vergrößern die Tabelle nicht mehr, sondern werden abgeschnitten
  und mit Auslassungspunkten dargestellt.

### Spaltenverwaltung

- Ausgeblendete Spalten werden über eine einzige dynamische CSS-Regel gesteuert.
- Es werden nicht mehr tausende einzelne Tabellenzellen per JavaScript verändert.
- Die Tabellenbreite wird aus den bekannten Spaltenbreiten berechnet.
- `table.scrollWidth` wird nicht mehr verwendet.
- `ResizeObserver` und `MutationObserver` der Spaltenverwaltung wurden entfernt.
- Die obere Scrollleiste wird nur noch initial, nach einer Spaltenänderung und
  bei einer echten Änderung der Fenstergröße aktualisiert.

### Filter und Sortierung

- `innerText` wurde durch `textContent` ersetzt, damit Filter und Sortierung
  keine erzwungene Layoutberechnung auslösen.
- Filterwerte werden einmalig zwischengespeichert.
- Ein Filterdurchlauf durchsucht den vorbereiteten Cache statt jedes Mal alle
  Zellen erneut über DOM-Abfragen zu lesen.
- Der DOM-Status einer Zeile wird nur geändert, wenn sich ihre Sichtbarkeit
  tatsächlich ändert.
- Sortierte Zeilen werden gesammelt über ein `DocumentFragment` eingesetzt.

### Spaltenreihenfolge

- Gespeicherte Spaltenreihenfolgen werden zeilenweise gesammelt angewendet.
- Dadurch entstehen deutlich weniger einzelne DOM-Operationen.

### Diagnosecode

- Die ausführliche Performance-Diagnose aus v0.3.14.8 wurde wieder entfernt.
- Der koordinierte, flackerfreie Seitenaufbau bleibt erhalten.

## Hinweis

Virtuelles Rendering wurde bewusst noch nicht aktiviert, da es Auswahl,
Sortierung, Filter, Duplikatsuche und den dynamischen Inhaltsreload tiefgreifend
verändern würde. Die jetzt umgesetzten Optimierungen beseitigen zunächst die
nachgewiesenen Reflow-Ursachen ohne Funktionsverlust.

## Update-Schutz

Nicht enthalten bzw. nicht überschrieben:

- .env
- APPINFO.json
- data/config/config.json
- PostgreSQL-Daten
- Uploads
- Backups
- Logs
