Comfy-Org / Comfy-Org/ComfyUI

Media Assets sidebar fails to index/display images when using LLM-based API Prompt Enhancer nodes like Comfyui-Z-Image-Utilities and others

Open
#12,844 1 comment 3 reactions 0 assignees View on GitHub
Potential Bug
Dominant language
Python
Stars
133k
Forks
15.7k
Avg merge
1d 7h
Merged PRs (30d)
158

Description

### Custom Node Testing

- [ ] I have tried disabling custom nodes and the issue persists (see [how to disable custom nodes](https://docs.comfy.org/troubleshooting/custom-node-issues#step-1%3A-test-with-all-custom-nodes-disabled) if you need help)

### Expected Behavior

When a workflow finishes generating an image, the "Media Assets" sidebar should automatically detect the new file in the /output or /temp directory and display it in the "Generated" tab. This should occur regardless of whether the prompt was static text or dynamically generated by an external API call.

### Actual Behavior

The Media Assets sidebar functions normally with standard workflows. However, when using the Z_ImagePromptEnhancer node (which connects to an external LLM via Z_ImageAPIConfig) and other API nodes like OpenRouter one's, the sidebar fails to update.
After the generation completes, the sidebar displays "No generated files found". It appears that the asynchronous nature of the LLM API request or the way the string is passed from the Z_ImagePromptEnhancer to the CLIPTextEncode node is interfering with the frontend's ability to "catch" the completion event for the Asset Manager.

### Steps to Reproduce

Steps to Reproduce
Baseline Test: Run a simple text-to-image workflow (Load Checkpoint -> CLIP Text Encode -> KSampler -> Save Image). Confirm the image appears in Media Assets.
Trigger Bug: Add the Z_ImageAPIConfig and Z_ImagePromptEnhancer nodes to the workflow.
Connect the enhanced_prompt output of the enhancer to the text input of a CLIP Text Encode node.
Queue the prompt.
Observe that while the image generates successfully in the PreviewImage node on the canvas, the Media Assets sidebar remains empty or fails to refresh.

### Debug Logs

```powershell
[START] Security scan
[DONE] Security scan
## ComfyUI-Manager: installing dependencies done.
** ComfyUI startup time: 2026-03-08 22:46:14.951
** Platform: Linux
** Python version: 3.12.12 (main, Oct 10 2025, 08:52:57) [GCC 11.4.0]
** Python executable: /workspace/runpod-slim/ComfyUI/.venv/bin/python
** ComfyUI Path: /workspace/runpod-slim/ComfyUI
** ComfyUI Base Folder Path: /workspace/runpod-slim/ComfyUI
** User directory: /workspace/runpod-slim/ComfyUI/user
** ComfyUI-Manager config path: /workspace/runpod-slim/ComfyUI/user/__manager/config.ini
** Log path: /workspace/runpod-slim/ComfyUI/user/comfyui.log

Prestartup times for custom nodes:
4.5 seconds: /workspace/runpod-slim/ComfyUI/custom_nodes/ComfyUI-Manager

WARNING: You need pytorch with cu130 or higher to use optimized CUDA operations.
Found comfy_kitchen backend eager: {'available': True, 'disabled': False, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'scaled_mm_nvfp4']}
Found comfy_kitchen backend cuda: {'available': True, 'disabled': True, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8']}
Found comfy_kitchen backend triton: {'available': True, 'disabled': True, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8']}
Checkpoint files will always be loaded safely.
Total VRAM 24210 MB, total RAM 515790 MB
pytorch version: 2.6.0+cu124
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce RTX 4090 : cudaMallocAsync
Using async weight offloading with 2 streams
Enabled pinned memory 490000.0
Using pytorch attention
Unsupported Pytorch detected. DynamicVRAM support requires Pytorch version 2.8 or later. Falling back to legacy ModelPatcher. VRAM estimates may be unreliable especially on Windows
Python version: 3.12.12 (main, Oct 10 2025, 08:52:57) [GCC 11.4.0]
ComfyUI version: 0.16.4
ComfyUI frontend version: 1.39.19
[Prompt Server] web root: /workspace/runpod-slim/ComfyUI/.venv/lib/python3.12/site-packages/comfyui_frontend_package/static
------------------------------
[Civicomfy Config Initialized]
- Plugin Root: /workspace/runpod-slim/ComfyUI/custom_nodes/Civicomfy
- Web Directory: /workspace/runpod-slim/ComfyUI/custom_nodes/Civicomfy/web
- ComfyUI Base Path: /workspace/runpod-slim/ComfyUI
------------------------------
[Civicomfy Manager] Warning: ComfyUI folder_paths not available. Path validation/opening might be limited.
[Manager] History file not found (/workspace/runpod-slim/ComfyUI/custom_nodes/Civicomfy/download_history.json). Starting with empty history.
Civitai Download Manager starting (Max Concurrent: 3).
[Manager] Process queue thread started.
[Civicomfy] All server route modules loaded.
[Civicomfy] Core modules imported successfully.
------------------------------
--- Civicomfy Custom Extension Loaded ---
- Serving frontend files from: /workspace/runpod-slim/ComfyUI/custom_nodes/Civicomfy/web (Relative: ./web)
- Download Manager Initialized: Yes
- API Endpoints Registered: Yes
- Frontend files found.
- Look for 'Civicomfy' button in the ComfyUI menu.
------------------------------
[Civicomfy] Verified model type directories:
- checkpoint: /workspace/runpod-slim/ComfyUI/models/checkpoints
- diffusionmodels: /workspace/runpod-slim/ComfyUI/models/unet
- unet: /workspace/runpod-slim/ComfyUI/models/unet
- lora: /workspace/runpod-slim/ComfyUI/models/loras
- locon: /workspace/runpod-slim/ComfyUI/models/loras
- lycoris: /workspace/runpod-slim/ComfyUI/models/loras
- vae: /workspace/runpod-slim/ComfyUI/models/vae
- embedding: /workspace/runpod-slim/ComfyUI/models/embeddings
- hypernetwork: /workspace/runpod-slim/ComfyUI/models/hypernetworks
- controlnet: /workspace/runpod-slim/ComfyUI/models/controlnet
- upscaler: /workspace/runpod-slim/ComfyUI/models/upscale_models
- motionmodule: /workspace/runpod-slim/ComfyUI/models/motion_models
- poses: /workspace/runpod-slim/ComfyUI/models/poses
- wildcards: /workspace/runpod-slim/ComfyUI/models/wildcards
- other: /workspace/runpod-slim/ComfyUI/models/other
### Loading: ComfyUI-Manager (V3.39.2)
[ComfyUI-Manager] network_mode: public
[ComfyUI-Manager] ComfyUI per-queue preview override detected (PR #11261). Manager's preview method feature is disabled. Use ComfyUI's --preview-method CLI option or 'Settings > Execution > Live preview method'.
### ComfyUI Revision: 4872 [a7a6335b] *DETACHED | Released on '2026-03-07'

Import times for custom nodes:
0.0 seconds: /workspace/runpod-slim/ComfyUI/custom_nodes/websocket_image_save.py
0.0 seconds: /workspace/runpod-slim/ComfyUI/custom_nodes/ComfyUI-RunpodDirect
0.1 seconds: /workspace/runpod-slim/ComfyUI/custom_nodes/Civicomfy
0.1 seconds: /workspace/runpod-slim/ComfyUI/custom_nodes/z-image-utilities
0.2 seconds: /workspace/runpod-slim/ComfyUI/custom_nodes/ComfyUI-Manager
0.3 seconds: /workspace/runpod-slim/ComfyUI/custom_nodes/ComfyUI-KJNodes

Context impl SQLiteImpl.
Will assume non-transactional DDL.
[ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/model-list.json
[ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/alter-list.json
Context impl SQLiteImpl.
Will assume non-transactional DDL.
[ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/github-stats.json
Error upgrading database:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/dist-packages/alembic/script/base.py", line 213, in _catch_revision_errors
yield
File "/usr/local/lib/python3.12/dist-packages/alembic/script/base.py", line 421, in _upgrade_revs
for script in reversed(list(revs))
^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/alembic/script/revision.py", line 814, in iterate_revisions
revisions, heads = fn(
^^^
File "/usr/local/lib/python3.12/dist-packages/alembic/script/revision.py", line 1475, in _collect_upgrade_revisions
current_revisions = self.get_revisions(lower)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/alembic/script/revision.py", line 542, in get_revisions
return sum([self.get_revisions(id_elem) for id_elem in id_], ())
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/alembic/script/revision.py", line 565, in get_revisions
return tuple(
^^^^^^
File "/usr/local/lib/python3.12/dist-packages/alembic/script/revision.py", line 566, in
self._revision_for_ident(rev_id, branch_label)
File "/usr/local/lib/python3.12/dist-packages/alembic/script/revision.py", line 637, in _revision_for_ident
raise ResolutionError(
alembic.script.revision.ResolutionError: No such revision or branch '0002_merge_to_asset_references'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/workspace/runpod-slim/ComfyUI/app/database/db.py", line 97, in init_db
command.upgrade(config, target_rev)
File "/usr/local/lib/python3.12/dist-packages/alembic/command.py", line 483, in upgrade
script.run_env()
File "/usr/local/lib/python3.12/dist-packages/alembic/script/base.py", line 545, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/local/lib/python3.12/dist-packages/alembic/util/pyfiles.py", line 116, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/alembic/util/pyfiles.py", line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 999, in exec_module
File "", line 488, in _call_with_frames_removed
File "/workspace/runpod-slim/ComfyUI/alembic_db/env.py", line 64, in
run_migrations_online()
File "/workspace/runpod-slim/ComfyUI/alembic_db/env.py", line 58, in run_migrations_online
context.run_migrations()
File "", line 8, in run_migrations
File "/usr/local/lib/python3.12/dist-packages/alembic/runtime/environment.py", line 969, in run_migrations
self.get_context().run_migrations(**kw)
File "/usr/local/lib/python3.12/dist-packages/alembic/runtime/migration.py", line 614, in run_migrations
for step in self._migrations_fn(heads, self):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/alembic/command.py", line 472, in upgrade
return script._upgrade_revs(revision, rev)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/alembic/script/base.py", line 409, in _upgrade_revs
with self._catch_revision_errors(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/usr/local/lib/python3.12/dist-packages/alembic/script/base.py", line 245, in _catch_revision_errors
raise util.CommandError(resolution) from re
alembic.util.exc.CommandError: Can't locate revision identified by '0002_merge_to_asset_references'
Failed to initialize database. Please ensure you have installed the latest requirements. If the error persists, please report this as in future the database will be required: Can't locate revision identified by '0002_merge_to_asset_references'
[ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/extension-node-map.json
[ComfyUI-Manager] default cache updated: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json
Starting server

To see the GUI go to: http://0.0.0.0:8188
FETCH ComfyRegistry Data: 5/129
FETCH ComfyRegistry Data: 10/129
FETCH ComfyRegistry Data: 15/129
FETCH ComfyRegistry Data: 20/129
FETCH ComfyRegistry Data: 25/129
FETCH ComfyRegistry Data: 30/129
FETCH ComfyRegistry Data: 35/129
FETCH ComfyRegistry Data: 40/129
FETCH ComfyRegistry Data: 45/129
FETCH ComfyRegistry Data: 50/129
FETCH ComfyRegistry Data: 55/129
[DEPRECATION WARNING] Detected import of deprecated legacy API: /extensions/core/groupNode.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version.
[DEPRECATION WARNING] Detected import of deprecated legacy API: /scripts/ui.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version.
fast DB scan failed for models: 'NoneType' object is not callable
Traceback (most recent call last):
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 36, in seed_assets
survivors: set[str] = _fast_db_consistency_pass(r, collect_existing_paths=True, update_missing_tags=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 156, in _fast_db_consistency_pass
with create_session() as sess:
^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/database/db.py", line 112, in create_session
return Session()
^^^^^^^^^
TypeError: 'NoneType' object is not callable
orphan pruning failed: 'NoneType' object is not callable
Traceback (most recent call last):
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 43, in seed_assets
orphans_pruned = _prune_orphaned_assets(roots)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 123, in _prune_orphaned_assets
with create_session() as sess:
^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/database/db.py", line 112, in create_session
return Session()
^^^^^^^^^
TypeError: 'NoneType' object is not callable
Failed to seed assets: 'NoneType' object is not callable
[DEPRECATION WARNING] Detected import of deprecated legacy API: /scripts/ui/components/buttonGroup.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version.
[DEPRECATION WARNING] Detected import of deprecated legacy API: /scripts/ui/components/button.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version.
FETCH ComfyRegistry Data: 60/129
FETCH ComfyRegistry Data: 65/129
FETCH ComfyRegistry Data: 70/129
FETCH ComfyRegistry Data: 75/129
FETCH ComfyRegistry Data: 80/129
FETCH ComfyRegistry Data: 85/129
FETCH ComfyRegistry Data: 90/129
FETCH ComfyRegistry Data: 95/129
FETCH ComfyRegistry Data: 100/129
FETCH ComfyRegistry Data: 105/129
FETCH ComfyRegistry Data: 110/129
FETCH ComfyRegistry Data: 115/129
FETCH ComfyRegistry Data: 120/129
FETCH ComfyRegistry Data: 125/129
FETCH ComfyRegistry Data [DONE]
[ComfyUI-Manager] default cache updated: https://api.comfy.org/nodes
FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json [DONE]
[ComfyUI-Manager] All startup tasks have been completed.
got prompt
Using pytorch attention in VAE
Using pytorch attention in VAE
VAE load device: cuda:0, offload device: cpu, dtype: torch.bfloat16
[Z-Image] INFO: Configured OpenRouter: google/gemini-3-flash-preview
Configured OpenRouter: google/gemini-3-flash-preview
Session not found for clearing: 49
[Z-Image] INFO: Created new session: 49
Created new session: 49
[Z-Image] INFO: OpenRouter Request - Model: google/gemini-3-flash-preview
OpenRouter Request - Model: google/gemini-3-flash-preview
Temperature: 0.7, Max Tokens: 2048, Retries: 3
[Z-Image] INFO: Response received: 1155 characters
Response received: 1155 characters
Tokens - Prompt: 559, Completion: 216
[Z-Image] INFO: Enhancement successful. Length: 1155
Enhancement successful. Length: 1155
CLIP/text encoder model load device: cuda:0, offload device: cpu, current: cpu, dtype: torch.float16
Requested to load AnimaTEModel_
loaded completely; 22599.61 MB usable, 1136.88 MB loaded, full load: True
model weight dtype torch.bfloat16, manual cast: None
model_type FLOW
Requested to load Anima
loaded completely; 21362.61 MB usable, 3988.40 MB loaded, full load: True
100%|██████████| 30/30 [00:10<00:00, 2.84it/s]
Requested to load WanVAE
loaded completely; 13785.40 MB usable, 242.03 MB loaded, full load: True
Prompt executed in 51.85 seconds
got prompt
[Z-Image] INFO: Cleared session: 49
Cleared session: 49
[Z-Image] INFO: OpenRouter Request - Model: google/gemini-3-flash-preview
OpenRouter Request - Model: google/gemini-3-flash-preview
Temperature: 0.7, Max Tokens: 2048, Retries: 3
[Z-Image] INFO: Response received: 962 characters
Response received: 962 characters
Tokens - Prompt: 559, Completion: 178
[Z-Image] INFO: Enhancement successful. Length: 962
Enhancement successful. Length: 962
100%|██████████| 30/30 [00:10<00:00, 2.82it/s]
Prompt executed in 13.17 seconds
fast DB scan failed for models: 'NoneType' object is not callable
Traceback (most recent call last):
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 36, in seed_assets
survivors: set[str] = _fast_db_consistency_pass(r, collect_existing_paths=True, update_missing_tags=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 156, in _fast_db_consistency_pass
with create_session() as sess:
^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/database/db.py", line 112, in create_session
return Session()
^^^^^^^^^
TypeError: 'NoneType' object is not callable
orphan pruning failed: 'NoneType' object is not callable
Traceback (most recent call last):
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 43, in seed_assets
orphans_pruned = _prune_orphaned_assets(roots)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 123, in _prune_orphaned_assets
with create_session() as sess:
^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/database/db.py", line 112, in create_session
return Session()
^^^^^^^^^
TypeError: 'NoneType' object is not callable
Failed to seed assets: 'NoneType' object is not callable
fast DB scan failed for models: 'NoneType' object is not callable
Traceback (most recent call last):
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 36, in seed_assets
survivors: set[str] = _fast_db_consistency_pass(r, collect_existing_paths=True, update_missing_tags=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 156, in _fast_db_consistency_pass
with create_session() as sess:
^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/database/db.py", line 112, in create_session
return Session()
^^^^^^^^^
TypeError: 'NoneType' object is not callable
orphan pruning failed: 'NoneType' object is not callable
Traceback (most recent call last):
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 43, in seed_assets
orphans_pruned = _prune_orphaned_assets(roots)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 123, in _prune_orphaned_assets
with create_session() as sess:
^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/database/db.py", line 112, in create_session
return Session()
^^^^^^^^^
TypeError: 'NoneType' object is not callable
Failed to seed assets: 'NoneType' object is not callable
fast DB scan failed for models: 'NoneType' object is not callable
Traceback (most recent call last):
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 36, in seed_assets
survivors: set[str] = _fast_db_consistency_pass(r, collect_existing_paths=True, update_missing_tags=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 156, in _fast_db_consistency_pass
with create_session() as sess:
^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/database/db.py", line 112, in create_session
return Session()
^^^^^^^^^
TypeError: 'NoneType' object is not callable
orphan pruning failed: 'NoneType' object is not callable
Traceback (most recent call last):
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 43, in seed_assets
orphans_pruned = _prune_orphaned_assets(roots)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/assets/scanner.py", line 123, in _prune_orphaned_assets
with create_session() as sess:
^^^^^^^^^^^^^^^^
File "/workspace/runpod-slim/ComfyUI/app/database/db.py", line 112, in create_session
return Session()
^^^^^^^^^
TypeError: 'NoneType' object is not callable
Failed to seed assets: 'NoneType' object is not callable
got prompt
[Z-Image] INFO: Cleared session: 49
Cleared session: 49
[Z-Image] INFO: OpenRouter Request - Model: google/gemini-3-flash-preview
OpenRouter Request - Model: google/gemini-3-flash-preview
Temperature: 0.7, Max Tokens: 2048, Retries: 3
[Z-Image] INFO: Response received: 1168 characters
Response received: 1168 characters
Tokens - Prompt: 559, Completion: 219
[Z-Image] INFO: Enhancement successful. Length: 1168
Enhancement successful. Length: 1168
100%|██████████| 30/30 [00:10<00:00, 2.94it/s]
Prompt executed in 13.05 seconds
```

### Other

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.