3 Commits

Author SHA1 Message Date
i12bp8 99bcc162b8 web-image-prep: chroma-contracted quantiser for newsprint illusion
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.
2026-04-26 21:03:10 +02:00
i12bp8 ad9b6dd2fe web-image-prep: hue-aligned tri-colour quantiser + serpentine dither
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.
2026-04-26 20:59:15 +02:00
i12bp8 d608afb43b Drop-folder image flow + web image preparer
- 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 ;)').
2026-04-26 15:40:27 +02:00