Commit Graph
48 Commits
Author SHA1 Message Date
evgeny 4338f1f9c8 Skip Windows drive roots when creating attachment directories 2026-11-01 21:30:23 +01:00
evgeny 8e204ef887 Log precise directory creation errors when preparing attachments 2026-11-01 21:02:47 +01:00
evgeny 38ab885609 Expose attachment cancellation as a typed task discard callback 2026-10-29 13:35:41 +01:00
evgeny e943879c50 Carry Android photo and video request IDs through PM preparation 2026-10-29 13:34:26 +01:00
evgeny 4fd5ebf57a Acknowledge PM media submissions after local commit or preparation failure 2026-10-29 13:34:26 +01:00
evgeny e3b09bd0b7 Support JPEG and PNG attachment metadata and preparation 2026-10-28 12:08:06 +01:00
evgeny 4c1512cb78 Release unsubmitted media resources and own desktop channel and PM requests 2026-10-28 00:59:00 +01:00
evgeny f63d640c95 media: share bounded content type validation in encrypted containers 2026-10-24 17:26:11 +02:00
evgeny f331d177ca docs(media): clarify preparation ownership and active protocol commands 2026-10-24 17:26:11 +02:00
evgeny 28bbd62d74 docs(media): specify attachment metadata and voice file contracts 2026-10-24 17:26:11 +02:00
evgeny 7ff8e1f15a docs(media): specify crypto and file transfer ownership contracts 2026-10-24 17:26:11 +02:00
evgeny 68a7695d81 media: reject voice duration by complete frames before encoding 2026-10-24 17:26:11 +02:00
evgeny 6f3d634c77 media: share attachment duration limit 2026-10-24 17:26:11 +02:00
evgeny 936bacbe4b Clarify encrypted output cleanup contract on filesystem errors 2026-10-24 15:00:05 +02:00
evgeny 92d52d25a8 Prepare encrypted attachments in exclusively owned durable temporaries 2026-10-24 14:40:53 +02:00
evgeny aa7a9b74f4 Select ordinary temporary file mode for copies and media blocks 2026-10-24 14:38:54 +02:00
evgeny 386ea85fea Log precise copy and media indexing failure operations 2026-10-22 10:27:42 +02:00
evgeny 607de2a074 Bound recursive walker stack and report exact copy failure phases 2026-10-22 10:26:56 +02:00
evgeny f399ded5ba Preserve files on copy errors and check media primitive failures 2026-10-22 10:18:23 +02:00
evgeny 3100985e4c Specify media worker ownership errors and primitive contracts 2026-10-22 10:16:57 +02:00
evgeny 1896a19eba Explain exact encrypted container rejection reasons 2026-10-18 10:41:27 +02:00
evgeny 3c395dfe5d Share durable encrypted file publication with direct messages 2026-10-18 10:39:03 +02:00
evgeny 41696b7e0b Route encrypted group preparation through key owner 2026-10-18 02:14:26 +02:00
evgeny 6a90d79d04 Add authenticated encrypted attachment container 2026-10-18 02:09:30 +02:00
evgeny d6db3d18ce Extract shared CCM and streaming media cryptography 2026-10-18 02:08:29 +02:00
evgeny be295f768c feat(chat): add local DM deletion and improve Android member list
Delete local conversations atomically, retain replay protection and sequence counters, and guard asynchronous media work by history generation. Add Android avatar menu and confirmation, persistent file cleanup, and regression coverage.

Fix unnamed member wire padding and compact Android member action spacing.

Validation: 158 core tests passed; targeted DM tests, desktop build, Android unit tests and debug APK build passed.
2026-10-18 02:04:05 +02:00
evgeny e811ac395a Preserve channel reply context through attachment preparation 2026-10-08 00:20:48 +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 40b974b29c Исправь потоковый AGC и применяй mute после AEC 2026-10-02 01:56:10 +03:00
evgeny f2ff3ee5ab Report preparation rejection and release abandoned owned sources 2026-10-01 18:53:08 +03:00
evgeny 51a820ac82 Track PM encryption preparation and clean cancelled source files 2026-10-01 18:37:23 +03:00
evgeny c900adbc69 Report pinned preparation results and clean abandoned media outputs 2026-10-01 18:36:59 +03:00
evgeny 4f76b4d765 Dispatch Qt attachments using the target captured by the composer 2026-10-01 17:54:48 +03:00
evgeny ba409427c6 Bound media worker concurrency and reject incomplete file copies 2026-10-01 17:51:09 +03:00
evgeny 1b3794e9f9 Include common attachment preparation in both core targets 2026-10-01 17:50:46 +03:00
evgeny 555b6fcf86 Prepare voice and video before dispatching to a fixed conversation 2026-10-01 17:49:52 +03:00
evgeny 984b9e8123 Keep PM attachment kinds scoped to files voice and video 2026-10-01 17:43:53 +03:00
evgeny c7310e1fad Register shared voice encoding in core build targets 2026-10-01 17:43:10 +03:00
evgeny a5f90ec207 Share voice file encoding and final PCM metadata across clients 2026-10-01 17:42:44 +03:00
evgeny 7357a63fdf Define bounded typed attachment metadata for PM and GUI 2026-10-01 17:38:25 +03:00
evgeny adff64e483 Deliver media completions without polling or timer failure joins 2026-10-01 17:36:43 +03:00
evgeny 01fcefdec5 docs: clarify core, group and chat header contracts 2026-09-28 12:01:08 +03:00
evgeny 72fee9e245 Separate core, UTUN and chat lifecycles with owned asynchronous work 2026-09-28 11:39:08 +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 2cba839de4 Убрал DEBUG_CATEGORY_DEBUG: сообщения разбросаны по модульным категориям (+CHAT=25, MEDIA=23) 2026-08-09 17:24:15 +03:00
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
2026-08-07 00:48:27 +03:00
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)
2026-08-06 22:14:32 +03:00
evgeny 65dbfa6813 feat: media_async + media_index modules, media_files table, tests
- media_async: thread-per-task async engine with primitives (sha256, sign, copy, uuid, file_size)
- media_index: media_files DB table with register_async for indexing chunks
- chat_msg: async media submission via register_async, simplified chat_msg_submit fields
- voice_recorder/attachment_sender: write single file (no chunk splitting on caller side)
- inputbar/messagelist: updated to new simplified submit interface
- test_media_async: 4-thread stress test (200K ops / 2 sec, 0 errors)
- test_media_index: 9 cases covering commit edge cases + async flow
- build: Makefile.am, CMakeLists.txt, utun_sources.cmake updated
2026-07-29 14:15:10 +03:00