evgeny
44af542f61
chatgui: add radio activation by signal level with hysteresis
4 days ago
evgeny
f054f9c8d9
test: cover radio receive guard timing and playback progress
4 days ago
evgeny
484d6f2fa4
Test signed replies, media completion and old-history lookup
5 days ago
evgeny
efebf8c5e8
Fix settings drafts, enlarge avatars, and show desktop version
5 days ago
evgeny
6496448569
Verify radio speaker icons through the bridge and actual PTT/VAD
5 days ago
evgeny
4a7f37b920
Use independent X11 notification overlay across desktops
5 days ago
evgeny
d62fae9e88
Verify notification desktop scope with a real window manager
5 days ago
evgeny
247479e411
Show Linux message notifications on all X11 desktops
5 days ago
evgeny
16a9094770
Test live message metadata and document notification limits
5 days ago
evgeny
c6cb3f0e8e
Test notification timing, replacement, and activity fallbacks
5 days ago
evgeny
f2e35da1fe
Wire notification platform dependencies and event diagnostics
5 days ago
evgeny
e5d8c34514
Fix desktop uasync readiness for radio member mute requests
5 days ago
evgeny
7e19cbaf3a
Add local per-member radio mute controls on desktop and Android
5 days ago
evgeny
cf869770fb
Add desktop poll creation, voting and live result dialogs
6 days ago
evgeny
96af98f063
Exercise avatar crop gestures, gallery navigation and EXIF originals
6 days ago
evgeny
c4c11ad813
Build avatar UI and deploy the desktop WebP codec
6 days ago
evgeny
a175129f93
chatgui: complete audio dependencies for composer integration tests
6 days ago
evgeny
9c7442544b
chatgui: add Qt integration tests for file drops and recipient changes
6 days ago
evgeny
3d277349be
Deploy the selected Qt version and recognize Windows system DLLs
6 days ago
evgeny
35ce2a2b93
Check group avatar encoding, rendering and key-based controls
6 days ago
evgeny
4062ecdfb1
Display group avatars and restrict editing to group key holders
6 days ago
evgeny
eceb69c58e
Test avatar publication, channel replication and persistent cache
6 days ago
evgeny
694ed8e263
Display cached user avatars in member lists and chat messages
6 days ago
evgeny
78a655bb05
Add asynchronous member file storage and desktop browser
7 days ago
evgeny
27d93ecaf9
Add English and Russian ChatGUI interface translations
7 days ago
evgeny
8feb7902b9
Search local rlottie build for its CMake package configuration
7 days ago
evgeny
394ac93dc4
Extract message links with explicit schemes and punctuation boundaries
1 week ago
evgeny
92b41ec300
Test wrapped message links and per-member invitation button hit targets
1 week ago
evgeny
6bc6d28e9e
Add desktop group picker for PM invitations with ten minute notice
1 week ago
evgeny
20a1211e09
Add GPLv3 licensing and bundle third-party notices
1 week ago
evgeny
312c2dd386
Test desktop VAD panel through Qt buttons and real audio workers
1 week ago
evgeny
8820e9a3c9
Build desktop radio panel and retain audio recovery coverage
1 week ago
evgeny
1e9264735b
Fix desktop hover and emoji playback; share Android chat background
1 week ago
evgeny
bd082a26bf
Раздели аудиопотоки и привяжи AEC к фактическому общему выходу
1 week ago
evgeny
bdcf8b5634
Сохрани накопленные исправления аудио, async и диагностики
2 weeks ago
evgeny
05476fb102
Test Qt voice file validation and decoder cancellation
2 weeks ago
evgeny
2d21c53b4b
Improve call buffering, CM handle lifecycle and radio PTT controls
2 weeks ago
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).
3 weeks ago
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
4 weeks ago
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
4 weeks ago
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 и расширение по типу файла
1 month ago
evgeny
74b17685f7
chatgui: фикс синхронизации кадров (часы не убегают вперёд при быстром декоде) + smoke-тест движка
...
- presentTick: кадры всегда по мастер-часам, завершение только когда очередь пуста
- clockMs: по окончании аудио часы в конец (хвостовые кадры не теряются)
- fallback на системные часы, если аудио-устройство недоступно
- tests/test_video_engine: smoke-тест FFmpeg-декодера (opened/frames/seek)
1 month ago
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
1 month ago
Evgeny
f347dc8edc
vibechat: single-instance (QLockFile) + переименование Chat→vibechat (бинарник, конфиг, hostname node name)
2 months ago
evgeny
b2e4aadbf0
e2e: AES-128-CCM encryption via BGP router (ROUTER_FLAG_ENCRYPTED), ECDH key per peer-pair from NODEINFO pubkeys, cache 8 entries
...
- etcp_router.h/c: new flag ROUTER_FLAG_ENCRYPTED (0x04), etcp_route_send_encrypted(), inflight/retrans/send_q support
- utun_instance.h: e2e_ctx_cache[8] — per-peer sc_context_t cache with derived session key
- topo_node.c: topo_node_sign_self() — single point for Ed25519 self-signing of NODEINFO
- topo_node.c: fix stale x25519_self_sig after address update (topo_node_sign_self call)
- nat_detection.c: fix stale x25519_self_sig after in-place socket meta modification
- test_etcp_router_unit: 5 E2E tests (basic round-trip, no NODEINFO drop, tampered, cache reuse, ENCRYPTED+SIGNED combined)
- builds clean, 70/70 tests pass
2 months ago
evgeny
ca176e1f24
encrypt overhead fix (33→36, noencrypt_len), mtu default 1280, connmonitor window, total_decrypted for TCP, check.sh
2 months ago
evgeny
38c9f229bc
stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test
...
- u_async.c: process immediate_queue BEFORE epoll_wait in uasync_poll
- stcp_link.c: defensive NULL etcp_conn/etcp_link in stcp_link_close
- utun_instance.c: move stcp_server_list_destroy_all to Phase J (before ETCP),
add deferred drain in both Phase J and L
- stcp.h/c: STCP_HS_ENC_CLIENT 6→38, STCP_HS_ENC_SERVER 7→39,
exchange ed25519_pubkey in both handshake directions
- etcp_connections.c: copy peer_ed25519 from STCP to ETCP_CONN in
etcp_link_enter_ready_tcp; guard link->etcp in tcp_link_close_cb
- chat_sync.c: fix lk->conn NULL dereference for TCP links
- test_stcp.c: update stcp_server_create/stcp_client_connect callsites
- tools/chat_tcp_test: change transport udp→tcp
2 months ago
evgeny
d773f1724a
refactor: STCP connections as ETCP links (is_tcp)
...
- Add is_tcp, tcp_link, tcp_reconnect_* fields to ETCP_LINK
- Remove transport_link from ETCP_CONN, add tcp_link_count
- stcp_link: replace embedded etcp_conn with pointer; add etcp_link backpointer
- stcp_link: link_rx_cb routes ETCP data to etcp_conn_input
- stcp_link: call on_close_cb in close
- New TCP functions: etcp_link_enter_ready_tcp, etcp_tcp_link_start_connect,
etcp_tcp_link_start_reconnect, tcp_link_close_cb, etcp_tcp_send
- etcp_link_new: handle NULL conn for TCP links; skip enter_init for TCP
- etcp_link_close: close stcp_link for TCP
- etcp_encrypt_send: redirect TCP to etcp_tcp_send (skips AES-CCM)
- tcp_server_on_link: create ETCP_LINK(is_tcp=1) + enter_ready_tcp
- etcp_connect: TCP addrs -> etcp_tcp_link_start_connect
- Remove ctx->tcp_link/tcp_ready
- test_stcp_traffic: find stcp_link via links->is_tcp instead of transport_link
- 66/68 tests pass; 2 STCP tests expected to fail (integration not complete)
2 months ago
evgeny
f476188566
fix(chat): node online status race, WELCOME peer_needed off-by-one, JOIN missing proto byte
...
- node_put/node_update_verified: set online=1 on INSERT (nodes created when conn is UP)
- channel_peers_all: fix peer_needed calculation (atl byte was missing)
- cs_send_channel_join: add proto byte to address serialization matching all parsers
2 months ago
evgeny
24316e8cf8
split InviteDialog into ShareInviteDialog + InviteByLinkDialog, add INV button to channel list
2 months ago