966bc6d2bfbcd216f945e62588aa8a178e49c4a5
Replace the infinite fixed-delay retry loop with exponential backoff (1s, 2s, 4s, ... capped at 60s) and a max retry limit of 10. Changes to SiloEventListener: - Expand connection_status signal to (status, retry_count, error_message) - Add exponential backoff: min(BASE_DELAY * 2^retries, MAX_DELAY) - Add terminal "gave_up" state after MAX_RETRIES exhausted - Capture and forward error messages from failed connection attempts Changes to SiloAuthDockWidget._on_sse_status: - Show retry count: "Reconnecting (3/10)..." - Show "Disconnected" (red) on gave_up state - Log each attempt to FreeCAD console (PrintWarning/PrintError) - Set tooltip with last error message on the status label Closes #2
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%