Closes#9458.
Video stays hidden on hosts without a supported GPU by default. This
adds an owner-only Developer mode in Settings > General with one switch,
"Allow video generation on CPU (experimental)".
`UNSLOTH_VIDEO_ALLOW_CPU` overrides the saved setting in either
direction.
## What changes
- `video_capability()` admits only the plain CPU-only case (reason
`no_accelerator`) when the opt-in is on, marked
`video_cpu_experimental`. Detection failures, missing or broken PyTorch,
Intel Macs and GPUs PyTorch cannot reach stay blocked.
- The setting lives in the owner's store (`PUT
/api/settings/developer-mode`, owner only, 403 for managed accounts; any
account can read it).
- `/api/health` carries `video_cpu_opt_in` so the sidebar keeps the
Video row enabled once opted in.
- Enabling opens a confirm dialog: "CPU video generation may take hours,
consume large amounts of RAM, and may freeze your system. Continue at
your own risk.", plus host RAM against a 32 GB minimum and a measured
speed estimate. Disabling restores the GPU gate at once.
- The Video page shows a persistent "CPU (experimental)" banner while it
is in effect.
The backend video pipelines already resolve to a float32 CPU target when
no accelerator is visible (the routes on `main` already render on CPU;
only the capability gate and the UI blocked it), so no inference code
changes.
## Testing
- Wan2.1-T2V-1.3B with no GPU visible, through `/video/load` and
`/video/generate` on a real Studio server: 832x480, 5 frames, 3 steps,
generate 228 s on 16 threads, peak RSS 24.5 GiB (this sets the 32 GB
minimum). After the owner PUT, `/api/system` moved from `no_accelerator`
to `video_supported: true, video_cpu_experimental: true`, and the load
reported device `cpu`, float32. The output matches the base tree's frame
for frame (mean 141.29).
- Tiny Wan pipelines render on CPU for `wan2.1-t2v-1.3b`,
`wan2.2-ti2v-5b` and `wan2.2-t2v-a14b`.
- Backend: 34 new tests (capability matrix, every other refusal reason
staying blocked with the opt-in on, env and setting precedence,
owner-only PUT, health wiring); the related suites pass (145 in the
capability, developer-mode and account settings files).
- Frontend: 8 new tests (RAM check, confirm flow, gate wiring); `tsc`
and the strict i18n parity check pass.
Not verified on CPU: LTX-2 / 2.5, HunyuanVideo 1.5 and MiniMax-H3 (no
tiny repos; MiniMax-H3 already runs through the CPU sd.cpp build on such
hosts). A default-length clip (33 frames, 30 steps) was not timed;
"hours" is extrapolated from about 27 s per denoise step at 832x480.
## Screenshots
Studio started with no GPU visible (`/api/system` reports
`no_accelerator` on both sides).
Settings > General: AFTER adds the Developer mode section with the
switch, off by default.

Turning the switch on asks first (the issue's warning, host RAM against
the minimum, and the measured speed):

After confirming, `/api/system` reports `video_supported: true,
video_cpu_experimental: true` without a restart, and the Video page
opens with the CPU (experimental) banner. BEFORE, the same host keeps
the no-accelerator block:
