Skip to content

Conversation

@christian-byrne
Copy link
Contributor

@christian-byrne christian-byrne commented Oct 26, 2025

Summary

Migrated help center and release notification components from hardcoded colors to semantic design tokens for automatic light/dark theme support.

Screenshot from 2025-10-25 21-46-11 Screenshot from 2025-10-25 21-46-25 Selection_2203 Selection_2202

Changes

  • What: Replaced hardcoded hex/rgb colors with semantic tokens in HelpCenterMenuContent, WhatsNewPopup, and ReleaseNotificationToast components
  • Design System: Added --interface-menu-surface and --interface-menu-stroke tokens to style.css for consistent menu theming
  • UX: Updated help center menu structure - added "Give Feedback" button, renamed "Help & Feedback" to "Help & Support", switched to Lucide icons (except Discord brand logo), added external-link icons

┆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 Oct 26, 2025
@github-actions
Copy link

github-actions bot commented Oct 26, 2025

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 11/07/2025, 06:17:03 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Oct 26, 2025

🎭 Playwright Test Results

⚠️ Tests passed with flaky tests

⏰ Completed at: 11/07/2025, 06:31:48 AM 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 Oct 26, 2025

Bundle Size Report

Summary

  • Raw size: 12.2 MB baseline 12.2 MB — 🔴 +2.03 kB
  • Gzip: 2.49 MB baseline 2.49 MB — 🔴 +427 B
  • Brotli: 1.96 MB baseline 1.96 MB — 🔴 +424 B
  • Bundles: 58 current • 58 baseline • 13 added / 13 removed

Category Glance
Graph Workspace 🔴 +1.89 kB (795 kB) · App Entry Points 🔴 +138 B (3.25 MB) · Vendor & Third-Party ⚪ 0 B (5.32 MB) · Other ⚪ 0 B (2.55 MB) · Panels & Settings ⚪ 0 B (293 kB) · UI Components ⚪ 0 B (12.6 kB) · + 3 more

Per-category breakdown
App Entry Points — 3.25 MB (baseline 3.25 MB) • 🔴 +138 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-Di5ANYWG.js (new) 2.87 MB 🔴 +2.87 MB 🔴 +594 kB 🔴 +450 kB
assets/index-ClNke0eS.js (removed) 2.87 MB 🟢 -2.87 MB 🟢 -594 kB 🟢 -450 kB
assets/index-gDgWDdXR.js (removed) 382 kB 🟢 -382 kB 🟢 -76.6 kB 🟢 -62.1 kB
assets/index-yjoAaMs2.js (new) 382 kB 🔴 +382 kB 🔴 +76.6 kB 🔴 +62.2 kB
assets/index-CgAcyyB0.js (removed) 1.75 kB 🟢 -1.75 kB 🟢 -572 B 🟢 -483 B
assets/index-D1wqppQR.js (new) 1.75 kB 🔴 +1.75 kB 🔴 +576 B 🔴 +486 B

Status: 3 added / 3 removed

Graph Workspace — 795 kB (baseline 793 kB) • 🔴 +1.89 kB

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-DFZZ2Nf3.js (new) 795 kB 🔴 +795 kB 🔴 +155 kB 🔴 +120 kB
assets/GraphView-DE-9CzoN.js (removed) 793 kB 🟢 -793 kB 🟢 -155 kB 🟢 -119 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-BP9RZOpU.js (removed) 8.18 kB 🟢 -8.18 kB 🟢 -2.48 kB 🟢 -2.17 kB
assets/UserSelectView-CONS04XT.js (new) 8.18 kB 🔴 +8.18 kB 🔴 +2.48 kB 🔴 +2.17 kB

