The Phase 1 (#183) quality plumbing already covers detection,
extraction, capture, and lp emission — this change proves the Epson
path end-to-end with recorded fixtures.
- CupsParserTests: replace the synthetic cupsPrintQuality listing with
the recorded XP-55 line (301 302 *303 308 304 305 307 — driver order,
308 between 303 and 304); assert all seven ids enumerate unsorted,
the * default is 303, all seven PPD labels resolve, and EPIJ_Qual
wins detection over OutputMode/Resolution (R11).
- CupsOptionsFilterTests: captured EPIJ_Qual + canonical quality keys
survive the filter (roster verified complete post-#183 — no source
change needed; EPIJ_Quality kept as harmless alias, R16).
- LpArgsTests: explicit quality 305 emits -o EPIJ_Qual=305.
- PrintSessionViewModelTests + UI lpoptions fixture: recorded
seven-choice line feeds the picker; Stage 2 picker lists all seven
entries in driver order (new UI test).
Devin-AI: Devin <devin@cognition.ai>
Co-authored-by: Devin <devin@cognition.ai>
PR #199 merged into develop — merge commit 5e696ff3e9b21b5263e83d495de582363aeecdda (style=merge, expected head 19f619a verified pre-merge, branch retained).
Gate evidence
Local full gate at head 19f619a (x86_64): ICCeryCoreTests 483/0, ICCeryUITests 67/0, real xctest pass summary, no UI-skip warning (build/m11-sync-gate.log).
Post-merge develop CI: Actions run 37303 on 5e696ff — first attempt flaked with 2 UI assertion failures (testSpotReadButtonDisabledDuringChartread, testViewGamutOpensSceneKitSheet) on a tree identical to 19f619a (verified git diff --quiet); rerun green: Core unit step success, UI 66 executed / 1 skipped / 0 failed, package job success (DMG artifact uploaded).
Hardware gate evidence (R6/R12 — now closed)
Verified on real queues Epson_XP_55_Series (lpd) and Canon_Pro9500_II_series (smb), app build at 19f619a:
Epson: lpoptions -l shows EPIJ_Qual: 301 302 *303 308 304 305 307 — all seven choices; in-app Stage 2 quality picker lists all seven with English labels (Fast Economy … Best Quality). ✓
Canon: CNIJMediaType enumerates 18 choices; PPD carries unqualified English labels + 19 qualified locales incl. Thai — picker shows English labels only, no Thai. ✓
Panel binding: printer properties opened with a non-default queue selected — panel printer popup bound to the selected queue; paper/quality/media/orientation preselected to match ICCery. ✓
Capture echo: value changed in dialog → "Settings captured" notice; CUPS job tickets for the resulting spools carry the captured keys — job 42 (Epson): EPIJ_Qual=307, PageSize=A4, EPIJ_PageSize=A4, EPIJ_Medi=15, orientation-requested=portrait; job 43 (Canon): CNIJMediaType=0, PageSize=A4, orientation-requested=portrait; both carry AP.ColorMatchingMode=AP_ApplicationColorMatching + AP_ColorMatchingMode=AP_ApplicationColorMatching suppression. ✓
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR is opened for CI only — merge is DEFERRED to a later session pending the Actions run and the hardware gate (R6/R12). Do not merge.
Issue completion matrix
LpArgsemit, picker UI51c3073EPIJ_Qualseven-option quality enumeration with driver order + PPD labelsc9b423b<XX>hex escapes17677926adbf99Integration commits on this head
docs/21a11y-id roster:paperSizeGroup,printerPaperSizeSelect,qualityGroup,printerQualitySelect)origin/develop@62a45d9in viachore/m11-sync-develop, tree-empty, no rebase)Gate evidence
Full host-arch gate on this exact head SHA
19f619ad98fc8a5c18481517388e29e4033326fc(x86_64):ICCeryUITests.xctestpass summary, no UI-skip warningbuild/m11-sync-gate.logPhase 5 milestone gate at
6adbf99(pre-sync, same tree): Core 483/0, UI 67/0.Deferred
EPIJ_Qualenumeration, real Canon Pro9500 media labels, driver-PDE preselect acceptance via capture echo,lpargv) — milestone exit gate, not a PR blocker.Refs #183
Refs #180
Refs #181
Refs #186
M11 milestone-closure summary
PR #199 merged into
develop— merge commit5e696ff3e9b21b5263e83d495de582363aeecdda(style=merge, expected head19f619averified pre-merge, branch retained).Gate evidence
19f619a(x86_64): ICCeryCoreTests 483/0, ICCeryUITests 67/0, real xctest pass summary, no UI-skip warning (build/m11-sync-gate.log).testResetCameraInteractsWithScene) / 0 failed.5e696ff— first attempt flaked with 2 UI assertion failures (testSpotReadButtonDisabledDuringChartread,testViewGamutOpensSceneKitSheet) on a tree identical to19f619a(verifiedgit diff --quiet); rerun green: Core unit step success, UI 66 executed / 1 skipped / 0 failed, package job success (DMG artifact uploaded).Hardware gate evidence (R6/R12 — now closed)
Verified on real queues
Epson_XP_55_Series(lpd) andCanon_Pro9500_II_series(smb), app build at19f619a:lpoptions -lshowsEPIJ_Qual: 301 302 *303 308 304 305 307— all seven choices; in-app Stage 2 quality picker lists all seven with English labels (Fast Economy … Best Quality). ✓CNIJMediaTypeenumerates 18 choices; PPD carries unqualified English labels + 19 qualified locales incl. Thai — picker shows English labels only, no Thai. ✓EPIJ_Qual=307,PageSize=A4,EPIJ_PageSize=A4,EPIJ_Medi=15,orientation-requested=portrait; job 43 (Canon):CNIJMediaType=0,PageSize=A4,orientation-requested=portrait; both carryAP.ColorMatchingMode=AP_ApplicationColorMatching+AP_ColorMatchingMode=AP_ApplicationColorMatchingsuppression. ✓Issue → PR map
51c3073c9b423b17677926adbf99Plus integration: #197 (docs hygiene), #198 (develop sync). Milestone 34 closing with zero open issues.