- inject CSS at module load with registerExtension guard: font protection
(Bug #1) survives even if the extension API changes or fails
- atomic config writes (tmp + os.replace), resilient GET on corrupt JSON,
400 on invalid POST body, 1MB size cap
- single-source version const feeding the startup log (was stale 'v2.0')
- named GROUP_FILL_ALPHA / GROUP_BORDER_ALPHA constants
- pyproject: drop stale 'dot grid' claim and empty Icon field
- GitHub Action: auto-publish to Comfy Registry on pyproject version bump