f67d9a04229515e769a210223b191f369ff5cfcd
Phase 1 implementation: - New bom_sync.py: extract cross-document App::Link components from Assembly, resolve SiloItemId UUIDs to part numbers, diff against server BOM, apply adds/qty updates via individual CRUD calls. - Hook _push_bom_after_upload into Silo_Save and Silo_Commit (same non-blocking pattern as DAG sync). - Hook _update_manifest_revision to write revision_hash into .kc manifest after successful upload (#277). - Add bom_merged SSE signal + dispatch + Activity pane handler. - Add merge_bom_json to SiloClient (forward-looking for Phase 2). Merge rules: auto-add, auto-update qty, NEVER auto-delete removed entries (warn only). Refs: #276, #277
silo-mod
FreeCAD workbench for the Silo parts database. Provides item management, revision control, BOM editing, and file synchronization within Kindred Create.
Structure
silo-mod/
├── silo-client/ [submodule] shared Python API client
├── freecad/ FreeCAD workbench package
│ ├── Init.py Console initialization (adds silo-client to sys.path)
│ ├── InitGui.py Workbench registration
│ ├── silo_commands.py 14 commands + SiloSync + auth dock widget
│ ├── silo_origin.py FileOrigin adapter for unified origin system
│ ├── package.xml Workbench metadata
│ └── resources/icons/ SVG icons (Catppuccin Mocha palette)
├── Makefile Install/uninstall targets
└── LICENSE
Installation
For standalone use (outside Kindred Create):
git clone --recurse-submodules https://git.kindred-systems.com/kindred/silo-mod.git
cd silo-mod
make install-freecad
Within Kindred Create, this repo is included as a submodule at mods/silo/ and loaded automatically by src/Mod/Create/Init.py.
License
MIT
Languages
Python
99.2%
Makefile
0.8%