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.
- 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
New features:
- SSE reconnect with exponential backoff and terminal state handling
- Silo_Diag connection diagnostics command
- Server mode UI reflection in client
- Silo-aware start panel
- Database Activity pane with comments, interaction, and badges
Document (fixes#37):
- Increase max undo/redo steps from 20 to 50
- Reduce auto-save interval from 15 to 5 minutes
- Increase max backup files from 1 to 3
- Set license to Other with blank URL (removes Wikipedia link)
Selection (fixes#38):
- Enable preselect-on-tree-hover (PreSelection)
- Enable auto-switch to 3D view (SyncView)
- Enable auto-expand tree item (SyncSelection)
Notification Area (fixes#40):
- Reduce max notification list from 1000 to 100
- Reduce max concurrent popups from 15 to 3
- Reduce bubble width from 800px to 400px
- Reduce max popup duration from 20s to 10s
- Reduce min popup duration from 5s to 3s
- Fix hazy text on Wayland by setting QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor
and QT_ENABLE_HIGHDPI_SCALING=1 in deb and AppImage launchers; remove forced
QT_QPA_PLATFORM=xcb from AppImage to allow native Wayland (fixes#33)
- Add menu icon size preference selector (Small/Medium/Large/Extra large) in
General preferences, applied via QMenu stylesheet at startup and on save (fixes#46)
- Replace verbose theme customization banner with concise 'Kindred Create Theme'
label in UI preferences; split Overlay group into 'Panel Visibility' and
'Overlay Interaction' sections (fixes#35)
- Remove Addon Manager branding label from General preferences, change recent
file list default from 4 to 10 (fixes#36)
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#28Closes#29
Silo origin was not appearing in the origin selector because
silo_origin.py used a relative import (from .silo_commands) which
fails since the directory is not a Python package. Updated submodule
includes the fix to use absolute imports.
Replace stub QMessageBox in Add Silo and Edit Origin buttons with
actual calls to the Silo_Settings command, so users can configure
their Silo connection from the origin manager dialog.
- Increase OriginSelectorWidget max width from 120 to 160px for longer
origin names
- Set explicit SizePolicy::Preferred for better toolbar layout
- Update silo submodule to fix/silo-workbench-bugs with auth and menu fixes
- Change both build.yml and release.yml to fetch only the latest v* tag
via git ls-remote instead of fetching all tags
- Add patchelf as a Linux build dependency in recipe.yaml to fix
rattler-build packaging failure
- Exclude appimagetool from artifact upload (FreeCAD_*.AppImage glob)
- Build release JSON payload in Python to fix false/False type error
(shell 'false' is not valid Python; use bool with re.search instead)
The build environment (via qt6-main) was pulling ICU 78 headers while
the host/runtime environment had ICU 75 pinned. The compiled binary
contained icu_78 mangled symbols that fail to resolve against ICU 75
shared libs at runtime. Pin icu>=75,<76 in build deps to match.
- Cache key: replace run_id (unique per build) with date-based key
so entries are reused within the same day and rotate daily
- Skip cache save on exact hit (act_runner can't overwrite keys)
- build.sh: set CCACHE_DIR/CCACHE_BASEDIR inside rattler-build's
isolated env so release builds actually use the cached directory
- build.sh: print ccache stats at end for diagnostics
- Add disk space cleanup step to build.yml (matching release.yml)
- Remove cross-build cache fallback in release.yml (different -O flags)
- Add runner cleanup daemon (.gitea/runner/) with systemd timer
to purge stale cache entries, Docker data, and old workspaces
The runner host disk is at 95% capacity. Add cleanup steps:
- Remove pre-installed bloat (dotnet, android, boost) at start
- Clear rattler package cache and pixi build dirs between
AppImage and .deb build steps
The gitea.com/actions/release-action is archived and requires go to
build from source, which isn't available in the ubuntu-latest runner.
Replace with curl calls to the Gitea release API: create release,
upload assets. Handles existing releases by deleting and recreating.
The build environment resolved ICU 78 headers while the host environment
had ICU 75 libraries (constrained by xerces-c, qt6-main, etc.). This
caused libFreeCADBase.so to contain icu_78 mangled symbols that couldn't
be found in the bundled ICU 75 libs at runtime:
undefined symbol: _ZN6icu_7813UnicodeString8fromUTF8ENS_11StringPieceE
Pin ICU explicitly in both recipe.yaml host deps and pixi.toml to ensure
headers and libs always match.
The silo submodule now uses silo-mod layout where the FreeCAD workbench
is at freecad/ (not pkg/freecad/). Also install the silo-client
submodule directory.
appimagetool is an AppImage itself and requires FUSE to self-mount.
CI containers typically don't have FUSE. Extract it with
--appimage-extract and run squashfs-root/AppRun instead.
Copy silo-bom, silo-commit, silo-info, silo-pull, and silo-push SVG
icons from mods/silo/pkg/freecad/resources/icons/ into src/Gui/Icons/
and register them in resource.qrc so they are compiled into the binary
and discoverable by BitmapFactory at runtime.
- OriginSelectorWidget: use BitmapFactoryInst::mergePixmap() instead of
BitmapFactory::mergePixmap() since BitmapFactory is a function, not a class
- OriginManager: use Console().log() instead of Console().Log() which
does not exist on ConsoleSingleton
viewDefaultOrientation is a method on View3DInventorPy (Python wrapper),
not on View3DInventorViewer (C++ viewer). Use doCommand with the Python
API, matching the pattern used in StdCmdViewHome.