Data Storage¶
FindRomCover keeps configuration and caches in %LocalAppData%\FindRomCover and writes logs and its MAME database next to the executable. This page lists every file, what it contains, and how long it is kept.
Data folder¶
Default location: %LocalAppData%\FindRomCover (typically C:\Users\<you>\AppData\Local\FindRomCover).
| File | Format | Purpose | Retention |
|---|---|---|---|
Settings.dat |
SQLite | All settings, including encrypted API keys | Until deleted |
QueryHistory.dat |
SQLite | Covers already queried with AI Assist | 180 days, max 100,000 entries |
ai-cache.json |
JSON | Cached AI verdicts | 30 days, max 2,000 entries |
ai-models.json |
JSON | Cached model lists per provider and base URL | 7 days |
settings.dat.legacy |
Encrypted legacy file | Backup of the pre-SQLite settings file | Until deleted |
Application folder¶
These files live next to FindRomCover.exe:
| File | Purpose |
|---|---|
mame.dat |
MAME game database used for descriptions |
app.log |
Rolling application log |
error.log |
Error-level log |
error_user.log |
Simplified error list for user reference |
settings.dat.legacy |
Legacy settings backup after migration (if migrated from the app folder) |
settings.dat.corrupt |
Quarantined settings database that could not be read |
Settings database¶
Settings.dat is a SQLite database with a simple key/value table:
Every setting is stored under its property name, for example BaseTheme, SimilarityThreshold, AiProvider, AiModel. List values such as SupportedExtensions are stored as JSON arrays.
Encryption¶
Sensitive values are encrypted with AES using a machine-derived PBKDF2 key before they are written:
GoogleKeyAiApiKeyBugReportApiKey
Other values are stored in clear text inside the database. The database itself is not encrypted, but secrets in it are.
Migration from older versions¶
When FindRomCover starts and Settings.dat is not a SQLite database, it assumes the old encrypted settings format and:
- decrypts the file;
- applies every setting it contains, including API keys;
- writes the settings to the new SQLite database;
- renames the old file to
settings.dat.legacyas a backup.
The same migration runs for an old settings.xml, which is also moved aside after conversion. If the legacy file cannot be decrypted, it is preserved as a backup and defaults are used instead. If a SQLite database is corrupt, it is renamed to settings.dat.corrupt and defaults are restored.
Query history database¶
QueryHistory.dat uses non-pooled SQLite connections, so the file is never held open:
CREATE TABLE QueryHistory (
TargetPath TEXT PRIMARY KEY COLLATE NOCASE,
QueriedUtc TEXT NOT NULL,
Outcome TEXT NOT NULL
);
Entries older than 180 days are removed, and the table is trimmed to 100,000 rows when it grows beyond that. See Query History.
Caches¶
| Cache | Key | What is stored |
|---|---|---|
ai-cache.json |
Game and candidate set | AI verdicts, including confidence and choice |
ai-models.json |
Provider and base URL | The list of models returned by the provider |
Both caches are best-effort: deleting them only means the next request is slower or costs a little more.
Backing up and restoring¶
Backup
- Close FindRomCover.
- Copy the whole
%LocalAppData%\FindRomCoverfolder.
Restore
- Close FindRomCover.
- Replace the folder with your backup.
- Start FindRomCover.
Caution: Settings encryption is tied to the Windows user and machine. A settings database copied to a different user account or PC may not be decryptable, and API keys would need to be entered again.
Cleaning up¶
| Goal | Action |
|---|---|
| Free space | Delete ai-cache.json and ai-models.json |
| Reset query history | Use Clear query history in AI Settings, or delete QueryHistory.dat |
| Full reset | Delete Settings.dat (also removes stored API keys) |
| Remove legacy backups | Delete settings.dat.legacy and settings.dat.corrupt |