fix: unify date limits, fix ISO week calculation, refactor home screen plan button

- Fix _isoWeek: correct Sunday shift (-3 instead of +4), use floor+1 formula,
  match jan1 timezone to input — planned meals now appear correctly for UTC+ users
- Add kPlanningHorizonDays=28 / kMenuPastWeeks=8 constants; apply to home date
  strip, plan picker (strip + calendar), and menu screen prev/next navigation
- Menu screen week nav: disable arrows at min/max limits using compareTo
- Home screen: replace _GenerateActionCard/_WeekPlannedChip conditional with
  always-visible _FutureDayPlanButton(dateString); show _DayPlannedChip only
  when the specific day has planned meals; remove standalone _PlanMenuButton
- _FutureDayPlanButton uses selected date as defaultStart instead of lastPlanned+1
- Rename weekPlannedLabel -> dayPlannedLabel across all 12 locales

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
dbastrikin
2026-03-22 23:25:46 +02:00
parent edf587e798
commit 9a6b7800a3
30 changed files with 106 additions and 167 deletions

View File

@@ -135,7 +135,7 @@
"generateWeekLabel": "تخطيط الأسبوع",
"generateWeekSubtitle": "سيقوم الذكاء الاصطناعي بإنشاء قائمة طعام تشمل الإفطار والغداء والعشاء لكامل الأسبوع",
"generatingMenu": "جارٍ إنشاء القائمة...",
"weekPlannedLabel": "تم تخطيط الأسبوع",
"dayPlannedLabel": "تم تخطيط اليوم",
"planMenuButton": "تخطيط الوجبات",
"planMenuTitle": "ماذا تريد تخطيطه؟",

View File

@@ -135,7 +135,7 @@
"generateWeekLabel": "Woche planen",
"generateWeekSubtitle": "KI erstellt einen Menüplan mit Frühstück, Mittagessen und Abendessen für die ganze Woche",
"generatingMenu": "Menü wird erstellt...",
"weekPlannedLabel": "Woche geplant",
"dayPlannedLabel": "Tag geplant",
"planMenuButton": "Mahlzeiten planen",
"planMenuTitle": "Was planen?",

View File

@@ -133,7 +133,7 @@
"generateWeekLabel": "Plan the week",
"generateWeekSubtitle": "AI will create a menu with breakfast, lunch and dinner for the whole week",
"generatingMenu": "Generating menu...",
"weekPlannedLabel": "Week planned",
"dayPlannedLabel": "Day planned",
"planMenuButton": "Plan meals",
"planMenuTitle": "What to plan?",

View File

@@ -135,7 +135,7 @@
"generateWeekLabel": "Planificar la semana",
"generateWeekSubtitle": "La IA creará un menú con desayuno, comida y cena para toda la semana",
"generatingMenu": "Generando menú...",
"weekPlannedLabel": "Semana planificada",
"dayPlannedLabel": "a planificado",
"planMenuButton": "Planificar comidas",
"planMenuTitle": "¿Qué planificar?",

View File

@@ -135,7 +135,7 @@
"generateWeekLabel": "Planifier la semaine",
"generateWeekSubtitle": "L'IA créera un menu avec petit-déjeuner, déjeuner et dîner pour toute la semaine",
"generatingMenu": "Génération du menu...",
"weekPlannedLabel": "Semaine planifiée",
"dayPlannedLabel": "Jour planifié",
"planMenuButton": "Planifier les repas",
"planMenuTitle": "Que planifier ?",

View File

@@ -135,7 +135,7 @@
"generateWeekLabel": "सप्ताह की योजना बनाएं",
"generateWeekSubtitle": "AI पूरे सप्ताह के लिए नाश्ता, दोपहर का खाना और रात के खाने के साथ मेनू बनाएगा",
"generatingMenu": "मेनू बना रहे हैं...",
"weekPlannedLabel": "सप्ताह की योजना बनाई गई",
"dayPlannedLabel": "दिन की योजना बनाई गई",
"planMenuButton": "भोजन की योजना बनाएं",
"planMenuTitle": "क्या योजना बनानी है?",

View File

@@ -135,7 +135,7 @@
"generateWeekLabel": "Pianifica la settimana",
"generateWeekSubtitle": "L'AI creerà un menu con colazione, pranzo e cena per tutta la settimana",
"generatingMenu": "Generazione menu...",
"weekPlannedLabel": "Settimana pianificata",
"dayPlannedLabel": "Giorno pianificato",
"planMenuButton": "Pianifica i pasti",
"planMenuTitle": "Cosa pianificare?",

View File

@@ -135,7 +135,7 @@
"generateWeekLabel": "週を計画する",
"generateWeekSubtitle": "AIが一週間の朝食・昼食・夕食のメニューを作成します",
"generatingMenu": "メニューを生成中...",
"weekPlannedLabel": "の計画済み",
"dayPlannedLabel": "の計画済み",
"planMenuButton": "食事を計画する",
"planMenuTitle": "何を計画する?",

View File

@@ -135,7 +135,7 @@
"generateWeekLabel": "주간 계획하기",
"generateWeekSubtitle": "AI가 한 주 동안 아침, 점심, 저녁 식사 메뉴를 만들어 드립니다",
"generatingMenu": "메뉴 생성 중...",
"weekPlannedLabel": "주간 계획 완료",
"dayPlannedLabel": "일일 계획 완료",
"planMenuButton": "식사 계획하기",
"planMenuTitle": "무엇을 계획하시겠어요?",

View File

