Skip to content

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 07:05
150209b

1.0.0 (2026-10-10)

⚠ BREAKING CHANGES

  • assetimport: fix dangling paths, correct asset routing, migrate codec writes to VFS (#632)

Features

  • 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)

Bug Fixes

  • #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)

Refactors

  • 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)

Documentation

  • 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)

CI/CD

  • 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)