mostly bug-fixes and quality-of-life improvement
- add order to ui element dump
- fix a bunch of rendering artifact from RenderUtils
- add a new text formatting dsl
- refactor texture module
- ensure that shutdown hooks execute at the very end
- fix RenderMask not working properly in some rare situations
- refactor GuiLifecycleProvider
- better gui overlay logic via mixin
- more api exposed via IgiRuntime
This version includes breaking changes!
Changes
- Fixed a potential AnimTextRenderer crash
- Implemented a theme manager using
configurate-hocon
- Migrated magic UI constants to themes
- Added vanilla style background and button
- Added more texture rendering abstraction
- Better
ReactiveObject
callback handling - Added
ReactiveCollection
- Added
Slot
to MVVM - Added
ComposeBlock
. You can now inject immediate-mode Compose-style UI to MVVM viaSlot
- Virtual tree diffing for Compose UI recomposing
- Added
RenderOp
and deferred UI rendering instructions architecture - Added render update interpolation pipeline
- Implemented render update interpolation for
SlidingText
andAnimText
- Added
SharedContext
forViewModel
andComposeBlock
to communicate - Added ZenScript util classes
- Added DOM-like event system including input propagation and so on
- Migrated to new UI event system
- Improved
GuiResources
as a texture resource manager - Added UI rendering decoration pipeline
- Added a bunch of visual commands for that decoration pipeline
- Better UI element registry info logging on startup - a markdown file will be created
- Added
fluxloading
compat - not to run lifecycle during loading - Refactor forge events
- Added
GuiLifecycleHolder
&GuiLifecycleProvider
pipeline - Added
IgiRuntime
to unify entry point - General fixes + refactor + cleanup
Current Architectural Modules Chart
Module | Role | Status |
---|---|---|
MVVM Base | Separates logic (ViewModel) from rendering (View) | ✅ Done |
XAML-Style DSL For View | Declarative XAML-style layout to build static UI trees | ✅ Done |
Reactive Binding | View reacts to changes in ViewModel automatically | ✅ Done |
Compose (Injected via Slot) | Immediate-mode UI embedded in ViewModel | ⚠️ Partially |
Snapshot Diffing | Virtual tree diffing for Compose-based UI | ✅ Done |
Shared Context | Shared runtime context between ViewModel and Compose blocks | ✅ Done |
DOM-Like Event System | Input propagation and event capturing/bubbling | ✅ Done |
Interactable Control | Captures input, intercepts propagation (works with Event System) | ✅ Done |
Fixed / Render Update | Dual update loop for logic vs render | ✅ Done |
Annotation Driven Auto-Interpolation | Utility for smooth interpolation during render updates | ✅ Done |
Render Op Queue | Abstract draw commands for controls | ✅ Done |
UI Decoration | Draw custom visuals on existing controls | ✅ Mostly Done |
Theme Manager | Global theme system (colors, font scale, etc) | ✅ Mostly Done |