On ZIMs that pack one logical article as several sub-pages (e.g. iFixit), iterByPath yields more entries passing our isArticleEntry() filter than archive.articleCount reports. The inter-batch progress used nextOffset / articleCount, so the numerator outran the denominator, the ratio overflowed past 100%, and the UI (which clamps at 99%) pinned the file at 99% for the entire remaining tail, making it look hung. Grow the denominator to max(articleCount, nextOffset + ZIM_BATCH_SIZE) once we pass the reported article count, so progress keeps creeping forward monotonically instead of freezing, and clamp to 99% so only the genuinely-final batch reports 100%. This is a graceful heuristic, not exact progress (true accuracy would require a pre-scan to count isArticleEntry matches up front); it removes the user-visible "stuck at 99%" symptom with no change to batch semantics. Closes #903 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| controllers | ||
| exceptions | ||
| jobs | ||
| middleware | ||
| models | ||
| services | ||
| utils | ||
| validators | ||