Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3651 commits
Select commit Hold shift + click to select a range
217bb04
Merge branch 'main' into call-saved-workflow-preview-routing
JPPhoto Sep 28, 2026
200e356
Merge pull request #351 from JPPhoto/call-saved-workflow-preview-routing
JPPhoto Sep 28, 2026
94c5403
fix(workflows): restore viewport when returning to editor
JPPhoto Sep 28, 2026
39444cc
Merge branch 'main' into workflow-editor-viewport-restore
JPPhoto Sep 28, 2026
f8c9f07
Merge branch 'main' into fix/flux-schedule-shift-clamp
Pfannkuchensack Sep 28, 2026
f986d61
Merge branch 'main' into feat/rocm-windows-memory
Pfannkuchensack Sep 28, 2026
bbd71a1
fix(vae): tile on the budget and our own residency, not on an adapter…
Pfannkuchensack Sep 28, 2026
5eb7495
Merge branch 'main' into feat/flux-vae-diffusers-class
Pfannkuchensack Sep 28, 2026
dcd5cb4
Merge branch 'fix/flux-schedule-shift-clamp' into feat/upscale-flux
Pfannkuchensack Sep 28, 2026
2058366
feat(webv2): accept gallery drops on the Uncategorized board
joshistoast Sep 28, 2026
d77a74a
feat(webv2): rename gallery Assets to Uploads
joshistoast Sep 28, 2026
d4eb9d7
feat(webv2): show starred items above in-progress in the gallery
joshistoast Sep 28, 2026
5bcce60
fix(webv2): let Ctrl/Cmd+Enter reach the app from a gallery tile
joshistoast Sep 28, 2026
3b85015
feat(webv2): thicken the gallery selection border
joshistoast Sep 28, 2026
0db3c7d
style(webv2): stronger hover background on line tabs
joshistoast Sep 28, 2026
13f9909
fix(webv2): keep error styling visible on hovered inputs and media drops
joshistoast Sep 28, 2026
66154cf
fix(webv2): raise the selected node above others in the graph preview
joshistoast Sep 28, 2026
3a6c75c
style(webv2): add a text shadow to ScrubberField labels
joshistoast Sep 28, 2026
6ddf7ad
perf(webv2): re-render only the edited Generate section while scrubbing
joshistoast Sep 28, 2026
313dcbc
feat(webv2): list open projects in the Launchpad sidebar
joshistoast Sep 28, 2026
ea25a4a
feat(webv2): customizable workflow library thumbnails
joshistoast Sep 28, 2026
a9b3587
feat(webv2): drive the Upscale widget from an architecture table, and…
Pfannkuchensack Sep 28, 2026
60841d8
fix(webv2): preserve workflow viewport across preview switches
JPPhoto Sep 28, 2026
aabfc51
fix(model-manager): identify standalone 16-channel VAEs as FLUX.1 or SD3
Pfannkuchensack Sep 28, 2026
6d9923a
Merge branch 'main' into fix/windows-bf16-cpu-gemm-crash
Pfannkuchensack Sep 28, 2026
e294caf
Merge pull request #362 from JPPhoto/workflow-editor-viewport-restore
JPPhoto Sep 28, 2026
8394b6b
Merge branch 'main' into fix/windows-bf16-cpu-gemm-crash
Pfannkuchensack Sep 28, 2026
5bd9f99
fix: preserve For final-output contexts through If
JPPhoto Sep 28, 2026
89e781f
Merge branch 'main' into for-final-if-activation-frame
JPPhoto Sep 28, 2026
0701dd6
Merge pull request #357 from invoke-ai/fix/windows-bf16-cpu-gemm-crash
Pfannkuchensack Sep 28, 2026
958d424
Merge branch 'main' into for-final-if-activation-frame
JPPhoto Sep 28, 2026
03f3da7
feat(webv2): add a shared list family to platform/ui
joshistoast Sep 28, 2026
91d6abf
refactor(webv2): render the model library with the shared list
joshistoast Sep 28, 2026
0c0a7ec
feat(webv2): show add-models results as divided list rows
joshistoast Sep 28, 2026
554d5b9
refactor(webv2): render node packs with the shared list
joshistoast Sep 28, 2026
968206b
refactor(webv2): render the font library with the shared list
joshistoast Sep 28, 2026
e5af893
refactor(webv2): render intermediates with the shared list
joshistoast Sep 28, 2026
b51a4f5
refactor(webv2): build queue rows from the shared list item
joshistoast Sep 28, 2026
47f7bd1
feat(webv2): list hotkeys with the shared list
joshistoast Sep 28, 2026
b8aab0d
feat(webv2): render the graph preview's list mode with the shared list
joshistoast Sep 28, 2026
c0cf9ed
perf(webv2): keep shared list modules in the route-shared chunk
joshistoast Sep 28, 2026
dfcab8d
Merge pull request #365 from JPPhoto/for-final-if-activation-frame
JPPhoto Sep 28, 2026
b74d829
docs(flux): state the conditions the schedule step counts were measur…
Pfannkuchensack Sep 28, 2026
aa39141
Merge branch 'main' into fix/flux-schedule-shift-clamp
Pfannkuchensack Sep 28, 2026
37d0d67
fix(webv2): refresh saved workflow picker after library changes
JPPhoto Sep 28, 2026
f199979
chore: remove CLAUDE.md files
joshistoast Sep 28, 2026
5933534
fix(webv2): fade resizable textarea content under its resize handle
joshistoast Sep 28, 2026
65e9f0b
style(webv2): soften model default settings cards
joshistoast Sep 28, 2026
523a3b2
fix(webv2): use the scroll-area scrollbar in the combobox list
joshistoast Sep 28, 2026
b7dc953
fix(webv2): show the modifier keycap in command palette hints
joshistoast Sep 28, 2026
2109dd1
style(webv2): keep the command palette footer on one line
joshistoast Sep 28, 2026
c0035d1
fix(webv2): record ERNIE-Image's encoder and SD PiD models in image m…
joshistoast Sep 28, 2026
86434ab
fix(webv2): restore every recorded component when remixing an image
joshistoast Sep 28, 2026
7b859ef
fix(webv2): keep the semantic search border tinted on hover
joshistoast Sep 28, 2026
dd48b76
feat(webv2): default and remember the prompt tool models
joshistoast Sep 28, 2026
501071e
Merge pull request #366 from JPPhoto/call-saved-workflow-picker-refresh
JPPhoto Sep 28, 2026
7c72f7e
feat(ltx2): choose LTX-2.5 clip length with the duration head
lstein Sep 29, 2026
22181c0
Merge remote-tracking branch 'origin/main' into feat/ltx2-duration
lstein Sep 29, 2026
a4df8a7
chore(deps): move the cpu and cuda extras to torch 2.13.0 (cu130)
Pfannkuchensack Sep 29, 2026
b5fd723
test(webv2): focus the Linear form field directly in the caret test
lstein Sep 29, 2026
701b657
feat(video-recall): place a video as the LTX-2 conditioning clip
lstein Sep 29, 2026
5ff644c
Merge pull request #368 from invoke-ai/fix/linear-caret-test-focus
lstein Sep 29, 2026
2bdba1a
Merge branch 'main' into feat/ltx2-duration
lstein Sep 29, 2026
5d414c5
Merge branch 'main' into feat/video-recall-conditioning-clip
lstein Sep 29, 2026
2910b2f
feat: rank gallery semantic search within the selected board
joshistoast Sep 29, 2026
c7d5900
feat(webv2): search images by meaning from the command palette
joshistoast Sep 29, 2026
05a814d
Merge pull request #367 from invoke-ai/feat/ltx2-duration
lstein Sep 29, 2026
dc6039e
Merge branch 'main' into feat/video-recall-conditioning-clip
lstein Sep 29, 2026
98b3ec4
Merge remote-tracking branch 'origin/main' into feat/rocm-windows-memory
Pfannkuchensack Sep 29, 2026
5878d9d
fix(vae): bound the pre-tiling ceiling by residency, not by usage Win…
Pfannkuchensack Sep 29, 2026
4ec3af7
feat(webv2): let the LTX-2 frames slider reach 481
lstein Sep 29, 2026
eaa2516
Merge pull request #370 from invoke-ai/feat/video-recall-conditioning…
lstein Sep 29, 2026
b88d463
Merge branch 'main' into feat/ltx2-frames-slider-481
lstein Sep 29, 2026
26ef8f7
Merge pull request #371 from invoke-ai/feat/ltx2-frames-slider-481
lstein Sep 29, 2026
5729f31
feat(webv2): share one resize handle across every divider
joshistoast Sep 29, 2026
f9254ae
perf(webv2): hold the canvas bitmap while a divider is dragged
joshistoast Sep 29, 2026
ad88212
feat(webv2): draw region outlines on the borders they share
joshistoast Sep 29, 2026
f856ff2
refactor(webv2): share the manager page layout
joshistoast Sep 29, 2026
75332c6
feat(webv2): show only settings that can be edited where they are opened
joshistoast Sep 29, 2026
3c21e84
feat(webv2): add a Preferences page to the Launchpad
joshistoast Sep 29, 2026
d4792b0
feat(webv2): list Models before Fonts on the Launchpad
joshistoast Sep 29, 2026
8b00a22
feat(webv2): list the current project first among open projects
joshistoast Sep 29, 2026
c2854ed
feat(webv2): list Nodes before Fonts on the Launchpad
joshistoast Sep 29, 2026
9bb08d6
docs(webv2): note that each surface lists only editable settings
joshistoast Sep 29, 2026
e93685f
feat(webv2): widen the gallery picker to every project's boards
joshistoast Sep 29, 2026
d796e8e
feat(webv2): choose model covers from the gallery picker
joshistoast Sep 29, 2026
653e4ec
fix(webv2): keep the first graph preview from the library open
joshistoast Sep 29, 2026
ead2d2d
feat(webv2): set workflow thumbnails from the gallery or a graph snap…
joshistoast Sep 29, 2026
a085bed
refactor(webv2): drop Add workflow from the library's project tab
joshistoast Sep 29, 2026
ef69629
feat(webv2): keep workflow library tabs cached between visits
joshistoast Sep 29, 2026
809739e
fix(webv2): match the workflow panel's View and Edit empty states
joshistoast Sep 29, 2026
a3544f5
fix(webv2): keep menus above dialogs opened from other dialogs
joshistoast Sep 29, 2026
087e12c
feat(webv2): focus the widget a control opens
joshistoast Sep 29, 2026
966cc0c
chore: merge origin/main into feat/webv2-tweaks-batch
joshistoast Sep 29, 2026
b602d19
test(webv2): reach library templates from the tabs in the project-fil…
joshistoast Sep 29, 2026
79b134c
Merge pull request #372 from invoke-ai/feat/webv2-tweaks-batch
joshistoast Sep 29, 2026
dddd403
Round 1 copyright removal
JPPhoto Sep 29, 2026
1dee86a
Round 2 copyright removal
JPPhoto Sep 29, 2026
186740c
Round 3 copyright changes
JPPhoto Sep 29, 2026
0bab23b
feat(workflows): export webv2 workflows as PNG
JPPhoto Sep 29, 2026
dc95339
test(workflows): cover camera tooltip display
JPPhoto Sep 29, 2026
12f6583
Merge pull request #373 from JPPhoto/copyright-adjustment
JPPhoto Sep 29, 2026
fe10f06
Merge branch 'main' into feat/rocm-windows-memory
Pfannkuchensack Sep 29, 2026
7215f18
fix(workflows): make PNG snapshot exports complete
JPPhoto Sep 29, 2026
6b56196
fix(workflows): include hover metadata in snapshot exports
JPPhoto Sep 29, 2026
3999fa4
Merge branch 'main' into feat/flux-vae-diffusers-class
Pfannkuchensack Sep 29, 2026
c4514f4
fix(workflows): localize snapshot metadata
JPPhoto Sep 29, 2026
79b4216
Merge pull request #355 from invoke-ai/feat/flux-vae-diffusers-class
Pfannkuchensack Sep 29, 2026
96e7557
Merge branch 'main' into fix/flux-schedule-shift-clamp
Pfannkuchensack Sep 29, 2026
5307d75
Merge pull request #359 from invoke-ai/fix/flux-schedule-shift-clamp
Pfannkuchensack Sep 29, 2026
359c1e6
Merge remote-tracking branch 'origin/main' into feat/upscale-flux
Pfannkuchensack Sep 29, 2026
5f15aed
Merge remote-tracking branch 'origin/main' into fix/vae-16-channel-base
Pfannkuchensack Sep 29, 2026
7b62fed
fix(workflows): isolate snapshot rendering from editor
JPPhoto Sep 29, 2026
d3968ea
fix(webv2): keep the upscale capability table out of the editor's ini…
Pfannkuchensack Sep 29, 2026
f4b6013
fix(workflows): omit diagnostics from failed snapshots
JPPhoto Sep 29, 2026
b50e0b1
feat(frontend): make webv2 the default through call sites
joshistoast Sep 29, 2026
8cf325c
Merge pull request #364 from invoke-ai/fix/vae-16-channel-base
Pfannkuchensack Sep 29, 2026
104c851
Merge branch 'main' into chore/webv2-default-call-sites
joshistoast Sep 29, 2026
c1fcd9f
Merge branch 'main' into feat/upscale-flux
Pfannkuchensack Sep 29, 2026
0884b03
Merge remote-tracking branch 'origin/main' into add-workflow-snapshot…
JPPhoto Sep 29, 2026
2d0a76e
Merge pull request #363 from invoke-ai/feat/upscale-flux
Pfannkuchensack Sep 29, 2026
f9531dc
Merge branch 'main' into add-workflow-snapshot-toolbox
Pfannkuchensack Sep 29, 2026
8c0cfc5
Merge pull request #376 from JPPhoto/add-workflow-snapshot-toolbox
JPPhoto Sep 29, 2026
5edd626
Merge branch 'main' into chore/webv2-default-call-sites
joshistoast Sep 29, 2026
ed22252
chore(docs): reorganize document tree
lstein Sep 29, 2026
42492c3
fix(tests): stabilize browser interactions and Windows dtype checks
joshistoast Sep 29, 2026
2d25796
refactor(frontend): rename legacy web directory to webv1
joshistoast Sep 29, 2026
3033b53
fix(frontend): use webv1 for legacy launch and tooling
joshistoast Sep 29, 2026
87d4692
Merge remote-tracking branch 'origin/main' into feat/rocm-windows-memory
Pfannkuchensack Sep 30, 2026
36a2871
Merge remote-tracking branch 'origin/feat/rocm-windows-memory' into f…
Pfannkuchensack Sep 30, 2026
8e360e7
refactor(frontend): move API artifacts into shared package
joshistoast Sep 30, 2026
2a45334
ci(frontend): retire legacy gates and share contract tooling
joshistoast Sep 30, 2026
40fb675
style(tests): reflow a call the merge left wrapped
Pfannkuchensack Sep 30, 2026
6466535
Merge pull request #375 from invoke-ai/chore/webv2-default-call-sites
joshistoast Sep 30, 2026
fa2b475
chore(docs): reorganized users guide
lstein Sep 30, 2026
2342672
docs: add workbench diagram and fix links to the renamed Workbench se…
lstein Sep 30, 2026
b2f1c71
fix(docs): treat an empty slug like Astro when generating docs ids
lstein Sep 30, 2026
3410b45
chore: merge origin/main into lstein/docs/v7-docs-update
lstein Sep 30, 2026
31c476f
fix(z-image): hold the schedule shift at the end of its fit
Pfannkuchensack Sep 30, 2026
1fabb78
Merge remote-tracking branch 'origin/main' into fix/z-image-schedule-…
Pfannkuchensack Sep 30, 2026
47e2a7d
test(z-image): tighten the schedule clamp cells
Pfannkuchensack Sep 30, 2026
baca9a0
fix(webv2): show a new project's board in the gallery
joshistoast Sep 30, 2026
18d0152
Merge pull request #379 from invoke-ai/fix/project-board-refresh
joshistoast Sep 30, 2026
5e97dbb
docs: document model, quantization and upscale changes from recent PRs
Pfannkuchensack Sep 30, 2026
348e536
docs: say nvfp4 support means ComfyUI's checkpoint format
Pfannkuchensack Sep 30, 2026
eb5edb7
fix(workflow): export pristine workflow snapshots
JPPhoto Sep 30, 2026
17e86a2
fix(workflow): preserve seed modes in snapshot exports
JPPhoto Sep 30, 2026
9531f5b
docs: move Intermediates from Projects to Image Generation
lstein Sep 30, 2026
c2a8c61
feat(docs): list pages in a second sidebar group with alsoListedIn
lstein Sep 30, 2026
9af0baa
docs: add model zoology and per-family local model pages
lstein Sep 30, 2026
1d55d56
docs: show model types as tables on the Models introduction
lstein Sep 30, 2026
0873d08
docs: tighten model type descriptions
lstein Sep 30, 2026
aaf0fd8
docs: add Generate panel guide and consolidate prompting pages
lstein Sep 30, 2026
8d64e7b
docs: rewrite the Gallery guide for the v7 gallery
lstein Sep 30, 2026
2559caa
fix(workflow): preserve color alpha in snapshot exports
JPPhoto Sep 30, 2026
c8dbd88
docs: add Canvas introduction, Canvas guide and Layers panel guide
lstein Sep 30, 2026
4f59894
fix(workflow): preserve snapshot layout and full resolution
JPPhoto Sep 30, 2026
7e8b3a8
docs: add Automating with Workflows guide
lstein Sep 30, 2026
4dbd564
docs: retire the Using Workflows page
lstein Sep 30, 2026
4bc6b72
feat(webv2): reveal Properties for layer operations and title the pane
lstein Sep 30, 2026
d74a87b
fix(webv2): darken success and warning toast fills for AA contrast
lstein Sep 30, 2026
76e6cdc
fix(workflow): preserve titles and source previews in snapshots
JPPhoto Sep 30, 2026
f600ead
feat(webv2): add Find in Gallery to image context menus
joshistoast Sep 30, 2026
a325972
Merge pull request #390 from invoke-ai/feat/context-menu-find-in-gallery
joshistoast Sep 30, 2026
63d5bae
fix(workflow): retain snapshot previews and current workflow names
JPPhoto Sep 30, 2026
48ac5f7
Merge branch 'main' into lstein/docs/v7-docs-update
joshistoast Sep 30, 2026
b036ac6
fix(workflow): cancel PNG export when editor closes
JPPhoto Sep 30, 2026
a96e9c1
Merge branch 'main' into fix-workflow-snapshot
JPPhoto Sep 30, 2026
a59ad34
Merge pull request #387 from JPPhoto/fix-workflow-snapshot
JPPhoto Sep 30, 2026
3d86853
fix(webv2): keep layout preset dialogs opened from the preset menu
joshistoast Oct 1, 2026
8139e12
refactor(canvas): make the raster owner account for and protect every…
joshistoast Oct 1, 2026
9fa1b36
fix(canvas): give gestures and session keys an explicit owner
joshistoast Oct 1, 2026
2f9134a
perf(canvas): apply value edits through the document index
joshistoast Oct 1, 2026
dd0e590
perf(canvas): render live strokes at most once per frame
joshistoast Oct 1, 2026
b38f70d
perf(canvas): blit replacement selection masks instead of copying RGBA
joshistoast Oct 1, 2026
12bb38e
perf(canvas): reuse color picker scratch, draw plan and last sample
joshistoast Oct 1, 2026
3fc8b61
fix(canvas): close raster-ownership review gaps
joshistoast Oct 1, 2026
09da550
fix(canvas): make composite damage explicit and compose previews insi…
joshistoast Oct 1, 2026
cd88a86
fix(canvas): scope the paint barrier to document writes and never wai…
joshistoast Oct 1, 2026
39e9177
fix(canvas): refresh group surfaces exactly under scaled members and …
joshistoast Oct 1, 2026
7df0066
fix(canvas): keep hold keys after clicking a control and end holds be…
joshistoast Oct 1, 2026
5bdc4fd
perf(canvas): batch config edits and bound value-edit folding
joshistoast Oct 1, 2026
d1aa01b
fix(canvas): pad a moved float's landing like member damage
joshistoast Oct 1, 2026
a11beee
fix(canvas): arm the eyedropper from the tool under a held key
joshistoast Oct 1, 2026
c787a45
test(canvas): prove keyboard-root ownership and same-tool switches du…
joshistoast Oct 1, 2026
99695c3
fix(webv2): fit workflows into view whenever an editor first shows them
joshistoast Oct 1, 2026
a938738
fix(webv2): step workflow float fields by tenths
joshistoast Oct 1, 2026
6f2107c
feat(webv2): rank node search by name and allow ungrouped results
joshistoast Oct 1, 2026
976de7d
fix(webv2): rename node fields by double-clicking their names
joshistoast Oct 1, 2026
5e0c79f
refactor(webv2): drop the in-node output image preview
joshistoast Oct 1, 2026
fbfbdaf
feat(webv2): add an auto-add board and keep None workflow results unc…
joshistoast Oct 1, 2026
3d9cbb4
feat(webv2): find workflow images in the gallery
joshistoast Oct 1, 2026
81316ae
feat(webv2): ask before opening a library workflow the project alread…
joshistoast Oct 1, 2026
195d9ec
Merge branch 'main' into feat/properties-pane-title
lstein Oct 1, 2026
d04fcfc
Merge pull request #388 from invoke-ai/feat/properties-pane-title
lstein Oct 1, 2026
180429d
Merge branch 'main' into fix/workflows-issue-260
joshistoast Oct 1, 2026
fb11e88
Merge branch 'main' into fix/toast-status-contrast
lstein Oct 1, 2026
49b5791
test(docs): unit-test sidebar ordering, cross-listing and pagination
lstein Oct 1, 2026
1bd5aed
docs: address review — licenses, page splits, refreshed pages and scr…
lstein Oct 1, 2026
8e175b0
Merge remote-tracking branch 'origin/lstein/docs/v7-docs-update' into…
lstein Oct 1, 2026
441cafd
test(webv2): wait for border transitions before reading form control …
lstein Oct 1, 2026
ecab586
Merge remote-tracking branch 'origin/fix/toast-status-contrast' into …
lstein Oct 1, 2026
0f4c8bd
Merge remote-tracking branch 'origin/main' into lstein/docs/v7-docs-u…
lstein Oct 1, 2026
f66e022
docs: describe the titled Properties pane on the Canvas pages
lstein Oct 1, 2026
ea3554b
perf(canvas): adjust exported layers in layer-local space
joshistoast Oct 1, 2026
d56ff17
refactor(canvas): admit every edit before it mutates and replay histo…
joshistoast Oct 1, 2026
64ba594
test(perf): pin the canvas engine's new startup modules
joshistoast Oct 1, 2026
01ec90b
Merge pull request #391 from invoke-ai/fix/workflows-issue-260
joshistoast Oct 1, 2026
895aecc
test(canvas): cover pixel undo when the cache cannot be restored
joshistoast Oct 1, 2026
8d2e08f
refactor(canvas): share one edit-step module across layer controllers
joshistoast Oct 1, 2026
7b43d3c
chore: typegen
JPPhoto Oct 1, 2026
5d065dd
fix(webv2): prevent gallery scrolling during image drags
joshistoast Oct 1, 2026
31c0593
Merge pull request #393 from invoke-ai/fix/gallery-drag-scroll
joshistoast Oct 1, 2026
9130407
fix(canvas): admit floating selections from lift to landing
joshistoast Oct 1, 2026
4e30b83
feat(canvas): translate filter refusals when they are shown
joshistoast Oct 1, 2026
2e4b2d9
fix(webv2): read live layer content when the layers UI renders
joshistoast Oct 1, 2026
24419e0
Merge branch 'main' into refactor/canvas-engine-overhaul
joshistoast Oct 1, 2026
7115fc5
fix(webv2): refresh live engine reads on every document change
joshistoast Oct 1, 2026
9f533d1
Merge remote-tracking branch 'origin/refactor/canvas-engine-overhaul'…
joshistoast Oct 1, 2026
669d360
test(perf): re-record route resources after merging main
joshistoast Oct 1, 2026
9327c7f
test(webv2): load the generator editor before its browser tests
joshistoast Oct 1, 2026
fc01bcd
feat(canvas): magnify the pixels under the color picker
joshistoast Oct 1, 2026
b257b7e
feat(canvas): let the loupe's center box be the picker's target
joshistoast Oct 1, 2026
61e9f2c
fix(webv2): restore pane tab dividers while the panes are collapsed
joshistoast Oct 1, 2026
8188a75
Merge pull request #392 from invoke-ai/refactor/canvas-engine-overhaul
joshistoast Oct 1, 2026
2e1d122
docs: add real-app result screenshots and chroma-key advice
lstein Oct 1, 2026
a50ec9a
Merge remote-tracking branch 'origin/main' into lstein/docs/v7-docs-u…
lstein Oct 1, 2026
92daca9
docs: document the auto-add board and the template copy dialog
lstein Oct 1, 2026
b6f89e3
docs: describe the color picker loupe and refresh the board menu scre…
lstein Oct 1, 2026
a2c0c3e
Merge branch 'main' into fix/toast-status-contrast
lstein Oct 1, 2026
726fe63
Merge branch 'main' into upstream-merge
lstein Oct 1, 2026
e196ad4
Merge pull request #377 from invoke-ai/lstein/docs/v7-docs-update
lstein Oct 1, 2026
a4d70e0
Merge remote-tracking branch 'origin/upstream-merge' into docs/v7-doc…
Pfannkuchensack Oct 1, 2026
2c62a3c
Merge branch 'main' into fix/z-image-schedule-shift-clamp
Pfannkuchensack Oct 1, 2026
696ae30
Merge pull request #389 from invoke-ai/fix/toast-status-contrast
lstein Oct 1, 2026
ec493c3
Merge remote-tracking branch 'origin/upstream-merge' into feat/rocm-w…
Pfannkuchensack Oct 1, 2026
d290b26
Merge branch 'upstream-merge' into docs/v7-doc-gaps
Pfannkuchensack Oct 1, 2026
685d2fd
Merge branch 'upstream-merge' into feat/rocm-windows-memory
Pfannkuchensack Oct 1, 2026
dcce251
Merge branch 'upstream-merge' into fix/z-image-schedule-shift-clamp
Pfannkuchensack Oct 1, 2026
2cffbbe
Merge remote-tracking branch 'origin/main' into chore/torch-2.13
Pfannkuchensack Oct 1, 2026
899e1e5
Merge pull request #381 from invoke-ai/docs/v7-doc-gaps
Pfannkuchensack Oct 1, 2026
e1fcec8
Merge branch 'upstream-merge' into fix/z-image-schedule-shift-clamp
Pfannkuchensack Oct 1, 2026
087668a
Merge pull request #378 from invoke-ai/fix/z-image-schedule-shift-clamp
Pfannkuchensack Oct 1, 2026
3e956ca
Merge branch 'upstream-merge' into feat/rocm-windows-memory
Pfannkuchensack Oct 1, 2026
c916b83
Merge remote-tracking branch 'origin/upstream-merge' into chore/torch…
Pfannkuchensack Oct 1, 2026
59b48c7
Merge pull request #304 from invoke-ai/feat/rocm-windows-memory
Pfannkuchensack Oct 1, 2026
1482403
Merge remote-tracking branch 'origin/upstream-merge' into chore/torch…
Pfannkuchensack Oct 1, 2026
19310a2
Merge pull request #369 from invoke-ai/chore/torch-2.13
Pfannkuchensack Oct 1, 2026
6038459
feat: new splash screen art
joshistoast Oct 1, 2026
6c6f7f9
Merge branch 'main' into upstream-merge
lstein Oct 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
35 changes: 35 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,40 @@
# For more info see: https://www.aleksandrhovhannisyan.com/blog/crlf-vs-lf-normalizing-line-endings-in-git/
* text=auto
docker/** text eol=lf

# The frontend formatters read the file on disk, so a CRLF working tree makes `format:check` fail
# for every file -- including ones nobody touched. That leaves contributors on Windows unable to run
# the same check CI runs, which is how formatting errors reach CI in the first place.
#
# Only the working copy changes: these files are already stored with LF (`* text=auto` normalizes on
# commit), so nothing in history is rewritten.
#
# It is not automatic on an existing checkout, and nothing warns you. Git applies `eol=lf` when it
# writes a file, and a pull only writes files whose content changed -- so a CRLF working tree
# becomes a mixed one: the files this revision touched are LF, the thousands it did not stay CRLF,
# and `format:check` keeps failing, now on files nobody edited. Rewrite the rest once, from the
# repository root, with nothing you want to keep uncommitted (this discards working-copy changes;
# `git stash` first if you have any):
#
# git rm --cached -r .
# git reset --hard
#
# `rm --cached` empties the index without touching disk; `reset --hard` then rewrites both from
# HEAD, which is the only step that applies these rules to files whose content did not change.
# `git status` is clean afterwards on a checkout that was already converted.
invokeai/frontend/**/*.ts text eol=lf
invokeai/frontend/**/*.tsx text eol=lf
invokeai/frontend/**/*.mts text eol=lf
invokeai/frontend/**/*.js text eol=lf
invokeai/frontend/**/*.jsx text eol=lf
invokeai/frontend/**/*.mjs text eol=lf
invokeai/frontend/**/*.cjs text eol=lf
invokeai/frontend/**/*.json text eol=lf
invokeai/frontend/**/*.webmanifest text eol=lf
invokeai/frontend/**/*.css text eol=lf
invokeai/frontend/**/*.html text eol=lf
invokeai/frontend/**/*.md text eol=lf
invokeai/frontend/**/*.yaml text eol=lf
invokeai/frontend/**/*.yml text eol=lf
tests/test_model_probe/stripped_models/** filter=lfs diff=lfs merge=lfs -text
tests/model_identification/stripped_models/** filter=lfs diff=lfs merge=lfs -text
35 changes: 11 additions & 24 deletions .github/AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,11 @@
# Agent Instructions

## Package Management

This project uses **pnpm** exclusively for package management in the frontend (`invokeai/frontend/web/`).

- ✅ Use `pnpm` commands (e.g., `pnpm install`, `pnpm run`)
- ❌ Never use `npm` or `yarn` commands
- ❌ Never suggest creating or using `package-lock.json` or `yarn.lock`
- ✅ The lock file is `pnpm-lock.yaml`

Use the following pnpm commands for typical operations:

- pnpm -C invokeai/frontend/web install
- pnpm -C invokeai/frontend/web build
- pnpm -C invokeai/frontend/web lint:tsc
- pnpm -C invokeai/frontend/web lint:dpdm
- pnpm -C invokeai/frontend/web lint:eslint
- pnpm -C invokeai/frontend/web lint:prettier

## Project Structure

- Backend: Python in `invokeai/`
- Frontend: TypeScript/React in `invokeai/frontend/web/` (uses pnpm)
# CI and contributions

- Read affected package guidance before changing checks.
- Preserve PR, main-push, merge-group, manual-dispatch, and reusable-workflow events. `github.base_ref` is not always populated outside PRs.
- Change detection must include workflows and relevant shared actions/configuration; test-only and tooling-only changes must trigger owning checks.
- Preserve tool versions, lockfiles, reproducible installs, hardware/platform matrices, and pinned action revisions.
- Prefer package completion commands over duplicating them in YAML. For webv2's `pnpm check:release`, install Chromium and required Linux dependencies first.
- Preserve failure diagnostics with `always()` where appropriate; keep generated review/performance artifacts out of Git.
- Match hooks to CI's Ruff version/configuration; validation must not rewrite formatting.
- Follow [the PR template](pull_request_template.md); keep summaries short and omit subagent counts, tiers, and process narration.
- Workflow changes do not configure hosted branch protection or install local hooks; verify before claiming either.
3 changes: 2 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,5 @@
/invokeai/frontend/install @lstein
/invokeai/frontend/merge @lstein @blessedcoolant
/invokeai/frontend/training @lstein @blessedcoolant
/invokeai/frontend/web @blessedcoolant @lstein @dunkeroni @Pfannkuchensack @jpphoto
/invokeai/frontend/webv1 @blessedcoolant @lstein @dunkeroni @Pfannkuchensack @jpphoto
/invokeai/frontend/webv2 @blessedcoolant @lstein @dunkeroni @Pfannkuchensack @jpphoto
9 changes: 7 additions & 2 deletions .github/actions/install-frontend-deps/action.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
name: install frontend dependencies
description: Installs frontend dependencies with pnpm, with caching
inputs:
working-directory:
description: Directory to install dependencies in
required: false
default: invokeai/frontend/webv2
runs:
using: 'composite'
steps:
- name: setup node 22
uses: actions/setup-node@v6
with:
node-version: '22'
node-version-file: '.nvmrc'

- name: setup pnpm
uses: pnpm/action-setup@v6
Expand All @@ -30,4 +35,4 @@ runs:
- name: install frontend dependencies
run: pnpm install --prefer-frozen-lockfile
shell: bash
working-directory: invokeai/frontend/web
working-directory: ${{ inputs.working-directory }}
7 changes: 5 additions & 2 deletions .github/pr_labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ python:
- changed-files:
- all-globs-to-any-file:
- 'invokeai/**'
- '!invokeai/frontend/web/**'
- '!invokeai/frontend/webv1/**'
- '!invokeai/frontend/webv2/**'

python-tests:
- changed-files:
Expand Down Expand Up @@ -56,4 +57,6 @@ frontend-deps:

frontend:
- changed-files:
- any-glob-to-any-file: 'invokeai/frontend/web/**'
- any-glob-to-any-file:
- 'invokeai/frontend/webv1/**'
- 'invokeai/frontend/webv2/**'
18 changes: 12 additions & 6 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,29 @@
## Summary

<!--A description of the changes in this PR. Include the kind of change (fix, feature, docs, etc), the "why" and the "how". Screenshots or videos are useful for frontend changes.-->
<!-- Lead with the problem and resulting behavior. Keep this short; show a concrete before/after when useful. -->

## Related Issues / Discussions

<!--WHEN APPLICABLE: List any related issues or discussions on github or discord. If this PR closes an issue, please use the "Closes #1234" format, so that the issue will be automatically closed when the PR merges.-->

## QA Instructions

<!--WHEN APPLICABLE: Describe how you have tested the changes in this PR. Provide enough detail that a reviewer can reproduce your tests.-->
<!-- List actual commands/results and relevant reproduction steps. State skipped, failing, or unavailable checks honestly. Include screenshots/video for changed UI and before/after measurements for material performance claims. -->

## Merge Plan
## Review

<!--WHEN APPLICABLE: Large PRs, or PRs that touch sensitive things like DB schemas, may need some care when merging. For example, a careful rebase by the change author, timing to not interfere with a pending release, or a message to contributors on discord after merging.-->
<!-- Summarize material findings resolved and remaining risks or limitations. If there were no material findings, say so briefly. Omit subagent counts, review tiers, and review-process narration. Do not attach review transcripts or work logs. -->

## Compatibility / Rollout

<!-- When applicable: persisted-data migrations, API/generated-artifact compatibility, deployment ordering, and recovery considerations. Omit this section when unnecessary. -->

## Checklist

- [ ] _The PR has a short but descriptive title, suitable for a changelog_
- [ ] _Tests added / updated (if applicable)_
- [ ] _❗Changes to a redux slice have a corresponding migration_
- [ ] _Meaningful regression coverage added / updated where needed; obsolete tests/code removed_
- [ ] _Persisted-state and API changes include required migrations / compatibility validation_
- [ ] _Relevant performance/efficiency opportunities considered; material claims have evidence_
- [ ] _Material review findings resolved and relevant checks rerun_
- [ ] _Documentation added / updated (if applicable)_
- [ ] _Updated `What's New` copy (if doing a release after this PR)_
26 changes: 23 additions & 3 deletions .github/workflows/build-container.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
- 'invokeai/**'
- 'docker/Dockerfile'
- 'docker/docker-entrypoint.sh'
- 'workflows/build-container.yml'
- '.github/workflows/build-container.yml'
tags:
- 'v*.*.*'
workflow_dispatch:
Expand Down Expand Up @@ -100,7 +100,13 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build container
timeout-minutes: 40
# The rocm image's venv layer is ~7.2GB compressed - roughly 60% larger than
# cuda's and 9x cpu's - and BuildKit gzips a single layer on one thread, so
# the export alone is ~6.5 min on a healthy runner. The whole job normally
# lands at ~17 min, but every phase roughly doubles on a slow runner, which
# blew through the old 40 min cap four times (2026-07-28, 2026-09-17 x2,
# 2026-09-22).
timeout-minutes: 90
id: docker_build
uses: docker/build-push-action@v7
with:
Expand All @@ -109,7 +115,21 @@ jobs:
platforms: ${{ env.PLATFORMS }}
build-args: |
GPU_DRIVER=${{ matrix.gpu-driver }}
push: ${{ github.ref == 'refs/heads/main' || github.ref_type == 'tag' || github.event.inputs.push-to-registry }}
# `outputs` rather than `push` so we can set the compression level: BuildKit
# defaults to gzip -6, which runs at ~19MB/s over that one big layer. gzip -1
# is 2-3x faster for ~15% larger layers, which is a good trade when the
# bottleneck is CI wall-clock rather than registry bandwidth. An empty
# `outputs` emits no --output at all, which is what a non-pushing build did
# before.
#
# The `== 'true'` is load-bearing. `github.event.inputs.*` is always a string,
# and every non-empty string is truthy, so a bare reference to an unchecked
# boolean input evaluates as TRUE. `push:` got away with it because the action
# ran that input through core.getBooleanInput, which maps "false" to false;
# `outputs:` is read with getInputList and passes any non-empty string straight
# through to --output. Without the comparison, a manual run from a non-main
# branch with the box unchecked would publish that branch to ghcr.
outputs: ${{ (github.ref == 'refs/heads/main' || github.ref_type == 'tag' || github.event.inputs.push-to-registry == 'true') && 'type=image,push=true,compression=gzip,compression-level=1' || '' }}
provenance: mode=max
sbom: true
tags: ${{ steps.meta.outputs.tags }}
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,12 @@ jobs:
with:
version: '0.11.28' # When updating this, make sure the version in launcher's package.json gets updated too.
enable-cache: true
python-version: '3.11'
python-version: '3.12'

- name: setup python
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: '3.12'

# generate_docs_json.py only needs the invokeai package importable
# (pydantic + invokeai.app/backend). Skip the [test] extra to keep CI fast.
Expand All @@ -107,6 +107,10 @@ jobs:
working-directory: docs

# Checks
- name: test docs tooling
run: pnpm test
working-directory: docs

- name: verify generated docs data
run: pnpm run check-docs-data
working-directory: docs
Expand Down
72 changes: 27 additions & 45 deletions .github/workflows/frontend-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,67 +30,49 @@ on:
type: boolean
default: true

defaults:
run:
working-directory: invokeai/frontend/web
# One run per pull request: a new push cancels the superseded run. The PR number is used rather
# than the head branch, which two forks can share. Pushes to main and merge groups fall back to
# the run id and never cancel each other. The group names the workflow literally
# because `github.workflow` is the caller's name inside a reusable workflow, and release.yml calls
# several of these at once.
concurrency:
group: frontend-checks-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true

jobs:
frontend-checks:
frontend-webv2-checks:
runs-on: ubuntu-latest
timeout-minutes: 10 # expected run time: <2 min
defaults:
run:
working-directory: invokeai/frontend/webv2
steps:
- uses: actions/checkout@v6

- name: Fail if package-lock.json is added/modified (pnpm only)
shell: bash
working-directory: .
run: |
set -euo pipefail
git fetch --no-tags --prune --depth=1 origin "${{ github.base_ref }}"
if git diff --name-only "origin/${{ github.base_ref }}...HEAD" | grep -E '(^|/)package-lock\.json$'; then
echo "::error::package-lock.json was added or modified. This repo uses pnpm only."
exit 1
fi
- name: check for changed frontend files
- name: check for changed webv2 files
if: ${{ inputs.always_run != true }}
id: changed-files
# Pinned to the _hash_ for v45.0.9 to prevent supply-chain attacks.
# See:
# - CVE-2025-30066
# - https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised
# - https://github.com/tj-actions/changed-files/issues/2463
uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96
with:
files_yaml: |
frontend:
- 'invokeai/frontend/web/**'
webv2:
- '.github/workflows/frontend-checks.yml'
- '.nvmrc'
- '.github/actions/install-frontend-deps/**'
- 'invokeai/frontend/webv2/**'
- name: install dependencies
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
if: ${{ steps.changed-files.outputs.webv2_any_changed == 'true' || inputs.always_run == true }}
uses: ./.github/actions/install-frontend-deps
with:
working-directory: invokeai/frontend/webv2

- name: tsc
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
run: 'pnpm lint:tsc'
shell: bash

- name: dpdm
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
run: 'pnpm lint:dpdm'
shell: bash

- name: eslint
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
run: 'pnpm lint:eslint'
shell: bash

- name: prettier
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
run: 'pnpm lint:prettier'
- name: lint
if: ${{ steps.changed-files.outputs.webv2_any_changed == 'true' || inputs.always_run == true }}
run: 'pnpm run lint'
shell: bash

- name: knip
if: ${{ steps.changed-files.outputs.frontend_any_changed == 'true' || inputs.always_run == true }}
run: 'pnpm lint:knip'
- name: build
if: ${{ steps.changed-files.outputs.webv2_any_changed == 'true' || inputs.always_run == true }}
run: 'pnpm run build'
shell: bash
Loading
Loading