feat(train): Home, Maps, Record, Groups and Profile in Learn's frame, washed in carrot (ADR 0030, D60)

Train's tabs are Strava's five where one screen with four tabs at its
top had held workouts, days, plans and routes: Home the workouts, Maps
the routes, Record recording and the interval plans, Groups a screen
saying they come later, Profile the days and the way to the account.
A device that doesn't record has no Record tab, its plans beside the
days in Profile.

The frame is halkyon_ui's NavigationFrame, driven by go_router as
Learn's: a workout's page opens in Home and a day's in Profile with the
tabs beside them; the route and plan editors and the recording cover
them, their content handed over as it is. Every tab washes down from the
top in carrot, the warm end of Train's icon, as Learn's in cobalt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-30 23:52:48 +01:00
commit d4d749eb9f
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 800 additions and 202 deletions

View file

@ -556,5 +556,12 @@
"recordWheelTyped": "{mm} mm, wie du ihn eingegeben hast",
"recordWheelDefault": "{mm} mm, bis GPS ihn auf 2 km Fahrt gemessen hat",
"recordWheelHint": "In Millimetern, wie auf dem Reifen (700×25C: 2105); leer, damit GPS ihn misst",
"recordWheelSave": "Speichern"
"recordWheelSave": "Speichern",
"shellTabHome": "Startseite",
"shellTabMaps": "Karten",
"shellTabRecord": "Aufzeichnen",
"shellTabGroups": "Gruppen",
"shellTabProfile": "Profil",
"groupsLaterTitle": "Gruppen kommen später",
"groupsLaterHint": "Mit anderen trainieren, in euren eigenen Gruppen, kommt in einer späteren Version von Train."
}

View file

@ -703,5 +703,12 @@
"recordWheelDefault": "{mm} mm until GPS has measured it on a ride of 2 km",
"@recordWheelDefault": {"placeholders": {"mm": {"type": "int"}}},
"recordWheelHint": "In millimetres, as the tyre says (700×25C: 2105); empty to have GPS measure it",
"recordWheelSave": "Save"
"recordWheelSave": "Save",
"shellTabHome": "Home",
"shellTabMaps": "Maps",
"shellTabRecord": "Record",
"shellTabGroups": "Groups",
"shellTabProfile": "Profile",
"groupsLaterTitle": "Groups come later",
"groupsLaterHint": "Training with others, in groups of your own, comes in a later version of Train."
}

View file

@ -3363,6 +3363,48 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'Save'**
String get recordWheelSave;
/// No description provided for @shellTabHome.
///
/// In en, this message translates to:
/// **'Home'**
String get shellTabHome;
/// No description provided for @shellTabMaps.
///
/// In en, this message translates to:
/// **'Maps'**
String get shellTabMaps;
/// No description provided for @shellTabRecord.
///
/// In en, this message translates to:
/// **'Record'**
String get shellTabRecord;
/// No description provided for @shellTabGroups.
///
/// In en, this message translates to:
/// **'Groups'**
String get shellTabGroups;
/// No description provided for @shellTabProfile.
///
/// In en, this message translates to:
/// **'Profile'**
String get shellTabProfile;
/// No description provided for @groupsLaterTitle.
///
/// In en, this message translates to:
/// **'Groups come later'**
String get groupsLaterTitle;
/// No description provided for @groupsLaterHint.
///
/// In en, this message translates to:
/// **'Training with others, in groups of your own, comes in a later version of Train.'**
String get groupsLaterHint;
}
class _AppLocalizationsDelegate

View file

@ -2019,4 +2019,26 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get recordWheelSave => 'Speichern';
@override
String get shellTabHome => 'Startseite';
@override
String get shellTabMaps => 'Karten';
@override
String get shellTabRecord => 'Aufzeichnen';
@override
String get shellTabGroups => 'Gruppen';
@override
String get shellTabProfile => 'Profil';
@override
String get groupsLaterTitle => 'Gruppen kommen später';
@override
String get groupsLaterHint =>
'Mit anderen trainieren, in euren eigenen Gruppen, kommt in einer späteren Version von Train.';
}

View file

@ -2007,6 +2007,28 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get recordWheelSave => 'Save';
@override
String get shellTabHome => 'Home';
@override
String get shellTabMaps => 'Maps';
@override
String get shellTabRecord => 'Record';
@override
String get shellTabGroups => 'Groups';
@override
String get shellTabProfile => 'Profile';
@override
String get groupsLaterTitle => 'Groups come later';
@override
String get groupsLaterHint =>
'Training with others, in groups of your own, comes in a later version of Train.';
}
/// The translations for English, as used in the United Kingdom (`en_GB`).