Commit Graph

  • ce5a84da24 fix: uasync epoll event ordering + test_uasync_socket_race fix evgeny 2026-07-29 11:10:55 +0300
  • b7988f0ef8 refactor: single source of truth — PlaybackState in ViewModel evgeny 2026-07-29 02:29:53 +0300
  • 9742772880 fix: monotonic playGeneration instead of re-settable stopped flag evgeny 2026-07-29 02:20:25 +0300
  • e4af56856c fix: atomic PlayState replaces non-atomic seekVersion+elapsed+progress evgeny 2026-07-29 02:13:47 +0300
  • 1481d1244b fix: seekVersion forces LaunchedEffect restart on seek/resume evgeny 2026-07-29 02:10:51 +0300
  • 0afc74e567 fix: stop/pause no longer fires onComplete from killed thread evgeny 2026-07-29 02:08:51 +0300
  • 2edd9bcc06 cleanup: remove dead currentPlayPath, fix seekVoice _currentPlayingPath reset evgeny 2026-07-29 02:03:09 +0300
  • 2e8aa89397 voice: fix waveform — pointerInput on Box, cursor + white bars stay on pause evgeny 2026-07-29 02:00:43 +0300
  • 6980f34df9 voice: real pause (saves position), waveform tap seek, resume from position evgeny 2026-07-29 01:57:31 +0300
  • 887bbdbf84 voice: play/pause toggle, stop previous on new track evgeny 2026-07-29 01:51:25 +0300
  • b8e15ad1f2 voice: played bars white, yellow cursor line on waveform evgeny 2026-07-29 01:48:16 +0300
  • ee8167793c voice: waveform idle bars lighter (#CCD4 80% — near white) evgeny 2026-07-29 01:45:03 +0300
  • 109326717e voice: play button white circle, black icon evgeny 2026-07-29 01:44:26 +0300
  • f745fb25e8 android: lighten waveform bars (idle: #A0A0B0 70%, playing unplayed: 35% alpha) evgeny 2026-07-29 01:43:55 +0300
  • 4ffa59d968 unify voice waveform format: base64 wf={100chars};dur={ms}; for both desktop and Android evgeny 2026-07-29 01:43:11 +0300
  • b65a091b00 voice: base64 compact waveform (100 bytes), progress bar, play/pause auto-reset evgeny 2026-07-29 01:36:43 +0300
  • 3c75c8f687 icons: replace emoji text with PNG resources + add media_dir debug logs evgeny 2026-07-29 01:27:23 +0300
  • 491fa84db8 voice: fix waveform display + text buffer, 75% width, play/pause state evgeny 2026-07-29 01:21:35 +0300
  • 94a537ebdd voice: waveform recording + display, playback wiring evgeny 2026-07-29 01:15:57 +0300
  • 39d6f19d97 fix: chat_msg media_dir path — strip filename from g_cc.db_path evgeny 2026-07-29 01:04:27 +0300
  • b11e705f7a android: input bar — single right icon (PTT when empty, Send when text) evgeny 2026-07-29 00:58:26 +0300
  • b90728be3c android: round send button with \u27A4 icon (matching desktop chatgui) evgeny 2026-07-29 00:55:39 +0300
  • 9fca8d5e1f android: fix voice file creation (mkdir errno logging), PTT while(true) evgeny 2026-07-29 00:53:23 +0300
  • 1dac0b8c81 unify compressor: remove C++ duplicate audiocompressor, use lib/audio_compressor.c in chatgui evgeny 2026-07-29 00:52:05 +0300
  • 00afc5c80a android: fix PTT — one Box across all states, release now works; 1s min duration evgeny 2026-07-29 00:32:10 +0300
  • 90de87b13d move audio_compressor from libutun_lite/ to lib/ — shared library evgeny 2026-07-29 00:26:45 +0300
  • d22eac55f7 fix audio_compressor: flat array instead of ring buffer, +unit test (411 asserts) evgeny 2026-07-29 00:11:29 +0300
  • fc2adcf81d android: fix voice recording — init g_rec, move includes, check startRecording result evgeny 2026-07-28 23:52:33 +0300
  • 50214d50c1 android: fix PTT button — Box+pointerInput(hasMicPerm) instead of IconButton+onClick conflict evgeny 2026-07-28 23:35:53 +0300
  • 1f8f41bda7 android: tabbed settings (Settings/Audio) with mic test, codec preset, compressor sliders evgeny 2026-07-28 23:33:19 +0300
  • 9b6dd6476c android: PTT swipe-to-lock, recording overlay with level bar, cancel/send buttons evgeny 2026-07-28 23:28:19 +0300
  • 0f1e6e0006 android: fix NDK build — add Opus sources, fix Kotlin composable context, fix bridge db_path param evgeny 2026-07-28 23:20:19 +0300
  • 5b6979da27 android: voice messages recording + playback, file attachments evgeny 2026-07-28 23:15:59 +0300
  • e751e6ee69 android: voice messages + attachments architecture plan, build fixes evgeny 2026-07-28 23:07:23 +0300
  • f8d7c21a79 Android: unify DB access via JNI/JSON, fix instance lifecycle, add restart + health check evgeny 2026-07-28 21:13:11 +0300
  • 03b34e9580 android: fix QR join flow + cleanup log levels + remove log artifacts evgeny 2026-07-28 18:11:11 +0300
  • 0216b0bf50 android: utun shutdown diagnostics + non-blocking stop + logreceiver doc evgeny 2026-07-28 17:06:09 +0300
  • 064bed06f2 android: fix key regeneration, Clear DB, uasync eventfd, udp log from config evgeny 2026-07-28 16:29:33 +0300
  • d0cca27edd invite: add proto field (UDP/TCP/BOTH) to invite link binary format evgeny 2026-07-28 00:34:07 +0300
  • 5276c1288c android: real utun instance + SQLite channels + reactive logs + QR join evgeny 2026-07-28 00:01:47 +0300
  • d1f6f6fca9 fix WELCOME deserialization: skip atl+adm_tags_sig fields before address data Evgeny 2026-07-27 23:48:18 +0300
  • 9e58160480 android: initial chatgui-android project with QR join evgeny 2026-07-27 22:49:49 +0300
  • a47ef86810 uasync: fix stall detection — record timestamp after poll wait, not before Evgeny 2026-07-27 19:42:35 +0300
  • 48bfe644c4 uasync: add event loop stall detection (warn if >10ms between poll entries) Evgeny 2026-07-27 19:35:13 +0300
  • 2d53b3120f ffmpeg: add build script and CMake integration Evgeny 2026-07-27 17:59:07 +0300
  • d497a8dc92 media_blocks: fix missing QJsonArray include Evgeny 2026-07-27 17:16:02 +0300
  • d4a396f888 media: Ed25519-подписи блоков, local_attrs, MediaBlockReader, файловые вложения Evgeny 2026-07-27 17:09:31 +0300
  • 6b765de5cc feat: voice playback delay compensation + waveform click-to-seek Evgeny 2026-07-27 14:53:53 +0300
  • da953c6c7a fix: mic test level bar dynamic color too Evgeny 2026-07-27 14:25:47 +0300
  • f08b63466c исправлены include-пути в chatgui GUI-файлах и utun_node.cpp после переноса chat в src/chat/ Evgeny 2026-07-27 13:35:40 +0300
  • ed6132fcda перенос chat-логики из chatgui/transport в src/chat/ Evgeny 2026-07-27 12:58:33 +0300
  • 4595052b5b fix: level bar dynamic color — red only above 85% Evgeny 2026-07-27 12:20:06 +0300
  • d5b97ff104 fix: immediate compressor apply + dead code removal + qDebug→DEBUG_* conversion Evgeny 2026-07-27 12:11:50 +0300
  • 5ec1cb78be fix: use DEBUG_* macros instead of qDebug in AudioRecorder/AudioCompressor Evgeny 2026-07-27 11:56:49 +0300
  • f1b599f0c0 feat: voice compressor with RMS+peak leveling, sliding window envelope, rate-limited gain Evgeny 2026-07-27 11:24:47 +0300
  • 7004b110ae feat: mic level bar in recording overlay Evgeny 2026-07-27 09:35:16 +0300
  • 5593bfdc0c fix: logarithmic waveform scale + visible idle color + duration display Evgeny 2026-07-27 09:19:34 +0300
  • e050f3f1f9 fix: waveform repaint via viewport()->update() instead of activeWindow() Evgeny 2026-07-27 09:13:33 +0300
  • 05c7b4d47e feat: waveform display + 3px progress bar in bubble + sliding window RMS Evgeny 2026-07-27 09:07:14 +0300
  • 70a0a70b88 fix: crash — no delete of ma_sound/ma_audio_buffer during playback Evgeny 2026-07-27 08:16:37 +0300
  • 8bd4a7218c fix: true pause/resume with position preservation Evgeny 2026-07-27 08:07:19 +0300
  • 830f729f52 fix: pause support + old message skip + stopCurrentPcm Evgeny 2026-07-27 00:38:15 +0300
  • 2687c3ed82 fix: play button not responding + debug logging to log file Evgeny 2026-07-27 00:30:09 +0300
  • 01012675d0 fix: voice playback coordinate bug + debug logging + device name encoding Evgeny 2026-07-27 00:22:00 +0300
  • 324d285145 fix: voice message display and playback — complete flow Evgeny 2026-07-27 00:13:58 +0300
  • fd3b125ecb fix: voice message JSON double-nesting, '{' display Evgeny 2026-07-26 22:16:09 +0300
  • ca9d1384f2 fix: PCM copy, device name encoding, double shutdown Evgeny 2026-07-26 22:01:46 +0300
  • a4ae1c6b41 fix: RMS mic level, 25ms timer, speaker test, overlay recording indicator Evgeny 2026-07-26 21:27:57 +0300
  • 850a260aac fix: voice message display, playback, recording UI, audio settings Evgeny 2026-07-26 21:19:29 +0300
  • 4fde0b0325 feat: integrate Opus codec into lib/libopus + voice messages in chatgui Evgeny 2026-07-26 20:34:38 +0300
  • 4a23593020 member_sync: add merkle_sync_broadcast relay to other SYNCED sessions Evgeny 2026-07-26 18:44:45 +0300
  • ef1e064bdc merkle_sync: broadcast relay for star topology + all 6 test stages pass Evgeny 2026-07-26 18:20:10 +0300
  • b9bde23d51 Stage 5 WIP: sequential syncs for 3-instance test, increased timeouts Evgeny 2026-07-26 17:53:43 +0300
  • a1ecab997e merkle_sync: fix 4 protocol bugs + add test suite (Stages 1-4) Evgeny 2026-07-26 17:42:27 +0300
  • 0e11d858e8 chatgui: fix all animations showing the same TGS (rlottie model cache key collision) Evgeny 2026-07-26 15:18:59 +0300
  • 49da899964 chatgui: channel sorting by name or last message time with preview Evgeny 2026-07-26 11:08:59 +0300
  • 332df381d1 chatgui: propagate local nick changes to message authors via MsgAuthorNodeIdRole + reloadLocalNicks Evgeny 2026-07-26 10:11:31 +0300
  • 22db84816e chatgui: add local_nick TEXT to peers table DDL, remove ALTER TABLE hacks Evgeny 2026-07-26 09:45:00 +0300
  • 86843693c9 chatgui: ensure local_nick column exists before SELECT in getChannelMembers Evgeny 2026-07-26 09:43:39 +0300
  • df3fc04523 chatgui: RenameDialog — quick rename via context menu, separate mini dialog Evgeny 2026-07-26 09:33:31 +0300
  • 85bdc00aaf chatgui: local nicknames per channel member — edit via MemberPropsDialog, override display everywhere Evgeny 2026-07-26 09:19:31 +0300
  • 373a2e4687 chatgui: member detail panel redesign — compact format with relative time, colored online dot, 5s auto-refresh Evgeny 2026-07-26 09:09:21 +0300
  • 11ab897fe5 chatgui: fix RTT display 10x overstatement (DB stores 0.1ms, displayed as ms); remove unused rtt_avg_100 Evgeny 2026-07-26 08:57:02 +0300
  • 12904a97e0 chatgui: AccountDelegate — palette-consistent colors (light/alternateBase instead of hardcoded) Evgeny 2026-07-26 07:43:01 +0300
  • 77d89b841a chatgui: double-click member edit, fix delegate backgrounds; transport: invite_sync/member_sync robustness Evgeny 2026-07-26 07:18:27 +0300
  • cd3c3ad07d merkle_sync: fix level 0 SQL range, rebuild trees at startup Evgeny 2026-07-25 23:31:36 +0300
  • 6bf8482558 merkle_sync: fix BATCH parse, synthetic HASHES, initiator done_cb Evgeny 2026-07-25 23:11:53 +0300
  • be10714972 merkle_sync: fix prefix reconstruction, remove timeouts/retries Evgeny 2026-07-25 23:00:42 +0300
  • 332e3a61e5 fix merkle_sync: prefix serialization writes LSB bytes instead of MSB Evgeny 2026-07-25 21:53:06 +0300
  • ccc5396167 merkle_sync: fix _handle_batch — call _session_done after terminal buckets Evgeny 2026-07-25 21:32:00 +0300
  • d512bacc81 merkle_sync: fix message format — type after ns (match chat_sync) Evgeny 2026-07-25 20:56:05 +0300
  • ecb03ca290 conn_mgr: detect duplicate conn in handshake; etcp: loud collision errors in link/peer_id Evgeny 2026-07-25 19:43:26 +0300
  • a4582202a8 merkle_sync: fix range_end formula — cover all parent+child bucket bits Evgeny 2026-07-25 17:58:51 +0300
  • be5a760de9 merkle_sync: add debug logs to _get_level_hashes (SQL error + bitmap result) Evgeny 2026-07-25 17:43:22 +0300
  • 5983acd988 merkle_sync: fix _get_level_hashes — range query instead of exact mismatch (prefix encoding bug) Evgeny 2026-07-25 17:37:12 +0300
  • 7a9e3bea5f db_sync: mc>pc guard with last_peer_count — detect stalled sync when pc doesn't change Evgeny 2026-07-25 16:56:30 +0300
  • 3490789249 db_sync: skip SYNC_DONE in count>0 handler when received==0 — breaks bad_sig recv→send loop on client side Evgeny 2026-07-25 16:49:46 +0300
  • c9436219a0 db_sync: fix synced_pos overwrite in SYNC_DONE — use max to preserve total_processed advance Evgeny 2026-07-25 16:28:09 +0300
  • 34404403ef db_sync: verify sig before send + fix total_processed double-count Evgeny 2026-07-25 16:10:20 +0300
  • e9fce43be5 db_sync: fix bad_sig infinite loop — delete+rechain, advance synced_pos past dup/bad_sig, accept on covered tail Evgeny 2026-07-25 15:58:18 +0300