58494cd0a7
Move ftpSrv.handleFTP() from Arduino loop() into a dedicated FreeRTOS task pinned to core 0, leaving core 1 free for LVGL display updates. FTP callbacks now only set volatile flags (ftp_ui_dirty, ftp_sd_dirty) which the main loop polls to safely update UI and NeoPixel from core 1. This eliminates the 20-second PASV data connection timeouts caused by handleFTP() competing with display.update() for CPU time. Also fix pre-existing BLACK constant build error in display_manager.cpp.