Add 'Silo Origin' toolbar (Commit/Pull/Push/Info/BOM) registered with
Unavailable visibility. Register a Silo overlay via
FreeCADGui.registerEditingOverlay() that appends this toolbar to any
active editing context when the current document is Silo-tracked
(ownsDocument() returns True).
Consolidate PySide.QtCore imports.
Replace QWebEngineView-based start page with a rich native Qt panel that
fetches items directly from the Silo REST API. QWebEngineView is not
available on conda-forge for Qt6.
Start panel features:
- Database Items list with search (from SiloClient.list_items)
- Recent Files list from FreeCAD preferences
- Real-time Activity Feed via SSE (SiloEventListener)
- Context menu: Open in Create, Open in Browser, Copy Part Number
- Open in Browser button (QDesktopServices)
- Catppuccin Mocha dark theme styling
URL scheme support:
- handle_kindred_url() function for kindred://item/{part_number} URLs
- Startup hook in InitGui.py for cold-start URL arguments
Closes#167
Replaces the default FreeCAD Start page with a dual-mode view:
- Online: QWebEngineView loading the Silo web app
- Offline: native Qt fallback with recent files and connectivity status
The command override is registered at InitGui.py load time, before
the C++ StartLauncher fires.
Add a diagnostics command that sequentially tests:
- DNS resolution of the server hostname
- Health endpoint (/health)
- Readiness endpoint (/ready)
- Auth endpoint (/auth/me) with token
- SSE event stream (/events)
Results are printed to the FreeCAD console with PASS/FAIL status.
Closes#3
Add a SiloStartPanel dock widget that shows connection status, local
checkouts, recent silo activity, and local recent files. Automatically
shown when the Silo workbench is activated.
Sections:
- Connection status badge (green/gray dot with hostname)
- My Checkouts: scans local projects dir for .FCStd files, shows part
number and description, double-click to open
- Recent Silo Activity: fetches from server, badges items present
locally, double-click to open or checkout
- Local Recent Files: reads FreeCAD MRU list, double-click to open
Auto-refreshes every 60 seconds. Panel is reused if already open.
Closes#5
Remove the separate Silo workbench toolbar and Silo_ToggleMode command.
File operations (New/Open/Save) are now handled by the standard File
toolbar via the origin system. The Silo menu retains admin commands
(Settings, Auth, Info, BOM, TagProjects, SetStatus, Rollback).
Closes#65
- Add missing _get_auth_token() function that caused NameError in Settings
- Replace _client.auth_username/role/source() calls with _get_auth_*()
helpers (methods don't exist on SiloClient, crashed auth dock widget)
- Fix connect() in silo_origin.py to show login dialog instead of just
revealing the dock panel (was using non-existent Command.get() API)
- Separate toolbar (file ops) from menu (admin/management commands)
- Remove DEBUG logging from Silo_Save command
- Fix long line formatting in silo_origin.py
FreeCAD workbench for Silo PLM integration. Uses shared silo-client
package (submodule) for API communication.
Changes from monorepo version:
- SiloClient class removed, imported from silo_client package
- FreeCADSiloSettings adapter wraps FreeCAD.ParamGet() preferences
- Init.py adds silo-client to sys.path at startup
- All command classes and UI unchanged