Commit Graph
5292 Commits
Author SHA1 Message Date
evgeny 5842855583 Confirm atomic member property saves before closing the dialog 2026-10-28 00:58:59 +01:00
evgeny 7e412d950a Bind owned admin transfer requests to the selected database 2026-10-28 00:58:59 +01:00
evgeny be11fbb8b6 Keep rename dialog open until the core confirms its write 2026-10-28 00:58:59 +01:00
evgeny 096e721faa Return correlated member save and cancellation results to live GUI contexts 2026-10-28 00:58:59 +01:00
evgeny 1431507ac5 Save member nicknames and owner changes in one core transaction 2026-10-28 00:58:59 +01:00
evgeny 30a15f6cfd Document audio settings snapshots and device test behavior 2026-10-28 00:58:58 +01:00
evgeny 005d136dc7 Make Android microphone capture stoppable and cleanup resilient
Use nonblocking AudioRecord reads with data and timestamp deadlines. Serialize idempotent close, finish interrupted joins before release, isolate callback failures, and abort stereo fallback when partial-record cleanup fails.

Close failed shared readers to new subscriptions, roll back worker startup, isolate observers, preserve interrupt state, and release the last consumer exactly once. Add an independent capture-tests JVM module to the standard Android unit-test task.

Validation: 38 capture scenarios (25 AudioRecord plus 13 PCM/PTT), 455 JVM tests, assembleDebug, core build, and full check.sh (225 tests plus proxy/burst/load) passed.
2026-10-28 00:53:01 +01:00
evgeny 74035fc043 Recover Android media audio sessions with explicit resource ownership
Retry monitor and capture setup after invalidating failed attempts. Bind output leases and callbacks to registration identity, cancel confirmation timers, and keep hardware cleanup independent from device enumeration during call handoff.

Commit profiles only after successful storage writes, acquire mode ownership before Android side effects, and reject blocking operations on main or the control worker. Keep the app singleton backed by an isolated MediaAudioSession with a single executor.

Validation: 30 media session scenarios, 420 JVM tests, assembleDebug, core build, and full check.sh (225 tests plus proxy/burst/load) passed.
2026-10-28 00:28:42 +01:00
evgeny a6ae4df3ff Harden Android audio router lifecycle and route selection
Roll back failed startup, finish independent stop cleanup, invalidate stale device and Telecom callbacks, and serialize router mutations. Publish input/output targets after accepted selection and support retries of rejected requests.

Separate modern communication device selection from legacy SCO, refresh replaced descriptors, and support A2DP and USB input-only devices in per-track mode. Clarify routing and observer ownership contracts.

Validation: 45 router scenarios, 390 JVM tests, assembleDebug, core build, and full check.sh (225 tests plus proxy/burst/load) passed. Previous router fails 25 of the 30 new cases.
2026-10-27 23:53:21 +01:00
evgeny 0d45bdbad6 Own Android incoming call alerts and notification actions
Bind notification tokens to full call IDs and call kinds, cancel actions on stop, and reject decline callbacks after ringing ends. Serialize alert state on main and recover notification channel setup after Android API failures.

Keep sound independent of wake-lock and notification failures. Remove orphaned notifications on cold start, preserve idempotent alerts during duplicate delivery and language changes, and document lifecycle contracts.

Validation: 32 new lifecycle cases, 360 JVM tests, assembleDebug, core build, and full check.sh (225 tests plus proxy/burst/load) passed.
2026-10-27 23:31:56 +01:00
evgeny 5a6eabf4fc Fix Android alert profiles and playback resource ownership
Configure audio attributes before MediaPlayer preparation, keep vibration independent from sound failures, and guard loop/focus cleanup against stale callbacks. Preserve ringback players on repeated phase requests.

