chore(release): v1.4.27

v1.4.27 — Mobile capability and maintainer-finding cleanup.

ResponsiveSheet primitive (bottom-sheet on narrow viewports, centred dialog on desktop)
applied to BD, Weight, Glucose, Mood, Activity forms. Maintainer-finding cleanups across
Coach, Insights, Reports, Privacy. GeoLite2 offline geocoding with resilience layer
(graceful fallback when EULA not yet propagated). E2E gap-fill coverage. 450-line
release notes attached to the GitHub Release.
This commit is contained in:
Marc-André Bombeck authored and GitHub committed 2026-05-15 22:59:10 +02:00
1 parent d98e85cd03
commit 4f09c3f862
314 files changed
+26801 -4419

No files matched your search

+1 -1
View File
@@ -240,7 +240,7 @@ export function BaselineForm() {
disabled={saving}
className="min-h-11 min-w-11"
>
{saving ? <Loader2 className="size-4 animate-spin" /> : null}
{saving ? <Loader2 className="size-4 animate-spin motion-reduce:animate-none" /> : null}
{t("onboarding.baseline.saveCta")}
</Button>
</div>
@@ -319,13 +319,20 @@ export function GettingStartedChecklist() {
aria-labelledby="getting-started-title"
className="bg-card border-border space-y-4 rounded-2xl border p-5 sm:p-6"
>
<header className="flex items-start justify-between gap-3">
{/* v1.4.27 MB7 / CF-44 — `flex-wrap` on the header lets the
dismiss button drop to its own row when the German title +
subtitle overflow the visible width on Galaxy Fold / Pixel 5
(the previous `flex` layout collided the dismiss caption
against the chevron). `min-w-0` on the toggle button lets
the inner `<h2>` shrink + truncate cleanly instead of
pushing the chevron off-screen. */}
<header className="flex flex-wrap items-start justify-between gap-3">
<button
type="button"
onClick={() => setExpanded((prev) => !prev)}
aria-expanded={expanded}
aria-controls="getting-started-body"
className="hover:text-foreground -m-1 flex flex-1 items-center gap-2 rounded-md p-1 text-left transition-colors"
className="hover:text-foreground -m-1 flex min-w-0 flex-1 items-center gap-2 rounded-md p-1 text-left transition-colors"
>
<ChevronDown
aria-hidden="true"
@@ -335,10 +342,10 @@ export function GettingStartedChecklist() {
: "size-4 shrink-0 -rotate-90 transition-transform"
}
/>
<div className="space-y-1">
<div className="min-w-0 space-y-1">
<h2
id="getting-started-title"
className="text-base font-semibold tracking-tight"
className="truncate text-base font-semibold tracking-tight"
>
{t("gettingStarted.title")}
</h2>
@@ -352,7 +359,6 @@ export function GettingStartedChecklist() {
<Button
type="button"
variant="ghost"
size="sm"
className="text-muted-foreground hover:text-foreground"
onClick={() => setDismissedAll(true)}
>
@@ -445,7 +451,7 @@ export function GettingStartedChecklist() {
})
}
aria-label={t("gettingStarted.dismissTooltip")}
className="text-muted-foreground hover:text-foreground rounded p-1 transition-colors"
className="text-muted-foreground hover:text-foreground inline-flex h-11 w-11 items-center justify-center rounded transition-colors"
>
<X className="size-4" />
</button>