velxio/frontend/src
David Montero Crespo bfe94a19f5 feat(epaper): decode the UC8179/GD7965 7.5" panel + fix its BUSY polarity
The 7.5" 800x480 dashboard (GxEPD2_750_T7) rendered blank: it is a UC8179 /
GD7965 controller, but the panel config claimed controllerFamily 'ssd168x',
so the SSD168x decoder (which only reads 0x24/0x26/0x44/0x45) ignored its
0x10/0x13 DTM stream.

- Add a Uc8179 decoder (worker Uc8179EpaperSlave + browser Uc8179Decoder).
  UC8179 is the same UltraChip command family as the UC8159c (0x10/0x13 DTM,
  0x12 refresh) but mono (1 bit/px). GxEPD2 writes the visible image to 0x13
  (DTM2 "current"; 0x10 is the ignored "previous"), framed by 0x91/0x90
  (partial window, pixel coords MSB-first)/0x13 data/0x92. Data lands at
  absolute pixel coords inside the window, so compose is just the RAM. The
  Frame reuses the SSD168x palette (0=black, 1=white) so paintFrame renders it.
- EPaperPanels.ts: add the 'uc8179' family and point epaper-7in5-bw at it.
  EPaperPart.ts + esp32_worker.py dispatch 'uc8179' to the new decoder.
- Fix the BUSY polarity: UC8179 (like the UC8159c) idles BUSY HIGH, not LOW.
  The worker seeded BUSY LOW for every non-uc8159c panel, so GxEPD2_750_T7's
  _PowerOn()/_InitDisplay() busy-wait timed out (~10 s, "Busy Timeout!") on
  every refresh. Now _PowerOn returns in ~129 us.
- esp32_worker.py: the runtime sensor_attach epaper path still emitted the
  epaper_update payload nested under 'data' (the old double-wrap bug); emit
  it flat like the init path.

The 5.65" ACeP UC8159c example already rendered (it has its own decoder and
got the WS-plumbing fix); verified the 7 colour bars are correct.
2026-06-04 23:45:37 -03:00
..
__pro_stub__ feat: STM32 (Blue Pill / Black Pill) QEMU emulation + Pro board gating 2026-05-30 19:06:14 -03:00
__tests__ fix(epaper): correct orientation across all boards + Pico VCC wire 2026-06-04 23:15:37 -03:00
assets feat: STM32 (Blue Pill / Black Pill) QEMU emulation + Pro board gating 2026-05-30 19:06:14 -03:00
components feat(examples): add a Retro category to the gallery sidebar 2026-06-04 22:08:43 +02:00
data fix(epaper): correct orientation across all boards + Pico VCC wire 2026-06-04 23:15:37 -03:00
desktop feat: STM32 (Blue Pill / Black Pill) QEMU emulation + Pro board gating 2026-05-30 19:06:14 -03:00
hooks
i18n chore(pricing): free tier shows 20 daily AI credits (up to 600/month) 2026-06-02 05:37:57 +02:00
lib feat: STM32 (Blue Pill / Black Pill) QEMU emulation + Pro board gating 2026-05-30 19:06:14 -03:00
pages feat(editor): rename boards & custom chips; show which target owns each file 2026-06-04 06:22:25 +02:00
services feat(custom-chip): newly-added programmable chip auto-gets an editable program; chaser-c goes board-less 2026-06-03 22:52:11 +02:00
simulation feat(epaper): decode the UC8179/GD7965 7.5" panel + fix its BUSY polarity 2026-06-04 23:45:37 -03:00
store feat(editor): rename boards & custom chips; show which target owns each file 2026-06-04 06:22:25 +02:00
tokens
types feat(editor): rename boards & custom chips; show which target owns each file 2026-06-04 06:22:25 +02:00
utils feat(editor): per-target compilation console — a section per board/chip 2026-06-04 07:56:54 +02:00
velxio-elements
App.css
App.tsx
entry-server.tsx
index.css
main.tsx feat(motors): fix stepper rotation + add A4988 driver (real Fritzing SVG) 2026-05-31 16:28:34 -03:00
seoRoutes.ts
vite-env.d.ts