Skip to content

[WebImport] Add Feather Icons Import#969

Merged
egorikftp merged 1 commit intomainfrom
feature/feather-web-import
May 1, 2026
Merged

[WebImport] Add Feather Icons Import#969
egorikftp merged 1 commit intomainfrom
feature/feather-web-import

Conversation

@t-regbs
Copy link
Copy Markdown
Collaborator

@t-regbs t-regbs commented Apr 30, 2026

Screen.Recording.2026-04-30.at.23.23.39.mov

📝 Changelog

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

import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive

class FeatherGlyphMapParser(
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Added this because Feather’s official feather-icons package gives SVGs, but it does not ship a codepoint map. The react-native-vector-icons/feather package does ship on but as json.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 30, 2026

Walkthrough

This pull request adds support for Feather icons across the SDK and IDE plugin. The SDK introduces a new FeatherLogo icon to the colored icon set with corresponding API exports. The IDE plugin extends its web import feature with a new Feather icons provider, including a dedicated import screen, repository layer for fetching icons from jsDelivr CDN, domain use case, dependency injection module, and configuration parsers. Settings are extended to persist Feather icon size preferences. Localization strings are added for UI text, and comprehensive test coverage is included for parsing, URL resolution, and icon configuration building.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

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.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title '[WebImport] Add Feather Icons Import' clearly and specifically describes the main change: adding Feather Icons support to the web import feature.
Description check ✅ Passed The description includes a video asset demonstrating the feature and properly completes the changelog checklist by checking the IntelliJ Plugin changelog, which was verified to be updated in the changeset.
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/feather-web-import

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/feather/domain/FeatherIconConfigBuilderTest.kt (1)

15-18: ⚡ Quick win

Strengthen the ordering check with intentionally unsorted input.
The fixture is already sorted, so the test can still pass even if deterministic sorting regresses. Consider swapping insertion order to make the ordering assertion meaningful.

♻️ Suggested test tweak
         val icons = buildFeatherIcons(
             codepoints = mapOf(
-                "activity" to 61696,
                 "arrow-left" to 61712,
+                "activity" to 61696,
             ),
         )
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherIconConfigBuilderTest.kt`
around lines 15 - 18, The test's codepoints fixture is currently inserted in
sorted order so the ordering assertion cannot detect regressions; update the map
used in FeatherIconConfigBuilderTest (the codepoints map) to insert entries in
an intentionally unsorted order (e.g., add "arrow-left" before "activity") so
the ordering check in the test exercises the deterministic sorting logic in the
builder instead of accidentally passing due to already-sorted input.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In
`@tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherIconConfigBuilderTest.kt`:
- Around line 15-18: The test's codepoints fixture is currently inserted in
sorted order so the ordering assertion cannot detect regressions; update the map
used in FeatherIconConfigBuilderTest (the codepoints map) to insert entries in
an intentionally unsorted order (e.g., add "arrow-left" before "activity") so
the ordering check in the test exercises the deterministic sorting logic in the
builder instead of accidentally passing due to already-sorted input.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8ee257a4-c124-418e-97fa-e4a942981f88

📥 Commits

Reviewing files that changed from the base of the PR and between b922dd0 and 0acda03.

📒 Files selected for processing (18)
  • 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/FeatherLogo.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/standard/feather/FeatherImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/data/FeatherGlyphMapParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/data/FeatherRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/data/FeatherSvgPathResolver.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/di/FeatherModule.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherUseCase.kt
  • tools/idea-plugin/src/main/resources/messages/Valkyrie.properties
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/data/FeatherGlyphMapParserTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/data/FeatherSvgPathResolverTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherIconConfigBuilderTest.kt

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.

Thanks ❤️

@egorikftp egorikftp merged commit 6d6cee2 into main May 1, 2026
5 checks passed
@egorikftp egorikftp deleted the feature/feather-web-import branch May 1, 2026 08:23
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