Wrapper `timeout 360` autour de pagedjs-cli pour SIGTERM-er le process si
Chrome hang au-delà du protocolTimeout interne. Détecte le code 124 du shell
timeout pour donner un message clair à l'utilisateur.
Cron de cleanup orphan installé manuellement sur le VPS dans
/etc/cron.d/web2print-cleanup (toutes les 15 min, appelle worker.php --cleanup).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Nouveau système de jobs : POST /jobs (async), GET /jobs/{id} (status), GET /jobs/{id}/result (PDF), DELETE /jobs/{id}
- worker.php spawné en arrière-plan via nohup, lit la sortie pagedjs-cli ligne par ligne via proc_open et écrit la progression dans tmp/job_{id}.status.json
- Migration de pagedjs-cli en install local (node_modules) pour persister le patch protocolTimeout via patch-package
- CI : déploie package.json, worker.php, patches/, et lance npm install (qui réapplique les patches via postinstall)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Move all files from deploy/ to project root, replace .gitlab-ci.yml
with .forgejo/workflows/deploy.yml using Gitea Actions format.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>