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

@ -1046,6 +1046,17 @@ class _Translations$history$es extends Translations$history$en {
@override String from({required Object origin}) => 'De ${origin}';
@override String germinationResult({required Object percent}) => 'Prueba de germinación — ${percent}%';
@override String get linkedEarlier => 'Viene de un lote anterior';
@override String get outcomeQuestion => '¿Qué tal se dio?';
@override String get outcomeGood => 'Bien';
@override String get outcomeMixed => 'Regular';
@override String get outcomePoor => 'Mal';
@override String get outcomeNoteHint => 'Una nota para tu yo del futuro (opcional)';
@override String get outcomeSaved => 'Anotado';
@override String get ratedGood => 'Se dio bien';
@override String get ratedMixed => 'Se dio regular';
@override String get ratedPoor => 'Se dio mal';
@override String get outcomeTitle => 'Nota de temporada';
@override String outcomeYear({required Object year}) => 'Temporada ${year}';
}
// Path: sale
@ -2055,6 +2066,17 @@ extension on TranslationsEs {
'history.from' => ({required Object origin}) => 'De ${origin}',
'history.germinationResult' => ({required Object percent}) => 'Prueba de germinación — ${percent}%',
'history.linkedEarlier' => 'Viene de un lote anterior',
'history.outcomeQuestion' => '¿Qué tal se dio?',
'history.outcomeGood' => 'Bien',
'history.outcomeMixed' => 'Regular',
'history.outcomePoor' => 'Mal',
'history.outcomeNoteHint' => 'Una nota para tu yo del futuro (opcional)',
'history.outcomeSaved' => 'Anotado',
'history.ratedGood' => 'Se dio bien',
'history.ratedMixed' => 'Se dio regular',
'history.ratedPoor' => 'Se dio mal',
'history.outcomeTitle' => 'Nota de temporada',
'history.outcomeYear' => ({required Object year}) => 'Temporada ${year}',
'sale.title' => 'Ventas',
'sale.help' => 'Registra semilla vendida o comprada — dinero, Ğ1 o cualquier moneda. Un modelo aparte del regalo y del Plantare. Nunca se cobra comisión por las semillas.',
'sale.add' => 'Registrar venta',