Skip to content

feat(telemetry): help center and workflow creation#6505

Merged
christian-byrne merged 4 commits intomainfrom
telemetry/help-center-and-workflow-creation
Nov 1, 2025
Merged

feat(telemetry): help center and workflow creation#6505
christian-byrne merged 4 commits intomainfrom
telemetry/help-center-and-workflow-creation

Conversation

@arjansingh
Copy link
Contributor

@arjansingh arjansingh commented Nov 1, 2025

Summary

For Cloud distribution:

  1. Track help center usage
  2. Track workflow creation

┆Issue is synchronized with this Notion page by Unito

@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Nov 1, 2025
@github-actions
Copy link

github-actions bot commented Nov 1, 2025

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 11/01/2025, 06:48:40 PM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Nov 1, 2025

🎭 Playwright Test Results

⚠️ Tests passed with flaky tests

⏰ Completed at: 11/01/2025, 07:03:16 PM UTC

📈 Summary

  • Total Tests: 498
  • Passed: 464 ✅
  • Failed: 0
  • Flaky: 4 ⚠️
  • Skipped: 30 ⏭️

📊 Test Reports by Browser

  • chromium: View Report • ✅ 455 / ❌ 0 / ⚠️ 4 / ⏭️ 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.

@github-actions
Copy link

github-actions bot commented Nov 1, 2025

Bundle Size Report

Summary

  • Raw size: 12.2 MB baseline 12.2 MB — 🔴 +265 B
  • Gzip: 2.48 MB baseline 2.48 MB — 🔴 +31 B
  • Brotli: 1.95 MB baseline 1.95 MB — 🔴 +4 B
  • Bundles: 57 current • 57 baseline • 12 added / 12 removed

Category Glance
Graph Workspace 🔴 +265 B (724 kB) · Vendor & Third-Party ⚪ 0 B (5.32 MB) · App Entry Points ⚪ 0 B (3.27 MB) · Other ⚪ 0 B (2.55 MB) · Panels & Settings ⚪ 0 B (295 kB) · UI Components ⚪ 0 B (12.3 kB) · + 3 more

