a) Polling fest auf 800ms — index.html:1238,1957
Auch wenn Job lange laeuft. Kein Timeout (Frontend haengt forever bei Server-Crash).
b) Review-Liste rendert alle Fotos — index.html:1313-1361
Bei 500+ Bildern Jank/Memory-Druck.
c) entry.path.split("/").pop() im Sort + Loop — index.html:1311-1314
Wiederholtes Splitting pro Render.
Fix
a) Adaptive Intervalle (300ms anfangs, 1s nach 10s, 2s nach 30s) + Wall-Clock-Timeout
b) IntersectionObserver oder Pagination (50/Seite)
c) name einmalig in allEntries vorberechnen
## Probleme
**a) Polling fest auf 800ms** — `index.html:1238,1957`
Auch wenn Job lange laeuft. Kein Timeout (Frontend haengt forever bei Server-Crash).
**b) Review-Liste rendert alle Fotos** — `index.html:1313-1361`
Bei 500+ Bildern Jank/Memory-Druck.
**c) `entry.path.split("/").pop()` im Sort + Loop** — `index.html:1311-1314`
Wiederholtes Splitting pro Render.
## Fix
- a) Adaptive Intervalle (300ms anfangs, 1s nach 10s, 2s nach 30s) + Wall-Clock-Timeout
- b) IntersectionObserver oder Pagination (50/Seite)
- c) `name` einmalig in `allEntries` vorberechnen
Beide Polling-Loops (Analyze + Export) nutzen jetzt adaptive Delays und brechen mit aussagekraeftiger Fehlermeldung ab, wenn der Server ueber 10 min nicht antwortet
Bei kurzen Jobs (<10s) schneller responsiv (300ms statt 800ms), bei langen weniger API-Last
(b) name einmal vorberechnen
Helper _basename(p) via lastIndexOf("/") statt split("/").pop()
allEntries enthaelt jetzt name-Feld
Sort vergleicht a.name direkt, kein Splitting im hot Path
forEach-Loop liest entry.name statt erneut zu splitten
(c) Virtualisierung der Review-Liste als separates Issue #30 ausgegliedert.
Fix (a) und (b) umgesetzt in `index.html`:
**(a) Polling-Backoff + Wall-Clock-Timeout**
- Helper `_pollDelayMs(elapsedMs)`: 300ms < 10s, 800ms < 30s, sonst 1500ms
- `POLL_TIMEOUT_MS = 10 * 60 * 1000` (10 min)
- Beide Polling-Loops (Analyze + Export) nutzen jetzt adaptive Delays und brechen mit aussagekraeftiger Fehlermeldung ab, wenn der Server ueber 10 min nicht antwortet
- Bei kurzen Jobs (<10s) schneller responsiv (300ms statt 800ms), bei langen weniger API-Last
**(b) `name` einmal vorberechnen**
- Helper `_basename(p)` via `lastIndexOf("/")` statt `split("/").pop()`
- `allEntries` enthaelt jetzt `name`-Feld
- Sort vergleicht `a.name` direkt, kein Splitting im hot Path
- forEach-Loop liest `entry.name` statt erneut zu splitten
**(c) Virtualisierung der Review-Liste** als separates Issue #30 ausgegliedert.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Probleme
a) Polling fest auf 800ms —
index.html:1238,1957Auch wenn Job lange laeuft. Kein Timeout (Frontend haengt forever bei Server-Crash).
b) Review-Liste rendert alle Fotos —
index.html:1313-1361Bei 500+ Bildern Jank/Memory-Druck.
c)
entry.path.split("/").pop()im Sort + Loop —index.html:1311-1314Wiederholtes Splitting pro Render.
Fix
nameeinmalig inallEntriesvorberechnenFix (a) und (b) umgesetzt in
index.html:(a) Polling-Backoff + Wall-Clock-Timeout
_pollDelayMs(elapsedMs): 300ms < 10s, 800ms < 30s, sonst 1500msPOLL_TIMEOUT_MS = 10 * 60 * 1000(10 min)(b)
nameeinmal vorberechnen_basename(p)vialastIndexOf("/")stattsplit("/").pop()allEntriesenthaelt jetztname-Felda.namedirekt, kein Splitting im hot Pathentry.namestatt erneut zu splitten(c) Virtualisierung der Review-Liste als separates Issue #30 ausgegliedert.