forbes-0023 f67d9a0422 feat(silo): BOM auto-extraction from Assembly links (#276)
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
2026-02-19 12:37:14 -06:00

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

Description
No description provided
Readme MIT 2 MiB
Languages
Python 99.2%
Makefile 0.8%