Add 35 alert lifecycle tests against real Kotlin sources with controlled Android API failures. Validation: 328 JVM tests, assembleDebug, core build, and full check.sh (225 tests plus proxy/burst/load) passed. Previous sources fail 32 of the 35 new cases.
2026-10-27 23:12:11 +01:00
evgeny f4ef949482 Guard Android radio configuration with worker-owned tasks 2026-10-27 22:41:30 +01:00
evgeny f71aff3e11 Document Android radio automatic capture and background window contracts 2026-10-27 21:58:02 +01:00
evgeny d6dc6234d5 Recover SIM observers without losing healthy subscription state 2026-10-27 21:49:15 +01:00
evgeny 6a38eaa4eb Compile the real SIM monitor in the Android host tests 2026-10-27 21:39:26 +01:00
evgeny 6e6260ab29 Add controlled Telephony fixtures for Android SIM monitoring 2026-10-27 21:35:45 +01:00
evgeny 142cc1a7a1 Verify Android phone state publishing and JNI restart recovery 2026-10-27 21:30:07 +01:00
evgeny 4859d03f29 Return Android phone state queue acceptance through JNI 2026-10-27 21:25:51 +01:00
evgeny 067c1cd496 Own queued Android phone state data within the worker lifetime 2026-10-27 21:23:18 +01:00
evgeny 2b55d9225a Cover Android phone command cancellation and publication ownership 2026-10-27 21:21:52 +01:00
evgeny 9e679462d4 Expose Android phone state posting through the C bridge API 2026-10-27 21:18:29 +01:00
evgeny b92727e66a Make proximity observation safe across failures and restarts 2026-10-27 20:57:24 +01:00
evgeny 0d3ffb8736 Add a host sensor fixture for ProximityManager lifecycle checks 2026-10-27 20:54:40 +01:00
evgeny da85971969 Verify CoreActivity against Android JNI and native activity modes 2026-10-27 20:44:34 +01:00
evgeny ed1f4d8ea8 Preserve pending CoreActivity intent when the native queue rejects a request 2026-10-27 20:39:19 +01:00
evgeny f941066934 Cover rejected activity commands at the native queue boundary 2026-10-27 20:11:15 +01:00
evgeny 61266986e5 Route bridge activity requests through the worker owner 2026-10-27 20:10:00 +01:00
evgeny 4bece684da Queue Android activity updates while holding the worker lifetime lock 2026-10-27 20:07:51 +01:00
evgeny 1ed110d47c Validate CoreActivity ownership before mutations and cache completed JNI requests 2026-10-27 20:02:55 +01:00
evgeny b3b04b4d5a Add regressions for CoreActivity thread ownership and request caching 2026-10-27 19:53:53 +01:00
evgeny 29e6c977f2 Document Android worker cancellation and shutdown ownership 2026-10-27 19:30:29 +01:00
evgeny 64c1019a52 Verify cancelled Android workers retain callbacks and keep SQLite owned by the core 2026-10-27 19:30:29 +01:00
evgeny aca5f806c1 Keep worker callbacks atomic and verify failed shutdown preserves owners 2026-10-27 19:16:30 +01:00
evgeny 823bae076f Run Android service shutdown off the main thread and await it before startup 2026-10-27 19:07:05 +01:00
evgeny d6ea893f16 Preserve bridge callbacks until native worker shutdown succeeds 2026-10-27 18:57:36 +01:00
evgeny d83d58c874 Keep Android shutdown independent of a retiring service 2026-10-27 18:55:29 +01:00
evgeny 1c82432de9 Own Android worker threads until cleanup and join finish 2026-10-27 18:52:46 +01:00
evgeny 69b87ef3ed Verify Android startup readiness with the main looper and native worker 2026-10-27 18:33:49 +01:00
evgeny 11b3ceaa9b Wait for Android core readiness before applying settings 2026-10-27 18:27:14 +01:00
evgeny 8e0090b54b Track Android startup until native core readiness is confirmed 2026-10-27 18:20:48 +01:00
evgeny a09b67a70f Fix the key regeneration job type in ChatViewModel 2026-10-27 18:10:09 +01:00
evgeny 848247bde6 Exercise Android identity regeneration through JNI on devices 2026-10-27 18:08:29 +01:00
evgeny 50ea132c15 Recreate the Android core when regenerating its identity 2026-10-27 18:05:06 +01:00
evgeny 2ff51d0016 Persist Android identities atomically before updating config 2026-10-27 17:51:41 +01:00
evgeny 02ec6a50a5 Verify config saves survive cancellation of their submitting scope 2026-10-27 17:35:26 +01:00
evgeny 44f6d8a5bc Verify partial node reads and reject malformed address rows 2026-10-27 17:27:04 +01:00
evgeny 30a205340a Build node diagnostics from one checked SQLite snapshot 2026-10-27 17:27:04 +01:00
evgeny dc1f3260e3 Add node page snapshot and SQL failure regressions 2026-10-27 17:27:04 +01:00
evgeny d582f2ea77 Clarify settings dialog drafts, save semantics and borrowed dependencies 2026-10-27 17:27:04 +01:00
evgeny 2dd0970295 Document storage, network and database settings page contracts 2026-10-27 17:27:04 +01:00