Merge origin/main (v1.44.2) into fix/v145-sheet-motion

next stays on main's 16.4.2 (the RCE and Server Actions advisories) with its two companions; release's newer dev tools and its own additions are kept. The lockfile is release's, re-resolved. pt-BR, which main does not have, takes the one key main added.
This commit is contained in:
Marc-André Bombeck committed 2026-10-22 16:43:28 +02:00
commit 9c8972bc96
86 files changed
+5051 -487

No files matched your search

@@ -17,6 +17,8 @@ vi.mock("@/hooks/use-ai-capability", () => ({
}),
// v1.41 — the thinking depth reads the resolved block; none here.
useCoachReasoning: () => null,
// #1267 — the about-me save's abort, from the response-timeout setting.
useAboutMeSaveTimeoutMs: () => 90_000,
}));
vi.mock("next/navigation", () => ({
useRouter: () => ({ push: vi.fn(), replace: vi.fn() }),
@@ -33,6 +33,8 @@ vi.mock("@/hooks/use-ai-capability", () => ({
reason: null,
onDeviceAllowed: true,
}),
// #1267 — the about-me save's abort, from the response-timeout setting.
useAboutMeSaveTimeoutMs: () => 90_000,
}));
vi.mock("next/navigation", () => ({
@@ -99,6 +99,12 @@ describe.each([
expect(select).toMatch(/<option value="" selected="">/);
});
it("says the daily briefing does not follow this setting (#1267)", () => {
const html = render(form(provider({})));
expect(html).toContain('data-slot="reasoning-effort-background-note"');
expect(html).toContain(en.settings.ai.reasoning.backgroundNote);
});
it("seeds the stored value", () => {
const select = selectMarkup(render(form(provider(stored("none")))), id);
expect(select).toMatch(/<option value="none" selected="">/);
@@ -5,7 +5,8 @@
* Same Label + NativeSelect + hint layout as the model field above it.
* The empty value is Default: nothing is sent and the model decides.
* v1.41 — the Coach reads its own thinking depth from the Coach settings;
* a line under the hint says so.
* a line under the hint says so. #1267 — so do the background jobs (the
* daily briefing among them); a second line says that too.
* ──────────────────────────────────────────────────────────────── */
import { Label } from "@/components/ui/label";
@@ -66,6 +67,15 @@ export function ReasoningEffortField({
>
{t("settings.ai.reasoning.coachNote")}
</p>
{/* #1267 — background jobs resolve their own level on the server
(`BACKGROUND_REASONING_LEVEL`, the operator's cap, the usage level);
this select never reaches them, so say so where it is set. */}
<p
data-slot="reasoning-effort-background-note"
className="text-muted-foreground mt-1 text-xs"
>
{t("settings.ai.reasoning.backgroundNote")}
</p>
</div>
);
}