## Summary
Continues the TypeScript strict typing improvements by removing `any`
types from core scripts and dialog components.
### Changes
**api.ts (6 instances)**
- Define `V1RawPrompt` and `CloudRawPrompt` tuple types for queue prompt
formats
- Export `QueueIndex`, `PromptInputs`, `ExtraData`, `OutputsToExecute`
from apiSchema
- Type `#postItem` body, `storeUserData` data, and `getCustomNodesI18n`
return
**groupNodeManage.ts (all @ts-expect-error removed)**
- Add `GroupNodeConfigEntry` interface to LGraph.ts
- Extend `GroupNodeWorkflowData` with `title`, `widgets_values`, and
typed `config`
- Type all class properties with definite assignment assertions
- Type all method parameters and event handlers
- Fix save button callback with proper generic types for node ordering
**changeTracker.ts (4 instances)**
- Type `nodeOutputs` as `Record<string, ExecutedWsMessage['output']>`
- Type prompt callback with `CanvasPointerEvent` and proper value types
**asyncDialog.ts and dialog.ts**
- Make `ComfyAsyncDialog` generic with `DialogAction<T>` type
- Type `ComfyDialog` constructor and show method parameters
- Update `ManageGroupDialog.show` signature to match base class
## Test plan
- [x] `pnpm typecheck` passes
- [x] `pnpm lint` passes
- [x] Sourcegraph checks for external usage
---
Related: Continues from #8083
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8092-Road-to-No-Explicit-Any-Part-7-Scripts-and-Dialog-Cleanup-2ea6d73d365081fbb890e73646a6ad16)
by [Unito](https://www.unito.io)
Prior to the release of subgraphs, there was a single graph accessed
through `app.graph`. Now that there's multiple graphs, there's a lot of
code that needs to be reviewed and potentially updated depending on if
it cares about nearby nodes, all nodes, or something else requiring
specific attention.
This was done by simply changing the type of `app.graph` to unknown so
the typechecker will complain about every place it's currently used.
References were then updated to `app.rootGraph` if the previous usage
was correct, or actually rewritten.
By not getting rid of `app.graph`, this change already ensures that
there's no loss of functionality for custom nodes, but the prior typing
of `app.graph` can always be restored if future dissuasion of
`app.graph` usage creates issues.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7399-Cleanup-app-graph-usage-2c76d73d365081178743dfdcf07f44d0)
by [Unito](https://www.unito.io)
## Summary
Fixed Vue node output restoration by consolidating state management
through the node output store.
## Changes
- **What**: Refactored node output cleanup and restoration logic in
`ChangeTracker` and `ComfyApp` to use centralized store methods
- **Breaking**: Removed direct manipulation of `app.nodeOutputs` in
favor of store-managed state
## Review Focus
State synchronization between `app.nodeOutputs` and `nodeOutputs.value`
during restore/reset operations, ensuring Vue reactivity is maintained.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-5788-fix-restoring-outputs-in-Vue-nodes-persisting-node-outputs-when-switching-between-workfl-27a6d73d365081b39411fed7479d8ac5)
by [Unito](https://www.unito.io)
* [refactor] move workflow domain to its own folder
* [refactor] Fix workflow platform architecture organization
- Move workflow rendering functionality to renderer/thumbnail domain
- Rename ui folder to management for better semantic clarity
- Update all import paths to reflect proper domain boundaries
- Fix test imports to use new structure
Architecture improvements:
- rendering → renderer/thumbnail (belongs with other rendering logic)
- ui → management (better name for state management and UI integration)
This ensures proper separation of concerns and domain boundaries.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* [fix] Resolve circular dependency between nodeDefStore and subgraphStore
* [fix] Update browser test imports to use new workflow platform paths
---------
Co-authored-by: Claude <noreply@anthropic.com>
- Updated all imports from '@comfyorg/litegraph' to '@/lib/litegraph/src/'
- Replaced deep dist imports with direct source paths
- Updated CSS import in main.ts
- All imports now use the @ alias consistently
* Revert "Revert "Fix undo / redo filling with empty steps (#1649)" (#1652)"
This reverts commit 7623810166.
* Update test expectations
* Add dirty flag if workflow is not persisted
* Add dirty flag to other UI areas for new workflows
* Remove redundant code
* Fix regression: undo / redo steps lost on refresh
The history is still be cleared, but any changes made by issuing undo / redo comands prior to refresh are not lost.
* Update test expectations
Partially reverts f8cc2c0d67 - adds dirty flags back to unsaved workflows.
---------
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
* Allow future extensions of added schema objects
* Add explicit versioning to zod schemas
* Extend schema 0.4 with new fields in extras
- Allows Reroutes without using schema v1
- Reroute data is retained when using old versions - simply not displayed
* Add Reroute undo/redo support
* Add basic menu
* Add workflows/edit to menu bar
* Add command store
* Fix z-index
* Fix beta menu setting switch
* nit
* Drop to center
* Fix command invocation
* Any keyboard layout for Ctrl + V, Z, Y...
`if` conditioning changed for better support any keyboard layout for shortcuts
* Format
---------
Co-authored-by: Khachatur Avanesian <jailbreakvideo@gmail.com>
* Do not report missing nodes/models warning repeatedly
* Add playwright tests
* cast finalOptions, add comments to interface
* Use old menu in tests to not break top left click methods
* Assert no dialog on undo and on redo separately
* nit
* nit
---------
Co-authored-by: christian-byrne <abolkonsky.rem@gmail.com>
* fix: vite primevue/treenode import error
* refactor: remove useless @ts-ignore and replace with @ts-expect-error
* build(tsconfig): enable incremental to speed up secondary time type check
Fixes an issue where under certain conditions, the ComfyUI custom undo / redo functions would not run when intended to.
When trying to undo an action like deleting several nodes, instead the native browser undo runs - e.g. a textarea gets focus and the last typed text is undone. Clicking outside the textarea and hitting ctrl + z again just keeps doing the same thing.