feat: cover seedlings (plantón) in copy + legal, backup cadence, server picker

Beta-tester feedback triage. The data model already had LotType.seedling as
first class; the gaps were copy and UX.

- Seedlings/plantones: broaden landing hero (EN/ES), in-app legal notice, and
  all legal texts (site + docs masters) from seeds-only to "seeds and
  seedlings", with a live-plant phytosanitary/transport caveat. Seeds stay the
  hero — targeted, not a blanket rename.
- Backups: settings line now states the 7-day cadence explicitly; cadence lives
  in AutoBackupService.backupInterval as the single source for text and schedule.
- Community servers: replace the manual wss:// text box with a checklist of the
  known servers (defaults visible/toggleable) plus an "add server" affordance
  with basic validation. No jargon in the UI.

i18n across en/es/pt/fr/de/ast (ja falls back). Tests updated + a new
server-picker widget test.
This commit is contained in:
vjrj 2026-07-15 15:57:23 +02:00
parent ab027a8779
commit 15385a26cf
36 changed files with 410 additions and 179 deletions

View file

@ -357,8 +357,9 @@ class _AutoBackupTileState extends State<_AutoBackupTile> {
future: _lastBackup,
builder: (context, snapshot) {
final last = snapshot.data;
final days = AutoBackupService.backupInterval.inDays;
final subtitle = last == null
? t.backup.autoBackupNone
? t.backup.autoBackupNone(days: days)
: t.backup.autoBackupLast(
// Format via the Localizations locale, not the raw app locale:
// Asturian (`ast`) has no `intl` date symbols and would throw,
@ -366,6 +367,7 @@ class _AutoBackupTileState extends State<_AutoBackupTile> {
date: DateFormat.yMMMd(
Localizations.localeOf(context).languageCode,
).format(last),
days: days,
);
return ListTile(
leading: const Icon(Icons.shield_outlined),