Merge branch 'release/v1.46.0' into feat/v146-ui

# Conflicts:
#	src/__tests__/baselines/source-file-lines.json
#	src/__tests__/baselines/source-function-lines.json
This commit is contained in:
Marc-André Bombeck committed 2026-10-23 11:08:24 +02:00
commit 0a88155aec
100 files changed
+259 -8727

No files matched your search

@@ -1,7 +1,7 @@
{
"$comment": "Production files over 800 lines and their length. Maintained by src/__tests__/source-size-ratchet.test.ts.",
"count": 120,
"total": 141446,
"count": 121,
"total": 142301,
"entries": {
"app/api/dashboard/summary/route.ts": 1032,
"app/api/documents/inbound/route.ts": 811,
@@ -24,6 +24,7 @@
"components/insights/derived/vitals-dashboard.tsx": 1033,
"components/insights/health-score-card.tsx": 1023,
"components/insights/insights-tab-strip.tsx": 1086,
"components/layout/sidebar-nav.tsx": 855,
"components/measurement-reminders/vorsorge-section.tsx": 1536,
"components/measurements/measurement-form.tsx": 815,
"components/measurements/measurement-list.tsx": 2019,
@@ -1,7 +1,7 @@
{
"$comment": "Production functions over 200 lines, keyed \"file :: name\", and their length. Maintained by src/__tests__/source-size-ratchet.test.ts.",
"count": 408,
"total": 144385,
"total": 144450,
"entries": {
"app/achievements/page.tsx :: AchievementsPage": 206,
"app/api/admin/backups/upload/route.ts :: apiHandler(arg)": 314,
@@ -9,7 +9,7 @@
"app/api/admin/settings/route.ts :: apiHandler(arg) #2": 217,
"app/api/analytics/route.ts :: buildAnalyticsResponse": 446,
"app/api/auth/login/route.ts :: apiHandler(arg)": 262,
"app/api/auth/me/route.ts :: apiHandler(arg)": 384,
"app/api/auth/me/route.ts :: apiHandler(arg)": 386,
"app/api/auth/oidc/callback/route.ts :: apiHandler(arg)": 499,
"app/api/auth/register/route.ts :: apiHandler(arg)": 275,
"app/api/coach/about-me/route.ts :: apiHandler(arg) #2": 309,
@@ -171,9 +171,9 @@
"components/labs/ocr-review-dialog.tsx :: OcrReviewDialog": 359,
"components/labs/ocr-row-editor.tsx :: OcrRowEditor": 393,
"components/layout/auth-shell.tsx :: AuthShell": 520,
"components/layout/bottom-nav.tsx :: BottomNav": 229,
"components/layout/bottom-nav.tsx :: BottomNav": 262,
"components/layout/capture-picker.tsx :: CapturePicker": 235,
"components/layout/sidebar-nav.tsx :: SidebarNav": 342,
"components/layout/sidebar-nav.tsx :: SidebarNav": 372,
"components/layout/top-bar.tsx :: TopBar": 212,
"components/links/entity-link-picker.tsx :: EntityLinkPicker": 392,
"components/measurement-reminders/vorsorge-dashboard-card.tsx :: VorsorgeDashboardCard": 215,
+3 -2
View File
@@ -1,7 +1,7 @@
{
"$comment": "as never casts in tests, per test file under src/. Maintained by src/__tests__/test-realism-ratchet.test.ts.",
"count": 523,
"total": 5494,
"count": 524,
"total": 5495,
"entries": {
"__tests__/api/auth/login/mfa-branch.test.ts": 10,
"__tests__/api/auth/mfa/verify.test.ts": 9,
@@ -273,6 +273,7 @@
"components/medications/__tests__/use-medication-intake.test.ts": 1,
"components/medications/detail/efficacy/__tests__/change-at-start-summary.test.tsx": 1,
"components/mood/__tests__/mood-list-url-sync.test.tsx": 1,
"components/settings/__tests__/settings-shell.test.tsx": 1,
"components/settings/integrations/__tests__/dawarich-card.test.tsx": 1,
"components/timeline/__tests__/medication-rows.test.ts": 1,
"lib/__tests__/acting-account-resolver.test.ts": 5,
@@ -1,7 +1,7 @@
{
"$comment": "Comment lines that open with a release version, per file under src/. Maintained by src/__tests__/version-stamp-ratchet.test.ts.",
"count": 2953,
"total": 10417,
"total": 10418,
"entries": {
"__tests__/account-payload-consumer-guard.test.ts": 2,
"__tests__/acting-account-boundary-guard.test.ts": 7,
@@ -2806,7 +2806,7 @@
"lib/rollups/mood-rollups.ts": 4,
"lib/rollups/tiered-context.ts": 6,
"lib/score-config/rows.ts": 1,
"lib/settings/section-slugs.ts": 19,
"lib/settings/section-slugs.ts": 20,
"lib/sharing/__tests__/account-access-parse.test.ts": 3,
"lib/sharing/__tests__/account-access.test.ts": 2,
"lib/sharing/__tests__/account-label.test.ts": 1,
+2 -3
View File
@@ -3,9 +3,8 @@
*
* The workout-route switch is off for new accounts, which is what its detail
* says rather than "off by default": an account that already held tracks at
* the upgrade started with it on (migration 0434). The Topics preview switch
* this file also held describes pages that now exist, so its copy is in the
* present tense like every other switch.
* the upgrade started with it on (migration 0434). (The Topics preview switch
* this file also held is unlisted until its pages ship, and its copy with it.)
*/
import { describe, expect, it } from "vitest";
@@ -54,8 +54,6 @@ const HISTORICAL_SETTINGS_PATHS: readonly string[] = [
"/settings/export",
"/settings/advanced",
"/settings/privacy",
// Preview features (Settings > System).
"/settings/preview",
"/settings/about",
// The per-module personalisation slugs before the layout hub.
"/settings/dashboard",
+1 -15
View File
@@ -1074,17 +1074,6 @@ const DELEGABLE_ROUTES: Record<string, DelegableEntry> = {
domain: "record",
why: "One search over the record: hits from every section with an in-app path each. Read-only, scoped to the resolved user, every source narrowed to the record's module switches and to the sections the grant covers, the query never logged.",
},
// The topic pages (preview) lay several sections side by side, like the
// timeline, so they stay whole-record reads. The preview switch they check
// is the ACTOR's own row and decides nothing about the record.
"app/api/topics/route.ts": {
domain: "record",
why: "The topic overview: a headline value, a rule-based sentence and a sparkline per topic, computed from the record's daily values, lab markers, screener totals and cycle starts. Read-only, no model, scoped to the resolved user, every signal and block narrowed to the record's module switches and to the sections the grant covers.",
},
"app/api/topics/[topic]/route.ts": {
domain: "record",
why: "One topic page: signals with usual ranges, side-by-side series, relationships, trends and the topic's blocks. Read-only, no model, scoped to the resolved user, narrowed per signal and block like the overview.",
},
"app/api/workouts/route.ts": {
domain: "measurements",
why: "The record's workout list. Verified to carry no AI-written paragraph: the single-workout route beside it does, and stays refused for exactly that reason.",
@@ -2208,11 +2197,8 @@ const ACTOR_ROUTES: Record<string, string> = {
* side). The activity goals route does not: setting or changing goals stays
* owner-only, and a delegate sees the goals only as the calendar reports them.
* 270 -> 273.
*
* The topic overview and the topic page (preview) join the record list as
* whole-record reads, like the timeline. 273 -> 275.
*/
const FROZEN_ENTRY_COUNT = 275;
const FROZEN_ENTRY_COUNT = 273;
/**
* The two surfaces that authenticate a Bearer token outside `requireAuth` —