evgeny
811b980883
Verify exact SoundTouch provenance and unchanged PCM output
2026-10-14 19:17:46 +02:00
evgeny
1d43578335
Expose optional live source tracking through SoundTouch
2026-10-14 19:16:45 +02:00
evgeny
edcd34d942
Report copied and overlapping source ranges from TDStretch
2026-10-14 19:16:03 +02:00
evgeny
ceb06bafcf
Define SoundTouch source spans and unity interpolation contract
2026-10-14 19:15:43 +02:00
evgeny
3477a8844c
Allow RS batches to choose their block size from input length
2026-10-13 19:59:57 +02:00
evgeny
ec82d95a03
Add signed FEC stream core and source buffering
2026-10-12 00:01:38 +02:00
evgeny
2967d2fb71
Fix matrix inverse syntax and make bounded conversions explicit
2026-10-10 19:38:08 +02:00
evgeny
d9d4a7807f
Test Reed-Solomon recovery and integrate codec into builds
2026-10-10 19:37:07 +02:00
evgeny
831018f161
Add batch Reed-Solomon codec with caller-owned buffers
2026-10-10 19:35:10 +02:00
evgeny
dc0dbbf720
headless: expose OS-assigned control and audio listener ports
2026-10-10 15:51:04 +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
7eb6d6ee68
logging: move socket mechanics and periodic probe decisions to trace
2026-10-07 21:14:38 +02:00
evgeny
d40f58d79a
Add message identities and plan the remaining feedback work
2026-10-06 21:12:53 +02:00
evgeny
341da73398
Fix Windows getsockopt argument in TCP error callback
2026-10-05 11:46:54 +02:00
evgeny
20a1211e09
Add GPLv3 licensing and bundle third-party notices
2026-10-04 14:18:18 +02:00
evgeny
a97e8bcc1f
docs: update file inventory and module header contracts
...
Refresh both AGENTS guides and clarify module purpose, usage, ownership, threading, return values and wire formats in headers. Remove the unused timeout_heap freed_count field and unimplemented getter.
2026-10-04 13:10:01 +02:00
evgeny
50e276cb94
Include previous audio context in streaming Silero inference
2026-10-03 01:48:37 +03:00
evgeny
389fca1de0
Expose compressor gain and register separate radio VAD limit
2026-10-03 01:27:42 +03:00
evgeny
bd082a26bf
Раздели аудиопотоки и привяжи AEC к фактическому общему выходу
2026-10-02 10:22:34 +03:00
evgeny
40b974b29c
Исправь потоковый AGC и применяй mute после AEC
2026-10-02 01:56:10 +03:00
evgeny
bdcf8b5634
Сохрани накопленные исправления аудио, async и диагностики
2026-10-02 01:49:32 +03:00
evgeny
be8dbcf25e
Remove duplicate GUI voice encoding and keep shared worker codec
2026-10-01 18:48:09 +03:00
evgeny
1bd310c859
Detach recorder compressors while preserving capture settings
2026-10-01 17:47:39 +03:00
evgeny
00e890e0c3
Reserve worker completions before starting background tasks
2026-10-01 17:36:12 +03:00
evgeny
61bf235ef4
radio: PTT double-tap latch + single-tap off (in-chat & overlay); compressor initial gain = mid-range
2026-09-29 20:00:28 +03:00
evgeny
f12f61d7ee
call: add SpeexDSP AEC (acoustic echo cancellation) for desktop + Android
2026-09-29 17:01:30 +03:00
evgeny
1176411b79
radio: Silero VAD + auto-PTT; chatgui/android: app icon and background
2026-09-29 16:19:25 +03:00
evgeny
e1946b208d
Preserve proxy TCP streams across connect, backpressure and FIN
2026-09-29 04:00:34 +03:00
evgeny
7a41fcf512
Notify TCP writers when the final synchronous send drains
2026-09-29 03:57:15 +03:00
evgeny
331970a121
Radio: Opus mode/bitrate + mic source + PTT release tail; drop online status from member JSON
2026-09-29 00:40:10 +03:00
evgeny
7374d1648c
Support 8 KiB member owner tags without signature or serialization truncation
2026-09-27 17:12:13 +03:00
evgeny
03f71fd94e
Bound ETCP receive window and fix timestamp and allocator UB
2026-09-27 12:16:15 +03:00
evgeny
44d4265084
ll_queue: queue_waiter_cancel отменяет отложенный call_soon при internal==NULL (фикс UAF waiter_defer)
2026-09-26 18:58:27 +03:00
evgeny
8aaac45020
ll_queue: отложенный первый запуск автозабора (callback_defer) + тест
...
queue_set_callback_defer(q, 1) переносит первый запуск callback из
queue_data_put* в uasync_call_soon (очистка стека производителя).
Повторные запуски (queue_resume_callback) и так всегда deferred.
2026-09-26 16:42:46 +03:00
evgeny
fb4343fca6
transport: reality-релей idle-timeout (конфиг, дефолт 5с) + warn при >64 релеях; убрать лимит FD_SETSIZE; проверка socket_id в stcp_server
2026-09-24 12:08:45 +03:00
evgeny
9793733cd5
chatgui: диагностика воспроизведения голосовых сообщений (Windows)
...
- sound_manager: ma_engine_init/playRawPcm логируют через DEBUG_* (qWarning/qDebug терялись в GUI-приложении без консоли); детальный результат старта PCM (rc/is_playing/cursor)
- main: ранняя инициализация лога в GUI-потоке до SoundManager::init, чтобы диагностика инициализации попала в файл
- messagedelegate: лог клика по Play/timeline (filePath/dlState/существует ли файл)
- voiceplayback: лог заголовка opus (sr/ch/frameSamples)
Попутные правки:
- u_async: фикс двойного close wakeup_pipe (eventfd/Windows)
- chat_core: NULL-guard в get_db/is_initialized
- android: sqlite открывается в utun_instance_init, cleanup stale-потока без утечки fd
- android SettingsScreen: компактная раскладка имени интерфейса
2026-09-21 18:59:04 +03:00
evgeny
a7a3666d85
radio: AGC release-rate (без кликов), jitter dead-zone, TX/RX-статистика, FGS-гонка и кэш настроек
2026-09-20 20:07:48 +03:00
evgeny
738cfe7835
radio: адаптивный джиттер-буфер (pre-roll, симметричный темп, reorder) + AGC-компрессор микрофона
...
- voice_jitter: vj_create_cfg (target_ms/min_tempo/max_tempo/pre_roll), pre-roll
с таймаутом, vj_end для дренажа остатка, глубина учитывает внутренний буфер SoundTouch
- radio_audio: reorder по seq (mesh, out-of-order через соседей), force-flush pending
по таймауту и FIN, компрессор микрофона (AGC, конфиг [chatserver]), статистика буфера
- audio_compressor: clear_output для потокового слива без потери gain_smoothed
- chatgui messagelist: fromUtf8 для emoji-строк
- тесты: pre-roll/симметричный темп, reorder, late-drop
2026-09-20 14:39:25 +03:00
evgeny
27e66f1092
log: move socket diagnostics SYS->SOCKET and conn lifecycle ETCP->CONNECTION (avoid poll() flood)
2026-09-20 01:51:40 +03:00
evgeny
fae0a7c069
uasync: cast function pointers in socket_add log to void*
2026-09-20 01:18:33 +03:00
evgeny
b33caa56b8
uasync: pass socket name to all add_socket call sites
2026-09-20 01:13:38 +03:00
evgeny
c36cebe357
uasync: add socket name diagnostics and HUP/ERR auto-unregister safety net
2026-09-20 01:11:30 +03:00
evgeny
841b3042cf
etcp: фикс double-free буферов паковщика и повторных free после неудачного queue_data_put
...
- pn_send_to_etcp/pn_unpacker_cb: занулять pn->data/pn->recvpart ДО queue_data_put
(ре-энтрантный close/reinit в синхронной цепочке освобождал буфер повторно)
- etcp_output_try_assembly: гард state==2/reinit_pending + убрать re-put освобождённого entry
- etcp_conn_input: гард ре-энтрантного reinit/close в цикле секций, локальный etcp вместо pkt->link
- убраны повторные free после queue_data_put (он сам освобождает entry+dgram) в 6 местах
- диагностика: obj=%p в DOUBLE FREE, логи free dgram в pn_deinit/ack_recv
2026-09-19 21:17:33 +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
1f1df4f437
mem: детект аномально больших аллокаций (LARGE ALLOC log + calloc overflow guard)
2026-09-16 21:12:46 +03:00
evgeny
51d6d22a27
sock_match: классификация сокета по адресу, а не по type из конфига (fix Q8/Android→LAN)
...
ip_is_public() вынесен в lib/platform_compat (единый классификатор IPv4 с ntohl).
auto_socket_reconcile_config: тип сокета выставляется по фактическому адресу.
sock_collect_views: has_priv/has_inet/is_eim — по классификации адреса и NAT-детекции.
is_local_subnet упрощён до !ip_is_public(). Тест test_sock_match обновлён.
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
187bcd80b9
uasync: ре-валидация node перед последующими коллбэками (счётчик cb_called) вместо снапшота
2026-09-14 12:56:52 +03:00
evgeny
836c715299
uasync: снапшот полей socket_node в poll()/select() — защита от realloc во время коллбэков (UAF)
2026-09-14 12:47:35 +03:00