Commit Graph

11 Commits

Author SHA1 Message Date
forbes
35302154ae feat: expose version to Python and add update checker (#28, #29)
All checks were successful
Build and Test / build (pull_request) Successful in 1h11m28s
Issue #28: Add version.py.in CMake template that injects
KINDRED_CREATE_VERSION at build time, making the Kindred Create
version available to Python code via 'from version import VERSION'.

Issue #29: Add update_checker.py that queries the Gitea releases
API on startup (10s deferred) to check for newer versions. Uses
stdlib urllib only, 5s timeout, never blocks the UI. Respects
user preferences for check interval, enable/disable, and skipped
versions. Logs results to Console for now — UI notification will
follow in issue #30.

Closes #28
Closes #29
2026-02-08 13:11:08 -06:00
forbes
1750949afd fix(gui): merge Silo toolbar into File toolbar via origin system (#65)
Some checks failed
Build and Test / build (pull_request) Failing after 1m41s
- Remove separate Silo workbench toolbar (now redundant)
- Remove SiloMenuManipulator (Std commands already delegate to origins)
- Remove Silo_ToggleMode (origin selector handles mode switching)
- Register Silo origin at startup via Create module
- Update docs to reflect unified origin architecture
2026-02-07 21:29:05 -06:00
forbes
c59c704da3 refactor: rewire silo submodule for silo-mod split
Some checks failed
Build and Test / build (pull_request) Has been cancelled
- .gitmodules: silo.git -> silo-mod.git (FreeCAD workbench only)
- Init.py: silo/pkg/freecad -> silo/freecad (new repo layout)
- InitGui.py: same path update

The silo monorepo has been split into:
- silo-client: shared Python API client (submodule of silo-mod)
- silo-mod: FreeCAD workbench (this submodule)
- silo-calc: LibreOffice Calc extension (separate repo)
- silo: server only (no longer a Create submodule)
2026-02-06 11:15:30 -06:00
forbes
3e09e7c099 fix: prevent QThread crash and Unknown command warnings on startup
Some checks failed
Build and Test / build (push) Has been cancelled
InitGui.py: Store SiloAuthDockWidget reference on the QDockWidget to
prevent Python from garbage-collecting it while its 30-second QTimer is
still running. The lost reference caused 'QThread: Destroyed while
thread is still running' followed by abort.

ztools InitGui.py: Move addWorkbenchManipulator() call from module-level
into Initialize(), after command modules are imported. The manipulator
references ZTools_DatumCreator, ZTools_DatumManager, ZTools_EnhancedPocket,
and ZTools_RotatedLinearPattern, which don't exist until the imports run.

Also updates README.md and submodule pointers.
2026-02-01 19:58:01 -06:00
forbes
1fea7c3d2e feat(silo): dock auth panel, SSE live updates, and improved pull workflow
Some checks failed
Build and Test / build (push) Has been cancelled
- Add _setup_silo_auth_panel() to dock auth widget in right panel at startup
- Update silo submodule: SSE listener, revision pull dialog, conflict detection
2026-02-01 18:15:16 -06:00
forbes
626790904d feat(silo): add interactive database browser to activity panel
Replace the static QListWidget with a full SiloActivityPanel class
that provides:

- Search field with 300ms debounce for filtering items by name
- Type filter dropdown (All / Part / Assembly)
- Refresh button for manual reload
- QTableWidget with Part Number, Description, Type, and Updated columns
- Part Details pane that appears on row selection showing part number,
  description, type, revision, last updated date, and project tags
- Open button / double-click to open items via SiloSync.open_item()
- Info button showing revision history dialog (reuses Silo_Info pattern)
- Graceful error handling for connection failures and empty results
2026-02-01 18:15:16 -06:00
forbes
36a88d0959 Add Silo auth dock widget, update silo submodule
Wire up the new Silo authentication dock panel in InitGui.py:
- _setup_silo_auth_panel() creates the Database Auth dock widget
- Tabified with the existing Database Activity panel on the right dock
- Deferred to 4500ms to ensure activity panel exists first
- Widget reference pinned on the dock panel to prevent GC

Update silo submodule to include auth widget, login flow, token
management, enhanced settings dialog, and silo-auth.svg icon.
2026-01-31 14:36:51 -06:00
forbes
8639b6fd8a fix(gui): resolve unknown command and style token errors at startup
Move ZTools command imports before workbench initialization in
InitGui.py so commands are registered before PartDesign/Sketcher
init triggers toolbar state restoration.

Import silo_commands eagerly in _setup_silo_menu() so Silo commands
exist before the WorkbenchManipulator references them.

Create KindredCreate.yaml and Classic.yaml theme parameter files
defining all style tokens (PrimaryColor, TextForegroundColor, etc.)
used by FreeCAD.qss and the overlay stylesheet. Register them in
CMakeLists.txt and set the Theme preference in KindredCreate.cfg.

Add migration in migrateOldTheme() to set Theme=KindredCreate for
existing users who have the stylesheet but not the Theme parameter.
2026-01-31 11:47:28 -06:00
forbes
eb80c07f57 UI fixes, ZTools-PartDesign merge, Silo enhancements, and BOM integration
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
2026-01-31 09:27:01 -06:00
forbes
dbac82e731 Fix silo loading and add integration enhancements
Fix the exec() calls in Create module's Init.py and InitGui.py to pass
__file__ and __name__ in the globals dict. The silo workbench code uses
__file__ to resolve icon paths, but exec() without explicit globals
does not provide it, causing 'name __file__ is not defined' errors.

Also add three silo integration enhancements to InitGui.py:
- First-startup check: launches Silo_Settings dialog if API URL is not
  configured on first run
- File menu injection: WorkbenchManipulator inserts Silo Open, Save,
  and Commit commands into the File menu across all workbenches
- Database activity panel: dock widget showing recent silo items,
  displayed on the right side of the main window
2026-01-29 20:57:39 -06:00
forbes
0e5998312a Implement Phase 1: Auto-loading for ztools and Silo addons
- Add src/Mod/Create/ module to handle addon loading
- Init.py adds mods/ztools and mods/silo to sys.path at startup
- InitGui.py loads workbenches from addon InitGui.py files
- CMakeLists.txt installs Create module and mods/ directory
- Set ZToolsWorkbench as default startup workbench in preferences
2026-01-27 10:03:12 -06:00