Skip to content

Conversation

@Myestery
Copy link
Collaborator

@Myestery Myestery commented Oct 16, 2025

Fixed the AUDIO_RECORD widget to display correctly in both rendering modes:

  • Removed conflicting AUDIO_RECORD registration from ComfyWidgets that was blocking the custom widget implementation in uploadAudio.ts extension
  • Changed canvasOnly flags from true to false on both audioUIWidget and recordWidget to enable Vue nodes rendering
  • Added type override (recordWidget.type = 'audiorecord') after widget creation to enable Vue component lookup while preserving LiteGraph button rendering
  • Removed unused IAudioRecordWidget type definition

The widget now works correctly:

  • LiteGraph mode: Displays as a functional button
  • Vue nodes mode: Displays full recording UI with waveform visualization

Summary

Changes

  • What:
  • Breaking:
  • Dependencies:

Review Focus

Screenshots (if applicable)

Screen.Recording.2025-10-16.at.22.29.59.mov

┆Issue is synchronized with this Notion page by Unito

Fixed the AUDIO_RECORD widget to display correctly in both rendering modes:

- Removed conflicting AUDIO_RECORD registration from ComfyWidgets that was
  blocking the custom widget implementation in uploadAudio.ts extension
- Changed canvasOnly flags from true to false on both audioUIWidget and
  recordWidget to enable Vue nodes rendering
- Added type override (recordWidget.type = 'audiorecord') after widget
  creation to enable Vue component lookup while preserving LiteGraph
  button rendering
- Removed unused IAudioRecordWidget type definition

The widget now works correctly:
- LiteGraph mode: Displays as a functional button
- Vue nodes mode: Displays full recording UI with waveform visualization
@github-actions
Copy link

github-actions bot commented Oct 16, 2025

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 10/18/2025, 09:26:32 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Oct 16, 2025

🎭 Playwright Test Results

Some tests failed

⏰ Completed at: 10/18/2025, 09:41:04 AM UTC

📈 Summary

  • Total Tests: 498
  • Passed: 464 ✅
  • Failed: 1 ❌
  • Flaky: 3 ⚠️
  • Skipped: 30 ⏭️

📊 Test Reports by Browser

  • chromium: View Report • ✅ 455 / ❌ 1 / ⚠️ 3 / ⏭️ 30
  • chromium-2x: View Report • ✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0
  • chromium-0.5x: View Report • ✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0
  • mobile-chrome: View Report • ✅ 6 / ❌ 0 / ⚠️ 0 / ⏭️ 0

🎉 Click on the links above to view detailed test results for each browser configuration.

@Myestery Myestery marked this pull request as ready for review October 16, 2025 21:50
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Oct 16, 2025
Copy link
Contributor

@christian-byrne christian-byrne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about a test that just loads a workflow with a single record audio node and take a screenshot?

@Myestery
Copy link
Collaborator Author

How about a test that just loads a workflow with a single record audio node and take a screenshot?

Good idea
The last issue would've been solved by a test

@christian-byrne christian-byrne added the claude-review Add to trigger a PR code review from Claude Code label Oct 17, 2025

recordWidget.label = t('g.startRecording')
// Override the type for Vue rendering while keeping 'button' for LiteGraph
recordWidget.type = 'audiorecord'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[architecture] medium Priority

Issue: Type override hack using recordWidget.type = 'audiorecord' after widget creation
Context: While this solves the immediate problem, it creates a maintenance concern by bypassing the formal widget type system
Suggestion: Consider registering 'audiorecord' as a proper button widget variant or creating a formal audio record widget type in the widget registry

SELECTBUTTON: transformWidgetConstructorV2ToV1(useSelectButtonWidget()),
TEXTAREA: transformWidgetConstructorV2ToV1(useTextareaWidget()),
AUDIO_RECORD: transformWidgetConstructorV2ToV1(useAudioRecordWidget())
TEXTAREA: transformWidgetConstructorV2ToV1(useTextareaWidget())
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[architecture] high Priority

Issue: Removing formal AUDIO_RECORD widget registration entirely from ComfyWidgets
Context: This creates an inconsistency where AUDIO_RECORD widgets exist but aren't formally registered in the widget system, potentially causing issues with widget discovery and type checking
Suggestion: Either register AUDIO_RECORD as a proper widget type or document why this specific widget type needs to bypass the formal registration system

Copy link

@claude claude bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comprehensive PR Review

This review is generated by Claude. It may not always be accurate, as with human reviewers. If you believe that any of the comments are invalid or incorrect, please state why for each. For others, please implement the changes in one way or another.

Review Summary

