tane/apps/app_seeds/lib/db
vjrj 68b04ea409 feat(chat): usable 1:1 chat — bottom-anchored, Drift-backed, dated
- Anchor the message list to the bottom (`reverse: true`) so new messages
  stay in view instead of landing below the fold.
- Move chat history from the OS keystore (O(n²) JSON blob, silent 200-msg
  cap) to a separate encrypted Drift/SQLCipher DB (`ChatDatabase`):
  indexed append, uncapped history, dedup as a unique-key invariant. It's
  an ephemeral per-device cache, isolated from the inventory schema, its
  migrations, and its sync. No data migration (pre-release).
- Add day separators (Today/Yesterday/locale date) and a per-bubble time,
  all via ICU (12/24h per locale; Localizations locale maps Asturian →
  Spanish for intl date symbols).
- Add peer avatars (deterministic colour from the pubkey + name initial),
  surface send failures that were previously silent, and make bubble text
  selectable (addresses, links).
- New i18n keys in en/es/pt/ast; tests for grouping, formatting, avatars,
  scroll anchoring, storage and send errors.

Docs: docs/design/chat-storage.md + open-decisions.md.
2026-07-11 06:40:50 +02:00
..
chat_database.dart feat(chat): usable 1:1 chat — bottom-anchored, Drift-backed, dated 2026-07-11 06:40:50 +02:00
chat_database.g.dart feat(chat): usable 1:1 chat — bottom-anchored, Drift-backed, dated 2026-07-11 06:40:50 +02:00
database.dart feat(sales): local sales/purchase ledger (any currency) 2026-07-11 02:33:42 +02:00
database.g.dart feat(sales): local sales/purchase ledger (any currency) 2026-07-11 02:33:42 +02:00
encrypted_executor.dart fix(db): load bundled SQLCipher on Linux desktop (stop startup segfault) 2026-07-07 23:45:09 +02:00
enums.dart feat(sales): local sales/purchase ledger (any currency) 2026-07-11 02:33:42 +02:00
sync_columns.dart feat(block1): inventory walking skeleton + first quick-add slice 2026-07-07 15:16:14 +02:00
tables.dart feat(sales): local sales/purchase ledger (any currency) 2026-07-11 02:33:42 +02:00