| title | Application Data |
|---|---|
| nav_order | 13 |
Everything the application persists lives under the per-user AppData folder:
%LocalAppData%\CHDStudio\
├── logs\ # Serilog rolling log files
│ └── CHDStudio-YYYYMMDD.log (daily roll, 10 MB size roll, 7 files retained)
└── screenshots\ # F8 captures
└── screenshot_yyyy-MM-dd_HH-mm-ss-fff.png
%LocalAppData% resolves to C:\Users\<user>\AppData\Local on a standard install. F8 screenshots are saved into the screenshots folder beside logs; a screenshots folder next to the executable is used only when AppData cannot be written.
- Configured in
App.axaml.csConfigureSerilog. - File sink:
%LocalAppData%\CHDStudio\logs\CHDStudio-.log, daily rolling (RollingInterval.Day) with a 10 MB size roll (rollOnFileSizeLimit), 7 files retained, minimum level Debug, invariant-culture timestamps{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}. - Debug sink (visible in the Visual Studio debugger output) and the BugReportApiSink (warning+, see Bug Reporting System).
- The in-app LogViewer shows the same messages. Lines are queued (oldest dropped past 2,000) and flushed in batches of at most 200 lines every 100 ms, a single line is capped at 2,000 characters, and the text is capped at 50,000 characters (
MaxLogLength), so a large log cannot freeze the window; the AppData title-bar button opens%LocalAppData%\CHDStudioin Explorer.
- While the application window is focused, F8 captures that window with Avalonia's
RenderTargetBitmapand saves it asscreenshot_yyyy-MM-dd_HH-mm-ss-fff.pngin%LocalAppData%\CHDStudio\screenshots(folder created on demand). - When that folder cannot be written, the capture falls back to a
screenshotsfolder next to the executable. - The saved path is logged in the app ("Screenshot saved: ...").
Temp directories use the system temp folder by default; a folder at a drive root is only created when the system temp path is unsafe to hand to chdman (non-ASCII or near MAX_PATH) or its volume cannot hold the operation:
- Pattern:
CHDStudio_Temp_<guid>under the system temp folder, or{drive}\CHDStudio_Temp\as the fallback (PathUtils.GetBestTempDirectory, see Utilities Reference). - Raw CD images that need a generated cue are staged in
{drive}\CHDStudio_Temp\on the image's own volume, because chdman resolves a cue'sFILEentry relative to the cue's directory. - Used for: archive extraction, CSO decompression, PBP/CCD cue generation, retry-via-temp-copy fallback, and cue work directories.
- Cleanup: temp dirs are deleted after each file is processed; an emptied
CHDStudio_Tempfolder is removed with them, and at startup leftoverCHDStudio_Temp_*folders (plus stale Explorer extractions older than a day) are removed (CleanupLeftoverTempDirectories,MainWindow.axaml.cs).
| Item | Purpose |
|---|---|
CHDStudio.exe |
The application |
chdman.exe / chdman_arm64.exe |
MAME CHD tool (Windows; must stay next to the exe) |
7za.exe / 7za_arm64.exe |
7-Zip fallback extractor (Windows) |
7zz + 7-Zip-License.txt |
Official 7-Zip 26.03 console build (Linux/macOS) |
CHDSharp.dll, Avalonia assemblies, etc. |
Managed dependencies (copy-local); CHDSharp powers the built-in in-process encoder |
CCDSharp.dll, CSOSharp.dll, PBPSharp.dll, MDSSharp.dll, ISZSharp.dll |
In-house libraries |
Legacy leftovers (logs and Resources folders; maxcso.exe, psxpackager.exe) are deleted automatically at startup by LegacyCleanupService (see Services Reference). A Screenshot folder next to the executable is left alone because it is the fallback location for F8 captures.
| Endpoint | Purpose |
|---|---|
https://www.purelogiccode.com/bugreport/api/send-bug-report |
Bug reports (POST, X-API-KEY header) |
https://www.purelogiccode.com/ApplicationStats/stats |
Anonymous usage stats (POST, Bearer token) |
https://api.github.com/repos/purelogiccode/CHDStudio/releases/latest |
Update checks (GET, User-Agent) |
All HTTP traffic goes through the shared AppHttpClient singleton (TLS 1.2/1.3, see Services Reference).