All checks were successful
Build and Test / build (pull_request) Successful in 28m56s
Remove critically stale docs: - docs/REPOSITORY_STATE.md — snapshot from 2026-01-31, all data outdated - docs/MULTI_USER_CLIENT.md — duplicate of DAG_CLIENT_INTEGRATION.md - docs/src/guide/ztools.md — describes removed addon - docs/KNOWN_ISSUES.md — replaced by Gitea issue tracker Update docs for ztools removal (#344), gears addition, and KCSDK progress: - OVERVIEW.md: fix version (v0.1.5), FreeCAD base (1.2.0), submodule table - ARCHITECTURE.md: replace ztools with gears in bootstrap flow and source layout - COMPONENTS.md: remove ztools section, add gears, remove stale missing-icons note - INTEGRATION_PLAN.md: mark Phase 7 #353-#356 as DONE, update Layer 5 diagram - README.md: update project structure, load order, feature descriptions - CI_CD.md: add context for disabled macOS/Windows builds (#164) - SUMMARY.md: remove ztools guide from mdBook navigation
93 lines
4.4 KiB
Markdown
93 lines
4.4 KiB
Markdown
# Components
|
|
|
|
## Gears workbench
|
|
|
|
Gears (`mods/gears/`) is a default addon providing parametric gear generation. Added as a submodule in the `feat/gears-addon` branch and merged to main.
|
|
|
|
---
|
|
|
|
## Origin commands (C++)
|
|
|
|
The Origin abstraction (`src/Gui/FileOrigin.h`) provides a backend-agnostic interface for document storage. Commands delegate to the active `FileOrigin` implementation (currently `LocalFileOrigin` for local files, `SiloOrigin` via `mods/silo/freecad/silo_origin.py` for Silo-tracked documents).
|
|
|
|
**Registered commands (5):**
|
|
|
|
| Command | Function | Icon |
|
|
|---------|----------|------|
|
|
| `Origin_Commit` | Commit changes as a new revision | `silo-commit` |
|
|
| `Origin_Pull` | Pull a specific revision from the origin | `silo-pull` |
|
|
| `Origin_Push` | Push local changes to the origin | `silo-push` |
|
|
| `Origin_Info` | Show document information from origin | `silo-info` |
|
|
| `Origin_BOM` | Show Bill of Materials for this document | `silo-bom` |
|
|
|
|
These appear in the File menu and "Origin Tools" toolbar across all workbenches (see `src/Gui/Workbench.cpp`).
|
|
|
|
---
|
|
|
|
## Silo workbench
|
|
|
|
**Registered commands (14):**
|
|
|
|
| Command | Function |
|
|
|---------|----------|
|
|
| `Silo_New` | Schema-driven item creation form — fetches categories and properties from the Silo API at runtime |
|
|
| `Silo_Open` | Open file from Silo database |
|
|
| `Silo_Save` | Save to Silo (create revision) |
|
|
| `Silo_Commit` | Commit current revision |
|
|
| `Silo_Pull` | Pull latest revision from server |
|
|
| `Silo_Push` | Push local changes to server |
|
|
| `Silo_Info` | View item metadata and history |
|
|
| `Silo_BOM` | Bill of materials dialog (BOM + Where Used) |
|
|
| `Silo_TagProjects` | Assign project tags |
|
|
| `Silo_Rollback` | Rollback to previous revision |
|
|
| `Silo_SetStatus` | Set revision status (draft/review/released/obsolete) |
|
|
| `Silo_Settings` | Configure API URL, projects dir, SSL certificates |
|
|
| `Silo_Auth` | Login/logout authentication panel |
|
|
|
|
**Global integration** via the origin system in `src/Gui/`:
|
|
- File toolbar: `Std_Origin` selector widget + `Std_New`/`Std_Open`/`Std_Save` (delegate to current origin)
|
|
- Origin Tools toolbar: `Origin_Commit`/`Origin_Pull`/`Origin_Push`/`Origin_Info`/`Origin_BOM` (auto-disable by capability)
|
|
- Silo origin registered at startup by `src/Mod/Create/InitGui.py`
|
|
|
|
**Dock panels:**
|
|
- Database Auth (2000ms) -- Login/logout and API token management
|
|
- Database Activity (4000ms) -- Real-time server event feed via SSE (Server-Sent Events) with automatic reconnection and exponential backoff
|
|
- Start Panel -- In-viewport landing page with recent files and Silo integration
|
|
|
|
**Server architecture:** Go REST API (38+ routes) + PostgreSQL + MinIO S3. Authentication via local (bcrypt), LDAP, or OIDC backends. SSE endpoint for real-time event streaming. See `docs/src/silo-server/` for server documentation.
|
|
|
|
**LibreOffice Calc extension** ([silo-calc](https://git.kindred-systems.com/kindred/silo-calc.git)): BOM management, item creation, and AI-assisted descriptions via OpenRouter API. Shares the same Silo REST API and auth token system via the shared [silo-client](https://git.kindred-systems.com/kindred/silo-client.git) package.
|
|
|
|
---
|
|
|
|
## Theme
|
|
|
|
**Canonical source:** `src/Gui/Stylesheets/KindredCreate.qss`
|
|
|
|
The PreferencePacks copy (`src/Gui/PreferencePacks/KindredCreate/KindredCreate.qss`) is generated at build time via `configure_file()` in `src/Gui/PreferencePacks/CMakeLists.txt`. Only the Stylesheets copy needs to be maintained.
|
|
|
|
Notable theme customizations beyond standard Catppuccin colors:
|
|
- `QGroupBox::indicator` styling to match `QCheckBox::indicator` (consistent checkbox appearance)
|
|
- `QLabel[haslink="true"]` link color (`#b4befe` Catppuccin Lavender) -- picked up by FreeCAD to set `QPalette::Link`
|
|
- Spanning-line tree branch indicators
|
|
|
|
---
|
|
|
|
## Icon infrastructure
|
|
|
|
### Qt resource icons (`src/Gui/Icons/`)
|
|
|
|
5 `silo-*` SVGs registered in `resource.qrc`, used by C++ Origin commands:
|
|
|
|
`silo-bom.svg`, `silo-commit.svg`, `silo-info.svg`, `silo-pull.svg`, `silo-push.svg`
|
|
|
|
### Silo module icons (`mods/silo/freecad/resources/icons/`)
|
|
|
|
10 SVGs loaded at runtime by the `_icon()` function in `silo_commands.py`:
|
|
|
|
`silo-auth.svg`, `silo-bom.svg`, `silo-commit.svg`, `silo-info.svg`, `silo-new.svg`, `silo-open.svg`, `silo-pull.svg`, `silo-push.svg`, `silo-save.svg`, `silo.svg`
|
|
|
|
### Palette
|
|
|
|
All silo-* icons use the Catppuccin Mocha color scheme. See `icons/kindred/README.md` for palette specification and icon design standards.
|