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