Skip to content

v4.2.1-fork.1

Pre-release
Pre-release

Choose a tag to compare

@va13k va13k released this 14 Jul 13:27

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 matching webservice_server against study_url by string prefix – any drift between a join link and the resolved config URL silently broke every future sync.
  • Aware.reset() now preserves device_id/device_label/webservice_server/frequency_webservice/pending_study_update_notice across its wipe, and self-heals webservice_server from aware_studies if it ever drifts.
  • Switched config-diff comparison from JSONAssert LENIENT to NON_EXTENSIBLE so 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 WindowLeaked crash when a study-update dialog triggered recreate() 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 NumberFormatException crash 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.