All notable changes to ZEngine will be documented in this file.
The format follows Keep a Changelog. Versions are managed automatically via Release Please based on Conventional Commits.
1.0.1 (2026-10-10)
- add animated zodiac home background (59fadf9)
- align home page with color themes (098a2c0)
- correct Mermaid diagram syntax (b7f99f2)
- publish rebuilt documentation website (#856) (8376f56)
- rebuild documentation website (4f3db23)
- rebuild documentation website (#855) (3b94004)
- remove home page sidebar artifacts (6ebbd55)
- remove zodiac wheel glyphs (c3d8507)
- render Mermaid diagrams (28fa59b)
- simplify animated home background (d3c50e9)
- theme header by color scheme (c664bd5)
1.0.0 (2026-10-10)
- assetimport: fix dangling paths, correct asset routing, migrate codec writes to VFS (#632)
- camera: redesign FlyCamera with InputManager integration (#583) (ed4da0b)
- core: add IsInitialized() to Logger and ThreadPoolHelper (#574) (e4854ec)
- ecs/editor: scene graph — local transforms, HierarchySystem, UE5-style outliner (#673) (c065b7e)
- ecs: add 7 missing ECS component headers (#619) (e972a34), closes #609
- ecs: ComponentReflectionRegistry (#662) (4cfb257)
- ecs: create .cpp files and register reflection metadata (#669) (7517a1f)
- ecs: FieldType, FieldDescriptor, ComponentMeta reflection types (#659) (cb44a50)
- ecs: fix (#678) (c664122)
- ecs: implement hybrid Actor-ECS architecture with system scheduler docs (#586) (2488f12)
- ecs: implement WorldTick system scheduler (#587) (ad15bfd)
- ecs: migrate InspectorViewUIComponent to generic reflection loop (#676) (d1b2788)
- ecs: Scene::AddComponentRaw + InspectorPanel Add Component popup (#757) (18d1512)
- ecs: wire ECS components into render scene and light pipeline (#656) (4bacf04)
- editor,importer: asset importer panel — permanent cook + lazy cook on save (#597) (8409159)
- editor,rendering: grid redesign, camera fixes, gizmo projection… (#596) (cae715b)
- editor: add scene-owned sky configuration (#811) (d3b12c0)
- editor: application icon on window and macOS Dock (#610) (5c74a11)
- editor: harden and extend FlyCamera navigation (#795) (19f2677)
- editor: wire Outliner and Inspector to ECS ActorManager (#630) (305a4c1)
- engine: implement fixed-timestep game loop (#588) (62c7187)
- engine: MainThreadScheduler — lock-free MPSC post from background to main thread (#613) (3e0c753)
- engine: move VFS into EngineContext, pass MemoryManager to Engine::Initialize (#575) (748348d)
- import: cook HDR and EXR environment maps (#825) (f414a19)
- importer: add import options tab bar UI and wire to importers (#660) (a896440), closes #599
- importer: ufbx FBX importer + meshoptimizer + Bistro pipeline fixes (#668) (4d2be3e)
- import: implement GLB/GLTF import pipeline via fastgltf (#589) (3d3d7ad)
- input: introduce InputManager — poll-based input with action slots (#582) (60770cd)
- logging: introduce channel-aware logging policy, ring buffer, and test suite (#578) (fa6e01e)
- memory: bound and profile independent arena owners (#838) (9801679)
- memory: introduce GpuAllocator with VMA segregated pool foundation (#581) (5f66c48)
- memory: m_upload_slabs[MAX_WORKERS] in RRM + RegisterWorkerInit — closes #689 #688 (update) (#725) (1cfebdd)
- memory: per-worker thread_local TLSFSlab in ThreadPool — closes #688 (#724) (edb5159)
- memory: Phase 1 upload pipeline — closes #690 #691 #692 #693 (#726) (54c8cb2)
- memory: Phase 2 — typed allocator for containers + AssetManagerSlab — closes #694 #695 (#727) (a806544)
- memory: slab-backed lambda closures + Bitmap buffer allocation (#729) (a568759)
- memory: TLSFSlab wrapper — closes #687 (#722) (8e68d92)
- profiling: add memory profiling, profiler buffer and CPU profiling macros (#573) (ba824cb)
- rendering: add atmosphere LUT bake pipeline (#814) (2d5c741)
- rendering: add per-view atmosphere composition (#816) (1bfd646)
- rendering: add sky environment lifecycle (#812) (5492c57)
- rendering: add sky rendering foundations (#798) (2541555)
- rendering: add sky sphere background (#823) (bb9df3f)
- rendering: bake HDRI environment lighting (#813) (8c7bc20)
- rendering: batch bindless descriptor writes, fix nonuniformEXT, add watermark (#768) (91382d0)
- rendering: compute pass infrastructure, IPipeline, GraphicPass/ComputePass split (#776) (192757e)
- rendering: CPU frustum culling — sphere-frustum test per instance (#664) (c50f5bf), closes #644
- rendering: define atmosphere multiscattering contract (#819) (f2e332c)
- rendering: expose atmosphere authoring controls (#820) (d00500f)
- rendering: gate sky bakes by device capabilities (#826) (d502679)
- rendering: modernize render graph and PSO cache (9c37c5a), closes #779
- rendering: redesign texture pipeline around one canonical handle (#751) (6580f7d)
- rendering: render graph redesign — typed indices, automatic barriers, per-frame RuntimeState (#641) (d01e849)
- rrm: RenderResourceManager, packed geometry buffers, and scene redesign (#590) (0e91f6e)
- rrm: UploadBuffer, GetBuffer, typed EnqueueDeletion — complete RRM API (#593) (3093b5b)
- scene: SceneSnapshot, ISceneSerializer, ComponentSerializerRegistry, YAMLSceneSerializer (f2560b1)
- scene: stable component schema registry (#837) (1761bb8)
- streaming: virtual geometry streaming — pool allocator, eviction, compaction, VRAM auto-detect (#769) (26e7257)
- vfs/editor: VFS backend hierarchy, engine assets via VFS, UE-style content browser (#594) (5da6804)
- vfs: add VFSFileWatcher with cross-platform backend (FSEvents, inotify, RDCW) (#580) (36b4752)
- vfs: implement .meta sidecar system for stable UUID persistence (Ticket 5) (#585) (c60483f)
- zui: ZUI system — docking, text editing, scroll, Doxygen docs + cleanup (#679) (b5219d9)
- #600: handle sources::URI in GltfImporter texture extraction (#636) (0af884d)
- #603: bind material texture handles to mesh submeshes at draw time (#634) (6e97835)
- #635: structural memory budget cleanups (#637) (40740f7)
- assetimport: fix dangling paths, correct asset routing, migrate codec writes to VFS (#632) (0095a54)
- assets: keep asset UUID identity consistent across import, meta, and scan (#758) (74a92b1), closes #755
- assets: load materials/textures when dragging a cooked mesh onto the viewport (#766) (a946796)
- assets: stabilize mesh/material UUIDs and enable hot-reload swap on re-ingest (#763) (2c9cc38), closes #762
- build: include LoggingDefaults.cmake so ZENGINE_LOG_LEVEL_* are defined before ZEngine target uses them (722f4e3)
- crashhandler: copy SignalOrException into struct buffer instead of storing pointer (#624) (bdf00db)
- crashhandler: guard signal handler + print log on test failure (#625) (9d3e022)
- deps: enable ASSIMP_BUILD_FBX_IMPORTER — FBX was compiled out (11bff11)
- deps: pin gtest to v1.17.0 to avoid operator<< deletion on newer Clang (e61bb29)
- deps: pin gtest to v1.17.0 to avoid operator<< deletion on newer Clang (df43791)
- deps: pin simdjson as explicit FetchContent dep before fastgltf (#655) (564cb5e)
- ecs: WorldCommands staging buffers for parallel-wave systems (#628) (9a4da30)
- editor: Content Browser context menus, File menu, and drag-and-drop (#756) (f6f60d7)
- editor: resolve packaged assets and refresh imports (#840) (a593b5c)
- editor: store zui_layout.ini in ZodiacEngine/Settings/ — closes #699 (#700) (6a8dc18)
- engine: align shutdown sequence with engine-lifecycle spec (#577) (7f9b627)
- format: apply clang-format to DeviceSwapchain.cpp (12b798b)
- imgui: font atlas upload via owned-copy deferral through RRM (#592) (373d5a0)
- importer: fire on_progress callbacks in AssimpImporter::ImportFile (#658) (2901720), closes #601
- importer: fix GLB texture extraction and optimize extraction loop (#633) (46540f8)
- importer: guard meshopt against out-of-range submesh indices — closes #684 (#734) (189827e)
- importer: handle sources::Vector in GLB texture extraction (#631) (64c7737)
- importers: route ImportFile scratch allocations through each importer's own Arena (#761) (9cbb02e), closes #760
- linux: run asset file dialogs asynchronously (5da19bd)
- logging: make k_min_level runtime-mutable; add SetMinLevel / SetMinLevelAllChannels for test override in Release builds (72f64ea)
- logging: no-op Logger::Log when not initialized (#747) (7b0d94b), closes #746
- memory: 64-bit page-size arithmetic in ArenaAllocator on Windows (#731) (c16fd1c)
- memory: bound editor and upload arena ownership (#836) (5b1bef6)
- memory: fix ArenaAllocator and PoolAllocator bugs — closes #680 #681 #682 #683 #697 (#720) (a1c455b)
- memory: lazy VirtualAlloc commit on Windows + mmap overcommit on macOS/Linux (#728) (e94edde)
- memory: remove remaining Buffer.data() in bitmap tests (eab71a2)
- rendering: composite editor grid after tone mapping (#818) (9a75dac)
- rendering: four Bistro rendering blockers (#661) (cc1216d)
- rendering: GBuffer pipeline, second-launch asset reload, HashMap rewrite (#638) (26be907)
- rendering: handle below-ground atmosphere views (#822) (#824) (35eb51f)
- rendering: initialise render targets to swapchain size, closes #264 (#584) (dbf6650)
- rendering: isolate project PSO cache data (#787) (178f208)
- rendering: mesh not visible after VFSScanner pre-registers UUID in AssetRegistry (43be35f)
- rendering: restore DeferFree in FramebufferVNext::Dispose (#617) (d034118)
- rendering: retire mesh geometry slot on actor delete (#640) (7340303)
- rendering: synchronize transient graph resources across frames (d016af1)
- rendering: wait before transient image transitions (#841) (4fcbee0)
- rrm: replace AppendToGlobalBuffer with RecordStagingCopy in UploadBuffer (closes #770) (#777) (231a4ce)
- scene: make schema key validation portable (#848) (909ad3d)
- show crash dialog on main thread to fix NSInternalInconsistencyException (#614) (5092294)
- swapchain: replace HasRecreationPending with RecreationState machine (#623) (0fed388)
- tests: remove OverflowTriggersAssertion — Cocoa dialog hangs CI on macOS release (ddfa929)
- tests: use ZENGINE_CORE_WARN in BackwardsCompatMacro test — CORE_INFO is compile-time silenced in Release (e930d78)
- tetragrama: replace UIDispatcher with MainThreadScheduler; fix NSOpenPanel deadlock (#645) (9167143)
- ui: clamp dock tree root rect in ZUIDockLayout — closes #732 (recurrence) (#737) (d5165f2)
- ui: clamp dock-split span to kMinPanelPx in LayoutNode — closes #732 (#733) (24a39d2)
- vfs: add VFSOpenFlags::Create and Truncate — closes #607 (#621) (6f41d02)
- vfs: double-checked locking in VFSZipFile (#744), path-traversal guard in VFSDiskBackend (#745) (#772) (e4b3c35)
- vulkan,rendering,editor,shader: Intel driver halt, vkQueueSubmit2, uint32 material maps (#773) (1f43d21)
- vulkan: eliminate all vkDestroyDevice validation errors on shutdown (#612) (7592abc)
- vulkan: guard QueueSubmit's optional args, fix GetQueue transfer fallback (#754) (a75e4f5)
- vulkan: remove backward timeline clamp in swapchain recreation (#738) (a02a75b)
- bitmap: reshape API — enum class, factory functions, BitmapConvert, .cpp split (#730) (1bc8185)
- containers: make Array<T> move-only and fix all copy sites (#615) (e7465c2)
- rendering: drop GPUTypes.h — replace gpuvec3/gpuvec4 with Vec4f (#771) (ba17b88)
- rendering: migrate SkyboxPass/GridPass geometry into RRM global buffers (#611) (5f1cd07)
- rendering: remove legacy pre-rewrite rendering primitives (#653) (2654303)
- rendering: retire legacy skybox pass (#827) (b9eb954)
- threadpool: lock-free SPSC/MPSC queues, C-style tasks, zero-alloc hot path (#616) (83c3c55)
- add MkDocs Material site with GitHub Pages deploy workflow (49035f9)
- align production roadmap with current engine state (#828) (6c4503d)
- audit design docs for completion, move fully-shipped ones to completed/ (a6dda0e)
- component-reflection: update status, fix §2 registry table, add BuiltInComponentReflection to layout, expand test checklist (#709) (133cced)
- correct implementation status for input, engine-lifecycle, profiling, gpu-allocator (d23b69e)
- deep re-verification pass, correct several false completion claims (8edbcac)
- deploy to zodiac-engine-docs repo via peaceiris/actions-gh-pages (b7f25fe)
- ecs: correct component-reflection.md against current codebase (#646) (37fb0a2)
- engine: reevaluate engine lifecycle doc against current implementation (#576) (8cdac13)
- fix 12 design docs based on codebase audit (#618) (9420d21)
- fly-camera: correct a wrong correctness note from the previous audit pass (d66ffb2)
- memory: add TLSF allocator integration design doc (#654) (4a353f2)
- memory: mark §10.2/10.3 as done (PR #729), note Bitmap reshape (#730) (99a049d)
- memory: update tlsf-allocator-integration.md to reflect Phase 1 + Phase 2 implementation (5155086)
- presentations: add memory architecture and system heap analysis slides (#698) (e737159)
- readme: update supported platforms — remove 'under active revision' qualifier (ad02ff1)
- rendering: add rendering architecture future-plan docs (#579) (2ad66a9)
- rendering: harden sky rendering design (#797) (c5f74c4)
- rrm: correct render-resource-manager.md for the texture pipeline redesign (#752) (c30420a)
- scene-serialization: document current state gap + fix status and dependencies (#710) (6fc5508)
- scene-serialization: fix 5 remaining compile errors from validation pass (#712) (e420bed)
- scene-serialization: fix 9 API/namespace errors found in codebase review (#711) (bb8b13b)
- ui-system: mark ZUI as done — merged via PR #679 (97cae5d)
- update design docs to reflect current implementation state (#605) (6ea85bc)
- update implementation status across all design documents (b16f00f)
- add workflow_dispatch trigger to manually publish release assets (1e0973b)
- add workflow_dispatch trigger to manually publish release assets (7ed4a84)
- build: drop macOS x64, cache LLVM and deps (#572) (ded7966)
- skip historical commit linting on stable promotion (#850) (354dedd)
- target stable releases at main (d1c5a76)
- target stable releases at main (#852) (faeba3d)
0.3.0 (2026-08-03)
- added support of HashSet and OrderedHashMap containers (c9d8c35)
- added support of tag and versioning system (#533) (13a7ace)
- added Virtual FileSystem design documents (#528) (7b934bd)
- Convert enviroment cube texture to engine format for fast loading (#523) (c90975b)
- crashhandler: add crash handler with signal capture, structured log, and crash dialog (#551) (1e944cc)
- Implemented the foundation of VFS (#530) (67fbb53)
- memory: implement MemoryBudgetConfig and wire MemoryManager through application stack (#553) (e9ababc)
- panzerfaust: add search support allowing user to find projet by name (#399) (#447) (dd95dd6)
- panzerfaust: build launcher UI with engine management, assets, and project workflow (#554) (0320c5c)
- vfs: add VFS context support (#550) (a926b15)
- vfs: implement VFS Memory, Scanner, directory Cache, and tests (#555) (6572998)
- buildengine: update
glm's cmake minimum version to 3.5 (#443) (488b55d) - corrected inconsistencies in documents (67fbb53)
- corrected inconsistencies in documents (4f9f14a)
- corrected inconsistencies in documents (#532) (6d6ed63)
- crashhandler: prevented crashhandler UI Dialog to show-up on Windows CI tests (#552) (9fe52f1)
- editor: init ActiveSceneName before append when scene list is empty (5add6dc)
- engine: fix startup and runtime crashes on macOS arm64 (MoltenVK) (#564) (9159f1d)
- Header Re-Organization for Consistency and Readability (#497) (15af098)
- improved HandleManager threading mgmt support (#521) (95797b5)
- made release process consistent across main and develop (#538) (9efb562)
- shader: remove _unused sampler and fix pipeline layout with empty descriptor set (#567) (9153732)
- swapchain: fix Linux startup crash due to Wayland extent and zero command buffer count (#560) (4ec4036)
- switch ArenaAllocator to VirtualAlloc/mmap with on-demand page commit (#531) (43983c1)
- updated package permission for release workflow (#536) (1d9a0d3)
- updated release pipeline (#535) (a2f53c4)
- updated the base version number (#537) (046a407)
- vfs: removed duplicate NOMINMAX definition (#557) (c848f2c)
- vulkan: fall back to CPU device (lavapipe) when no hardware GPU is found (43d6929)
- add issue template for VFS secure functions refactor (b77e5b4)
- added product planning documents (#529) (f77569e)
- mark all allocator bugs fixed and update sprint 1/2 status (dd0ed89)
- panzerfaust: update location to point to ZodiacEngineHub repository (a63f1f3)
- RAD Debugger-inspired UI system, 3D gizmo pass, and README overhaul (#559) (8d3d1fc)
- readme: updated logo image (#556) (8added0)
- fix rc versioning logic and artifact packaging in release workflows (#547) (84817ed)
- fix release-please config and manifest package key alignment (#539) (0ad919e)
- generate release notes for rc releases from conventional commits (#546) (724fc98)
- move prerelease flags to top-level and fix PR title pattern (#541) (702cefe)
- pass prerelease flags as action inputs instead of config (#543) (74ce42b)
- replace release-please prerelease with custom bump script (#544) (42982ba)
- restructure build workflows with per-event stage gating and fix stable release pipeline (#548) (2b7473a)
- tag-only prerelease to avoid protected branch push (#545) (cc3d818)