Previous version pulled accent ink too aggressively (accentPull 0.85)
so anything red-leaning collapsed to solid red. Real photographic feel
from a 3-ink palette comes from W/B halftones simulating greys with
the chromatic ink only sparsely overlaid - the newsprint illusion.
Three knobs now make this work:
- L_WEIGHT 3.5 (was 1.6): lightness completely dominates the metric
- CHROMA_CAP: source a/b axes pre-scaled to the achievable accent
chroma so the dither isn't asked for more colour than one ink can
deliver. Excess chroma gets dropped via FS error diffusion through
B+W neighbours.
- accentPull 0.06 (was 0.85): only a tiebreaker bonus, used in the
most strongly hue-aligned pixels.
The old quantiser pulled accent ink toward any chromatic pixel using a
flat chroma bonus, which smeared red across shadows and produced flat
red blobs without depth. Two fixes:
- Distance now weights L (lightness) ~1.6x more than chroma, so dark
pixels go to black and light pixels to white before colour competes.
That preserves the photograph's tonal structure.
- Accent attraction is the squared *signed projection* of the pixel's
chroma onto the accent direction. Red ink only pulls red-leaning
pixels (positive a*); blue/green never picks red. The squaring gives
a smooth ramp, so faint reds get sparse red dither and saturated
reds get dense red - matching how a real risograph layers a single
chromatic ink under W/B halftones.
Also flipped Floyd-Steinberg to a serpentine scan with mirrored kernel
on reverse rows, killing the diagonal worm artefacts that gave smooth
gradients an obviously-dithered look.
- Add web-image-prep/: self-contained HTML5 image preparer with
perceptual Oklab 3-colour quantisation, Floyd-Steinberg/Atkinson/
Bayer dither, all supported tag profiles, BMPs that match the FAP
reader exactly. Auto-deployed to GitHub Pages.
- Add 'Set Image' under Targeted Payloads. Lists every BMP in
apps_data/tagtinker/dropped/, scrolls long names, marks foreign-
resolution files with a '~' prefix.
- Stream-time nearest-neighbour rescaling so any BMP can target any
tag at any page; image options screen is now Page-only.
- Remove Phone Sync menu and the Android companion app: replaced by
the browser preparer + drop folder.
- Static, IR-friendly transmit screen ('Tinkering Tag', point hint,
3-dot loader, 'Flipped ;)').