Skip to content

Releases: InfernuxEngine/Infernux

Infernux 0.1.6 · 熔炉

01 May 15:10

Choose a tag to compare

Infernux v0.1.6 · 熔炉

This release turns Infernux's editor-facing MCP layer into a much more capable agent control plane: a FastMCP-backed server, hierarchical tool discovery, structured tool metadata with signatures / examples / return-shape hints, subsystem guides with knowledge-token gating, richer scene / camera / RenderStack control, and a safer runtime loop for long-horizon agents. It also lands a round of engine and editor hardening around scene safety, script error recovery, shader / material workflows, VSCode environment generation, and hot-reload edge cases.

Release tree: dd16c73388f1555093530ad760b9386b2a45862c
Baseline for comparison: 82763b512741892349a322301a9947d60524dc49

The infernux-0.1.6-cp312-cp312-win_amd64.whl and infernux-0.1.6.tar.gz assets attached to this GitHub release are rebuilt from the tree above. Infernux Hub and InfernuxHubInstaller.exe are updated in parallel for this milestone (same version line).


MCP framework and agent tooling

  • FastMCP server surface: a full MCP server under python/Infernux/mcp/ with modular tools for assets, scenes, hierarchy, camera, UI, editor, runtime, materials, RenderStack, docs, project state, research helpers, transactions, and project-defined tools.
  • Configurable capability matrix: mcp_capabilities.json / capabilities.py centralize feature gates for research-grade MCP behavior (catalog, transactions, runtime observation, trace/evolution hooks, contracts, API discovery, RenderStack coverage, and more).
  • Hierarchical tool discovery: mcp.catalog.list, mcp.catalog.get, mcp.catalog.search, and mcp.catalog.recommend let agents browse tools by category and retrieve complete parameter / return metadata instead of guessing from raw names.
  • Automatic signatures and examples: tool registration now captures Python signatures, required parameters, defaults, return-envelope hints, and generated minimal examples for every MCP tool.
  • Knowledge-token gating: shader, material, audio, and UI-sensitive operations can require a short-lived token returned by guide tools such as shader.guide, audio.guide, or api.get(...). This forces the model to read subsystem guidance before performing risky writes.
  • Python API discovery from stubs: api.subsystems, api.get, and api.search index .pyi files first and fall back to .py source so agents can query classes, methods, properties, enums, and short-name ambiguities from the real project API surface.
  • Project-defined agent tools: the Assets/AgentTools/ pipeline is formalized with decorators, registry, loadability checks, trace logging, and transaction helpers so projects can extend MCP without rebuilding engine code.
  • Research / trace hooks: configurable trace, contract, and tool-evolution helpers make the MCP layer usable for agent-evaluation and agent-tooling research rather than only editor automation.

Agent safety, recovery, and workflow hardening

  • Scene-state guards: MCP now reports dirty / unsaved scene state back to the agent instead of letting the editor fall into modal prompts. Scene switching and mutation paths are blocked until the scene is in a safe state.
  • Idempotent asset workflows: folder-creation and related asset paths were hardened so agents stop getting trapped in repeated FileExistsError loops during scaffold generation.
  • Structured empty / failure responses: scene queries and RenderStack inspection now return reasons, stop_repeating, and explicit next_suggested_tools payloads when nothing is found, reducing the chance that an LLM retries the same dead-end call forever.
  • GET /mcp discovery endpoint: HTTP probes against /mcp now return a 200 JSON response with server information instead of a 404, which makes client discovery cleaner.
  • Script-error hotfix: if a broken Python script is deleted or moved, its tracked error state is now cleared immediately instead of blocking Play Mode until an engine restart.

Scene, camera, render, and runtime control

  • Richer scene queries: object search now supports exact / contains semantics for names and paths, better summaries, and more descriptive “no result” payloads for bootstrap scenes and service-only scenes.
  • Camera understanding tools: agents can inspect the current view, report target visibility, frame selected subjects, and explicitly re-orient a camera toward a target set.
  • RenderStack control plane: agents can inspect, create, select, and reconfigure scene RenderStacks and render passes directly through MCP, including pass parameters and injection-point visibility.
  • Runtime observation tools: runtime-facing helpers can wait, run for controlled intervals, and collect script/runtime errors so the agent can validate outcomes instead of operating blind.

