Skip to content

chore: merge develop into main for 1.6.0 release - #65

Merged
JeanPhilippeKernel merged 35 commits into
mainfrom
release/1.6.0
Aug 24, 2026
Merged

JeanPhilippeKernel merged 35 commits into
mainfrom
release/1.6.0

Conversation

@JeanPhilippeKernel

Copy link
Copy Markdown
Owner

Changes since 1.5.0

Merge to main triggers Release Please to open the chore: release 1.6.0 PR.

JeanPhilippeKernel and others added 30 commits July 29, 2026 17:03
* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability
Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.
…errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)
…ization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)
* docs: update README with current screenshots

* docs: add local engine path guide for contributors
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix: improve startup perf and switch to native title bar

- Add PublishReadyToRun to all Release configurations to cut cold-start JIT time
- Move RefreshInstalledEngines, ScanLocalAssets, and LoadProjectsAsync to
  background tasks with status bar feedback so the window opens immediately
- Remove acrylic/extended client area in favour of a solid WindowBackground
  and standard OS title bar to avoid per-platform chrome friction

* feat: show orange border on RC builds, automated via CI

- Add IsRcBuild property reading AssemblyInformationalVersionAttribute to
  detect -rc suffix at runtime
- Add non-interactive orange border overlay in MainWindow visible only on RC builds
- Inject InformationalVersion from the git tag at publish time in all three
  platform build jobs so RC binaries automatically activate the indicator
- Orange glow border overlay (3-layer BoxShadow bloom) covers the full
  window edge including title bar via ExtendClientAreaToDecorationsHint
- RootPanel.Margin bound to WindowDecorationMargin so content stays below
  native caption buttons
- Status bar shows full version string including -rc suffix, stripping
  the +commitHash appended by .NET
- IsRcBuild and AppVersion both read AssemblyInformationalVersionAttribute
- Remove acrylic from ProjectWindow, EnginePickerDialog and MessageBoxWindow
  so all dialogs correctly respect light and dark theme
