# Aurora QR

A realtime, full-field aurora whose frames encode `https://qr.jdt.engineering/aurora/`. The three palettes, drift speed, pause, Smooth switch, fullscreen and PNG export work locally in the browser. Fullscreen has a browser-filling theatre fallback when the native API is unavailable. Reduced-motion preference starts paused; background tabs stop requesting frames.

The wave field is an original combination of drifting sinusoidal curtains and fine interference. It supplies a target at every data/parity module, not a central picture. A worker solves an affine Reed–Solomon padding system for every requested frame. Payload bytes remain fixed; unused post-terminator padding changes and parity is recomputed. This is deliberately noncanonical padding, not a claim that the padding matches a conventional encoder. There are no intentionally damaged bits.

Version 6-L has 41 × 41 modules and a four-module white quiet zone. Its alignment pattern is near the bottom-right edge; there is no interior or central alignment marker. The required structural cells are always solid black/white. Data modules use scene-dependent colours with dark components no greater than 74 and light components at least 210. Smooth draws 90% data marks over the scene colour while preserving the module centers and full-size structural cells.

`audit.json` records independent Nayuki reconstruction, function/quiet-zone checks, and ZXing/OpenCV results for 18 real app-generated snapshots across three palettes and six times. Both Smooth and sharp SVGs pass both decoders at 784, 392 and 294px: 216 successful decoder reads. The samples are not proof for every possible future animation frame or every physical phone; pause and enlarge for easier scanning. `samples/` contains the actual decoded samples and raw matrix data.

`browser-checks/report.json` covers the actual 1920 × 930 desktop and 390px mobile app: pause stability, palette change, fullscreen/theatre, PNG download, no horizontal overflow and no runtime exceptions. The same browser test checks the paired glass gallery's 24 cards, filtering, enlarged view and Smooth-dependent downloads. `display-audit.json` includes the live browser canvas and desktop screenshot plus actual glass PNG exports resized to card/viewer sizes; one non-default sharp glass view at 686px is missed by OpenCV, while every sample passes ZXing.

## Run and reproduce

Serve this folder over HTTP with any static server; there are no runtime CDNs, accounts, uploads, dependencies or build steps. `art.js`, `app.js` and `worker.js` are the actual runtime source. `src/bit-field.ts` and the pinned MIT QR arithmetic in `src/core/` reproduce `lib/field.js` with esbuild.

In the native workspace, run:

```sh
node new-art/aurora/src/samples.mjs
node new-art/stained-glass/src/generate.mjs
node new-art/aurora/src/export-samples.mjs
source .venv/bin/activate
python new-art/aurora/src/verify-art.py
```

The paired audit script also checks the Stained Glass collection. Pillow, NumPy, OpenCV, zxing-cpp, CairoSVG and qrcodegen belong in the activated virtual environment. Use `node src/test.mjs` from this app for deterministic matrix/target checks.

Original scene, renderer and application source: MIT, copyright 2026 JDT. The upstream arithmetic's license and pinned provenance are in `src/core/`. Panton is an existing project font, separately licensed; no font relicensing is implied. No generated or external photographs are used.
