tane/apps/app_seeds/lib
vjrj 6d16656911 feat(block2): persist chat history (messages survive leaving the chat)
Messages were in-memory only — gone on leaving the conversation.
- MessageStore: keystore-backed (no plaintext), a capped per-peer JSON list
  (last 200). Simple; the encrypted Drift DB is the eventual home at scale.
- MessagesCubit: loads saved history on start (subscribes FIRST, then loads, so
  a message arriving during the load isn't dropped) and persists every sent and
  received message. Wired via DI + TaneApp(messageStore).

Tests (plain 'test', no hang risk): MessageStore round-trip/per-peer/cap, and a
cubit test that reopens a fresh cubit and sees the saved conversation. Analyzer
clean; run 'flutter test' locally to confirm.
2026-07-10 12:20:25 +02:00
..
data feat(block2): publish my seeds to the network (completes publish->discover) 2026-07-10 10:18:30 +02:00
db feat(inventory): photo-first drafts + on-device OCR (digitization R2+R4) 2026-07-09 21:23:46 +02:00
di feat(block2): persist chat history (messages survive leaving the chat) 2026-07-10 12:20:25 +02:00
domain Solve lint issue 2026-07-10 10:34:43 +02:00
i18n feat(block2): 'in your circle' trust — friend-of-a-friend, not a raw count 2026-07-10 12:10:06 +02:00
security feat(backup): sealed backups + printable recovery sheet 2026-07-09 22:32:13 +02:00
services feat(block2): persist chat history (messages survive leaving the chat) 2026-07-10 12:20:25 +02:00
state feat(block2): persist chat history (messages survive leaving the chat) 2026-07-10 12:20:25 +02:00
ui feat(block2): persist chat history (messages survive leaving the chat) 2026-07-10 12:20:25 +02:00
app.dart feat(block2): persist chat history (messages survive leaving the chat) 2026-07-10 12:20:25 +02:00
main.dart feat(block2): persist chat history (messages survive leaving the chat) 2026-07-10 12:20:25 +02:00