Engine, editor, and runtime fixes

  • Serialized field robustness: class-level access to serialized fields no longer explodes in ordinary arithmetic / comparison flows, which fixes agent-authored scripts that referenced defaults through the descriptor object.
  • Unbound component tolerance: editor callback paths around serialized fields and UI bootstrap inspection are more tolerant of components that are not yet attached to a live GameObject, closer to the “do not crash the editor” behavior developers expect.
  • Active-scene file protection: file-watcher paths avoid mutating the currently open scene file behind the editor's back, reducing save / reload races.
  • VSCode environment generation: generated workspace settings now point to the project-local .venv correctly, including Windows Python executable paths and Pyright config.
  • AMD/editor viewport and shader hardening: the render/editor stack received a round of viewport, transform-cache, grid-shader, and material-path fixes, including the EditorGizmos grid cleanup.

Python API surface, stubs, and docs

  • Stub coverage expanded: .pyi files were improved across audio, UI, materials, RenderStack, component exports, script loading, and package re-exports so agents and docs see a more faithful API surface.
  • Audio guidance improved: AudioClip, AudioSource, and AudioListener documentation now clarify track behavior, WAV lifecycle, and listener semantics.
  • UI guidance improved: UI canvas scaling, hit testing, enums, button event entries, and screen-component method signatures were expanded in the stub layer.
  • Material / shader visibility: material metadata and docs expose more shader-facing information so agents can reason about bound vertex / fragment shaders and property layout.
  • Docs / website rollout: the docs site, API index, and versioned release text were regenerated for 0.1.6, and the site/domain pipeline introduced the custom-domain deployment path now used by the public docs.

Packaging and release artifacts

Windows-facing artifacts for this line:

  • infernux-0.1.6-cp312-cp312-win_amd64.whl — Python wheel for CPython 3.12 on Windows amd64 (matches release commit above)
  • infernux-0.1.6.tar.gz — source distribution (same commit)
  • InfernuxHubInstaller.exe — Windows x64 Hub installer (updated for v0.1.6)
  • Portable Hub bundle — refreshed alongside the installer for this release

Upgrade notes

  • Restart the editor / MCP server after upgrade so new tool registration, capability toggles, and subsystem guides are loaded into the running session.
  • Agent integrations should prefer the catalog / API tools (mcp.catalog.*, api.*, guide tools) instead of relying on memorized tool names or inferred argument shapes.
  • Sensitive shader / audio / UI / material writes may now require knowledge tokens. If a tool reports error.knowledge_token_required, call the required guide tool first and retry with the returned token.
  • The generated VSCode workspace expects a project-local .venv. Existing projects with custom interpreter settings may want to re-check their workspace settings after regenerating project files.
  • Broken-script cleanup is now immediate. Deleting a bad script should clear its tracked Play Mode blocker without restarting the engine.

Thank you

Thanks to everyone stress-testing the MCP workflow, surfacing agent failure loops, and pushing on scene safety, shader discoverability, API coverage, and hot-reload edge cases. The 0.1.6 release is shaped directly by that feedback loop.

Infernux 0.1.5 · 熔炉

27 Apr 04:58

Choose a tag to compare

Infernux v0.1.5 · 熔炉

This release lands the 3D animation foundation (skeletal animation, skinned mesh rendering, embedded FBX takes), reworks the Project / Inspector workflows and asset previews, adopts the official Chinese name 熔炉 (Róng Lú), and ships a fully rebuilt NASA-Punk styled documentation site. Baseline for comparison: v0.1.4 (08f473957c213e922e9db009138d3b8916a5bd13).


3D animation and skinning

  • AnimClip3D assets: new core asset type with importer, schema versioning, and editor inspector. Embedded FBX takes are surfaced under each model as virtual .animclip3d sub-assets and can be dragged directly into the FSM canvas.
  • Skeletal animation runtime: SkeletalAnimator Python component plays back AnimClip3D data through the existing SpiritAnimator / AnimFSM graphs; states accept ANIMCLIP3D payloads alongside the existing 2D path.
  • Skinned mesh rendering: new SkinnedMeshRenderer component, InxSkinnedMesh resource, GPU skinning path, and a dedicated SkinnedModelCache. The render pipeline gets matching descriptor / pipeline-manager updates for skinned draws.
  • Embedded takes UX: the Project panel now appends per-model sub-assets (materials + animation takes) with proper animclip3d icons and a real expand/collapse glyph next to the model thumbnail. Take names that come back as Armature | Action are normalised to just Action in the row label.
  • FSM + node graph: the generic node-graph canvas now accepts any drag-drop payload type, fixes drop targeting for ANIMCLIP3D, and routes embedded takes through GUID::subanim virtual paths. The FSM editor adopts the matching upgrades.

