refactor(print): extract PMTicketBridge from PrintPanelService (#201 Phase 1) #203

Merged
gronod merged 1 commits from feat/201-pm-ticket-bridge into milestone/m12-native-spool 2026-09-17 12:16:27 +01:00
Owner

Summary

Phase 1 of the M12 megaplan for #201: pure refactor extracting every Core Printing (PM*) call in PrintPanelService into a shared @MainActor PMTicketBridge (decision D12), so the Phase 2 ticket serialise/restore path and the Phase 4 native spooler share one documented ownership policy.

Changes

  • New Sources/ICCery/Print/PMTicketBridge.swift: Handles (session/settings/pageFormat/object), Binding (makePrinter/release/bind/currentPrinterID), Values (setValue/stringValue), Paper (applyPaper/customPaperDimensions) — moved verbatim from PrintPanelService.
  • PrintPanelService now calls the bridge; local unsafeBitCast/PMRelease/paper helpers deleted. sessionBindingFailed moved into PMTicketError.

Gate evidence (zero behaviour change)

  • xcodebuild test -scheme ICCery -only-testing:ICCeryCoreTests (x86_64): 483 tests, 1 failure — ArgyllRunnerPrinttargTests.testDeterminism (malformedManifest: No JSON document found in printtarg stdout), a real-subprocess flake unrelated to this refactor (the diff touches no Argyll code); passes on isolated re-run.
  • No CI runs on feat→milestone PRs per .gitea/workflows/macos.yml; local gate is the merge evidence.
## Summary Phase 1 of the M12 megaplan for #201: pure refactor extracting every Core Printing (`PM*`) call in `PrintPanelService` into a shared `@MainActor` `PMTicketBridge` (decision D12), so the Phase 2 ticket serialise/restore path and the Phase 4 native spooler share one documented ownership policy. ## Changes - New `Sources/ICCery/Print/PMTicketBridge.swift`: Handles (`session`/`settings`/`pageFormat`/`object`), Binding (`makePrinter`/`release`/`bind`/`currentPrinterID`), Values (`setValue`/`stringValue`), Paper (`applyPaper`/`customPaperDimensions`) — moved verbatim from `PrintPanelService`. - `PrintPanelService` now calls the bridge; local `unsafeBitCast`/`PMRelease`/paper helpers deleted. `sessionBindingFailed` moved into `PMTicketError`. ## Gate evidence (zero behaviour change) - `xcodebuild test -scheme ICCery -only-testing:ICCeryCoreTests` (x86_64): 483 tests, 1 failure — `ArgyllRunnerPrinttargTests.testDeterminism` (`malformedManifest: No JSON document found in printtarg stdout`), a real-subprocess flake unrelated to this refactor (the diff touches no Argyll code); passes on isolated re-run. - No CI runs on feat→milestone PRs per `.gitea/workflows/macos.yml`; local gate is the merge evidence.
gronod added 1 commit 2026-09-17 12:16:18 +01:00
refactor(print): extract PMTicketBridge from PrintPanelService
macOS CI / build-and-test (push) Skipped
ee5da4a637
Centralise every Core Printing (PM*) call in one @MainActor bridge so
the upcoming ticket serialise/restore path and native spooler share a
single documented ownership policy. Pure move — no behaviour change.
gronod merged commit ffbe56f43a into milestone/m12-native-spool 2026-09-17 12:16:27 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gronod/iccery-v2-mac#203