7.2 KiB
Naming Convention and Bug Fixes - October 2025
Overview
Updated the project to use consistent "ROCm" branding and fixed a critical bug in the Diffusion Loader that was causing crashes when loading models.
Changes Made
1. Fixed Critical Bug in Diffusion Loader
The Problem
# Old code (BROKEN)
model_options = {}
# ... populate model_options ...
model = comfy.sd.load_diffusion_model(
unet_path,
model_options=model_options if model_options else None # ❌ WRONG!
)
When model_options was an empty dict {}, it evaluated to falsy and became None. ComfyUI's load_diffusion_model expects a dict and tries to call .get() on it, resulting in:
AttributeError: 'NoneType' object has no attribute 'get'
The Fix
# New code (CORRECT)
model_options = {}
# ... populate model_options ...
model = comfy.sd.load_diffusion_model(
unet_path,
model_options=model_options # ✅ Always pass dict, even if empty
)
Key insight: Always pass model_options as a dict. ComfyUI expects a dict object, not None.
2. Renamed Node: UNet Loader → Diffusion Loader
Old Name
- Class:
ROCMOptimizedUNetLoader - Display: "ROCM UNet Loader"
- Category: "RocM Ninodes/Loaders"
New Name
- Class:
ROCmDiffusionLoader - Display: "ROCm Diffusion Loader"
- Category: "ROCm Ninodes/Loaders"
Rationale:
- "Diffusion Loader" is more descriptive and user-friendly
- Handles WAN, Flux, and other diffusion models (not just UNet architecture)
- Better matches the actual functionality
3. Standardized "ROCm" Branding
Updated all instances to use correct "ROCm" capitalization:
- ✅ ROCm (capital R, O, C, lowercase m)
- ❌
RocM(was used in some places) - ❌
ROCM(was used in display names)
Files Updated for Branding
Display Names (rocm_nodes/nodes.py):
# Before
"ROCM Checkpoint Loader"
"ROCM VAE Decode"
"ROCM KSampler"
# After
"ROCm Checkpoint Loader"
"ROCm VAE Decode"
"ROCm KSampler"
Category Names (rocm_nodes/core/*.py):
# Before
CATEGORY = "RocM Ninodes/Loaders"
# After
CATEGORY = "ROCm Ninodes/Loaders"
Documentation (.cursorrules, docs):
- All references now use "ROCm"
- Added naming convention guidelines
4. Updated .cursorrules with Naming Standards
Added new "Naming Conventions" section:
## Naming Conventions (CRITICAL)
### ROCm Branding
- **Always use "ROCm"** (capital R, capital O, capital C, lowercase m)
- ❌ Wrong: "RocM", "ROCM", "rocm", "Rocm"
- ✅ Correct: "ROCm"
- Examples:
- Class names: `ROCmDiffusionLoader` (when part of compound name)
- Display names: "ROCm Checkpoint Loader"
- Documentation: "ROCm-optimized nodes"
- Categories: "ROCm Ninodes/Loaders"
Files Modified
Core Code Changes
-
rocm_nodes/core/unet_loader.py- Renamed class:
ROCMOptimizedUNetLoader→ROCmDiffusionLoader - Fixed
model_optionsbug (always pass dict, not None) - Updated category to "ROCm Ninodes/Loaders"
- Updated docstrings
- Renamed class:
-
rocm_nodes/core/__init__.py- Updated import:
ROCmDiffusionLoader - Updated
__all__exports
- Updated import:
-
rocm_nodes/nodes.py- Updated import
- Updated NODE_CLASS_MAPPINGS
- Updated all display names to use "ROCm" (not "ROCM")
-
pyproject.toml- Updated node list:
ROCmDiffusionLoader
- Updated node list:
Documentation Changes
.cursorrules- Changed title to "ROCm Ninodes"
- Added "Naming Conventions" section
- Updated all references to use "ROCm"
Testing
Before Fix
Error: AttributeError: 'NoneType' object has no attribute 'get'
Result: ❌ Crash when loading diffusion models
After Fix
📁 Loading diffusion model: wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors
🖥️ GPU: AMD Radeon(TM) 8060S Graphics
🔧 ROCm backend detected
ROCm version: 7.1.25433-55d0db39ba
⏳ Loading model (may take 2-6 minutes for large models)...
✅ Diffusion model loaded successfully
📊 Memory: XX.XXGB used / 107.87GB total
Result: ✅ Success!
Impact
Bug Fix Impact
- Critical: Fixed crash that prevented loading any diffusion models
- Affected users: Anyone using the ROCm Diffusion Loader node
- Severity: High (node was unusable)
- Status: ✅ Resolved
Naming Impact
- User-facing: More professional and consistent branding
- Developer experience: Clear naming standards prevent confusion
- Documentation: Easier to search and reference
- Breaking changes: Node renamed (users will need to reconnect in workflows)
Migration Guide
For Users
If you were using the old "ROCM UNet Loader" node:
- Node will appear as "ROCm Diffusion Loader" in the node menu
- Reconnect in existing workflows - node ID changed from
ROCMOptimizedUNetLoadertoROCmDiffusionLoader - Functionality is identical - same inputs, same outputs
- Bug is fixed - no more crashes when loading models!
For Developers
If you were importing the node:
# Old
from rocm_nodes.core.unet_loader import ROCMOptimizedUNetLoader
# New
from rocm_nodes.core.unet_loader import ROCmDiffusionLoader
Naming Convention Going Forward
Class Names
# Pattern: ROCm + DescriptiveName
class ROCmDiffusionLoader: # ✅ Correct
class ROCMDiffusionLoader: # ❌ Wrong
class RocMDiffusionLoader: # ❌ Wrong
Display Names
# Pattern: "ROCm " + Descriptive Name
"ROCm Diffusion Loader" # ✅ Correct
"ROCM Diffusion Loader" # ❌ Wrong
"RocM Diffusion Loader" # ❌ Wrong
Categories
# Pattern: "ROCm Ninodes/" + Subcategory
CATEGORY = "ROCm Ninodes/Loaders" # ✅ Correct
CATEGORY = "ROCM Ninodes/Loaders" # ❌ Wrong
CATEGORY = "RocM Ninodes/Loaders" # ❌ Wrong
Documentation
# Pattern: ROCm (as one word, with capital R, O, C, lowercase m)
ROCm-optimized nodes # ✅ Correct
ROCM-optimized nodes # ❌ Wrong
RocM-optimized nodes # ❌ Wrong
Why "ROCm" Specifically?
ROCm stands for "Radeon Open Compute platform" and is AMD's official branding:
- Radeon Open Compute module
- Official AMD documentation uses "ROCm"
- Matches industry standard capitalization
- Distinguishes from "ROCM" (looks like acronym screaming)
- More professional than "RocM" (looks like typo)
Summary
What Was Fixed
✅ Critical bug preventing diffusion model loading
✅ Inconsistent naming across codebase
✅ Missing naming convention guidelines
What Changed
- Node renamed: "UNet Loader" → "Diffusion Loader"
- All branding: "ROCM"/"RocM" → "ROCm"
- Bug fixed:
model_options=None→model_options={}
Result
- ✅ Node works correctly
- ✅ Professional, consistent branding
- ✅ Clear naming standards for future development
Related Documentation
.cursorrules- Naming conventions and project standardsdocs/LOADER_NODES_SUMMARY.md- Overview of all loader nodesdocs/UNET_LOADER_ADDED.md- Original diffusion loader documentation (use new name)
Version: Updated October 29, 2025
Affected Nodes: ROCm Diffusion Loader (formerly UNet Loader)
Status: ✅ Complete