-
Notifications
You must be signed in to change notification settings - Fork 0
Contributing
Bug reports, translation corrections, missing item names and code changes are all welcome. PCEdit is GPL-3.0-or-later; by contributing you agree your work ships under that licence.
| Contribution | Where to start |
|---|---|
| A missing item name or icon | Item Catalog |
| A translation correction | Localization |
| A bug report | FAQ & Troubleshooting has the details to include |
| Testing the macOS build | Nobody has confirmed it — reports are genuinely useful |
| A Linux distro report | The WSL matrix in Building & Packaging |
This is the flow for any feature, behaviour change, or bug fix. It does not apply to answering a question or a read-only investigation.
Investigate the real code and data before proposing anything, then write a multi-phase plan. Each phase must end in a working, committable state — tests green, nothing half-applied — so the work can stop or be reviewed at any phase boundary.
The plan states: why the change is being made, what each phase does, the files it touches, the existing helpers it reuses, and how to verify the result end to end. Where a decision is open, give a recommendation, not a neutral list of options.
Challenge each branch of the decision tree while assumptions are still cheap to change. Raise concerns with the request at this point, not after the code is written. If the requester reaffirms, that is the decision — build it in full.
Never commit directly to main. Branch from an up-to-date main:
git checkout main && git pull --ff-only && git checkout -b <topic-branch>If main cannot fast-forward, resolve that before branching.
One commit per completed phase — not one commit for the whole plan. Before each commit:
-
Build.
-
Run both test projects.
-
If you changed a
PackageReference, rundotnet restoreand commit the updatedpackages.lock.jsonfiles — CI's locked restore rejects the change otherwise. -
Regenerate any generated file the phase touched:
python tools/i18n/gen_satellites.py # CI fails on drift python tools/i18n/gen_metainfo.py # CI fails on drift python tools/item-catalog/gen_catalog.py # CI fails on drift (since v1.4.1)
Commit messages say what changed and why.
Important
Never add a Co-Authored-By: Claude … (or any AI assistant) trailer to a commit message.
The final phase bumps <VersionPrefix> in the repo-root Directory.Build.props:
| Change | Bump |
|---|---|
| Bug fix | patch |
| Feature, or new game-version support | minor |
| Breaking change | major |
Doing it inside the PR is what leaves main immediately releasable after the merge.
The same phase adds the entry to CHANGELOG.md — a ## vX.Y.Z section at the top of the list,
in the voice of the existing entries: what changed for someone using the app, not what changed in
the code. A version bump carrying user-visible change but no entry is an incomplete phase; that is
exactly how v1.2.0 and v1.2.1 came to ship undocumented.
Call out anything user-visible beyond the fix itself — a size change, a new or dropped runtime dependency, a renamed artifact, a raised minimum OS — and say which platforms are not affected.
The one exception is a bare bump for development after a release, which carries nothing yet; its entry arrives with the change that fills the version.
- Every project's dependencies match its committed
packages.lock.json— on Linux, Windows and macOS runners. - Both test projects pass.
-
PCEdit.Desktopbuilds. - A
linux-x64publish carries app-local ICU. - The generated localization satellites, AppStream metadata and item catalog match their generators — commit them.
- The Avalonia build-telemetry opt-out is still in effect.
-
<VersionPrefix>is well-formed and not behind the newest release tag.
-
Mutate through
ISaveFileWorkspace. ViewModels never build a modified save themselves. -
Use
withexpressions. Never hand-copy every property of a model — that is how fields have been silently dropped on save before. - A version-added save key is nullable, so older saves do not gain it. See Save File Library.
-
Keep
PCEdit.App.Corefree of any UI-framework reference. Platform concerns go behind an interface. -
Don't hand-edit generated files: the satellite
.resx, the AppStream XML,ItemCatalog.json. -
Don't let a test overwrite a fixture save, and never let
Interplanetary-2.102.jsongain a BOM. See Testing.
Open an issue with your OS and install method, the PCEdit version from the About page, the game version and platform, and what you did versus what happened. Please don't attach a save file unless asked — they are large and carry your player name.
PCEdit · unofficial fan tool for The Planet Crafter · GPL-3.0-or-later · back up your saves (disclaimer)
Using PCEdit
- Installation
- Save File Locations
- Quick Start
- Worlds & Planets
- Overview & Terraforming
- Inventories
- Logistics Editor
- Terra Tokens
- Teleport
- Languages & Settings
- FAQ & Troubleshooting
Development
- Architecture
- Save File Format
- Save File Library
- App Core
- Desktop UI
- Localization
- Item Catalog
- Testing
Shipping