evgeny
7c5b76b482
Add minimized Windows autostart and preserve terminal output
2026-10-15 21:27:32 +02:00
evgeny
386998598e
Restore bitrate controls and wait for explicit portal source selection
2026-10-14 02:58:45 +02:00
evgeny
ce461521e4
Defer source failures and end calls that cannot reserve audio capture
2026-10-14 02:56:36 +02:00
evgeny
c1d7460254
Own publication independently of its window and reserve call capture
2026-10-14 02:54:19 +02:00
evgeny
b4ebaa8863
Open desktop stream playback windows from channel sources
2026-10-12 22:12:41 +02:00
evgeny
753aa4217d
Use LocalAppData fallback for Windows ChatGUI storage
2026-10-12 00:01:38 +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
b14bfa95c2
Collect group actions in the conversation header menu
2026-10-10 11:17:00 +02:00
evgeny
8f908c320a
Open own group files from the conversation header
2026-10-10 11:06:45 +02:00
evgeny
49ee66d49c
Accept file drops across the channel footer
2026-10-09 23:30:33 +02:00
evgeny
2e4ed0347b
Add own files button to the channel list footer
2026-10-09 22:58:01 +02:00
evgeny
49e898b6f3
Deliver channel submission acknowledgements to the desktop composer
2026-10-08 00:24:35 +02:00
evgeny
e61fc8e392
Show silent, speaking and muted radio speakers in member rows
2026-10-07 19:01:53 +02:00
evgeny
1108c773dc
Own the independent popup and handle all keyboard mouse input
2026-10-07 16:05:34 +02:00
evgeny
33c98a014f
Notify about live incoming channel and direct messages
2026-10-07 15:54:25 +02:00
evgeny
ebc96712a2
Track feedback by message identity in desktop UI
2026-10-06 21:36:43 +02:00
evgeny
8e3ff6fd81
Deliver group avatar publication results through the GUI bridge
2026-10-06 13:44:49 +02:00
evgeny
1988afa84d
Notify profile changes with actual member properties
2026-10-06 12:33:26 +02:00
evgeny
78bed5efe4
Route avatar events alongside file browser events in ChatGUI
2026-10-06 12:32:02 +02:00
evgeny
0773a82342
Keep debug focused on file browser event delivery
2026-10-05 21:30:01 +02:00
evgeny
78a655bb05
Add asynchronous member file storage and desktop browser
2026-10-05 18:44:58 +02:00
evgeny
27d93ecaf9
Add English and Russian ChatGUI interface translations
2026-10-05 16:55:43 +02:00
evgeny
a76ba87501
Open HTTP and HTTPS messages through the desktop URL handler
2026-10-04 19:05:08 +02:00
evgeny
149c397b7b
Include desktop diagnostic macros for invitation actions
2026-10-04 15:08:16 +02:00
evgeny
ef62a80eb8
Filter desktop invitation targets by local membership
2026-10-04 14:59:08 +02:00
evgeny
d369ff968d
Wire desktop invitation sending and joining from message links
2026-10-04 14:57:12 +02:00
evgeny
afbce0efeb
Load radio settings after core startup and apply from dialog
2026-10-03 13:12:17 +03: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
217e5795bf
Раздели PCM-сессии и исправь частоту и перемотку звука
2026-10-02 02:00:50 +03:00
evgeny
bdcf8b5634
Сохрани накопленные исправления аудио, async и диагностики
2026-10-02 01:49:32 +03:00
evgeny
225e11265f
Connect Qt preparation notifications to the conversation view
2026-10-01 18:39:31 +03:00
evgeny
318d72708c
Preserve voice autoplay ordering while decoding in a worker
2026-10-01 18:29:43 +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
1176411b79
radio: Silero VAD + auto-PTT; chatgui/android: app icon and background
2026-09-29 16:19:25 +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
b483335c06
bgp/ncd: владение conn через NCD-handle в senders_list; call audio route persist + incoming call sound
2026-09-16 13:29:28 +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
910cfeac20
chatgui: настройка звука уведомления на канал (sound_on_message)
2026-09-14 21:12:53 +03:00
evgeny
1eb0566cb5
chat: enforce storage_total_size + media orphan cleanup; async_dns: fix use-after-free
...
- media cache: удаление сирот на старте (сверка ФС с сообщениями) + лимит
storage_total_size (удаление самых старых файлов, только старше backfill_days)
- ma_dir_walk(): кроссплатформенный рекурсивный обход каталога (POSIX/Windows)
- async_dns: первый драйв slow-пути отложен через call_soon (исключён
double-free при синхронном завершении запроса); cancel унифицирован
- chat: видимый WARN 'media too large' + честный счётчик started/skipped
2026-09-13 03:11:10 +03:00
evgeny
0f308fdbd7
chatgui/chatgui-android: уведомления со звуком, флаги и прочие улучшения UI
2026-09-10 00:23:14 +03:00
evgeny
c474c37284
chatgui/chatgui-android: просмотр изображений с зумом + инфо о медиа
...
- chatgui: просмотрщик изображений (ImageViewerWindow) с зумом/поворотом
- chatgui: отправка картинок как image с определением разрешения и типа
- chatgui: у видео-пузыря строка info (res·size·bitrate) и бейдж только длительность
- chatgui: контекстное меню медиа (сохранить в файл/скачать)
- chatgui-android: большие emoji-only сообщения, битрейт/разрешение у видео
- chatgui-android: сохранение неактивных интерфейсов как закомментированные секции
- chatgui-android: отправка картинок по расширению (jpg/png/gif/bmp/webp)
- photo_sender: content-type и расширение по типу файла
2026-09-09 16:18:26 +03:00
evgeny
6542618927
chatgui: воспроизведение видео — FFmpeg-плеер + frameless окно
...
- videoplayer_engine: декод в worker-потоке (FFmpeg), A/V sync по аудио-курсору,
seek с epoch-защитой от устаревших кадров
- videoplayer_window: окно без рамки, drag-перенос, dblclick/Alt+Enter fullscreen,
Esc закрытие, timeline + play/pause/close, авто-скрытие контролов
- видео-баббл в списке: превью-кадр (jpg), play-оверлей, длительность, прогресс
- превью извлекается после скачивания (video_extract_thumbnail) в фоне
- mainwindow: синглтон-плеер, openVideoRequested → openVideo
- CMake: HAVE_FFMPEG для vibechat
2026-09-08 00:55:06 +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
evgeny
631a176944
chat: права админа + member tags (verified/deleted) + ncd revive
...
- chat_admin: передача канальных privkey другому узлу (encrypted+signed,
ETCP_RT_ID_ADMIN_KEY), событие ADMIN_KEY_RECEIVED
- member_sync/bridge: tags verified/deleted, is_channel_owner, transfer_admin
(android JNI + chatgui memberpropsdialog)
- node_conn_direct: оживление timed_out entry — обновление линков в существующем
conn (убрать старые, добавить новые) + немедленная очистка не поднявшегося
conn без fin_wait — фикс invite/reconnect
2026-09-07 00:53:41 +03:00
evgeny
61c572cae4
etcp: reset_id эпоха ресета — фикс потери NODEINFO при флапе
...
Добавлен 64-битный reset_id (эпоха ресета) в INIT-фреймы и STCP-handshake:
- генерится один раз при создании conn, меняется только при фатальном ресете
(normalizer desync / bad fragment size);
- при приёме чужого id slave принимает эпоху пира и ресетится, master держит свою;
- первый id принимается без ресета (свежие при init);
- «tcp peer clean» реинит гейтится по смене id — нет повторного сброса seq.
Это устраняет коллизию seq=1 (RX dup) из-за двойного реинита нескольких TCP-линков,
из-за которой NODEINFO пира терялся и member не возвращался online.
Также: chat member online теперь из topo_group (без БД/merkle), тест test_etcp_seq_collision.
2026-09-06 21:50:06 +03:00
evgeny
4ca8348a75
chatgui: хранить last_channel_id в БД (ui_state) вместо QSettings
...
Восстановление канала только если он существует; запись из utun-потока
через trampoline, чтобы не трогать sqlite из GUI-потока.
2026-08-16 22:34:14 +03:00
Evgeny
f347dc8edc
vibechat: single-instance (QLockFile) + переименование Chat→vibechat (бинарник, конфиг, hostname node name)
2026-08-13 23:10:43 +03:00