v4.2.1-fork.1
Pre-release
Pre-release
Changes / fixes made so far
Study config sync reliability
- Fixed a race where overlapping sync triggers (scheduled poll, manual button, app resume) could interleave
Aware.reset()calls and corrupt settings: syncs are now serialized through a single-thread executor. - Fixed study lookup to use
Aware.getActiveStudy()instead of matchingwebservice_serveragainststudy_urlby string prefix – any drift between a join link and the resolved config URL silently broke every future sync. Aware.reset()now preservesdevice_id/device_label/webservice_server/frequency_webservice/pending_study_update_noticeacross its wipe, and self-healswebservice_serverfromaware_studiesif it ever drifts.- Switched config-diff comparison from JSONAssert
LENIENTtoNON_EXTENSIBLEso added/removed sensor entries are actually detected.
Study settings lock & update notifications
- Participants can no longer edit sensor/config settings while enrolled in a study unless the researcher's config sets
enable_config_update– enforced at both navigation time and write time. - Participants are reliably notified of curated study changes (sensors added/removed, lock toggled) even if the app wasn't open when the sync happened, via a persisted pending-notice setting.
- Fixed a
WindowLeakedcrash when a study-update dialog triggeredrecreate()while a nested settings screen was still open.
Wi-Fi / Location enforcement
- WiFi data collection requires the OS-level Location toggle; participants are now prompted to enable it, and the sensor status screen reports "Location services are off" as the reason WiFi isn't collecting.
Sensor consent screen
- New per-sensor runtime-permission consent screen shown after joining a study that needs runtime permissions (location, contacts, call log, etc.), replacing ad-hoc permission prompts.
Plugin crash fixes
- Fixed
NumberFormatExceptioncrash loops in the ambient_noise and OpenWeather plugins when a study config sync (Aware.reset()) left a setting momentarily empty mid-read — including a recurring crash during ambient_noise's up-to-60s recording loop that was force-killing the app.
Security
- The OpenWeather plugin no longer displays the raw API key in its settings summary (was shown in plaintext). Removed a hardcoded default API key baked into source (XML default + code fallback) – rotate that key since it may already be exposed.