Commit Graph
247 Commits
Author SHA1 Message Date
evgeny a444f28134 Enforce one reaction per author and replace the previous emoji atomically 2026-10-07 08:12:32 +02:00
evgeny 9299c95f10 Verify root formation and invitation certificate replication 2026-10-07 00:46:36 +02:00
evgeny a9a65d53bf Preserve invitation certificates and accept confirmed roots without profile changes 2026-10-07 00:44:50 +02:00
evgeny 2f5a49b011 Repair existing chat history tables with stable message IDs 2026-10-07 00:25:11 +02:00
evgeny 255853dd76 Document complete poll protocol and verified recovery behavior 2026-10-06 22:47:06 +02:00
evgeny bbc8b7693a Restart member and feedback synchronization over existing transports 2026-10-06 22:40:47 +02:00
evgeny da2c13dcf1 Add CLI poll creation, voting and emoji reaction commands 2026-10-06 21:26:37 +02:00
evgeny f99a8c1da2 Expose polls and reactions through headless control safely 2026-10-06 21:26:37 +02:00
evgeny 17444b8c8a Evaluate delayed answers after their source message arrives 2026-10-06 21:24:14 +02:00
evgeny 60b4870549 Pass stable identities to insertion callbacks and bound signed bodies 2026-10-06 21:24:13 +02:00
evgeny 865e4cda59 Log delayed answer validation and keep JSON percentages locale independent 2026-10-06 21:23:37 +02:00
evgeny e6db9fef60 Validate feedback data and provide poll command snapshots 2026-10-06 21:23:37 +02:00
evgeny 0af35630d1 Expose full message data and stable identities in listings 2026-10-06 21:17:24 +02:00
evgeny a4ca31f406 Return submitted message identity and encode JSON safely 2026-10-06 21:17:24 +02:00
evgeny d0aa60fe1a Define canonical poll, answer and reaction formats 2026-10-06 21:15:57 +02:00
evgeny d40f58d79a Add message identities and plan the remaining feedback work 2026-10-06 21:12:53 +02:00
evgeny 04ff801531 Document Merkle v3 and signed feedback state contracts 2026-10-06 20:11:25 +02:00
evgeny f6cc3b6e53 Make feedback roots depend on signed state and validate rebuilt keys 2026-10-06 20:07:44 +02:00
evgeny 982e5a06ab Integrate feedback tables with channel and sync lifecycle 2026-10-06 20:06:39 +02:00
evgeny 8121f93d2e Build feedback model and expose committed state events 2026-10-06 20:06:38 +02:00
evgeny 641a8318a8 Add signed versioned feedback storage and Merkle adapter 2026-10-06 20:05:18 +02:00
evgeny 864a250eea Preserve input cursor when member page outputs alias it 2026-10-06 20:02:41 +02:00
evgeny 49dc837df2 Correct all member dataset arguments in callers 2026-10-06 19:59:43 +02:00
evgeny f6bfd36a6c Include dataset identity in Merkle diagnostics 2026-10-06 19:57:58 +02:00
evgeny 5e146f20bc Adapt member sync and protocol tests to dataset cursors 2026-10-06 19:56:52 +02:00
evgeny 539bfd6db9 Extend Merkle sessions with datasets and full record cursors 2026-10-06 19:56:17 +02:00
evgeny 17491082d4 Validate signed profile avatar manifest references 2026-10-06 19:29:42 +02:00
evgeny c80e82d104 Define member avatar references as manifest objects 2026-10-06 19:29:37 +02:00
evgeny e8365fdec6 Upgrade group avatar columns before notifying database readiness 2026-10-06 14:04:49 +02:00
evgeny 5c772aeecf Preserve channel identity in member adapter fixtures 2026-10-06 14:04:49 +02:00
evgeny 2bcba58131 Reject group avatar commands outside a running chat service 2026-10-06 13:59:17 +02:00
evgeny d0173e1b73 Test atomic schema upgrades and report precise avatar validation errors 2026-10-06 13:57:12 +02:00
evgeny f8d95fcb25 Initialize avatar peers from the current group session epoch 2026-10-06 13:52:19 +02:00
evgeny 3b47a56076 Trace group avatar assembly resets and block mismatches 2026-10-06 13:49:54 +02:00
evgeny a816b842e5 Read group avatar metadata separately from image bytes 2026-10-06 13:43:49 +02:00
evgeny 56897368b3 Own group avatar synchronization in the chat service lifecycle 2026-10-06 13:41:55 +02:00
evgeny f67f090b2a Synchronize signed group avatars in bounded 4 KiB blocks 2026-10-06 13:41:29 +02:00
evgeny e3745f279e Store signed group avatars without replacing channel keys 2026-10-06 13:37:18 +02:00
evgeny 8f83167c0f Forward full join profiles and document canonical profile lengths 2026-10-06 12:58:00 +02:00
evgeny 5276cd0fa0 Simplify profile updates and report database read failures 2026-10-06 12:54:44 +02:00
evgeny d946a1b93a Finalize unsigned initial profiles before channel bootstrap 2026-10-06 12:48:20 +02:00
evgeny 8b327a3f27 Bound upload cache growth and reject stale transfer completions 2026-10-06 12:46:32 +02:00
evgeny 972910c763 Verify profile signatures survive avatar and display name updates 2026-10-06 12:45:45 +02:00
evgeny 9842de7ab7 Document avatar storage, profile exchange and client caching 2026-10-06 12:45:13 +02:00
evgeny c04f51d424 Use bounded 16-bit profile lengths in join member records 2026-10-06 12:44:18 +02:00
evgeny 76c02012eb Preserve complete signed profiles in channel bootstrap messages 2026-10-06 12:44:18 +02:00
evgeny 9279ded7f3 Read complete signed profiles and escape initial display names 2026-10-06 12:43:11 +02:00
evgeny f2d2e6be8f Test avatar immutability, hash validation and quota accounting 2026-10-06 12:40:07 +02:00
evgeny e642551dfe Expose signed storage roles independently of route priority 2026-10-06 12:38:11 +02:00
evgeny 8fb9129300 Verify large signed profiles alongside full owner records 2026-10-06 12:36:35 +02:00