feat(app): ask 'how did it do?' when a harvest is noted (schema v13)

The note growers most wish they had two seasons later — did it do well,
was it worth keeping — never had a home. New append-only GardenOutcomes
table (lotId, season year, three-face rating, free note); the question
appears ONCE, inline, right after recording a harvest in the batch story,
and is skippable without a trace. The answer shows as one more story
line. Rides backups/sync like every mutable table (JSON codec, LWW
import, HLC clock absorb). Migration v12→v13 guarded + verified from
every historical version.
This commit is contained in:
vjrj 2026-07-18 12:18:25 +02:00
parent 92fd84590b
commit bb5b3d4a43
20 changed files with 6030 additions and 15 deletions

View file

@ -2039,6 +2039,39 @@ class Translations$history$en {
/// en: 'Comes from an earlier batch'
String get linkedEarlier => 'Comes from an earlier batch';
/// en: 'How did it do?'
String get outcomeQuestion => 'How did it do?';
/// en: 'Well'
String get outcomeGood => 'Well';
/// en: 'So-so'
String get outcomeMixed => 'So-so';
/// en: 'Poorly'
String get outcomePoor => 'Poorly';
/// en: 'A note for your future self (optional)'
String get outcomeNoteHint => 'A note for your future self (optional)';
/// en: 'Noted'
String get outcomeSaved => 'Noted';
/// en: 'It did well'
String get ratedGood => 'It did well';
/// en: 'It did so-so'
String get ratedMixed => 'It did so-so';
/// en: 'It did poorly'
String get ratedPoor => 'It did poorly';
/// en: 'Season note'
String get outcomeTitle => 'Season note';
/// en: 'Season {year}'
String outcomeYear({required Object year}) => 'Season ${year}';
}
// Path: sale
@ -3277,6 +3310,17 @@ extension on Translations {
'history.from' => ({required Object origin}) => 'From ${origin}',
'history.germinationResult' => ({required Object percent}) => 'Germination test — ${percent}%',
'history.linkedEarlier' => 'Comes from an earlier batch',
'history.outcomeQuestion' => 'How did it do?',
'history.outcomeGood' => 'Well',
'history.outcomeMixed' => 'So-so',
'history.outcomePoor' => 'Poorly',
'history.outcomeNoteHint' => 'A note for your future self (optional)',
'history.outcomeSaved' => 'Noted',
'history.ratedGood' => 'It did well',
'history.ratedMixed' => 'It did so-so',
'history.ratedPoor' => 'It did poorly',
'history.outcomeTitle' => 'Season note',
'history.outcomeYear' => ({required Object year}) => 'Season ${year}',
'sale.title' => 'Sales',
'sale.help' => 'Record seed you sold or bought — money, Ğ1, or any currency. A separate model from a gift or a Plantare. No commission is ever taken on seeds.',
'sale.add' => 'Record a sale',