# Changelog

## Score

- CAI 44 → 36 (-8.2)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 62 → 60 (-2.0)
- Architecture 47 → 34 (-12.9)
- Maturity 61 → 39 (-22.9)
- Readiness 35 → 31 (-4.5)
- Security 69 → 71 (+1.3)
- Accessibility 47 → 43 (-4.3)
- Performance 100 → 85 (-15.0)

## Resolved (334)

- BrushOptions.PaintSizeControl (cyclomatic 18) (invokeai/frontend/webv2/src/workbench/widgets/canvas/tool-options/BrushOptions.tsx)
- CallSavedWorkflowSyncRuntime.CallSavedWorkflowSyncRuntime (cognitive 90) (invokeai/frontend/webv2/src/features/workflow/ui/editor/CallSavedWorkflowSyncRuntime.tsx)
- CallSavedWorkflowSyncRuntime.CallSavedWorkflowSyncRuntime (cyclomatic 59) (invokeai/frontend/webv2/src/features/workflow/ui/editor/CallSavedWorkflowSyncRuntime.tsx)
- Change coupling clique: ControlLayer.tsx, InpaintMask.tsx, RasterLayer.tsx, RegionalGuidance.tsx (invokeai/frontend/webv1/src/features/controlLayers/components/ControlLayer/ControlLayer.tsx)
- Change coupling clique: ControlLayerMenuItems.tsx, InpaintMaskMenuItems.tsx, RasterLayerMenuItems.tsx, RegionalGuidanceMenuItems.tsx (invokeai/frontend/webv1/src/features/controlLayers/components/ControlLayer/ControlLayerMenuItems.tsx)
- Change coupling: GalleryImageGrid.tsx ↔ GalleryWidgetView.tsx (invokeai/frontend/webv2/src/features/gallery/ui/GalleryImageGrid.tsx)
- Change coupling: ModelBaseBadge.tsx ↔ types.ts (invokeai/frontend/webv1/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelBaseBadge.tsx)
- Change coupling: ModelListItem.tsx ↔ ModelView.tsx (invokeai/frontend/webv1/src/features/modelManagerV2/subpanels/ModelManagerPanel/ModelListItem.tsx)
- Change coupling: RefImageSettings.tsx ↔ RegionalReferenceImageModel.tsx (invokeai/frontend/webv1/src/features/controlLayers/components/RefImage/RefImageSettings.tsx)
- Change coupling: buildFieldInputInstance.ts ↔ types.ts (invokeai/frontend/webv1/src/features/nodes/util/schema/buildFieldInputInstance.ts)
- Change-coupling hub: engine.ts → paintTool.ts, operationController.ts, ControlLayerSettings.tsx, layerContextActions.ts (invokeai/frontend/webv2/src/workbench/canvas-engine/engine.ts)
- Config.confirm_and_load (cognitive 17) (invokeai/frontend/install/import_images.py)
- ConfigMapper.__load_from_root_config (cognitive 21) (invokeai/backend/util/gallery_maintenance.py)
- Critical CVE: [GHSA redacted] (uv.lock)
- Critical CVE: [GHSA redacted] (invokeai/frontend/webv1/pnpm-lock.yaml)
- CustomAttnProcessor2_0.__call__ (cognitive 29) (invokeai/backend/stable_diffusion/diffusion/custom_atttention.py)
- CustomAttnProcessor2_0.__call__ (cyclomatic 18) (invokeai/backend/stable_diffusion/diffusion/custom_atttention.py)
- DatabaseMapper.get_all_model_directories (cognitive 16) (scripts/remove_orphaned_models.py)
- Duplicated block (10 lines × 2) (invokeai/app/services/image_records/image_records_sqlite.py)
- Duplicated block (10 lines × 2) (invokeai/app/services/image_records/image_records_sqlite.py)
- …and 314 more

## New (1195)

- CallSavedWorkflowSyncRuntime.CallSavedWorkflowSyncRuntime::reconcile (cognitive 51) (invokeai/frontend/webv2/src/features/workflow/ui/editor/CallSavedWorkflowSyncRuntime.tsx)
- CallSavedWorkflowSyncRuntime.CallSavedWorkflowSyncRuntime::reconcile (cyclomatic 34) (invokeai/frontend/webv2/src/features/workflow/ui/editor/CallSavedWorkflowSyncRuntime.tsx)
- Change coupling: CanvasLayersPanelContent.tsx ↔ ImageViewer.tsx (invokeai/frontend/webv1/src/features/controlLayers/components/CanvasLayersPanelContent.tsx)
- Change coupling: Filter.tsx ↔ Transform.tsx (invokeai/frontend/webv1/src/features/controlLayers/components/Filters/Filter.tsx)
- Change coupling: GenerateConceptsSection.tsx ↔ UpscaleWidgetView.tsx (invokeai/frontend/webv2/src/features/generation/ui/GenerateConceptsSection.tsx)
- Change coupling: ImageViewer.tsx ↔ NodeEditor.tsx (invokeai/frontend/webv1/src/features/gallery/components/ImageViewer/ImageViewer.tsx)
- Change coupling: InpaintMaskMenuItems.tsx ↔ RasterLayerMenuItems.tsx (invokeai/frontend/webv1/src/features/controlLayers/components/InpaintMask/InpaintMaskMenuItems.tsx)
- Change coupling: RasterLayer.tsx ↔ GalleryBoard.tsx (invokeai/frontend/webv1/src/features/controlLayers/components/RasterLayer/RasterLayer.tsx)
- Change coupling: assetTransport.ts ↔ projectFile.ts (invokeai/frontend/webv2/src/workbench/projects/invk/assetTransport.ts)
- Change coupling: common.ts ↔ DimensionsAspectRatioSelect.tsx (invokeai/frontend/webv1/src/features/nodes/types/common.ts)
- Change coupling: index.ts ↔ executeVideoRecall.ts (invokeai/frontend/webv2/src/features/video/index.ts)
- Change coupling: settings.ts ↔ executeVideoRecall.ts (invokeai/frontend/webv2/src/features/video/core/settings.ts)
- Change-coupling hub: engine.ts → paintTool.ts, operationController.ts, ControlLayerSettings.tsx (invokeai/frontend/webv2/src/workbench/canvas-engine/engine.ts)
- Change-coupling hub: types.ts → ModelBaseBadge.tsx, buildFieldInputInstance.ts, DimensionsAspectRatioSelect.tsx (invokeai/frontend/webv1/src/services/api/types.ts)
- ClassTooLong: GalleryPickerView (invokeai/frontend/webv2/src/features/gallery/ui/picker/GalleryPickerView.tsx)
- ClassTooLong: PreviewWidgetView (invokeai/frontend/webv2/src/workbench/widgets/preview/PreviewWidgetView.tsx)
- ClassTooLong: useGalleryData (invokeai/frontend/webv2/src/features/gallery/ui/useGalleryData.ts)
- ClassTooLong: usePreviewNavigation (invokeai/frontend/webv2/src/workbench/widgets/preview/usePreviewNavigation.ts)
- ConceptRow.ConceptRowContent (cognitive 17) (invokeai/frontend/webv2/src/features/generation/ui/shared/ConceptRow.tsx)
- DiskImageFileStorage.__iter_supported_paths (cognitive 25) (invokeai/app/services/image_files/image_files_disk.py)
- …and 1175 more

## Changes since last survey

- 300 commits — 195 feature/other, 105 fixes

## By area

- (repo) — 173 commits
- invokeai/frontend — 47 commits
- invokeai/app — 32 commits
- docs/src — 15 commits
- invokeai/backend — 13 commits
- tests/app — 9 commits
- (root) — 3 commits
- .github/workflows — 3 commits
- invokeai/version — 2 commits
- tests/backend — 2 commits
- tests/model_identification — 1 commit

## Notable commits

- fix: Fix FLUX scheduler integration (#9724)
- fix: Fix compatibility scheduling for a nested If graph with a literal outer condition.
- fix: Fix graph execution edge cases (#9843)
- fix: Fix scheduler deadlock with nested If nodes using literal conditions (#9786)
- fix: Merge branch 'main' into fix-nested-if-literal-condition
- fix: Merge branch 'main' into fix-nested-if-literal-condition
- fix: Merge branch 'main' into fix/collector-union-output-types
- fix: Merge branch 'main' into fix/collector-union-output-types
- fix: Merge branch 'main' into fix/float-audio-first-track
- fix: Merge branch 'main' into fix/float-audio-first-track
- fix: Merge branch 'main' into fix/float-audio-first-track
- fix: Merge branch 'main' into fix/float-audio-first-track
- fix: Merge branch 'main' into fix/flux-denoise-skip-unused-noise
- fix: Merge branch 'main' into fix/flux-denoise-skip-unused-noise
- fix: Merge branch 'main' into fix/flux-denoise-skip-unused-noise
- fix: Merge branch 'main' into fix/flux-denoise-skip-unused-noise
- fix: Merge branch 'main' into fix/flux-denoise-skip-unused-noise
- fix: Merge branch 'main' into fix/flux-lcm-step-generator
- fix: Merge branch 'main' into fix/flux-lcm-step-generator
- fix: Merge branch 'main' into fix/flux-xlabs-controlnet-not-main
- …and 280 more

## Architecture

- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
