chore: move project metadata to PCMStack and clarify CDB/database terminology - #56
Open
mpicciolli wants to merge 3 commits into
Open
chore: move project metadata to PCMStack and clarify CDB/database terminology#56mpicciolli wants to merge 3 commits into
mpicciolli wants to merge 3 commits into
Conversation
The repository moved to the PCMStack organization and was renamed to "converter". Update the repository URL, author, CI badge and sample links accordingly. Also document the CDB / database / save terminology in AGENTS.md and realign two README tables. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A .cdb is a database whatever its provenance: career save, official Cyanide release or community update. "Save" only describes a .cdb the game itself wrote into an edition's Cloud/ folder, so it never belongs in copy about the converter, which accepts any .cdb. Also states explicitly that the conversion runs client-side. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR rehomes the project metadata to the PCMStack organization and updates documentation/demo copy to clarify and standardize terminology around CDB vs SQLite database.
Changes:
- Updates repository/ownership metadata (README badge/links,
package.jsonfields, LICENSE copyright line). - Adds a Terminology section to
AGENTS.mdand adjusts README/demo wording to avoid calling.cdbinputs “saves”. - Updates the browser demo header/footer and adds an in-browser privacy note.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| samples/browser/index.html | Updates demo title/subtitle, adds PCMStack eyebrow and privacy note, and repoints footer links to the new repo. |
| README.md | Updates CI badge URL, example filenames, and wording to align with clarified terminology; minor table formatting changes. |
| package.json | Updates author/repository metadata and adds bugs + homepage. |
| LICENSE | Updates the copyright holder string. |
| AGENTS.md | Adds a Terminology section defining CDB/database/save usage. |
Suppressed comments (5)
samples/browser/index.html:39
- The privacy note says “Your database is never uploaded”, but the uploaded artifact is the .cdb (CDB) file. Using “CDB” / “.cdb file” here matches the terminology guidance and is more precise.
<p class="privacy-note">
Everything runs in your browser. Your database is never uploaded: it is
read, converted and downloaded entirely on this machine.
</p>
README.md:68
- These CLI examples use
database.cdb/database.sqlite, but the terminology guidance says “database” refers to the SQLite side and shouldn’t be used bare for a.cdb. Consider switching to a neutral base name (e.g.input.*) throughout these examples.
# CDB → SQLite (default output: database.sqlite)
npx cdb-converter database.cdb
# SQLite → CDB (default output: database.cdb)
npx cdb-converter database.sqlite
README.md:75
- Same terminology issue as above: these examples show
.cdbpaths nameddatabase.*. Usinginput.cdb/input.sqlite(or another neutral name) avoids using “database” for the CDB file.
# Provide an explicit output path (directories are created as needed)
npx cdb-converter database.cdb data/database.sqlite
# Reconstruct PRIMARY KEY / FOREIGN KEY constraints (CDB → SQLite only)
npx cdb-converter database.cdb database.sqlite --normalize
README.md:104
- This Node example reads a
.cdbfile nameddatabase.cdb, but AGENTS.md defines “database” as the SQLite side and advises against using it bare for.cdbinputs. Renaming the example input/output to a neutral basename (e.g.input.*) keeps docs consistent.
// Read and convert a CDB file
const cdbBuffer = fs.readFileSync("database.cdb");
const db = cdbToSql(cdbBuffer, SQL);
README.md:160
- This reverse conversion example writes a
.cdbfile nameddatabase.cdb, which conflicts with the Terminology guidance that “database” should refer to the SQLite side. Using a neutral basename (e.g.input.*) avoids that ambiguity.
// Load a SQLite database and convert back to CDB
const sqliteBuffer = fs.readFileSync("database.sqlite");
const db = new SQL.Database(sqliteBuffer);
const cdbBuffer = sqlToCdb(db); // automatically compressed
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| <p class="page-header__eyebrow">PCMStack</p> | ||
| <h1 class="page-header__title">cdb-converter</h1> | ||
| <p class="page-header__subtitle">Convert Pro Cycling Manager save files to SQLite in one line.</p> | ||
| <p class="page-header__subtitle">Convert any Pro Cycling Manager database to SQLite in one line.</p> |
| Convert **Pro Cycling Manager CDB** database files to and from SQLite, straight from the command line or your own code. Lightweight, isomorphic (Node.js **and** the browser), and zero-configuration. | ||
|
|
||
| The conversion is **lossless**: a full `cdb → sqlite → cdb` round-trip preserves every table, column, data type, and flag — so you can edit a save in any SQLite tool and load it back into the game. Optionally, it can reconstruct the save's relationships as real `PRIMARY KEY` / `FOREIGN KEY` constraints, turning the export into a normalized database you can explore with JOINs and ER-diagram tools. | ||
| The conversion is **lossless**: a full `cdb → sqlite → cdb` round-trip preserves every table, column, data type, and flag — so you can edit a database in any SQLite tool and load it back into the game. Optionally, it can reconstruct the database relationships as real `PRIMARY KEY` / `FOREIGN KEY` constraints, turning the export into a normalized database you can explore with JOINs and ER-diagram tools. |
|
|
||
| ```bash | ||
| npx cdb-converter save.cdb | ||
| npx cdb-converter database.cdb |
Comment on lines
+19
to
+21
| library reads and writes, and it is always handled as a *buffer*, never a path: | ||
| the public API takes `cdbBuffer` / returns `Uint8Array`, and only the CLI in | ||
| [src/cli.ts](src/cli.ts) ever touches the filesystem. The format internals live |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Rehomes the project under the PCMStack organisation and cleans up the terminology used across the docs and the browser demo.
LICENSEcopyright andpackage.jsonauthornow say PCMStack;repositorypoints atPCMStack/converter, plus newbugsandhomepagefields. README CI badge and demo footer links updated to the new repo URL.AGENTS.mdpinning down CDB (the binary format, always handled as a buffer), database (the SQLite side), and save (a.cdbthe game itself wrote — reserved for the reverse-engineering notes). README and the demo copy stop using "save" as a generic name for the input file and say "database" instead.Notes
The two new demo elements (
.page-header__eyebrow,.privacy-note) have no rules insamples/browser/style.css, so they currently render with default paragraph styling.Test plan
npm testsamples/browser/index.htmland check the header/privacy note render acceptably🤖 Generated with Claude Code