This feature implements persistent storage for all incoming messages, RX log entries, and contacts with configurable retention periods. The system uses a dual-layer architecture to balance real-time UI performance with comprehensive data retention.
- New: services/cache.py — DeviceCache stores device info, contacts, channel keys per BLE address in ~/.meshcore-gui/cache/ - Changed: ble/worker.py — cache-first startup flow, background BLE refresh, periodic contact refresh (every 5 min) - Changed: config.py — added CONTACT_REFRESH_SECONDS setting - GUI renders immediately from cached data; BLE updates in background - Contacts are merged (new/changed from device, offline nodes preserved) - Channel decryption keys cached for instant packet decoding on restart