@@ -826,11 +826,11 @@ abstract class AppLocalizations {
/// **'Generating menu...'**
String get generatingMenu;
/// No description provided for @weekPlannedLabel.
/// No description provided for @dayPlannedLabel.
///
/// In en, this message translates to:
/// **'Week planned'**
String get weekPlannedLabel;
/// **'Day planned'**
String get dayPlannedLabel;
/// No description provided for @planMenuButton.
///

View File

@@ -371,7 +371,7 @@ class AppLocalizationsAr extends AppLocalizations {
String get generatingMenu => 'جارٍ إنشاء القائمة...';
@override
String get weekPlannedLabel => 'تم تخطيط الأسبوع';
String get dayPlannedLabel => 'تم تخطيط اليوم';
@override
String get planMenuButton => 'تخطيط الوجبات';

View File

@@ -373,7 +373,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get generatingMenu => 'Menü wird erstellt...';
@override
String get weekPlannedLabel => 'Woche geplant';
String get dayPlannedLabel => 'Tag geplant';
@override
String get planMenuButton => 'Mahlzeiten planen';

View File

@@ -371,7 +371,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get generatingMenu => 'Generating menu...';
@override
String get weekPlannedLabel => 'Week planned';
String get dayPlannedLabel => 'Day planned';
@override
String get planMenuButton => 'Plan meals';

View File

@@ -373,7 +373,7 @@ class AppLocalizationsEs extends AppLocalizations {
String get generatingMenu => 'Generando menú...';
@override
String get weekPlannedLabel => 'Semana planificada';
String get dayPlannedLabel => 'a planificado';
@override
String get planMenuButton => 'Planificar comidas';

View File

@@ -374,7 +374,7 @@ class AppLocalizationsFr extends AppLocalizations {
String get generatingMenu => 'Génération du menu...';
@override
String get weekPlannedLabel => 'Semaine planifiée';
String get dayPlannedLabel => 'Jour planifié';
@override
String get planMenuButton => 'Planifier les repas';

View File

@@ -372,7 +372,7 @@ class AppLocalizationsHi extends AppLocalizations {
String get generatingMenu => 'मेनू बना रहे हैं...';
@override
String get weekPlannedLabel => 'सप्ताह की योजना बनाई गई';
String get dayPlannedLabel => 'दिन की योजना बनाई गई';
@override
String get planMenuButton => 'भोजन की योजना बनाएं';

View File

@@ -373,7 +373,7 @@ class AppLocalizationsIt extends AppLocalizations {
String get generatingMenu => 'Generazione menu...';
@override
String get weekPlannedLabel => 'Settimana pianificata';
String get dayPlannedLabel => 'Giorno pianificato';
@override
String get planMenuButton => 'Pianifica i pasti';

View File

@@ -369,7 +369,7 @@ class AppLocalizationsJa extends AppLocalizations {
String get generatingMenu => 'メニューを生成中...';
@override
String get weekPlannedLabel => 'の計画済み';
String get dayPlannedLabel => 'の計画済み';
@override
String get planMenuButton => '食事を計画する';

View File

@@ -369,7 +369,7 @@ class AppLocalizationsKo extends AppLocalizations {
String get generatingMenu => '메뉴 생성 중...';
@override
String get weekPlannedLabel => '주간 계획 완료';
String get dayPlannedLabel => '일일 계획 완료';
@override
String get planMenuButton => '식사 계획하기';

View File

@@ -373,7 +373,7 @@ class AppLocalizationsPt extends AppLocalizations {
String get generatingMenu => 'Gerando menu...';
@override
String get weekPlannedLabel => 'Semana planejada';
String get dayPlannedLabel => 'Dia planejado';
@override
String get planMenuButton => 'Planejar refeições';

View File

@@ -371,7 +371,7 @@ class AppLocalizationsRu extends AppLocalizations {
String get generatingMenu => 'Генерируем меню...';
@override
String get weekPlannedLabel => 'Неделя запланирована';
String get dayPlannedLabel => 'День запланирован';
@override
String get planMenuButton => 'Спланировать меню';

View File

@@ -369,7 +369,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get generatingMenu => '正在生成菜单...';
@override
String get weekPlannedLabel => '本周已规划';
String get dayPlannedLabel => '今日已规划';
@override
String get planMenuButton => '规划餐食';

View File

@@ -135,7 +135,7 @@
"generateWeekLabel": "Planejar a semana",
"generateWeekSubtitle": "A IA criará um menu com café da manhã, almoço e jantar para a semana inteira",
"generatingMenu": "Gerando menu...",
"weekPlannedLabel": "Semana planejada",
"dayPlannedLabel": "Dia planejado",
"planMenuButton": "Planejar refeições",
"planMenuTitle": "O que planejar?",

View File

@@ -133,7 +133,7 @@
"generateWeekLabel": "Запланировать неделю",
"generateWeekSubtitle": "AI составит меню с завтраком, обедом и ужином на всю неделю",
"generatingMenu": "Генерируем меню...",
"weekPlannedLabel": "Неделя запланирована",
"dayPlannedLabel": "День запланирован",
"planMenuButton": "Спланировать меню",
"planMenuTitle": "Что запланировать?",

View File

@@ -135,7 +135,7 @@
"generateWeekLabel": "规划本周",
"generateWeekSubtitle": "AI将为整周创建含早餐、午餐和晚餐的菜单",
"generatingMenu": "正在生成菜单...",
"weekPlannedLabel": "本周已规划",
"dayPlannedLabel": "今日已规划",
"planMenuButton": "规划餐食",
"planMenuTitle": "规划什么?",