Per-category breakdown
App Entry Points — 3.27 MB (baseline 3.27 MB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-B12F6h4u.js (removed) 2.89 MB 🟢 -2.89 MB 🟢 -596 kB 🟢 -450 kB
assets/index-DDO_iDKf.js (new) 2.89 MB 🔴 +2.89 MB 🔴 +596 kB 🔴 +450 kB
assets/index-An67y9aB.js (removed) 381 kB 🟢 -381 kB 🟢 -76.6 kB 🟢 -62.1 kB
assets/index-Tuv_4H-P.js (new) 381 kB 🔴 +381 kB 🔴 +76.6 kB 🔴 +62.1 kB

Status: 2 added / 2 removed

Graph Workspace — 724 kB (baseline 723 kB) • 🔴 +265 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-Uu-v6Jy5.js (new) 724 kB 🔴 +724 kB 🔴 +141 kB 🔴 +109 kB
assets/GraphView-DKPtOtjb.js (removed) 723 kB 🟢 -723 kB 🟢 -141 kB 🟢 -109 kB

Status: 1 added / 1 removed

Views & Navigation — 8.18 kB (baseline 8.18 kB) • ⚪ 0 B

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/UserSelectView-DrU_44fr.js (removed) 8.18 kB 🟢 -8.18 kB 🟢 -2.48 kB 🟢 -2.17 kB
assets/UserSelectView-fivsnyT3.js (new) 8.18 kB 🔴 +8.18 kB 🔴 +2.48 kB 🔴 +2.17 kB

Status: 1 added / 1 removed

Panels & Settings — 295 kB (baseline 295 kB) • ⚪ 0 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CreditsPanel-CkBdCqhq.js (new) 22.8 kB 🔴 +22.8 kB 🔴 +5.4 kB 🔴 +4.71 kB
assets/CreditsPanel-fyYBl6fH.js (removed) 22.8 kB 🟢 -22.8 kB 🟢 -5.4 kB 🟢 -4.72 kB
assets/KeybindingPanel-BXppX0Up.js (new) 15.3 kB 🔴 +15.3 kB 🔴 +3.78 kB 🔴 +3.33 kB
assets/KeybindingPanel-C09U0oyD.js (removed) 15.3 kB 🟢 -15.3 kB 🟢 -3.78 kB 🟢 -3.33 kB
assets/ExtensionPanel-BimPjqlo.js (new) 12.1 kB 🔴 +12.1 kB 🔴 +2.84 kB 🔴 +2.49 kB
assets/ExtensionPanel-Cx80oEIp.js (removed) 12.1 kB 🟢 -12.1 kB 🟢 -2.84 kB 🟢 -2.49 kB
assets/AboutPanel-GAcnaUbe.js (new) 10.3 kB 🔴 +10.3 kB 🔴 +2.68 kB 🔴 +2.34 kB
assets/AboutPanel-vMpjUJLU.js (removed) 10.3 kB 🟢 -10.3 kB 🟢 -2.68 kB 🟢 -2.34 kB
assets/ServerConfigPanel-DIYY0eBT.js (new) 8.23 kB 🔴 +8.23 kB 🔴 +2.18 kB 🔴 +1.91 kB
assets/ServerConfigPanel-HpZFSFIa.js (removed) 8.23 kB 🟢 -8.23 kB 🟢 -2.18 kB 🟢 -1.91 kB
assets/UserPanel-DEDvevub.js (new) 7.94 kB 🔴 +7.94 kB 🔴 +2.07 kB 🔴 +1.81 kB
assets/UserPanel-DkjTx_63.js (removed) 7.94 kB 🟢 -7.94 kB 🟢 -2.08 kB 🟢 -1.81 kB
assets/settings-B-df0dZe.js 20.7 kB 20.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CI6OKvJn.js 22.9 kB 22.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CXGVj_nD.js 24.5 kB 24.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DfQ6dSJj.js 31.6 kB 31.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DJ2QgDzm.js 25.2 kB 25.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DRNLPMG6.js 23.7 kB 23.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DVVycxDc.js 19.9 kB 19.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-G6Dybj1b.js 24.1 kB 24.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-M6_GZccG.js 26 kB 26 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 6 added / 6 removed

UI Components — 12.3 kB (baseline 12.3 kB) • ⚪ 0 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-BaIOPCGt.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -2.78 kB 🟢 -2.45 kB
assets/ComfyQueueButton-Bs13PQJZ.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +2.78 kB 🔴 +2.45 kB
assets/UserAvatar.vue_vue_type_script_setup_true_lang-C9bSkTC5.js 1.12 kB 1.12 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 1 added / 1 removed

Data & Services — 11.4 kB (baseline 11.4 kB) • ⚪ 0 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/keybindingService-bNJwp22y.js (removed) 8.61 kB 🟢 -8.61 kB 🟢 -2.08 kB 🟢 -1.78 kB
assets/keybindingService-DgDyKAbb.js (new) 8.61 kB 🔴 +8.61 kB 🔴 +2.08 kB 🔴 +1.78 kB
assets/serverConfigStore-DT2Lu933.js 2.79 kB 2.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 1 added / 1 removed

Utilities & Hooks — 1.07 kB (baseline 1.07 kB) • ⚪ 0 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/mathUtil-CTARWQ-l.js 1.07 kB 1.07 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Vendor & Third-Party — 5.32 MB (baseline 5.32 MB) • ⚪ 0 B

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-other-TH7eWvUO.js 3.22 MB 3.22 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-PESgPnbc.js 517 B 517 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-JDoAqkQm.js 1.37 MB 1.37 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-B1kYNUlJ.js 232 kB 232 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-PgD4wNjE.js 92.4 kB 92.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-BZLod3g9.js 407 kB 407 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 2.55 MB (baseline 2.55 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/commands-B2KZRBmX.js 15.1 kB 15.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Bw-ckyga.js 13.9 kB 13.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C_NmM85I.js 13.8 kB 13.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CuozCW4W.js 14 kB 14 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DGfVUJCR.js 16.2 kB 16.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-dOJNDogK.js 14.5 kB 14.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DwiE551e.js 14.7 kB 14.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Fw7mvqSy.js 13.1 kB 13.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-FXnO1W4Q.js 13.2 kB 13.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Bgu6_Hvd.js 59.5 kB 59.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Bv0L0qvp.js 93 kB 93 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-C3Doz3n_.js 67.6 kB 67.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-C7eBl607.js 70.7 kB 70.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CHiV9ds2.js 76.4 kB 76.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CIc79Nts.js 68.5 kB 68.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DK5LmuBm.js 58.8 kB 58.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-J1nit7cj.js 66.3 kB 66.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-W97XgvAQ.js 80.4 kB 80.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-8Ef8lY1m.js 196 kB 196 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BdF8EiZl.js 200 kB 200 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Bv9Y8Cvp.js 229 kB 229 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-cMdB_wHv.js 179 kB 179 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CvNWbbtX.js 194 kB 194 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CwDWxzVz.js 215 kB 215 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CyPAVHpA.js 191 kB 191 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-D6QTD6bJ.js 181 kB 181 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DKn6VmRJ.js 192 kB 192 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

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.

LGTM!

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

const showContactSupport = async () => {
if (isCloud) {
Copy link

Choose a reason for hiding this comment

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

[quality] medium Priority

Issue: Inconsistent conditional telemetry tracking pattern
Context: Some functions check isCloud before calling telemetry, others don't, creating inconsistent behavior and potential errors in non-cloud environments
Suggestion: Use consistent pattern - either centralize the cloud check in the telemetry provider itself, or ensure all telemetry calls are consistently wrapped with isCloud checks

category: 'essentials' as const,
function: () => workflowService.loadBlankWorkflow()
function: async () => {
const previousWorkflowHadNodes = app.graph._nodes.length > 0
Copy link

Choose a reason for hiding this comment

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

[quality] medium Priority

Issue: Workflow creation tracking logic may not be accurate in all scenarios
Context: The check for previousWorkflowHadNodes might miss edge cases like workflows with only IO nodes or subgraphs, potentially providing misleading analytics data
Suggestion: Consider more robust workflow state detection, possibly checking for meaningful workflow content beyond just node count

Copy link
Contributor Author

Choose a reason for hiding this comment

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

we can improve this if we see these problems in the data.


trackWorkflowCreated(metadata: WorkflowCreatedMetadata): void {
this.trackEvent(TelemetryEvents.WORKFLOW_CREATED, metadata)
}
Copy link

Choose a reason for hiding this comment

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

[performance] medium Priority

Issue: Complex execution context calculation runs on every telemetry call
Context: The getExecutionContext method performs heavy graph traversal and multiple store lookups on each call, which could impact performance during frequent tracking events
Suggestion: Consider caching execution context or calculating it only when the graph changes, rather than on every telemetry event

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: feat(telemetry): help center and workflow creation (#6505)
Impact: 202 additions, 3 deletions across 7 files

Issue Distribution

  • Critical: 0
  • High: 0
  • Medium: 3
  • Low: 3

Category Breakdown

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

Key Findings

Architecture & Design

The PR follows established telemetry patterns and integrates well with the existing infrastructure. The conditional cloud-only tracking is appropriate for the distribution model. The separation of concerns between tracking methods and metadata types is well-structured.

Security Considerations

No security issues identified. The telemetry system properly handles the cloud/OSS distribution boundaries and doesn't expose sensitive data. The conditional compilation approach ensures OSS builds remain clean.

Performance Impact

Two moderate performance concerns identified:

  1. Complex execution context calculation - The getExecutionContext method performs heavy graph traversal on every telemetry call, which could impact performance during frequent events
  2. Time-based tracking overhead - Help center time tracking calculations on every unmount could create unnecessary computational overhead

Code Quality Issues

Several quality improvements identified:

  1. Inconsistent conditional patterns - Some telemetry calls check isCloud while others don't, creating potential inconsistency
  2. Missing error handling - Telemetry calls aren't wrapped in error handling, potentially causing UI disruption
  3. Workflow state detection - The logic for detecting previous workflow state could be more robust for edge cases
  4. Type completeness - Union types for tracking sources may not cover all future scenarios

Positive Observations

  • Well-structured metadata types with clear documentation
  • Appropriate use of existing patterns following established telemetry conventions
  • Good separation of concerns between different tracking events
  • Proper TypeScript typing throughout the implementation
  • Clear event naming conventions following the app: prefix pattern
  • Consistent parameter structure across similar tracking methods

References

Next Steps

  1. Address medium priority issues for consistency and robustness
  2. Consider performance optimization for execution context calculation
  3. Implement consistent error handling patterns for telemetry calls
  4. Document source tracking patterns to prevent future inconsistencies

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 Nov 1, 2025
christian-byrne
christian-byrne previously approved these changes Nov 1, 2025
@christian-byrne christian-byrne added needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch branch:rh-test labels Nov 1, 2025
- Merge main into telemetry/help-center-and-workflow-creation
- Resolved conflict in CreditsPanel.vue by keeping both telemetry tracking and subscription checking
- Fixed vue-i18n mock in useSubscriptionActions.test.ts to include createI18n export using importOriginal pattern
@christian-byrne
Copy link
Contributor

christian-byrne commented Nov 1, 2025

Accidentally pushed commit from old GH account. Just fixed tests.

@christian-byrne
Copy link
Contributor

I'm just making one change then merging.

@arjansingh
Copy link
Contributor Author

Go for it.

Remove isCloud conditional checks around telemetry tracking calls since
useTelemetry() already returns null in OSS builds. This simplifies the
code while maintaining the same behavior through tree-shaking.

Affected files:
- HelpCenterMenuContent.vue (3 locations)
- ErrorDialogContent.vue (1 location)
- CreditsPanel.vue (1 location)
- ComfyQueueButton.vue (1 location)
- useCoreCommands.ts (6 locations)

Also removed unused isCloud imports from files where it was only used
for telemetry checks.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@christian-byrne christian-byrne merged commit de53526 into main Nov 1, 2025
27 checks passed
@christian-byrne christian-byrne deleted the telemetry/help-center-and-workflow-creation branch November 1, 2025 19:21
@github-actions
Copy link

github-actions bot commented Nov 1, 2025

@arjansingh Backport to rh-test failed: Merge conflicts detected.

Please manually cherry-pick commit de535269eef579f5e9492550f69cdaa77d741b1a to the rh-test branch.

Conflicting files
  • src/components/dialog/content/setting/CreditsPanel.vue

@arjansingh
Copy link
Contributor Author

i'm gonna bring this in with the other cherry pick i am working on.

arjansingh added a commit that referenced this pull request Nov 1, 2025
For Cloud distribution:
1. Track help center usage
2. Track workflow creation

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6505-feat-telemetry-help-center-and-workflow-creation-29e6d73d36508185af8ccbf19d5af9e7)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Christian Byrne <chrbyrne96@gmail.com>
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
Co-authored-by: Claude <noreply@anthropic.com>
arjansingh added a commit that referenced this pull request Nov 1, 2025
For Cloud distribution:
1. Track help center usage
2. Track workflow creation

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6505-feat-telemetry-help-center-and-workflow-creation-29e6d73d36508185af8ccbf19d5af9e7)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Christian Byrne <chrbyrne96@gmail.com>
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
Co-authored-by: Claude <noreply@anthropic.com>
arjansingh added a commit that referenced this pull request Nov 1, 2025
For Cloud distribution:
1. Track help center usage
2. Track workflow creation

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6505-feat-telemetry-help-center-and-workflow-creation-29e6d73d36508185af8ccbf19d5af9e7)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Christian Byrne <chrbyrne96@gmail.com>
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
Co-authored-by: Claude <noreply@anthropic.com>
arjansingh added a commit that referenced this pull request Nov 1, 2025
## Summary

Resolves issues with #6503

## Changes

- Backport #6400
- Fix circular dependency issue
- Backport #6505

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6522-rh-test-Telemetry-Backports-29e6d73d365081258d10c08299bde69b)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Christian Byrne <cbyrne@comfy.org>
Co-authored-by: Christian Byrne <chrbyrne96@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants