Skip to content

Vendor RatEye into monorepo and update name-scan marker#2

Open
DysektAI wants to merge 9 commits into
masterfrom
feat/vendor-rateye
Open

Vendor RatEye into monorepo and update name-scan marker#2
DysektAI wants to merge 9 commits into
masterfrom
feat/vendor-rateye

Conversation

@DysektAI

@DysektAI DysektAI commented Jul 11, 2026

Copy link
Copy Markdown
Member

User description

Summary

  • Vendor RatEye v4.0.1 sources into RatEye/ and switch RatScanner from the NuGet package to an in-repo ProjectReference, so scan/marker/OCR changes ship with the app in one PR.
  • Align RatEye package versions with the app (RatStash 6.0.0, System.Drawing.Common 8.0.7), disable NuGet packaging on the vendored project, and document the layout in RatEye/VENDOR.md and AGENTS.md.
  • Update the name-scan magnifier marker to the post-patch template (embedded in RatEye resources + RatScanner/Data/icon_search.png override) and set MarkerItemScale to 16/28.

Test plan

  • dotnet restore RatScanner.sln
  • dotnet build RatScanner.sln (Debug) — 0 errors
  • dotnet build RatScanner.sln -c Release — 0 errors
  • Confirm CI Build workflow passes on this PR
  • Smoke-run the app and verify name-scan / icon-scan still work with the new marker template

CodeAnt-AI Description

Ship RatEye with the app and update scan detection to the new marker

What Changed

  • The image-processing library now lives in the repository and is built with RatScanner, so scan and OCR updates ship together with the app
  • Name-scan uses the updated magnifier marker template and the new marker scale, which improves detection with the current in-game UI
  • Inventory and item scanning now include the current item backgrounds, highlighted inventory support, and rotated icon handling
  • App startup now uses the in-repo processing library instead of a separate package

Impact

✅ Fewer broken scans after UI changes
✅ More reliable name and item detection
✅ Cleaner marker matching on current inspection windows

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

DysektAI added 2 commits July 11, 2026 15:34
Bring RatEye v4.0.1 sources under RatEye/ and wire the app via
ProjectReference so scan/marker changes land with the app. Align
RatStash and System.Drawing.Common with the app major versions, disable
package publish on the vendored project, and document the layout.
Convert provided WebP (28x28) to PNG for System.Drawing, embed it in
RatEye resources, set MarkerItemScale to 16/28, and ship a Data copy.
@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 32 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 18a7e193-b3d5-40df-ac5e-258fd35fd4ea

📥 Commits

Reviewing files that changed from the base of the PR and between 6b7ea6b and a5ae45c.

⛔ Files ignored due to path filters (26)
  • RatEye/RatLogo.png is excluded by !**/*.png
  • RatEye/Resources/cell_full_border.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_aux.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_barrel.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_bipod.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_charge.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_flashlight.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_gasblock.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_handguard.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_ironsight.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_launcher.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_lightlaser.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_magazine.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_mount.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_muzzle.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_pistol_grip.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_railcovers.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_receiver.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_sight.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_stock.png is excluded by !**/*.png
  • RatEye/Resources/icon_mod/icon_mod_tactical.png is excluded by !**/*.png
  • RatEye/Resources/icon_search.png is excluded by !**/*.png
  • RatEye/Resources/icon_type/mod_gear.png is excluded by !**/*.png
  • RatEye/Resources/icon_type/mod_generic.png is excluded by !**/*.png
  • RatEye/Resources/icon_type/mod_vital.png is excluded by !**/*.png
  • RatScanner/Data/icon_search.png is excluded by !**/*.png
