refactor: rewire silo submodule for monorepo split #19
Reference in New Issue
Block a user
Delete Branch "refactor/silo-split"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Rewire the
mods/silosubmodule to point at the newsilo-modrepository, part of splitting the silo monorepo into four focused repos.Changes (Create repo -- this PR)
3 files changed, 3 insertions, 3 deletions:
.gitmodules:silo.git->silo-mod.gitsrc/Mod/Create/Init.py: bootstrap pathsilo/pkg/freecad->silo/freecadsrc/Mod/Create/InitGui.py: same path updateBackground
The
mods/silosubmodule was a monorepo containing a Go server, a FreeCAD workbench, and a LibreOffice Calc extension. These three components have zero code coupling -- they communicate only via REST API. Splitting them enables independent deployment and version tracking.New repository structure
kindred/silo.gitkindred/silo-client.gitSiloClient,SiloSettingsadapter pattern)kindred/silo-mod.gitkindred/silo-calc.gitDependency graph
Architecture: SiloSettings adapter pattern
The shared
silo-clientpackage defines an abstractSiloSettingsbase class:Each consumer provides an adapter for its config storage:
FreeCADSiloSettings(silo-mod) -- wrapsFreeCAD.ParamGet()preferencesCalcSiloSettings(silo-calc) -- wraps~/.config/silo/calc-settings.jsonWhat was extracted from silo_commands.py
The FreeCAD workbench
silo_commands.pywent from 3592 to 2976 lines:Moved to silo-client (~680 lines):
SiloClientclass (all HTTP methods, auth flow, file upload/download)CATEGORY_NAMESdict (169 part number category entries)build_ssl_context)sanitize_filename,parse_part_number,get_category_folder_nameKept in silo-mod (unchanged):
Silo_OpenthroughSilo_Auth)SiloSyncclassSiloAuthDockWidgetget_projects_dir,get_cad_file_path, etc.)Staged content
New repo content is staged in
.staging/(not part of this PR):Merge order
silo-clientto its remote (dependency for both consumers)silo-modto its remotesilo-calcto its remotesilo.git(remove pkg/, client Makefile targets)Verification
All checks pass.