ci/woodpecker/push/build Pipeline was successful
Set *DefaultBRColorMode: None in the vendor PPD so every job sends <</UseCIEColor false>>: Brother's Normal/Vivid modes enable the printer's own CIE conversion, which washed the colours out. Add six APPrinterPreset entries mapping print-color-mode and print-quality from driverless (AirPrint/IPP) clients onto the Brother device options; they use the notation CUPS generates itself (Apple metadata as 'key value' pairs, PPD options as '*Name Value'), because key=value strings are silently discarded. print-quality is 3/4/5. Add the PRINTER_OPTIONS env var: whitespace-separated key=value pairs applied as queue defaults on every start via lpadmin -o, validated against the queue's PPD, with warnings instead of a failed startup. Document all of it in the README. The VividNoCIE candidate was dropped after test prints showed no difference from None. Archive the OpenSpec change and sync the printserver/cups spec with the two new requirements.
5.7 KiB
5.7 KiB
Tasks
1. PPD: Farbmodus-Default, Presets und Dokumentation
- 1.1
assets/Brother HL-4150CDN/ppd/BR4150_2.PPD:*DefaultBRColorModevonNormalaufNoneändern, alle eigenen Ergänzungen mit%-Kommentar (Herkunft/Zweck) markieren. Verifikation:grep -n 'DefaultBRColorMode\|^% Modified' "assets/Brother HL-4150CDN/ppd/BR4150_2.PPD"zeigt*DefaultBRColorMode: Noneund den Kommentar. - 1.2 PPD: sechs
APPrinterPreset-Einträge ergänzen (Kombinationen color/monochrome × low/normal/high gemäß Tabelle indesign.md). Verifikation:grep -c '^\*APPrinterPreset' "assets/Brother HL-4150CDN/ppd/BR4150_2.PPD"ergibt 6, und nach einem Build listetlpoptions -p <queue> -lweiterhin alle Optionen ohne PPD-Warnung in/var/log/cups/error_log. Ergebnis (2026-10-20): Zunächst als einzeiligekey=value-Strings geschrieben – CUPS verwarf alle sechs stillschweigend (_ppdParseOptions()trennt an Whitespace,key=valuewurde zum Namen). Mit libcups-2.4.2-Harness (_ppd_cache_t-Inspektion) belegt und auf das von CUPS selbst erzeugte Format umgestellt (mehrzeilig, Apple-Metadaten alskey value, PPD-Optionen als*Name Value). Danach greifen alle sechs impstops-Pfad (siehe 3.x). - 1.3 PPD: Choice
VividNoCIEunterBRColorModeergänzen (<</UseCIEColor false /BRColorMode 1>>setpagedevice) und per Testdruck gegenNonevergleichen; nur behalten, wenn der Ausdruck deutlich gesättigter ist. Verifikation:lpoptions -p <queue> -lzeigt die Choice, die Entscheidung (behalten/entfernen) ist im README-Auswertungs-Abschnitt notiert. Ergebnis (2026-10-20): TestdruckeBRColorMode=VividNoCIE(Job 5) undBRColorMode=None(Job 6) sind nicht unterscheidbar → Choice wieder entfernt (README/Tabelle bereinigt). - 1.4 README: Abschnitt „Farben sind blass" (Ursache
UseCIEColor, durchgeführte Testreihe mitlp -o BRColorMode=…, ErgebnisNone), Abschnitt „Änderungen an der Hersteller-PPD" (welche Einträge ergänzt wurden und warum) und Abschnitt „Optionen fehlen im macOS/iOS-Dialog" (nur IPP-Standardoptionen sichtbar, PPD-Optionen überPRINTER_OPTIONS/CUPS-Web-UI/lp). Verifikation: die im README genanntenlp/lpoptions-Befehle laufen unverändert gegen den laufenden Container.
2. entrypoint: PRINTER_OPTIONS
- 2.1
entrypoint.sh:PRINTER_OPTIONS(Standard leer) nach der Queue-Erzeugung in Tokenskey=valuezerlegen und jedes perlpadmin -osetzen, an derselben Stelle wieprinter-is-shared/-D/-d, bei jedem Start. Verifikation: Start mitPRINTER_OPTIONS="BRColorMode=Vivid TonerSaveMode=False"undlpoptions -p <queue> -lzeigtVividundTrueals Default (*Vivid,*True). - 2.2 Fehler pro Token abfangen, damit
set -euden Start nicht abbricht, und warnen. Verifikation: Start mitPRINTER_OPTIONS="NoSuchOption=Foo"erzeugt eine Warning-Zeile im Log, der Container erreicht „ready: CUPS on 631/tcp" undlpstat -rmeldet „scheduler is running". - 2.3 README: neue Zeile in der Env-Var-Tabelle plus Kurzbeispiel unter
„Environment variables" (inkl. Hinweis
lpoptions -p <queue> -lzur Entdeckbarkeit der Namen). Verifikation: das Beispiel aus der Tabelle in einenpodman run-Befehl übertragen, Start undlpoptions-Abfrage wie beschrieben.
3. Integrationstests am laufenden System
- 3.1 Image neu bauen und Container starten.
Verifikation:
podman build -t printserver:latest .endet ohne Fehler, das Log enthält „ready: CUPS on 631/tcp, mDNS on 5353/udp". Ergebnis (2026-10-20, podman 6.1.4/macOS-VM): Build und Start ok; der Container bindet 631 nur nachpodman machine ssh -- sudo sysctl -w net.ipv4.ip_unprivileged_port_start=631(rootless VM) – danach „ready". - 3.2 S/W-Druck aus dem macOS-Dialog (derselbe Farbjob wie zuvor).
Verifikation: Ausdruck ist schwarz/weiß – vorher kam er farbig heraus.
Server-seitig verifiziert (2026-10-20):
print-color-mode=monochrome→<</BRProcessColor 1>>. Sichtprüfung durch Nutzer (2026-10-20): Testseite 2 ist schwarz/weiß. Bestanden. - 3.3 Farbdruck ohne weitere Optionen aus dem Dialog und per
lp -d <queue> test.pdf. Verifikation: Ausdruck ist so gesättigt wie der bisherigeBRColorMode=None-Testdruck;lpoptions -p <queue> -lzeigt*Noneals Farbmodus-Default. Verifiziert (2026-10-20):lpoptionszeigt*None,pstopsemittiert<</UseCIEColor false>>auch ohne Job-Optionen. Sichtprüfung durch Nutzer: Testseite 1 ist kräftig/gesättigt (nicht mehr blass). Bestanden. - 3.4 Qualitätsstufen prüfen.
Verifikation:
lp -o print-quality=3 test.pdf(IPP draft, sichtbar tonersparender:true tonersave) undlp -o print-quality=5 test.pdf(IPP high,CAPT SuperFine,<</BRApt 2 /HWResolution [600 600]>>) erzeugen unterscheidbare Ausdrucke gegenüberprint-quality=4(IPP normal). Hinweis: IPP-print-qualityist 3/4/5 – nicht 2/5. Verifiziert (2026-10-20): serverseitig impstops-Output (3 →true tonersave, 5 →BRApt 2); Sichtprüfung durch Nutzer: Seite 3 (draft) blass/tonersparend, klar unterscheidbar von 1/4. Seite 1 = 4 erwartungsgemäß (SuperFine vs. Fine bei diesem Testmotiv optisch gleich, serverseitig aber gesetzt). Bestanden.
Workflow follow-up
- Nach Review und grünem Durchlauf die Änderung mit
/opsx-archivearchivieren und das Ergebnis prüfen.