📒 Files selected for processing (135)
  • .csharpierignore
  • .csharpierrc.json
  • .editorconfig
  • .github/FUNDING.yml
  • .github/ISSUE_TEMPLATE/bug_report.md
  • .github/ISSUE_TEMPLATE/feature_request.md
  • .github/workflows/build.yml
  • .gitignore
  • .globalconfig
  • .vscode/settings.json
  • AGENTS.md
  • CONTRIBUTING.md
  • FAQ.md
  • README.md
  • RatEye/Config/Config.cs
  • RatEye/Config/Path.cs
  • RatEye/Config/Processing.cs
  • RatEye/Config/Processing/Icon.cs
  • RatEye/Config/Processing/Inspection.cs
  • RatEye/Config/Processing/Inventory.cs
  • RatEye/Extensions.cs
  • RatEye/IconManager.cs
  • RatEye/Logger.cs
  • RatEye/Processing/Icon.cs
  • RatEye/Processing/Inspection.cs
  • RatEye/Processing/Inventory.cs
  • RatEye/Processing/MultiInspection.cs
  • RatEye/Properties/InternalsVisibleTo.cs
  • RatEye/Properties/Resources.Designer.cs
  • RatEye/Properties/Resources.resx
  • RatEye/RatEye.csproj
  • RatEye/RatEyeEngine.cs
  • RatEye/VENDOR.md
  • RatEye/Vector2.cs
  • RatScanner.Tests/GitHubUpdateApplyScriptTests.cs
  • RatScanner.Tests/PresentationServicesTests.cs
  • RatScanner.Tests/RatEyeCacheTests.cs
  • RatScanner.Tests/RatScanner.Tests.csproj
  • RatScanner.Tests/TarkovTrackerReliabilityTests.cs
  • RatScanner.sln
  • RatScanner/APIClient.cs
  • RatScanner/ActiveHotkey.cs
  • RatScanner/ApiManager.cs
  • RatScanner/App.xaml
  • RatScanner/App.xaml.cs
  • RatScanner/AuthService.cs
  • RatScanner/Constants.cs
  • RatScanner/Extensions.cs
  • RatScanner/FetchModels/Resource.cs
  • RatScanner/FetchModels/TarkovTracker/Exceptions.cs
  • RatScanner/FetchModels/TarkovTracker/Progress.cs
  • RatScanner/FetchModels/TarkovTracker/ProgressResponse.cs
  • RatScanner/FetchModels/TarkovTracker/TeamProgressResponse.cs
  • RatScanner/FetchModels/TarkovTracker/TokenResponse.cs
  • RatScanner/FetchModels/TarkovTracker/UserProgress.cs
  • RatScanner/GitHubUpdateService.cs
  • RatScanner/Hotkey.cs
  • RatScanner/HotkeyManager.cs
  • RatScanner/ISwitchable.cs
  • RatScanner/InteractiveMapData.cs
  • RatScanner/ItemExtensions.cs
  • RatScanner/LocalizationService.cs
  • RatScanner/Logger.cs
  • RatScanner/MapDataLoader.cs
  • RatScanner/OAuth2.cs
  • RatScanner/PageSwitcher.xaml
  • RatScanner/PageSwitcher.xaml.cs
  • RatScanner/Pages/App/Credits.razor
  • RatScanner/Pages/App/History.razor
  • RatScanner/Pages/App/History.razor.css
  • RatScanner/Pages/App/Index.razor
  • RatScanner/Pages/App/Index.razor.css
  • RatScanner/Pages/App/Settings/SettingsGeneral.razor
  • RatScanner/Pages/App/Settings/SettingsSave.razor
  • RatScanner/Pages/App/Settings/SettingsSave.razor.css
  • RatScanner/Pages/App/Settings/SettingsTracking.razor
  • RatScanner/Pages/Error.cshtml.cs
  • RatScanner/Pages/InteractableOverlay/Components/ItemSearchResult.razor
  • RatScanner/Pages/InteractableOverlay/Components/MapViewer.razor
  • RatScanner/Pages/InteractableOverlay/Components/TaskSearchResult.razor
  • RatScanner/Pages/InteractableOverlay/Index.razor
  • RatScanner/Pages/InteractableOverlay/Services/SearchService.cs
  • RatScanner/Pages/Overlay/Index.razor
  • RatScanner/Presentation/ResultPresentationServices.cs
  • RatScanner/Presentation/ScanResultAdapter.cs
  • RatScanner/Presentation/ScanResultViewModel.cs
  • RatScanner/Presentation/SessionHistoryService.cs
  • RatScanner/Program.cs
  • RatScanner/Properties/AssemblyInfo.cs
  • RatScanner/Properties/InternalsVisibleTo.cs
  • RatScanner/RatConfig.cs
  • RatScanner/RatScanner.csproj
  • RatScanner/RatScannerMain.cs
  • RatScanner/Scan/DefaultItemScan.cs
  • RatScanner/Scan/ItemIconScan.cs
  • RatScanner/Scan/ItemNameScan.cs
  • RatScanner/Scan/ItemQueue.cs
  • RatScanner/Scan/ItemScan.cs
  • RatScanner/Shared/AppLayout.razor
  • RatScanner/Shared/AppLayout.razor.css
  • RatScanner/Shared/Error.razor
  • RatScanner/Shared/MainLayout.razor
  • RatScanner/Shared/MainLayout.razor.css
  • RatScanner/Shared/SettingsLayout.razor
  • RatScanner/Shared/SettingsLayout.razor.css
  • RatScanner/SimpleConfig.cs
  • RatScanner/TarkovDev.gql.schema.json
  • RatScanner/TarkovDevAPI.cs
  • RatScanner/TarkovTrackerDB.cs
  • RatScanner/UserActivityHelper.cs
  • RatScanner/View/BlazorInteractableOverlay.xaml.cs
  • RatScanner/View/BlazorOverlay.xaml.cs
  • RatScanner/View/BlazorUI.xaml.cs
  • RatScanner/View/MinimalMenu.xaml.cs
  • RatScanner/View/ValueConverter.cs
  • RatScanner/View/WindowsServices.cs
  • RatScanner/ViewModel/MenuVM.cs
  • RatScanner/ViewModel/SettingsVM.cs
  • RatScanner/VirtualScreenOffset.cs
  • RatScanner/WindowBlurEffect.cs
  • RatScanner/app.manifest
  • RatScanner/i18n/en.json
  • RatScanner/i18n/es.json
  • RatScanner/i18n/fr.json
  • RatScanner/i18n/pl.json
  • RatScanner/i18n/pt.json
  • RatScanner/i18n/ru.json
  • RatScanner/i18n/zh.json
  • RatScanner/wwwroot/css/theme.css
  • RatScanner/wwwroot/index.html
  • RatScanner/wwwroot/overlay.html
  • dotnet-tools.json
  • publish.bat
  • scripts/bench/measure-idle.ps1
  • scripts/setup-data.ps1
