Go to file
xRangerDE 7bc7ef84a2 release: 5.0.12 — Progress-Logik komplett neu geschrieben
Root Cause (User-Report): bei Part 1/6 Multi-Part-Download mit 869 MB
schon geladen, blieb der Bar auf einer fixen Position weit links — sah
aus als ob ein paar % erreicht waeren obwohl viel mehr lief.

Drei Probleme die das aus 5.0.1-5.0.11 noch ueberlebt haben:

1. downloadVODPart Path A (1-Sek-Heartbeat) emittierte progress=-1
   wenn HLS kein known total hat. UI flippte zwischen 'determinate
   bei letztem streamlink-%' und 'indeterminate-Animation' — User
   sah einen 35%-Bar der zwischen Streamlink-%-Updates kurz aufpoppt.

2. Part-based-Split (download_mode='parts', langes VOD in N Stunden-
   Parts) hat downloadVODPart's onProgress UNGEWRAPPT an die UI
   gegeben. Bar zeigte 'X% von Part i' statt 'gewichtete overall %'.
   Bei Part-Wechsel sprang er von 100% zurueck auf 0%. Bei Part 1
   mit 50% Stream-Progress zeigte der Bar 50% obwohl overall erst
   bei 8.3% (1 von 6 Parts halb fertig).

3. Full-VOD-Download (kein --hls-duration) hatte kein expected total
   fuer den bytes-Estimate -> blieb in indeterminate-Mode.

Fixes:

- downloadVODPart bekommt optionalen  Parameter.
  Path A schaetzt jetzt progress aus downloadedBytes / (duration *
  ~625 KB/s, Twitch ~5 Mbit/s Schaetzung), gecappt bei 95%. Wenn
  streamlink-stdout-% rauskommt, override mit dem (genauer). Nur
  noch progress=-1 wenn weder bytes noch streamlink-% verfuegbar.

- Part-based-Split (downloadVodWithStrategy) wrappt onProgress jetzt
  mit einem Aggregator: pro Part den max-bekannten %-Wert merken,
  overallProgress = avg(allParts). Bei Part-Done aus dem Loop
  partProgresses[i] = 100 setzen. Bar steigt monoton von 0% auf
  100% ueber alle Parts.

- Full-VOD-Download passt totalDuration als expectedTotalSec an
  downloadVODPart, sodass auch hier der bytes-Estimate greift.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 02:38:16 +02:00
build chore: migrate repository to Codeberg, bump version to 4.2.0, update update logic 2026-03-01 20:23:21 +01:00
docs ui: VOD sort dropdown with persisted key + locale labels 2026-05-03 15:54:53 +02:00
scripts refactor: relocate update-version-utils to src/main/domain/ + vitest 2026-05-11 21:42:05 +02:00
src release: 5.0.12 — Progress-Logik komplett neu geschrieben 2026-05-20 02:38:16 +02:00
tasks release: 5.0.0 — vitest + SQLite + OAuth storage/flow + Smart-Resume foundation 2026-05-11 23:48:02 +02:00
.gitignore .gitignore: tmp_e2e_full/tmp_bugtest/tmp_dl test artifacts + codeberg stub 2026-05-12 01:24:02 +02:00
CHANGELOG.md docs: comprehensive CHANGELOG 4.6.155 -> 5.1.0-alpha.1 2026-05-12 01:03:06 +02:00
CLAUDE.md docs: CLAUDE.md update module inventory (19 modules, 17 test files, 210 tests) 2026-05-11 23:58:11 +02:00
eslint.config.mjs chore: add ESLint with security plugin, fix code quality warnings 2026-03-22 14:55:35 +01:00
package-lock.json release: 5.0.12 — Progress-Logik komplett neu geschrieben 2026-05-20 02:38:16 +02:00
package.json release: 5.0.12 — Progress-Logik komplett neu geschrieben 2026-05-20 02:38:16 +02:00
README_AI_RELEASE.md docs: add AI release runbook for gitea 2026-03-05 01:04:18 +01:00
tsconfig.json chore: migrate repository to Codeberg, bump version to 4.2.0, update update logic 2026-03-01 20:23:21 +01:00
vitest.config.ts build: vitest config (node env, src/**/*.test.ts) 2026-05-11 21:39:46 +02:00