68 lines
2.8 KiB
Markdown
68 lines
2.8 KiB
Markdown
# Task: Load AI Design video duration options from server
|
||
|
||
## Identity
|
||
|
||
- Task ID: 20260818-video-duration-server-config-7b4e
|
||
- Mode: Feature
|
||
- Branch: main
|
||
- Worktree: D:\Datas\OthersProjects\makelore
|
||
- Base commit: 86ffeac066ca03cdaacb6f12eec11dc1e258432a
|
||
- Owner: codex
|
||
- Status: Ready for Integration
|
||
|
||
## Scope
|
||
|
||
- Update the AI Design video confirmation card to use the active Quote's
|
||
server-provided `generationOptions.durations` for both rendering and
|
||
validation, removing the client-side 2–6 second range coupling.
|
||
- Add a regression proving an enabled duration outside the former local range
|
||
is rendered, can be selected, re-quoted, and submitted through the existing
|
||
confirmation flow.
|
||
- Do not change the API payload or provider contract; the server Quote remains
|
||
the authority for available and disabled durations.
|
||
|
||
## Intent And Constraints
|
||
|
||
- Preserve disabled options and the existing “must re-quote after changing a
|
||
parameter” behavior.
|
||
- Keep legacy/invalid quotes fail-closed when no enabled server duration is
|
||
selected; use a server-driven validation message rather than naming a local
|
||
range.
|
||
- Keep the local preview adapter unchanged; this change targets the cloud
|
||
Makelore adapter and the shared Quote confirmation UI.
|
||
|
||
## Outcome
|
||
|
||
- `ImageCanvas` now renders enabled video durations directly from the active
|
||
server Quote's `generationOptions.durations`.
|
||
- Confirmation validation now accepts only a non-null duration that matches an
|
||
enabled server option; the previous client-side 2–6 second range check was
|
||
removed so future server configuration changes do not require a client
|
||
release.
|
||
- The confirmation error is server-driven and no longer names a local range.
|
||
- Added a regression using server-provided `7` and `15` second options that
|
||
verifies the options are shown, the initial invalid selection is blocked,
|
||
`15` survives re-quoting, and the final confirmation receives `15`.
|
||
|
||
## Verification
|
||
|
||
- Red test: the new regression initially received only `['', '2', '6']`,
|
||
proving the old client-side range filter was still active.
|
||
- `pnpm exec vitest run tests/unit/image-canvas-page.test.tsx tests/unit/works-square-design-workspace.test.ts` — 79 passed.
|
||
- `pnpm run typecheck` — passed.
|
||
- `pnpm exec eslint src/pages/ImageCanvas/index.tsx tests/unit/image-canvas-page.test.tsx` — passed.
|
||
- `pnpm run build:vite` — passed for Renderer, Electron Main, and Preload;
|
||
only existing dynamic-import and chunk-size warnings were reported.
|
||
- `git diff --check` — passed; Git reported only the repository's LF-to-CRLF
|
||
checkout warnings.
|
||
|
||
## Follow-ups
|
||
|
||
- The server must continue publishing a valid enabled duration list in each
|
||
video Quote; an empty or all-disabled list intentionally keeps confirmation
|
||
unavailable.
|
||
|
||
## Promotion Candidates
|
||
|
||
- None recorded.
|