📝 Walkthrough

Walkthrough

Changes

RatEye is vendored as an in-repository project with configurable OCR, template matching, inventory detection, icon caching, and image utilities. RatScanner adds GraphQL schema caching, update delivery, scan-result presentation models, session history, redesigned application pages, theme styling, tests, and updated build/development tooling.

RatEye scanning foundation

Layer / File(s) Summary
RatEye configuration and processing
RatEye/Config/*, RatEye/Processing/*, RatEye/Extensions.cs
Adds configuration objects, image operations, OCR/template matching, inspection, multi-inspection, and inventory parsing.
Icon management and engine lifecycle
RatEye/IconManager.cs, RatEye/RatEyeEngine.cs, RatEye/Properties/*
Loads and caches icons, resolves item correlations, manages resources, and exposes engine factories and disposal.
Project and test integration
RatEye/RatEye.csproj, RatScanner.sln, RatScanner.Tests/*
Adds the RatEye project, test project, solution mappings, and coverage for presentation, queue, API, update, and item-mapping behavior.

RatScanner application flow

Layer / File(s) Summary
Data and runtime services
RatScanner/ApiManager.cs, RatScanner/TarkovDevAPI.cs, RatScanner/GitHubUpdateService.cs, RatScanner/RatConfig.cs
Updates HTTP handling, GraphQL queries and caching, release updates, configuration persistence, and screen-configuration parsing.
Scan orchestration and queueing
RatScanner/RatScannerMain.cs, RatScanner/Scan/*
Adds seed scans, expiration helpers, RatEye replacement, queue-driven overlay refresh, and updated scan metadata.
Presentation and history
RatScanner/Presentation/*, RatScanner/Pages/App/*, RatScanner/ViewModel/MenuVM.cs
Adds result view models, recommendation and freshness formatting, session history, scan-result rendering, and item search.
Application shell and styling
RatScanner/Shared/*, RatScanner/App.xaml*, RatScanner/PageSwitcher.xaml*, RatScanner/wwwroot/*
Redesigns navigation/settings layouts, adds theme resources and responsive styling, enables window resizing, and updates stylesheet loading and keyboard search focus.

Repository support

Layer / File(s) Summary
Formatting, documentation, and publishing
.csharpierignore, .csharpierrc.json, .editorconfig, .vscode/*, AGENTS.md, README.md, FAQ.md, publish.bat, scripts/*
Adds formatting configuration, repository guidance, data setup and benchmark scripts, runtime-data packaging, and documentation updates.
Localization and minor component updates
RatScanner/i18n/*, RatScanner/Pages/InteractableOverlay/*, RatScanner/Pages/Overlay/*
Adds translated UI strings and adjusts overlay rendering, sorting null safety, map interaction wiring, and displayed text.

Estimated code review effort: 5 (Critical) | ~120 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 34.35% 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 clearly matches the main change: vendoring RatEye into the monorepo and updating the name-scan marker.
Description check ✅ Passed The description directly covers vendoring RatEye, aligning dependencies, updating the marker, and the stated test plan.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/vendor-rateye

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

@socket-security

socket-security Bot commented Jul 11, 2026

Copy link
Copy Markdown

@codeant-ai codeant-ai Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files label Jul 11, 2026
@socket-security

socket-security Bot commented Jul 11, 2026

Copy link
Copy Markdown

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: nuget runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: RatEye/RatEye.csprojnuget/graphqlclientgenerator@0.9.31nuget/deepcloner@0.10.4nuget/ratstash@6.0.0nuget/runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl@4.3.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore nuget/runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl@4.3.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: nuget runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: RatEye/RatEye.csprojnuget/graphqlclientgenerator@0.9.31nuget/deepcloner@0.10.4nuget/ratstash@6.0.0nuget/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore nuget/runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl@4.3.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: nuget system.net.http is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: RatEye/RatEye.csprojnuget/deepcloner@0.10.4nuget/ratstash@6.0.0nuget/system.net.http@4.3.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore nuget/system.net.http@4.3.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
High CVE: .NET Core Information Disclosure in nuget system.net.http

CVE: GHSA-7jgj-8wvc-jh57 .NET Core Information Disclosure (HIGH)

Affected versions: < 4.3.4

Patched version: 4.3.4

From: RatEye/RatEye.csprojnuget/deepcloner@0.10.4nuget/ratstash@6.0.0nuget/system.net.http@4.3.0

ℹ Read more on: This package | This alert | What is a CVE?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Remove or replace dependencies that include known high severity CVEs. Consumers can use dependency overrides or npm audit fix --force to remove vulnerable dependencies.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore nuget/system.net.http@4.3.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: nuget system.reflection.emit.ilgeneration is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: RatEye/RatEye.csprojnuget/deepcloner@0.10.4nuget/tesseract@5.2.0nuget/ratstash@6.0.0nuget/system.reflection.emit.ilgeneration@4.7.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore nuget/system.reflection.emit.ilgeneration@4.7.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

Comment thread RatEye/Config/Path.cs Outdated
Comment thread RatEye/Config/Processing/Inspection.cs Outdated
Comment thread RatEye/Processing/Icon.cs Outdated
Comment thread RatEye/Processing/Inventory.cs Outdated
Comment thread RatEye/Processing/Inventory.cs Outdated
Comment thread RatEye/Processing/MultiInspection.cs Outdated
Comment thread RatEye/Processing/MultiInspection.cs Outdated
Comment thread RatEye/Properties/Resources.resx Outdated
Comment thread RatEye/Config/Path.cs Outdated
Comment thread RatEye/Processing/Inspection.cs Outdated
Comment thread RatEye/Processing/Icon.cs Outdated
Comment thread RatEye/Processing/Icon.cs Outdated
Comment thread RatEye/IconManager.cs Outdated
Comment thread RatEye/IconManager.cs Outdated
@kilo-code-bot

kilo-code-bot Bot commented Jul 11, 2026

Copy link
Copy Markdown

Code Review Summary

Status: 6 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 5
SUGGESTION 0
Issue Details (click to expand)

CRITICAL

File Line Issue
RatEye/Config/Path.cs 76 [Carried] TesseractEnviornment is referenced but never defined (compile error) — still present on changed lines

WARNING

File Line Issue
RatEye/Processing/Inspection.cs 310 [Carried] ArgumentException receives a path string as paramName instead of a parameter name
RatEye/Processing/Icon.cs 404 [Carried] ArgumentException receives a path string as paramName instead of a parameter name
RatEye/IconManager.cs 711 [Carried] Empty catch block swallows all exceptions
RatEye/IconManager.cs 726 [Carried] Empty catch block swallows all exceptions
RatScanner/Pages/App/Index.razor 60 OnResultChanged never calls AddRecent because MenuVM forwards property changes with e.PropertyName = null
Files Reviewed (this incremental pass)
  • RatEye/Config/Path.cs - 1 issue
  • RatEye/Processing/Inspection.cs - 1 issue
  • RatEye/Processing/Icon.cs - 1 issue
  • RatEye/IconManager.cs - 2 issues
  • RatScanner/Pages/App/Index.razor - 1 issue

Fix these issues in Kilo Cloud

Previous Review Summaries (2 snapshots, latest commit 3db3563)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 3db3563)

Status: 11 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 2
WARNING 8
SUGGESTION 1
Issue Details (click to expand)

CRITICAL

File Line Issue
RatEye/Config/Path.cs 76 [Carried] TesseractEnviornment is referenced but never defined (compile error) — still present on changed lines
RatScanner/Scan/ItemQueue.cs 31 GetNextExpiration calls .Min() on a filtered sequence that can be empty (queue keeps a DefaultItemScan with DissapearAt = 0), throwing InvalidOperationException and crashing the overlay refresh timer

WARNING

File Line Issue
RatEye/Processing/Inspection.cs 295 [Carried] ArgumentException receives a path string as paramName instead of a parameter name
RatEye/Processing/Icon.cs 394 [Carried] ArgumentException receives a path string as paramName instead of a parameter name
RatEye/IconManager.cs 550 [Carried] Empty catch block swallows all exceptions
RatEye/IconManager.cs 565 [Carried] Empty catch block swallows all exceptions
RatScanner/TarkovDevAPI.cs 639 MapsQuery selects only Id/Name, dropping normalizedName; MapDataLoader.BuildMapIdCache matches on NormalizedName, so every interactive map fails to match
RatScanner/TarkovDevAPI.cs 485 ItemsQuery omits WithBackgroundColor(); RatScannerMain.ToRatStashItem reads item.BackgroundColor and falls back to default color for every item
RatScanner/ViewModel/MenuVM.cs 140 ModelPropertyChanged now forwards only e.PropertyName, so computed properties (LastItem, Updated, PricePerSlot, ...) no longer refresh when ItemScans changes
RatEye/RatEyeEngine.cs 70 Dispose() disposes the shared TesseractEngine/Marker on Config but does not null them; reusing the same Config reuses a disposed object (ObjectDisposedException)

SUGGESTION

File Line Issue
RatEye/Processing/Icon.cs 11 [Carried] Unused using static System.Net.Mime.MediaTypeNames; import
Files Reviewed (this incremental pass)
  • RatEye/Config/Path.cs - 1 issue
  • RatEye/Processing/Inspection.cs - 1 issue
  • RatEye/Processing/Icon.cs - 2 issues
  • RatEye/IconManager.cs - 2 issues
  • RatEye/RatEyeEngine.cs - 1 issue
  • RatScanner/Scan/ItemQueue.cs - 1 issue
  • RatScanner/TarkovDevAPI.cs - 2 issues
  • RatScanner/ViewModel/MenuVM.cs - 1 issue

Note: 5 new findings were added in this incremental review; 6 prior Kilo findings were re-verified as still open on the changed lines (the TesseractEnviornment compile error is still present). Several third-party (CodeAnt-AI) suggestions on RatEye disposal/leak patterns also remain open and unaddressed.

Fix these issues in Kilo Cloud

Previous review (commit 9b68001)

Status: 5 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 3
SUGGESTION 1
Issue Details (click to expand)

CRITICAL

File Line Issue
RatEye/Config/Path.cs 76 Typo TesseractEnviornment should be TesseractEnvironment — will fail to compile

WARNING

File Line Issue
RatEye/Processing/Inspection.cs 284 ArgumentException receives a path string as paramName instead of a parameter name
RatEye/Processing/Icon.cs 358 ArgumentException receives a path string as paramName instead of a parameter name
RatEye/IconManager.cs 488 Empty catch block swallows all exceptions
RatEye/IconManager.cs 500 Empty catch block swallows all exceptions

SUGGESTION

File Line Issue
RatEye/Processing/Icon.cs 11 Unused using static System.Net.Mime.MediaTypeNames; import
Files Reviewed (4 files)
  • RatEye/Config/Path.cs - 1 issue
  • RatEye/Processing/Inspection.cs - 1 issue
  • RatEye/Processing/Icon.cs - 2 issues
  • RatEye/IconManager.cs - 2 issues

Fix these issues in Kilo Cloud


Reviewed by step-3.7-flash · Input: 142.2K · Output: 35.7K · Cached: 2.2M

Comment thread RatEye/Extensions.cs Outdated
Comment thread RatEye/Extensions.cs Outdated
Comment thread RatEye/Logger.cs Outdated
Comment thread RatEye/Processing/Inspection.cs Outdated
Comment thread RatEye/Processing/Inspection.cs Outdated
Comment thread RatEye/Processing/Inspection.cs Outdated
Comment thread .github/workflows/build.yml Fixed
Comment thread RatScanner/Scan/ItemQueue.cs
Comment thread RatScanner/TarkovDevAPI.cs Outdated
Comment thread RatScanner/TarkovDevAPI.cs
Comment thread RatScanner/ViewModel/MenuVM.cs Outdated
Comment thread RatEye/RatEyeEngine.cs
@DysektAI DysektAI self-assigned this Jul 13, 2026

protected override void OnInitialized() { RefreshResult(); if (History.Selected is not null) { _result = History.Selected; History.Selected = null; } if (!MenuVM.LastItemScan.IsSeed) AddRecent(MenuVM.LastItemScan); MenuVM.PropertyChanged += OnResultChanged; }
private void RefreshResult() => _result = MenuVM.LastItemScan.IsSeed ? null : ScanResultAdapter.Map(MenuVM);
private async void OnResultChanged(object? sender, PropertyChangedEventArgs e) => await InvokeAsync(() => { RefreshResult(); if (e.PropertyName == nameof(RatScannerMain.ItemScans) && !MenuVM.LastItemScan.IsSeed) AddRecent(MenuVM.LastItemScan); StateHasChanged(); });

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

WARNING: OnResultChanged never calls AddRecent because MenuVM forwards property changes with e.PropertyName = null

When RatScannerMain.ItemScans changes, MenuVM.ModelPropertyChanged calls OnPropertyChanged() with no argument, which raises PropertyChanged with e.PropertyName = null. OnResultChanged then checks e.PropertyName == nameof(RatScannerMain.ItemScans), which is always false because e.PropertyName is null. As a result, AddRecent is never called and the recent scans list stays empty.


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL This PR changes 1000+ lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants