Releases: InfernuxEngine/Infernux
Infernux 0.1.6 · 熔炉
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.pycentralize 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, andmcp.catalog.recommendlet 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, orapi.get(...). This forces the model to read subsystem guidance before performing risky writes. - Python API discovery from stubs:
api.subsystems,api.get, andapi.searchindex.pyifiles first and fall back to.pysource 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
FileExistsErrorloops during scaffold generation. - Structured empty / failure responses: scene queries and RenderStack inspection now return reasons,
stop_repeating, and explicitnext_suggested_toolspayloads when nothing is found, reducing the chance that an LLM retries the same dead-end call forever. GET /mcpdiscovery endpoint: HTTP probes against/mcpnow return a200JSON 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
.venvcorrectly, 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:
.pyifiles 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, andAudioListenerdocumentation 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 · 熔炉
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
AnimClip3Dassets: new core asset type with importer, schema versioning, and editor inspector. Embedded FBX takes are surfaced under each model as virtual.animclip3dsub-assets and can be dragged directly into the FSM canvas.- Skeletal animation runtime:
SkeletalAnimatorPython component plays backAnimClip3Ddata through the existingSpiritAnimator/AnimFSMgraphs; states acceptANIMCLIP3Dpayloads alongside the existing 2D path. - Skinned mesh rendering: new
SkinnedMeshRenderercomponent,InxSkinnedMeshresource, GPU skinning path, and a dedicatedSkinnedModelCache. 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
animclip3dicons and a real expand/collapse glyph next to the model thumbnail. Take names that come back asArmature | Actionare normalised to justActionin 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 throughGUID::subanimvirtual 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_inspector→asset_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), updatedGPUMaterialPreview, async transfer context (AsyncTransferContext), descriptor bind tracing, and a unifiedquery_or_schedule_texture_previewflow used by Project + Inspector + asset details. - Bootstrap and engine:
_bootstrap_wiringsplit,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, andVkCoreMaterialall received targeted updates for skinning, descriptor reuse, and async transfer. - Vulkan device layer:
VkDeviceContextandVkResourceManagerextended with new sampler / image helpers, plus a brand-newVkHandletranslation layer. - Asset / resource layer: new
InxSkinnedMeshandSkinnedModelCache,MeshLoaderextended for skinning data,ConcreteImportersupdated to surface model material slots and animation take metadata.
Python layer
- Components:
skeletal_animator.py,builtin/skinned_mesh_renderer.py, the renameanimator2d.py→spirit_animator.py, and broaderref_wrappers/serialized_field/_component_nativerefinements. - Core:
core/animation_clip3d.py,core/anim_state_machine.py, expandedcore/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.mdandREADME-zh.mdcarry 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.cssare 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-zhmechanism, so the API docs (wiki/site/en|zh/api/index.html) and the wiki manifest (assets/wiki-docs.json) continue to render throughjs/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).
- persistent top mission ribbon with the bilingual engine name (
- Wiki API index:
Version 0.1.5/版本 0.1.5rolled throughdocs/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 matchinginfernux-0.1.5.tar.gzare produced by the normal CMakereleasepreset (package_and_install_python); the Hub portable bundle (dist/Infernux Hub/) anddist/installer/InfernuxHubInstaller.execontinue 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:
animator2d→spirit_animatorfor the runtime Python module. TheAnimator3Dalias is fully gone in 0.1.5; switch toSkeletalAnimator/SpiritAnimator. - Inspector renderer rename:
engine/ui/asset_inspector.py→engine/ui/asset_details_renderer.py. External call sites importingasset_inspectorshould 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, anddocs/css/wiki.csshave 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
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;
SPRITEis 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:
.animclip2dauthoring in the editor,.animfsmstate-machine assets, runtime playback viaSpiritAnimator, 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:
NodeGraphgains 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
InspectorThemeBasestyling (inspector_theme.py) andpanel_spacingutilities 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 CMakereleasepreset (package_and_install_python); the Hub and installers continue to live underdist/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
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 fixed —
ProcessPendingStartswas 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 lighter —
av/ffmpegare now excluded from standalone player builds when unused. - Large-scale code quality pass — Silent
except Exception: passblocks 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_ptrcopy storm in DrawCall pipeline — all hot-path signatures now takeconst&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_sortedearly-out; skipEnsureObjectBuffersfor stable scenes.
C++ Scene & Physics
ProcessPendingStartsO(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_anyWorldMatrixDirtyflag,ComputeWorldBoundscache.- Batch creation with shared mesh deduplication.
Python Editor
i18n,build_settings_panel,inspector_componentsoptimized (complexity scores < 500).- Editor performance and Python stability improvements.
Improvements
Build & Packaging
- Exclude
av/ffmpegfrom player builds (~67 MB saved). - No-JIT mode fixes —
csvstdlib 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: passpatterns across the Python codebase, replaced with proper error handling or explicit logging. - Module split —
bootstrap_inspector,bootstrap_hierarchy, andundoextracted 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_childborder argument and BuildSettings JIT toggle. - Fix transform undo, enum iteration,
Engine.instancesingleton access, and texture search scope. - Fix no-JIT mode build —
csvstdlib, 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/ffmpegbeing bundled, add them back explicitly in your build configuration.
Contributors
Infernux 0.1.2
Release date: April 2026
Highlights
- Numba JIT integration — A clean
@njitdecorator 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)
@njitdecorator with automatic fallback — works identically whether Numba is installed or not..pyattribute 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_AVAILABLEflag 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,
wideLinesquery 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_DIRSfor aggressive package stripping in standalone builds.--python-flag=-OO,--noinclude-pytest-mode=nofollowfor build size reduction.- Recursive
__pycache__and.dist-infocleanup 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
DrawTextmacro collision inBindingGUI.cpp. - Fix SDL delay problem.
- Fix editor camera capture issue (contributed by @Yang-Junjie).
- Fix MoltenVK portability and
wideLinesquery 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
- @ChenlizheMe
- @WendellZ524 (macOS build support)
- @Yang-Junjie (editor camera capture fix)
Upgrade Notes
- JIT kernel imports removed: If you imported
smooth_damp,contains_point_rotated, orwire_sphere_trigfromInfernux.jit, those functions no longer exist in the JIT module. UseMathf.smooth_damp()directly instead. precompile_jit()is now a no-op: It will not error, but does nothing. Usewarmup(fn, *args)to pre-compile your own JIT functions.- macOS builds: Use
cmake --preset release-macosandcmake --build --preset release-macoson macOS.
Infernux 0.1.1
Bug Fixes
- Game build path safety check — Fixed a critical bug where the game builder could write into directories containing unrelated user files. Added
BuildOutputDirectoryErrorvalidation 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
_Infernuxnative 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/IsEditorMouseCaptureActiveAPI, 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
InxScreenUIRendererto reduce code duplication. - Packaging workflow — Optimized bundled Python runtime packaging scripts; added
runtime_requirements.pyfor runtime dependency management.