fix(clip): a clip refusal speaks the user's language, and a choice in the clip form no longer sends it

The backend refuses a clip with a structured reason, but the client showed every one as the generic
"couldn't make the clip": each reason now has its own message in both languages, held to the
backend's reasons in both directions by the contract test. A segmented toggle's and the priority
stepper's buttons had no type, so inside a form one of them submitted it.
This commit is contained in:
2026-10-10 12:52:12 +02:00
parent 50157cc2fd
commit e301632765
7 changed files with 59 additions and 2 deletions
@@ -62,6 +62,8 @@ export default function SegmentedToggle<T extends string>({
{options.map((o) => (
<button
key={o.value}
// A choice, never a submit: inside a form (the clip panel) a bare button would send it.
type="button"
onClick={() => onChange(o.value)}
title={o.title}
aria-pressed={value === o.value}