Commit Graph
3447 Commits
Author SHA1 Message Date
evgeny e5a1fc5a48 Start and stop attachment key owner with chat service 2026-10-18 02:13:54 +02:00
evgeny 60e040677b Declare attachment grant service and lifecycle state 2026-10-18 02:13:40 +02:00
evgeny 321ed8e747 Implement durable encrypted attachment grants and requests 2026-10-18 02:13:28 +02:00
evgeny e45401449e Share complete membership verification for private grants 2026-10-18 02:10:11 +02:00
evgeny 6a90d79d04 Add authenticated encrypted attachment container 2026-10-18 02:09:30 +02:00
evgeny b4ef4ec919 Switch message cipher consumers to shared media API 2026-10-18 02:08:52 +02:00
evgeny 9c22b04cb0 Use common file cipher primitives in direct messages 2026-10-18 02:08:45 +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 97710b609f test(nat): require OPEN for public TCP listeners receiving connections 2026-10-18 01:02:08 +02:00
evgeny 75d383f89d docs(nat): describe passive incoming connection evidence 2026-10-18 00:59:11 +02:00
evgeny a20a219063 fix(core): free pending ping payloads when destroying instance 2026-10-18 00:57:11 +02:00
evgeny 6075b4cd0f test(nat): verify public incoming profiles on isolated routed network 2026-10-18 00:55:37 +02:00
evgeny 49385ab91c test(nat): isolate active measurements from incoming transport evidence 2026-10-18 00:54:51 +02:00
evgeny 094a8bb499 test(nat): cover accepted UDP and TCP profiles and LAN exclusions 2026-10-18 00:42:35 +02:00
evgeny df2f6ff300 feat(nat): confirm direct open profile from accepted public connections 2026-10-18 00:41:53 +02:00
evgeny 37e092672a fix(nat): retain cold ingress reservation after partial measurements 2026-10-17 23:53:09 +02:00
evgeny 7bf877b7d6 test(nat): exercise full retry budget with high RTT and lost reports 2026-10-17 23:45:35 +02:00
evgeny 305b61ccab fix(nat): advance after an unfinished pair uses its full retry budget 2026-10-17 23:43:21 +02:00
evgeny 1d1f5d081f test(nat): reserve fresh helper before publishing it during recheck 2026-10-17 23:41:51 +02:00
evgeny edc78cbf4a test(nat): cover helper rotation, preserved OPEN and budget resume 2026-10-17 23:39:17 +02:00
evgeny a72e514dc5 fix(nat): keep fresh ingress checks active during profile rechecks 2026-10-17 23:38:52 +02:00
evgeny 6ad3674904 fix(nat): continue helper traversal after partial mapping results 2026-10-17 23:37:10 +02:00
evgeny 7c7b9646f3 test(android): distinguish untranslated and unmeasured interface addresses 2026-10-17 23:20:55 +02:00
evgeny 575a7bfe32 fix(android): show no NAT and inbound status instead of interface 2026-10-17 23:20:55 +02:00
evgeny cb8e654639 fix(android): preserve measured profiles in member address details 2026-10-17 23:20:55 +02:00
evgeny 3f7cfe1c86 fix(chatgui): distinguish untranslated addresses from unmeasured profiles 2026-10-17 23:19:25 +02:00
evgeny a485b10e63 fix(chatgui): show measured NAT profile in member addresses 2026-10-17 23:18:57 +02:00
evgeny 3e29a7ca1c test(android): expect distinct NAT? and EIM? address labels 2026-10-17 22:17:53 +02:00
evgeny 6cbcb860d6 fix(android): distinguish unmeasured NAT from NAT with unknown type 2026-10-17 22:07:59 +02:00
evgeny 86c08092af feat(android): show NAT profile and external address for own sockets 2026-10-17 22:07:58 +02:00
evgeny 1dfe349eb8 fix(android): consume local socket snapshots on core events 2026-10-17 22:07:58 +02:00
evgeny c69f8d8975 fix(nat): notify GUI and include profiles in Android socket snapshots 2026-10-17 22:07:58 +02:00
evgeny 60104ea093 fix(chatgui): label detected NAT with unknown type as NAT? 2026-10-17 22:02:36 +02:00
evgeny 2513e9ae81 tests: finish cold UDP detection before opening additional TCP links 2026-10-17 21:22:22 +02:00
evgeny d2a8e6fda7 db: accept TCP IP-only addresses while preserving stored projections 2026-10-17 19:58:54 +02:00
evgeny 2c7c3c9e8b tests: allow TCP IP observations from existing incoming links 2026-10-17 19:54:18 +02:00
evgeny 857092508a docs: explain TCP NAT presence and IP-only addresses 2026-10-17 19:53:34 +02:00
evgeny b588f8e9f4 tests: verify TCP IP-only detection across real NAT gateways 2026-10-17 19:52:39 +02:00
evgeny 62aee9f01c tests: cover TCP NAT presence and zero-port address publication 2026-10-17 19:50:33 +02:00
evgeny c42d75c2f5 nat: limit helper selection and topology retries to UDP 2026-10-17 19:49:42 +02:00
evgeny 5c0db6ce9e nat: remove TCP listener probes from endpoint detection 2026-10-17 19:47:37 +02:00
evgeny 6363c8b7ea nat: publish TCP external IPs with an unknown port 2026-10-17 19:46:33 +02:00
evgeny 5eb3526186 etcp: exchange observed IPs on established TCP links 2026-10-17 19:46:02 +02:00
evgeny 95f209d098 nat: determine TCP translation from one public IP observation 2026-10-17 19:45:29 +02:00
evgeny d7ad58b380 docs: clarify STUN result fields and API usage 2026-10-17 18:50:39 +02:00
evgeny dbe2640e74 nat: reject local STUN paths as Internet mapping evidence 2026-10-17 18:50:10 +02:00
evgeny 7a40ba536e tests: verify STUN estimates and ETCP promotion in isolated networks 2026-10-17 18:48:06 +02:00
evgeny 8983026625 docs: describe same-interface STUN estimates and working endpoint addresses 2026-10-17 18:47:41 +02:00
evgeny f5d923a671 tests: cover tentative STUN mapping, expiry and native priority 2026-10-17 18:46:38 +02:00