- Add context range to LayoutCache
- Add draw ShapedText, add register method to FontFamily
- Add ShapedText and TextShaper for drawing text, make drawText deprecated
- Rework LayoutPiece, optimize cluster work, now it won't do texture work
- Add FontFamily aliases
- Moving low-level text layout to graphics.text package
- Fix MessageQueue parkNanos time unit
- Don't use perspective if View has no 3D transform
- Add WindowGroup for toasts and popups
- Add context to Toast
- Add MpmcArrayQueue
- Fix BufferAllocPool
- Fix OpsRenderPass buffer pointers
- Update VaryingHandler and UniformHandler layout qualifier
- Add compatibility for base instance support
- Add GLUniformBuffer and buffer upload
- Add FilterMode, MipmapMode and AnisotropicFiltering for Paint
- Add async pipeline state cache (thread safe)
- Add separate objects from graphics package
- Add CustomDrawable for handling unmanaged draw
- Fix Buffer unlock method
- Fix BufferAlloc pointers
- Add RoundRectGeoProc
- Add Buffer creation method to Engine
- Add DrawOp and MeshDrawOp
- Add OpListTask
- Replace GLPipeline with separate GLProgram and GLVertexArray
- Add GLOpsRenderPass
- Add GLUniformDataManager
- Support base offset for GLVertexArray in OpenGL 3.3
- Fix Surface hierarchy
- Optimize view matrix composition
- Rework threading system
- Add ProgressBar and SeekBar
- Add Locale alias for FontFamily
- Add ScaleDrawable
- Change ScrollView default scrollbar
- Fix bitmap getPixelARGB on BIG ENDIAN machine
- Rework ShapeDrawable, remove old Shape classes
- Set long press timeout to 1000ms by default
- Add LinkMovementMethod
- Update BinaryIO
- Update ListView
- Update Pool and Pools
- Update Paint methods
- Add ViewPager module
- Rework drawLine method with SDF
- Add drawPie drawMesh canvas method
- Add GIF image decoder
- Add more Bitmap formats and image decode methods
- Merge Arc 3D graphics engine
- Add framework Nullable/NonNull annotations
- Allow Bitmap's pixels to be shared
- Add ColorSpace implementation
- Update Matrix and MathUtil
- Optimize for styled text, make text style serializable
- Add complex value and display metrics
- Add linked structure and custom data class for DataSet
- Add property name for Property
- Use MSAA resolve instead of MS texture sampler
- Add compatibility methods for creating render target objects
- Add close() for LazyCallback proxies
- Add GL_RG for GrayAlpha surface usage
- Add OpenGL 3.3 compatible shaders
- Add mutable texture allocation methods
- Add swizzle on texture binding
- Use separate min/mag filter for SamplerState
- Optimize surface canvas methods
- Optimize font atlas generation
- Change default font atlas size to 4 chunks (1024x1024)
- Change number of font atlases from multiple to single
- Add efficient rectangle packing algorithms
- Add linear pager indicator
- Initial update
- Adjust GUI scale algorithm
- Adjust tooltip border width
- Add distance field text to 3D world
- Fix total advance of layout is never pixel-aligned
- Fix TTF loading in vanilla resource packs
- Adjust texture sharpening factor
- Fix distance-to-edge anti-aliasing is gamma correct
- Support capability for fragments and screens
- Fix incorrect color blending for tooltip
- Fix GUI scale is always auto after restart
- Fix black screen with blur effect
- Add glow wave effect
- Fix line breaking for obfuscated chars
- Remove enchantment font hack
- Support vanilla bitmap font in replacement run
- Support vanilla bitmap font as font family
- Support vanilla font declaration
- Adjust text decoration thickness
- Reduce unnecessary native memory usage in vanilla
- Make font resource reloading work async
- Optimize ChatFormatting.getByCode to O(1)
- Optimize layout caching strategy
- Add font set to layout key
- Adjust analytic anti-aliasing to screen-space
- Improve font collection itemization
- Update shaders to a modern version
- Change the background blur from 4-pass box blur to 2-pass gaussian blur with lod and noise
- Improve config reloading and action center UI
- Fix crash on dedicated server (though you shouldn't install on server)
- Add config to disable slider GUI scale
- Update GUI scale algorithm
- Add sharpen font atlases
- Change blend mode for glowing text
- Use indexed rendering for glyph meshes
- Add sharpen textures for all shaders
- Always use premultiplied alpha for builtin renderer
- Add I18n compat characters
- Add new API and remove server dependency
- Change registration and network to internal
- Support for OptiFine 1.19.2
- Migrate to MC & Forge 1.19.2
- Add new glowing text effect
- Add deferred rendering to improve performance
- Migrate to MC 1.19.2
- Compact font atlas generation
- Add support for creating window with the highest OpenGL it can
- Fix config reloading even if nothing changed
- Add debug stuff
- No updates
- Workaround SPACE tunneling event is not consumed in EditText
- Enhance GL caps error screen
- Add support for requesting OpenGL 4.6 or 4.5 core profile window avoiding GL caps errors
- No updates
- Internal changes
- Add debug stuff
- Add traditional Chinese support
- Add support for sign glowing text
- Add shadow offset and outline offset config
- Fix auto disable OptiFine fast render not working
- Add support for COMBINING ENCLOSING KEYCAP
- Fix index crash when EditBox contains formatting codes
- Internal changes
- Fix window mode sometimes didn't work correctly
- Fix tooltip BG or FG transparency sorting and write into depth buffer
- Enhance and smooth EditBox rendering
- Adjust alpha threshold from 1 to 2
- Fix NPE when font renders fast chars nothing
- Fix line feed ignored when using fast path of line breaking
- Fix text empty when using fast path of text breaking backwards
- Internal changes
- Make extensions backward compatible to OpenGL 3.3
- Add window mode config (like fullscreen borderless)
- Add config of ignoring GL errors
- Add GL error GUI and link directing
- Add right-to-left layout for modern tooltips
- Add in-game GUI for all new configs
- Add dump of memory info of all textures
- Fix tooltip shaking when rendering at bottom
- Dispatch generic pointer events
- Enable more configs to take effect in real-time without restarting
- Disable Minecraft render thread assertions
- Auto disable OptiFine fast render
- Make text engine backward compatible to OpenGL 3.3
- Add Slack and Discord Emoji shortcode support
- Add BiDi text line breaking with color Emoji support
- Add Unicode color Emoji support (Twemoji 14.0)
- Add pre mipmap generation for bitmaps
- Add bitmap replacement support for text layout
- Add Unicode line breaking algorithm
- Add Unicode text breaking algorithm
- Add Unicode grapheme cluster break algorithm
- Add substring conservative algorithm for line breaking
- Add config of color emoji and grayscale emoji
- Add config of BiDi text direction heuristic algorithm
- Add config of font anti-aliasing and precise metrics
- Add config of font base size and baseline shift
- Add config of rehash threshold and recycle time
- Add config of snapping to pixels for text layout
- Add config of fixing invalid surrogate pairs
- Add config of fast digit replacement
- Add Minecraft vanilla TTF font
- Add fast character replacement and optimize its generator
- Add super-sampling config and disable it by default
- Make BiDi text layout always in visual order
- Fix discontinuous style in continuous text layout
- Reduce the overhead of GL state changing
- Optimize the recycling logic of text layout nodes
- Optimize text layout and iteration performance
- Optimize lookup key and searching
- Refactor text layout engine
- Internal changes
- Enhance layout transition when closed
- Add support for custom OpenGL driver
- Fix GUI crash when disabled
- Enhance GL capability check
- Add server version
- Add tooltip anim duration config
- Add inventory pause
- Fix dedicated server startup
- Add font atlas dump
- Internal changes
- Add baseline config
- Add more obfuscated chars
- Enhance breaking multilayer text at a point
- Add font size config
- Internal changes
- Refactor the loader and improved compatibility
- Add buttons to disable text engine and extensions
- Add radial blur effect (beta)
- Port to 1.18.2 (1.18.1 works as well)
- Preload the engine and parallel cleaner
- Fix font blur when GUI scale is 1 or 2
- Fix obfuscated chars layout
- Internal changes
- Stop crashing if some mods failed to load
- Fix screen lifecycle and threading bugs
- Add DataSet utils
- Add more configs to Center UI
- Make all registries only in dev mode
- Quit UI thread safely
- No updates
- Improve documentation
- Add ReactiveX
- Add BlendMode and color blending
- Add TextView context menu
- Add clickable text styles
- Add Slide and Explode transition
- Add transition SFX to fragments
- Add FULL support for Transition framework
- Add int keys for DataSet
- Add standalone application bootstrap
- Add multithreaded event synchronizer
- Add ContextMenu popup
- Add Menus and Radio Buttons
- Add DropDownList and relevant components
- Add ListView and relevant components
- Add FULL support for ScrollView
- Add FULL support for Nested Scrolling
- Add triangle drawing operation
- Add new scrollbar features
- Add foreground layer to View
- Fix PointerIcon resolving
- Fix some RTL layout bugs
- Fix padding not working sometimes
- Fix inverse matrix
- Fix orthographic matrix
- Auto lose EditText focus
- New touch event handling
- Multithreading AnimationHandler
- Remove generic of animated values
- Add new features:
- Add RelativeRadioGroup
- Add FragmentResultListener
- Add ArrayAdapter
- Add PopupMenu
- Add Spinner
- Add MenuItemView
- Add ImageView
- Add EdgeEffect
- Add AnimatorSet
- Add PopupWindow
- Add CoordinatorLayout
- Add Filter
- Add HandlerThread
- Add ActionProvider
- Add ActionMode
- Add ContextMenu
- Add MenuItem
- Add SubMenu
- Add Menu
- Add Menus
- Add CharacterMap
- Add SparseBooleanMap
- Add EditText
- Add SoundEffects
- Add AdapterView
- Add VelocityTracker
- Add ValueAnimator
- Add Shapes
- Add StateListDrawable
- Add DrawableContainer
- Add ColorStateListDrawable
- Add ImageDrawable
- Add ColorDrawable
- Add Drawables
- Add StateListAnimator
- Add StateListColor
- Add StateSet
- Stabilize Forge API and components
- Add Center UI (Ctrl+K)
- Fix several transition and lifecycle bugs
- Add blur effect to screen background
- Fix vanilla tooltip text not rendering
- Add bootstrap config, OR 1 to disable
- Fix underline and strikethrough not rendering
- Close package
- Always linear sampling font textures
- Merge view alpha property and transitions
- Change paint properties
- Change gradient color ordering
- Add tree base for new render pipeline
- Update Libraries
- Log4j 2.14.1 -> 2.17.0
- caffeine 3.0.4 -> 3.0.5
- icu4j 69.1 -> 70.1
- LWJGL 3.2.2 -> 3.3.0
- Synchronize UI messages
- Update shaders and canvas pipeline
- Update high precision time source
- Add new event loop framework (Fast blocking) (Big Update)
- Native Main Thread
- Async Tasks
- ...
- Optimize bitmap I/O, add .jfif .jif detect
- Add Fragment (inherited from Module) full support (Big Update)
- Back Stack
- State Manager
- Special Effects
- Callback
- ...
- Add DataSet (Fast I/O and persistent storage)
- Add tree observer methods
- Add new movement method
- Add fast key-held linked list with removal support
- Add Lifecycle full support (Big Update)
- Live Data
- Observer
- ...
- Port to 1.18, remove deprecated methods
- Add destroy state to callback lifecycle
- Fix container not closed when backing
- Require Java 17, update libraries
- Add toast, toast manager and presenter
- Fix anticipate overshoot interpolator
- Expose thread scheduling methods
- Fix invisible state not working
- Fix null layouts not working
- Notify hierarchy changes to ViewGroup
- Add selected and activated states to View
- Update RelativeLayout
- Fix alpha blending between render targets
- Rename view scale usages
- Add number input filters
- Fix primitive array increment
- Add text color attributes
- Add listener setters
- Integrate multi-threading pipeline with Blaze3D
- Public stable APIs
- Check code style
- Fix single line text alignment and scrolling
- Add compound drawables to text view
- Fix background paddings and transitions
- Add cursor selection, movement/scrolling
- Update clipboard manager
- Add blinking cursor and selection rendering
- Add transformation method
- Add arrow key movement method
- Add cursor movement and text/word deletion
- Add text selection and movement
- Add key event dispatching
- Add pointer icon resolution
- Add focus system for view tree
- Fix transform with non-homogeneous vectors
- Update view root and view tree protocol
- Add layout transition for a view group
- Add alpha transition of a view layer
- Add child off-screen rendering targets
- Improve MSAA framebuffer and attachments
- Make animators cloneable
- Add replacement style
- Update new tooltip events
- Fix registry references
- Add network handler on netty thread
- Update network protocol
- Rename packages
- Fix external fonts cannot be loaded on Linux
- Add view paddings and RTL properties
- Update layout containers
- Update UI thread scheduling
- Enhance quadratic bezier shader
- Add DynamicLayout
- Add text methods
- Fix various bugs on text engine
- Add SpannableStringBuilder
- Fix bugs on LineBreaker
- Avoid allocating large arrays for getSpans
- Add GrowingArrayUtils
- Enhance tooltip rendering and add gradient effect
- Fix hex colors cannot be parsed
- Port to 1.17.1
- Port to 1.17.1, use OpenGL core profile
- Require Java 16
- Optimize packet dispatcher
- Add gradient color on screen background blurring
- Add new tooltip rendering based on the new engine
- Adjust the lifecycle of render system and text engine
- Fix smooth scrolling for vanilla/forge panels
- Modify network protocol algorithm
- Add efficient network channel
- Fix compatibility to several mods
- Add namespaced events to mod buses
- Support rendering and sampling with bitmap-like fonts
- Fix rendering with bold and italic styles
- Fix rendering with enchantment characters
- Improve typeface setting and font run algorithm
- Improve BiDi and style algorithms on text layouts
- Add new cache key on deep processed char sequences
- Add new layout cache system and tracker
- Add automatic resolution level switching
- Support continuous text layout from deep processors
- Support taking over text layout and caching from the source
- Optimize text and effect rendering pipeline
- Optimize formatting code resolver algorithm
- Optimize layout caching on text components and sequences
- Optimize rendering on multilayer styled text
- Introduce character style carrier for state injection
- Expand the scope of application of text engine
- Fix bidirectional text rendering with multiple styles
- Fix rendering with texts computed from fast digit algorithm
- Fix dirty font texture data on sprite borders
- Change the behavior on built-in font loading
- Improve experience bar text rendering
- Fix rendering with Thai and Bengali
- Finish StaticLayout for text pages
- Add recyclable span set and draw text command
- Add deferred calculation grapheme advance and full layout
- Fix various bugs for layout cache
- Add texture manager and image creation
- Add scaling image drawing and dimension
- Remove context selector
- Cleanup GLTexture usages in subclasses
- Add quadratic Bezier curve drawing
- Optimize OpenGL rendering pipeline for canvas
- Cleanup deprecated classes and code
- Optimize spannable string implementation
- Fix sample array allocating
- Add streaming ogg vorbis decoder and wave decoder
- Add audio tracks for 2D sound playback
- Add more text styles and effects
- Optimize layout cache, measured text and rendering
- Add new switch button widget
- Add visual audio spectrum
- Optimize view refresh mechanism
- Add touch event for mouse operations, add click listener
- Remove multiple pointers on event delivery, capture mouse
- Add fast fourier transform for spectrum analysis
- Optimize input event dispatching
- Introduce AudioManager based on OpenAL
- Apply 4x MSAA to UI framebuffer
- Add the base part for text lines
- Add memory calculation on measured text
- Add efficient layout cache for layout pieces
- Optimize glyph layout and rendering for text runs
- Optimize text rendering pipeline
- Add layout piece for the layout of a text run
- Add PMX model parser
- Add directions information for bidirectional text
- Optimize GlyphManager for glyph layouts and rendering
- Add new dynamic generation algorithm for font atlases
- Add new scrolling algorithm to the view system
- Support gradient color for geometries rendering
- Add new scroller for controlling 2D scrolling
- Add decomposable transformation
- Apply clipping to the view system
- Add quick reject against local clipping region
- Introduce new clipping system and stencil test
- Add drawables and host callbacks
- Cleanup forge canvas API and lifecycles
- Add automatic resizing for framebuffers
- Add local state switching on drawing commands
- Coordinate UI thread animation and drawing
- Optimize rendering for view hierarchy
- Drop support for Java 10 or below
- Add round lines and more drawing methods
- Add image drawing and recycle bitmaps
- Switch to multithreaded rendering
- Add automatic vertex array object generation
- Add vertex attributes and vertex buffer binding points
- Introduce GLCanvas and update shaders
- Introduce a new method to create shader programs
- Update to OpenGL 4.5 and Direct State Access
- Update core package structure
- Add MSAA framebuffer and renderbuffer objects
- Use cleaner to release native resources
- Support tab stops and base paragraph-level style
- Merge new animation API with the old one
- Add evaluator for custom interpolation algorithm
- Add more time interpolator(s)
- Add custom keyframe types and keyframe set
- Introduce new animation framework and state machine
- Add supported image formats and open dialog
- Add bitmap for decoding images into memory and exporting
- Add texture objects on client side
- Suppress unsupported clipboard contents
- Fix resource reading using native memory
- Optimize rotation about arbitrary axis
- Add efficient quaternion math for rotations
- Add efficient matrix/vector math for rendering
- Add Rect, Point, and their float forms
- Add the concept of UI thread that differs from render thread
- Abstract the API on the rendering pipeline
- Add platform components to operating system
- Add fragment shader to draw circular arcs
- Add paint for rendering geometries
- Update shaders to GLSL 430 core
- Add font metric calculation
- Separate text paint at different levels
- Add support for emoji code points
- Add application-level typeface and text locale
- Add itemization algorithm for font runs
- Add Unicode-based line breaker for text pages
- Add base measured text for text shaping
- Add object pools for recycling
- Enhance style run transitions for paragraph layout
- Add new BiDi analyzer for measuring paragraphs
- Add various text direction heuristic algorithm
- Add metric affecting styles
- Add character-level appearance styles
- Add support for Unicode grapheme cluster break
- Add texts with markup objects
- Add text package for high-level layouts
- Change coordinates to match window framebuffer
- Add lifecycle handler for screens
- Fix rendering on some graphics cards
- Fix first scroll bar dragging
- Broaden scrolling compatibility with other mods
- Tweak circular progress bar animation
- Expose additional HUD bars option
- Add platform window
- Add fast matrix calculation
- Update shaders to GLSL 430 core
- Improve filling and stroking of round rect shader
- Add filling and stroking of arc and circle shader
- Add circular progress bar for world loading screen
- Smooth scrolling for vanilla and forge scroll panels
- Several optimizations
- Fix lifecycle crash
- Warn old Java only once
- Fix enchantment characters
- Add text layouts, line breaker
- Broaden compatibility
- Support down to Java 8u51
- Improve digits alignment
- Optimize memory usage for text layout cache
- Fix font mipmap texture not reset after reusing
- Fix compatibility with ItemZoom
- Auto switch font resolution level
- Add grapheme cluster breaker
- Change to absolute coordinate system
- Improve experience bar rendering
- Improve gui scale setting
- Fix compatibility layer with vanilla
- Change project structure
- Add SFX when game loaded
- Configurable tooltip frame color
- Make font renderer reloadable at runtime
- Fix backslash path
- Fix tooltip matrix transformation
- Fix tooltip compatibilities
- Smooth tooltip rendering
- Add new tooltip style
- Fix crash with some java versions
- Fix crash when running data generator
- Update the network protocol
- Fix client crash due to parallel mod loading
- Add auto-shutdown for server
- Fix crash when forge event bus not started
- Fix crash on dedicated server
- Fix ingame GUI rendering with no texture in some case
- Fix font renderer not override some mods (like InventoryHud)
- Add input event handling
- Add signature
- Fix sometimes crash when caching digit texture
- (2.2.3.67) (2020-11-17)
- Fix rendering when an invalid formatting code applied
- (2.2.2.66) (2020-11-16)
- Fix rendering with space character
- Fix rendering with Thai
- Add support for external fonts
- Expose built-in blacklist
- Port to 1.16.3
- Fix IReorderingProcessor generator
- Fix empty layout node not being considered
- Fix blur effect with pumpkins on the head
- Fix animation time disruption between frames
- Fix animation timer on game paused
- Optimize blur shader
- Add OpenGL capabilities check
- Make text caching work asynchronously
- Add support for IReorderingProcessor
- Fix font renderer see through type
- Add ultra-high definition for font rendering
- Fix text position texture out of limit bounds
- Fix empty text node can't be processed
- Adjust text render layer, avoid performance loss
- Fix text color background rendering
- Fix invalid text formatting codes not being removed
- Require Forge 32.0.93+
- Rewrite text processing, fix text formatting
- Remove vanilla bidi analysis for every text in every frame
- Fix fragmentary bidirectional text layout (mixed LTR RTL)
- Fix vanilla's Arabic letters shaping (start, middle, end)
- Fix Devanagari (Hindi etc) and other characters rendering
- Fix text effect rendering and render type
- Fix text width measuring, trimming
- Optimize text rendering on RAM and FPS
- Adjust the alignment accuracy of the digit rendering
- Reduce the requirement of OpenGL 4.6 to OpenGL 4.3
- Improve the text layout accuracy of font renderer
- Improve the size and advance accuracy of glyph
- Improve the alignment accuracy of digit rendering
- Improve the rule of font priority to use
- Use grayscale pixels to store font textures to reduce memory usage
- Use render nodes for text rendering to improve performance
- Support higher level mipmap for font textures
- Support vanilla text styles and components
- Add font size style to text component
- Add more configs for font renderer
- Add more configs for blur effect and background opacity
- Fix search bar crash
- Fix server crash on start
- Fix keyboard listener auto lose focus, and integrated in module
- Fix widget relocate method
- Fix pause only main menu screen logic
- Fix scroll controller minimum precision
- Fix not disable keyboard listener repeat mode when gui closed
- Change layout editor shortcut key
- Update icon textures
- Reimplement double-click event, make it work in resource packs GUI
- Adjust status changing behaviour (API broken)
- Fix multi-page scroll panel page bug
- Fix animation chain crash
- Fix scroll window total height bug
- Add layout editing GUI
- Add feathered rect shader
- Add two-way expandable box area
- Add config to set whether enable lib only mode
- Add config to set whether enable blurring effect
- Add echo char to text field
- Fix font renderer render type not switched properly
- Fix special render face culling of font renderer
- Fix characters not display / layout properly (extremely confused) while game is paused
- Fix characters get dislocated (combined with other chars) when a new texture mapping started
- Add new methods to animation, and fix button brightness bug
- Add config to set whether allow drawing font with shadow
- Add config to set whether pause game when any screen is open
- Add multi-page scroll panel
- Add clip to canvas
Add mipmap support for mui font renderer
Fix render type of mui font renderer
Fix crash with optifine connected textures
Make font renderer work globally in game
Fix compatibility with OptiFine 1.15.2 HD U G1 pre14+
Add almost all optifine settings in iteratable form
Add scroll panel, a light-weighted scroll window
Require Forge 31.1.63+
Fix text icon button, default module in
Fix number input field, max long
Fix slided toggle button, default on status
Fix dynamic button press
Rework animations
Rework all widgets
Rework all implementations
Add button sounds
Add developer mode
Fix ingame menu opened before load complete
Fix wrong font renderer calling
Fix background alpha reset incorrectly
Keep MUI screens / modules instance when using vanilla's parent screen system, also fixed container screen
Add gui background alpha gradient
Fix compatibility with vanilla and container screen
Make "reset keys" button in Controls into an icon button for cleaner look
Fix client container won't be closed
Fix switch child module can't be called by root module constructor
Fix text icon button won't light up when was called by constructor
Add russian localization (by vanja-san)
Fix API compatibility
Fix wrong displacement while following texturedGlyph in scroll window
Improve and perfect the KeyBinding search function
Make rounded frame render more smooth
Add new text field
Add search bar to Controls GUI, allows to search key or name
Add show KeyBinding conflicts function
Rework drawing system, and use new canvas system now
Add new widgets
Add new shaders
Bug fixes and UI tweaks
Code reduction, clean-up and optimization
Reduce resources size
Add rounded rectangle shaders
Make transition animation more smooth
Add transition animation
Add java version detection
Initial Release