forbes-0023 c5f00219fa feat(silo): async save queue — background upload with coalescing (#392)
Local save is synchronous (data safe on disk before returning).
Network upload (file, DAG, BOM) runs in a background QThread.

New files:
- silo_upload_queue.py: UploadTask dataclass + UploadWorker(QThread)
  with coalescing, cancel, shutdown, and Qt signals
- silo_status_widget.py: SyncStatusWidget for status bar feedback

Modified:
- silo_commands.py: _extract_dag_data, _extract_bom_data, _enqueue_upload
  helpers; Silo_Save and Silo_Commit use async enqueue
- silo_origin.py: saveDocument() saves locally then enqueues async upload
- InitGui.py: upload queue init at 700ms, shutdown handler via atexit

Thread safety: worker never accesses App.Document or Qt widgets;
all data pre-extracted on main thread as plain dicts/strings.
Queue uses threading.Lock; signals cross thread boundary via Qt.
2026-03-05 11:08:44 -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.1 MiB
Languages
Python 99.2%
Makefile 0.8%