Root documentation: - README.md: add Datums description, update addon load order and SDK references, fix project structure tree, update issue reporting guidance - CONTRIBUTING.md: update submodule table (remove ztools, add gears/datums/solver), fix QSS guidance (single canonical source, not three copies) - docs/ARCHITECTURE.md: update bootstrap flow (5 addons, split deferred timers between Create core and Silo addon), update load order and source layout - docs/COMPONENTS.md: add Datums and Solver sections, update Gears description, fix Silo origin registration reference - docs/KNOWN_ISSUES.md: create missing file referenced by CLAUDE.md and CONTRIBUTING.md - docs/INTEGRATION_PLAN.md: update layer 5 diagram, fix load order references, update Phase 6 install rules, fix Layer 2/3/5 descriptions - docs/OVERVIEW.md: add datums submodule entry - docs/UPSTREAM.md: update Phase 1 directory table and Phase 4 submodule list mdBook documentation (docs/src/): - SUMMARY.md: replace dead architecture/ links with existing reference pages, remove deleted silo-server files, add new silo-server pages - introduction.md: rewrite — replace ztools with current addons (Silo, Gears, Datums, KCSDK), update version to v0.1.5/FreeCAD 1.2.0 - guide/getting-started.md: update first-run addon list - guide/installation.md: update verification console output - guide/workbenches.md: rewrite — replace ztools with Gears, Datums, Solver - guide/building.md: update submodule table, fix error message guidance - development/contributing.md: fix scope example and issue reporting - development/repo-structure.md: rewrite — add SDK, datums, gears, solver, reference/ folder; update submodule and key files tables - development/writing-an-addon.md: fix priority range table - reference/create-module-bootstrap.md: rewrite — reflect addon_loader system, split deferred timers between Create core and Silo addon - reference/datum-creator.md: update from ZTools to datums addon paths and naming - reference/glossary.md: add KCSDK entry, update FreeCAD version, remove ztools entry, update repository URLs table
3.7 KiB
Contributing to Kindred Create
Kindred Create is maintained at git.kindred-systems.com/kindred/create. Contributions are submitted as pull requests against the main branch.
Getting started
git clone --recursive ssh://git@git.kindred-systems.com:2222/kindred/create.git
cd create
pixi run configure
pixi run build
pixi run freecad
See the README for full build instructions.
Branch and PR workflow
- Create a feature branch from
main:git checkout -b feat/my-feature main - Make your changes, commit with conventional commit messages (see below).
- Push and open a pull request against
main. - CI builds and tests run automatically on all PRs.
Commit messages
Use Conventional Commits:
| Prefix | Purpose |
|---|---|
feat: |
New feature |
fix: |
Bug fix |
chore: |
Maintenance, dependencies |
docs: |
Documentation only |
art: |
Icons, theme, visual assets |
Examples:
feat: add datum point creation modefix(gui): correct menu icon size on Waylandchore: update silo submodule
Code style
C/C++
Formatted with clang-format (config in .clang-format). Static analysis via clang-tidy (config in .clang-tidy).
Python
Formatted with black (100-character line length). Linted with pylint (config in .pylintrc).
Pre-commit hooks
pip install pre-commit
pre-commit install
This runs clang-format, black, and pylint automatically on staged files.
Submodules
Kindred Create uses git submodules for addon workbenches:
| Submodule | Path | Repository |
|---|---|---|
| silo-mod | mods/silo |
git.kindred-systems.com/kindred/silo-mod |
| gears | mods/gears |
git.kindred-systems.com/kindred/gears |
| datums | mods/datums |
git.kindred-systems.com/kindred/datums |
| solver | mods/solver |
git.kindred-systems.com/kindred/solver |
To update a submodule:
cd mods/silo
git checkout main && git pull
cd ../..
git add mods/silo
git commit -m "chore: update silo submodule"
If you cloned without --recursive, initialize submodules with:
git submodule update --init --recursive
Theme and QSS changes
The Catppuccin Mocha theme canonical source is src/Gui/Stylesheets/KindredCreate.qss. The copy at src/Gui/PreferencePacks/KindredCreate/KindredCreate.qss is generated at build time via configure_file() in CMake -- do not edit it directly.
Only edit src/Gui/Stylesheets/KindredCreate.qss when modifying the theme.
Preference pack
Default preferences are defined in resources/preferences/KindredCreate/KindredCreate.cfg. This XML file uses FreeCAD's parameter format:
<FCParamGroup Name="GroupName">
<FCBool Name="Setting" Value="1"/>
<FCInt Name="Setting" Value="42"/>
<FCText Name="Setting">value</FCText>
</FCParamGroup>
Changes here affect the out-of-box experience for all users.
CI/CD
- Build workflow (
build.yml): Runs on every push tomainand on PRs. Builds in Ubuntu 24.04 container, runs C++ and Python tests. - Release workflow (
release.yml): Triggered byv*tags. Builds AppImage and .deb packages.
See docs/CI_CD.md for full details.
Architecture
For an overview of the codebase structure, bootstrap flow, and design decisions, see:
- docs/ARCHITECTURE.md -- Bootstrap flow and source layout
- docs/COMPONENTS.md -- Feature inventory
- docs/INTEGRATION_PLAN.md -- Architecture layers and roadmap
License
All contributions must be compatible with LGPL-2.1-or-later.