- Wrap browser lifecycle in try/finally so browser.close() always runs
- Fall back to SIGKILL of browser.process() if close() fails
- Add --disable-dev-shm-usage to launch args (container stability)
- Add tini as ENTRYPOINT in Dockerfile for defense in depth
- Bump version to 1.0.2
- Refactor conversion logic into reusable convert.js module
- Add HTTP server with upload UI, HTML/PDF download, and live preview
- Dockerfile with Chromium for server-side PDF rendering
- Local mermaid.min.js injection for offline diagram rendering
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>