Replace duplicated server setup, deployment, migrations, and config
sections in guide/silo.md, architecture/silo-server.md, and
reference/configuration.md with cross-references to the authoritative
docs/src/silo-server/ directory.
Fix dead link in COMPONENTS.md (mods/silo/docs/ → docs/src/silo-server/).
Document the FileOriginPython bridge: registration via
FreeCADGui.addOrigin()/removeOrigin(), method dispatch pattern with GIL
management, callStringMethod/callBoolMethod/callMethod helpers, document
argument marshalling (App::Document* <-> App.Document), enum mapping
tables for OriginType and ConnectionState, required vs optional Python
interface methods with defaults, error handling (never propagates Python
exceptions into C++), icon resolution via BitmapFactory, and lifetime/
ownership model between Py::Object, _instances vector, and
OriginManager unique_ptr.
Closes#135
Document the five origin commands: activation pattern (ownership lookup
via findOwningOrigin, capability gate check), command table with IDs,
shortcuts, icons and capability gates, eType flags for undo integration,
registration in CreateOriginCommands(), and the full dispatch call chain
from C++ through FileOriginPython bridge to Python SiloOrigin.
Closes#134
Document the OriginManager singleton: origin registration/unregistration
lifecycle, document-to-origin resolution algorithm (non-local checked
first, local as fallback), explicit vs detected ownership, preference
persistence, signal catalog, and memory model.
Closes#132
- Add docs/src/reference/cpp-file-origin.md: full API reference for the
FileOrigin abstract interface, OriginType/ConnectionState enums,
LocalFileOrigin behavior, and ownership detection algorithm
- Add SUMMARY.md entry under new 'C++ API Reference' section
- Add tests/test_kindred_pure.py: 78 pure-logic unit tests covering
update_checker, datum_commands, spreadsheet_commands, silo_commands,
silo_start, and silo_origin (no FreeCAD binary required)
- Add tests/run_kindred_tests.py: two-tier test runner with CI exit codes
- Add pixi task 'test-kindred' for running addon tests
- Add CI/CD step in build.yml to run addon tests before build
Closes#130
mdBook v0.5 upgraded from Font Awesome 4 to 6 (SVG-based).
The old fa-code-branch class no longer exists. Use fas-code-fork
as recommended by the mdBook docs for non-GitHub repos.
- Add docs/book.toml with coal theme, repo link, and custom CSS
- Add docs/src/SUMMARY.md with navigation structure
- Create 16 content pages across guide/, architecture/, development/, reference/
- Add docs/theme/kindred.css with minimal sidebar overrides
- Add .gitea/workflows/docs.yml for auto-deploy on push to main
- Add docs/book/ to .gitignore
Pages are populated with real content from the codebase where possible.
Remaining pages have TODO markers for future content.
- Make src/Gui/Stylesheets/KindredCreate.qss the single source of truth
- Generate PreferencePacks QSS copy at build time via configure_file()
- Merge missing preference defaults into PreferencePacks cfg:
Document (undo, autosave, backup, license), TreeView (PreSelection,
SyncView, SyncSelection), NotificationArea, OutputWindow recording,
General (AutoloadModule=ZToolsWorkbench)
- Delete unused resources/preferences/KindredCreate/ directory
- Delete src/Gui/PreferencePacks/KindredCreate/KindredCreate.qss from source
- Update documentation to reflect single QSS location
- Update .gitmodules: ztools, silo, and OndselSolver now reference
public git.kindred-systems.com URLs instead of internal Gitea
- Merge OndselSolver numerical solver with ML solver scaffolding
into unified kindred/solver repository
- Rewrite README.md for conciseness
- Add docs/CI_CD.md with full pipeline documentation
- Rework CI/CD workflows for public dockerized runners
- Add multi-platform release builds (Linux, macOS, Windows)
- Release workflow triggers on v* tags only
- Update docs/REPOSITORY_STATE.md and docs/INTEGRATION_PLAN.md
Stylesheet fixes (KindredCreate theme):
- Add tree branch expand/collapse SVG indicators (branch_closed.svg,
branch_open.svg) visible on dark background
- Add QSS rules for QTreeView::branch pseudo-states
- Add min-height: 20px to QHeaderView::section to fix bottom clipping
- Merge QDockWidget::title and QSint--ActionGroup QToolButton padding
improvements from Stylesheets copy into canonical
- Add SpreadsheetGui--SheetTableView QLineEdit cell editor styling
- Sync all three QSS copies (resources/preferences, src/Gui/Stylesheets,
src/Gui/PreferencePacks) to canonical version
ZTools-PartDesign workbench integration:
- Add _ZToolsPartDesignManipulator via WorkbenchManipulator API
- Injects DatumCreator, DatumManager into Part Design Helper Features toolbar
- Injects EnhancedPocket into Part Design Modeling Features toolbar
- Injects RotatedLinearPattern into Part Design Transformation Features toolbar
- Adds corresponding PartDesign menu entries after PartDesign_Boolean
Silo enhancements:
- Add Silo_ToggleMode command: toggle switch in File toolbar that swaps
Ctrl+O/S/N between standard FreeCAD and Silo equivalents
- Add SSL certificate file browser in Silo Settings dialog (SslCertPath
preference, supports .pem/.crt/.cer)
- Update _get_ssl_context() to load custom CA cert before system CAs
- Expand SiloMenuManipulator: Silo_New, Silo_Open, Silo_Save, Silo_Commit,
Silo_Pull, Silo_Push, Silo_BOM in File menu
- Integrate upstream Silo_BOM command (tabbed BOM/Where-Used dialog)
Submodule updates:
- silo: Silo mode toggle, SSL cert browsing, BOM menu integration
- ztools: PartDesign WorkbenchManipulator and Catppuccin theme sync
Documentation:
- Add docs/REPOSITORY_STATE.md: comprehensive repository state report with
architecture overview, submodule status, potential issues, feature stubs,
and Silo integration path forward
- Define 4-layer architecture (FreeCAD Core, Python API, Create Extensions, Workbenches)
- Plan src/Mod/Create/ module for C++ features (Create::FlipPocket, DatumHelpers)
- Document 6 implementation phases with priorities
- Use Create:: namespace prefix for all Kindred Create features
- Silo server distributed separately
- ztools/Silo versions pinned via git submodules