The help text under the API Key field now links directly to
platform.comfy.org/login so users can generate a key in one click.
Co-authored-by: Kelin <kelin@KelindeMacBook-Air.local>
Add comfy_api_key server config field to enable cloud API nodes
(Kling, Sora, Nano Banana, etc.) when calling ComfyUI via API.
The key is passed through extra_data.api_key_comfy_org in the
/prompt request, following ComfyUI's official API key integration.
Closes#78
Co-authored-by: Kelin <kelin@KelindeMacBook-Air.local>
Commit d7439de left git conflict markers (<<<<<<<<, ========, >>>>>>>>)
inside the production JS bundles, causing JavaScript syntax errors that
prevented React from mounting and triggered the "UI failed to load"
recovery screen.
Co-authored-by: Kelin <kelin@KelindeMacBook-Air.local>
Add `submit` and `status` subcommands to comfyui_client.py so agents in
interactive environments (chat, messaging) can relay generation progress
to users between tool calls instead of blocking silently for 30+ seconds.
- `submit`: validates params, queues prompt, returns run_id immediately
- `status`: checks queue position / running state / completion, downloads
images when done
- Original `--workflow --args` blocking mode is fully preserved
- SKILL.md updated with interactive vs non-blocking guidance
- Synced frontend assets with URL param cleanup fix
Include UpdateBanner, multi-stage update flow (pull → restart → reload),
and system update API integration.
Co-authored-by: Kelin <kelin@KelindeMacBook-Air.local>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Users who clone the repo now have version.json in ui/static/ by default.
Without it the frontend update checker always returned no_local_version
and never detected any updates.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Motivation:
The previous data structure for workflows and schemas lacked cohesion and was difficult to maintain manually. Additionally, a more robust and flexible migration system was needed to transfer skill configurations across different environments.
Implementation:
1. Unified the data hierarchy into a directory-based structure: 'data/<server>/<workflow>/'.
2. Enhanced 'transfer_manager.py' and 'transfer_bundle.py' for environmental-aware configuration migration.
3. Updated frontend JS/CSS and Flask routes to support the new directory-centric asset management.
4. Revamped English and Chinese READMEs to prioritize safe installation and clear configuration workflows.
Motivation:
Allows users to easily migrate or back up their skill configurations, server settings, and workflow mappings across different environments, improving setup mobility.
Implementation:
Developed a bundle system in scripts/shared/transfer_bundle.py and scripts/transfer_manager.py for state serialization. Integrated this into the Flask backend and frontend UI, adding components for export/import actions with pre-check validation. Refactored README files to document the migration path and refined the installation guide.
Motivation:
Users need a way to handle schema mapping changes gracefully when updating workflows, and a more organized UI for workflow-specific actions.
Implementation:
1. Added parameter migration logic in `workflow-mapper.js` to intelligently retain, review, or flag new parameters when updating a workflow JSON.
2. Introduced a 'More Actions' dropdown menu in `workflow-list-view.js` and `mapping-editor-view.js` to consolidate workflow actions.
3. Added visual styling (badges and banners) in CSS to highlight parameter migration states.
Motivation:
As the number of workflows increases, it becomes difficult for users to quickly locate or prioritize frequently used workflows. The current list lacks flexible display order and intuitive custom management experience.
Implementation:
1. Introduced global state `workflowSortOrder` in config.js to track the currently applied sorting mode.
2. Updated core rendering logic in app.js, adding algorithms to sort by status, name, and custom order; implemented `bindWorkflowDragEvents` and `bindWorkflowSortEvents` to handle drag-and-drop and sorting interactions.
3. Modified DOM renderer in workflow-list.js to inject drag handles into cards when in custom sorting mode.
4. Added responsive `.workflow-toolbar` in styles.css to accommodate search and sorting controls, and added comprehensive visual feedback for list drag-and-drop interactions (e.g., .is-dragging, .is-drop-target).
Motivation:
To provide more descriptive feedback when enabling or disabling workflows and servers by including the ID/Name in the toast message.
Implementation:
- Updated toast calls in app.js to use parameterized i18n keys.
- Added corresponding keys to i18n.js mapping.
Motivation:
To provide clearer visual feedback on whether a workflow is enabled or disabled by adding explicit text labels next to the toggle switch.
Implementation:
- Updated workflow-list-view.js to include a status label (On/Off) that updates dynamically.
- Added CSS classes status-on and status-off with distinct semantic coloring.