Bug: /crawl/status and /crawl/download handlers were placed after
return statement in do_GET, making them dead code. Static file
check would 404 + fall through to index.html (HTML 200), masking
the real issue.
Fix: move /crawl/* API handlers to top of do_GET, before static
file check. Now /crawl/status returns JSON, /crawl/download
returns file with proper Content-Disposition.
Also: cleanup duplicate def do_GET introduced by earlier patch.
Reported by: Hermes (@Ir_workbot)
- Single URL to PDF via Puppeteer (Chrome headless)
- Doc Site Crawler: crawl entire documentation sites
- Auto-extract all pages from TOC navigation
- 20-page batch processing with browser restart (anti-OOM)
- Output: PDF + Markdown
- Flask-style HTTP server on port 8099
- Deployed at https://pdf.donton.cloud/url2pdf