Skip to content

add SiftQ MiniMax-H3 video provider - #6827

Open
futurestudyspace wants to merge 4 commits into
nexu-io:mainfrom
siftq:feat/siftq-provider
Open

add SiftQ MiniMax-H3 video provider#6827
futurestudyspace wants to merge 4 commits into
nexu-io:mainfrom
siftq:feat/siftq-provider

Conversation

@futurestudyspace

@futurestudyspace futurestudyspace commented Aug 13, 2026

Copy link
Copy Markdown

Fixes #6822

Why

Open Design has no production video renderer for SiftQ. The existing MiniMax
video catalog entry cannot be reused because SiftQ uses a separate API base
URL, credentials, V2 request payload, task states, and result envelope.

This change lets users with SiftQ credentials generate video through the
existing Media UI and od media generate workflow.

What users will see

  • A SiftQ provider card under Settings → Media Providers with independent API
    key and base URL configuration.
  • A SiftQ · MiniMax-H3 video model in New Project.
  • SiftQ-specific 4–15 second duration choices, plus 768P and 2K output
    support.
  • Text-to-video and one first-frame image-to-video generation through the
    existing asynchronous media task flow.
  • CLI support through od media generate --surface video --model siftq-minimax-h3 and the OD_SIFTQ_API_KEY / SIFTQ_API_KEY environment
    variables.
  • Provider task progress and errors in the existing media task flow.

Surface area

  • UI
  • Keyboard shortcut
  • CLI / env var
  • API / contract
  • Extension point
  • i18n keys
  • New top-level dependency
  • Default behavior change
  • None

Screenshots

The English Settings screenshot shows the SiftQ Video provider, API key field,
default base URL, documentation link, and no custom-model field because the
wire model is fixed to MiniMax-H3.

download

Bug fix verification

  • Not a bug fix; this is an additive provider integration.

Validation

  • pnpm --filter @open-design/contracts build — passed.
  • pnpm --filter @open-design/daemon exec vitest run -c vitest.config.ts tests/media/siftq.test.ts
    — 22/22 passed.
  • pnpm --filter @open-design/web exec vitest run -c vitest.config.ts --maxWorkers=2 tests/components/NewProjectPanel.media.test.tsx tests/components/SettingsDialog.execution.test.tsx tests/components/modelProviderIcon.test.ts
    — 157/157 passed.
  • pnpm --filter @open-design/daemon exec vitest run -c vitest.config.ts tests/prompts/system-prompt-matrix.test.ts — 3/3 passed; refreshed the system-prompt snapshot after updating the SiftQ length guidance.
  • pnpm --filter @open-design/daemon typecheck — passed.
  • pnpm --filter @open-design/web typecheck — passed.
  • pnpm guard — passed.
  • node scripts/verify-media-models.mjs — passed; daemon and Web registries
    match.
  • git diff --check — passed.
  • Manual Settings-route verification — passed for provider visibility,
    credential/base URL fields, documentation link, and fixed-model behavior.
  • A live paid SiftQ submit → poll → download was not run because no runtime API
    key was supplied.
  • The root-wide pnpm typecheck reaches the changed daemon/Web scopes, then
    fails in untouched apps/desktop/src/main/deck-capture.ts at lines 1152,
    1398, and 1524 due to existing NodeList iterator / moveBefore DOM typing
    errors.

Out of scope

Last-frame input, reference video/audio, Context-IR, provider-side task
listing/deletion/cancellation, callbacks, and usage reporting are not exposed
because the shared Open Design media contract does not currently model them.

Register SiftQ as an independent media provider with its own credentials, base URL, model catalog entry, settings card, icon, and CLI guidance.

Implement the MiniMax-H3 V2 create/query workflow for text-to-video and single first-frame image-to-video, including provider-specific duration, resolution, and ratio validation; bounded polling; normalized provider errors; and secure result retrieval without bearer propagation.

Expose valid 4-15 second choices in New Project, keep the fixed wire model out of custom model settings, and document the supported scope and configuration.

Add contract and UI coverage for payloads, task states, HTTP errors, timeouts, unsafe or invalid downloads, registry visibility, duration selection, and settings behavior.
Preserve the existing Open Design Cloud image resolution guidance, including its model and aspect-profile constraints, while adding the SiftQ MiniMax-H3 768P and 2K values separately.

Keep the CLI help, shared agent media contract, and dispatcher context documentation aligned so adding SiftQ does not weaken or misstate existing provider behavior.
@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Visual regression review

Head: 87954a0 · Base: ba8fca1

5 changed · 44 unchanged · 0 new without baseline · 0 failed

Changed cases

Case Main PR Diff
visual-home-plugin-use-staged
3,350 px (0.26%)
main pr diff
visual-home-staged-attachment
1,808 px (0.14%)
main pr diff
visual-projects-kanban
2,007 px (0.15%)
main pr diff
visual-topbar-execution-switcher
1,613 px (0.12%)
main pr diff
visual-topbar-local-cli-model-list
1,294 px (0.10%)
main pr diff
Unchanged cases
Case Main PR Diff
visual-avatar-local-agent-list
57 px (0.00%)
main pr diff
visual-avatar-local-agent-list-panel
0 px (0.00%)
main pr diff
visual-avatar-menu
0 px (0.00%)
main pr diff
visual-avatar-menu-panel
0 px (0.00%)
main pr diff
visual-avatar-open-design-model-picker
109 px (0.01%)
main pr diff
visual-critical-settings
0 px (0.00%)
main pr diff
visual-critical-workspace
0 px (0.00%)
main pr diff
visual-critical-workspace-preview
0 px (0.00%)
main pr diff
visual-design-system-detail
1 px (0.00%)
main pr diff
visual-design-systems
1 px (0.00%)
main pr diff
visual-home
125 px (0.01%)
main pr diff
visual-home-catalog
0 px (0.00%)
main pr diff
visual-home-context-picker
116 px (0.01%)
main pr diff
visual-home-context-picker-popover
0 px (0.00%)
main pr diff
visual-home-plugin-filter
0 px (0.00%)
main pr diff
visual-home-plugin-use-with-query
0 px (0.00%)
main pr diff
visual-integrations
0 px (0.00%)
main pr diff
visual-integrations-mcp
0 px (0.00%)
main pr diff
visual-integrations-use-everywhere
0 px (0.00%)
main pr diff
visual-new-project-modal
0 px (0.00%)
main pr diff

Visual diff is advisory only and does not block merging.

@lefarcen

Copy link
Copy Markdown
Contributor

Thanks @futurestudyspace — the split from the existing MiniMax path looks nicely scoped across the daemon, Media UI, and CLI.

We'll get the right reviewers on this next.

💡 To drive this PR to merge hands-free, paste this to your AI coding agent (Claude Code / Codex / opencode / Cursor …):
Take over nexu-io/open-design#6827 until it merges — read https://raw.githubusercontent.com/nexu-io/looper/main/skills/pr-takeover/SKILL.md and follow it.

@lefarcen
lefarcen requested a review from mrcfps August 13, 2026 07:56
@lefarcen lefarcen added size/XL PR changes 700-1500 lines risk/high High risk: apps/desktop, daemon, auth, migration, workflows, package deps type/feature New feature needs-product-review Feature PR awaiting product sign-off before merge (see roadmap) needs-design-review Awaiting design review (external UI change); cleared by the Odcrew App applying design-approved needs-validation Runtime change detected; needs human or /explore agent validation. labels Aug 13, 2026
@lefarcen

lefarcen commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

🧪 This PR has changes that need a manual QA pass before merge — please hold off self-merging for now; we'll loop QA in once it's merge-ready (and design/product have signed off, where applicable).

@mrcfps mrcfps left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @futurestudyspace — this is a carefully scoped SiftQ adapter. The split from MiniMax, V2 payload/status parsing, first-frame handling, and renderer tests all look solid.

A few non-blocking follow-ups below: the media-contract wording change needs its system-prompt snapshot refreshed (Daemon tests 4/4 is red on this head), the result download should keep the media requestInit/proxy dispatcher, and 21:9 should stay a SiftQ-specific note rather than changing the shared --aspect vocabulary.

🔁 Powered by Looper · runner=reviewer · agent=grok-build · An autonomous AI dev team for your GitHub repos.

Comment thread packages/contracts/src/prompts/media-contract.ts
Comment thread apps/daemon/src/media/siftq-video.ts Outdated
Comment thread apps/daemon/src/cli.ts Outdated
@open-design-crew

Copy link
Copy Markdown
Contributor

Thanks for the thorough adapter work here, @futurestudyspace — the V2 payload handling, task-state parsing, SSRF-checked result download, and the 22-test renderer suite are all carefully done. My comment is about product direction rather than the implementation, so please don't read it as a knock on the code.

SiftQ is a discount reseller of MiniMax, not a model provider. Its homepage positions it as exactly that: "MiniMax H3. The lowest price online. Generate cinematic AI videos & access APIs at 81% off official rates." Meanwhile we already integrate MiniMax directly (minimax-video-01 / Hailuo), and MiniMax now serves H3 from its own platform — platform.minimax.io currently banners "MiniMax H3 is now available."

