Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 4 additions & 26 deletions .github/workflows/Engine-CI-skip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,29 +17,7 @@ jobs:
steps:
- run: echo "No source changes — skipping commitlint"

# Call reusable workflows with all options false so the nested check names
# (e.g. "windows / build-release / build-windows-x64-Release") appear as
# skipped — satisfying both develop's top-level and main's nested required checks.
windows:
uses: ./.github/workflows/windows-build.yml
with:
targetFramework: net10.0
run_debug: false
run_release: false
run_deploy: false

macOS:
uses: ./.github/workflows/macOS-build.yml
with:
targetFramework: net10.0
run_debug: false
run_release: false
run_deploy: false

linux:
uses: ./.github/workflows/linux-build.yml
with:
targetFramework: net10.0
run_debug: false
run_release: false
run_deploy: false
ci-passed:
runs-on: ubuntu-latest
steps:
- run: echo "No source changes — CI skipped"
7 changes: 7 additions & 0 deletions .github/workflows/Engine-CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,10 @@ jobs:
run_debug: ${{ github.event_name == 'pull_request' && github.base_ref == 'develop' || (github.event_name == 'workflow_dispatch' && fromJSON(inputs.run_debug)) }}
run_release: ${{ (github.event_name == 'pull_request' && github.base_ref == 'main') || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && fromJSON(inputs.run_release)) }}
run_deploy: ${{ github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && fromJSON(inputs.run_deploy)) }}

ci-passed:
needs: [windows, macOS, linux]
if: ${{ always() && !failure() && !cancelled() }}
runs-on: ubuntu-latest
steps:
- run: echo "CI passed"
4 changes: 2 additions & 2 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Release Please (Stable)

on:
push:
branches: [main]
branches: [develop]
tags: ['v*']
workflow_dispatch:
inputs:
Expand All @@ -29,7 +29,7 @@ jobs:
config-file: release-please-config.json
manifest-file: .release-please-manifest.json
token: ${{ secrets.GITHUB_TOKEN }}
target-branch: main
target-branch: develop

publish-windows:
needs: release-please
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.5.0"
".": "1.7.0"
}
61 changes: 61 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,66 @@
# Changelog

## [1.7.0](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/compare/v1.6.0...v1.7.0) (2026-10-05)


### Features

* **project:** generate sky and environment lighting defaults ([#77](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/77)) ([5abddc8](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/5abddc83afa643d63814dd7b25d32c7c08682b42))

## [1.6.0](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/compare/v1.5.0...v1.6.0) (2026-08-24)


### Features

* assets page redesign, local asset grouping, project card modernization ([#16](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/16)) ([ae27d32](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/ae27d32a9a54cc50b2b23e8d1d1ca897c7b93191))
* configure VS Code for cross-platform debugging and fix binding errors ([#15](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/15)) ([e08d69c](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/e08d69cd2efd6ce89e680940557a57038cf9624b))
* engine UX improvements and Linux startup fixes ([#32](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/32)) ([d41dae2](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/d41dae22b8802e197d2f8f85bc019844f0d4a91b))
* **panzerfaust:** add search support allowing user to find projet by name ([#399](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/399)) ([#447](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/447)) ([69822bc](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/69822bcd05a78fdef78cfae0db3fc9aad7b46814))
* **panzerfaust:** build launcher UI with engine management, assets, and project workflow ([#554](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/554)) ([739b6af](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/739b6aff41ff533884e8a89c942978070fe062f8))
* **project:** remove SceneData directory from project layout ([#48](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/48)) ([7e816f8](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/7e816f884a53f5cfb2f7be4528525e58ffba51b8))
* **project:** standardize asset directories under Assets/ and add sky config ([#46](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/46)) ([90c8faf](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/90c8faf5a337844b5a68433b29800714e89348a3))
* RC build indicator with orange bloom border and version tag ([#28](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/28)) ([ec34bcb](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/ec34bcb230bec714bfd3317965c2b2210bf92186))
* show app release version in status bar ([#14](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/14)) ([5315617](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/5315617f48eee0656da496502f1541c15273e126))
* **ui:** add ZodiacEngineHub app icon ([#49](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/49)) ([52a0bea](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/52a0bea6177272cede9390baade5a4c2b640602f))


### Bug Fixes

* **assets:** preserve companion file paths and migrate existing flat textures ([#64](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/64)) ([ddf004c](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/ddf004c9a4842c5b2a04e802784614cdc5c153d3))
* bump version to trigger RC build with orange border indicator ([#27](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/27)) ([7fada50](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/7fada506d65cdbde1700ec2557ddc520c2da4dfc))
* pin Tmds.DBus.Protocol to 0.20.0 to fix Linux startup crash ([#31](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/31)) ([cf79d5e](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/cf79d5e5698e505dc2b217a3a98697cb73e43bfc))
* restore Windows caption buttons and fix app version display ([#25](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/25)) ([7846204](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/784620441f95deb0f7103d69838fe3d86d794582))
* surface engine crash errors and resolve stale rpath for local builds ([#30](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/30)) ([2d9c5db](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/2d9c5dba7c511352a42ff9e489c05bf09de646ee))


### Documentation

* add README with features, downloads, system requirements and build instructions ([#12](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/12)) ([9ca1e05](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/9ca1e056d70d2b753ae070338c681b1f93976f0a))
* **roadmap:** add roadmap with planned features and current implementation status ([#24](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/24)) ([d4638a2](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/d4638a2db75d086abd7f34bdd6ae5a31c39abce7))
* update README with current screenshots ([#17](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/17)) ([f3b3555](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/f3b3555c4e0abc5dba71b3ab00e64c3a6f7adea5))


### Build System

* remove _WIN32/__MACOS__ defines, fix OutputType to Exe ([be9def5](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/be9def5c8e7b63292c84296e9eff7a021f685f0e))
* restore OutputType to WinExe ([2790a13](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/2790a13835d6816367bf0a71be3e87910b2de232))


### CI/CD

* add changelog generation script ([c8ca195](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/c8ca1954df450e5cc5532ad70950228620a799c0))
* add full CI/CD pipeline for all platforms ([edd6e35](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/edd6e358176212a0e4fc60839b4b6533410a9bb9))
* configure release-please and versioning for v1.0.0 ([da46c28](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/da46c2875d3cb43e7d10c9c369f5864397b0f4f1))
* drop macOS x64 build from all workflows ([#44](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/44)) ([eaf213c](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/eaf213c27f9a240e2bc1b5e58cc096576ca286a5))
* enable single-file publish across all platform build jobs ([#13](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/13)) ([f92afae](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/f92afae642d39d54d87ecf7ff16c86a0858cc3b4))
* ignore legacy non-conventional commits in commitlint ([#40](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/40)) ([60340d4](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/60340d4c97d3ff4c1a6aca063ee58e3dc95058c9))
* restore commitlint check for all PRs ([#39](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/39)) ([38aada5](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/38aada553b8546514858e4139fcf02ee7ebc37a7))
* rewrite pipelines for dotnet, remove C++ engine workflows ([0f97bfb](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/0f97bfb3e0d143fb20e8ed88884e152ccaee67b8))
* set target-branch to main in release-please config ([#53](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/53)) ([028b27c](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/028b27c7b7d8995e8390ebb744237d039b858f30))
* skip build for non-source file changes ([#45](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/45)) ([bb35a0e](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/bb35a0e9cea4e11f8ebe7b78669949784f404bb6))
* switch release flow to target develop directly ([#67](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/issues/67)) ([7161a99](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/7161a99507ffdd2024691259c9ee3127d2781f23))
* sync dotnet pipelines, configs and scripts from develop ([6c78b92](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/commit/6c78b923f9aeb3815689407a3f401905d3b4455b))

## [1.5.0](https://github.com/JeanPhilippeKernel/ZodiacEngineHub/compare/v1.4.0...v1.5.0) (2026-08-22)


Expand Down
29 changes: 2 additions & 27 deletions Contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ When contributing to this repository, please first discuss the change you wish t

## Branch target

**All pull requests must target the `develop` branch.** Direct PRs to `main` are not accepted — `main` is updated only through the release process.
**All pull requests must target the `develop` branch.** `main` is a read-only mirror of the last stable release and is never pushed to directly.

## Rules

Expand Down Expand Up @@ -96,32 +96,7 @@ This installs a `commit-msg` hook that validates conventional commits format loc

## Release Process

Panzerfaust has two release tracks, both fully automated from commit messages.

### Stable releases (`main`)

Merges into `main` are picked up by Release Please, which opens a **Release PR** accumulating all changes since the last stable tag. When that PR is merged:

- `VERSION.txt` is bumped (`0.3.0` → `0.3.1` / `0.4.0` / `1.0.0`) based on commit types
- A tag `v0.3.1` is created
- A GitHub Release is published with build artifacts for all platforms

### Pre-releases (`develop`)

Pushes to `develop` follow the same process but produce rc versions:

- Release Please opens a **Pre-release PR** on `develop`
- When merged: `VERSION.txt` is set to e.g. `0.4.0-rc.1`, tag `v0.4.0-rc.1` is created
- A GitHub Pre-release is published (marked as pre-release in the GitHub UI)
- Each subsequent batch of commits increments the rc counter: `rc.1` → `rc.2` → …

### Promoting a pre-release to stable

Once `develop` is stable enough to ship:

1. Open a PR from `develop` → `main`
2. Merge it — Release Please on `main` sees all the accumulated `feat:`/`fix:` commits and opens a stable Release PR
3. Merge the Release PR → `v0.4.0` stable is tagged and published
See **[docs/release-process.md](docs/release-process.md)** for the full release workflow.

## Pull Request Process

Expand Down
38 changes: 38 additions & 0 deletions Models/ProjectConfigJson.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,38 @@ internal class AssetDirectories
public string EnvironmentMapDirectory { get; set; } = "$(workingSpace)/Assets/EnvironmentMaps";
}

internal class SkyDefaults
{
[JsonPropertyName("mode")]
public string Mode { get; set; } = "atmosphere";

[JsonPropertyName("environmentMap")]
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public Guid? EnvironmentMap { get; set; }

[JsonPropertyName("environmentIntensity")]
public float EnvironmentIntensity { get; set; } = 1.0f;

[JsonPropertyName("environmentTint")]
public float[] EnvironmentTint { get; set; } = new[] { 1.0f, 1.0f, 1.0f, 1.0f };

[JsonPropertyName("environmentYawRadians")]
public float EnvironmentYawRadians { get; set; } = 0.0f;
}

internal class RenderingSettings
{
[JsonPropertyName("environment_lighting_quality")]
public string EnvironmentLightingQuality { get; set; } = "standard";

[JsonPropertyName("environment_lighting_budget_mb")]
public int EnvironmentLightingBudgetMb { get; set; } = 384;

// Preserve other rendering policies when a configuration is round-tripped.
[JsonExtensionData]
public Dictionary<string, JsonElement>? AdditionalProperties { get; set; }
}

internal class ProjectConfigJson
{
[JsonPropertyName("projectName")]
Expand All @@ -60,6 +92,12 @@ internal class ProjectConfigJson
[JsonPropertyName("sceneList")]
public IList<Scene> Scenes { get; set; } = new List<Scene> { new Scene() };

[JsonPropertyName("skyDefaults")]
public SkyDefaults SkyDefaults { get; set; } = new();

[JsonPropertyName("rendering")]
public RenderingSettings Rendering { get; set; } = new();

public string ToJson() => JsonSerializer.Serialize(this, new JsonSerializerOptions { WriteIndented = true });
}
}
2 changes: 1 addition & 1 deletion Panzerfaust.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version>1.5.0</Version>
<Version>1.7.0</Version>
<AssemblyVersion>1.3.0</AssemblyVersion>
<FileVersion>1.3.0</FileVersion>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ See [Contributing.md](Contributing.md) for commit conventions, branch rules, and

For local development with a custom engine build, see [docs/local-engine-path.md](docs/local-engine-path.md).

For generated sky defaults and environment-lighting settings, see [docs/project-configuration.md](docs/project-configuration.md).

---

## License
Expand Down
2 changes: 1 addition & 1 deletion VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.5.0
1.7.0
60 changes: 60 additions & 0 deletions docs/project-configuration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Project configuration

Panzerfaust writes `projectConfig.json` when creating a project. This is the
project configuration passed to Obelisk; engine documentation and issue reports
may also call this file `project.json`.

New projects include these defaults alongside their asset directories and scenes:

```json
{
"skyDefaults": {
"mode": "atmosphere",
"environmentIntensity": 1,
"environmentTint": [1, 1, 1, 1],
"environmentYawRadians": 0
},
"rendering": {
"environment_lighting_quality": "standard",
"environment_lighting_budget_mb": 384
}
}
```

## Sky defaults

`skyDefaults` supplies authoring defaults for newly created or reset scenes.
Saved scenes retain their own `SkyConfig`. Supported modes are `atmosphere`,
`hdri`, and `skySphere`. The generated atmosphere uses the engine's default
atmosphere settings.

Environment intensity is a nonnegative multiplier. Tint contains four
nonnegative RGBA components; white preserves the original colors. Yaw is a
rotation in radians. The generated values match the engine's validated defaults.

`environmentMap` is optional and omitted by default. When configuring an HDRI,
set it to the imported environment asset's UUID string, rather than a file path.
Generated IBL cache paths, renderer handles, and viewport state do not belong in
this section.

## Environment lighting

`rendering.environment_lighting_quality` controls environment-lighting bake
quality. The accepted tiers are:

| Tier | Intended use |
|---|---|
| `low` | Lower-cost previews or constrained hardware; smaller lighting maps and fewer samples. |
| `standard` | Default balance between lighting quality and bake cost. |
| `high` | Higher-quality lighting with larger maps and more samples. |

`rendering.environment_lighting_budget_mb` is a positive integer number of MiB.
The default is `384`. It caps persistent environment textures, independently of
the quality tier; it is neither a CPU memory budget nor a total GPU memory limit.

Existing projects require no migration. Missing or invalid lighting settings
fall back to `standard` and `384` in the engine. The editor also accepts the
legacy `sky` section. Panzerfaust creates only new project configurations and
does not rewrite existing configurations to add these defaults. Renaming a
project preserves its other configuration properties, including rendering
settings and legacy sky data.
Loading
Loading