chore: migrate submodules to public repos, rework docs and CI/CD
Some checks failed
Build and Test / build (push) Has been cancelled

- Update .gitmodules: ztools, silo, and OndselSolver now reference
  public git.kindred-systems.com URLs instead of internal Gitea
- Merge OndselSolver numerical solver with ML solver scaffolding
  into unified kindred/solver repository
- Rewrite README.md for conciseness
- Add docs/CI_CD.md with full pipeline documentation
- Rework CI/CD workflows for public dockerized runners
- Add multi-platform release builds (Linux, macOS, Windows)
- Release workflow triggers on v* tags only
- Update docs/REPOSITORY_STATE.md and docs/INTEGRATION_PLAN.md
This commit is contained in:
2026-02-03 10:54:47 -06:00
parent 0ef9ffcf51
commit 1b3f780aa1
8 changed files with 877 additions and 1103 deletions

290
README.md
View File

@@ -2,179 +2,50 @@
**An engineering-focused parametric 3D CAD platform built on FreeCAD 1.0+**
[Website](https://www.kindred-systems.com/create)
[FreeCAD Documentation](https://wiki.freecad.org)
[FreeCAD Forum](https://forum.freecad.org/)
[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)
> **MVP Release** - Kindred Create is currently in active development. Features and interfaces may change.
> Kindred Create is in active development. Features and interfaces may change.
---
## Overview
## What is Kindred Create?
Kindred Create is a fork of FreeCAD 1.0+ that integrates custom workbenches and tooling for professional engineering workflows. It combines the power of FreeCAD's parametric modeling with purpose-built extensions for part design, assembly management, and parts database integration.
Kindred Create is a fork of [FreeCAD](https://www.freecad.org) that adds integrated tooling for professional engineering workflows. It ships two custom workbenches and a purpose-built dark theme on top of FreeCAD's parametric modeling core.
**Key additions over base FreeCAD:**
**ztools** -- A unified workbench that consolidates part design, assembly, and sketcher tools into a single interface. Adds custom datum creation (planes, axes, points with 16 creation modes), pattern tools for assemblies, an enhanced pocket with flip-side cutting, and spreadsheet formatting commands.
- **ztools Workbench** - Unified interface consolidating part design, assembly, and drawing tools with custom engineering features
- **Silo Integration** - Parts database system for tracking, versioning, and managing CAD files across teams, with an interactive browsing panel for searching, opening, and inspecting parts directly from the dock
- **Catppuccin Mocha Theme** - Dark theme with spanning tree branch indicators, optimized for extended work sessions
**Silo** -- A parts database 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 dock panel provides in-viewport browsing and search.
**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.
Kindred Create is maintained by [Kindred Systems LLC](https://www.kindred-systems.com).
---
## Features
### ztools Workbench
The ztools workbench provides a unified interface that consolidates functionality from multiple FreeCAD workbenches while adding custom engineering-oriented tools.
#### Consolidated Toolbars (17 total)
ztools exposes commands from PartDesign, Sketcher, Assembly, and Spreadsheet workbenches through a single unified interface:
- **Structure & Sketcher Tools** - Body/Sketch creation, editing, mapping, validation
- **PartDesign Datums** - Planes, lines, points, coordinate systems, binders, clones
- **Additive Features** - Pad, revolution, loft, pipe, helix, and primitives
- **Subtractive Features** - Pocket, hole, groove, loft, pipe, helix, and primitives
- **Transformations** - Mirror, linear pattern, polar pattern, multi-transform
- **Dress-Up Features** - Fillet, chamfer, draft, thickness
- **Boolean Operations** - Union, intersection, difference
- **Assembly Tools** - Create assembly, insert link, insert new part
- **Assembly Joints** - 13 joint types (fixed, revolute, cylindrical, slider, ball, distance, parallel, perpendicular, angle, rack-pinion, screw, gears, belt)
- **Assembly Management** - Toggle grounded, solve, create view, create BOM, export
- **Spreadsheet Tools** - Create, import, export, aliases, merge/split cells
#### Custom Datum Tools
ztools includes a custom datum creation system with 16 creation modes, using a purpose-built attachment system that stores geometry references for reliable parametric updates.
**Datum Planes (7 modes):**
- Offset from Face - Distance offset perpendicular to a face
- Offset from Plane - Distance offset from an existing datum plane
- Midplane - Plane equidistant between two parallel faces
- 3 Points - Plane defined by three vertices
- Normal to Edge - Plane perpendicular to an edge at a specified parameter
- Angled - Plane rotated about an edge by a specified angle
- Tangent to Cylinder - Plane tangent to a cylindrical surface
**Datum Axes (4 modes):**
- 2 Points - Axis through two vertices
- From Edge - Axis aligned with a linear edge
- Cylinder Center - Axis at the center of a cylindrical face
- Plane Intersection - Axis at the intersection of two planes
**Datum Points (5 modes):**
- At Vertex - Point at a selected vertex
- XYZ Coordinates - Point at absolute coordinates
- On Edge - Point at a parameter along an edge
- Face Center - Point at the centroid of a face
- Circle Center - Point at the center of a circular edge
#### Custom Pattern Tools
- **Rotated Linear Pattern** - Linear pattern with incremental rotation per instance
- **Assembly Linear Pattern** - Pattern assembly components linearly with spacing control
- **Assembly Polar Pattern** - Pattern assembly components around a rotation axis
#### Enhanced Pocket
SOLIDWORKS-style "Flip Side to Cut" feature that removes material outside the sketch profile instead of inside, using boolean operations internally.
#### Spreadsheet Formatting Tools
Dark-theme compatible formatting commands for spreadsheets:
- Bold, italic, underline toggles
- Left, center, right alignment
- Background and text color pickers
- Quick alias creation from cell labels
### Silo Parts Database
Silo is a parts database system designed for managing CAD files, part numbers, and revision history across engineering teams.
**Architecture:**
- **Server Daemon** - Go-based REST API server
- **PostgreSQL** - Relational data storage for part metadata, relationships, and revision history
- **MinIO** - S3-compatible object storage for CAD file versioning
- **FreeCAD Workbench** - Integrated commands for check-in, check-out, and synchronization
**Core Capabilities:**
- Configurable part numbering schemas defined in YAML
- Full revision history with status tracking (draft, review, released, obsolete)
- Bill of materials management with relationship types and quantities
- Project-based organization and tagging
- CSV import/export for bulk operations
- Web interface for browsing and searching parts
**FreeCAD Integration:**
- Open, save, and commit files directly to Silo
- Pull latest revisions and push changes
- View item metadata and revision history
- **Database Activity Panel** - Interactive dock panel for browsing, searching, and opening parts without leaving the 3D viewport. Includes search filtering, type filtering (part/assembly), a details pane showing metadata (part number, description, type, revision, projects), and direct open/info actions.
Silo documentation is available in the `mods/silo/` directory.
### Catppuccin Mocha Theme
A comprehensive dark theme using the [Catppuccin Mocha](https://github.com/catppuccin/catppuccin) color palette, applied across:
- Main window, toolbars, and menus
- 3D viewport backgrounds and selection colors
- Sketch editor colors for edges, vertices, and constraints
- Python console and code editor syntax highlighting
- Spreadsheet backgrounds and text
- Property editor and tree view
- All dialog and widget styling
- Tree view branch indicators using spanning lines (`├`, `└`, `│`) instead of disclosure arrows
The theme is automatically applied when using Kindred Create.
---
## Installing
### Prebuilt Binaries
### Prebuilt packages (Linux)
Prebuilt packages for Linux are available on the [releases page](https://git.kindred-systems.com/kindred/create/releases).
Download from the [releases page](https://git.kindred-systems.com/kindred/create/releases).
#### Debian/Ubuntu (.deb)
Download the `.deb` package from the releases page and install with:
```bash
sudo dpkg -i kindred-create_*.deb
sudo apt-get install -f # Install any missing dependencies
```
Or install directly with apt:
**Debian/Ubuntu:**
```bash
sudo apt install ./kindred-create_*.deb
```
#### AppImage
Download the `.AppImage` file from the releases page, make it executable, and run:
**AppImage:**
```bash
chmod +x KindredCreate-*.AppImage
./KindredCreate-*.AppImage
```
After installation, launch Kindred Create from your application menu or run `kindred-create` from the terminal.
### Building from source
### Building from Source
Kindred Create uses [pixi](https://pixi.sh) for dependency management and CMake for building. Pixi handles all build dependencies automatically via conda packages.
#### Prerequisites
- [pixi](https://pixi.sh) (conda-based package manager)
- Git with submodule support
#### Build Steps
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
@@ -182,91 +53,61 @@ cd create
pixi run configure
pixi run build
pixi run install
```
To launch the built application:
```bash
pixi run freecad
```
#### Platform Support
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.
CMake presets are available for:
- **Linux** (x86-64, aarch64) - Clang compiler
- **macOS** (Intel, Apple Silicon) - Clang compiler
- **Windows** - MSVC compiler
See `CMakePresets.json` for platform-specific configuration. For general FreeCAD build guidance:
- [Linux](https://wiki.freecad.org/Compile_on_Linux)
- [Windows](https://wiki.freecad.org/Compile_on_Windows)
- [macOS](https://wiki.freecad.org/Compile_on_MacOS)
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).
---
## Usage
### Getting Started
Kindred Create is compatible with standard FreeCAD workflows. The [FreeCAD wiki](https://wiki.freecad.org/Getting_started) covers general usage.
Kindred Create is compatible with standard FreeCAD workflows. The FreeCAD wiki provides documentation on general usage:
### ztools
- [Getting started](https://wiki.freecad.org/Getting_started)
- [Features list](https://wiki.freecad.org/Feature_list)
- [Workbenches](https://wiki.freecad.org/Workbenches)
- [Scripting](https://wiki.freecad.org/Power_users_hub)
Select the ztools workbench from the workbench selector. It presents consolidated toolbars from PartDesign, Sketcher, Assembly, and Spreadsheet in a single interface. ZTools commands are also injected into the PartDesign workbench menus and toolbars automatically.
### ztools Workbench
See `mods/ztools/` for workbench-specific documentation.
The ztools workbench is available from the workbench selector. On activation, it presents consolidated toolbars and applies the Catppuccin Mocha theme to spreadsheets.
### Silo
### Silo Setup
Silo requires a running server instance. See `mods/silo/README.md` for server deployment instructions.
Silo requires a running server instance with PostgreSQL and MinIO. 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`)
Configure the FreeCAD workbench with environment variables:
- `SILO_API_URL` - Silo 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 (Open, Save, Commit, Pull, Push, BOM) are available in the File menu across all workbenches.
---
## Project Structure
## Project structure
```
kindred-create/
├── src/ # FreeCAD core source
│ ├── App/ # Core application logic
│ ├── Base/ # Base classes and utilities
│ ├── Gui/ # GUI framework
│ └── Stylesheets/ # Theme stylesheets and assets
├── Mod/ # FreeCAD modules (PartDesign, Assembly, Sketcher, etc.)
│ │ └── Create/ # Kindred Create module (loads addon workbenches)
create/
├── src/
│ ├── App/ # Core application (C++)
│ ├── Base/ # Base classes (C++)
│ ├── Gui/ # GUI framework and stylesheets (C++)
├── Mod/ # FreeCAD modules (PartDesign, Assembly, Sketcher, ...)
│ └── Create/ # Kindred bootstrap module -- loads ztools and Silo
│ └── 3rdParty/ # Vendored dependencies (OndselSolver, GSL)
├── mods/ # Kindred Create addon modules (git submodules)
├── mods/ # Kindred addon workbenches (git submodules)
│ ├── ztools/ # ztools workbench
│ │ ├── ztools/ # Workbench package
│ │ │ ├── InitGui.py # Workbench registration
│ │ │ └── ztools/ # Commands and resources
│ │ └── CatppuccinMocha/ # Theme preference pack
│ └── silo/ # Silo parts database
│ ├── cmd/ # Go server entry points
│ ├── internal/ # Go API, database, storage packages
│ ├── pkg/freecad/ # FreeCAD workbench (Python)
│ ├── deployments/ # Docker configuration
│ └── migrations/ # PostgreSQL migrations
├── resources/ # Branding and preferences
│ ├── branding/ # Splash screens and logos
│ ├── preferences/ # Default preference packs
│ └── icons/ # Application icons (16x16 to 512x512)
├── package/ # Packaging (debian, AppImage)
├── .gitea/workflows/ # CI/CD workflows (build, release)
├── CMakeLists.txt # Root CMake configuration
├── CMakePresets.json # Platform-specific CMake presets
└── pixi.toml # Pixi environment and dependency definition
├── resources/preferences/ # Default preferences and theme
├── package/ # Packaging (Debian, AppImage, Windows installer, RPM)
├── .gitea/workflows/ # CI/CD (build and release pipelines)
├── docs/ # Architecture and integration docs
├── CMakeLists.txt # Root build configuration
├── CMakePresets.json # Platform build presets
└── pixi.toml # Pixi environment and tasks
```
The `mods/ztools` and `mods/silo` directories are git submodules. After cloning, initialize them with:
The `mods/` workbenches are git submodules. If you cloned without `--recursive`, initialize them with:
```bash
git submodule update --init --recursive
@@ -274,34 +115,37 @@ git submodule update --init --recursive
---
## Reporting Issues
## Contributing
Report issues at [git.kindred-systems.com/kindred/create/issues](https://git.kindred-systems.com/kindred/create/issues).
Contributions follow the [FreeCAD Contribution Process](CONTRIBUTING.md) (FCP). Submit changes as pull requests against the `main` branch.
When reporting:
Code quality tools are configured and enforced via pre-commit hooks:
- **C/C++**: clang-format, clang-tidy
- **Python**: black (100-char lines), pylint
1. Specify whether the issue is with Kindred Create additions (ztools, Silo, theme) or base FreeCAD functionality
2. Include version info from `Help > About FreeCAD > Copy to clipboard`
3. Provide steps to reproduce the issue
4. Attach example files if applicable (FCStd as ZIP)
Install pre-commit hooks locally:
For base FreeCAD issues, consider also checking the [FreeCAD issue tracker](https://github.com/FreeCAD/FreeCAD/issues).
```bash
pip install pre-commit
pre-commit install
```
## 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) 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
Kindred Create is licensed under the [LGPL-2.1-or-later](LICENSE) license, consistent with FreeCAD.
---
[LGPL-2.1-or-later](LICENSE), consistent with FreeCAD.
## Acknowledgments
Kindred Create is built on [FreeCAD](https://www.freecad.org), an open-source parametric 3D modeler. We acknowledge the FreeCAD community and contributors for their foundational work.
**Underlying Technology:**
- [OpenCASCADE](https://www.opencascade.com/) - Geometry kernel
- [Coin3D](https://github.com/coin3d/coin) - 3D scene representation
- [Qt](https://www.qt.io/) - GUI framework
- [Python](https://www.python.org/) - Scripting and workbench development
- [Catppuccin](https://github.com/catppuccin/catppuccin) - Color palette
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).