Skip to content

Add new theme support and improve localization handling#423

Open
dimon222 wants to merge 3 commits into
WFCD:masterfrom
dimon222:feature/more_theme_support
Open

Add new theme support and improve localization handling#423
dimon222 wants to merge 3 commits into
WFCD:masterfrom
dimon222:feature/more_theme_support

Conversation

@dimon222
Copy link
Copy Markdown
Member

@dimon222 dimon222 commented May 2, 2026

Summary by CodeRabbit

  • New Features

    • Added localized clipboard helpers and UI utilities for cleaner copy/paste.
    • Support for four new visual themes.
  • Improvements

    • Broader multi-language support with per-locale ignored-item mappings to reduce false matches.
    • Reward screen now better suppresses ignored/duplicate items and uses cleaned localized names.
  • Chores

    • Updated build schema options and bumped version to 9.8.1.0.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 2, 2026

Warning

Rate limit exceeded

@dimon222 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 14 minutes and 23 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 36eebc2e-e04d-41d6-a7e1-9af3e7cf882d

📥 Commits

Reviewing files that changed from the base of the PR and between 248e7ad and aafd325.

📒 Files selected for processing (6)
  • WFInfo/Data.cs
  • WFInfo/LanguageProcessing/CyrillicLanguageProcessor.cs
  • WFInfo/LanguageProcessing/EnglishLanguageProcessor.cs
  • WFInfo/LanguageProcessing/KoreanLanguageProcessor.cs
  • WFInfo/LanguageProcessing/LanguageProcessor.cs
  • WFInfo/LanguageProcessing/TurkishLanguageProcessor.cs
📝 Walkthrough

Walkthrough

This PR adds per-locale ignored-item maps to LanguageProcessor, exposes clipboard/ignore helpers in Data, uses normalized OCR text for non‑English part matching (with fallbacks to IgnoredItemNames), updates OCR reward/clipboard behavior and themes, and bumps schema, deps, and assembly version.

Changes

Ignored Item Names & Localization + OCR/Data Integration

