Skip to content

[bug]: v7 Canvas & Control Layer metadata is not recorded or recallable (plus missing v4–v6 metadata recall fallbacks) #10131

Open

Description

@skunkworxdark

Is there an existing issue for this problem?

  • I have searched the existing issues

Version number

v7.0.0-alpha.4-post1 (main)

What happened

In the move from InvokeAI v6 (webv1) to v7 (webv2), two related metadata regressions were introduced for Canvas generations and parameter recall:

  1. Canvas & Control Layer metadata is no longer recorded on generated images when generating on the v7 Canvas (ControlNets, T2I-Adapters, ControlLoRAs, Fun-ControlNet-Union, ControlNet-LLLite, mask-based Regional Guidance, and Canvas layer state).
  2. Frontend parameter recall (imageRecall.ts) no longer displays or recalls Control / Canvas metadata and dropped fallback parsers for historic v4, v5, and v6 metadata schemas, meaning users cannot inspect or recall adapters and settings from either newly generated v7 Canvas images or their existing v4–v6 image galleries.

1. What Is Missing in v7 Metadata Recording (compileCanvasGraph.ts & CoreMetadataInvocation)

  1. Control Layers (ControlNet, T2I-Adapter, ControlLoRA, Fun-ControlNet-Union, ControlNet-LLLite) are not recorded in core_metadata:
    • CoreMetadataInvocation (invokeai/app/invocations/metadata.py) no longer has inputs for controlnets, t2iAdapters, or Canvas control layers (only anima_inpaint_adapter / anima_inpaint_adapter_weight for Anima's inpaint adapter).
    • compileCanvasGraph.ts and addControlLayers.ts (invokeai/frontend/webv2/src/features/generation/core/canvas/) wire the control adapter nodes into denoise_latents, but write nothing to core_metadata.
    • Furthermore, graph.ts wires core_metadata directly into canvas_output.metadata (bypassing denoise_latents). Even with PR feat(nodes): add native metadata input and output across denoise invocations #10083 adding native controlnets and t2iAdapters serialization on all denoise nodes (denoise_latents.metadata), Canvas/Generate graphs overwrite canvas_output.metadata with core_metadata.
  2. Mask-Based Regional Guidance is not recorded:
    • While layout-prompt models (ideogram-4, moss-image, flux3) record their assembled layout caption in core_metadata (ideogram4_caption, moss_image_layout_prompt, flux3_caption), mask-based Regional Guidance compiled by addRegionalGuidance.ts for SD1.5, SDXL, FLUX, Z-Image, Anima, and Krea-2 records none of the regional prompts, masks, or regional reference images in core_metadata.
  3. Canvas Layer State (controlLayers, regionalGuidance, inpaintMasks, rasterLayers):
    • In v6 (webv1/src/features/controlLayers/store/selectors.ts), selectCanvasMetadata recorded canvas_v2_metadata (controlLayers, inpaintMasks, rasterLayers, regionalGuidance) on generated images, and CanvasLayers (webv1/src/features/metadata/parsing.tsx) displayed the layer count and recalled them via canvasMetadataRecalled. In v7, none of this Canvas layer state is recorded or recallable.

2. Missing Frontend Recall & Historic Metadata Format Support (v4 / v5 / v6 -> v7)

Users have large existing image libraries generated in InvokeAI v4, v5, and v6 (as well as node workflows). While backend workflow nodes (metadata_to_ip_adapters, metadata_to_controlnets, metadata_to_t2i_adapters in PR #10083) support multi-version recall across v4, v5/v6, and v7 schemas, the v7 frontend (invokeai/frontend/webv2/src/workbench/image-actions/imageRecall.ts) lacks both UI recall for Control/Canvas layers and fallback parsers for historic metadata formats:

Metadata Feature v7 Schema v5 / v6 Schema (canvas_v2_metadata) v4 / Legacy Workflow Schema Current v7 Frontend (imageRecall.ts) Status
Reference Images / IP-Adapter ref_images (config.image.original.image) canvas_v2_metadata.referenceImages.entities (ipAdapter.image) ipAdapters (ip_adapter_model, image, begin_step_percent, end_step_percent) Only parses v7 ref_images; fails to recall v5/v6 canvas_v2_metadata.referenceImages and v4 ipAdapters (whereas v6 parsing.tsx had a fallback parser).
ControlNets & ControlLoRAs controlnets (emitted by denoise nodes in #10083; missing from core_metadata) canvas_v2_metadata.controlLayers (controlAdapter.type === 'controlnet' | 'control_lora') controlnets (control_model, image, control_weight, begin_step_percent, end_step_percent, control_mode) Not displayed in Metadata Viewer and not recallable.
T2I-Adapters t2iAdapters (emitted by denoise nodes in #10083; missing from core_metadata) canvas_v2_metadata.controlLayers (controlAdapter.type === 't2i_adapter') t2iAdapters (t2i_adapter_model, image, weight, begin_step_percent, end_step_percent) Not displayed in Metadata Viewer and not recallable.
Regional Guidance ideogram4_caption / moss_image_layout_prompt / flux3_caption (layout bases only; mask bases unrecorded) canvas_v2_metadata.regionalGuidance (positivePrompt, negativePrompt, referenceImages, mask objects) N/A Not displayed in Metadata Viewer and not recallable.
Canvas Layer State & Denoising strength strength written to core_metadata on Canvas img2img/inpaint/outpaint canvas_v2_metadata.rasterLayers, canvas_v2_metadata.inpaintMasks, strength strength, init_image strength and Canvas layers are not recallable in imageRecall.ts.

What you expected to happen

  1. Scope & Expectations — Staging Area / Direct Generation vs. Flattened Canvas Export:
    • In Scope (Staging Area & Direct-to-Gallery Generations): Metadata recording and recall should be complete whenever an image is produced by a generation run — i.e., when generating with destination set to Gallery, or when saving an individual generated candidate from the Canvas Staging Area to the Gallery. Each staged candidate is the direct output of a single compileCanvasGraph execution with well-defined model, prompt, seed, strength, Control Layers, Reference Images, and Regional Guidance parameters.
    • Out of Scope (Saving the Flattened Canvas Document on Its Own): Saving/exporting the composited Canvas raster layers outside the staging area is a document export that may combine manual brush edits, imported assets, and multiple separate generation passes, so it is not expected to carry single-generation metadata.
  2. Record Control & Canvas Metadata in v7:
    • Record active Control Layers (ControlNet, T2I-Adapter, ControlLoRA, Fun-ControlNet-Union, ControlNet-LLLite) and Regional Guidance in core_metadata when compiling Canvas graphs (or route core_metadata through denoise_latents.metadata so denoise-emitted controlnets/t2iAdapters are preserved on canvas_output).
  3. Display & Recall Control / Canvas Metadata in v7 UI:
    • Display used Control Adapters, Regional Guidance, and strength in the v7 Metadata Viewer.
    • Support recalling Control Layers, Regional Guidance, and strength back into the Canvas / Generate UI.
  4. Preserve Backward-Compatible Recall for v4, v5, and v6 Images:
    • Add fallback parsers in imageRecall.ts for:
      • canvas_v2_metadata.referenceImages.entities and v4 ipAdapters -> v7 referenceImages
      • canvas_v2_metadata.controlLayers and v4/v7 controlnets / t2iAdapters -> v7 Canvas Control Layers
      • canvas_v2_metadata.regionalGuidance -> v7 Canvas Regional Guidance layers

Additional context

Activity

  1. self-assigned this
    on Nov 2, 2026
  2. skunkworxdark commented on Nov 3, 2026

    @skunkworxdark
    ContributorAuthor

    Cross-referencing PR #10127 ("Restore Canvas metadata and recall parity"), which was opened right around the same time and directly addresses nearly everything described in this issue!

    Covered by #10127

    • v7 Canvas & Control Layer Recording (compileCanvasGraph.ts): Records canvas_v3_metadata, control_layers (all 7 control layer types: controlnet, t2i_adapter, control_lora, qwen_image_control, flux2_control, z_image_control, anima_lllite), legacy-compatible controlnets and t2iAdapters, and regions (both layout and mask-based Regional Guidance).
    • Preview Details Panel (previewMetadata.ts): Displays control_layers, controlnets, t2iAdapters, regions, canvas_v3_metadata, and canvas_v2_metadata summaries.
    • v7 & Legacy v5/v6 Canvas Recall (canvasRecall.ts, legacyCanvasMetadata.ts): Restores canvas_v3_metadata, converts v5/v6 canvas_v2_metadata (rasterizing legacy Konva layers, masks, control layers, and regional guidance into v7 CanvasDocumentContractV3 layers), and restores denoising strength.
    • Manual Canvas Saves (saveCanvasToGallery.ts): Records authored canvas_v3_metadata layers while intentionally omitting seed and generation_mode.

    Remaining Fallback Items Not Covered in #10127

    1. Standalone controlnets and t2iAdapters recall in canvasRecall.ts:
      • #10127 displays top-level controlnets and t2iAdapters in previewMetadata.ts, but canvasRecall.ts currently only checks 'canvas_v3_metadata' in metadata || 'canvas_v2_metadata' in metadata || 'control_layers' in metadata.
      • Adding a fallback in canvasRecall.ts for standalone top-level controlnets and t2iAdapters (when control_layers, canvas_v2_metadata, and canvas_v3_metadata are absent) will allow recalling ControlNets/T2I-Adapters from v4 images as well as v7 node workflows (emitted by backend denoise nodes in feat(nodes): add native metadata input and output across denoise invocations #10083).
    2. Global Reference Images (ref_images) fallback in imageRecall.ts for v5/v6 and v4:
      • #10127 converts regional reference images inside canvas_v2_metadata.regionalGuidance, while imageRecall.ts currently only checks top-level metadata.ref_images for global Reference Images.
      • Adding a fallback in imageRecall.ts to read canvas_v2_metadata.referenceImages.entities (v5/v6 global reference images) and top-level metadata.ipAdapters (v4 IP-Adapters) when metadata.ref_images is absent will complete historic Reference Image recall across v4–v6.
  3. joshistoast commented on Nov 3, 2026

    @joshistoast
    Collaborator

    Your remaining items should be addressed, check again whenever is convenient

  4. skunkworxdark commented on Nov 3, 2026

    @skunkworxdark
    ContributorAuthor

    @joshistoast Just reviewed the latest commits (5cce3c79f3 & b832cf9cb8) on #10127 — both remaining items (standalone controlnets / t2iAdapters recall with frame-fitting and Gallery dimension hydration, plus global ref_images fallbacks for canvas_v2_metadata.referenceImages and v4 ipAdapters) are completely covered and also align cleanly with the backend workflow metadata emitted in #10083. Thank you for the super fast turnaround!

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions