Commit Graph

45377 Commits

Author SHA1 Message Date
f71decca08 fix(splash): skip runtime title/version draw and use mantle background
Some checks failed
Build and Test / build (pull_request) Failing after 19m15s
The splash PNG already has the title and version baked in by
generate-splash.py, but SplashScreen::splashImage() was drawing them
again at position (6,75) which fell outside the rounded background
rectangle (starts at 30,30). Skip runtime text rendering for Kindred
Create while keeping the dev build warning.

Also switch the splash background from Catppuccin Mocha base (#1e1e2e)
to mantle (#181825) for a darker appearance and regenerate assets.
2026-02-12 10:08:23 -06:00
70118201b0 feat(silo): replace modal new-item dialog with MDI pre-document tab
Some checks failed
Build and Test / build (pull_request) Failing after 15m49s
Update silo submodule to include the new pre-document tab for item
creation.  Silo_New now opens an MDI tab instead of a blocking modal
dialog, allowing multiple items to be prepared in parallel.
2026-02-11 15:15:08 -06:00
76b55aaca5 Merge pull request 'docs: update Silo_New references for schema-driven creation form' (#175) from feat/schema-driven-new-item-form into main
Some checks failed
Deploy Docs / build-and-deploy (push) Successful in 30s
Build and Test / build (push) Has been cancelled
Reviewed-on: #175
2026-02-11 16:44:00 +00:00
de525483a9 Merge branch 'main' into feat/schema-driven-new-item-form
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-11 16:43:49 +00:00
f8a6c130af docs: update Silo_New references for schema-driven creation form
Some checks failed
Build and Test / build (pull_request) Has been cancelled
- COMPONENTS.md: describe schema-driven form with runtime API fetching
- silo.md: update command description with domain/subcategory picker,
  dynamic properties, live PN preview; add schema_form.py and
  silo_start.py to directory structure
- configuration.md: update keyboard shortcut description
2026-02-11 10:34:28 -06:00
ce4ae5f5b2 Merge pull request 'feat: schema-driven Qt form for new item creation' (#174) from feat/schema-driven-new-item-form into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #174
2026-02-11 16:22:14 +00:00
cbf8796cc2 feat: schema-driven Qt form for new item creation
Some checks failed
Build and Test / build (pull_request) Has been cancelled
Replace Silo_New hardcoded dialog chain with a dynamic SchemaFormDialog
that builds the UI from Silo API schema data at runtime. See submodule
commit for details.
2026-02-11 10:21:44 -06:00
8580e06951 Merge pull request 'fix: Silo_Pull progress dialog crash — PySide6 enum type mismatch' (#173) from fix/pull-progress-modality into main
All checks were successful
Build and Test / build (push) Successful in 43m2s
Reviewed-on: #173
2026-02-11 14:03:28 +00:00
0827d2ad6e fix: Silo_Pull progress dialog crash — PySide6 enum type mismatch
All checks were successful
Build and Test / build (pull_request) Successful in 47m35s
setWindowModality(2) raises TypeError in PySide6 which requires the
proper enum QtCore.Qt.WindowModal instead of a raw integer. This caused
the pull download progress dialog to fail immediately, leaving it hung.
2026-02-11 07:40:21 -06:00
e9c6c74785 Merge pull request 'fix: eliminate window flickering and Sketcher icon clipping' (#172) from fix/ui-flicker-and-icon-clipping into main
Some checks failed
Build and Test / build (push) Has been cancelled
Sync Silo Server Docs / sync (push) Successful in 28s
Reviewed-on: #172
2026-02-11 01:29:27 +00:00
f535286a66 Merge branch 'main' into fix/ui-flicker-and-icon-clipping
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-11 01:29:19 +00:00
forbes
bf637af4e4 fix: eliminate window flickering and Sketcher icon clipping
Some checks failed
Build and Test / build (pull_request) Has been cancelled
- Replace statusBar()->setStyleSheet() with QPalette color changes
  in MainWindow::showStatus() and clearStatus(). The setStyleSheet()
  call triggered full style recalculation on every status message
  (selection, pan, tooltip hover), causing the entire window to flicker.

- Add min-height: 24px to QListView::item in KindredCreate.qss so
  Sketcher constraint and element icons (24x24) are not clipped by
  the 4px padding.
2026-02-10 19:28:22 -06:00
0d2044c130 Merge pull request 'fix: update silo submodule — save Modified fix and SSE retry reset' (#171) from fix/silo-sse-and-save into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #171
2026-02-11 01:16:58 +00:00
forbes
b888e4a3c3 fix: update silo submodule — save Modified fix and SSE retry reset
Some checks failed
Build and Test / build (pull_request) Has been cancelled
- Re-apply Gui.Document.Modified fix lost in rebase
- Add traceback logging to save error handler
- Reset SSE retry counter after stable connections (>30s)
2026-02-10 19:00:22 -06:00
15c11b4026 Merge pull request 'fix: Silo_Pull crash — App.Document has no IsModified() attribute' (#170) from fix/pull-is-modified-bug into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #170
2026-02-10 16:40:03 +00:00
99ff7d1a09 fix: Silo_Pull crash — App.Document has no IsModified() attribute
Some checks failed
Build and Test / build (pull_request) Has been cancelled
_check_pull_conflicts() called doc.IsModified() which does not exist on
App.Document. Use FreeCADGui.getDocument().Modified instead, matching
the pattern used elsewhere in silo_commands.py.
2026-02-10 10:39:18 -06:00
460a1e9038 Merge pull request 'feat: native Qt start panel + kindred:// URL scheme' (#169) from feat/native-start-panel-167 into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #169
2026-02-10 16:38:49 +00:00
c822fad5e1 Merge branch 'main' into feat/native-start-panel-167
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-10 16:38:36 +00:00
8b2ce4b73a feat: native Qt start panel + kindred:// URL scheme (#167)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
Replace QWebEngineView-based start page with a rich native Qt panel.
QWebEngineView (PySide6.QtWebEngineWidgets) is not available on
conda-forge for Qt6, so the start page was always falling back to a
bare offline widget.

Start panel (silo_start.py):
- Database Items list with search from Silo REST API
- Recent Files from FreeCAD preferences
- Real-time Activity Feed via SSE (SiloEventListener)
- Context menu: Open in Create, Open in Browser, Copy Part Number
- 'Open in Browser' button via QDesktopServices
- Catppuccin Mocha dark theme

kindred:// URL scheme:
- Desktop file registers x-scheme-handler/kindred MIME type
- MainWindow::processMessages() dispatches kindred:// URLs to Python
- handle_kindred_url() in silo_commands.py opens items by part number
- InitGui.py handles kindred:// URLs on cold start via QTimer

Closes #167
2026-02-10 10:30:50 -06:00
87b23c5aae Merge pull request 'docs: C++ API reference, signal architecture, and build integration' (#166) from docs/api-reference into main
Some checks failed
Deploy Docs / build-and-deploy (push) Successful in 29s
Build and Test / build (push) Has been cancelled
Reviewed-on: #166
2026-02-10 14:41:51 +00:00
8247127905 merge: resolve build.yml conflict with main
All checks were successful
Build and Test / build (pull_request) Successful in 35m52s
Keep Kindred addon test step, drop removed cache-date step.
2026-02-10 08:41:29 -06:00
779e32e24a docs(dev): Gui module build integration
All checks were successful
Build and Test / build (pull_request) Successful in 1h20m55s
Covers FreeCADGui target definition, dependency chain (fastsignals,
Qt6, Coin3D, PySide6, PyCXX), source file organisation and how to
add new files, theme/stylesheet build-time copying, version constants,
precompiled headers, CMake presets, ccache, and pixi tasks.

Closes #138
2026-02-10 08:36:50 -06:00
5774f42876 docs(arch): signal architecture — fastsignals vs Qt signals
Explains the dual-signal system: fastsignals for domain events
(origin lifecycle, document changes, application state) and Qt signals
for UI framework integration. Covers API, connection patterns
(scoped_connection RAII, DocumentObserver, temporary blocking),
thread safety model, performance, and common mistakes.

Closes #137
2026-02-10 08:32:07 -06:00
1561dff860 docs(c++): guide to creating a custom origin in C++
Step-by-step walkthrough covering class definition, identity methods,
ownership detection with tracking properties, document operations,
capability flags, extended PLM operations, connection lifecycle,
OriginManager registration, and CMake build integration.

Closes #136
2026-02-10 08:27:01 -06:00
c25aa17591 docs(c++): OriginSelectorWidget toolbar integration
Covers widget lifecycle, signal connections (fastsignals), menu
population, origin selection with authentication gate, icon overlays
for connection state, StdCmdOrigin/OriginSelectorAction command
wrappers, and StdWorkbench toolbar placement.

Closes #133
2026-02-10 08:18:05 -06:00
8fd664d509 docs(c++): LocalFileOrigin implementation guide
Covers ownership-by-exclusion algorithm, document identity, open/save
workflows, capability flags, connection state, OriginManager integration,
and unregister protection.

Closes #131
2026-02-10 08:14:29 -06:00
77e5063b95 docs: deduplicate silo server content in favor of silo-server/ authority
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/).
2026-02-10 08:07:21 -06:00
c9f6f9e02b docs(c++): FileOriginPython bridge — Python-to-C++ origin adapter
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
2026-02-10 08:02:02 -06:00
633bef6b18 docs(c++): CommandOrigin commands (Commit/Pull/Push/Info/BOM)
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
2026-02-10 07:59:45 -06:00
98218661d0 docs(c++): OriginManager singleton API reference
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
2026-02-10 07:55:46 -06:00
bdbe1b163a docs: add FileOrigin API reference and Kindred addon test suite
- 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
2026-02-10 07:54:26 -06:00
185460077e Merge pull request 'fix(ci): improve ccache persistence across builds' (#128) from fix/ci-cache-strategy into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #128
2026-02-10 12:58:19 +00:00
f7f44414ef Merge branch 'main' into fix/ci-cache-strategy
All checks were successful
Build and Test / build (pull_request) Successful in 40m34s
2026-02-10 12:58:09 +00:00
8e387a35b1 Merge pull request 'fix: update silo submodule — save Modified attribute fix' (#129) from fix/silo-save-modified into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #129
2026-02-10 12:57:02 +00:00
forbes
0745309559 fix: update silo submodule — save Modified attribute fix (#13)
All checks were successful
Build and Test / build (pull_request) Successful in 1h15m2s
Pins silo to silo-mod@7cf5867 which fixes:
- 'App.Document' object has no attribute 'Modified' error on every save
  (uses Gui.Document.Modified instead of App.Document.Modified)
2026-02-09 18:40:54 -06:00
forbes
dfc32cabd6 fix(ci): fix ccache 0% hit rate and improve cache persistence
All checks were successful
Build and Test / build (pull_request) Successful in 1h16m6s
Root cause: compiler_check=mtime (default) invalidates the entire
cache on every run because pixi installs fresh compiler binaries with
new mtimes each time. The CI logs confirm 0/2579 cache hits (0.00%)
despite successfully restoring a 225MB cache.

Fix: set CCACHE_COMPILERCHECK=content to hash compiler binary content
instead of mtime. Same compiler version = same content = cache hits.

Also fix cache save strategy: use github.run_id for save keys so every
build persists its ccache objects. Previously date-based keys with
cache-hit guard meant the cache was only saved once per day — all
subsequent compilations were thrown away.

Changes:
- Add CCACHE_COMPILERCHECK=content to build.yml, release.yml, build.sh
- Use github.run_id in cache save keys (unique per run = always saves)
- Remove date-based cache key computation step
- Remove cache-hit != true guard on save step
- Add ccache-build-main- fallback to release workflow restore-keys
2026-02-09 18:04:17 -06:00
f8a9fa0103 Merge pull request 'fix: set NODE_EXTRA_CA_CERTS for artifact upload/download actions' (#127) from fix/build-artifact-ca-cert into main
Some checks failed
Build and Test / build (push) Has been cancelled
Sync Silo Server Docs / sync (push) Successful in 31s
Reviewed-on: #127
2026-02-09 18:59:46 +00:00
44b9b4e8df fix: set NODE_EXTRA_CA_CERTS for artifact upload/download actions
Some checks failed
Build and Test / build (pull_request) Has been cancelled
Node.js actions (checkout, cache, upload-artifact, download-artifact)
use their own TLS stack and don't trust the system CA store. Setting
NODE_EXTRA_CA_CERTS points Node to the system bundle which includes
the Cloudflare origin CA.
2026-02-09 12:59:21 -06:00
5035cf7f93 Merge pull request 'fix: replace sparse-checkout with shallow clone for silo docs' (#126) from fix/silo-docs-sparse-checkout into main
Some checks failed
Build and Test / build (push) Has been cancelled
Deploy Docs / build-and-deploy (push) Successful in 24s
Reviewed-on: #126
2026-02-09 18:56:44 +00:00
3406df52aa fix: replace sparse-checkout with shallow clone for silo docs
Some checks failed
Build and Test / build (pull_request) Has been cancelled
git sparse-checkout fails on individual files (README.md, ROADMAP.md)
with 'is not a directory' error. A shallow clone is simpler and the
silo repo is small enough that it's fine.
2026-02-09 12:56:13 -06:00
e72ab9465f Merge pull request 'fix: clean /tmp/silo before cloning in docs workflows' (#125) from fix/silo-docs-tmp-cleanup into main
Some checks failed
Deploy Docs / build-and-deploy (push) Failing after 26s
Build and Test / build (push) Has been cancelled
Reviewed-on: #125
2026-02-09 18:54:52 +00:00
b3c1ebb94e fix: clean /tmp/silo before cloning in docs workflows
Some checks failed
Build and Test / build (pull_request) Has been cancelled
The docs runner persists state between runs, so /tmp/silo may
already exist from a previous (possibly failed) run.
2026-02-09 12:53:24 -06:00
a3c650bea0 Merge pull request 'fix: sync-silo-docs workflow to run on docs runner' (#124) from fix/sync-docs-runner into main
Some checks failed
Deploy Docs / build-and-deploy (push) Failing after 28s
Build and Test / build (push) Has been cancelled
Reviewed-on: #124
2026-02-09 18:52:14 +00:00
c75b9a5605 fix: sync-silo-docs workflow to run on docs runner
Some checks failed
Build and Test / build (pull_request) Has been cancelled
- Change runs-on from ubuntu-latest to docs
- Use internal gitea:3000 URLs for clone and push
- Remove unnecessary apt-get/CA cert steps (docs runner has access)
- Fix push to use authenticated URL via RELEASE_TOKEN
2026-02-09 12:51:33 -06:00
11eea63f70 Merge pull request 'docs: add Silo server documentation with auto-sync workflow (#122)' (#123) from docs/sync-silo-server-docs into main
Some checks failed
Deploy Docs / build-and-deploy (push) Failing after 28s
Build and Test / build (push) Has been cancelled
Reviewed-on: #123
2026-02-09 18:39:01 +00:00
c3a1927bd3 docs: add Silo server documentation with auto-sync workflow (#122)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
- Add sync-silo-docs.yml workflow (daily schedule + webhook dispatch)
- Copy initial Silo server docs into docs/src/silo-server/
- Update SUMMARY.md with Silo Server section
- Update docs.yml to fetch fresh silo docs before mdbook build
2026-02-09 12:37:45 -06:00
c0d67b236d Merge pull request 'fix: update silo submodule to silo-mod main' (#121) from fix/silo-submodule-ref into main
Some checks failed
Build and Test / build (push) Failing after 1h5m46s
Reviewed-on: #121
2026-02-09 17:30:31 +00:00
0ef68ea7f4 fix: update silo submodule to silo-mod main
Some checks failed
Build and Test / build (pull_request) Has been cancelled
Points mods/silo to silo-mod@8937cb5 which includes the Silo-aware
start page (silo_start.py + InitGui.py override). The previous ref
pointed to a commit from the wrong repo (kindred/silo instead of
kindred/silo-mod), causing checkout failures.
2026-02-09 11:29:56 -06:00
c4f19cfcdf Merge pull request 'fix(ci): add CA certificate update before checkout' (#120) from fix/ci-self-hosted-actions into main
Some checks failed
Build and Test / build (push) Failing after 3m20s
Reviewed-on: #120
2026-02-09 17:20:02 +00:00
fdac0f9635 Merge branch 'main' into fix/ci-self-hosted-actions
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-09 17:19:52 +00:00