So the underlying user need — H3 video generation inside Open Design — is better served by adding MiniMax-H3 as a model under the existing minimax provider, against the official API, rather than standing up a parallel provider with its own credentials, base URL, env vars, settings card, and icon for a reseller in front of the same model. Users who specifically want SiftQ's pricing can already point the provider at it: the docs added in this PR note that a custom base URL can be saved.

Three concerns behind that:

  1. Endorsement surface. A provider card in Settings is first-class real estate. Listing a reseller there implies Open Design vouches for it, and we have no way to verify how an 81%-below-official price is sustained.
  2. Precedent. If a discount gateway in front of an already-integrated model earns its own provider, Settings will accumulate resellers for every model we support. We should hold the line at first-party model vendors plus established aggregators like AIHubMix.
  3. Demand signal. Add SiftQ MiniMax-H3 video provider #6822 was filed and implemented by the same author, so there is no external request driving this yet.

Practical note: the V2 submit/poll/download logic you have written is not wasted — if H3's official MiniMax endpoint differs from video-01, most of that shape should carry over to a minimax-h3 entry on the existing provider.

Two CI jobs are also currently red on this head (Daemon tests (4/4) and Validate workspace), consistent with the system-prompt snapshot point mrcfps raised.

Would you be open to reworking this as an H3 model on the existing MiniMax provider? Happy to help scope that if useful.

Preserve the injected media proxy dispatcher and long-request timeout when downloading the completed SiftQ video, with a renderer regression test that verifies the dispatcher reaches the asset fetch without bearer credentials.

Keep the shared aspect vocabulary unchanged while documenting 21:9 as SiftQ-specific, describe the provider 4-15 second duration contract, and refresh the affected system-prompt snapshot.

@mrcfps mrcfps left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@futurestudyspace thank you for the careful follow-up on this SiftQ MiniMax-H3 integration — the adapter work is genuinely well structured.

I re-reviewed the current head against the earlier notes. The V2 create/query/download path still looks solid: independent credentials, first-frame adaptive image-to-video, SSRF-checked result fetch without the bearer key, and a tight renderer suite. This pass also confirmed the last-round fixes landed cleanly — the completed-video download now keeps the media requestInit/proxy dispatcher, shared --aspect help stays on the five-value vocabulary with a SiftQ-only 21:9 note, the 4–15s duration rule is documented in the media contract and CLI help, and the system-prompt snapshot totals were refreshed.

New Project’s model-specific length picker, the Settings card without a misleading custom-model field, and od media generate --model siftq-minimax-h3 all line up with the dispatcher.

Nice work getting a full provider in with such clear boundaries. 🙌

🔁 Powered by Looper · runner=reviewer · agent=grok-build · An autonomous AI dev team for your GitHub repos.

Describe the CLI flag directly in the provider guide, include its default, and keep the shared agent contract focused on the accepted 4-15 second range without test-oriented negative examples.
@futurestudyspace

Copy link
Copy Markdown
Author

@lefarcen Got it — I’ll hold off on merging and leave the PR ready for the manual QA pass. Thanks!

@mrcfps mrcfps left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@futurestudyspace thank you for the tidy follow-up on the SiftQ length wording — this MiniMax-H3 provider is still a really well-bounded piece of work.

I re-reviewed this head, including the latest docs-only commit. The independent SiftQ credentials, V2 create/query/download path, first-frame adaptive image-to-video, SSRF-checked result fetch without the bearer key, and the renderer suite all still look solid. The earlier fixes remain in place: the completed-video download keeps the media requestInit/proxy dispatcher, shared --aspect help stays on the five-value vocabulary with a SiftQ-only 21:9 note, New Project uses the 4–15s length picker, and the media-contract / CLI / provider-guide text now describe that range without overstating the shared vocabulary.

Nice work landing a full provider with such clear seams. 🙌

🔁 Powered by Looper · runner=reviewer · agent=grok-build · An autonomous AI dev team for your GitHub repos.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-design-review Awaiting design review (external UI change); cleared by the Odcrew App applying design-approved needs-product-review Feature PR awaiting product sign-off before merge (see roadmap) needs-validation Runtime change detected; needs human or /explore agent validation. risk/high High risk: apps/desktop, daemon, auth, migration, workflows, package deps size/XL PR changes 700-1500 lines type/feature New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add SiftQ MiniMax-H3 video provider

3 participants