feat: orientation model, password confirm, frontend build

- Collapse orientation to landscape/portrait (ribbon left = portrait standard)
- Add OrientationPicker component and wire settings sheet in HomeView
- Add password confirmation field to registration form (RepeatedType)
- Build frontend SPA to public/build/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-04 16:59:03 -04:00
parent 2e5ef7fe78
commit 6bce4822e7
124 changed files with 82380 additions and 82 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+16
View File
@@ -8,3 +8,19 @@ monitor_port = /dev/ttyUSB0
board_build.filesystem = littlefs
lib_deps =
ricmoo/QRCode@^0.0.1
; Flash a single image from firmware/data/img.bin — no WiFi, no server needed.
; 1. pio run -e test-display --target uploadfs (upload the image)
; 2. pio run -e test-display --target upload (upload the sketch)
[env:test-display]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
upload_port = /dev/ttyUSB0
monitor_port = /dev/ttyUSB0
board_build.filesystem = littlefs
build_flags = -DENV_TEST_DISPLAY
build_src_filter = +<epd.cpp> +<test_display.cpp>
lib_deps =
ricmoo/QRCode@^0.0.1
+7 -7
View File
@@ -15,13 +15,13 @@
#define RESET_HOLD_MS 5000
// ── EPD color nibbles ────────────────────────────────────────────────────────
#define COLOR_BLACK 0x0
#define COLOR_WHITE 0x1
#define COLOR_GREEN 0x2
#define COLOR_BLUE 0x3
#define COLOR_RED 0x4
#define COLOR_YELLOW 0x5
#define COLOR_ORANGE 0x6
// Verified on Waveshare 7.3" hardware. Same map on 13.3" Spectra 6.
#define COLOR_BLACK 0x0
#define COLOR_WHITE 0x1
#define COLOR_YELLOW 0x2
#define COLOR_RED 0x3
#define COLOR_BLUE 0x5
#define COLOR_GREEN 0x6
// ── NVS ──────────────────────────────────────────────────────────────────────
#define NVS_NAMESPACE "pf"
+41
View File
@@ -0,0 +1,41 @@
#ifdef ENV_TEST_DISPLAY
#include <Arduino.h>
#include <SPI.h>
#include <LittleFS.h>
#include "config.h"
#include "epd.h"
void setup() {
Serial.begin(115200);
Serial.println("display test boot");
pinMode(PIN_CS, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_RST, OUTPUT);
pinMode(PIN_BUSY, INPUT);
SPI.begin(PIN_SCK, -1, PIN_MOSI, PIN_CS);
SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0));
LittleFS.begin(true);
File f = LittleFS.open("/img.bin", "r");
if (!f) {
Serial.println("ERROR: /img.bin not found — did you run uploadfs?");
return;
}
Serial.printf("/img.bin: %u bytes\n", f.size());
epd_init();
epd_draw_image_from_file(f);
f.close();
epd_sleep();
Serial.println("done");
}
void loop() {
delay(60000);
}
#endif