Editor and asset workflows

  • Project panel: redesigned model expand strip (pixel-aligned 32×32 PNG icon, hit-tested separately from the thumbnail), simplified label rendering, animation-clip rows that no longer collide with the model thumbnail icon, and a faster cached label path. Sub-asset rows correctly invoke the asset details renderer (formerly asset_inspectorasset_details_renderer).
  • Inspector panel: centred component icons with snapped pixel coordinates (no more bilinear blur on small icons), low-resolution preview path for 16 px component badges, and missing-texture cleanup in the material preview path.
  • Resource previews: new GPUMeshPreview (Vulkan-backed), updated GPUMaterialPreview, async transfer context (AsyncTransferContext), descriptor bind tracing, and a unified query_or_schedule_texture_preview flow used by Project + Inspector + asset details.
  • Bootstrap and engine: _bootstrap_wiring split, texture_task_bridge, preferences store (preferences_store, ide_preference), and a refreshed asset-details renderer module replacing the old monolithic asset inspector.
  • Editor icons: a complete redraw of every component icon under python/Infernux/resources/icons/components/ to a transparent NASA-Punk style 64×64 PNG (Audio / Collider / SkeletalAnimator / SkinnedMeshRenderer / SpiritAnimator / SpriteRenderer / UI Canvas / UI Button / UI Image / UI Text), plus 64×64 NASA-Punk file-type icons (animclip2d, animclip3d, animfsm, shader_hlsl, etc.) and chevron icons (model_expand_open, model_expand_closed).

Renderer and core

  • Rendering core: InxRenderer, InxVkCoreModular, VkCoreGlobals, VkPipelineManager, MaterialDescriptor, MaterialPipelineManager, OutlineRenderer, RenderPassOutput, ScriptableRenderContext, VkCoreDraw, and VkCoreMaterial all received targeted updates for skinning, descriptor reuse, and async transfer.
  • Vulkan device layer: VkDeviceContext and VkResourceManager extended with new sampler / image helpers, plus a brand-new VkHandle translation layer.
  • Asset / resource layer: new InxSkinnedMesh and SkinnedModelCache, MeshLoader extended for skinning data, ConcreteImporters updated to surface model material slots and animation take metadata.

Python layer

  • Components: skeletal_animator.py, builtin/skinned_mesh_renderer.py, the rename animator2d.pyspirit_animator.py, and broader ref_wrappers / serialized_field / _component_native refinements.
  • Core: core/animation_clip3d.py, core/anim_state_machine.py, expanded core/assets.py, core/asset_ref.py, core/asset_types.py, core/material.py.
  • Engine / UI: preferences store, IDE preferences, async texture bridge, refreshed inspector_material, inspector_ui_components, node_graph_view, animfsm_editor_panel, animclip2d_editor_panel, project_utils, window_manager, plus an undo system split (_animfsm_commands, _helpers, _property_commands, _renderstack, _snapshots, _trackers, _component_commands).

Documentation, branding, and site

  • Engine name: the project now formally adopts the Chinese name 熔炉. Repository, package, and CLI strings remain Infernux. README.md and README-zh.md carry the bilingual title (Infernux · 熔炉 / 熔炉 · Infernux); the Python package metadata (pyproject.toml) reflects the same.
  • Docs site rebuild: docs/index.html, docs/roadmap.html, docs/wiki.html, docs/js/i18n.js, docs/css/style.css, docs/css/mission.css, docs/css/roadmap.css, docs/css/wiki.css are completely rewritten in a NASA-Punk / Starfield-inspired style:
    • persistent top mission ribbon with the bilingual engine name (INFERNUX · 熔炉), driven entirely by i18n;
    • keeps the existing data-i18n / data-href-en / data-href-zh mechanism, so the API docs (wiki/site/en|zh/api/index.html) and the wiki manifest (assets/wiki-docs.json) continue to render through js/wiki.js;
    • primary brand colour stays at #eb5757; light theme uses an off-white NASA-style cream surface;
    • the runtime capture section now embeds the existing docs/assets/demo.png (height-shaded voxel scene at 173 FPS).
  • Wiki API index: Version 0.1.5 / 版本 0.1.5 rolled through docs/wiki/generate_api_docs.py, docs/wiki/docs/{en,zh}/api/index.md, and the corresponding generated HTML.
  • Python wheel: infernux-0.1.5-cp312-cp312-win_amd64.whl (CPython 3.12, Windows amd64) and matching infernux-0.1.5.tar.gz are produced by the normal CMake release preset (package_and_install_python); the Hub portable bundle (dist/Infernux Hub/) and dist/installer/InfernuxHubInstaller.exe continue to ship as in prior releases.

Upgrade notes

  • Python 3.12 remains the supported baseline for the packaged wheel (no Python version change in this release).
  • Animation formats (animclip2d / animclip3d / animfsm) are still evolving; treat the 3D path as preview the same way 2D was treated in 0.1.4.
  • Module rename: animator2dspirit_animator for the runtime Python module. The Animator3D alias is fully gone in 0.1.5; switch to SkeletalAnimator / SpiritAnimator.
  • Inspector renderer rename: engine/ui/asset_inspector.pyengine/ui/asset_details_renderer.py. External call sites importing asset_inspector should switch to the new module name.
  • Resource paths: the bundled icon set under python/Infernux/resources/icons/ has been refreshed (file-type icons, component icons). Custom projects that overrode any of these icons should re-validate their copies against the new 64×64 transparent-background versions.
  • Docs site: docs/css/mission.css, docs/css/roadmap.css, and docs/css/wiki.css have new class hooks. Forks that customised the site should diff against this release before redeploying.

Thank you

Thanks to everyone who tested the 3D animation path, surfaced editor icon / preview issues, and gave feedback on the docs site reskin — the 0.1.5 release is shaped directly by that loop.

Infernux 0.1.4

18 Apr 06:51
6087533

Choose a tag to compare

Infernux v0.1.4

This release advances the 2D rendering and animation authoring stack, tightens several editor and asset workflows, and lands a substantial node-graph / animation FSM editor refresh on top of the work already tagged as 0.1.4. Baseline for comparison: v0.1.3 (52d87ce0bfdfd922acc29071d0307ecf837d0273).


Rendering and 2D

  • Sprite pipeline: Shader-based 2D sprite rendering with aspect handling, integrated with the asset system and editor inspectors.
  • Textures: Filter, wrap, and anisotropic sampling are wired through the full material / render path; SPRITE is added as a first-class texture usage for 2D content.
  • Scene / lighting: Improvements around double-sided shadows and more predictable shadow behaviour in common setups.

Animation (authoring and runtime)

  • Clips and state machines: .animclip2d authoring in the editor, .animfsm state-machine assets, runtime playback via SpiritAnimator, and dedicated editor panels for clips and FSM graphs.
  • 2D animation preview: Stack-style preview in the clip workflow and related inspector integration.
  • Node graph (FSM editor):
    • Camera model uses a single graph-space view centre plus zoom; pan is derived from the real ImGui canvas item rectangle so pan/zoom and saved view state stay aligned across docking and window resizes.
    • Per-state header colour is stored on the asset (AnimState.header_color), edited from a header swatch on the node (not the side inspector), with undo integration.
    • Narrower state nodes, larger title and pin (In/Out) labels, optional brighter pin label colour for readability, and transition link midpoint text removed for a cleaner graph.
    • Side panel widths in the FSM editor are tightened to give more space to the graph.
  • Core graph model: NodeGraph gains clearer schema/versioning and helpers; unit tests cover round-trip serialization.

Editor, UI, and tooling

  • UI Editor: Workspace and canvas chrome use the same dark palette as the node graph (NODE_GRAPH_* alignment); workspace is explicitly filled so the void colour matches the graph editor.
  • Inspector / theme: Shared InspectorThemeBase styling (inspector_theme.py) and panel_spacing utilities reduce duplicated colour math and keep inspector stacks and materials consistent.
  • Materials: Inspector material path and bootstrap inspector materials wiring are adjusted for the new texture and sprite options.
  • Input / ImGui: Small key and binding surface updates for editor shortcuts.
  • Player mode: Less editor UI overhead when running in player mode.
  • Misc editor fixes: Console behaviour around play/clear, script lifecycle in edit mode, scene rename vs build settings, and related hotfixes from the 0.1.3 → 0.1.4 window.

