tane/apps/app_seeds/lib
vjrj 621902612d feat(plantare): tie the propose form to a real seed
The propose sheet used a free-text seed name, unlinked from the
inventory. Now the seed is picked from your catalogued varieties so the
Plantaré is always tied to a real Variety (tap-through to its detail, and
it shows in that seed's commitments):

- Seed field is an Autocomplete over the inventory; on send the typed name
  resolves to the matching Variety, or creates a quick one if it's new —
  so varietyId is never null. Sheet takes the VarietyRepository; chat
  passes it.
- New repo one-shot `varietyLabels()` (id + label, no joins) feeds the
  picker. Deliberately a Future, not `watchInventory()` — a transient
  sheet must not hold a live Drift subscription (that hung the widget test
  ~36 min). Tests use it too and now run in ~2s with bounded pumps + a
  tall surface, no pumpAndSettle.

Tests: a new name creates & links a Variety; a matching name links the
existing one without duplicating. ui/services/data plantare suites green.
2026-07-15 01:24:50 +02:00
..
data feat(plantare): tie the propose form to a real seed 2026-07-15 01:24:50 +02:00
db feat(plantare): schema v12 — bilateral signed columns + repo 2026-07-14 11:21:46 +02:00
di feat(plantare): PlantareService — orchestrate the signed handshake 2026-07-14 11:21:46 +02:00
domain feat(seed-saving): source attribution + advisory note 2026-07-11 07:52:48 +02:00
i18n feat(plantare): UI — propose from chat, review & sign on the ledger 2026-07-14 11:23:09 +02:00
security feat(backup): sealed backups + printable recovery sheet 2026-07-09 22:32:13 +02:00
services feat(plantare): PlantareService — orchestrate the signed handshake 2026-07-14 11:21:46 +02:00
state feat(social): standard NIP-56 reporting — ReportTransport in commons_core, report sheet on offers and chats, local hide + optional block 2026-07-13 08:26:38 +02:00
ui feat(plantare): tie the propose form to a real seed 2026-07-15 01:24:50 +02:00
app.dart feat(social): local blocklist — hide blocked authors' offers, chats and incoming messages, with unblock management 2026-07-13 08:25:49 +02:00
bootstrap.dart feat(plantare): PlantareService — orchestrate the signed handshake 2026-07-14 11:21:46 +02:00
main.dart feat(identity): switch social identity, all from the one backup 2026-07-10 20:22:24 +02:00