PR: [fix] Enable AUDIO_RECORD widget in both LiteGraph and Vue nodes modes (#6094)
Impact: 5 additions, 44 deletions across 5 files

Issue Distribution

  • Critical: 0
  • High: 1
  • Medium: 2
  • Low: 2

Category Breakdown

  • Architecture: 3 issues
  • Security: 0 issues
  • Performance: 0 issues
  • Code Quality: 2 issues

Key Findings

Architecture & Design

The PR takes a pragmatic but architecturally concerning approach to fixing the AUDIO_RECORD widget by:

  1. Type Override Pattern: Uses recordWidget.type = 'audiorecord' after widget creation to enable Vue rendering while preserving LiteGraph functionality
  2. Widget Registration Removal: Completely removes formal AUDIO_RECORD widget registration from the ComfyWidgets system
  3. Schema Cleanup: Removes AUDIORECORD input specifications and related TypeScript types

While this approach solves the immediate rendering issue, it creates technical debt by bypassing the formal widget type system. The solution works but doesn't follow established patterns used by other widget types.

Security Considerations

No security issues were identified in this PR. The changes are limited to widget rendering behavior and don't introduce new attack vectors.

Performance Impact

The changes should have minimal performance impact:

  • Enabling Vue rendering for audioUIWidget and recordWidget may have slight overhead
  • Removing unused schema types and composables reduces bundle size marginally
  • Overall performance impact is negligible

Integration Points

Breaking Changes Potential: Removing AudioRecordInputSpec types could break external code that references these types.

Extension Compatibility: The type override approach means AUDIO_RECORD widgets exist in the system but aren't discoverable through standard widget registration mechanisms.

Positive Observations

  • Targeted Fix: The PR focuses specifically on the reported issue without over-engineering
  • Backward Compatibility: LiteGraph button rendering is preserved while enabling Vue nodes
  • Clean Removals: Unused code and schema definitions are properly removed
  • Functional Solution: The approach successfully enables the widget in both rendering modes

References

Next Steps

  1. Address the high-priority widget registration consistency issue
  2. Consider formalizing the 'audiorecord' widget type or documenting the exception
  3. Add documentation for the canvasOnly changes and type override pattern
  4. Consider providing migration path for removed AudioRecordInputSpec types

This is a comprehensive automated review. For architectural decisions requiring human judgment, please request additional manual review.

@github-actions github-actions bot removed the claude-review Add to trigger a PR code review from Claude Code label Oct 17, 2025
@Myestery Myestery linked an issue Oct 17, 2025 that may be closed by this pull request
@christian-byrne christian-byrne added the New Browser Test Expectations New browser test screenshot should be set by github action label Oct 18, 2025
@github-actions
Copy link

Updating Playwright Expectations

@github-actions github-actions bot removed the New Browser Test Expectations New browser test screenshot should be set by github action label Oct 18, 2025
@github-actions
Copy link

Bundle Size Report

App Entry Points

Main application bundles

File Size Gzip Brotli
assets/index-B-B2rDog.js 2.02 MB 381 kB 296 kB
assets/index-B71O3VU5.js 9.67 MB 1.99 MB 1.43 MB
assets/index-CUJjuQ6S.js
assets/index-DO93jVt2.js
assets/index-PESgPnbc.js 507 B 292 B 249 B

Category Total: 11.7 MB

Core Views

Major application views and screens

File Size Gzip Brotli
assets/GraphView-D0tMHkbu.js
assets/GraphView-Dq_LTyzg.js 713 kB 139 kB 108 kB
assets/UserSelectView-B9rqIC_n.js 7.99 kB 2.4 kB 2.09 kB
assets/UserSelectView-uDoEFRP5.js

Category Total: 721 kB

UI Panels

Settings and configuration panels

File Size Gzip Brotli
assets/AboutPanel-D8vQ63R2.js 10.1 kB 2.58 kB 2.27 kB
assets/AboutPanel-S7bydwdW.js
assets/CreditsPanel-Bv-sDUGP.js 21.9 kB 5.21 kB 4.54 kB
assets/CreditsPanel-C5UKrK9_.js
assets/ExtensionPanel-CwnK5MSi.js 11.9 kB 2.75 kB 2.4 kB
assets/ExtensionPanel-ldqacsug.js
assets/KeybindingPanel-4V8ic8dz.js
assets/KeybindingPanel-Ble0eFt_.js 15.1 kB 3.68 kB 3.23 kB
assets/ServerConfigPanel-af5ZTIo1.js 8.04 kB 2.08 kB 1.83 kB
assets/ServerConfigPanel-B6XF2t-u.js
assets/UserPanel-Daa25x69.js
assets/UserPanel-DTR3SZeI.js 7.76 kB 1.98 kB 1.72 kB

Category Total: 74.8 kB

Services

Business logic and services

File Size Gzip Brotli
assets/keybindingService-BkFmwVT3.js 7.21 kB 1.75 kB 1.5 kB
assets/keybindingService-CqnJUCo-.js
assets/serverConfigStore-C1p-GgYU.js
assets/serverConfigStore-CJw1eZ-6.js 2.79 kB 892 B 779 B

Category Total: 10 kB

Utilities

Helper functions and utilities

File Size Gzip Brotli
assets/mathUtil-CTARWQ-l.js 1.07 kB 525 B 452 B

Category Total: 1.07 kB

Other

Uncategorized bundles

File Size Gzip Brotli
assets/UserAvatar.vue_vue_type_script_setup_true_lang-C9bSkTC5.js 1.12 kB 577 B 494 B

Category Total: 1.12 kB


Overall Total Size: 12.5 MB
Total Bundle Count: 15

@christian-byrne christian-byrne merged commit 9ef6f94 into main Oct 18, 2025
26 of 27 checks passed
@christian-byrne christian-byrne deleted the fix-record-audio branch October 18, 2025 10:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The record audio node is broken

2 participants