Documentation and distribution

  • README / site / wiki: Brought up to date with 0.1.4, including demo callouts and API index refresh where applicable.
  • JIT documentation: Architecture write-up expanded with a deeper dive and roadmap notes.
  • Python wheel: infernux-0.1.4-cp312-cp312-win_amd64.whl (CPython 3.12, Windows amd64) is produced by the normal CMake release preset (package_and_install_python); the Hub and installers continue to live under dist/ as in prior releases.

Upgrade notes

  • Python 3.12 remains the supported baseline for the packaged wheel.
  • 2D animation formats (clips / FSM) are still evolving; treat advanced authoring features as preview where noted in docs.

Thank you

Thanks to everyone reporting issues and trying early builds—feedback on the 2D and animation path directly shaped this release.

Infernux 0.1.3

10 Apr 12:49

Choose a tag to compare

Release date: April 2026

Highlights

  • Rendering CPU overhead slashed — A comprehensive optimization pass across the entire C++ render pipeline eliminates ~5 ms/frame of CPU overhead for 14,400-object scenes, bringing frame times down to the ~4 ms range. Optimizations include DrawCall caching, zero-copy shadow passes, shared_ptr elimination, and EndFrameCache fast-path.
  • O(N²) startup stall fixedProcessPendingStarts was quadratic; 10,000 objects caused a ~15 s stall. Now O(N) with integer ID + bulk pre-allocation.
  • Physics batch optimization — Deferred body creation, batch broadphase insertion, and snprintf-based GUID generation cut physics setup costs significantly.
  • Player build 67 MB lighterav/ffmpeg are now excluded from standalone player builds when unused.
  • Large-scale code quality pass — Silent except Exception: pass blocks removed across the Python layer; bootstrap/undo/inspector modules split into focused packages; C++ quick-win quality improvements applied.

Performance

C++ Renderer Pipeline

  • Eliminate shared_ptr copy storm in DrawCall pipeline — all hot-path signatures now take const& or raw pointers.
  • Renderable/draw-call caching with dirty flags — skip full rebuild when scene is stable.
  • EndFrameCache fast-path — avoid redundant end-of-frame copies; const& matrices in loop bodies.
  • Merged single-pass rendering where separate passes were unnecessary.
  • Zero-copy game shadow — shadow draw lists reference existing data instead of copying.
  • Skip stale draw-call writes for objects whose transforms haven't changed.
  • Eliminate redundant per-frame copies; static-object memcmp fast-path.
  • Skip editor culling when only game prepare is needed.
  • Reduce render submission and cleanup overhead.
  • Cache shadow filter + sort results; is_sorted early-out; skip EnsureObjectBuffers for stable scenes.

C++ Scene & Physics

  • ProcessPendingStarts O(N²) → O(N) — eliminates ~15 s stall on 10,000 objects.
  • Integer ID + bulk pre-allocation for creation hot path.
  • Physics batch optimization + deferred body creation.
  • snprintf-based GUID generation replacing string stream.
  • TransformBatchHandle, m_anyWorldMatrixDirty flag, ComputeWorldBounds cache.
  • Batch creation with shared mesh deduplication.

Python Editor

  • i18n, build_settings_panel, inspector_components optimized (complexity scores < 500).
  • Editor performance and Python stability improvements.

Improvements

Build & Packaging

  • Exclude av/ffmpeg from player builds (~67 MB saved).
  • No-JIT mode fixes — csv stdlib import, numba requirement stripping, JIT default off.
  • BuildSettings JIT toggle UI.

Editor

  • Texture picker Assets-only filter with popup height limits.
  • ProjectPanel keyboard shortcuts.
  • Minor editor UI theme/icon/ImGui updates.

