- .github/workflows/build.yml: build the Flipper FAP (ufbt, release + dev
SDK channels), the Cloudflare Worker (tsc + wrangler dry-run bundle) and
the ESP32-S2 firmware (ESP-IDF v5.2.8) on every push to main and every
pull request; syntax-check the inline scripts of the web image-prep page;
run `ufbt lint` as a non-blocking advisory job. No path filters, because
the shared UART protocol header is compiled into both the FAP and the
ESP firmware.
- Makefile: one entry point for developers (setup, build-all, build-fap,
build-worker, build-esp, launch, flash-esp, serve-web, lint, clean).
Works with the stock GNU Make 3.81 on macOS. Auto-detects the ESP-IDF
Python virtualenv when export.sh would otherwise look for one matching
a newer system python3.
- esp32-wifi-fw/sdkconfig.defaults: pin CONFIG_IDF_TARGET="esp32s2" so
clean builds (CI, fresh clones) no longer fall back to plain esp32.
- cloud-plugins/package.json: add the `build` script (wrangler dry-run
bundle) that the Makefile and CI rely on.
- README/CONTRIBUTING: document the make targets and CI; add a build badge.
- .gitignore: ignore .venv/ and the .clang-format generated by ufbt lint.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- 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 ;)').