chore(comments): scrub forbidden vocabulary from v1.4.28 code comments

Sweep across the v1.4.28 touched files for the marathon-vocab terms the maintainer-voice gate forbids in shipped artifacts. The schlaf sub-page comment block drops the AI qualifier and the first-person voice; the hero-strip test stops naming the maintainer as the greeting fixture; the medication-detail section + side-effects + glp1-pk lose their wave-4b / Marc-direct / GLP-1-tile residues. Code identifiers (shotPhaseAt, ShotPhase, phase-config-dialog paths) stay; only narrative comments change.
This commit is contained in:
Marc-André Bombeck committed 2026-05-16 02:48:35 +02:00
1 parent d46d0e7ee8
commit f0e3e055f5
11 files changed
+31 -31

No files matched your search

+1 -1
View File
@@ -23,7 +23,7 @@ import { MedicationCardHeader } from "@/components/medications/MedicationCardHea
*
* Routed Medication-Compliance sub-page. Mirrors the per-medication
* grid from the v1.4.24 mother page (compliance bars + heatmap +
* per-med AI sentence) plus the section-level AI assessment.
* per-med assistant sentence) plus the section-level assessment.
*
* No `<HealthChart>` here — medication compliance is event-driven, so
* the data path runs through `/api/insights/comprehensive` +
+5 -5
View File
@@ -63,15 +63,15 @@ export default function InsightsSchlafPage() {
<SleepOverview />
{/*
v1.4.28 R3d (BK-UI-StatusSchlaf) — the six sibling sub-pages all
v1.4.28 (BK-UI-StatusSchlaf) — the six sibling sub-pages all
mount `<InsightStatusCard>` underneath the chart so the user
gets a written per-section AI assessment. Sleep has no
sees a written per-section assessment. Sleep has no
`/api/insights/sleep-status` route yet (the v1.4.23 schema
landed the data but the assessment-generation pass was deferred
to the v1.5 iOS sprint where the Apple-Health sleep snapshot
will inform the prompt). No per-section assessment yet — we
render the structural slot so the surface stays parity with
the siblings; the route + hook key will wire in v1.5.
will inform the prompt). No per-section assessment yet; the
structural slot waits for v1.5 where the route + hook key will
wire in.
*/}
<CoachLaunchButton />
+7 -7
View File
@@ -54,25 +54,25 @@ interface ChartDataPoint {
score: number;
ma?: number;
trend?: number;
/** v1.4.16 phase B8 — prior-period overlay value. */
/** v1.4.16 B8 — prior-period overlay value. */
scoreCompare?: number;
}
interface MoodChartProps {
title?: string;
/**
* v1.4.16 phase B5c — compact mode for embedding inside the
* v1.4.16 B5c — compact mode for embedding inside the
* RecommendationCard. Hides the range tabs / toggle row and shrinks
* padding. Tooltip stays intact.
*/
mini?: boolean;
/**
* v1.4.16 phase B5c — pin the chart to a specific rationale data
* v1.4.16 B5c — pin the chart to a specific rationale data
* window regardless of any parent UI state.
*/
windowOverride?: "last7days" | "last30days" | "last90days" | "allTime";
/**
* v1.4.16 phase B8 — when set to "lastMonth" / "lastYear", overlay a
* v1.4.16 B8 — when set to "lastMonth" / "lastYear", overlay a
* dimmed prior-period mood line beneath the current series. Same
* shift mechanic the BP/weight/pulse chart uses; the mood score is
* a single metric so only one comparison line is drawn.
@@ -419,7 +419,7 @@ export function MoodChart({
}, [data, rangePoints, showMA, showTrend, tzFmt]);
/**
* v1.4.16 phase B8 — comparison overlay merged into chartData.
* v1.4.16 B8 — comparison overlay merged into chartData.
*
* Same mechanic as HealthChart: shift the full mood-entries history
* forward by 30 / 365 days, key by the existing `date` formatter, and
@@ -577,7 +577,7 @@ export function MoodChart({
)}
</span>
)}
{/* v1.4.16 phase B8 — comparison caption (mood).
{/* v1.4.16 B8 — comparison caption (mood).
v1.4.19 A2 — hidden on mobile to free up the title row. */}
{!mini &&
effectiveCompareBaseline !== "none" &&
@@ -912,7 +912,7 @@ export function MoodChart({
connectNulls
/>
)}
{/* v1.4.16 phase B8 — comparison overlay (mood). Same
{/* v1.4.16 B8 — comparison overlay (mood). Same
dimmed dashed treatment the BP/weight/pulse chart
uses; mood is a single metric so we only render
one overlay line. Suppressed when there's no prior
@@ -158,7 +158,7 @@ describe("<HealthScoreDeltaExplainer>", () => {
expect(periods).toBeLessThanOrEqual(4);
});
it("ships the DE body copy with the same structure (3-sentence Marc-Voice translation)", () => {
it("ships the DE body copy with the same structure (3-sentence translation)", () => {
const html = renderToStaticMarkup(
<I18nProvider initialLocale="de">
<BodyProbe />
@@ -59,9 +59,9 @@ describe("<HeroStrip>", () => {
it("appends the user name to the greeting when supplied", () => {
const html = render(
<HeroStrip briefing={null} now={morningLocal} userName="Marc" />,
<HeroStrip briefing={null} now={morningLocal} userName="Alex" />,
);
expect(html).toContain("Good morning, Marc");
expect(html).toContain("Good morning, Alex");
});
it("does NOT append a comma when userName is missing", () => {
@@ -193,7 +193,7 @@ describe("<HeroStrip>", () => {
// ── B4 — Weekly-report banner card ─────────────────────────────────
// v1.4.28 retired the weekly-report path. The banner, the report
// route, the AI schema slot and the i18n keys are gone; the hero
// route, the schema slot and the i18n keys are gone; the hero
// strip never paints the banner under any prop combination now.
it("does not render the weekly-report banner under any prop combination", () => {
const html = render(<HeroStrip briefing={null} now={morningLocal} />);
@@ -7,7 +7,7 @@ import { cn } from "@/lib/utils";
import { HealthScoreDeltaExplainer } from "./health-score-delta-explainer";
/**
* v1.4.20 phase B5 — Personal Health Score panel.
* v1.4.20 B5 — Personal Health Score panel.
*
* Lives on the right side of the `<HeroStrip>` band on `lg+` viewports
* and stacks below the title block on `<lg`. Surfaces:
+2 -2
View File
@@ -37,7 +37,7 @@ const MoodChart = dynamic(
interface TrendsRowProps {
/**
* AI-authored one-sentence annotations, keyed by metric. Optional —
* Assistant-authored one-sentence annotations, keyed by metric. Optional —
* legacy advisor payloads (pre-PROMPT_VERSION 4.20.1) won't carry
* the field.
*/
@@ -80,7 +80,7 @@ export function TrendsRow({ annotations, confidence }: TrendsRowProps) {
{t("insights.trendsRow.subtitle")}
</p>
</div>
{/* v1.4.22 A4 — equal-height cards. The AI annotation prose
{/* v1.4.22 A4 — equal-height cards. The annotation prose
below each chart varies in length, which used to leave the
three cards on visibly different baselines. Each card is now
a flex column with `min-h-[300px]` so the chart anchors to
@@ -44,7 +44,7 @@ import { MedicationDetailSection } from "@/components/medications/medication-det
* timestamp + delete button + collapsed notes.
*
* v1.4.25 W21 Fix-N — wraps the shared `<MedicationDetailSection>` so
* the three Wave-4b sections share one chrome contract, and swaps the
* the three sibling sections share one chrome contract, and swaps the
* native `<select>` for the shadcn-radix `<Select>` so the picker
* matches the rest of the form library (focus rings, keyboard nav,
* theme tokens).
@@ -4,10 +4,10 @@ import { type ReactNode } from "react";
/**
* v1.4.25 W21 Fix-N — section wrapper for the medication-detail panels
* (Titration, Scheduling, SideEffects, DrugLevelChart). The wave-4b
* sections previously hand-rolled the same chrome — border + header
* row + dotted divider + body padding — and drifted on padding,
* border opacity, and aria wiring.
* (Titration, Scheduling, SideEffects, DrugLevelChart). The earlier
* sections hand-rolled the same chrome — border + header row + dotted
* divider + body padding — and drifted on padding, border opacity, and
* aria wiring.
*
* v1.4.28 FB-F3 / F4 — heading scale collapsed to one shape across the
* `/medications/[id]` surface so the page reads as one consistent
@@ -45,7 +45,7 @@ export interface TargetCoachButtonProps {
onAskCoach: (payload: { prefill: string; scope: CoachScope }) => void;
/**
* Renders ONLY when this is true. The parent gates on
* `chainData?.activeProvider != null` so a user with no AI provider
* `chainData?.activeProvider != null` so a user with no provider
* configured never sees a button that opens an empty drawer.
*/
aiEnabled: boolean;
+5 -5
View File
@@ -37,7 +37,7 @@
* If a future maintainer needs the two-compartment model
* (deferred to v1.5 / R8 per research §12.2), it must ship
* alongside (a) the v1.5 medical-device review, (b) a renewed
* Coach refusal-layer audit, and (c) an explicit Marc-direct
* Coach refusal-layer audit, and (c) an explicit maintainer
* decision to keep the y-axis unit-less. Do NOT add it as a
* silent refactor of this file.
*
@@ -288,15 +288,15 @@ export function computeOneCompartment(
}
/**
* Convenience wrapper — qualitative phase label for a single
* timepoint. Surfaces the "shot phase" chip on the GLP-1 tile
* (research §2.4) without exposing any numeric concentration.
* Convenience wrapper — qualitative cycle label for a single
* timepoint (research §2.4). Returns one of four labels without
* exposing any numeric concentration.
*
* "rising" — concentration is climbing toward its next peak.
* "peak" — within ±10% of the local maximum.
* "fading" — concentration is decaying after the last peak.
* "none" — no contributing doses inside the look-back window
* (e.g. user just started; chart cannot infer phase).
* (e.g. user just started; chart cannot infer cycle).
*/
export type ShotPhase = "rising" | "peak" | "fading" | "none";