I built PCM CDB Editor as a Windows desktop editor for Pro Cycling Manager CDB save files. The app works on an isolated copy, provides schema-aware browsing and typed SQLite editing, and creates staged CDB output through the bundled SQLiteExporter tool.
Version 0.1.0 is an unsigned prerelease for building and testing from source. I have not published a supported binary. Real-world compatibility testing is still limited and has covered only Pro Cycling Manager 2025 (PCM 25). Other PCM releases may work, but they are untested; individual CDB files may still expose bugs, untested edge cases, or compatibility problems.
- Copy-first open, save, backup, and recovery workflows
- Table browsing with persisted 100-, 250-, or 500-row paging, plus an explicit session-only All rows mode, search, filters, session-only multi-column sorting, and lazy finite-page counts
- Typed inline and full-row editing for safely identified rows, with inline mutations deferred until TableView finishes its commit lifecycle
- Disk-backed Undo and Redo across row edits and confirmed maintenance operations, with recorded values and the saved baseline in Changes
- Schema-aware relationship display, search, filtering, sorting, and typed selection, with navigation to referenced rows
- A dedicated, preview-first Create Rider wizard, plus Rider recovery preset, January 1 season-stage repair, and World and European country quotas when their schema and date requirements are met
Finite row choices keep database access bounded and become the global preference. All rows instead materializes every row matching the current search and filters in the current sort order, without an artificial cap. It belongs only to the open table tab and can require substantial time and memory; closing that tab discards the choice.
Rider recovery accepts an entire current team roster or manually entered rider IDs; selecting table rows is an explicit convenience rather than a requirement. Create Rider guides identity, profile, ordered favorite races, all 14 Current/Limit ability pairs, potential, contract data, advanced fields, and review. Its game display name follows Last name F. until it is manually overridden. The workflow starts from schema-gated clean defaults and inserts one DYN_contract_cyclist row and one DYN_cyclist row as a guarded, undoable operation.
Use Windows x64 and the .NET SDK selected by global.json. The first command must report 10.0.303.
dotnet --version
dotnet restore PcmCdbEditor.slnx --locked-mode --configfile NuGet.Config --disable-parallel --disable-build-servers -p:RestoreUseStaticGraphEvaluation=false -p:BuildInParallel=false -m:1
dotnet run --project src/PcmCdbEditor.App/PcmCdbEditor.App.csproj --configuration Release --no-restoreRead Getting started for the complete development workflow and Testing for verification commands and test boundaries.
- SQLiteExporter never receives the original CDB; editing happens inside
%LOCALAPPDATA%\PcmCdbEditor\Sessions. - Save checks the destination and stages a non-empty CDB. When replacing an existing destination, the editor preserves the displaced file as a backup.
- Views, virtual tables and their internal shadow tables, and ordinary tables without a verified declared primary key or safe
rowidare read-only. - Sessions and backups can contain sensitive game data. Keep an independent backup and do not attach them to public issues.
See Safety and recovery for lifecycle, failure, and recovery boundaries.
- Getting started — requirements, build, launch, and first use
- Architecture — project boundaries and runtime composition
- Safety and recovery — open, save, backup, and recovery invariants
- Maintenance tools — schema gates, previews, and calculation rules
- Testing — test suites, commands, fixtures, and validation scope
- Release and verification — local release builds and verification
I release the first-party code and documentation under the MIT License. The bundled SQLiteExporter executable and PDF are separate third-party artifacts and are not covered by that license. See Third-party notices.