feat(train): search for places in the route planner, through Photon (ADR 0030, D50)

A `search` endpoint asks the instance's Photon (compose.search.yaml, Europe's
database from GraphHopper, renewed monthly) for people signed in, limited and
unlogged. The planner gets a field over its map: the places found nearest the
map's centre first, in the app's language; one chosen is the next waypoint.

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-29 16:20:36 +01:00
commit edd2df79bd
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 2184 additions and 7 deletions

View file

@ -397,6 +397,11 @@
"routeProfileMtb": "Mountainbike",
"routeTapHint": "Tipp auf die Karte, um einen Wegpunkt hinzuzufügen; halt einen gedrückt und zieh ihn, um ihn zu verschieben.",
"routeUndo": "Letzten Wegpunkt entfernen",
"routeSearchHint": "Nach einem Ort suchen",
"routeSearchClear": "Suche leeren",
"routeSearchNothing": "Nichts gefunden.",
"routeSearchTooOften": "Gerade zu viele Suchen; versuch es in einer Minute noch einmal.",
"routeSearchUnreachable": "Die Suche ist gerade nicht erreichbar.",
"routePlanning": "Wird geplant …",
"routeRefusedInvalid": "Ein Wegpunkt zu viel, oder einer außerhalb der Karte.",
"routeRefusedTooOften": "Zu oft geplant: versuch es in einer Minute wieder.",

View file

@ -503,6 +503,13 @@
"routeProfileMtb": "Mountain bike",
"routeTapHint": "Tap the map to add a waypoint; hold one and drag it to move it.",
"routeUndo": "Take the last waypoint off",
"routeSearchHint": "Search for a place",
"@routeSearchHint": {"description": "The planner's search field over the map (D50)."},
"routeSearchClear": "Clear the search",
"routeSearchNothing": "Nothing found.",
"@routeSearchNothing": {"description": "Under the planner's search: the instance found no place."},
"routeSearchTooOften": "Too many searches for now; try again in a minute.",
"routeSearchUnreachable": "The search can't be reached now.",
"routePlanning": "Planning…",
"routeRefusedInvalid": "A waypoint too many, or one off the map.",
"routeRefusedTooOften": "Planned too often: try again in a minute.",

View file

@ -2404,6 +2404,36 @@ abstract class AppLocalizations {
/// **'Take the last waypoint off'**
String get routeUndo;
/// The planner's search field over the map (D50).
///
/// In en, this message translates to:
/// **'Search for a place'**
String get routeSearchHint;
/// No description provided for @routeSearchClear.
///
/// In en, this message translates to:
/// **'Clear the search'**
String get routeSearchClear;
/// Under the planner's search: the instance found no place.
///
/// In en, this message translates to:
/// **'Nothing found.'**
String get routeSearchNothing;
/// No description provided for @routeSearchTooOften.
///
/// In en, this message translates to:
/// **'Too many searches for now; try again in a minute.'**
String get routeSearchTooOften;
/// No description provided for @routeSearchUnreachable.
///
/// In en, this message translates to:
/// **'The search can\'t be reached now.'**
String get routeSearchUnreachable;
/// No description provided for @routePlanning.
///
/// In en, this message translates to:

View file

@ -1432,6 +1432,22 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get routeUndo => 'Letzten Wegpunkt entfernen';
@override
String get routeSearchHint => 'Nach einem Ort suchen';
@override
String get routeSearchClear => 'Suche leeren';
@override
String get routeSearchNothing => 'Nichts gefunden.';
@override
String get routeSearchTooOften =>
'Gerade zu viele Suchen; versuch es in einer Minute noch einmal.';
@override
String get routeSearchUnreachable => 'Die Suche ist gerade nicht erreichbar.';
@override
String get routePlanning => 'Wird geplant …';

View file

@ -1425,6 +1425,22 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get routeUndo => 'Take the last waypoint off';
@override
String get routeSearchHint => 'Search for a place';
@override
String get routeSearchClear => 'Clear the search';
@override
String get routeSearchNothing => 'Nothing found.';
@override
String get routeSearchTooOften =>
'Too many searches for now; try again in a minute.';
@override
String get routeSearchUnreachable => 'The search can\'t be reached now.';
@override
String get routePlanning => 'Planning…';