[Feature/Backend] AirPrint queue detection and Stage 2 unmanaged-colour warning #202

Closed
opened 2026-09-17 11:18:18 +01:00 by gronod · 0 comments
Owner

Summary

AirPrint queues apply mandatory driver-side color management and raster filtering that corrupt profiling targets. Detect AirPrint queues during printer enumeration and present a warning badge in Stage 2.

Implementation Plan

Implement detection heuristics per docs/14-iccery-cpu-targetprint.md §10.2: flag as AirPrint if the device URI contains apple-airprint:// — or if the PPD contains *APAirPrint: True — or if printer-make-and-model contains both "Apple" and "AirPrint" — or if the URI scheme is ipps:// (or ipp:// with mDNS subtypes) and the PPD text contains "airprint" or *cupsFilter2 points to image/urf. Populate Printer.isAirPrint in CupsService.listPrinters via a single non-blocking lpstat -v call. Present airPrintWarningBadge in Stage2View ("AirPrint queue — unmanaged color cannot be guaranteed.").

Acceptance Criteria

  • Printer.isAirPrint correctly set for all detection rules, including ipp:// driverless URIs and image/urf filter chains.
  • Negative test passes for standard USB raster drivers (e.g. Epson XP-55).
  • Stage 2 badge displays when an AirPrint queue is selected.

Dependencies

Blocked by #201.

References

  • docs/14-iccery-cpu-targetprint.md §10.2
  • Packages/ICCeryCore/Sources/ICCeryCore/Print/CupsService.swift
  • Sources/ICCery/Stage2View.swift
## Summary AirPrint queues apply mandatory driver-side color management and raster filtering that corrupt profiling targets. Detect AirPrint queues during printer enumeration and present a warning badge in Stage 2. ## Implementation Plan Implement detection heuristics per `docs/14-iccery-cpu-targetprint.md` §10.2: flag as AirPrint if the device URI contains `apple-airprint://` — or if the PPD contains `*APAirPrint: True` — or if `printer-make-and-model` contains both "Apple" and "AirPrint" — or if the URI scheme is `ipps://` (or `ipp://` with mDNS subtypes) and the PPD text contains "airprint" or `*cupsFilter2` points to `image/urf`. Populate `Printer.isAirPrint` in `CupsService.listPrinters` via a single non-blocking `lpstat -v` call. Present `airPrintWarningBadge` in `Stage2View` ("AirPrint queue — unmanaged color cannot be guaranteed."). ## Acceptance Criteria - [ ] `Printer.isAirPrint` correctly set for all detection rules, including `ipp://` driverless URIs and `image/urf` filter chains. - [ ] Negative test passes for standard USB raster drivers (e.g. Epson XP-55). - [ ] Stage 2 badge displays when an AirPrint queue is selected. ## Dependencies Blocked by #201. ## References - `docs/14-iccery-cpu-targetprint.md` §10.2 - `Packages/ICCeryCore/Sources/ICCeryCore/Print/CupsService.swift` - `Sources/ICCery/Stage2View.swift`
gronod added this to the M12 — Native print spool milestone 2026-09-17 11:18:18 +01:00
gronod added the Kind/Feature
Priority
Medium
3
Project/ICCery-v2Feature/Backend
labels 2026-09-17 11:18:19 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: gronod/iccery-v2-mac#202