Files
create/docs/COMPONENTS.md
forbes a2200b4042
Some checks failed
Build and Test / build (pull_request) Has been cancelled
docs: split REPOSITORY_STATE.md into topic files
Replace the monolithic REPOSITORY_STATE.md with four focused files:

- OVERVIEW.md: metadata, submodule pins, doc index
- ARCHITECTURE.md: bootstrap flow, source layout
- COMPONENTS.md: ztools, Silo, Origin commands, theme, icons
- KNOWN_ISSUES.md: bugs, incomplete features, next steps

Updates reflected in the split:
- Silo auth: corrected from 'not implemented' to 'local auth
  complete; LDAP/OIDC pending infrastructure'
- CSRF: corrected from 'not implemented' to 'implemented (nosurf)'
- Silo commands: 14 (was 13, added Silo_Auth)
- New Origin commands section (5 C++ commands)
- New icon infrastructure section with missing icon tracking
- New issues: Newton-Raphson convergence fix (#12), Assembly
  restore crash fix (#13), missing Silo icons (#11)
- Updated submodule pins (silo 27e112e, OndselSolver 5d1988b)
2026-02-06 10:43:34 -06:00

4.9 KiB

Components

ztools workbench

Registered commands (9):

Command Function
ZTools_DatumCreator Create datum planes, axes, points (16 modes)
ZTools_DatumManager Manage existing datum objects
ZTools_EnhancedPocket Flip-side pocket (cut outside sketch profile)
ZTools_RotatedLinearPattern Linear pattern with incremental rotation
ZTools_AssemblyLinearPattern Pattern assembly components linearly
ZTools_AssemblyPolarPattern Pattern assembly components around axis
ZTools_SpreadsheetStyle{Bold,Italic,Underline} Text style toggles
ZTools_SpreadsheetAlign{Left,Center,Right} Cell alignment
ZTools_Spreadsheet{BgColor,TextColor,QuickAlias} Colors and alias creation

PartDesign integration via _ZToolsPartDesignManipulator:

  • ZTools_DatumCreator, ZTools_DatumManager → "Part Design Helper Features" toolbar
  • ZTools_EnhancedPocket → "Part Design Modeling Features" toolbar
  • ZTools_RotatedLinearPattern → "Part Design Transformation Features" toolbar
  • Same commands inserted into Part Design menu after PartDesign_Boolean

Datum types (7): offset_from_face, offset_from_plane, midplane, 3_points, normal_to_edge, angled, tangent_to_cylinder. All except tangent_to_cylinder use Part::AttachExtension for automatic parametric updates.


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/pkg/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 Create new Silo-tracked document
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_ToggleMode Swap Ctrl+O/S/N between FreeCAD and Silo commands
Silo_Auth Login/logout authentication panel

Global integration via SiloMenuManipulator in src/Mod/Create/InitGui.py:

  • File menu: Silo_New, Silo_Open, Silo_Save, Silo_Commit, Silo_Pull, Silo_Push, Silo_BOM
  • File toolbar: Silo_ToggleMode button

Server architecture: Go REST API (38+ routes) + PostgreSQL + MinIO S3. Authentication via local (bcrypt), LDAP, or OIDC backends. See mods/silo/docs/ for server documentation.

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


Theme

Canonical source: resources/preferences/KindredCreate/KindredCreate.qss

Four copies must stay in sync:

  1. resources/preferences/KindredCreate/KindredCreate.qss (canonical)
  2. src/Gui/Stylesheets/KindredCreate.qss
  3. src/Gui/PreferencePacks/KindredCreate/KindredCreate.qss
  4. mods/ztools/CatppuccinMocha/CatppuccinMocha.qss

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/pkg/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

Missing icons

3 command icon names have no corresponding SVG file: silo-tag, silo-rollback, silo-status. The _icon() function returns an empty string for these, so Silo_TagProjects, Silo_Rollback, and Silo_SetStatus render without toolbar icons.

Palette

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