Skip to content

[Web Import] Add Simple Icons#994

Merged
t-regbs merged 2 commits intomainfrom
feature/simple-icons-web-import-main
May 4, 2026
Merged

[Web Import] Add Simple Icons#994
t-regbs merged 2 commits intomainfrom
feature/simple-icons-web-import-main

Conversation

@t-regbs
Copy link
Copy Markdown
Collaborator

@t-regbs t-regbs commented May 4, 2026

Screen.Recording.2026-05-04.at.19.26.19.mov

📝 Changelog

If this PR introduces user-facing changes, please update the relevant Unreleased section in changelogs:

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 4, 2026

Walkthrough

This change introduces Simple Icons support as a new web import provider to the Valkyrie icon plugin. The implementation adds a SimpleLogo colored icon to the SDK, extends settings infrastructure to support Simple Icons size configuration, and implements a complete SimpleIcons provider stack including metadata parsing, repository-based fetching from jsDelivr CDN, a use case implementation following the StandardIconProvider interface, and navigation integration into the web import UI flow. Tests validate metadata parsing, SVG URL resolution, and export name formatting.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The description includes a video attachment and a changelog checklist, with the IntelliJ Plugin changelog marked as updated, but lacks detail about what was implemented and why. Add a summary of the changes made, such as the new metadata parser, repository, use case implementation, and integration into the web import flow for clarity.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: adding Simple Icons support to the Web Import feature.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/simple-icons-web-import-main

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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
Review rate limit: 7/8 reviews remaining, refill in 7 minutes and 30 seconds.

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

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.

🧹 Nitpick comments (1)
tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/data/SimpleIconsSvgPathResolverTest.kt (1)

9-14: 💤 Low value

Consider adding an edge-case test for the trimStart('/') branch.

The resolveSimpleIconsSvgUrl implementation explicitly trims a leading / from the slug, but no test currently exercises that path.

🧪 Suggested additional test
     `@Test`
     fun `resolve simple icons svg url`() {
         assertThat(resolveSimpleIconsSvgUrl("github", version = "16.18.1")).isEqualTo(
             "https://cdn.jsdelivr.net/npm/simple-icons@16.18.1/icons/github.svg",
         )
     }
+
+    `@Test`
+    fun `resolve simple icons svg url with leading slash in slug`() {
+        assertThat(resolveSimpleIconsSvgUrl("/github", version = "16.18.1")).isEqualTo(
+            "https://cdn.jsdelivr.net/npm/simple-icons@16.18.1/icons/github.svg",
+        )
+    }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/data/SimpleIconsSvgPathResolverTest.kt`
around lines 9 - 14, Add a unit test to exercise the trimStart('/') branch of
resolveSimpleIconsSvgUrl by calling resolveSimpleIconsSvgUrl with a slug that
begins with a leading slash (e.g., "/github") and asserting it returns the same
CDN URL as the existing test (e.g.,
"https://cdn.jsdelivr.net/npm/simple-icons@16.18.1/icons/github.svg"), so the
trim behavior is covered; add this test in SimpleIconsSvgPathResolverTest using
the same version parameter as the existing test.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In
`@tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/data/SimpleIconsSvgPathResolverTest.kt`:
- Around line 9-14: Add a unit test to exercise the trimStart('/') branch of
resolveSimpleIconsSvgUrl by calling resolveSimpleIconsSvgUrl with a slug that
begins with a leading slash (e.g., "/github") and asserting it returns the same
CDN URL as the existing test (e.g.,
"https://cdn.jsdelivr.net/npm/simple-icons@16.18.1/icons/github.svg"), so the
trim behavior is covered; add this test in SimpleIconsSvgPathResolverTest using
the same version parameter as the existing test.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: f6d37ee6-8584-4946-b8f6-7bfc0bc6a175

📥 Commits

Reviewing files that changed from the base of the PR and between 2127bda and 36aca0c.

📒 Files selected for processing (20)
  • sdk/compose/icons/api/icons.api
  • sdk/compose/icons/api/icons.klib.api
  • sdk/compose/icons/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/icons/colored/SimpleLogo.kt
  • tools/idea-plugin/CHANGELOG.md
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/service/PersistentSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/settings/InMemorySettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/WebImportFlow.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/WebImportSelectorScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/StandardTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/SimpleIconsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/data/SimpleIconMetadata.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/data/SimpleIconsMetadataParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/data/SimpleIconsRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/data/SimpleIconsSvgPathResolver.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/di/SimpleIconsModule.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/domain/SimpleIconsUseCase.kt
  • tools/idea-plugin/src/main/resources/messages/Valkyrie.properties
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/data/SimpleIconsMetadataParserTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/data/SimpleIconsSvgPathResolverTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/simpleicons/domain/SimpleIconsExportNameTest.kt

transform = { it.name },
onSelectItem = onSelectCategory,
)
if (hasMultipleCategories) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

👍

Copy link
Copy Markdown
Member

@egorikftp egorikftp left a comment

Choose a reason for hiding this comment

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

Perfect, thanks ❤️

@t-regbs t-regbs merged commit f03783b into main May 4, 2026
5 checks passed
@t-regbs t-regbs deleted the feature/simple-icons-web-import-main branch May 4, 2026 20:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants