Commit Graph

7 Commits

Author SHA1 Message Date
85bfb17854 feat: native Qt start panel with Silo API + kindred:// URL scheme
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
2026-02-10 10:30:12 -06:00
a53cd52c73 feat(freecad): add Silo-aware start page with webview and offline fallback
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.
2026-02-09 11:28:16 -06:00
Zoe Forbes
4ddbf26af7 feat: add Silo_Diag connection diagnostics command
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
2026-02-08 16:22:25 -06:00
Zoe Forbes
6fa60af5e0 feat: add silo-aware start panel
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
2026-02-08 16:11:33 -06:00
Zoe Forbes
fcb0a214e2 fix(gui): remove Silo toolbar and ToggleMode in favor of unified origin system
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
2026-02-07 21:28:55 -06:00
Zoe Forbes
02ad9a00db fix(silo): fix auth crashes, menu redundancy, and origin connect
- 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
2026-02-07 14:30:37 -06:00
Zoe Forbes
bf0b84310b initial: FreeCAD Silo workbench (extracted from silo monorepo)
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
2026-02-06 11:23:54 -06:00