FlashBoard is the AI canvas workspace behind the AI Video panel's Board mode. It is a node-based generation surface for text-to-video, image-to-video, and image generation, with direct import into the Media Pool and optional timeline drag/drop.
Status: Implemented. The board workspace is active, lazy-loaded, queued, persisted with the project, and connected to the current AI provider catalog.
FlashBoard is not a separate model backend. It is a workspace layer on top of the existing AI services:
piapifor the PiAPI catalogkieaifor Kie.ai Kling 3.0 and Nano Banana 2cloudfor hosted Kling 3.0 and hosted Nano Banana 2
The AI Video panel switches into FlashBoard when the user selects Board mode. If the user has no Kie.ai key and is signed in to MasterSelects Cloud, the board uses the hosted cloud service scope. Otherwise it stays on Kie.ai.
FlashBoard is composed of:
FlashBoardWorkspace- lazy-loaded shell and error boundaryFlashBoardToolbar- board tabs, new board, new draft, queue countersFlashBoardCanvas- pan/zoom canvas, node selection, context menus, drag/dropFlashBoardComposer- provider selection, prompt editing, durations, aspect ratio, image size, multi-shot setup
Boards are persisted inside the project state. The active board is restored on project load, and generation metadata is serialized alongside the board state.
Nodes move through the following states:
draftqueuedprocessingcompletedfailedcanceled
There are two node kinds:
generation- an actual AI requestreference- a media reference dropped into the canvas
Generation nodes can include:
- prompt
- provider and version
- output type (
videoorimage) - duration and aspect ratio
- optional start and end media
- optional reference media list
- optional multi-shot prompt sequence
- optional audio generation
The board uses the shared catalog from FlashBoardModelCatalog:
- PiAPI video providers from the shared PiAPI catalog
- Kie.ai Kling 3.0 video
- Kie.ai Nano Banana 2 image generation
- Cloud Kling 3.0 video
- Cloud Nano Banana 2 image generation
The classic AI Video flow is narrower: it currently exposes only the Kie.ai Kling 3.0 provider list, while FlashBoard exposes the richer catalog.
- The user creates a draft node from the composer.
- The store captures the current request on that node.
FlashBoardJobServicequeues the node.- Jobs run with a concurrency cap of 3 overall, but only 1 Kie.ai job at a time.
- The selected service submits the remote task and polls until completion.
- On success,
FlashBoardMediaBridgedownloads the asset, imports it into the Media Pool, and marks the node complete.
Image generation is handled alongside video generation. The code path resolves previewable reference images from media files, including thumbnails for video sources or a captured frame when needed.
FlashBoard uses the same drag payload as the rest of the app:
application/x-media-file-id
Completed assets are imported under:
AI Gen/VideoAI Gen/Images
The bridge stores generation metadata keyed by imported media file ID so project save/restore can round-trip the generated asset provenance. The imported asset can be dragged to the timeline or inserted directly at the playhead.
Board mode is gated by the same AI access conditions as the panel:
- if a Kie.ai key is present, the board uses Kie.ai
- if there is no Kie.ai key but the user is signed in, the board uses hosted Cloud
- if neither is available, the AI Video panel shows the access overlay
Hosted board requests are credit-backed and authenticated. There is no anonymous hosted generation path.
- The board does not add a new backend provider. It delegates to the existing AI services.
- Generated URLs are temporary, so imports force a local project copy.
- The board is still bound by provider-specific feature support in the catalog.
- The lazy-loaded board chunk can fail on HMR or stale caches; the panel falls back to Classic with a retry option.
src/components/panels/AIVideoPanel.tsxsrc/components/panels/flashboard/FlashBoardWorkspace.tsxsrc/components/panels/flashboard/FlashBoardToolbar.tsxsrc/components/panels/flashboard/FlashBoardCanvas.tsxsrc/components/panels/flashboard/FlashBoardComposer.tsxsrc/services/flashboard/FlashBoardJobService.tssrc/services/flashboard/FlashBoardMediaBridge.tssrc/services/flashboard/FlashBoardPricing.tssrc/services/flashboard/FlashBoardModelCatalog.tssrc/stores/flashboardStore/*