Status: 1 added / 1 removed

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CreditsPanel-Chgiemi-.js (removed) 23 kB 🟢 -23 kB 🟢 -5.48 kB 🟢 -4.79 kB
assets/CreditsPanel-DdntIWk0.js (new) 23 kB 🔴 +23 kB 🔴 +5.48 kB 🔴 +4.79 kB
assets/KeybindingPanel-BTITBv1P.js (removed) 15.3 kB 🟢 -15.3 kB 🟢 -3.78 kB 🟢 -3.33 kB
assets/KeybindingPanel-C2TUB3eM.js (new) 15.3 kB 🔴 +15.3 kB 🔴 +3.78 kB 🔴 +3.33 kB
assets/ExtensionPanel-CEYUIIFo.js (new) 12.1 kB 🔴 +12.1 kB 🔴 +2.84 kB 🔴 +2.5 kB
assets/ExtensionPanel-CHNH7Hj4.js (removed) 12.1 kB 🟢 -12.1 kB 🟢 -2.84 kB 🟢 -2.51 kB
assets/AboutPanel-BnB4jRl3.js (removed) 10.3 kB 🟢 -10.3 kB 🟢 -2.67 kB 🟢 -2.34 kB
assets/AboutPanel-C9KpSmXp.js (new) 10.3 kB 🔴 +10.3 kB 🔴 +2.67 kB 🔴 +2.35 kB
assets/ServerConfigPanel-BqgcKN07.js (removed) 8.23 kB 🟢 -8.23 kB 🟢 -2.17 kB 🟢 -1.92 kB
assets/ServerConfigPanel-RV11XD71.js (new) 8.23 kB 🔴 +8.23 kB 🔴 +2.17 kB 🔴 +1.92 kB
assets/UserPanel-D1R8KdDm.js (new) 7.94 kB 🔴 +7.94 kB 🔴 +2.07 kB 🔴 +1.81 kB
assets/UserPanel-DFX-7tA_.js (removed) 7.94 kB 🟢 -7.94 kB 🟢 -2.07 kB 🟢 -1.81 kB
assets/settings-0O6mq5to.js 24.3 kB 24.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BYaBy7dC.js 20.4 kB 20.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C3vygQN4.js 25.7 kB 25.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CbKYXyH0.js 22.7 kB 22.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CCholIsI.js 25 kB 25 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DFX7vRkK.js 19.8 kB 19.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-INJLrcmT.js 31.3 kB 31.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-iR6BKRXe.js 23.7 kB 23.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-YjQmudNE.js 23.5 kB 23.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 6 added / 6 removed

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-CgZocC2v.js (new) 11.3 kB 🔴 +11.3 kB 🔴 +2.83 kB 🔴 +2.49 kB
assets/ComfyQueueButton-Djl0izZS.js (removed) 11.3 kB 🟢 -11.3 kB 🟢 -2.83 kB 🟢 -2.49 kB
assets/UserAvatar.vue_vue_type_script_setup_true_lang-D2s8tnS2.js 1.26 kB 1.26 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 1 added / 1 removed

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

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/keybindingService-BZ9kWkFH.js (removed) 7.6 kB 🟢 -7.6 kB 🟢 -1.84 kB 🟢 -1.58 kB
assets/keybindingService-DDJowx8-.js (new) 7.6 kB 🔴 +7.6 kB 🔴 +1.84 kB 🔴 +1.59 kB
assets/serverConfigStore-BOo8M-7s.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-Bfb5Ofrh.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-Dvg9y4X0.js 232 kB 232 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-SdQKVoRx.js 92.6 kB 92.6 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-B28vuueQ.js 58.7 kB 58.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-B5DMAz5p.js 76.3 kB 76.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-B9oeRB3u.js 66.2 kB 66.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BfxLm2q9.js 68.4 kB 68.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Bqw7zi8p.js 92.9 kB 92.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CxXcIMmb.js 80.3 kB 80.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DbrkzQIr.js 70.6 kB 70.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DwpdJL5U.js 67.5 kB 67.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-mC3TQk_1.js 59.4 kB 59.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-3I1vPgv4.js 181 kB 181 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-B2huPGKQ.js 190 kB 190 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BWugyUzd.js 215 kB 215 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-bXqu6Stq.js 194 kB 194 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CtB2M3sY.js 229 kB 229 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-D-rCrn-T.js 200 kB 200 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-D38DSnl1.js 179 kB 179 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DAsU52ON.js 192 kB 192 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DnGONaA_.js 196 kB 196 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

@christian-byrne christian-byrne added claude-review Add to trigger a PR code review from Claude Code and removed claude-review Add to trigger a PR code review from Claude Code labels Oct 26, 2025
style="margin-left: auto"
/>
</button>
</nav>
Copy link

Choose a reason for hiding this comment

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

[security] high Priority

Issue: Potential XSS vulnerability with v-html usage
Context: Line 45 uses v-html with formattedContent which could allow arbitrary HTML injection if content is not properly sanitized
Suggestion: Use DOMPurify for sanitization before rendering or use safe markdown rendering approach. Check if renderMarkdownToHtml already includes sanitization

width: 12px;
height: 2px;
background: white;
background: var(--text-primary);
Copy link

Choose a reason for hiding this comment

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

[quality] low Priority

Issue: Inconsistent semantic token usage for text colors
Context: Line uses var(--text-primary) for both background and color properties which seems incorrect
Suggestion: Verify that using text tokens for background colors is intentional and semantically correct