…ilds (#30)

* fix: resolve engine dylib path for release zips and local dev builds

Set the correct platform library search env var when launching the engine:
PATH on Windows, LD_LIBRARY_PATH on Linux, DYLD_LIBRARY_PATH on macOS.
Walk up to 4 parent directories to locate a lib/ folder so both flat
release zip layouts and nested local dev build trees are covered.
Also surface crash details in the toast and validate the project config
exists before attempting to start the engine.

* fix: set execute permission on engine binary before launch

GitHub release zip extraction does not preserve the execute bit on
Unix, causing a permission denied error when launching a tagged engine.

* fix: chmod and ad-hoc codesign engine binaries on macOS before launch

GitHub release zips strip execute bits and corrupt existing signatures.
Fix execute permissions on all tools in bin/, then re-sign every binary
and dylib in the install tree so Gatekeeper does not SIGKILL the process.

* chore: mark ad-hoc codesign block as temporary workaround
Avalonia.FreeDesktop 11.2.1 was compiled against Tmds.DBus.Protocol
0.20.0. Pinning a higher version caused a TypeLoadException on Linux
at Avalonia X11/DBus initialization (exit before window opens).
- Fix Linux debug program path in launch.json
- Pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash; suppress NU1903 warning
- Add Open Location button on installed engine rows to reveal install directory in file manager
- Add Fetch button on available releases header to refresh without restarting the app
- Sort engine picker list by semver descending (most recent first)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* chore: release 1.3.0 (#18)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* Chore: release 1.3.0 (#21)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe0.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: release 1.3.0 (#22)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe0.

* chore: release 1.3.0

---------

Co-authored-by: Jean Philippe <jeanphilippe02666592@outlook.fr>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release/1.4.0 (#35)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe0.

* chore: release 1.3.0 (#23)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* docs(roadmap): add roadmap with planned features and current implementation status (#24)

* fix: restore Windows caption buttons and fix app version display (#25)

* Fix/startup perf and native titlebar (#26)

* fix: improve startup perf and switch to native title bar

- Add PublishReadyToRun to all Release configurations to cut cold-start JIT time
- Move RefreshInstalledEngines, ScanLocalAssets, and LoadProjectsAsync to
  background tasks with status bar feedback so the window opens immediately
- Remove acrylic/extended client area in favour of a solid WindowBackground
  and standard OS title bar to avoid per-platform chrome friction

* feat: show orange border on RC builds, automated via CI

- Add IsRcBuild property reading AssemblyInformationalVersionAttribute to
  detect -rc suffix at runtime
- Add non-interactive orange border overlay in MainWindow visible only on RC builds
- Inject InformationalVersion from the git tag at publish time in all three
  platform build jobs so RC binaries automatically activate the indicator

* fix: bump version to trigger RC build with orange border indicator (#27)

* feat: RC build indicator with orange bloom border and version tag (#28)

- Orange glow border overlay (3-layer BoxShadow bloom) covers the full
  window edge including title bar via ExtendClientAreaToDecorationsHint
- RootPanel.Margin bound to WindowDecorationMargin so content stays below
  native caption buttons
- Status bar shows full version string including -rc suffix, stripping
  the +commitHash appended by .NET
- IsRcBuild and AppVersion both read AssemblyInformationalVersionAttribute
- Remove acrylic from ProjectWindow, EnginePickerDialog and MessageBoxWindow
  so all dialogs correctly respect light and dark theme

* fix: surface engine crash errors and resolve stale rpath for local builds (#30)

* fix: resolve engine dylib path for release zips and local dev builds

Set the correct platform library search env var when launching the engine:
PATH on Windows, LD_LIBRARY_PATH on Linux, DYLD_LIBRARY_PATH on macOS.
Walk up to 4 parent directories to locate a lib/ folder so both flat
release zip layouts and nested local dev build trees are covered.
Also surface crash details in the toast and validate the project config
exists before attempting to start the engine.

* fix: set execute permission on engine binary before launch

GitHub release zip extraction does not preserve the execute bit on
Unix, causing a permission denied error when launching a tagged engine.

* fix: chmod and ad-hoc codesign engine binaries on macOS before launch

GitHub release zips strip execute bits and corrupt existing signatures.
Fix execute permissions on all tools in bin/, then re-sign every binary
and dylib in the install tree so Gatekeeper does not SIGKILL the process.

* chore: mark ad-hoc codesign block as temporary workaround

* fix: pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash (#31)

Avalonia.FreeDesktop 11.2.1 was compiled against Tmds.DBus.Protocol
0.20.0. Pinning a higher version caused a TypeLoadException on Linux
at Avalonia X11/DBus initialization (exit before window opens).

* feat: engine UX improvements and Linux startup fixes (#32)

- Fix Linux debug program path in launch.json
- Pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash; suppress NU1903 warning
- Add Open Location button on installed engine rows to reveal install directory in file manager
- Add Fetch button on available releases header to refresh without restarting the app
- Sort engine picker list by semver descending (most recent first)

* chore: resolve conflicts merging main into develop (#34)

* ci: lint only first-parent commits to avoid failures from old history

* ci: skip commitlint on PRs targeting main

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: update release-please manifest to 1.4.0 (#36)

* ci: trigger publish on tag push and add workflow_dispatch for manual releases (#41)

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Add paths filters to push and pull_request triggers so the 3-platform
build matrix only runs when C#, AXAML, project, manifest, or workflow
files are modified.
…y config (#46)

Replace ImportDirectory (Imported/Textures, Imported/Sounds) with
AssetDirectories grouping all asset paths under Assets/:
- Assets/Textures, Assets/Sounds, Assets/Meshes
- Assets/Materials, Assets/Sprites, Assets/EnvironmentMaps

Add SkyConfig with mode (atmosphere/hdri/skySphere) and optional
environmentMap filename for HDRI mode.

Rename defaultImportDir -> assetDirs in the generated project.json.
sceneDir/sceneDataDir now use the $(workingSpace) token for consistency.
ProjectWindowViewModel creates all 8 subdirectories on project creation.
* feat(project): standardize asset directories under Assets/ and add sky config

Replace ImportDirectory (Imported/Textures, Imported/Sounds) with
AssetDirectories grouping all asset paths under Assets/:
- Assets/Textures, Assets/Sounds, Assets/Meshes
- Assets/Materials, Assets/Sprites, Assets/EnvironmentMaps

Add SkyConfig with mode (atmosphere/hdri/skySphere) and optional
environmentMap filename for HDRI mode.

Rename defaultImportDir -> assetDirs in the generated project.json.
sceneDir/sceneDataDir now use the $(workingSpace) token for consistency.
ProjectWindowViewModel creates all 8 subdirectories on project creation.

* feat(config): remove sky block from generated project.json

Sky configuration (mode, environment map) is now per-scene, serialized
in .zescene. project.json has no business owning sky settings since
different scenes loaded from the same project can each have a different
sky type and environment map.

Remove SkyConfig class and the sky field from ProjectConfigJson. The
environmentMapDir asset directory remains in AssetDirectories — it is
a project-level import path used by the env map importer, not a sky
setting.

Generated project.json will no longer contain a "sky" block. Engine
reads sky config from the active .zescene file at scene load time.
Cooked mesh/material artifacts now live under Assets/Meshes and
Assets/Materials respectively. The SceneData directory and its
corresponding sceneDataDir config field no longer serve a purpose.
AppIcon.png: 512x512 white rounded-rect badge (22% corner radius),
indigo ZE mark at 58% scale, orange rocket-badge in lower-right with
gaussian glow — generated at 4x supersampled resolution for clean AA.

AppIcon.ico: multi-size Windows icon (256/128/64/48/32/16px).

Panzerfaust.csproj: ApplicationIcon -> AppIcon.ico;
  AppIcon.png registered as AvaloniaResource.
MainWindow.axaml: Window.Icon set to avares://Panzerfaust/Assets/AppIcon.png.
JeanPhilippeKernel and others added 5 commits August 22, 2026 21:03
* chore: release 1.3.0 (#18)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* Chore: release 1.3.0 (#21)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe0.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: release 1.3.0 (#22)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe0.

* chore: release 1.3.0

---------

Co-authored-by: Jean Philippe <jeanphilippe02666592@outlook.fr>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release/1.4.0 (#35)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe0.

* chore: release 1.3.0 (#23)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* docs(roadmap): add roadmap with planned features and current implementation status (#24)

* fix: restore Windows caption buttons and fix app version display (#25)

* Fix/startup perf and native titlebar (#26)

* fix: improve startup perf and switch to native title bar

- Add PublishReadyToRun to all Release configurations to cut cold-start JIT time
- Move RefreshInstalledEngines, ScanLocalAssets, and LoadProjectsAsync to
  background tasks with status bar feedback so the window opens immediately
- Remove acrylic/extended client area in favour of a solid WindowBackground
  and standard OS title bar to avoid per-platform chrome friction

* feat: show orange border on RC builds, automated via CI

- Add IsRcBuild property reading AssemblyInformationalVersionAttribute to
  detect -rc suffix at runtime
- Add non-interactive orange border overlay in MainWindow visible only on RC builds
- Inject InformationalVersion from the git tag at publish time in all three
  platform build jobs so RC binaries automatically activate the indicator

* fix: bump version to trigger RC build with orange border indicator (#27)

* feat: RC build indicator with orange bloom border and version tag (#28)

- Orange glow border overlay (3-layer BoxShadow bloom) covers the full
  window edge including title bar via ExtendClientAreaToDecorationsHint
- RootPanel.Margin bound to WindowDecorationMargin so content stays below
  native caption buttons
- Status bar shows full version string including -rc suffix, stripping
  the +commitHash appended by .NET
- IsRcBuild and AppVersion both read AssemblyInformationalVersionAttribute
- Remove acrylic from ProjectWindow, EnginePickerDialog and MessageBoxWindow
  so all dialogs correctly respect light and dark theme

* fix: surface engine crash errors and resolve stale rpath for local builds (#30)

* fix: resolve engine dylib path for release zips and local dev builds

Set the correct platform library search env var when launching the engine:
PATH on Windows, LD_LIBRARY_PATH on Linux, DYLD_LIBRARY_PATH on macOS.
Walk up to 4 parent directories to locate a lib/ folder so both flat
release zip layouts and nested local dev build trees are covered.
Also surface crash details in the toast and validate the project config
exists before attempting to start the engine.

* fix: set execute permission on engine binary before launch

GitHub release zip extraction does not preserve the execute bit on
Unix, causing a permission denied error when launching a tagged engine.

* fix: chmod and ad-hoc codesign engine binaries on macOS before launch

GitHub release zips strip execute bits and corrupt existing signatures.
Fix execute permissions on all tools in bin/, then re-sign every binary
and dylib in the install tree so Gatekeeper does not SIGKILL the process.

* chore: mark ad-hoc codesign block as temporary workaround

* fix: pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash (#31)

Avalonia.FreeDesktop 11.2.1 was compiled against Tmds.DBus.Protocol
0.20.0. Pinning a higher version caused a TypeLoadException on Linux
at Avalonia X11/DBus initialization (exit before window opens).

* feat: engine UX improvements and Linux startup fixes (#32)

- Fix Linux debug program path in launch.json
- Pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash; suppress NU1903 warning
- Add Open Location button on installed engine rows to reveal install directory in file manager
- Add Fetch button on available releases header to refresh without restarting the app
- Sort engine picker list by semver descending (most recent first)

* chore: resolve conflicts merging main into develop (#34)

* ci: lint only first-parent commits to avoid failures from old history

* ci: skip commitlint on PRs targeting main

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: update release-please manifest to 1.4.0 (#36)

* ci: trigger publish on tag push and add workflow_dispatch for manual releases (#41)

* ci: add skip workflow for non-source PRs to satisfy required checks

When a PR only touches non-source files (docs, config, changelog),
the main Engine-CI paths filter skips the workflow entirely — leaving
the 4 required checks permanently pending and blocking the merge.

A companion workflow with the same name and job names fires on the
inverse paths-ignore, immediately passing all 4 checks.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* ci: set target-branch to main in release-please config

Release Please reads config from the default branch (develop) and was
defaulting to target develop for releases. This caused it to find PR #42
in main's history and fail trying to re-create the already-existing v1.4.0
release. Setting target-branch explicitly fixes the stable release flow.

* ci: update skip workflow to call reusable workflows with all-false inputs
* chore: release 1.3.0 (#18)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* Chore: release 1.3.0 (#21)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: release 1.3.0 (#22)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

* chore: release 1.3.0

---------

Co-authored-by: Jean Philippe <jeanphilippe02666592@outlook.fr>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release/1.4.0 (#35)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

* chore: release 1.3.0 (#23)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* docs(roadmap): add roadmap with planned features and current implementation status (#24)

* fix: restore Windows caption buttons and fix app version display (#25)

* Fix/startup perf and native titlebar (#26)

* fix: improve startup perf and switch to native title bar

- Add PublishReadyToRun to all Release configurations to cut cold-start JIT time
- Move RefreshInstalledEngines, ScanLocalAssets, and LoadProjectsAsync to
  background tasks with status bar feedback so the window opens immediately
- Remove acrylic/extended client area in favour of a solid WindowBackground
  and standard OS title bar to avoid per-platform chrome friction

* feat: show orange border on RC builds, automated via CI

- Add IsRcBuild property reading AssemblyInformationalVersionAttribute to
  detect -rc suffix at runtime
- Add non-interactive orange border overlay in MainWindow visible only on RC builds
- Inject InformationalVersion from the git tag at publish time in all three
  platform build jobs so RC binaries automatically activate the indicator

* fix: bump version to trigger RC build with orange border indicator (#27)

* feat: RC build indicator with orange bloom border and version tag (#28)

- Orange glow border overlay (3-layer BoxShadow bloom) covers the full
  window edge including title bar via ExtendClientAreaToDecorationsHint
- RootPanel.Margin bound to WindowDecorationMargin so content stays below
  native caption buttons
- Status bar shows full version string including -rc suffix, stripping
  the +commitHash appended by .NET
- IsRcBuild and AppVersion both read AssemblyInformationalVersionAttribute
- Remove acrylic from ProjectWindow, EnginePickerDialog and MessageBoxWindow
  so all dialogs correctly respect light and dark theme

* fix: surface engine crash errors and resolve stale rpath for local builds (#30)

* fix: resolve engine dylib path for release zips and local dev builds

Set the correct platform library search env var when launching the engine:
PATH on Windows, LD_LIBRARY_PATH on Linux, DYLD_LIBRARY_PATH on macOS.
Walk up to 4 parent directories to locate a lib/ folder so both flat
release zip layouts and nested local dev build trees are covered.
Also surface crash details in the toast and validate the project config
exists before attempting to start the engine.

* fix: set execute permission on engine binary before launch

GitHub release zip extraction does not preserve the execute bit on
Unix, causing a permission denied error when launching a tagged engine.

* fix: chmod and ad-hoc codesign engine binaries on macOS before launch

GitHub release zips strip execute bits and corrupt existing signatures.
Fix execute permissions on all tools in bin/, then re-sign every binary
and dylib in the install tree so Gatekeeper does not SIGKILL the process.

* chore: mark ad-hoc codesign block as temporary workaround

* fix: pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash (#31)

Avalonia.FreeDesktop 11.2.1 was compiled against Tmds.DBus.Protocol
0.20.0. Pinning a higher version caused a TypeLoadException on Linux
at Avalonia X11/DBus initialization (exit before window opens).

* feat: engine UX improvements and Linux startup fixes (#32)

- Fix Linux debug program path in launch.json
- Pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash; suppress NU1903 warning
- Add Open Location button on installed engine rows to reveal install directory in file manager
- Add Fetch button on available releases header to refresh without restarting the app
- Sort engine picker list by semver descending (most recent first)

* chore: resolve conflicts merging main into develop (#34)

* ci: lint only first-parent commits to avoid failures from old history

* ci: skip commitlint on PRs targeting main

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: update release-please manifest to 1.4.0 (#36)

* ci: trigger publish on tag push and add workflow_dispatch for manual releases (#41)

* chore: merge develop into main for 1.5.0 release (#52)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

* chore: release 1.3.0 (#23)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* docs(roadmap): add roadmap with planned features and current implementation status (#24)

* fix: restore Windows caption buttons and fix app version display (#25)

* Fix/startup perf and native titlebar (#26)

* fix: improve startup perf and switch to native title bar

- Add PublishReadyToRun to all Release configurations to cut cold-start JIT time
- Move RefreshInstalledEngines, ScanLocalAssets, and LoadProjectsAsync to
  background tasks with status bar feedback so the window opens immediately
- Remove acrylic/extended client area in favour of a solid WindowBackground
  and standard OS title bar to avoid per-platform chrome friction

* feat: show orange border on RC builds, automated via CI

- Add IsRcBuild property reading AssemblyInformationalVersionAttribute to
  detect -rc suffix at runtime
- Add non-interactive orange border overlay in MainWindow visible only on RC builds
- Inject InformationalVersion from the git tag at publish time in all three
  platform build jobs so RC binaries automatically activate the indicator

* fix: bump version to trigger RC build with orange border indicator (#27)

* feat: RC build indicator with orange bloom border and version tag (#28)

- Orange glow border overlay (3-layer BoxShadow bloom) covers the full
  window edge including title bar via ExtendClientAreaToDecorationsHint
- RootPanel.Margin bound to WindowDecorationMargin so content stays below
  native caption buttons
- Status bar shows full version string including -rc suffix, stripping
  the +commitHash appended by .NET
- IsRcBuild and AppVersion both read AssemblyInformationalVersionAttribute
- Remove acrylic from ProjectWindow, EnginePickerDialog and MessageBoxWindow
  so all dialogs correctly respect light and dark theme

* fix: surface engine crash errors and resolve stale rpath for local builds (#30)

* fix: resolve engine dylib path for release zips and local dev builds

Set the correct platform library search env var when launching the engine:
PATH on Windows, LD_LIBRARY_PATH on Linux, DYLD_LIBRARY_PATH on macOS.
Walk up to 4 parent directories to locate a lib/ folder so both flat
release zip layouts and nested local dev build trees are covered.
Also surface crash details in the toast and validate the project config
exists before attempting to start the engine.

* fix: set execute permission on engine binary before launch

GitHub release zip extraction does not preserve the execute bit on
Unix, causing a permission denied error when launching a tagged engine.

* fix: chmod and ad-hoc codesign engine binaries on macOS before launch

GitHub release zips strip execute bits and corrupt existing signatures.
Fix execute permissions on all tools in bin/, then re-sign every binary
and dylib in the install tree so Gatekeeper does not SIGKILL the process.

* chore: mark ad-hoc codesign block as temporary workaround

* fix: pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash (#31)

Avalonia.FreeDesktop 11.2.1 was compiled against Tmds.DBus.Protocol
0.20.0. Pinning a higher version caused a TypeLoadException on Linux
at Avalonia X11/DBus initialization (exit before window opens).

* feat: engine UX improvements and Linux startup fixes (#32)

- Fix Linux debug program path in launch.json
- Pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash; suppress NU1903 warning
- Add Open Location button on installed engine rows to reveal install directory in file manager
- Add Fetch button on available releases header to refresh without restarting the app
- Sort engine picker list by semver descending (most recent first)

* chore: resolve conflicts merging main into develop (#34)

* chore: release 1.4.0 (#37)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: sync develop with main after 1.4.0 release (#38)

* ci: restore commitlint check for all PRs (#39)

* ci: ignore legacy non-conventional commits in commitlint (#40)

* chore: release 1.4.0 (#42)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Chore/sync develop post release workflow (#43)

* chore: release 1.3.0 (#18)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* Chore: release 1.3.0 (#21)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: release 1.3.0 (#22)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

* chore: release 1.3.0

---------

Co-authored-by: Jean Philippe <jeanphilippe02666592@outlook.fr>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release/1.4.0 (#35)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

* chore: release 1.3.0 (#23)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* docs(roadmap): add roadmap with planned features and current implementation status (#24)

* fix: restore Windows caption buttons and fix app version display (#25)

* Fix/startup perf and native titlebar (#26)

* fix: improve startup perf and switch to native title bar

- Add PublishReadyToRun to all Release configurations to cut cold-start JIT time
- Move RefreshInstalledEngines, ScanLocalAssets, and LoadProjectsAsync to
  background tasks with status bar feedback so the window opens immediately
- Remove acrylic/extended client area in favour of a solid WindowBackground
  and standard OS title bar to avoid per-platform chrome friction

* feat: show orange border on RC builds, automated via CI

- Add IsRcBuild property reading AssemblyInformationalVersionAttribute to
  detect -rc suffix at runtime
- Add non-interactive orange border overlay in MainWindow visible only on RC builds
- Inject InformationalVersion from the git tag at publish time in all three
  platform build jobs so RC binaries automatically activate the indicator

* fix: bump version to trigger RC build with orange border indicator (#27)

* feat: RC build indicator with orange bloom border and version tag (#28)

- Orange glow border overlay (3-layer BoxShadow bloom) covers the full
  window edge including title bar via ExtendClientAreaToDecorationsHint
- RootPanel.Margin bound to WindowDecorationMargin so content stays below
  native caption buttons
- Status bar shows full version string including -rc suffix, stripping
  the +commitHash appended by .NET
- IsRcBuild and AppVersion both read AssemblyInformationalVersionAttribute
- Remove acrylic from ProjectWindow, EnginePickerDialog and MessageBoxWindow
  so all dialogs correctly respect light and dark theme

* fix: surface engine crash errors and resolve stale rpath for local builds (#30)

* fix: resolve engine dylib path for release zips and local dev builds

Set the correct platform library search env var when launching the engine:
PATH on Windows, LD_LIBRARY_PATH on Linux, DYLD_LIBRARY_PATH on macOS.
Walk up to 4 parent directories to locate a lib/ folder so both flat
release zip layouts and nested local dev build trees are covered.
Also surface crash details in the toast and validate the project config
exists before attempting to start the engine.

* fix: set execute permission on engine binary before launch

GitHub release zip extraction does not preserve the execute bit on
Unix, causing a permission denied error when launching a tagged engine.

* fix: chmod and ad-hoc codesign engine binaries on macOS before launch

GitHub release zips strip execute bits and corrupt existing signatures.
Fix execute permissions on all tools in bin/, then re-sign every binary
and dylib in the install tree so Gatekeeper does not SIGKILL the process.

* chore: mark ad-hoc codesign block as temporary workaround

* fix: pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash (#31)

Avalonia.FreeDesktop 11.2.1 was compiled against Tmds.DBus.Protocol
0.20.0. Pinning a higher version caused a TypeLoadException on Linux
at Avalonia X11/DBus initialization (exit before window opens).

* feat: engine UX improvements and Linux startup fixes (#32)

- Fix Linux debug program path in launch.json
- Pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash; suppress NU1903 warning
- Add Open Location button on installed engine rows to reveal install directory in file manager
- Add Fetch button on available releases header to refresh without restarting the app
- Sort engine picker list by semver descending (most recent first)

* chore: resolve conflicts merging main into develop (#34)

* ci: lint only first-parent commits to avoid failures from old history

* ci: skip commitlint on PRs targeting main

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: update release-please manifest to 1.4.0 (#36)

* ci: trigger publish on tag push and add workflow_dispatch for manual releases (#41)

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* ci: drop macOS x64 build from all workflows (#44)

* ci: skip build for non-source file changes (#45)

Add paths filters to push and pull_request triggers so the 3-platform
build matrix only runs when C#, AXAML, project, manifest, or workflow
files are modified.

* feat(project): standardize asset directories under Assets/ and add sky config (#46)

Replace ImportDirectory (Imported/Textures, Imported/Sounds) with
AssetDirectories grouping all asset paths under Assets/:
- Assets/Textures, Assets/Sounds, Assets/Meshes
- Assets/Materials, Assets/Sprites, Assets/EnvironmentMaps

Add SkyConfig with mode (atmosphere/hdri/skySphere) and optional
environmentMap filename for HDRI mode.

Rename defaultImportDir -> assetDirs in the generated project.json.
sceneDir/sceneDataDir now use the $(workingSpace) token for consistency.
ProjectWindowViewModel creates all 8 subdirectories on project creation.

* project config standardize (#47)

* feat(project): standardize asset directories under Assets/ and add sky config

Replace ImportDirectory (Imported/Textures, Imported/Sounds) with
AssetDirectories grouping all asset paths under Assets/:
- Assets/Textures, Assets/Sounds, Assets/Meshes
- Assets/Materials, Assets/Sprites, Assets/EnvironmentMaps

Add SkyConfig with mode (atmosphere/hdri/skySphere) and optional
environmentMap filename for HDRI mode.

Rename defaultImportDir -> assetDirs in the generated project.json.
sceneDir/sceneDataDir now use the $(workingSpace) token for consistency.
ProjectWindowViewModel creates all 8 subdirectories on project creation.

* feat(config): remove sky block from generated project.json

Sky configuration (mode, environment map) is now per-scene, serialized
in .zescene. project.json has no business owning sky settings since
different scenes loaded from the same project can each have a different
sky type and environment map.

Remove SkyConfig class and the sky field from ProjectConfigJson. The
environmentMapDir asset directory remains in AssetDirectories — it is
a project-level import path used by the env map importer, not a sky
setting.

Generated project.json will no longer contain a "sky" block. Engine
reads sky config from the active .zescene file at scene load time.

* feat(project): remove SceneData directory from project layout (#48)

Cooked mesh/material artifacts now live under Assets/Meshes and
Assets/Materials respectively. The SceneData directory and its
corresponding sceneDataDir config field no longer serve a purpose.

* feat(ui): add ZodiacEngineHub app icon (#49)

AppIcon.png: 512x512 white rounded-rect badge (22% corner radius),
indigo ZE mark at 58% scale, orange rocket-badge in lower-right with
gaussian glow — generated at 4x supersampled resolution for clean AA.

AppIcon.ico: multi-size Windows icon (256/128/64/48/32/16px).

Panzerfaust.csproj: ApplicationIcon -> AppIcon.ico;
  AppIcon.png registered as AvaloniaResource.
MainWindow.axaml: Window.Icon set to avares://Panzerfaust/Assets/AppIcon.png.

* chore: resolve merge conflicts with main (#51)

* chore: release 1.3.0 (#18)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* Chore: release 1.3.0 (#21)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: release 1.3.0 (#22)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

* chore: release 1.3.0

---------

Co-authored-by: Jean Philippe <jeanphilippe02666592@outlook.fr>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release/1.4.0 (#35)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

* chore: release 1.3.0 (#23)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* docs(roadmap): add roadmap with planned features and current implementation status (#24)

* fix: restore Windows caption buttons and fix app version display (#25)

* Fix/startup perf and native titlebar (#26)

* fix: improve startup perf and switch to native title bar

- Add PublishReadyToRun to all Release configurations to cut cold-start JIT time
- Move RefreshInstalledEngines, ScanLocalAssets, and LoadProjectsAsync to
  background tasks with status bar feedback so the window opens immediately
- Remove acrylic/extended client area in favour of a solid WindowBackground
  and standard OS title bar to avoid per-platform chrome friction

* feat: show orange border on RC builds, automated via CI

- Add IsRcBuild property reading AssemblyInformationalVersionAttribute to
  detect -rc suffix at runtime
- Add non-interactive orange border overlay in MainWindow visible only on RC builds
- Inject InformationalVersion from the git tag at publish time in all three
  platform build jobs so RC binaries automatically activate the indicator

* fix: bump version to trigger RC build with orange border indicator (#27)

* feat: RC build indicator with orange bloom border and version tag (#28)

- Orange glow border overlay (3-layer BoxShadow bloom) covers the full
  window edge including title bar via ExtendClientAreaToDecorationsHint
- RootPanel.Margin bound to WindowDecorationMargin so content stays below
  native caption buttons
- Status bar shows full version string including -rc suffix, stripping
  the +commitHash appended by .NET
- IsRcBuild and AppVersion both read AssemblyInformationalVersionAttribute
- Remove acrylic from ProjectWindow, EnginePickerDialog and MessageBoxWindow
  so all dialogs correctly respect light and dark theme

* fix: surface engine crash errors and resolve stale rpath for local builds (#30)

* fix: resolve engine dylib path for release zips and local dev builds

Set the correct platform library search env var when launching the engine:
PATH on Windows, LD_LIBRARY_PATH on Linux, DYLD_LIBRARY_PATH on macOS.
Walk up to 4 parent directories to locate a lib/ folder so both flat
release zip layouts and nested local dev build trees are covered.
Also surface crash details in the toast and validate the project config
exists before attempting to start the engine.

* fix: set execute permission on engine binary before launch

GitHub release zip extraction does not preserve the execute bit on
Unix, causing a permission denied error when launching a tagged engine.

* fix: chmod and ad-hoc codesign engine binaries on macOS before launch

GitHub release zips strip execute bits and corrupt existing signatures.
Fix execute permissions on all tools in bin/, then re-sign every binary
and dylib in the install tree so Gatekeeper does not SIGKILL the process.

* chore: mark ad-hoc codesign block as temporary workaround

* fix: pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash (#31)

Avalonia.FreeDesktop 11.2.1 was compiled against Tmds.DBus.Protocol
0.20.0. Pinning a higher version caused a TypeLoadException on Linux
at Avalonia X11/DBus initialization (exit before window opens).

* feat: engine UX improvements and Linux startup fixes (#32)

- Fix Linux debug program path in launch.json
- Pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash; suppress NU1903 warning
- Add Open Location button on installed engine rows to reveal install directory in file manager
- Add Fetch button on available releases header to refresh without restarting the app
- Sort engine picker list by semver descending (most recent first)

* chore: resolve conflicts merging main into develop (#34)

* ci: lint only first-parent commits to avoid failures from old history

* ci: skip commitlint on PRs targeting main

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: update release-please manifest to 1.4.0 (#36)

* ci: trigger publish on tag push and add workflow_dispatch for manual releases (#41)

* ci: add skip workflow for non-source PRs to satisfy required checks

When a PR only touches non-source files (docs, config, changelog),
the main Engine-CI paths filter skips the workflow entirely — leaving
the 4 required checks permanently pending and blocking the merge.

A companion workflow with the same name and job names fires on the
inverse paths-ignore, immediately passing all 4 checks.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* ci: set target-branch to main in release-please config (#54)

* ci: set target-branch to main in release-please config

* ci: update skip workflow to call reusable workflows with all-false inputs

Calling the reusable workflows (instead of plain echo jobs) creates the
nested check names (e.g. windows / build-release / build-windows-x64-Release)
as skipped entries, satisfying both develop's top-level and main's nested
required status checks for non-source PRs.

* chore: release 1.5.0 (#55)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* chore: release 1.3.0 (#19)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Revert "chore: release 1.3.0 (#19)" (#20)

This reverts commit da5cbe058b7873a76d38bcb28e3439687bbb6985.

* chore: release 1.3.0 (#23)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* docs(roadmap): add roadmap with planned features and current implementation status (#24)

* fix: restore Windows caption buttons and fix app version display (#25)

* Fix/startup perf and native titlebar (#26)

* fix: improve startup perf and switch to native title bar

- Add PublishReadyToRun to all Release configurations to cut cold-start JIT time
- Move RefreshInstalledEngines, ScanLocalAssets, and LoadProjectsAsync to
  background tasks with status bar feedback so the window opens immediately
- Remove acrylic/extended client area in favour of a solid WindowBackground
  and standard OS title bar to avoid per-platform chrome friction

* feat: show orange border on RC builds, automated via CI

- Add IsRcBuild property reading AssemblyInformationalVersionAttribute to
  detect -rc suffix at runtime
- Add non-interactive orange border overlay in MainWindow visible only on RC builds
- Inject InformationalVersion from the git tag at publish time in all three
  platform build jobs so RC binaries automatically activate the indicator

* fix: bump version to trigger RC build with orange border indicator (#27)

* feat: RC build indicator with orange bloom border and version tag (#28)

- Orange glow border overlay (3-layer BoxShadow bloom) covers the full
  window edge including title bar via ExtendClientAreaToDecorationsHint
- RootPanel.Margin bound to WindowDecorationMargin so content stays below
  native caption buttons
- Status bar shows full version string including -rc suffix, stripping
  the +commitHash appended by .NET
- IsRcBuild and AppVersion both read AssemblyInformationalVersionAttribute
- Remove acrylic from ProjectWindow, EnginePickerDialog and MessageBoxWindow
  so all dialogs correctly respect light and dark theme

* fix: surface engine crash errors and resolve stale rpath for local builds (#30)

* fix: resolve engine dylib path for release zips and local dev builds

Set the correct platform library search env var when launching the engine:
PATH on Windows, LD_LIBRARY_PATH on Linux, DYLD_LIBRARY_PATH on macOS.
Walk up to 4 parent directories to locate a lib/ folder so both flat
release zip layouts and nested local dev build trees are covered.
Also surface crash details in the toast and validate the project config
exists before attempting to start the engine.

* fix: set execute permission on engine binary before launch

GitHub release zip extraction does not preserve the execute bit on
Unix, causing a permission denied error when launching a tagged engine.

* fix: chmod and ad-hoc codesign engine binaries on macOS before launch

GitHub release zips strip execute bits and corrupt existing signatures.
Fix execute permissions on all tools in bin/, then re-sign every binary
and dylib in the install tree so Gatekeeper does not SIGKILL the process.

* chore: mark ad-hoc codesign block as temporary workaround

* fix: pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash (#31)

Avalonia.FreeDesktop 11.2.1 was compiled against Tmds.DBus.Protocol
0.20.0. Pinning a higher version caused a TypeLoadException on Linux
at Avalonia X11/DBus initialization (exit before window opens).

* feat: engine UX improvements and Linux startup fixes (#32)

- Fix Linux debug program path in launch.json
- Pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash; suppress NU1903 warning
- Add Open Location button on installed engine rows to reveal install directory in file manager
- Add Fetch button on available releases header to refresh without restarting the app
- Sort engine picker list by semver descending (most recent first)

* chore: resolve conflicts merging main into develop (#34)

* chore: release 1.4.0 (#37)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: sync develop with main after 1.4.0 release (#38)

* ci: restore commitlint check for all PRs (#39)

* ci: ignore legacy non-conventional commits in commitlint (#40)

* chore: release 1.4.0 (#42)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Chore/sync develop post release workflow (#43)

* chore: release 1.3.0 (#18)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right-panel detail for local files with mesh stats
- Delete scoped to individual file; resolution dir cleaned only when empty
- AdditionalEngineSearchPath persisted and applied on change
- Modernize project cards: gradient overlay, hover-reveal action strip,
  ZEngine logo placeholder, themed rename buttons
- Register ZEngine logo as StreamGeometry from SVG source files
- Theme all new colors via AppResourceDictionary dark/light variants
- Replace format ListBox with ComboBox dropdown
- Remove unused GltfPreviewControl (superseded by local asset detail panel)

* docs: update README with current screenshots (#17)

* docs: update README with current screenshots

* docs: add local engine path guide for contributors

* Chore: release 1.3.0 (#21)

* docs: add README with features, downloads, system requirements and build instructions (#12)

* ci: enable single-file publish across all platform build jobs (#13)

* ci: enable single-file publish across all platform build jobs

* build: remove redundant System.Text.Json, override Tmds.DBus.Protocol to fix vulnerability

* feat: show app release version in status bar (#14)

Add AppVersion property read from assembly metadata and display it
in the status bar right section. Wire release-please to keep the
csproj Version tag in sync with VERSION.txt on every release.

* feat: configure VS Code for cross-platform debugging and fix binding errors (#15)

- Add .vscode/launch.json, tasks.json, settings.json, extensions.json
  with full Windows/macOS/Linux support
- Add docs/debugging-with-vscode.md covering all three platforms
- Fix BoolToTransformConverter and StringEqualityConverter to return
  ITransform instead of raw strings for RenderTransform bindings
- Add FallbackValue to all nullable dotted-path bindings in MainWindow.axaml
- Fix translateY units in AppResourceDictionary.axaml (px required)

* feat: assets page redesign, local asset grouping, project card modernization (#16)

- Redesign Assets page as unified card browser with right-panel detail
- Add 3D GLTF preview sidecar panel (later replaced by local asset detail panel)
- Fix GLTF mesh rendering, 3D viewer input controls and animation glitches
- Group local assets by AssetId with expandable versions panel; fixes
  intermittent expand button by moving the panel outside UniformGridLayout
- LocalAssetDetailViewModel: right…
…textures (#64)

* fix(assets): preserve companion file relative paths on download

The Poly Haven API includes companion file relative paths as inc.Key
(e.g. 'textures/foo_diff_4k.jpg', 'foo.bin'). The previous code only
stored the URL and derived the filename via Path.GetFileName, dropping
the subdirectory prefix entirely. All textures were placed flat next to
the primary model, breaking GLTF/FBX/Blend/USD texture references.

- AssetFormatOption: replace CompanionUrls List<string> with
  CompanionFiles List<(string RelativePath, string Url)>
- LoadAssetFormatsAsync: store (inc.Key, url) instead of url only
- LoadAndDownloadAssetAsync: use RelativePath verbatim relative to
  destDir, creating subdirectories (e.g. textures/) as needed

* fix(assets): migrate existing flat texture files into textures/ on startup

Existing downloaded assets have textures sitting flat next to the primary
model file instead of in a textures/ subdirectory, breaking GLTF/FBX/Blend/USD
texture references. MigrateAssetFoldersAsync runs once at startup in the
background: it collects all flat image files (jpg/jpeg/png/webp/hdr/exr) under
AppPaths.Assets, moves them into the textures/ subdirectory alongside their
primary model, and notifies the user with toasts before and after. Dirs that
are already correctly structured are skipped. Non-fatal — any individual move
failure leaves the file in place.

* feat(ui): rename sidebar title from Panzerfaust to Zodiac Hub

* fix(engine): guard ScanInstalledEngines against UnauthorizedAccessException

Directory.EnumerateFiles with SearchOption.AllDirectories throws when it
walks into protected system paths (e.g. Photos Library.photoslibrary) if
the user sets the engine install location to a broad directory like their
home folder. Catch IOException and UnauthorizedAccessException at both
the top-level directory scan and per-version file search so the scan
completes gracefully instead of crashing the app.
@JeanPhilippeKernel
JeanPhilippeKernel merged commit 7ba0d30 into main Aug 24, 2026
10 checks passed
@JeanPhilippeKernel
JeanPhilippeKernel deleted the release/1.6.0 branch August 24, 2026 04:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant