Skip to content

Project Structure

The repository contains the WPF application, the test project, documentation, and CI workflows.

CSharp_FindRomCover/
├── FindRomCover/                     # WPF application (net10.0-windows)
│   ├── ApiProvider/                  # Google Custom Search integration
│   │   └── Google.cs
│   ├── Managers/                     # Settings, settings database, MAME data
│   │   ├── SettingsManager.cs
│   │   ├── SettingsDatabase.cs
│   │   └── MameManager.cs
│   ├── models/                       # Data models and DTOs
│   │   ├── SettingsData.cs
│   │   ├── AiVisionOptions.cs
│   │   ├── AiBatchOutcome.cs
│   │   ├── AiPickResult.cs
│   │   ├── MissingImageItem.cs
│   │   └── ...
│   ├── Services/                     # Business logic and utilities
│   │   ├── Ai/                       # AI vision subsystem
│   │   │   ├── AiAssistService.cs
│   │   │   ├── AiBatchFillService.cs
│   │   │   ├── AiQueryHistory.cs
│   │   │   ├── AiVerdictCache.cs
│   │   │   ├── IVisionModelClient.cs
│   │   │   ├── VisionClientFactory.cs
│   │   │   ├── VisionModelClientBase.cs
│   │   │   ├── OpenAiCompatibleVisionClient.cs
│   │   │   ├── AnthropicVisionClient.cs
│   │   │   ├── GeminiVisionClient.cs
│   │   │   ├── VisionImagePreparer.cs
│   │   │   └── VisionModelCatalog.cs
│   │   ├── ImageProcessor.cs
│   │   ├── ImageFolderWatcher.cs
│   │   ├── SimilarityCalculator.cs
│   │   ├── NgramIndex.cs
│   │   ├── SearchQueryHelper.cs
│   │   ├── UpdateCheckService.cs
│   │   └── ...
│   ├── audio/                        # UI sound assets
│   ├── icon/                         # Application icon
│   ├── images/                       # UI image assets
│   ├── App.xaml / App.xaml.cs        # Startup, DI, themes, global handlers
│   ├── AppConstants.cs               # Constants and provider presets
│   ├── MainWindow.xaml / .xaml.cs    # Main window and orchestration
│   ├── MainWindow.LocalSearch.cs     # Local Files tab logic
│   ├── MainWindow.WebSearch.cs       # Web and Google API tab logic
│   ├── AiSettingsWindow.xaml         # AI configuration dialog
│   ├── AiBatchWindow.xaml            # Batch fill dialog
│   ├── ApiSettingsWindow.xaml        # Google API key dialog
│   ├── SettingsWindow.xaml           # Supported extensions dialog
│   ├── DebugWindow.xaml              # Live log viewer
│   └── AboutWindow.xaml
├── FindRomCover.Tests/               # xUnit test project
│   ├── ApiProvider/
│   ├── Managers/
│   ├── Models/
│   ├── Services/
│   │   └── Ai/
│   ├── AppConstantsTests.cs
│   └── TestBootstrap.cs
├── docs/                             # Documentation site (MkDocs Material)
│   ├── index.md
│   ├── getting-started/
│   ├── user-guide/
│   ├── ai/
│   ├── configuration/
│   ├── reference/
│   ├── development/
│   ├── release-notes.md
│   ├── faq.md
│   ├── troubleshooting.md
│   ├── license.md
│   └── assets/images/
├── scripts/
│   └── Sync-Wiki.ps1                 # Generates the GitHub wiki from docs/
├── .github/workflows/
│   ├── ci.yml                        # Build and test
│   └── docs.yml                      # Publish GitHub Pages and wiki
├── mkdocs.yml                        # Documentation site configuration
├── CSharp_FindRomCover.sln
├── global.json                       # .NET SDK version
├── README.md
├── RecommendedModels.md
├── LICENSE.txt
├── screenshot.png / screenshot2.png
└── WhatsNew.md

Key entry points

File Role
FindRomCover/App.xaml.cs Application startup, DI, theme, exception handling, update check
FindRomCover/MainWindow.xaml.cs Main window orchestration, scanning, tray, themes
FindRomCover/MainWindow.LocalSearch.cs Local similarity search and AI pick
FindRomCover/MainWindow.WebSearch.cs WebView2 tabs and Google API tab
FindRomCover/Managers/SettingsManager.cs Settings, encryption, migration
FindRomCover/Services/Ai/AiAssistService.cs Vision-model picking
FindRomCover/Services/Ai/AiBatchFillService.cs Batch fill orchestration
FindRomCover/ApiProvider/Google.cs Google Custom Search API

Conventions

  • One top-level type per file (enforced by analyzer MA0048).
  • Nullable enabled, implicit usings, C# 14.
  • Analyzers: Meziantou, Roslynator, Microsoft.CodeAnalysis — warnings are treated seriously; the CI build is expected to be warning-free.
  • No comments in code unless they add real value; names and structure should carry the intent.
  • Models are plain classes or records; services are sealed classes with static helpers where stateless.