Skip to content

feat(ui): Simplify icon set#103

Merged
renefloor merged 6 commits intomainfrom
feature/simplify-icon-set
Apr 16, 2026
Merged

feat(ui): Simplify icon set#103
renefloor merged 6 commits intomainfrom
feature/simplify-icon-set

Conversation

@renefloor
Copy link
Copy Markdown
Collaborator

@renefloor renefloor commented Apr 14, 2026

Most size variants are removed

Submit a pull request

CLA

  • I have signed the Stream CLA (required).
  • The code changes follow best practices
  • Code changes are tested (add some information if not applicable)

Description of the pull request

Having the size in the icon name is a bit confusing, this simplifies the set by only having large variants (and maybe small in the future) when we need them.

Screenshots / Videos

Summary by CodeRabbit

  • Breaking Changes

    • Icon names have been standardized by removing size suffixes across the design system; components and previews now use the simplified icon identifiers (e.g., search, file, bell).
  • Documentation

    • Changelog updated to reflect the icon renaming and its impact on components and previews.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 14, 2026

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (2)
  • packages/stream_core_flutter/assets_source/icons/20/arrow-right.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/unsupported-attachment.svg is excluded by !**/*.svg

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: dd94dac4-c019-420f-8312-834c23aed220

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Replaced size-suffixed icon identifiers (e.g., search20, bell20, checks12) with their base variants (e.g., search, bell, checks) across gallery components, icon asset mappings, and the changelog, adjusting enum options and example usages accordingly.

Changes

Cohort / File(s) Summary
Message Components
apps/design_system_gallery/lib/components/message/stream_message_annotation.dart, apps/design_system_gallery/lib/components/message/stream_message_content.dart, apps/design_system_gallery/lib/components/message/stream_message_metadata.dart, apps/design_system_gallery/lib/components/message/stream_message_text.dart
Replaced size-specific StreamIconData and icons.*20/*12 usages with base icon names in playgrounds, annotations, metadata, and showcases; updated internal enum-to-icon mappings.
Common & Utility Components
apps/design_system_gallery/lib/components/common/stream_text_input.dart, apps/design_system_gallery/lib/primitives/icons.dart
Updated demo and primitive widgets to use base icon tokens (search, xmark, user, checkmark, lock) while preserving sizes where explicitly set.
Other Gallery Components
apps/design_system_gallery/lib/components/badge/stream_image_source_badge.dart, apps/design_system_gallery/lib/components/context_menu/stream_context_menu.dart
Renamed _LeadingOption enum values and switched playground/action menu icon references from size-suffixed to base icon names across examples and inline actions.
Assets & Documentation
packages/stream_core_flutter/assets_source/icon_log.g.txt, packages/stream_core_flutter/CHANGELOG.md
Rewrote icon log to remove per-size variants and map consolidated icon identifiers to new codepoints; added a CHANGELOG entry noting the removal of size suffixes (breaking-change notice).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped through code and found a tweak,
No more "20" tags upon the beak,
Icons now wear names so lean,
A tidy gallery, crisp and clean,
I nibble bugs and then I peek—hooray! ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers the key change (removing size variants) and rationale, but is missing required sections: Linear ticket reference, Github issue reference, and Screenshots/Videos section as specified in the template. Add Linear ticket (FLU-XXXX), Github Issue reference, and complete or remove the Screenshots/Videos section to fully match the template structure.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(ui): Simplify icon set' directly and concisely describes the main change—removing size suffixes from icon names to simplify the icon naming scheme.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/simplify-icon-set

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Most size variants are removed
@renefloor renefloor force-pushed the feature/simplify-icon-set branch from 2373686 to 60f8906 Compare April 14, 2026 10:52
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 14, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 25.86%. Comparing base (a08e782) to head (8a1c528).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #103      +/-   ##
==========================================
+ Coverage   24.68%   25.86%   +1.18%     
==========================================
  Files         152      152              
  Lines        5639     5381     -258     
==========================================
  Hits         1392     1392              
+ Misses       4247     3989     -258     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@renefloor renefloor changed the title Simplify icon set feat(ui): Simplify icon set Apr 16, 2026
@renefloor renefloor marked this pull request as ready for review April 16, 2026 09:22
@renefloor renefloor requested a review from a team as a code owner April 16, 2026 09:22
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/stream_core_flutter/CHANGELOG.md`:
- Line 4: Update the changelog entry to clarify that Stream Icons had size
suffixes removed from icon names except for the new xmarkSmall icon; explicitly
state that most icons no longer include size suffixes (e.g., remove
"Small"/"Large" suffixes), but the new xmarkSmall remains available so consumers
should rename usages accordingly (replace old names with the new icon names and
map any xmark variants to xmarkSmall where intended). Mention "Stream Icons" and
"xmarkSmall" by name for clear migration guidance.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 110db913-eb1d-49cb-aa9d-1c409e6f3465

📥 Commits

Reviewing files that changed from the base of the PR and between a08e782 and f3da8a5.

⛔ Files ignored due to path filters (290)
  • packages/stream_core_flutter/assets_source/icons/12/account-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/archive-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/arrow-down-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/arrow-down-circle-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/arrow-left-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/arrow-right-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/arrow-up-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/arrow-up-right-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/attachment-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/audio-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/bell-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/bell-off-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/bolt-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/camera-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/checkmark-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/checks-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/chevron-down-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/chevron-left-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/chevron-right-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/chevron-up-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/clock-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/command-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/copy-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/delete-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/download-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/edit-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/emoji-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/emoji-add-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/exclamation-circle-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/exclamation-circle-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/exclamation-mark-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/exclamation-triangle-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/export-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/eye-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/file-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/flag-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/folder-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/gallery-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/giphy-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/image-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/imgur-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/info-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/leave-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/link-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/loading-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/location-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/lock-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/mention-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/message-bubble-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/message-bubble-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/message-bubbles-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/minus-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/minus-circle-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/more-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/mute-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/no-sign-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/notification-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/pause-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/pin-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/play-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/plus-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/poll-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/quote-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/refresh-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/reorder-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/reply-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/retry-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/save-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/search-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/send-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/share-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/sidebar-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/stop-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/thread-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/thread-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/translate-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/trophy-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/unlock-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/unpin-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/unsave-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/upload-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/user-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/user-add-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/user-check-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/user-remove-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/users-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/video-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/video-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/voice-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/voice-fill-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/x-circle-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/12/xmark-12.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/account-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/archive-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/arrow-down-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/arrow-down-circle-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/arrow-left-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/arrow-right-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/arrow-up-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/arrow-up-right-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/attachment-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/audio-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/bell-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/bell-off-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/bolt-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/camera-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/checkmark-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/checks-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/chevron-down-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/chevron-left-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/chevron-right-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/chevron-up-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/clock-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/command-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/copy-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/delete-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/download-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/edit-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/emoji-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/emoji-add-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/exclamation-circle-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/exclamation-circle-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/exclamation-mark-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/exclamation-triangle-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/export-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/eye-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/file-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/flag-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/folder-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/gallery-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/giphy-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/image-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/imgur-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/info-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/leave-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/link-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/loading-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/location-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/lock-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/mention-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/message-bubble-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/message-bubble-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/message-bubbles-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/minus-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/minus-circle-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/more-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/mute-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/no-sign-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/notification-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/pause-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/pin-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/play-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/plus-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/poll-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/quote-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/refresh-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/reorder-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/reply-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/retry-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/save-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/search-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/send-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/share-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/sidebar-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/stop-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/thread-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/thread-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/translate-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/trophy-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/unlock-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/unpin-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/unsave-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/upload-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/user-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/user-add-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/user-check-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/user-remove-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/users-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/video-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/video-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/voice-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/voice-fill-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/x-circle-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/xmark-16.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/16/xmark-small.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/account.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/archive.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/arrow-down-circle.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/arrow-down.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/arrow-left.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/arrow-right.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/arrow-up-right.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/arrow-up.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/attachment.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/audio.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/bell-off.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/bell.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/bolt.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/camera.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/checkmark.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/checks.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/chevron-down.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/chevron-left.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/chevron-right.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/chevron-up.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/clock.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/command.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/copy.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/delete.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/download.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/edit.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/emoji-add.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/emoji.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/exclamation-circle-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/exclamation-circle.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/exclamation-mark-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/exclamation-triangle-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/export.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/eye-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/file.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/flag.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/folder.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/gallery.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/giphy.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/image.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/imgur.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/info.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/leave.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/link.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/loading.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/location.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/lock.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/mention.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/message-bubble-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/message-bubble.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/message-bubbles.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/minus-circle.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/minus.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/more.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/mute.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/no-sign.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/notification.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/pause-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/pin.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/play-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/plus.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/poll.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/quote.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/refresh.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/reorder.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/reply.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/retry.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/save.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/search.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/send.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/share.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/sidebar.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/stop-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/thread-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/thread.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/translate.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/trophy.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/unlock.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/unpin.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/unsave.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/upload.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/user-add.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/user-check.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/user-remove.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/user.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/users.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/video-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/video.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/voice-fill.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/voice.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/x-circle.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/20/xmark.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/account-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/archive-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/arrow-down-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/arrow-down-circle-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/arrow-left-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/arrow-right-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/arrow-up-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/arrow-up-right-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/attachment-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/audio-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/bell-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/bell-off-32.svg is excluded by !**/*.svg
  • packages/stream_core_flutter/assets_source/icons/32/bolt-32.svg is excluded by !**/*.svg
📒 Files selected for processing (10)
  • apps/design_system_gallery/lib/components/badge/stream_image_source_badge.dart
  • apps/design_system_gallery/lib/components/common/stream_text_input.dart
  • apps/design_system_gallery/lib/components/context_menu/stream_context_menu.dart
  • apps/design_system_gallery/lib/components/message/stream_message_annotation.dart
  • apps/design_system_gallery/lib/components/message/stream_message_content.dart
  • apps/design_system_gallery/lib/components/message/stream_message_metadata.dart
  • apps/design_system_gallery/lib/components/message/stream_message_text.dart
  • apps/design_system_gallery/lib/primitives/icons.dart
  • packages/stream_core_flutter/CHANGELOG.md
  • packages/stream_core_flutter/assets_source/icon_log.g.txt

Comment thread packages/stream_core_flutter/CHANGELOG.md
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/stream_core_flutter/assets_source/icon_log.g.txt`:
- Around line 2-99: The icon log currently maps almost every glyph (e.g.,
message-bubbles, pin, edit, unsupported-attachment) to the same codePoint
2026414; regenerate the icon mapping from the real glyph list so each distinct
glyph gets a unique, stable codePoint (preserve existing mappings where valid),
update packages/stream_core_flutter/assets_source/icon_log.g.txt with the
regenerated mappings, and validate there are no duplicate codePoints (run the
font-generation or mapping script you use and a quick scan/assert to fail on
duplicates before committing).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f8f9333a-cd68-4af2-9887-21ed48accb9b

📥 Commits

Reviewing files that changed from the base of the PR and between f3da8a5 and f3005bb.

⛔ Files ignored due to path filters (1)
  • packages/stream_core_flutter/assets_source/icons/20/unsupported-attachment.svg is excluded by !**/*.svg
📒 Files selected for processing (1)
  • packages/stream_core_flutter/assets_source/icon_log.g.txt

Comment thread packages/stream_core_flutter/assets_source/icon_log.g.txt
@renefloor renefloor merged commit 4254624 into main Apr 16, 2026
9 checks passed
@renefloor renefloor deleted the feature/simplify-icon-set branch April 16, 2026 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants