Skip to content

fix(engine): remove periodic grain from monochrome dashboards - #4

Merged
l-you merged 1 commit into
mainfrom
fix/crisp-monochrome
Oct 7, 2026
Merged

l-you merged 1 commit into
mainfrom
fix/crisp-monochrome

Conversation

@l-you

@l-you l-you commented Oct 7, 2026

Copy link
Copy Markdown
Member

Dark text and solid fills such as CSS #111 were converted into a repeating 4×4 pattern with white holes before reaching ESP32. Default monochrome conversion now uses a fixed luminance threshold, preserving solid dark ink.

  • Keep ordered Bayer dithering available explicitly through Result.FrameWithMode for grayscale imagery.
  • Preserve viewport geometry, composition, clipping, packed-bit polarity and pixel-local conversion used by partial damage detection.
  • Add regressions for real text, #111/#333/#555 fills, default gray conversion and invalid modes; retain the existing anchored dithering test.

Validation: the reproduction failed before the fix and passes afterward. Full clean-candidate make quality passed: stable 94.8% coverage in three runs, 100% changed coverage, lint/race/vet/audit, native/interoperability, TinyGo, ESP32 and Linux builds. Before/after local PNG previews confirm the grid is removed.

Tradeoff: default thresholding does not retain gray-tone densities in photos; image-oriented callers can explicitly select OrderedDither. This updates the Go manager/renderer; no ESP32 firmware change is required. Physical panel verification is pending.

Use fixed luminance thresholding for default text and solid fills. Keep display-anchored Bayer halftoning available explicitly through FrameWithMode for grayscale imagery.

Reproduce lost opaque #111 ink before the fix; cover dark fills, real text, invalid modes and retained dithering. Full clean-candidate quality passed with stable 94.8% coverage and 100% changed coverage. Physical panel verification remains pending; ESP32 protocol and firmware are unchanged.

AI-Impact: co-developed
AI: cx
@l-you
l-you merged commit d6bd28d into main Oct 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant