Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 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
fd4fdfe
fix(gallery): restore shift/ctrl-click range selection in image grid
lstein May 14, 2026
a421f9c
chore(typegen): regenerate schema.ts
lstein May 14, 2026
2106f10
chore(startup): silence HF tokenizers fork-after-parallelism warning
lstein May 14, 2026
672df1a
chore(startup): hoist TOKENIZERS_PARALLELISM=false to module level
lstein May 14, 2026
ea5ab1b
feat(videos): replace window.confirm with ConfirmationAlertDialog
lstein May 14, 2026
7c04b48
fix(gallery): refetch polymorphic gallery cache on image completion
lstein May 14, 2026
e980c54
review: address 2nd-pass code review findings
lstein May 14, 2026
5d82828
Merge branch 'main' into lstein/feature/wan-video-support
lstein May 14, 2026
ca2a2cd
chore(frontend): typegen
lstein May 14, 2026
aafc871
Merge remote-tracking branch 'refs/remotes/origin/lstein/feature/wan-…
lstein May 14, 2026
4cd9d70
fix(gallery): multi-select context menu actions for videos
lstein May 14, 2026
48e9ec0
Merge branch 'main' into lstein/feature/wan-video-support
JPPhoto May 15, 2026
b09e65c
fix(multiuser): address Pfannkuchensack PR #9163 review findings
lstein May 15, 2026
4883850
Merge branch 'main' into lstein/feature/wan-video-support
lstein May 15, 2026
7ea0fab
chore(openapi): regenerate openapi.json
lstein May 15, 2026
0fafffc
feat(workflows): add "Image to Video - Add Frames" starter workflow
lstein May 15, 2026
15a7657
Merge remote-tracking branch 'upstream/main' into lstein/feature/wan-…
lstein May 15, 2026
e1070c9
fix(gallery): video viewer polish and selection regressions
lstein May 15, 2026
a2b2409
fix(gallery): bulk video drag-to-board and shift-click range selection
lstein May 15, 2026
7734160
Merge branch 'main' into lstein/feature/wan-video-support
lstein May 17, 2026
66dffdb
Merge branch 'main' into lstein/feature/wan-video-support
JPPhoto May 19, 2026
422e29b
fix(scripts): force generate_openapi_schema.py to resolve invokeai fr…
lstein May 19, 2026
59a5b36
feat(video): add Frame Range from Video invocation with scrubbable pr…
lstein May 19, 2026
aa0435b
feat(video): emit resolved frame indices and move preview to per-fiel…
lstein May 19, 2026
fc6e3d7
chore: ruff
JPPhoto May 19, 2026
a8238f8
fix(video): address PR #9163 review follow-ups
lstein May 22, 2026
deb51de
Merge branch 'main' into lstein/feature/wan-video-support
lstein May 22, 2026
9ae463f
chore(schema): regenerate uv.lock and schema.ts
lstein May 27, 2026
5ee6f8f
fix(video): address PR #9163 May-22 review and failing CI
lstein May 27, 2026
d4f004e
Merge branch 'main' into lstein/feature/wan-video-support
lstein May 27, 2026
d861b06
chore(frontend): rebuild openapi
lstein May 27, 2026
ae61a88
Merge remote-tracking branch 'refs/remotes/origin/lstein/feature/wan-…
lstein May 27, 2026
1c597c0
fix(video): register Viewer <video> as drag source
lstein May 27, 2026
c95c7af
feat(video): add frame preview to Frame from Video node
lstein May 30, 2026
1d6c75b
feat(video): derive Frame Range fps from source video by default
lstein May 30, 2026
790c986
fix(video): use fps=0 sentinel for source-derived Frame Range rate
lstein May 30, 2026
4ad69c7
feat(wan): add Wan 2.2 TI2V Ideal Dimensions node
lstein May 30, 2026
5d78d86
docs(wan): add A14B/5B model hints to ideal-dimensions node titles
lstein May 30, 2026
c56f9ac
feat(workflows): replace bundled Wan 2.2 video workflows with curated…
lstein May 30, 2026
685b4c1
docs(video): add beginner Video Workflows guide for the 8 starter wor…
lstein May 30, 2026
76b223a
docs(video): fix Concept LoRA slot guidance (slots are required)
lstein May 31, 2026
4fc0b81
docs(video): drop '(experimental)' from Video Generation title
lstein May 31, 2026
489ddf3
chore: refresh uv.lock
lstein May 31, 2026
50db146
feat(wan): add first-last-frame interpolation (FLF2V) to I2V-A14B
lstein May 31, 2026
b84e364
feat(workflows): add 'Interpolate 2 Images to Video' starter + FLF2V …
lstein May 31, 2026
3ceb891
feat(workflows): add Text/Image/Video to Video library filters + fix …
lstein May 31, 2026
ed0f72f
feat(workflows): add 'Extend Video to Image' FLF2V starter + docs
lstein May 31, 2026
1e0b145
docs(video): reorganize Video Workflows guide sections
lstein May 31, 2026
8f04f24
chore(frontend): regenerate openapi and typegen
lstein May 31, 2026
ce34810
Merge branch 'main' into lstein/feature/wan-video-support
lstein May 31, 2026
4446435
chore(backend): ruff
lstein May 31, 2026
23c2574
Merge remote-tracking branch 'refs/remotes/origin/lstein/feature/wan-…
lstein May 31, 2026
5c6b72d
fix(future): make the WAN LoRA loader compatible with LoRA picker nod…
lstein May 31, 2026
ad489bb
Merge branch 'main' into lstein/feature/wan-video-support
lstein Jun 5, 2026
134acb1
chore(frontend): remove unused selectT5EncoderModels import
lstein Jun 5, 2026
39e0010
chore(frontend): remove unused export
lstein Jun 5, 2026
0628ef5
fix(gallery): count videos and pick video covers for board tiles
lstein Jun 16, 2026
220174d
test(boards): wire video record storage into multiuser test fixtures
lstein Jun 16, 2026
8382ca1
Merge branch 'main' into lstein/feature/wan-video-support
lstein Jun 29, 2026
384a044
fix(ui): widen useVideoContextMenu ref type to allow null
lstein Jun 29, 2026
7827ba5
chore(backend): ruff
lstein Jun 29, 2026
2509529
Merge branch 'main' into lstein/feature/wan-video-support
lstein Jul 1, 2026
a333da6
Merge branch 'main' into lstein/feature/wan-video-support
lstein Jul 5, 2026
f9be20d
Merge remote-tracking branch 'origin/main' into lstein/feature/wan-vi…
lstein Jul 6, 2026
c632d1b
Merge remote-tracking branch 'origin/main' into lstein/feature/wan-vi…
lstein Jul 6, 2026
0c4075f
fix(tests): pass video/gallery services to InvocationServices in work…
lstein Jul 6, 2026
6d4e506
fix(ui): refresh board caches when a generated video completes
lstein Jul 6, 2026
2370358
Merge branch 'main' into lstein/feature/wan-video-support
lstein Jul 10, 2026
a00475a
feat: include videos in date-based virtual boards
lstein Jul 10, 2026
eb529d5
fix(ui): don't advance gallery selection for videos whose delete failed
lstein Jul 10, 2026
9c6f70d
fix(ui): count uncategorized videos when deciding the gallery has con…
lstein Jul 10, 2026
cdb5634
fix(ui): stop labeling board video counts as images in tooltips
lstein Jul 10, 2026
76a16d0
Merge branch 'main' into lstein/feature/wan-video-support
JPPhoto Jul 10, 2026
caaa74c
Merge branch 'main' into lstein/feature/wan-video-support
lstein Jul 10, 2026
bef08d9
fix(ui): restrict client-side video upload acceptance to MP4 only
lstein Jul 10, 2026
72adf66
fix(api): bulk video star/unstar returns partial successes instead of…
lstein Jul 10, 2026
e880c8f
fix(ui): localize virtual board section header and toggle
lstein Jul 10, 2026
e58b9d2
fix(app): failed video saves no longer orphan files on disk
lstein Jul 11, 2026
8fbba98
docs(app): document videos.user_id lifecycle and pin user-deletion be…
lstein Jul 11, 2026
46d4c65
feat(app): support VideoField values in session queue batch data
lstein Jul 11, 2026
9f3bb43
fix(ui): video uploads are opt-in per consumer; upload validation fixes
lstein Jul 11, 2026
51b2431
Merge branch 'main' into lstein/feature/wan-video-support
lstein Jul 11, 2026
005dc04
Merge branch 'main' into lstein/feature/wan-video-support
JPPhoto Jul 12, 2026
e1670b2
fix(app): bound untrusted video decoding with a killable subprocess t…
lstein Jul 12, 2026
18a08ac
fix(app): stream frames through the video concat/trim nodes
lstein Jul 12, 2026
db58a4b
fix(ui): video upload feedback parity with images
lstein Jul 12, 2026
8ca12b9
docs: include videos in the user-deletion data-loss note
lstein Jul 12, 2026
8dcc3f5
fix video processing resource bounds
JPPhoto Jul 12, 2026
f7d28fb
fix video lifecycle edge cases
JPPhoto Jul 12, 2026
f557470
stabilize decoder inactivity test
JPPhoto Jul 12, 2026
32d7a61
chore(deps): declare psutil as a direct dependency
lstein Jul 12, 2026
d293041
Merge origin/main into Wan video support
JPPhoto Jul 13, 2026
f0364fe
Merge branch 'lstein/feature/wan-video-support' of github.com:lstein/…
JPPhoto Jul 13, 2026
2f7f6b4
fix video security and lifecycle regressions
JPPhoto Jul 13, 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
11 changes: 7 additions & 4 deletions docs/src/content/docs/features/Multi-User Mode/admin-guide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -219,10 +219,13 @@ If no arguments are provided, the script will run in interactive mode.

:::danger[Data Loss]
Deleting a user removes the user record and cascades to their sessions, board shares, sent
invitations, and per-user client state. It does **not** delete the boards, images, workflows, queue
items, or style presets they created — those rows remain in the database, owned by a user_id that no
longer exists, and will not appear in any user's gallery. Physical image files in `outputs/images`
are also left in place until a gallery maintenance script is run to remove orphan images.
invitations, and per-user client state. It does **not** delete the boards, images, videos,
workflows, queue items, or style presets they created — those rows remain in the database, owned by
a user_id that no longer exists, and will not appear in other (non-admin) users' galleries.
Administrators keep gallery visibility of the orphaned images and videos and can review or delete
them from there. Physical media files in `outputs/images` and `outputs/videos` are also left in
place: orphan image files can be removed with a gallery maintenance script, while video files should
be deleted through the gallery (which removes the file along with the record) or cleaned up manually.

If you want their content gone as well, reassign or delete it before deleting the user. Back up the
database first if recovery might be needed.
Expand Down
29 changes: 25 additions & 4 deletions docs/src/content/docs/features/gallery.mdx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
title: Gallery Panel
description: Learn how to manage, organize, and use your generated images and assets with the Gallery Panel in InvokeAI.
description: Learn how to manage, organize, and use your generated images, videos, and assets with the Gallery Panel in InvokeAI.
lastUpdated: 2026-02-19
sidebar:
order: 1
---

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 and videos 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 and videos 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 @@ -51,10 +51,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!
:::

### Image Storage Maintenance
Expand Down Expand Up @@ -134,6 +134,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