fix(silo): pull assembly dependencies on all open paths (#337) #371

Merged
forbes merged 1 commits from fix/silo-assembly-deps into main 2026-03-02 19:22:32 +00:00
Owner

Summary

Fixes #337 — opening a Silo assembly via paths other than Silo_Pull did not download linked part files, causing broken PropertyXLink references and invisible parts.

Root Cause

SiloSync.open_item() already calls _pull_dependencies() for assemblies, but two code paths bypassed it:

  1. SiloOrigin.openDocument() — when a local file existed, it called FreeCAD.openDocument() directly instead of routing through open_item()
  2. Silo_Pull.Activated() — when no revisions had files but a local file existed, it opened directly without pulling dependencies

Changes

silo_origin.pySiloOrigin.openDocument()

Removed the local-file shortcut. All opens now route through open_item(), which handles both local file detection and assembly dependency pulling.

silo_commands.pySilo_Pull.Activated()

Added _pull_dependencies() call before opening existing local assembly files in the no-revisions-have-files path.

What's NOT changed

  • Silo_Open dialog's local-path-only case (FreeCAD.openDocument(data["path"])) — these are local-only files without part numbers, not Silo-tracked assemblies
  • _pull_dependencies() itself — already handles recursion, skips existing files, and degrades gracefully offline
## Summary Fixes #337 — opening a Silo assembly via paths other than `Silo_Pull` did not download linked part files, causing broken PropertyXLink references and invisible parts. ## Root Cause `SiloSync.open_item()` already calls `_pull_dependencies()` for assemblies, but two code paths bypassed it: 1. **`SiloOrigin.openDocument()`** — when a local file existed, it called `FreeCAD.openDocument()` directly instead of routing through `open_item()` 2. **`Silo_Pull.Activated()`** — when no revisions had files but a local file existed, it opened directly without pulling dependencies ## Changes ### `silo_origin.py` — `SiloOrigin.openDocument()` Removed the local-file shortcut. All opens now route through `open_item()`, which handles both local file detection and assembly dependency pulling. ### `silo_commands.py` — `Silo_Pull.Activated()` Added `_pull_dependencies()` call before opening existing local assembly files in the no-revisions-have-files path. ## What's NOT changed - `Silo_Open` dialog's local-path-only case (`FreeCAD.openDocument(data["path"])`) — these are local-only files without part numbers, not Silo-tracked assemblies - `_pull_dependencies()` itself — already handles recursion, skips existing files, and degrades gracefully offline
forbes added 1 commit 2026-03-02 19:14:39 +00:00
fix(silo): update silo submodule — pull assembly deps on all open paths (#337)
Some checks failed
Build and Test / build (pull_request) Failing after 1m47s
0a86a93e1b
forbes merged commit 4e1e2ca46d into main 2026-03-02 19:22:32 +00:00
forbes deleted branch fix/silo-assembly-deps 2026-03-02 19:22:32 +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#371