This version comes with many important features.
## **Major Highlights for Users:**
* **Smarter Snap & Anchoring**: Widgets snapped to screen centers or margins will now adapt correctly and maintain their precise layout positions on screen resize/resolution changes.
* **Drag Selection Window**: Click and drag on empty space to draw a selection window to select multiple widgets at once and drag them together.
* **`CTRL + LeftClick` Multi-selection**: Hold `CTRL` and click on individual widgets to toggle selection, allowing you to select and move multiple custom widgets.
* **Widget Grouping (`CTRL + G`)**: Select multiple widgets and press `CTRL + G` to group them. Grouped widgets move together.
* **Dynamic Scaling Tools**: Drag the new scale dot on the bottom-right corner of a selected widget, or hover over a widget and press `CTRL + Mouse Wheel Scroll` to resize it.
* **Name Truncation**: Long option names are now automatically truncated with `...`, preventing overlap in compact context menus.
* **Locked Widget Fix**: Locked widgets now correctly adapt their positions on screen resizing instead of staying at stale coordinates.
* **YACL Global Configurations**:
* `Enable Drag Selection`: Toggles drawing select-dragging box overlays.
* `Dashed Outline Color & Thickness`: Custom colors and width parameters for widget guidelines.
* `Show Lock Button & Lock Size`: Custom sizes and display toggles for lock/unlock icons.
* `Scale Dot Size & Scale Sensitivity`: Fine-tune size and scale dragging speeds.
* `Smart Snapping & Snap Size`: Adjust axis alignments and snap grid sizes.
## **Major Changes for Developers:**
* **[Feat.] Node-Based Layouts**: The `LayoutEngine` now processes context menu layouts using tree nodes (`ColumnNode`, `GridNode`, `RowNode`, etc.). (Currently used by ClassicSkin)
* **[Feat.] Properties Cleanup**: Cleaned up the redundant `padding` and `heightOffset` properties from `ContextMenuProperties`, offloading positioning and gaps to layout strategies.
* **[Feat.] Keybind Options**: Added support and documentation for `KeybindOption` allowing GLFW keyboard bindings to have dedicated UI option card renderers.
* **[Feat.] Widget Groups**: Introduced the `WidgetGroup` class for linking multiple widgets together, supporting unlocked member drag propagation and unified outline box rendering.
* **[Feat.] Better Anchors**: Replaced absolute offsets with precise anchoring. Widgets automatically detect their closest screen zone (out of 9 possible zones) to calculate precise relative positioning on window resizing.
* **[Fix.] Screen Resize Injections**: Fixed a bug in `ScreenMixin` where the mixin was passing the old screen sizes instead of the new dimensions during a resize callback.
* **[Fix.] UUID Unique Identifiers**: Replaced String-based `UID` unique identifiers in widgets with `java.util.UUID`.
* **[Fix.] Option Name Truncation**: Added utility functions `Util.getTruncatedName` and `Util.drawTruncatedScaledText` in `Util.java` to support clean text rendering.
* **[Feat.] Base-Class Skin Renderers**: Derived skins can now inherit their option renderers from the base class if not explicitly overridden.
The [Wiki](https://tanishisherewith.gitbook.io/dynamic-hud) has also been updated.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }