1. **Method Signature Update**: Added `bool active` parameter to `updateHint()` method across the display driver hierarchy:
- `DisplayManager::updateHint(x, y, active)` - delegates to driver
- `DisplayDriverTFT::updateHint(x, y, active)` - override implementation
- `DisplayDriverGFX::updateHint(x, y, active)` - override implementation
2. **Code Formatting**: `DisplayManager.h` reformatted (whitespace/comment style changes only)
- **Breaking Change**: All existing `updateHint(x, y)` calls will fail to compile until updated to include the `active` parameter
- **Enhanced Control**: Callers can now explicitly show/hide touch hints rather than just updating position, enabling better touch feedback UX (e.g., hide hint on touch release)
- **API Consistency**: All implementations in the driver hierarchy now enforce the same signature
1. **Added `active` parameter to hint animation**
- `updateHint()` now accepts a boolean `active` parameter across both display drivers (TFT and GFX)
- When `active=true`: faster pulse animation (500ms period) during active hold
- When `active=false`: slower pulse animation (2000ms period) during idle state
2. **Improved animation calculations**
- Replaced modulo operator with `fmodf()` for cleaner float calculations
- Standardized to `static_cast<uint8_t>()` for type conversions
- Fixed GFX driver to use `color565()` method instead of manual bit shifting
3. **Updated hint display logic**
- Now differentiates between "holding" state (fast pulse) and "idle" state (slow pulse)
- Hint draws at both states when `holdStartX >= 0` (touch position captured)
4. **Added code formatter task**
- New `mise.toml` task for running clang-format across all source files
- Users get **visual feedback differentiation**: fast pulsing during active hold vs. slow pulsing when idle
- More intuitive UI that clearly indicates whether a long-press is in progress or just waiting
- Cleaner, more maintainable code with standardized calculations and type conversions
1. **Display timing fixes for ESP32-S3-LCD-4.3**
- Corrected RGB panel timing parameters (hsync/vsync porch values)
- **Critical fix**: Set `pclk_active_neg = 1` (required for ST7262 panel)
- Added explicit PCLK speed of 16MHz
- These changes fix the blank/unstable display issue on Waveshare 4.3" boards
2. **Added memory diagnostics**
- Prints free heap and PSRAM at boot
- Helps verify PSRAM is properly initialized
3. **Duplicate loop() function**
- The `loop()` function appears twice in the .ino file
- Contains identical code for touch handling, hold-to-silence, and serial commands
- This is a build error waiting to happen
4. **New scaffold script**
- Added comprehensive project scaffolding script (`scaffold.sh`)
- Generates complete multi-target build structure with shared library and per-board drivers
- **ESP32-S3-LCD-4.3 board should now display correctly** (was likely blank before due to wrong timing)
- **Build will fail** due to duplicate `loop()` definition - needs immediate cleanup
- The scaffold script enables rapid project regeneration/setup for new installations
- TOUCH_SDA=17 SCL=18 RST=38 per Waveshare schematic
- GPIO 8/9 conflict with LCD_B0/B3 was blanking the display
- Banner uses BOARD_NAME macro instead of hard-coded E32R35T
- TFT_eSPI #error wrapped in USE_TFT_ESPI guard
- RGB test fills on separate lines so they actually execute
**Code formatting improvement** in the display initialization function:
- Reformatted a compressed one-liner containing RGB screen test code into properly structured, readable lines
- Split the color test sequence (RED → GREEN → BLUE) across multiple lines with preserved comments and delays
- **No functional changes** - the code behavior remains identical
- **Improved readability** - the color test sequence is now easier to understand and maintain
- **Better debugging** - individual test steps are clearly visible, making it easier to modify or troubleshoot the display initialization routine
Added RGB color test sequence commented out in the display initialization code:
- Red screen fill (0xF800)
- Green screen fill (0x07E0)
- Blue screen fill (0x001F)
- 2-second delays between each color
**Currently:** No functional impact - the test code is commented out, so it doesn't execute.
**If uncommented:** Would add a 6-second RGB test pattern on display startup, useful for verifying:
- Display color channel functionality
- Proper RGB565 color format support
- Screen initialization success
This appears to be debug/diagnostic code left in for future troubleshooting.
- TOUCH_SDA=17, TOUCH_SCL=18, TOUCH_RST=38 per Waveshare schematic
- GPIO 8/9 were conflicting with LCD_B0/B3, blanking the display
- Boot banner now uses BOARD_NAME macro from BoardConfig.h
GPIO 8/9 were assigned to both LCD blue data and I2C touch,
causing I2C init to steal the LCD pins and blank the display.
Corrected to match Waveshare ESP32-S3-Touch-LCD-4.3 schematic.
1. **Removed entire `loop()` implementation** - The main program loop is now completely empty
2. **Deleted duplicate `silenceAlerts()` functions** - Three identical copies were consolidated into one
3. **Stripped all functionality**:
- Touch handling for different screens (ALERT, DASHBOARD, OFF)
- Hold-to-silence gesture detection
- Display rendering and backlight control
- Serial command processing
⚠️ **This commit breaks the doorbell functionality completely**:
- The device will boot but do nothing (empty loop)
- Touch input won't be processed
- Screen won't update or display anything
- Serial commands won't work
- Alert silencing is defined but never called
This appears to be an incomplete snapshot/refactoring in progress, leaving the application non-functional.
1. **Gutted the main loop** - Reduced from ~80 lines to completely empty
2. **Removed duplicate code** - Eliminated 2 of 3 identical `silenceAlerts()` function definitions that were accidentally created
**Device is now completely non-functional:**
- No display updates or rendering
- Touch input completely ignored
- Alert silencing impossible (function defined but never called)
- Serial commands won't be processed
- Screen stays on/off in whatever state it was in
This is clearly an accidental commit or work-in-progress snapshot. The doorbell will compile and run but do absolutely nothing except the initial setup.
build.extra_flags replaces the esp32 core's platform-level flags,
which include CONFIG_IDF_TARGET_ESP32S3 — required by Arduino_GFX
for RGB panel support. compiler.cpp.extra_flags appends safely.
Required for uint16_t, Serial, millis() etc. when compiling
outside the .ino (Arduino IDE auto-includes Arduino.h for .ino
files but not for standalone .cpp files).
Restores the original behavior from before commit 46b0cb9:
delegates to logic.onTouch() which transitions state to SILENT.
This was a pre-existing bug (undefined function) exposed by the
multi-target refactoring changing compile guard structure.