Code Quality

  • Silent exception removal — Batch removal of except Exception: pass patterns across the Python codebase, replaced with proper error handling or explicit logging.
  • Module splitbootstrap_inspector, bootstrap_hierarchy, and undo extracted into focused packages.
  • C++ Phase 1 quick-wins — magic number extraction, const-correctness, naming consistency.
  • Phase 2 shared helpers — extracted shared scene and inspector helpers to reduce duplication and coupling.
  • Deduplicated undo py-component commands, inspector UI helpers, and tooltip boilerplate.
  • Extracted bootstrap wiring modules and table-driven undo snapshots.
  • Engine renderer duplicate helper definitions consolidated.

Bug Fixes

  • Fix editor panel bugs, UI prefab canvas tracking, and drag-drop improvements.
  • Fix begin_child border argument and BuildSettings JIT toggle.
  • Fix transform undo, enum iteration, Engine.instance singleton access, and texture search scope.
  • Fix no-JIT mode build — csv stdlib, numba requirement stripping, default JIT off.
  • Fix test file hotfix.

Upgrade Notes

  • No breaking API changes. This release is fully backward-compatible with 0.1.2.
  • JIT default changed: JIT is now off by default in build settings. Toggle it on explicitly in BuildSettings if your project uses @njit.
  • Player builds smaller: If your deployment pipeline relies on av/ffmpeg being bundled, add them back explicitly in your build configuration.

Contributors

Infernux 0.1.2

05 Apr 19:33
9344d7b

Choose a tag to compare

Release date: April 2026

Highlights

  • Numba JIT integration — A clean @njit decorator is now a first-class engine API. Decorate any computation-heavy function to get LLVM-compiled performance with automatic pure-Python fallback when Numba is unavailable.
  • Native editor panels — Console, Hierarchy, Project, Inspector, StatusBar, Toolbar, and MenuBar panels have been migrated from Python to C++, delivering up to 60× speedup in some panels.
  • Custom Inspector & Editor Window APIs — Users can now define custom inspector drawers and editor windows entirely in Python.
  • macOS build support — CMake presets, MoltenVK portability fixes, and Homebrew-friendly dependency resolution for Apple Silicon and Intel Macs.
  • Nuitka + Numba compatibility — Standalone game builds via Nuitka now fully support Numba JIT with hybrid exclusion, cache management, and build size optimization.

New Features

Numba JIT public API (Infernux.jit)

  • @njit decorator with automatic fallback — works identically whether Numba is installed or not.
  • .py attribute on every @njit-decorated function for explicit pure-Python invocation (fn.py(x)).
  • warmup(fn, *args) helper to trigger LLVM compilation ahead of time.
  • JIT_AVAILABLE flag for runtime detection.
  • ensure_jit_runtime() for auto-installing Numba at runtime if missing.
  • AST-based detection in game builder to conditionally include Numba in standalone builds only when user scripts reference JIT symbols.

Custom Inspector & Editor Window (Phase 10-A/B)

  • Python APIs for defining custom inspector drawers for components.
  • Python APIs for creating standalone editor windows with ImGui rendering.

Native Editor Panels (Phases 2–6)

  • ConsolePanel — native C++ with log filtering and noise reduction.
  • HierarchyPanel — migrated to C++.
  • ProjectPanel — migrated to C++; performance improved from 1.19 ms → 0.02 ms (60× speedup).
  • InspectorPanel — rewritten with native profiling, batched property rendering, and play-mode cache fix.
  • StatusBar, Toolbar, MenuBar — migrated to C++.
  • Six legacy Python panel files deleted.

macOS Support

  • CMake presets for macOS (release-macos).
  • MoltenVK portability subset, wideLines query fallback.
  • Homebrew-friendly SPIRV-Cross and assimp/zlib resolution.
  • Untitled scene close-save flow fix on macOS.

Improvements

Build & Packaging

  • Nuitka standalone builds now support Numba via hybrid exclusion (Solution B).
  • _JIT_STRIP_DIRS for aggressive package stripping in standalone builds.
  • --python-flag=-OO, --noinclude-pytest-mode=nofollow for build size reduction.
  • Recursive __pycache__ and .dist-info cleanup in distribution output.
  • _report_build_size() for post-build size reporting.
  • System DLL and engine DLL existence checks at startup.

Editor

  • Undo system rewrite with extracted helpers and deduplicated selection capture.
  • MeshRenderer material undo support.
  • Editor power-save idle mode to reduce CPU usage when idle.
  • Play/stop flicker fix.
  • Tooltip improvements.

Rendering

  • Multi-pass MSAA rendering pipeline fix.
  • RenderStack: inlined post-opaque passes for readability and controllability.

UI Editor

  • Multi-canvas bug fixes: per-list GPU buffers for overlay rendering.
  • Canvas-scoped hover/selection restriction.
  • Multi-select drag with domain validation.
  • Click accuracy tolerance for zoom levels.
  • Visibility-based UI mode switching.
  • Reparent position preservation with cache invalidation.

Code Quality

  • Large-scale refactoring pass across components, UI, undo, inspector, hierarchy, toolbar, and renderstack.
  • Replaced dispatch ladders with dict lookups.
  • Extracted shared helpers and eliminated magic numbers.
  • Data-driven camera settings loop in toolbar.

Bug Fixes

  • Fix Win32 DrawText macro collision in BindingGUI.cpp.
  • Fix SDL delay problem.
  • Fix editor camera capture issue (contributed by @Yang-Junjie).
  • Fix MoltenVK portability and wideLines query on macOS.
  • Fix untitled scene close-save flow on macOS (contributed by @WendellZ524).
  • Fix play-mode inspector cache invalidation.

API Changes

Added

Symbol Module Description
njit Infernux.jit Numba @njit decorator with automatic fallback
warmup Infernux.jit Pre-compile a JIT function with representative args
JIT_AVAILABLE Infernux.jit Runtime flag indicating Numba availability
ensure_jit_runtime Infernux.jit Auto-install Numba if missing

Removed from public API

Symbol Reason
smooth_damp (from Infernux.jit) Inlined into Mathf.smooth_damp as pure Python
contains_point_rotated (from Infernux.jit) Inlined into UI hit-testing
wire_sphere_trig (from Infernux.jit) Inlined into Gizmos
precompile (from Infernux.jit) Replaced by warmup()

Deprecated

Symbol Replacement
precompile_jit() No-op kept for backward compat; use warmup() instead

Contributors


Upgrade Notes

  • JIT kernel imports removed: If you imported smooth_damp, contains_point_rotated, or wire_sphere_trig from Infernux.jit, those functions no longer exist in the JIT module. Use Mathf.smooth_damp() directly instead.
  • precompile_jit() is now a no-op: It will not error, but does nothing. Use warmup(fn, *args) to pre-compile your own JIT functions.
  • macOS builds: Use cmake --preset release-macos and cmake --build --preset release-macos on macOS.

Infernux 0.1.1

31 Mar 16:50

Choose a tag to compare

Bug Fixes

  • Game build path safety check — Fixed a critical bug where the game builder could write into directories containing unrelated user files. Added BuildOutputDirectoryError validation with an error dialog before any build IO occurs.
  • Scene/Game panel input focus — Separated Scene editor mouse capture from Game runtime cursor lock, fixing a regression where Scene View camera interaction interfered with Game panel input.
  • Panel activation vs. context menu conflict — Fixed new panel activation logic breaking right-click context menu actions in Project/Hierarchy panels by excluding the popup hierarchy from hover detection.
  • Runtime native module packaging — Added startup validation for the _Infernux native module to surface clear errors instead of silently crashing when DLLs are missing from a packaged build.

New Features

  • Scene View camera sensitivity settings — Added move/rotate sensitivity sliders to the Toolbar with per-project persistence.
  • Game panel focus improvements — Clicking the Game render viewport or pressing Play now auto-focuses the Game panel; any mouse button activates a dockable panel.
  • Editor InputManager extensions — New SetEditorMouseCapture / IsEditorMouseCaptureActive API, fully decoupled from gameplay cursor lock.

Performance

  • Project Panel rendering optimization — Directory item list caching, file name layout caching, file-grid row virtualization (only visible rows rendered), thumbnail/material preview converted to queued lazy-loading, ImGui style push/pop hoisted out of per-item loop.

Refactor

  • Renderer pipeline cleanup — Reduced renderer boilerplate and hard-coded configuration; added scoped audit tooling.
  • Screen UI Renderer — Major refactor of InxScreenUIRenderer to reduce code duplication.
  • Packaging workflow — Optimized bundled Python runtime packaging scripts; added runtime_requirements.py for runtime dependency management.