Commit Graph
75 Commits
Author SHA1 Message Date
evgeny b4553db769 Reset selected GUI state during teardown and keep CHAT read watermarks separate from PM sequences 2026-10-28 00:59:00 +01:00
evgeny 6adfe5cf13 Centralize owned attachment downloads and key auto-play by channel and row 2026-10-28 00:59:00 +01:00
evgeny f87ee63a1d Preserve failed composer drafts and cancel PM submissions with a result 2026-10-28 00:59:00 +01:00
evgeny 707938d503 Bind remaining desktop commands atomically and cancel owned attachments 2026-10-28 00:59:00 +01:00
evgeny 0f36248d1e Own and bind desktop radio call commands inside the bridge 2026-10-28 00:59:00 +01:00
evgeny 4b4f48963e Own desktop call commands and bind them atomically to the core 2026-10-28 00:58:59 +01:00
evgeny 59cd456386 Allow cancellation of an empty file operation as a no-op 2026-10-28 00:58:59 +01:00
evgeny 7d789f68d4 Own desktop file commands and report cancellation through Qt 2026-10-28 00:58:59 +01:00
evgeny 4d18a7015d Report cancelled composer submissions before releasing their owned requests 2026-10-28 00:58:59 +01:00
evgeny bc5e6aa5a5 Document cancellation acknowledgments for member edit commands 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 096e721faa Return correlated member save and cancellation results to live GUI contexts 2026-10-28 00:58:59 +01:00
evgeny f1f5d33788 Centralize owned settings and name requests in the GUI bridge 2026-10-27 17:27:04 +01:00
evgeny 1b695fe247 Own and cancel desktop bridge commands before core teardown 2026-10-27 02:25:05 +01:00
evgeny 8523448c3a Reserve desktop edit dispatch and reject malformed update events 2026-10-26 22:49:45 +01:00
evgeny 20350338b8 Deliver committed edits to desktop without message notifications 2026-10-26 22:38:17 +01:00
evgeny 8e3c536cbb Bridge desktop DM deletion requests and results 2026-10-26 22:11:39 +01:00
evgeny 962a2df3f8 Add local channel deletion to desktop channel settings 2026-10-26 10:47:39 +01:00
evgeny 8e74619501 Make chat joins atomic and test invitation lifecycle failures 2026-10-26 09:19:35 +01:00
evgeny 539f09004c Use channel member snapshots for desktop participant details 2026-10-25 20:04:59 +01:00
evgeny b68116eedf Expose phone busy event to desktop call interface 2026-10-19 14:54:01 +02:00
evgeny 310d997af3 Deliver radio invitation events to desktop UI 2026-10-19 13:57:29 +02:00
evgeny 044a20d4a0 Clean desktop stream lifecycle and event bridge logging 2026-10-18 15:09:24 +02:00
evgeny 28826e050c Add local UDP discovery and invitation delivery for chat clients 2026-10-18 14:46:04 +02:00
evgeny 9f813424bb Deliver attachment key state changes to desktop UI 2026-10-18 02:15:25 +02:00
evgeny 0a5b9b50f1 Connect desktop stream bridge to core lifecycle and events 2026-10-12 22:09:39 +02:00
evgeny 5a9e61164b Measure uasync CPU load and display it in desktop and Android GUIs
Sample thread CPU usage without waking idle loops, expose a one-second moving average, and refresh compact GUI indicators at 3 Hz while visible on Android. Add load and bridge regression coverage, streaming notes, and task list cleanup.
2026-10-10 12:31:13 +02:00
evgeny 49e898b6f3 Deliver channel submission acknowledgements to the desktop composer 2026-10-08 00:24:35 +02:00
evgeny 33c98a014f Notify about live incoming channel and direct messages 2026-10-07 15:54:25 +02:00
evgeny e5d8c34514 Fix desktop uasync readiness for radio member mute requests 2026-10-07 13:49:06 +02:00
evgeny 7e19cbaf3a Add local per-member radio mute controls on desktop and Android 2026-10-07 13:35:25 +02:00
evgeny c1048686d1 Route feedback state and command results to the desktop thread 2026-10-06 21:34:38 +02:00
evgeny 8e3ff6fd81 Deliver group avatar publication results through the GUI bridge 2026-10-06 13:44:49 +02:00
evgeny 78bed5efe4 Route avatar events alongside file browser events in ChatGUI 2026-10-06 12:32:02 +02:00
evgeny aca10e8268 Trace file bridge callbacks and use scoped VAD test logs 2026-10-05 21:34:39 +02:00
evgeny b771e95997 Clear legacy GUI bridge and list messages from debug 2026-10-05 21:28:45 +02:00
evgeny 78a655bb05 Add asynchronous member file storage and desktop browser 2026-10-05 18:44:58 +02:00
evgeny fb68e66ca4 Dispatch PM invitation results to desktop UI 2026-10-04 14:53:58 +02:00
evgeny 23368a5bbe Add Android boot startup, lazy settings, emoji and DM calls
Add battery optimization controls and configurable boot startup. Keep message sounds in the application and render general settings lazily to avoid ANRs. Add animated emoji controls and live BGP availability for direct-message calls on Android and desktop.
2026-10-02 17:18:24 +03:00
evgeny 225e11265f Connect Qt preparation notifications to the conversation view 2026-10-01 18:39:31 +03:00
evgeny 55b21fdcda Forward pinned attachment preparation events to Qt 2026-10-01 18:37:49 +03:00
evgeny 111432aa64 conn_mgr: race connection probes and report call path with correct RTT 2026-10-01 00:42:47 +03:00
evgeny 2d21c53b4b Improve call buffering, CM handle lifecycle and radio PTT controls 2026-09-30 17:31:53 +03:00
evgeny 3131dcbb7c Fix ETCP session recovery and router lifecycle; confirm chat invites before publishing 2026-09-27 02:51:47 +03:00
evgeny b90dc752d2 call: две фазы исходящего вызова — индикация + разные гудки (desktop/Android) 2026-09-23 19:16:53 +03:00
evgeny b96ed8bd00 radio: PTT-радио в каналах (src/radio + chatgui + chatgui-android)
Новый модуль src/radio (radio/radio_audio/radio_headless) — push-to-talk
радио поверх topo-групп, доставка аудио в канал, headless-режим и тесты.
Интеграция в chatgui (ptt_hotkey_manager, radio_audio_engine, радионастройки,
вызовы) и chatgui-android (RadioAudioEngine, RadioOverlayService, UI).
2026-09-19 17:09:00 +03:00
evgeny 2de554f8b9 call: единый голосовой стек (libutun_voice) + SoundTouch на Android
- voice_jitter (кодированные Opus-кадры + decode-on-pull + SoundTouch time-stretch)
  вместо PCM-буфера audio_jitter; излишек держится до декодирования
