feat(start): replace start page with Silo webview (#117) #118

Merged
forbes merged 1 commits from feat/silo-start-page into main 2026-02-09 16:07:34 +00:00
Owner

Summary

Replaces the default FreeCAD Start page with a dual-mode Silo-aware view:

  • Online: QWebEngineView loads the Silo web app directly in the start page
  • Offline: Native Qt fallback showing recent local files and Silo connectivity status

Architecture

QStackedWidget (SiloStartView)
├── Page 0: QWebEngineView  → Silo web app (online)
└── Page 1: QWidget          → Offline fallback
    ├── Status banner (green/red indicator + URL + retry button)
    ├── Recent files list (clickable file cards)
    └── Footer (don't show on startup checkbox)

A QTimer polls the Silo health endpoint every 5 seconds. On connectivity change, the view flips automatically between online/offline modes.

Implementation

  • silo_start.py (new) — SiloStartView widget, _SiloPage navigation filter, _OfflineWidget, connectivity polling, and Start_Start command override
  • InitGui.py (modified) — calls silo_start.register() at module level to override the command before the C++ StartLauncher fires

Design Decisions

  • Python override, not C++ modification — keeps src/Mod/Start/ untouched for easier upstream rebasing
  • Lives in the Silo mod — the start page is fundamentally a Silo client
  • Graceful degradation — if QtWebEngineWidgets isn't available, permanently shows the offline fallback without crashing
  • Catppuccin Mocha styling — matches the rest of the Kindred Create theme

Silo Submodule

This PR updates the mods/silo submodule reference. The corresponding silo branch is feat/silo-start-page.

Closes #117

## Summary Replaces the default FreeCAD Start page with a dual-mode Silo-aware view: - **Online**: `QWebEngineView` loads the Silo web app directly in the start page - **Offline**: Native Qt fallback showing recent local files and Silo connectivity status ## Architecture ``` QStackedWidget (SiloStartView) ├── Page 0: QWebEngineView → Silo web app (online) └── Page 1: QWidget → Offline fallback ├── Status banner (green/red indicator + URL + retry button) ├── Recent files list (clickable file cards) └── Footer (don't show on startup checkbox) ``` A `QTimer` polls the Silo health endpoint every 5 seconds. On connectivity change, the view flips automatically between online/offline modes. ## Implementation - **`silo_start.py`** (new) — `SiloStartView` widget, `_SiloPage` navigation filter, `_OfflineWidget`, connectivity polling, and `Start_Start` command override - **`InitGui.py`** (modified) — calls `silo_start.register()` at module level to override the command before the C++ `StartLauncher` fires ## Design Decisions - **Python override, not C++ modification** — keeps `src/Mod/Start/` untouched for easier upstream rebasing - **Lives in the Silo mod** — the start page is fundamentally a Silo client - **Graceful degradation** — if `QtWebEngineWidgets` isn't available, permanently shows the offline fallback without crashing - **Catppuccin Mocha styling** — matches the rest of the Kindred Create theme ## Silo Submodule This PR updates the `mods/silo` submodule reference. The corresponding silo branch is `feat/silo-start-page`. Closes #117
forbes added 1 commit 2026-02-09 16:03:57 +00:00
feat(start): replace start page with Silo webview (#117)
Some checks failed
Build and Test / build (pull_request) Failing after 1m42s
ee00a3f7f3
Updates the silo submodule to include the new dual-mode start page:
- Online: QWebEngineView loads the Silo web app
- Offline: native Qt fallback with recent files and connectivity status

The Start_Start command is overridden from the Silo mod's InitGui.py,
keeping the upstream Start module untouched for easier rebasing.
forbes merged commit 4a6ee716aa into main 2026-02-09 16:07:34 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/create#118