All checks were successful
Build and Test / build (pull_request) Successful in 24m46s
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
224 lines
12 KiB
Markdown
224 lines
12 KiB
Markdown
# Kindred Create
|
|
|
|
**An engineering-focused parametric 3D CAD platform built on FreeCAD 1.0+**
|
|
|
|
Kindred Create 0.1.5 | FreeCAD 1.2.0 base
|
|
|
|
[Website](https://www.kindred-systems.com/create) |
|
|
[Downloads](https://git.kindred-systems.com/kindred/create/releases) |
|
|
[Issue Tracker](https://git.kindred-systems.com/kindred/create/issues) |
|
|
[Documentation](https://docs.kindred-systems.com/create)
|
|
|
|
> Kindred Create is in active development. Features and interfaces may change.
|
|
|
|
---
|
|
|
|
## What is Kindred Create?
|
|
|
|
Kindred Create is a fork of [FreeCAD](https://www.freecad.org) that adds integrated tooling for professional engineering workflows. It ships a context-aware UI system, addon workbenches, a purpose-built dark theme, and a pluggable file origin layer on top of FreeCAD's parametric modeling core.
|
|
|
|
**Editing context system** -- The UI adapts to what you are editing. An `EditingContextResolver` tracks the active document, view, and in-edit object, then shows or hides toolbars automatically. Built-in contexts cover sketcher editing, assembly editing, PartDesign features/bodies, spreadsheets, and idle states. Addons register their own contexts through a Python API. A color-coded breadcrumb bar in the 3D viewport shows the current editing path.
|
|
|
|
**Gears** -- A parametric gear generation workbench for creating involute spur gears, helical gears, and other gear profiles directly within FreeCAD assemblies.
|
|
|
|
**Datums** -- A unified datum creator that replaces the three stock PartDesign datum commands (Plane, Line, Point) with a single command providing 16 smart creation modes. Auto-detects the best datum type from selected geometry, with manual mode override and dynamic parameter UI.
|
|
|
|
**Silo** -- A parts lifecycle management system for managing CAD files, part numbers, revisions, and bills of materials across teams. Includes a Go REST API server backed by PostgreSQL and MinIO, with FreeCAD commands for opening, saving, and syncing files directly from the application. A unified origin system integrates Silo file operations (New, Open, Save, Commit, Pull, Push) into the standard File toolbar and menu across all workbenches. Dock panels provide authentication, real-time database activity via SSE, and a custom start page that replaces the default FreeCAD landing.
|
|
|
|
**Catppuccin Mocha theme** -- A dark theme applied across the entire application, including the 3D viewport, sketch editor, spreadsheet view, and tree view. Uses spanning-line branch indicators instead of disclosure arrows. Includes tuned preference defaults for document handling, selection behavior, notifications, and report view settings.
|
|
|
|
**Update checker** -- On startup, Kindred Create checks the Gitea releases API for newer versions and logs the result. Configurable check interval and skip-version preferences.
|
|
|
|
Kindred Create is maintained by [Kindred Systems LLC](https://www.kindred-systems.com).
|
|
|
|
---
|
|
|
|
## Platform support
|
|
|
|
| Platform | Packages | Status |
|
|
|---|---|---|
|
|
| Linux x86_64 | AppImage, .deb | Builds and releases in CI |
|
|
| Linux aarch64 | -- | Build configuration ready, no CI runner yet |
|
|
| macOS Intel | DMG | Build preset defined, no CI runner yet |
|
|
| macOS Apple Silicon | DMG | Build preset defined, no CI runner yet |
|
|
| Windows x64 | NSIS installer, .7z | Build preset defined, no CI runner yet |
|
|
|
|
---
|
|
|
|
## Installing
|
|
|
|
### Prebuilt packages (Linux)
|
|
|
|
Download from the [releases page](https://git.kindred-systems.com/kindred/create/releases).
|
|
|
|
**Debian/Ubuntu:**
|
|
|
|
```bash
|
|
sudo apt install ./kindred-create_*.deb
|
|
```
|
|
|
|
**AppImage:**
|
|
|
|
```bash
|
|
chmod +x KindredCreate-*.AppImage
|
|
./KindredCreate-*.AppImage
|
|
```
|
|
|
|
### Building from source
|
|
|
|
Kindred Create uses [pixi](https://pixi.sh) for dependency management and CMake for building.
|
|
|
|
```bash
|
|
git clone --recursive ssh://git@git.kindred-systems.com:2222/kindred/create.git
|
|
cd create
|
|
pixi run configure
|
|
pixi run build
|
|
pixi run install
|
|
pixi run freecad
|
|
```
|
|
|
|
Debug and release variants are available (`pixi run build-debug`, `pixi run build-release`). See `CMakePresets.json` for platform-specific presets covering Linux, macOS, and Windows.
|
|
|
|
`pixi run test` runs the C++ test suite via ctest.
|
|
|
|
For general FreeCAD compilation guidance, see the FreeCAD wiki for [Linux](https://wiki.freecad.org/Compile_on_Linux), [Windows](https://wiki.freecad.org/Compile_on_Windows), or [macOS](https://wiki.freecad.org/Compile_on_MacOS).
|
|
|
|
---
|
|
|
|
## Architecture
|
|
|
|
### Editing context system
|
|
|
|
FreeCAD's stock UI presents a flat set of workbenches that the user switches between manually. Kindred Create replaces this with a context-driven model: as you open documents, enter edit mode on a sketch, or select a PartDesign body, the `EditingContextResolver` (C++, `src/Gui/EditingContext.h`) evaluates registered context definitions in priority order and activates the matching one. Activation sets toolbar visibility via `ToolBarManager::setState(ForceAvailable)` and updates the breadcrumb bar.
|
|
|
|
Built-in contexts:
|
|
|
|
| Context ID | When active |
|
|
|---|---|
|
|
| `sketcher.edit` | Editing a Sketch object |
|
|
| `assembly.edit` | Editing an Assembly |
|
|
| `partdesign.feature` | Editing a PartDesign feature (pad, pocket, etc.) |
|
|
| `partdesign.body` | A PartDesign Body is selected |
|
|
| `assembly.idle` | An Assembly document is open but not in edit |
|
|
| `spreadsheet` | A Spreadsheet view is active |
|
|
| `empty_document` | An empty document is open |
|
|
| `no_document` | No document is open |
|
|
|
|
Addons extend this through the Python API:
|
|
|
|
- `FreeCADGui.registerEditingContext()` -- register a new context with match function, toolbars, and priority
|
|
- `FreeCADGui.registerEditingOverlay()` -- register an overlay that conditionally adds toolbars on top of any context
|
|
- `FreeCADGui.injectEditingCommands()` -- add commands to an existing context's toolbars
|
|
- `FreeCADGui.currentEditingContext()` -- query the active context
|
|
- `FreeCADGui.refreshEditingContext()` -- force a re-evaluation
|
|
|
|
### Addon integration
|
|
|
|
Addons in `mods/` are loaded by a manifest-driven loader (`src/Mod/Create/addon_loader.py`). Each addon provides a `package.xml` with `<kindred>` extensions declaring version bounds, load priority, and dependencies. The loader resolves dependencies via topological sort and loads addons in order: **sdk** (0) -> **solver** (10) -> **gears** (40) -> **datums** (45) -> **silo** (60).
|
|
|
|
Addons call platform APIs through the **kindred-addon-sdk** (`mods/sdk/kindred_sdk/`) and the **KCSDK** C++ library (`src/Gui/SDK/`) rather than `FreeCADGui.*` internals directly. The SDK provides stable wrappers for editing contexts, theme tokens, FileOrigin registration, dock panels, toolbars, and menus.
|
|
|
|
Silo registers an overlay that adds the "Silo Origin" toolbar whenever the active document contains Silo tracking properties (`SiloItemId`, `SiloPartNumber`).
|
|
|
|
### Unified origin system
|
|
|
|
File operations (New, Open, Save, etc.) are abstracted behind a `FileOrigin` interface. The default `LocalFileOrigin` handles standard filesystem operations. When Silo is connected, `SiloOrigin` provides the same interface backed by the Silo server, adding revision control, part numbers, and remote storage. The active origin is selected automatically based on whether the current document is tracked by Silo.
|
|
|
|
---
|
|
|
|
## Usage
|
|
|
|
Kindred Create is compatible with standard FreeCAD workflows. The [FreeCAD wiki](https://wiki.freecad.org/Getting_started) covers general usage.
|
|
|
|
### Silo
|
|
|
|
Silo requires a running server instance. See `mods/silo/README.md` for server deployment instructions.
|
|
|
|
The FreeCAD workbench reads configuration from:
|
|
- `SILO_API_URL` -- Server API endpoint (default: `http://localhost:8080/api`)
|
|
- `SILO_PROJECTS_DIR` -- Local projects directory (default: `~/projects`)
|
|
|
|
On first launch, Kindred Create prompts for Silo server configuration. Silo commands are available in the File menu across all workbenches:
|
|
|
|
| Command | Shortcut | Description |
|
|
|---|---|---|
|
|
| New | Ctrl+N | Create a new item with part number |
|
|
| Open | Ctrl+O | Search and open items from the database |
|
|
| Save | Ctrl+S | Save locally and upload to MinIO |
|
|
| Commit | Ctrl+Shift+S | Save with a revision comment |
|
|
| Pull | -- | Download the latest revision from the server |
|
|
| Push | -- | Upload local changes |
|
|
| BOM | -- | Edit the bill of materials |
|
|
| Info | -- | View item metadata and revision history |
|
|
| Rollback | -- | Restore a previous revision |
|
|
|
|
The authentication dock panel (right side) manages server login. The activity panel shows recent database changes in real time via server-sent events.
|
|
|
|
---
|
|
|
|
## Project structure
|
|
|
|
```
|
|
create/
|
|
├── src/
|
|
│ ├── App/ # Core application (C++)
|
|
│ ├── Base/ # Base classes, type system, persistence (C++)
|
|
│ ├── Gui/ # GUI framework (C++)
|
|
│ │ ├── EditingContext.h # Editing context resolver
|
|
│ │ ├── BreadcrumbToolBar.h # Breadcrumb navigation widget
|
|
│ │ ├── Stylesheets/ # QSS theme files
|
|
│ │ └── PreferencePacks/ # Theme and preference configurations
|
|
│ ├── Mod/ # FreeCAD modules (PartDesign, Assembly, Sketcher, ...)
|
|
│ │ └── Create/ # Kindred Create module (Python loader + C++ scaffold)
|
|
│ └── 3rdParty/ # Vendored dependencies
|
|
│ ├── OndselSolver/ # Assembly constraint solver (forked)
|
|
│ └── GSL/ # Microsoft Guidelines Support Library
|
|
├── mods/ # Kindred addon modules
|
|
│ ├── sdk/ # Addon SDK — stable API contract (priority 0)
|
|
│ ├── solver/ # Solver addon (submodule, priority 10)
|
|
│ ├── gears/ # Gears workbench (submodule, priority 40)
|
|
│ ├── datums/ # Unified datum creator (submodule, priority 45)
|
|
│ └── silo/ # Silo PLM workbench (submodule, priority 60)
|
|
├── resources/ # Branding, icons, desktop integration, MIME types
|
|
├── package/ # Packaging scripts
|
|
│ ├── debian/ # .deb build script
|
|
│ └── rattler-build/ # AppImage/DMG/Windows bundling
|
|
├── docs/ # mdBook documentation site
|
|
├── .gitea/workflows/ # CI/CD (build, release, docs deployment)
|
|
├── CMakeLists.txt # Root build configuration
|
|
├── CMakePresets.json # Platform build presets (Linux, macOS, Windows)
|
|
└── pixi.toml # Pixi environment and build tasks
|
|
```
|
|
|
|
The `mods/` addons and `src/3rdParty/` dependencies are git submodules. If you cloned without `--recursive`, initialize them with:
|
|
|
|
```bash
|
|
git submodule update --init --recursive
|
|
```
|
|
|
|
---
|
|
|
|
## Contributing
|
|
|
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full contribution guide, including branch workflow, commit message conventions, code style, submodule management, and theme change procedures.
|
|
|
|
## Reporting issues
|
|
|
|
Report issues at the [issue tracker](https://git.kindred-systems.com/kindred/create/issues). When reporting:
|
|
|
|
1. Note whether the issue involves Kindred Create additions (Silo, Gears, Datums, theme, editing contexts) or base FreeCAD
|
|
2. Include version info from **Help > About FreeCAD > Copy to clipboard**
|
|
3. Provide reproduction steps and attach example files (FCStd as ZIP) if applicable
|
|
|
|
For base FreeCAD issues, also check the [FreeCAD issue tracker](https://github.com/FreeCAD/FreeCAD/issues).
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
[LGPL-2.1-or-later](LICENSE), consistent with FreeCAD.
|
|
|
|
## Acknowledgments
|
|
|
|
Built on [FreeCAD](https://www.freecad.org) and its ecosystem: [OpenCASCADE](https://www.opencascade.com/), [Coin3D](https://github.com/coin3d/coin), [Qt](https://www.qt.io/), [Python](https://www.python.org/). Theme colors from [Catppuccin](https://github.com/catppuccin/catppuccin).
|