All checks were successful
Build and Test / build (pull_request) Successful in 28m56s
Remove critically stale docs: - docs/REPOSITORY_STATE.md — snapshot from 2026-01-31, all data outdated - docs/MULTI_USER_CLIENT.md — duplicate of DAG_CLIENT_INTEGRATION.md - docs/src/guide/ztools.md — describes removed addon - docs/KNOWN_ISSUES.md — replaced by Gitea issue tracker Update docs for ztools removal (#344), gears addition, and KCSDK progress: - OVERVIEW.md: fix version (v0.1.5), FreeCAD base (1.2.0), submodule table - ARCHITECTURE.md: replace ztools with gears in bootstrap flow and source layout - COMPONENTS.md: remove ztools section, add gears, remove stale missing-icons note - INTEGRATION_PLAN.md: mark Phase 7 #353-#356 as DONE, update Layer 5 diagram - README.md: update project structure, load order, feature descriptions - CI_CD.md: add context for disabled macOS/Windows builds (#164) - SUMMARY.md: remove ztools guide from mdBook navigation
221 lines
11 KiB
Markdown
221 lines
11 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.
|
|
|
|
**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) → **gears** (40) → **silo** (60).
|
|
|
|
Addons call platform APIs through the **kindred-addon-sdk** (`mods/sdk/kindred_sdk/`) rather than `FreeCADGui.*` internals directly. The SDK provides stable wrappers for editing contexts, theme tokens, FileOrigin registration, and dock panels.
|
|
|
|
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)
|
|
│ ├── gears/ # Gears workbench (submodule, priority 40)
|
|
│ ├── silo/ # Silo PLM workbench (submodule, priority 60)
|
|
│ └── solver/ # Solver addon (submodule)
|
|
├── 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 (ztools, Silo, 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).
|