tane/apps/app_seeds/lib
vjrj 6de039d518 feat(sales): local sales/purchase ledger (any currency)
A sale is a distinct model from a gift or a Plantare (reproduction
commitment): a recorded seed sale or purchase with an optional price in
ANY currency — €, Ğ1, time, or none yet. Mirrors the Plantare feature.

- schema v10: Sales table (SyncColumns), guarded createTable migration,
  schema dump + generated schema_v10 for the migration round-trip test
- enum SaleDirection { iSold, iBought }
- VarietyRepository: create/watch/watchForVariety/delete + backup
  export/exportForSync/import (LWW-by-HLC, tombstones)
- InventorySnapshot.sales + JSON codec encode/decode (round-trips amount,
  currency, counterparty)
- UI: SalesScreen (/sales), sale sheet, drawer entry, variety-detail
  action beside 'add Plantare'; money hides a trailing .0
- i18n sale block + menu.sales in en/es/pt/ast
- tests: sales repo test (5) incl. Ğ1/price-less/backup round-trip;
  Sales screen added to the small-screen overflow guard

Also harden the overflow guard: swallow the headless engine's image
resource service PNG-decode errors (unrelated to layout) while still
failing on real RenderFlex overflows, so home/about stop reporting
false failures.
2026-07-11 02:33:42 +02:00
..
data feat(sales): local sales/purchase ledger (any currency) 2026-07-11 02:33:42 +02:00
db feat(sales): local sales/purchase ledger (any currency) 2026-07-11 02:33:42 +02:00
di feat(sync): device-to-device inventory sync, end to end 2026-07-10 23:45:40 +02:00
domain Solve lint issue 2026-07-10 10:34:43 +02:00
i18n feat(sales): local sales/purchase ledger (any currency) 2026-07-11 02:33:42 +02:00
security feat(backup): sealed backups + printable recovery sheet 2026-07-09 22:32:13 +02:00
services fix(sync): replicate deletions and keep photos off the wire 2026-07-11 00:17:08 +02:00
state refactor(social): one shared relay connection per identity 2026-07-10 21:50:34 +02:00
ui feat(sales): local sales/purchase ledger (any currency) 2026-07-11 02:33:42 +02:00
app.dart feat(sales): local sales/purchase ledger (any currency) 2026-07-11 02:33:42 +02:00
bootstrap.dart feat(sync): device-to-device inventory sync, end to end 2026-07-10 23:45:40 +02:00
main.dart feat(identity): switch social identity, all from the one backup 2026-07-10 20:22:24 +02:00