Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
5725f7a
feat(model): add Wan 2.2 image generation support (Phases 0-2)
lstein May 9, 2026
ad4a31e
feat(model): Wan 2.2 Phase 3 + tokenizer-load fix
lstein May 9, 2026
f9a22c1
feat(model): Wan 2.2 Phase 4 - GGUF transformer support
lstein May 9, 2026
11b7eb3
feat(model): Wan 2.2 Phase 5 - LoRA support
lstein May 10, 2026
22799af
feat(model): Wan 2.2 Phase 7 - reference-image (I2V) conditioning
lstein May 11, 2026
5d5f8cb
test(wan): add Phase 8 inpaint regression tests
lstein May 11, 2026
c595452
feat(wan): Phase 9 piece #1 - linear-view T2V txt2img graph builder
lstein May 11, 2026
727eff9
feat(wan): add Wan 2.2 starter models and bundle
lstein May 12, 2026
6c076c5
fix(wan): recall low-noise transformer, component source, and standal…
lstein May 12, 2026
b9b0665
chore(frontend): typegen
lstein May 12, 2026
2d1add8
feat(wan): add default Wan 2.2 T2V and I2V workflows
lstein May 12, 2026
19d5c53
feat(videos): Phase 1 - backend video storage, records, REST API
lstein May 12, 2026
a0913ea
feat(videos): Phase 2 - polymorphic gallery list endpoint
lstein May 12, 2026
c9aff11
feat(videos): Phase 3 - frontend RTK endpoints + MP4 upload routing
lstein May 12, 2026
7cf98cb
feat(videos): Phase 4 - mixed gallery grid with video play badge
lstein May 12, 2026
50d9588
feat(videos): Phase 5 - inline video player in the image viewer
lstein May 12, 2026
1f62b44
fix(videos): accept MP4 (and other video) drops on the fullscreen dro…
lstein May 12, 2026
c9ce8d6
feat(videos): right-click context menu on video items
lstein May 12, 2026
216322f
feat(wan): Phase 6 - Wan 2.2 T2V/I2V workflow nodes
lstein May 12, 2026
87982e9
feat(wan): add Wan 2.2 T2V and I2V starter video workflows
lstein May 12, 2026
cac3662
fix(wan): startup crash from stringified VideoOutput annotation
lstein May 12, 2026
7f89d69
feat(wan): add Wan 2.2 Lightning T2V starter workflow
lstein May 12, 2026
325fbbd
feat(wan): add Wan 2.2 Lightning T2V and I2V starter workflows
lstein May 12, 2026
715df66
fix(wan): use FFMPEG plugin (not pyav) for MP4 encode
lstein May 12, 2026
9117315
feat(wan): log VAE decode and MP4 encode milestones in wan_l2v
lstein May 12, 2026
7b4eee1
fix(wan): switch video thumbnail/probe to imageio[ffmpeg] backend
lstein May 12, 2026
a7dfb3e
fix(videos): handle VideoField outputs in invocation_complete
lstein May 12, 2026
9f212d7
feat(video): add 'Frame from Video' invocation
lstein May 12, 2026
e29e738
feat(video): add 'Concatenate Videos' invocation
lstein May 12, 2026
e5d1fd8
fix(videos): show full-resolution first frame in viewer
lstein May 12, 2026
d477fea
fix(nodes): show 'Save in gallery' on video-output nodes
lstein May 12, 2026
321bdd8
chore: remove unwanted planning documents
lstein May 12, 2026
ce8859b
chore: fix ruff I001 import-order violations
lstein May 13, 2026
405d263
fix(videos): restrict uploads to MP4 only
lstein May 13, 2026
2e8f7c4
chore(videos): clean up stale @knipignore on consumed hooks
lstein May 13, 2026
577ea88
docs(videos): document invalidate/select race in addVideosToGallery
lstein May 13, 2026
537ef6c
feat(video): add Video Primitive invocation and VideoField input UI
lstein May 13, 2026
b077727
chore(backend): ruff
lstein May 13, 2026
bfbe641
chore(frontend): typegen
lstein May 13, 2026
0e6a0cf
Merge branch 'main' into lstein/feature/wan-video-support
JPPhoto May 13, 2026
73d7450
feat(wan): split Wan 2.2 starter bundle into T2V and I2V
lstein May 13, 2026
0361dd0
fix(videos): tighten multiuser isolation in list and board-move endpo…
lstein May 13, 2026
f6408e7
fix(boards): cascade video deletion when deleting a board with media
lstein May 13, 2026
94f5c0c
fix(videos): return affected_boards from board move/remove endpoints
lstein May 13, 2026
6d514ef
fix(videos): stream uploads, FileResponse for full video + thumbnail
lstein May 13, 2026
e529719
fix(videos): localize video UI strings
lstein May 13, 2026
1ab9627
fix(video-invocations): exact frame counts and odd-tf transitions
lstein May 13, 2026
a764380
docs(gallery): describe video gallery items, upload, and deletion
lstein May 13, 2026
2208ff5
test(videos): regression coverage for PR #9163 review fixes
lstein May 13, 2026
fa0de57
feat(wan): add 'Wan 2.2 I2V Ideal Dimensions' invocation
lstein May 13, 2026
c68def2
feat(wan): swap target_short_side int for 480p/720p/1080p preset drop…
lstein May 13, 2026
3ae6b9b
fix(wan): empty_cache around the I2V reference-image VAE encode
lstein May 13, 2026
e7699b6
feat(wan): support TI2V-5B in the video denoise node (T2V mode)
lstein May 13, 2026
07a366f
fix(wan): instantiate TI2V-5B VAE with the right architectural config
lstein May 13, 2026
1596c9b
fix(wan): variant-aware default scheduler for standalone installs
lstein May 13, 2026
5a2ca3b
feat(wan): TI2V-5B image-to-video support
lstein May 13, 2026
9449a33
fix(videos): show denoise progress overlay over the video viewer
lstein May 13, 2026
d870233
chore(lint): apply ruff format + isort across recent Wan video work
lstein May 13, 2026
ef283bc
docs(features): add user guide for Wan 2.2 video generation
lstein May 13, 2026
a3bdc33
fix(nodes): skip image-DTO fetch for videos in Current Image node
lstein May 13, 2026
e01c991
fix(videos): clear stale progress overlay + force first-frame paint
lstein May 14, 2026
5ec7e33
fix(hotkeys): skip image-DTO fetch for videos in GlobalImageHotkeys
lstein May 14, 2026
53b2f4d
fix(wan): empty CUDA cache between A14B expert swaps
lstein May 14, 2026
add40b0
feat(videos): allow drag-and-drop to change a video's board
lstein May 14, 2026
f0e2aa4
fix(wan): force outgoing A14B expert off GPU on swap
lstein May 14, 2026
1b8f03d
feat(canvas-projects): add server-side persistence with board support
Pfannkuchensack May 14, 2026
b6e87de
Add docs
Pfannkuchensack May 14, 2026
82fa5ca
Add Tests
Pfannkuchensack May 14, 2026
8c3a700
Merge branch 'main' into feat/canvas-project-boards
Pfannkuchensack May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 0 additions & 169 deletions USER_ISOLATION_IMPLEMENTATION.md

