docs(train): ADR 0030, D63, the maps after the developer's review

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-03 22:02:06 +01:00
commit 83f586a2aa
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -1579,6 +1579,52 @@ Strava. What was found, 27 Oct:
connects to no device (*Consequences*); it shows the workouts with their maps, plans connects to no device (*Consequences*); it shows the workouts with their maps, plans
routes and strength sessions, and keeps the statistics, with what the phones routes and strength sessions, and keeps the statistics, with what the phones
recorded coming through the server. Its listing says so. recorded coming through the server. Its listing says so.
- **D63 The maps after the developer's review** (the developer's, 3 Nov 2026; the
labels' language on the agent's recommendation, chosen by the developer):
- **A workout's page as Strava's**: with a track, the map runs to the foot of the
screen under a sheet (its name first, then what was there before), which starts at
55 % of the page, snaps back there, goes down to 15 % and up to the app bar's foot.
Once it settles (200 ms), the map fits the whole track anew, eased over 450 ms, into
what the sheet and the round buttons leave free, with 32 px around and at least
96 px high (`track_camera.dart`, tested); pulled down, the map is larger and the
track fitted closer, as Strava's, whose video showed the camera moving only after
the sheet stops. Pulled up, the round buttons over the map fold into an app bar over
the sheet's last stretch: its colour and title come in, their rounds go, and the
arrow back turns a quarter into a chevron down that lowers the sheet again. From
expanded windows on, the map and the rest side by side (a 400 px pane, Material's
supporting pane, as the Maps tab's list and map, D60). Without a track or without
the map, the rest alone, as before. The page stays in Home (back leads there) but
opens on the root navigator, over the shell, so without the floating bar (D60 had
it run on beneath the bar).
- **What the map's source sees** ("Map by OpenFreeMap: it sees…", and the link to what
it keeps) moves behind halkyon_ui's question mark (`HelpButton`, which gained an
action beside OK for the link) at the end of the page's first line: it explains,
rather than being the person's own (D23, D50). The instance's privacy page doesn't
name the map's source yet; it should, now that the note is one tap away (open).
That the map can't be loaded stays in view, as it is a state.
- **The map's credit readable**: flutter_map's credit is built on
`flutter/material`, whose `Theme` is not the app's (`material_ui`'s, a class of its
own), so it drew the theme's text on the fallback theme's white. Every Train map now
has `mapAttribution`: on the theme's `surfaceContainerHigh`, in `onSurface`, its
button a tonal one, with a tooltip. `map_tiles.dart` was the only file reading
`flutter/material`'s `Theme`, and so chose the dark style of the instance's own map
(D50) never; it reads the app's now.
- **Places in the app's language**: OpenFreeMap's styles ask for the English name
(`name_en`) before the name on the spot; the style is rewritten as it is read
(`labelledIn`) to ask for `name:<language>` instead (OpenMapTiles' fields), the name
on the spot where there is none. English stays as the style has it, and the
instance's own map is named in the app's language by its server already (D50). A
place named only in its own language keeps its name (a "Tennisplatz" whose
OpenStreetMap entry has no English name stays one in English).
- **The route planner**: its hint ("Tap the map to add a waypoint…") moves from a card
over the map to a question mark below Undo. A new route's map opens at zoom 14 (a
town's district, as map apps open on where one is; Google Maps' "my location" is
about 15, Strava's route builder 13 to 14) at once where the phone was last known to
be (`lastPosition`, the newest of Android's providers, never asking for the
permission), else where the newest workout with a track started
(`lastWorkoutStart`, of the 5 newest), else on the region as before; the phone's
fix then sets the first waypoint as before (D44). From expanded windows on, the
route's details beside its map (400 px). It ran without the bar already (D60).
## Consequences ## Consequences