Compare commits

..

24 Commits

Author SHA1 Message Date
7411508b36 Merge branch 'main' into fix/qss-theme-polish
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-09 01:39:39 +00:00
766f9b491c Merge pull request 'fix: update ztools submodule — parametric tangent-to-cylinder datums (#58)' (#81) from fix/tangent-cylinder-attachment into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #81
2026-02-09 01:39:23 +00:00
ad34cffcd6 Merge branch 'main' into fix/tangent-cylinder-attachment
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-09 01:39:13 +00:00
cecd4988a8 Merge pull request 'fix(UX): update silo submodule — BOM registration path (#56)' (#80) from fix/bom-registration-path into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #80
2026-02-09 01:39:03 +00:00
forbes
977fa3c934 fix(theme): QGroupBox indicator, hyperlink color, and report defaults
Some checks failed
Build and Test / build (pull_request) Has been cancelled
- Add QGroupBox::indicator styles matching QCheckBox::indicator for
  consistent checkbox appearance in checkable group boxes (#44)
- Add QLabel[haslink] color rule using Catppuccin lavender (#b4befe)
  so hyperlinks render correctly in the dark theme (#43)
- Add checkLogging and checkShowReportViewOnError defaults to the
  KindredCreate preference pack (#41)

Closes #41, closes #43, closes #44
2026-02-08 19:38:22 -06:00
forbes
f0f4c068d2 fix: update ztools submodule — parametric tangent-to-cylinder datums (#58)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
Uses TangentPlane MapMode with a derived vertex reference so
tangent-to-cylinder datums auto-update when cylinder geometry changes.

Closes #58
2026-02-08 19:38:18 -06:00
forbes
5f43b534d9 fix(UX): update silo submodule — BOM registration path (#56)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
Replaces dead-end warning in Silo_BOM with a question dialog that
offers to register the document via Silo_New before continuing.

Closes #56
2026-02-08 19:38:18 -06:00
599d4b23a8 Merge pull request 'fix: update ztools submodule — angled datum live editing (#66)' (#79) from fix/angled-datum-edit into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #79
2026-02-09 01:37:18 +00:00
d136ee3ebe Merge branch 'main' into fix/angled-datum-edit
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-09 01:37:07 +00:00
561d634934 Merge pull request 'art: update silo submodule — add missing command icons (#60)' (#78) from fix/missing-silo-icons into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #78
2026-02-09 01:36:57 +00:00
forbes
eb57f80e72 fix: update ztools submodule — angled datum live editing (#66)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
Updates AttachmentOffset.Rotation during angled datum editing so the
datum moves in real-time as the angle spinner changes. Adds
_resolve_source_refs() helper and tangent_cylinder manual fallback.

Closes #66
2026-02-08 19:35:14 -06:00
forbes
098f0233c4 art: update silo submodule — add missing command icons (#60)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
Adds silo-tag.svg, silo-rollback.svg, silo-status.svg icons in
Catppuccin Mocha style for Silo_TagProjects, Silo_Rollback, Silo_SetStatus.

Closes #60
2026-02-08 19:35:01 -06:00
68690f3b22 Merge pull request 'fix: update silo submodule — delete_bom_entry error normalization (#59)' (#77) from fix/delete-bom-entry-request into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #77
2026-02-09 01:33:16 +00:00
087fe99324 Merge branch 'main' into fix/delete-bom-entry-request
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-09 01:33:06 +00:00
7033744656 Merge pull request 'fix: update ztools submodule — robust PartDesign menu insertion (#57)' (#72) from fix/menu-insertion-fragility into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #72
2026-02-09 01:32:56 +00:00
forbes
84c1776f92 fix: update ztools submodule — robust PartDesign menu insertion (#57)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
Replaces fragile chained insert operations in modifyMenuBar() with
independent append operations using PartDesign_Body as parent-locator.

Closes #57
2026-02-08 19:32:31 -06:00
f391c526cd Merge pull request 'fix: update ztools submodule — eager command registration (#52)' (#71) from fix/manipulator-timing into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #71
2026-02-09 01:28:33 +00:00
ac4f01c5c0 Merge branch 'main' into fix/manipulator-timing
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-09 01:28:20 +00:00
1d2a11572d Merge pull request 'fix(theme): eliminate QSS/CFG duplication (#51)' (#70) from fix/qss-duplication into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #70
2026-02-09 01:28:07 +00:00
forbes
b3a6c9d925 merge: resolve conflicts with main (docs)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-08 19:27:52 -06:00
7c84eeb68d Merge pull request 'docs: repository cleanup and documentation update' (#50) from chore/repo-cleanup-docs into main
Some checks failed
Build and Test / build (push) Has been cancelled
Reviewed-on: #50
2026-02-09 01:26:31 +00:00
forbes
590cb9f6c3 fix: update silo submodule — delete_bom_entry error normalization (#59)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
2026-02-08 18:30:07 -06:00
forbes
0a0ac547ef fix: update ztools submodule — eager command registration (#52)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
Updates ztools to include the manipulator timing fix. Commands and the
PartDesign manipulator are now registered at module scope instead of
during ZToolsWorkbench.Initialize(), ensuring ztools buttons appear in
PartDesign regardless of workbench activation order.
2026-02-08 17:58:29 -06:00
forbes
6773ca0dfd fix(theme): eliminate QSS/CFG duplication (#51)
Some checks failed
Build and Test / build (pull_request) Has been cancelled
- 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
2026-02-08 17:41:26 -06:00
14 changed files with 77 additions and 2767 deletions

View File

@@ -100,7 +100,7 @@ create/
├── mods/ # Kindred addon workbenches (git submodules)
│ ├── ztools/ # ztools workbench
│ └── silo/ # Silo parts database
├── resources/preferences/ # Default preferences and theme
├── resources/ # Branding, icons, desktop integration
├── package/ # Packaging (Debian, AppImage, Windows installer, RPM)
├── .gitea/workflows/ # CI/CD (build and release pipelines)
├── docs/ # Architecture and integration docs

View File

@@ -55,7 +55,7 @@ mods/silo/ [submodule -> silo-mod.git] FreeCAD workbench
└── silo_origin.py FileOrigin backend for Silo
src/Gui/Stylesheets/ QSS themes and SVG assets
resources/preferences/ Canonical preference pack (KindredCreate)
src/Gui/PreferencePacks/ KindredCreate preference pack (cfg + build-time QSS)
```
See [INTEGRATION_PLAN.md](INTEGRATION_PLAN.md) for architecture layers and phase status.

View File

@@ -82,17 +82,14 @@ These appear in the File menu and "Origin Tools" toolbar across all workbenches
## Theme
**Canonical source:** `resources/preferences/KindredCreate/KindredCreate.qss`
**Canonical source:** `src/Gui/Stylesheets/KindredCreate.qss`
Three copies must stay in sync (see [KNOWN_ISSUES.md](KNOWN_ISSUES.md) for planned consolidation):
1. `resources/preferences/KindredCreate/KindredCreate.qss` (canonical)
2. `src/Gui/Stylesheets/KindredCreate.qss`
3. `src/Gui/PreferencePacks/KindredCreate/KindredCreate.qss`
The PreferencePacks copy (`src/Gui/PreferencePacks/KindredCreate/KindredCreate.qss`) is generated at build time via `configure_file()` in `src/Gui/PreferencePacks/CMakeLists.txt`. Only the Stylesheets copy needs to be maintained.
Notable theme customizations beyond standard Catppuccin colors:
- `QGroupBox::indicator` styling to match `QCheckBox::indicator` (consistent checkbox appearance)
- `QLabel[haslink="true"]` link color (`#b4befe` Catppuccin Lavender) -- picked up by FreeCAD to set `QPalette::Link`
- Spanning-line tree branch indicators (in Stylesheets copy) vs disclosure arrows (in other copies)
- Spanning-line tree branch indicators
---

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
### Critical
1. **QSS duplication.** Four copies of the stylesheet must be kept in sync manually. A build step or symlinks should eliminate this.
1. ~~**QSS duplication.**~~ Resolved. The canonical QSS lives in `src/Gui/Stylesheets/KindredCreate.qss`. The PreferencePacks copy is now generated at build time via `configure_file()` in `src/Gui/PreferencePacks/CMakeLists.txt`. The unused `resources/preferences/KindredCreate/` directory has been removed.
2. **WorkbenchManipulator timing.** The `_ZToolsPartDesignManipulator` appends commands by name. If ZToolsWorkbench hasn't been activated when the user switches to PartDesign, the commands may not be registered. The manipulator API tolerates missing commands silently, but buttons won't appear.

View File

@@ -1,129 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<FCParameters>
<FCParamGroup Name="Root">
<FCParamGroup Name="BaseApp">
<FCParamGroup Name="Preferences">
<FCParamGroup Name="Editor">
<FCUInt Name="Text" Value="3453416703"/>
<FCUInt Name="Bookmark" Value="3032415999"/>
<FCUInt Name="Breakpoint" Value="4086016255"/>
<FCUInt Name="Keyword" Value="3416717311"/>
<FCUInt Name="Comment" Value="2139095295"/>
<FCUInt Name="Block comment" Value="2139095295"/>
<FCUInt Name="Number" Value="4206069759"/>
<FCUInt Name="String" Value="2799935999"/>
<FCUInt Name="Character" Value="4073902335"/>
<FCUInt Name="Class name" Value="2310339327"/>
<FCUInt Name="Define name" Value="2310339327"/>
<FCUInt Name="Operator" Value="2312199935"/>
<FCUInt Name="Python output" Value="2796290303"/>
<FCUInt Name="Python error" Value="4086016255"/>
<FCUInt Name="Current line highlight" Value="1162304255"/>
</FCParamGroup>
<FCParamGroup Name="OutputWindow">
<FCUInt Name="colorText" Value="3453416703"/>
<FCUInt Name="colorLogging" Value="2497893887"/>
<FCUInt Name="colorWarning" Value="4192382975"/>
<FCUInt Name="colorError" Value="4086016255"/>
</FCParamGroup>
<FCParamGroup Name="View">
<FCUInt Name="BackgroundColor" Value="505294591"/>
<FCUInt Name="BackgroundColor2" Value="286333951"/>
<FCUInt Name="BackgroundColor3" Value="404235775"/>
<FCUInt Name="BackgroundColor4" Value="825378047"/>
<FCBool Name="Simple" Value="0"/>
<FCBool Name="Gradient" Value="1"/>
<FCBool Name="UseBackgroundColorMid" Value="0"/>
<FCUInt Name="HighlightColor" Value="3416717311"/>
<FCUInt Name="SelectionColor" Value="3032415999"/>
<FCUInt Name="PreselectColor" Value="2497893887"/>
<FCUInt Name="DefaultShapeColor" Value="1482387711"/>
<FCBool Name="RandomColor" Value="0"/>
<FCUInt Name="DefaultShapeLineColor" Value="2470768383"/>
<FCUInt Name="DefaultShapeVertexColor" Value="2470768383"/>
<FCUInt Name="BoundingBoxColor" Value="1819509759"/>
<FCUInt Name="AnnotationTextColor" Value="3453416703"/>
<FCUInt Name="SketchEdgeColor" Value="3453416703"/>
<FCUInt Name="SketchVertexColor" Value="3453416703"/>
<FCUInt Name="EditedEdgeColor" Value="3416717311"/>
<FCUInt Name="EditedVertexColor" Value="4123402495"/>
<FCUInt Name="ConstructionColor" Value="4206069759"/>
<FCUInt Name="ExternalColor" Value="4192382975"/>
<FCUInt Name="FullyConstrainedColor" Value="2799935999"/>
<FCUInt Name="InternalAlignedGeoColor" Value="1959907071"/>
<FCUInt Name="FullyConstraintElementColor" Value="2799935999"/>
<FCUInt Name="FullyConstraintConstructionElementColor" Value="2497893887"/>
<FCUInt Name="FullyConstraintInternalAlignmentColor" Value="2312199935"/>
<FCUInt Name="FullyConstraintConstructionPointColor" Value="2799935999"/>
<FCUInt Name="ConstrainedIcoColor" Value="2310339327"/>
<FCUInt Name="NonDrivingConstrDimColor" Value="2139095295"/>
<FCUInt Name="ConstrainedDimColor" Value="3416717311"/>
<FCUInt Name="ExprBasedConstrDimColor" Value="4206069759"/>
<FCUInt Name="DeactivatedConstrDimColor" Value="1819509759"/>
<FCUInt Name="CursorTextColor" Value="3453416703"/>
<FCUInt Name="CursorCrosshairColor" Value="3416717311"/>
<FCUInt Name="CreateLineColor" Value="2799935999"/>
<FCUInt Name="ShadowLightColor" Value="2470768128"/>
<FCUInt Name="ShadowGroundColor" Value="286333952"/>
<FCUInt Name="HiddenLineColor" Value="825378047"/>
<FCUInt Name="HiddenLineFaceColor" Value="505294591"/>
<FCUInt Name="HiddenLineBackground" Value="505294591"/>
<FCBool Name="EnableBacklight" Value="1"/>
<FCUInt Name="BacklightColor" Value="1162304255"/>
<FCFloat Name="BacklightIntensity" Value="0.30"/>
</FCParamGroup>
<FCParamGroup Name="Document">
<FCInt Name="MaxUndoSize" Value="50"/>
<FCInt Name="AutoSaveTimeout" Value="5"/>
<FCInt Name="CountBackupFiles" Value="3"/>
<FCInt Name="prefLicenseType" Value="19"/>
<FCText Name="prefLicenseUrl"></FCText>
</FCParamGroup>
<FCParamGroup Name="TreeView">
<FCUInt Name="TreeEditColor" Value="3416717311"/>
<FCUInt Name="TreeActiveColor" Value="2799935999"/>
<FCBool Name="PreSelection" Value="1"/>
<FCBool Name="SyncView" Value="1"/>
<FCBool Name="SyncSelection" Value="1"/>
</FCParamGroup>
<FCParamGroup Name="NotificationArea">
<FCInt Name="MaxWidgetMessages" Value="100"/>
<FCInt Name="MaxOpenNotifications" Value="3"/>
<FCInt Name="NotificiationWidth" Value="400"/>
<FCInt Name="NotificationTime" Value="10"/>
<FCInt Name="MinimumOnScreenTime" Value="3"/>
</FCParamGroup>
<FCParamGroup Name="General">
<FCText Name="AutoloadModule">ZToolsWorkbench</FCText>
</FCParamGroup>
<FCParamGroup Name="MainWindow">
<FCText Name="StyleSheet">KindredCreate.qss</FCText>
</FCParamGroup>
<FCParamGroup Name="Mod">
<FCParamGroup Name="Start">
<FCUInt Name="BackgroundColor1" Value="404235775"/>
<FCUInt Name="BackgroundTextColor" Value="3453416703"/>
<FCUInt Name="PageColor" Value="505294591"/>
<FCUInt Name="PageTextColor" Value="3453416703"/>
<FCUInt Name="BoxColor" Value="825378047"/>
<FCUInt Name="LinkColor" Value="2310339327"/>
<FCUInt Name="BackgroundColor2" Value="286333951"/>
</FCParamGroup>
<FCParamGroup Name="Part">
<FCUInt Name="VertexColor" Value="3032415999"/>
<FCUInt Name="EdgeColor" Value="2310339327"/>
</FCParamGroup>
<FCParamGroup Name="PartDesign">
<FCUInt Name="DefaultDatumColor" Value="3416717311"/>
</FCParamGroup>
<FCParamGroup Name="Draft">
<FCUInt Name="snapcolor" Value="2799935999"/>
</FCParamGroup>
<FCParamGroup Name="Sketcher">
<FCUInt Name="GridLineColor" Value="1162304255"/>
</FCParamGroup>
</FCParamGroup>
</FCParamGroup>
</FCParamGroup>
</FCParamGroup>
</FCParameters>

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<package format="1" xmlns="https://wiki.freecad.org/Package_Metadata">
<name>Kindred Create Preference Packs</name>
<description>Default preference packs for Kindred Create, featuring the Catppuccin Mocha color theme.</description>
<version>0.1.0</version>
<maintainer email="support@kindredsystems.net">Kindred Systems LLC</maintainer>
<license>LGPL-2.1-or-later</license>
<url type="website">https://kindredsystems.net</url>
<content>
<preferencepack>
<name>KindredCreate</name>
<description>The default Kindred Create theme based on Catppuccin Mocha - a soothing dark color palette.</description>
</preferencepack>
</content>
</package>

View File

@@ -12,6 +12,14 @@ ADD_CUSTOM_TARGET(PreferencePacks_data ALL
FILE(COPY ${PreferencePacks_Files} ${PreferencePacks_Directories} DESTINATION "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks")
# Copy KindredCreate.qss from Stylesheets into the PreferencePacks build directory.
# The canonical QSS lives in src/Gui/Stylesheets/; this avoids maintaining a duplicate. (#51)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/../Stylesheets/KindredCreate.qss
${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks/KindredCreate/KindredCreate.qss
COPYONLY
)
fc_copy_sources(PreferencePacks_data "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks"
${PreferencePacks_Files}
${PreferencePacks_Directories})
@@ -23,9 +31,10 @@ INSTALL(
${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks
)
# Install from build directory so the generated QSS copy is included
INSTALL(
DIRECTORY
${PreferencePacks_Directories}
${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks/KindredCreate
DESTINATION
${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks
)

View File

@@ -25,6 +25,10 @@
<FCUInt Name="colorLogging" Value="2497893887" />
<FCUInt Name="colorWarning" Value="4192382975" />
<FCUInt Name="colorError" Value="4086016255" />
<FCBool Name="checkError" Value="1" />
<FCBool Name="checkLogging" Value="1" />
<FCBool Name="checkShowReportViewOnError" Value="1" />
<FCBool Name="checkShowReportViewOnWarning" Value="1" />
</FCParamGroup>
<FCParamGroup Name="View">
<FCUInt Name="BackgroundColor" Value="505294591" />
@@ -81,9 +85,29 @@
<FCUInt Name="BacklightColor" Value="1162304255" />
<FCFloat Name="BacklightIntensity" Value="0.30" />
</FCParamGroup>
<FCParamGroup Name="Document">
<FCInt Name="MaxUndoSize" Value="50" />
<FCInt Name="AutoSaveTimeout" Value="5" />
<FCInt Name="CountBackupFiles" Value="3" />
<FCInt Name="prefLicenseType" Value="19" />
<FCText Name="prefLicenseUrl"></FCText>
</FCParamGroup>
<FCParamGroup Name="TreeView">
<FCUInt Name="TreeEditColor" Value="3416717311" />
<FCUInt Name="TreeActiveColor" Value="2799935999" />
<FCBool Name="PreSelection" Value="1" />
<FCBool Name="SyncView" Value="1" />
<FCBool Name="SyncSelection" Value="1" />
</FCParamGroup>
<FCParamGroup Name="NotificationArea">
<FCInt Name="MaxWidgetMessages" Value="100" />
<FCInt Name="MaxOpenNotifications" Value="3" />
<FCInt Name="NotificiationWidth" Value="400" />
<FCInt Name="NotificationTime" Value="10" />
<FCInt Name="MinimumOnScreenTime" Value="3" />
</FCParamGroup>
<FCParamGroup Name="General">
<FCText Name="AutoloadModule">ZToolsWorkbench</FCText>
</FCParamGroup>
<FCParamGroup Name="MainWindow">
<FCText Name="StyleSheet">KindredCreate.qss</FCText>

File diff suppressed because it is too large Load Diff

View File

@@ -744,6 +744,33 @@ QGroupBox::title {
background-color: #1e1e2e;
}
QGroupBox::indicator {
width: 18px;
height: 18px;
border: 2px solid #585b70;
border-radius: 4px;
background-color: #313244;
}
QGroupBox::indicator:hover {
border-color: #cba6f7;
}
QGroupBox::indicator:checked {
background-color: #cba6f7;
border-color: #cba6f7;
}
QGroupBox::indicator:checked:disabled {
background-color: #6c7086;
border-color: #6c7086;
}
QGroupBox::indicator:disabled {
background-color: #181825;
border-color: #45475a;
}
/* =============================================================================
Tree View
============================================================================= */
@@ -985,6 +1012,11 @@ QLabel:disabled {
color: #6c7086;
}
/* Hyperlinks — sets QPalette::Link via Application.cpp haslink mechanism */
QLabel[haslink="true"] {
color: #b4befe;
}
/* =============================================================================
Frames
============================================================================= */