- call_audio.c/.h — единая реализация для desktop/Android/headless (C-интерфейс)
- libutun_voice (voice_sources.cmake): SoundTouch + voice_jitter + call_audio + call_tones
- Android: pull-модель (nativeCallAudioPull), убран Kotlin FIFO, ANDROID_STL=c++_static
- headless audio-сокет: PCM-протокол (decode-only, без тактирования), daemon остаётся C-only
- CALL_STATS расширен dropped/underruns; удалены audio_jitter.cpp и libutun_lite/call_audio.c
- тест test_voice_jitter (ёмкость/догон/стационар), test_call_headless переведён на PCM
2026-09-16 20:26:55 +03:00
evgeny b11e77e4c0 call: P2P аудиозвонки — сигналинг, релей медиа, аудио-контур, headless/desktop/android
- src/call/: сигналинг (call.c, call_proto.h, ETCP_RT_ID_CALL 0x36) + релей медиа
  + headless аудио-сокет (call_headless.c, call_audio_bind) + Opus/jitter/тоны
- chat: события CHAT_EVT_CALL_* (34–40), CHAT_EVT_DM_MESSAGES (41), DM-трамплины
- chatgui: call window, miniaudio I/O, audio_frame_ring, test_audio_jitter
- chatgui-android: CallScreen/IncomingCallDialog, аудио-роутинг, JNI, рингтон
- tests: test_call, test_call_headless
2026-09-16 10:17:57 +03:00
evgeny 73fe99b33f dm: прямой обмен сообщениями (DM) + soundtouch + архитектура звонков
- src/dm/: dm_core/dm_crypto/dm_mailbox — прямой обмен сообщениями (DM)
- lib/soundtouch-master/: vendored SoundTouch (изменение темпа/высоты аудио)
- doc/dm_arch.md, doc/chat_call_arch.md: архитектура DM и звонков
- tests: test_dm.c, test_dm_e2e.c
- chat: рефакторинг chat_* модулей, member_sync, invite_build
- chatgui/chatgui-android: синхронизация с новым API чата
- lib/u_async, debug_config, utun_instance: сопутствующие изменения
2026-09-15 21:09:17 +03:00
evgeny 1345f44e10 chat: invite-ссылки с выбором достижимого узла + tcp_io фикс half-close FIN
- Общий модуль invite_build: сборка utun://-ссылок, авто-выбор лучшего
  достижимого узла, список кандидатов (вынесено из android jni_bridge)
- chatgui: диалог invite с выбором узла (комбобокс), события INVITE_CANDIDATES /
  INVITE_LINK_READY через gui_bridge
- headless/chatcli: invite <ch_id> [node_id], команда invite_nodes
- tcp_io: error_cb отличает грациозный EPOLLHUP (SO_ERROR==0) от реальной ошибки —
  при приостановленном чтении FIN не роняет недослейные данные (фикс flaky half-close)
- run_test.sh: half-close echo на выделенном порту 19190 + отдельный DNAT (был недостижим)
2026-09-07 13:59:15 +03:00