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