Layer / File(s) Summary
Language Processor Base
WFInfo/LanguageProcessing/LanguageProcessor.cs
Adds abstract IgnoredItemNames property, a static per-processor-type _ignoredItemNamesCache (ConcurrentDictionary<Type, HashSet<string>>), GetIgnoredItemNamesHashSet() and IsIgnoredItem(string) for cached O(1) checks.
Language Processor Implementations
WFInfo/LanguageProcessing/*LanguageProcessor.cs
Concrete processors (English, Chinese, Cyrillic (Russian/Ukrainian), European: German/Spanish/Portuguese/French/Italian, Japanese, Korean, Polish, Thai, Turkish) now provide _ignoredItemNames dictionaries and override IgnoredItemNames. Russian also updates BlueprintRemovals.
Core Data API & Matching
WFInfo/Data.cs
Non-English GetPartName now uses OCR-normalized normalizedName for length-difference filtering and Levenshtein distance; adds fallback matching against processor.IgnoredItemNames; adds public helpers GetLocalizedNameForClipboard(), RemoveBlueprintTerms(), and IsIgnoredItem().
OCR Integration & Reward Processing
WFInfo/Ocr.cs
Reward suppression now checks Main.dataBase.IsIgnoredItem for both resolved correctName and raw OCR part; clipboard generation uses GetLocalizedNameForClipboard() + RemoveBlueprintTerms(); added four new WFtheme enum members, extended palettes, weights, and ThemeThresholdFilter rules.

Schema & Build Metadata

Layer / File(s) Summary
Weavers Schema
WFInfo/FodyWeavers.xsd
Adds optional ExcludeRuntimes and IncludeRuntimes xs:string elements under Weavers/Costura with documentation.
Project References
WFInfo/WFInfo.csproj
Bumps Costura.Fody 6.0.0 → 6.1.0 and Microsoft.Windows.SDK.Contracts 10.0.28000.1721 → 10.0.28000.1839.
Assembly Version
WFInfo/Properties/AssemblyInfo.cs
AssemblyVersion and AssemblyFileVersion bumped 9.8.0.0 → 9.8.1.0.

Sequence Diagram

sequenceDiagram
    participant OCR as OCR Engine
    participant Data as Data API
    participant LP as LanguageProcessor
    participant Cache as IgnoredNamesCache
    participant UI as UI/Clipboard

    OCR->>Data: IsIgnoredItem(partText)
    Data->>LP: IsIgnoredItem(partText)
    LP->>Cache: Lookup cached HashSet (keys+values)
    Cache-->>LP: true/false
    LP-->>Data: result
    alt ignored
        Data-->>OCR: true
        OCR->>OCR: hideRewardInfo = true
    else not ignored
        OCR->>Data: GetLocalizedNameForClipboard(englishName)
        Data->>LP: lookup localized name in marketItems or processor
        LP-->>Data: localizedName
        Data->>Data: RemoveBlueprintTerms(localizedName)
        Data-->>OCR: cleanedClipboardText
        OCR->>UI: display / copy clipboard
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰 I hop through locales, skip blueprints with care,
Keys and values cached in a soft little lair,
OCR asks Data, Processor nods wise,
Clipboard cleans names as blueprints disguise,
Themes bloom new — nine-eight-one takes the air!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 64.71% 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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add new theme support and improve localization handling' accurately reflects the main changes: new theme enum members (CONQUERA, DEADLOCK, LUNAR_RENEWAL, POM_2) and extensive localization improvements across multiple language processors with IgnoredItemNames mappings.
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 unit tests (beta)
  • Create PR with unit tests

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: 0/1 reviews remaining, refill in 14 minutes and 23 seconds.

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

Copy link
Copy Markdown
Contributor

@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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
WFInfo/Data.cs (1)

1049-1113: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Localized ignored items still cannot resolve here.

This branch only searches marketItems, but ReloadItems() only adds entries whose names contain " Prime" on Line 181-Line 183. That excludes every new ignored-item mapping for localized non-prime rewards (Forma Blueprint, Kuva, Riven Sliver, Ayatan Amber Star, etc.), so this path still returns 9999/null and WFInfo/Ocr.cs drops the reward before the ignore handling runs. Add a fallback against the current processor’s IgnoredItemNames (or nameData) before treating the OCR result as unmatched.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@WFInfo/Data.cs` around lines 1049 - 1113, The localized branch only searches
marketItems (populated by ReloadItems()) which omits many localized ignored-item
mappings, so add a fallback that checks the current language processor's
ignored-name mappings (e.g., processor.IgnoredItemNames or processor.nameData)
using the same normalization and Levenshtein logic before returning unmatched;
specifically, after building marketItemsSnapshot but before concluding this
branch, iterate the processor's IgnoredItemNames/nameData entries, compute
CalculateLevenshteinDistance against normalizedName, apply the same distance
filter (val < storedName.Length * 0.5) and update low, lowest, lowest_unfiltered
and multipleLowest exactly as done for marketItems entries so localized ignored
items (Forma Blueprint, Kuva, Riven Sliver, etc.) are resolved.
🧹 Nitpick comments (2)
WFInfo/LanguageProcessing/EnglishLanguageProcessor.cs (1)

22-35: ⚡ Quick win

IgnoredItemNames allocates a new Dictionary on every property access across all five processors

Every language processor defines IgnoredItemNames as an expression-bodied property (=>), which constructs and returns a fresh Dictionary<string, string> on each access. Even if the base class caches it into a HashSet after the first read, any subsequent direct accesses (e.g., for debugging, reflection, or future base-class changes) re-allocate. Consider backing with a static readonly field instead:

♻️ Suggested pattern (apply to all five processors)
-        public override Dictionary<string, string> IgnoredItemNames => new Dictionary<string, string>
-        {
-            ["Forma Blueprint"] = "Forma Blueprint",
-            ...
-        };
+        private static readonly Dictionary<string, string> _ignoredItemNames = new Dictionary<string, string>
+        {
+            ["Forma Blueprint"] = "Forma Blueprint",
+            ...
+        };
+
+        public override Dictionary<string, string> IgnoredItemNames => _ignoredItemNames;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@WFInfo/LanguageProcessing/EnglishLanguageProcessor.cs` around lines 22 - 35,
IgnoredItemNames currently constructs a new Dictionary<string,string> on each
property access in EnglishLanguageProcessor (and the other language processor
classes); change it to use a shared static readonly backing field (e.g., private
static readonly Dictionary<string,string> _ignoredItemNames) and have the
IgnoredItemNames property return that field instead of creating a new Dictionary
each time; update EnglishLanguageProcessor.IgnoredItemNames (and apply the same
change to the other four processor classes) so the dictionary is allocated once
and reused.
WFInfo/LanguageProcessing/EuropeanLanguageProcessor.cs (1)

86-99: Consider caching IgnoredItemNames as static readonly fields for cleaner initialization.

The base class uses GetOrAdd caching to compute a HashSet once per processor type (line 94–112 of LanguageProcessor.cs), so the dictionary allocation is not a performance bottleneck. However, storing the dictionaries as static readonly fields eliminates even that single allocation per processor type and simplifies the property getter to a single return statement. This is a low-effort, optional refactoring.

Also worth considering: the abstract declaration at LanguageProcessor.cs:86 uses Dictionary<string, string> as the return type. Using IReadOnlyDictionary<string, string> would better communicate that callers should not mutate these collections and would provide additional safety.

Applies to lines: 86–99, 118–131, 164–177, 222–235, 284–297 (all five processors in EuropeanLanguageProcessor.cs)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@WFInfo/LanguageProcessing/EuropeanLanguageProcessor.cs` around lines 86 - 99,
Replace the per-instance dictionary initializations for the IgnoredItemNames
properties in EuropeanLanguageProcessor (all five processor classes) with shared
cached static readonly fields and have the property return that field;
specifically, create private static readonly IReadOnlyDictionary<string,string>
fields (one per processor) initialized once with the current key/value pairs,
then change each override of IgnoredItemNames to return its corresponding static
field (e.g., change the override of IgnoredItemNames in
EuropeanLanguageProcessor to return the newly created static field). Also update
the abstract property declaration in LanguageProcessor
(LanguageProcessor.IgnoredItemNames) from Dictionary<string,string> to
IReadOnlyDictionary<string,string> so the overrides can use the readonly
interface, and ensure the field types and property signatures match that
IReadOnlyDictionary<string,string> type.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@WFInfo/Data.cs`:
- Around line 1206-1237: RemoveBlueprintTerms fails to strip blueprint words
that are adjacent to punctuation (e.g., " - Plan", "Кресленник: Форма") and
doesn't remove English "Blueprint" in non-English locales; update
RemoveBlueprintTerms to iterate processor.BlueprintRemovals and remove
occurrences of each term when preceded or followed by common punctuation or
punctuation+whitespace (handle patterns like "[:\\-–—]\\s*TERM\\s*$",
"\\s*TERM\\s*[:\\-–—]", and boundary-only cases) using case-insensitive
Regex.Replace, also ensure you always strip the English fallback "Blueprint"
regardless of _settings.Locale (in addition to the existing locale-specific
removals and the Russian "^Черт[её]ж:" handling), then Trim() the result; use
the existing LanguageProcessorFactory.GetCurrentProcessor() and
processor.BlueprintRemovals to find terms and keep the final result.Trim()
behavior.

---

Outside diff comments:
In `@WFInfo/Data.cs`:
- Around line 1049-1113: The localized branch only searches marketItems
(populated by ReloadItems()) which omits many localized ignored-item mappings,
so add a fallback that checks the current language processor's ignored-name
mappings (e.g., processor.IgnoredItemNames or processor.nameData) using the same
normalization and Levenshtein logic before returning unmatched; specifically,
after building marketItemsSnapshot but before concluding this branch, iterate
the processor's IgnoredItemNames/nameData entries, compute
CalculateLevenshteinDistance against normalizedName, apply the same distance
filter (val < storedName.Length * 0.5) and update low, lowest, lowest_unfiltered
and multipleLowest exactly as done for marketItems entries so localized ignored
items (Forma Blueprint, Kuva, Riven Sliver, etc.) are resolved.

---

Nitpick comments:
In `@WFInfo/LanguageProcessing/EnglishLanguageProcessor.cs`:
- Around line 22-35: IgnoredItemNames currently constructs a new
Dictionary<string,string> on each property access in EnglishLanguageProcessor
(and the other language processor classes); change it to use a shared static
readonly backing field (e.g., private static readonly Dictionary<string,string>
_ignoredItemNames) and have the IgnoredItemNames property return that field
instead of creating a new Dictionary each time; update
EnglishLanguageProcessor.IgnoredItemNames (and apply the same change to the
other four processor classes) so the dictionary is allocated once and reused.

In `@WFInfo/LanguageProcessing/EuropeanLanguageProcessor.cs`:
- Around line 86-99: Replace the per-instance dictionary initializations for the
IgnoredItemNames properties in EuropeanLanguageProcessor (all five processor
classes) with shared cached static readonly fields and have the property return
that field; specifically, create private static readonly
IReadOnlyDictionary<string,string> fields (one per processor) initialized once
with the current key/value pairs, then change each override of IgnoredItemNames
to return its corresponding static field (e.g., change the override of
IgnoredItemNames in EuropeanLanguageProcessor to return the newly created static
field). Also update the abstract property declaration in LanguageProcessor
(LanguageProcessor.IgnoredItemNames) from Dictionary<string,string> to
IReadOnlyDictionary<string,string> so the overrides can use the readonly
interface, and ensure the field types and property signatures match that
IReadOnlyDictionary<string,string> type.
🪄 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: eec3dfca-4bc0-4298-ba99-786445eae92c

📥 Commits

Reviewing files that changed from the base of the PR and between 46ccb0c and 4c703c2.

📒 Files selected for processing (15)
  • WFInfo/Data.cs
  • WFInfo/FodyWeavers.xsd
  • WFInfo/LanguageProcessing/ChineseLanguageProcessor.cs
  • WFInfo/LanguageProcessing/CyrillicLanguageProcessor.cs
  • WFInfo/LanguageProcessing/EnglishLanguageProcessor.cs
  • WFInfo/LanguageProcessing/EuropeanLanguageProcessor.cs
  • WFInfo/LanguageProcessing/JapaneseLanguageProcessor.cs
  • WFInfo/LanguageProcessing/KoreanLanguageProcessor.cs
  • WFInfo/LanguageProcessing/LanguageProcessor.cs
  • WFInfo/LanguageProcessing/PolishLanguageProcessor.cs
  • WFInfo/LanguageProcessing/ThaiLanguageProcessor.cs
  • WFInfo/LanguageProcessing/TurkishLanguageProcessor.cs
  • WFInfo/Ocr.cs
  • WFInfo/Properties/AssemblyInfo.cs
  • WFInfo/WFInfo.csproj

Comment thread WFInfo/Data.cs
@dimon222 dimon222 changed the title Minor stability improvements Add new theme support and improve localization handling May 2, 2026
@dimon222
Copy link
Copy Markdown
Member Author

dimon222 commented May 2, 2026

@coderabbitai help

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 2, 2026

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

CodeRabbit commands

These commands are invoked using PR/Issue comments.

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai rate limit to show your current review rate limit status.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai evaluate custom pre-merge check --instructions <custom-checks-instructions> --name <custom-checks-title> [--mode <error|warning>] to validate the custom pre-merge checks instructions. Defaults to error when --mode is omitted.
  • @coderabbitai ignore pre-merge checks to override pre-merge checks and get an approval on PR.
  • @coderabbitai run pre-merge checks to run pre-merge checks on the pull request.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve merge conflict to automatically resolve merge conflicts.
  • @coderabbitai autofix to automatically fix issues identified in unresolved review comments.
  • @coderabbitai resolve to resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai generate configuration to create a PR that adds the current resolved configuration as .coderabbit.yaml (or show it if already present).
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit configuration file (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, support, documentation and community

  • Visit our status page to check the current availability of CodeRabbit.
  • Create a ticket on our support page for assistance with any issues or questions.
  • Visit our documentation site for detailed information on how to use CodeRabbit.
  • Join our Discord community to connect with other users and get help from the community.
  • Follow us on X/Twitter for updates and announcements.

@dimon222
Copy link
Copy Markdown
Member Author

dimon222 commented May 2, 2026

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 2, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor

@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: 4

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

Inline comments:
In `@WFInfo/LanguageProcessing/CyrillicLanguageProcessor.cs`:
- Around line 94-109: The three Ukrainian translations for the "Galariak"
entries in the _ignoredItemNames dictionary are incorrect; update the values for
the keys "Galariak Prime Blueprint", "Galariak Prime Blade", and "Galariak Prime
Handle" to use the correct Ukrainian spelling and hyphenation (e.g.
"Ґаларіак-Прайм", "Ґаларіак-Прайм лезо", "Ґаларіак-Прайм рукоять") within the
_ignoredItemNames initializer so IgnoredItemNames returns the corrected strings;
verify against the in-game Ukrainian display if hyphen placement differs and
adjust accordingly.
- Around line 22-37: The ignored dictionary values in _ignoredItemNames are not
normalized before fuzzy comparison, so CalculateLevenshteinDistance (which calls
LevenshteinDistanceWithPreprocessing) compares raw localizedName entries like
"Чертёж: Форма" against already-normalized OCR names and fails; fix by
normalizing dictionary values with the same NormalizeForPatternMatching logic
before comparison—either apply NormalizeForPatternMatching to each value when
building/returning IgnoredItemNames (or store a pre-normalized parallel
dictionary) or pass a non-null normalizer into
LevenshteinDistanceWithPreprocessing inside
CyrillicLanguageProcessor.CalculateLevenshteinDistance so the localizedName is
normalized the same way prior to computing distance.

In `@WFInfo/LanguageProcessing/EnglishLanguageProcessor.cs`:
- Line 28: In EnglishLanguageProcessor.cs update the ignored-words dictionary to
include the missing key "Ayatan Cyan Star" alongside the existing ["Ayatan Amber
Star"] entry so OCR outputs mapping to that exact string are ignored; locate the
ignored list in the EnglishLanguageProcessor class (the dictionary that contains
["Ayatan Amber Star"] = "Ayatan Amber Star") and add an analogous entry for
"Ayatan Cyan Star" to prevent Levenshtein fallback matches.

In `@WFInfo/LanguageProcessing/TurkishLanguageProcessor.cs`:
- Around line 22-37: The ignored-item matching fails when OCR loses Turkish
diacritics because IsIgnoredItem (called in Ocr.cs around the
IsIgnoredItem(part) check) compares raw part text against the Turkish-valued
_ignoredItemNames/IgnoredItemNames dictionary using accent-sensitive comparison;
fix by normalizing both sides: either 1) call
TurkishLanguageProcessor.NormalizeTurkishCharacters (or equivalent normalizer
used in GetPartName) on the incoming part string before calling IsIgnoredItem,
or 2) pre-normalize the dictionary values in TurkishLanguageProcessor (transform
_ignoredItemNames to ASCII-folded keys/values) so IgnoredItemNames returns
normalized entries; update IsIgnoredItem usage to consistently compare
normalized strings (use the same normalization routine as in GetPartName).
🪄 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: 6fb9e9fe-deb2-4b38-9aec-b67e4a8fd004

📥 Commits

Reviewing files that changed from the base of the PR and between 4c703c2 and 248e7ad.

📒 Files selected for processing (11)
  • WFInfo/Data.cs
  • WFInfo/LanguageProcessing/ChineseLanguageProcessor.cs
  • WFInfo/LanguageProcessing/CyrillicLanguageProcessor.cs
  • WFInfo/LanguageProcessing/EnglishLanguageProcessor.cs
  • WFInfo/LanguageProcessing/EuropeanLanguageProcessor.cs
  • WFInfo/LanguageProcessing/JapaneseLanguageProcessor.cs
  • WFInfo/LanguageProcessing/KoreanLanguageProcessor.cs
  • WFInfo/LanguageProcessing/LanguageProcessor.cs
  • WFInfo/LanguageProcessing/PolishLanguageProcessor.cs
  • WFInfo/LanguageProcessing/ThaiLanguageProcessor.cs
  • WFInfo/LanguageProcessing/TurkishLanguageProcessor.cs
✅ Files skipped from review due to trivial changes (1)
  • WFInfo/LanguageProcessing/ThaiLanguageProcessor.cs
🚧 Files skipped from review as they are similar to previous changes (5)
  • WFInfo/LanguageProcessing/LanguageProcessor.cs
  • WFInfo/LanguageProcessing/KoreanLanguageProcessor.cs
  • WFInfo/Data.cs
  • WFInfo/LanguageProcessing/ChineseLanguageProcessor.cs
  • WFInfo/LanguageProcessing/EuropeanLanguageProcessor.cs

Comment thread WFInfo/LanguageProcessing/CyrillicLanguageProcessor.cs
Comment thread WFInfo/LanguageProcessing/CyrillicLanguageProcessor.cs
Comment thread WFInfo/LanguageProcessing/EnglishLanguageProcessor.cs
Comment thread WFInfo/LanguageProcessing/TurkishLanguageProcessor.cs
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.

1 participant