Skip to content

v1.1.0

Latest

Choose a tag to compare

@LukiPrince LukiPrince released this 22 Jul 20:52

Four v2 features — job control + observability. Fully backward compatible: the SQLite schema migrates in place on first start (existing jobs default to copies=1, carry no callback, and never re-fire webhooks).

Added

  • Job copiesPOST /jobs accepts copies (integer 1100, default 1); the agent prints the job that many times, on every backend (win32print / SumatraPDF / CUPS / raw socket).
  • Job cancelDELETE /jobs/{id} cancels a still-queued job → cancelled (409 once an agent has claimed it — no mid-print interrupt, 404 if unknown). Cancel button on queued rows in the dashboard.
  • Webhooks — set a per-job callback_url; the server POSTs the outcome {job_id, state, error, title, printer_id} once the job reaches a terminal state (done / failed / cancelled). Best-effort with retries, at-least-once (make your handler idempotent — dedupe on job_id+state), unsigned, http(s)-only.
  • GET /metrics — Prometheus text: printpapi_jobs{state=…} (all five states), printpapi_agents_online / _total, printpapi_printers_total. Client-auth; scrape with a bearer token.

Notes

  • 101 tests (was 67), green on Linux + Windows / Python 3.12.
  • Each feature was adversarially reviewed; every confirmed finding fixed.
  • Docker image built by this release: ghcr.io/lukiprince/printpapi:1.1.0 and :latest (amd64 + arm64).

Full changelog: v1.0.0...v1.1.0