icon: 'icon-[lucide--clipboard-pen]',
label: t('helpCenter.feedback'),
action: () => {
// TODO: Implement feedback dialog action
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: Unimplemented functionality with TODO comment
Context: The feedback button action contains a TODO comment indicating incomplete implementation
Suggestion: Either implement the feedback dialog action or remove the feedback button if it's not ready for this release. Avoid shipping incomplete features with TODO markers

<i
v-if="menuItem.showExternalIcon"
class="icon-[lucide--external-link] text-text-primary"
style="width: 16px; height: 16px; margin-left: auto"
Copy link

Choose a reason for hiding this comment

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

[quality] low Priority

Issue: Inline styles instead of CSS classes
Context: Lines 37 and 42 use inline styles for icon sizing and positioning that could be moved to CSS classes
Suggestion: Create CSS classes like .external-icon and .chevron-icon to replace inline styles for better maintainability and consistency

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Or just use tailwind utility classes.

<span class="menu-label">{{ menuItem.label }}</span>
<i
v-if="menuItem.showExternalIcon"
class="icon-[lucide--external-link] text-text-primary"
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: Redundant CSS class naming - text-text-primary
Context: Line uses text-text-primary which appears to have redundant text- prefix
Suggestion: Use just text-primary or verify if this is the correct class name. The current naming suggests it should be just text-primary


// Verify help center menu appears
const helpMenu = comfyPage.page.locator('.help-center-menu')
await expect(helpMenu).toBeVisible()
Copy link

Choose a reason for hiding this comment

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

[architecture] low Priority

Issue: Test cases do not verify accessibility compliance
Context: New UI components and updated menu structure should include accessibility testing
Suggestion: Add test cases to verify ARIA attributes, keyboard navigation, and screen reader compatibility for the updated help center menu and notification components

Copy link
Contributor Author

Choose a reason for hiding this comment

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

no, this is not necessary.

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: style: update ui and design of system notification components (what's new, new release notification, help center) (#6300)
Impact: 190 additions, 159 deletions across 6 files

Issue Distribution

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

Category Breakdown

  • Architecture: 1 issues
  • Security: 0 issues
  • Performance: 0 issues
  • Code Quality: 5 issues

Key Findings

Architecture & Design

The PR correctly implements semantic design tokens following the established pattern with --interface-menu-surface and --interface-menu-stroke. The token naming follows existing conventions and properly supports light/dark theme switching. However, new design tokens lack documentation which could make them difficult for other developers to understand and use correctly.

Security Considerations

No new security vulnerabilities introduced. The changes are primarily cosmetic, replacing hardcoded colors with semantic tokens. The existing v-html usage in WhatsNewPopup was not modified and appears to use proper sanitization through renderMarkdownToHtml.

Performance Impact

No significant performance regressions identified. The changes replace static color values with CSS custom properties which have negligible performance impact. The computed property structure in HelpCenterMenuContent appears well-organized without circular dependencies.

Integration Points

The changes maintain backward compatibility and follow the existing component architecture. The help center UI improvements (new "Give Feedback" button, icon updates) align with the design system evolution. Tests appropriately cover the functionality changes.

Positive Observations

  • Consistent use of semantic design tokens throughout all components
  • Proper maintenance of existing accessibility attributes (role, aria-label)
  • Comprehensive test coverage for the release notification functionality
  • Clean separation of concerns between styling and logic changes
  • Follows Vue 3 Composition API best practices

Issues to Address

Medium Priority

  1. Missing documentation for new CSS design tokens - add inline comments explaining purpose
  2. Unimplemented functionality - feedback button contains TODO comment, should be implemented or removed
  3. CSS class naming - text-text-primary appears redundant, should be text-primary
  4. Semantic token usage - verify using text tokens for background colors is semantically correct

Low Priority

  1. Inline styles - replace with CSS classes for better maintainability
  2. Accessibility testing - add test cases for ARIA compliance and keyboard navigation

References

Next Steps

  1. Address medium priority issues before merge, especially the unimplemented feedback functionality
  2. Consider adding documentation for design tokens to improve maintainability
  3. Review CSS class naming consistency across components
  4. Consider adding accessibility test coverage for enhanced UI components

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 27, 2025
@christian-byrne christian-byrne marked this pull request as draft November 3, 2025 00:38
- Add proper semantic design tokens (corner-radius, blue surface)
- Convert hardcoded colors to theme-aware tokens in toast and popup
- Implement Figma-compliant styling with image support
- Add comprehensive component tests for behavioral validation
- Update translation strings for improved UI copy
- Remove temporary mock data from WhatsNewPopup component
- Fix i18n mocking issues in both test suites
- Fix TypeScript errors with vi.mocked calls
- Update failing tests to use direct method calls instead of DOM events
- Remove duplicate/outdated test file
- All 22 tests now passing
@christian-byrne christian-byrne force-pushed the style/whatsnew-light-mode branch from d9eef91 to f62a5e4 Compare November 7, 2025 04:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:design-system area:system-notification size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants