Zoe Forbes 026ed0cb8a feat: reflect server mode in client UI
Add server mode awareness to the FreeCAD client. The mode (normal,
read-only, degraded, offline) is fetched from the /ready endpoint on
each status refresh and updated in real-time via SSE server.state events.

Changes:
- Add _server_mode global and _fetch_server_mode() helper that queries
  /ready and maps response status to mode string
- Add server_mode_changed signal to SiloEventListener, handle
  server.state SSE events in _dispatch()
- Add mode banner to SiloAuthDockWidget: colored bar shown when server
  is not in normal mode (yellow=read-only, orange=degraded, red=offline)
- Update _refresh_status() to fetch mode and update banner
- Disable write commands (New, Save, Commit, Push) when server is not
  in normal mode via IsActive() checks

Closes #4
2026-02-08 16:06:48 -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%