This file was deleted.

104 changes: 104 additions & 0 deletions docs/src/content/docs/features/canvas-projects.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
---
title: Canvas Projects
description: Save and re-open complete canvas sessions — layers, masks, reference images, parameters and LoRAs — so you can pick up exactly where you left off.
lastUpdated: 2026-05-14
---

import { Card, CardGrid, Steps } from '@astrojs/starlight/components';

A **Canvas Project** is a snapshot of everything you have on the canvas at a given moment — every layer, mask, reference image, generation setting, and active LoRA. You can save a project, come back to it later, share it with someone else, or just keep multiple versions of the same scene side-by-side.

![Canvas Project entry in the gallery](./assets/gallery.png)

---

## What's included in a project

When you save, the project keeps:

- All raster layers, control layers, inpaint masks and regional guidance regions
- Global reference images and IP-Adapter / FLUX Redux setups
- The current generation parameters — model, prompt, seed, scheduler, dimensions, etc.
- Active LoRAs and their weights
- The bounding box and your currently-selected layer

It does **not** include items that are still in the staging area (generations you haven't accepted yet), pending queue items, or anything from other tabs like the workflow editor.

---

## Saving a project

Open the save dialog from **File → Save Canvas Project** (or the matching entry in the canvas right-click menu).

You have two choices for where the project goes:

* **Save to Server** — keeps the project on InvokeAI. It shows up in the gallery alongside your images and videos, can be assigned to a board, and can be re-opened from any browser pointed at the same InvokeAI installation.
* **Download as File** — saves the project as a `.invk` file in your browser's downloads folder. Useful for backups or sharing with someone else.

When saving to the server, pick a board (or leave it as *Uncategorized*) before clicking **Save**.

### Updating a project you already loaded

If you opened the canvas by loading a project from the gallery, the save dialog automatically offers two save modes:

* **Update Existing Project** — overwrites the project you opened with your current canvas. Its name, board, and starred state are preserved. The save dialog shows the project's thumbnail and name so you can double-check which one you're about to overwrite.
* **Create New Project** — saves your work as a *new* project, leaving the original untouched. Use this as a "Save As".

### About the gallery thumbnail

The thumbnail you see in the gallery is automatically rendered from the visible raster content of your canvas at save time. If your canvas only contains control layers, masks, or reference images (no visible raster), the project saves without a thumbnail and shows a neutral placeholder until you re-save with some visible content.

---

## Loading a project

Two ways to load:

1. **From the gallery** — click a project in the gallery to preview its thumbnail in the viewer, then click **Load Canvas Project** in the viewer toolbar. You can also right-click the project and pick *Load Project*.
2. **From a file** — use **File → Load Canvas Project from File** and pick a `.invk` file from your disk.

Either way, a confirmation dialog appears first, because:

:::caution
Loading a project **replaces** your current canvas. Layers, masks, reference images, generation parameters and LoRAs are all overwritten. There is no undo. If you have unsaved work, save it first.
:::

After you confirm, InvokeAI switches you to the Canvas tab automatically so you can start editing right away.

### What happens if some images are missing?

When you load an older project, some of the images it references may no longer be on the server (especially intermediate generations, which get cleaned up over time). That's fine — every image is also embedded inside the project file, so InvokeAI automatically restores the missing ones and reconnects them to your layers. You don't need to do anything; it just works.

---

## Organizing projects in the gallery

Projects show up in the same gallery grid as images and videos, marked with a small layer-stack badge so you can tell them apart at a glance.

![Canvas Project gallery item with badge](./assets/gallery.png)

### Right-click menu

Right-click (or long-press on touch devices) a project for these actions:

* **Load Canvas Project** — same as the toolbar button: opens the load confirmation dialog
* **Download** — saves a `.invk` copy to your computer, handy as a backup or to share
* **Delete** — permanently removes the project after a confirmation

### Moving projects between boards

Drag any project from the gallery onto a board in the boards list to move it there. Drag it onto *Uncategorized* to remove it from a board. You can also pick *Change Board* from the right-click menu after selecting one or more projects.

A project can be on **one board at a time**. If you delete a board, all of its contents — images, videos, and canvas projects — are deleted with it, so download anything you want to keep beforehand.

### Selecting multiple items

Shift-click, Ctrl-click and Cmd-click work across all three kinds of gallery items. You can select a range that mixes images, videos and canvas projects together; bulk actions like delete will handle each kind correctly.

---

## Sharing and backing up

Because **Download as File** produces a regular `.invk` file, sharing a project is as simple as sending that file to someone else. They can load it via **File → Load Canvas Project from File** and get an exact copy of your canvas (assuming the models and LoRAs you used are also available on their installation).

For your own backups, the same download is the easiest option — pop the `.invk` files onto cloud storage or a USB drive.
31 changes: 26 additions & 5 deletions docs/src/content/docs/features/gallery.mdx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
title: Gallery Panel
description: Learn how to manage, organize, and use your generated images and assets with the Gallery Panel in InvokeAI.
lastUpdated: 2026-02-19
description: Learn how to manage, organize, and use your generated images, videos, and assets with the Gallery Panel in InvokeAI.
lastUpdated: 2026-05-13
---

import { Card, CardGrid, Steps } from '@astrojs/starlight/components';

The Gallery Panel is a fast way to review, find, and make use of images you've generated and loaded. The Gallery is divided into **Boards**. The *Uncategorized* board is always present, but you can create your own for better organization.
The Gallery Panel is a fast way to review, find, and make use of images, videos, and canvas projects you've generated and loaded. The Gallery is divided into **Boards**. The *Uncategorized* board is always present, but you can create your own for better organization. Boards are polymorphic — images, videos, and [canvas projects](/features/canvas-projects) coexist on the same board and appear together in the gallery, sorted by creation time.

![Gallery Panel Overview](./assets/gallery.png)

Expand Down Expand Up @@ -49,10 +49,10 @@ Each board has a context menu accessible via right-click (or Ctrl+click).

- **Auto-add to this Board:** If *Auto-Assign Board on Click* is disabled in settings, use this option to quickly set the selected board as the default destination for new images.
- **Download Board:** Packages all images within the board into a `.zip` file. A notification link will be provided when the download is ready.
- **Delete Board:** Permanently removes the board and all of its contents.
- **Delete Board:** Permanently removes the board and all of its contents — both images **and** videos.

:::danger
Deleting a board will **permanently delete all images** contained within it. Proceed with caution!
Deleting a board will **permanently delete all images and videos** contained within it. Proceed with caution!
:::

### Board Contents
Expand Down Expand Up @@ -105,6 +105,27 @@ Additionally, each image has a context menu (right-click or Ctrl+click) with pow

---

## Videos in the Gallery

Videos generated by InvokeAI (currently from the Wan 2.2 model family) appear alongside images in the same gallery view. Each video item displays a first-frame still as its thumbnail with a play badge in the corner; selecting it opens the video in the viewer where you can play it back inline.

### Uploading Videos

You can upload existing videos to a board via the standard drop-or-upload affordance. The upload pipeline accepts **MP4 files only**. Other containers (`.mov`, `.webm`, `.mkv`) are not transcoded on upload and are rejected at the API boundary — re-encode them to MP4 (for example with `ffmpeg -i input.mov -c:v libx264 output.mp4`) before uploading.

### Video Context Menu

Each video has a context menu with the same organization actions as images, plus video-appropriate variants:

- **Open in New Tab / Download:** Opens or saves the raw MP4 file.
- **Star Video:** Pins the video to the top of the gallery.
- **Change Board:** Moves the video to a different board. *(Drag-and-drop onto board thumbnails also works.)*
- **Delete Video:** Permanently deletes the video and its thumbnail.

Videos count toward board contents: a board with two images and three videos shows five items in the polymorphic gallery list and reports both totals in its stats.

---

## Summary

This walkthrough covers the Gallery interface and Boards. For guidance on prompting and generation workflows, please refer to the [Prompting Guide](/concepts/prompting-guide/) and [AI Image Generation](/concepts/image-generation/).
Expand Down
Loading
Loading