Cherry-picked from upstream PR #404 with conflict resolution: - Replaced flaky TCP-based Calibre wireless with WebSocket-based transfer - Added OPDS authentication support (username/password in settings) - Renamed "Calibre Library" to "OPDS Browser" in home menu - Added UDP discovery for Calibre plugin communication - Merged user's custom settings (customFontIndex, fallbackFontFamily, pinnedListName) - Applied vTaskDelay cleanup after task deletion - Kept existing "Calibre Settings" menu item (skipped KOReader Sync per preference) Fixes issue #334 (Calibre wireless transfer not working)