Files
create/docs/COMPONENTS.md
forbes 7f02fd182e
All checks were successful
Build and Test / build (pull_request) Successful in 24m46s
docs: comprehensive documentation refresh — remove stale references, add missing content
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
2026-03-03 13:52:53 -06:00

5.4 KiB

Components

Gears workbench

Gears (mods/gears/) is a parametric gear generation addon. Provides GearWorkbench with gear generation and analysis tools. Code lives in freecad/gears/ (workbench) and pygears/ (computational library). Priority 40, depends on SDK.


Datums

Datums (mods/datums/) is a unified datum creator that replaces the three stock PartDesign datum commands (Plane, Line, Point) with a single Create_DatumCreator command. Features:

  • 16 smart creation modes (7 plane, 4 axis, 5 point)
  • Auto-detection engine that selects the best mode from geometry selection
  • Mode override combo for manual selection
  • Dynamic parameter UI (offset, angle, position, XYZ)
  • Edit panel with real-time parameter updates via AttachExtension
  • Injected into partdesign.body and partdesign.feature contexts via SDK

Source: mods/datums/datums/ (command.py, core.py, panel.py, detection.py, edit_panel.py). Priority 45, depends on SDK.


Solver

Solver (mods/solver/) is an assembly solver research addon (GNN-based). Pure Python, priority 10. Provides KindredSolverBackend for experimental assembly constraint solving.


Origin commands (C++)

The Origin abstraction (src/Gui/FileOrigin.h) provides a backend-agnostic interface for document storage. Commands delegate to the active FileOrigin implementation (currently LocalFileOrigin for local files, SiloOrigin via mods/silo/freecad/silo_origin.py for Silo-tracked documents).

Registered commands (5):

Command Function Icon
Origin_Commit Commit changes as a new revision silo-commit
Origin_Pull Pull a specific revision from the origin silo-pull
Origin_Push Push local changes to the origin silo-push
Origin_Info Show document information from origin silo-info
Origin_BOM Show Bill of Materials for this document silo-bom

These appear in the File menu and "Origin Tools" toolbar across all workbenches (see src/Gui/Workbench.cpp).


Silo workbench

Registered commands (14):

Command Function
Silo_New Schema-driven item creation form — fetches categories and properties from the Silo API at runtime
Silo_Open Open file from Silo database
Silo_Save Save to Silo (create revision)
Silo_Commit Commit current revision
Silo_Pull Pull latest revision from server
Silo_Push Push local changes to server
Silo_Info View item metadata and history
Silo_BOM Bill of materials dialog (BOM + Where Used)
Silo_TagProjects Assign project tags
Silo_Rollback Rollback to previous revision
Silo_SetStatus Set revision status (draft/review/released/obsolete)
Silo_Settings Configure API URL, projects dir, SSL certificates
Silo_Auth Login/logout authentication panel

Global integration via the origin system in src/Gui/:

  • File toolbar: Std_Origin selector widget + Std_New/Std_Open/Std_Save (delegate to current origin)
  • Origin Tools toolbar: Origin_Commit/Origin_Pull/Origin_Push/Origin_Info/Origin_BOM (auto-disable by capability)
  • Silo origin registered at startup by mods/silo/InitGui.py via kindred_sdk.register_origin()

Dock panels:

  • Database Auth (2000ms) -- Login/logout and API token management
  • Database Activity (4000ms) -- Real-time server event feed via SSE (Server-Sent Events) with automatic reconnection and exponential backoff
  • Start Panel -- In-viewport landing page with recent files and Silo integration

Server architecture: Go REST API (38+ routes) + PostgreSQL + MinIO S3. Authentication via local (bcrypt), LDAP, or OIDC backends. SSE endpoint for real-time event streaming. See docs/src/silo-server/ for server documentation.

LibreOffice Calc extension (silo-calc): BOM management, item creation, and AI-assisted descriptions via OpenRouter API. Shares the same Silo REST API and auth token system via the shared silo-client package.


Theme

Canonical source: src/Gui/Stylesheets/KindredCreate.qss

The PreferencePacks copy (src/Gui/PreferencePacks/KindredCreate/KindredCreate.qss) is generated at build time via configure_file() in src/Gui/PreferencePacks/CMakeLists.txt. Only the Stylesheets copy needs to be maintained.

Notable theme customizations beyond standard Catppuccin colors:

  • QGroupBox::indicator styling to match QCheckBox::indicator (consistent checkbox appearance)
  • QLabel[haslink="true"] link color (#b4befe Catppuccin Lavender) -- picked up by FreeCAD to set QPalette::Link
  • Spanning-line tree branch indicators

Icon infrastructure

Qt resource icons (src/Gui/Icons/)

5 silo-* SVGs registered in resource.qrc, used by C++ Origin commands:

silo-bom.svg, silo-commit.svg, silo-info.svg, silo-pull.svg, silo-push.svg

Silo module icons (mods/silo/freecad/resources/icons/)

10 SVGs loaded at runtime by the _icon() function in silo_commands.py:

silo-auth.svg, silo-bom.svg, silo-commit.svg, silo-info.svg, silo-new.svg, silo-open.svg, silo-pull.svg, silo-push.svg, silo-save.svg, silo.svg

Palette

All silo-* icons use the Catppuccin Mocha color scheme. See icons/kindred/README.md for palette specification and icon design standards.