Skip to content

Releases

CompixelUI 0.1.18

Choose a tag to compare

@github-actions github-actions released this 28 Oct 10:12

This release is for every supported Minecraft version: 1.20.1, 1.21.1, 26.1.2, 26.2 and 26.3. Mods built for the previous release keep working without changes.

  • Fixed: when slots move under a pointer that stands still, for example when a mod scrolls its grid by moving slots, the hover moves to the slot now under the pointer, both in Ore's look and in slots you draw yourself (hovered). It used to stay on the slot hovered before the move until the pointer moved.
  • Changed: when the pointer moves to another slot, only the slot it leaves and the slot it reaches are recomposed, instead of every slot on the screen. With 462 slots and the pointer reaching another slot every frame, the average frame took about 4 ms instead of about 6 ms on the test machine.

Choose the file matching your Minecraft version and loader. Install one variant only:

  • Standard: requires a compatible external Kotlin provider.
  • with-kotlin: includes Kotlin; do not combine it with KFF or another Kotlin runtime.

Runtime compatibility
SHA-256 checksums are provided in SHA256SUMS.

CompixelUI 0.1.17

Choose a tag to compare

@github-actions github-actions released this 28 Oct 03:29

This release is for every supported Minecraft version: 1.20.1, 1.21.1, 26.1.2, 26.2 and 26.3. Mods built for the previous release keep working without changes.

  • Added: screens and HUD layers can read the game with gameState and change it with gameThread.post, with no state or action types of their own. A gameState property reads the game on the game thread when the screen opens, before its first frame, then every tick or every few ticks, and after work posted from an input event; the content redraws when the value changes. Work posted from a click runs before the click returns. See Show game data.
  • Deprecated: snapshot, handle and send, which are removed in 0.2.0 together with the screens' state and action type parameters. Until then they keep working and can be mixed with gameState. See Snapshots and actions.

Choose the file matching your Minecraft version and loader. Install one variant only:

  • Standard: requires a compatible external Kotlin provider.
  • with-kotlin: includes Kotlin; do not combine it with KFF or another Kotlin runtime.

Runtime compatibility
SHA-256 checksums are provided in SHA256SUMS.

CompixelUI 0.1.16

Choose a tag to compare

@github-actions github-actions released this 26 Oct 06:31

This release is for Minecraft 1.20.1 and 1.21.1. Minecraft 26.1.2, 26.2 and 26.3 were not affected by this crash and stay on CompixelUI 0.1.15.

  • Fixed: a CompixelUI screen no longer crashes the game when it shows an item whose model has no particle texture, as some mods' items do. Whether an item icon is animated is now decided only from the textures the game draws for it.

Choose the file matching your Minecraft version and loader. Install one variant only:

  • Standard: requires a compatible external Kotlin provider.
  • with-kotlin: includes Kotlin; do not combine it with KFF or another Kotlin runtime.

Runtime compatibility
SHA-256 checksums are provided in SHA256SUMS.

CompixelUI 0.1.15

Choose a tag to compare

@github-actions github-actions released this 23 Oct 13:14
  • Changed: the first CompixelUI screen of a game session stalls the game much less when it opens. CompixelUI now prepares Compose in the background while the game loads; the first opening of a container screen went from about 0.7 to about 0.25 seconds.
  • Changed: around its OpenGL drawing, CompixelUI now saves and restores only the state each step can change, instead of every texture unit the driver offers (192 on NVIDIA). On the test machine this work takes about a quarter of its former time for each screen redraw, and about a thirtieth for each item icon copy.
  • Changed: while nothing on a CompixelUI screen changes, the game no longer waits for Compose's thread on every frame, which took about 0.07 ms per frame on the test machine.
  • Fixed: CompixelUI screens leave the game's OpenGL state as they found it. Program-controlled point size stayed enabled after every redraw on Minecraft 1.20.1 and 1.21.1, and with drivers that support window rectangles, NVIDIA's among them, a screen whose last drawing sat under a difference clip could keep later game drawing from reaching parts of the screen.
  • Fixed: animations that start when a screen opens, such as its entrance, play from the frame in which the screen first shows. The time a screen spent composing and drawing its first frame used to count toward them, so a slow first opening could skip an entrance entirely.

Choose the file matching your Minecraft version and loader. Install one variant only:

  • Standard: requires a compatible external Kotlin provider.
  • with-kotlin: includes Kotlin; do not combine it with KFF or another Kotlin runtime.

Runtime compatibility
SHA-256 checksums are provided in SHA256SUMS.

CompixelUI 0.1.14

Choose a tag to compare

@github-actions github-actions released this 22 Oct 13:23
  • Fixed: the game starts when another mod carries its own copy of XZ for Java, such as Voxy loaded through Roxy on 1.21.1 (#1). Java does not let two modules share a package, so the game used to quit before loading any mod. CompixelUI's runtime now carries XZ for Java under its own package name.
  • Changed: the release JAR is about 6 MB smaller, for example 38.7 MB instead of 44.9 MB on 1.21.1, or 40.9 MB instead of 48.2 MB with Kotlin. The JAR now compresses each embedded library bundle as a whole, the native libraries of each CPU architecture are compressed together, and the Compixel font ships xz-compressed.
  • Changed: on the first start after installing or updating, systems other than Windows x64 and Apple silicon Macs take up to about a second longer to unpack their native library.
  • Changed: on 1.20.1 and 1.21.1, the loader keeps embedded libraries in memory, which now takes about 22 MB more, or 27 MB more with Kotlin; on 26.x it unpacks them into its cache on disk instead. CompixelUI also unpacks its font while the game loads and keeps it in memory, about 8 MB, instead of reading it again whenever Compose reloads it.

Choose the file matching your Minecraft version and loader. Install one variant only:

  • Standard: requires a compatible external Kotlin provider.
  • with-kotlin: includes Kotlin; do not combine it with KFF or another Kotlin runtime.

Runtime compatibility
SHA-256 checksums are provided in SHA256SUMS.

CompixelUI 0.1.13

Choose a tag to compare

@github-actions github-actions released this 21 Oct 11:06
  • Changed: the release JAR is about 28 MB smaller, for example 44.9 MB instead of 73.4 MB on 1.21.1. CompixelUI now stores Skiko's native libraries xz-compressed and keeps the ICU text data, which Skia embeds in each Linux and macOS library, only once. When the game starts, CompixelUI unpacks the library for the current system into Skiko's cache, .skiko in the user's home directory, where Skiko used to unpack it itself; a library already there is used as it is. The first start after installing or updating takes less than a second longer.
  • Changed: ComposeRuntime and KotlinRuntime moved to dev.compixel.platform.internal and left the API reference. They only serve CompixelUI's own startup checks.

Choose the file matching your Minecraft version and loader. Install one variant only:

  • Standard: requires a compatible external Kotlin provider.
  • with-kotlin: includes Kotlin; do not combine it with KFF or another Kotlin runtime.

Runtime compatibility
SHA-256 checksums are provided in SHA256SUMS.

CompixelUI 0.1.12

Choose a tag to compare

@github-actions github-actions released this 17 Oct 14:14
  • Fixed: holding a key such as Shift, Ctrl or Space in a CompixelUI screen no longer makes the game stutter. Every key press, including the repeats of a held key, used to read the system clipboard, which can take tens of milliseconds depending on what was copied. Now only the paste shortcuts read it, once per press: Ctrl+V, Command+V on macOS, and Shift+Insert.

Choose the file matching your Minecraft version and loader. Install one variant only:

  • Standard: requires a compatible external Kotlin provider.
  • with-kotlin: includes Kotlin; do not combine it with KFF or another Kotlin runtime.

Runtime compatibility
SHA-256 checksums are provided in SHA256SUMS.

CompixelUI 0.1.11

Choose a tag to compare

@github-actions github-actions released this 16 Oct 15:26
  • Fixed: CompixelUI screens open on macOS. Skiko refuses OpenGL on macOS unless it is enabled, so the first screen used to crash the game.
  • Added: CtrlOrCmd, with isCtrlOrCmdPressed for key and pointer events, tells whether the key in Ctrl's role is held: Command on macOS, Ctrl elsewhere, the same key Compose's text fields use. Check Ctrl-style shortcuts with it. See Menus.
  • Changed: Ore number fields take their large step with Command on macOS. See Buttons and inputs.
  • Changed: mouse and wheel events report Ctrl and Command as key events do, with Command as meta. On 1.20.1 and 1.21.1, Command used to arrive as Ctrl on macOS; check such shortcuts with isCtrlOrCmdPressed instead.

Choose the file matching your Minecraft version and loader. Install one variant only:

  • Standard: requires a compatible external Kotlin provider.
  • with-kotlin: includes Kotlin; do not combine it with KFF or another Kotlin runtime.

Runtime compatibility
SHA-256 checksums are provided in SHA256SUMS.

CompixelUI 0.1.10

Choose a tag to compare

@github-actions github-actions released this 14 Oct 14:41

This release combines the changes developed in 0.1.10-alpha.1 through 0.1.10-alpha.17. Those development versions were not released separately.

0.1.10 changes

  • Changed: screens and HUD layers own the game state their content shows through immutable snapshots. Screen actions sent during mouse and keyboard input run before the event returns, so the next frame shows the result. Breaking: screens and HUD layers are now abstract; replace the old content lambda with a subclass that implements snapshot, Content and, for screens with actions, handle. See Show game data.
  • Added: ScreenTransition animates screens in and out, and dialogs fade with their screen through LocalOverlayVisibility. Closing returns control to the player while the exit plays above the game. Container screens covered by recipe viewers retain their Compose state, and menuClosed() runs when their menu closes. Every Minecraft adapter uses the shared UiLayer for its screens and HUD layers. See Screen transitions.
  • Added: mod-owned color schemes and an in-game color editor with live previews, saved player choices and resource-pack export. CompixelUI's Config button in the mod list opens the editor for its own Ore schemes. Breaking: ColorSchema and schemes replace the old theme API and file format. Mods can supply their own UiDesign, colors and preview. See Color schemes.
  • Changed: Ore uses the bundled Compixel font, preserving Monocraft's glyphs and adding Unifont pixel glyphs for Chinese, Japanese, Korean and other supported Minecraft languages. Emoji, unsupported scripts and rare characters continue to use system fonts. Stray control characters no longer draw boxes. See Colors and text.
  • Changed: menu synchronization uses one shared implementation across Minecraft versions. Large values and states arrive in batches and apply atomically; state starts immediately after the menu opens, and transfers advance as received bytes are acknowledged. Breaking: synchronization settings, size limits, rate budgets and timeouts are removed; bind with MenuSync.bind(menu, schema). Actions still declare their maximum size, and the server accepts at most 16 new actions per tick. The wire protocol is version 6, so both sides need this version of CompixelUI. See Menu synchronization.
  • Added: custom slot content and overlays that retain native container gestures and tooltips. Ore slot amounts use white digits with a pixel shadow, with editable colors and the shared OreSlotAmount control. A slot has one hover state, and its tooltip stays visible while a mouse button is held. Breaking: MenuSlotState.highlighted and ComposeMenuSlots.interacting are removed. See Container screens.
  • Changed: NativeItemOptions.preparationsPerFrame accepts up to 1024 preparations, allowing several atlas pages to be drawn in one frame when many icons become visible. See Item icons.
  • Fixed: the color editor fits short screens and keeps its preview scrollable. The color picker retains its chosen hue, saturation and brightness, avoiding pointer jitter and keyboard drift even when changes return from the host a few frames later. Ore's pencil glyph is easier to recognize at small sizes.
  • Removed: the built-in configuration editor and its ComposeConfigScreen and ConfigEditor APIs. Consumers use their loader's configuration screen or a configuration library. Unused session and design APIs, including UiSession.setActive, SessionState.SUSPENDED, UiSession.diagnosticThread() and UiDesign.None, are also removed.

Unreleased development history

These entries describe each development version as it existed at the time. The temporary theme API introduced in alpha.4 was replaced by color schemes in alpha.10, and alpha.8's background warm-up was reverted.

0.1.10-alpha.17

  • Fixed: a container slot's tooltip stays visible while a mouse button is held, as in a vanilla container. It hid on every press, so it flickered while shift-clicking stacks out of a storage.
  • Breaking: ComposeMenuSlots.interacting is removed. It only told whether a button was held over the slots.

0.1.10-alpha.16

  • Breaking: menu sync has no settings anymore. MenuSyncOptions, SyncLimits, ActionLimits and TransferBudget are gone, and MenuSync.bind(menu, schema) is the only way to bind a menu. SyncCodecs.string(maxBytes) is now SyncCodecs.STRING, and MinecraftSyncCodecs.registry (buffer on Forge 1.20.1) no longer takes a size. An action still declares its largest value with MenuAction.of(id, codec, maxBytes, handler). See Menu synchronization.
  • Changed: values of any size synchronize. A state or a single value larger than any Minecraft packet arrives in batches and takes effect all at once, and nothing in menu sync times out.
  • Changed: menu sync paces a menu's state by what the client has received: at most 512 KiB that the client has not acknowledged is on its way, with no rate budget. Large states reach fast connections much sooner, and on slow connections other game traffic keeps moving. An action sent in parts waits in the same way for the server to confirm what arrived.
  • Changed: a menu's state follows its opening at once instead of after a reply from the client, so the menu has its data one round trip sooner.
  • Removed: the ActionFailure values QUEUE_BYTES, PENDING_ACTIONS, QUEUE_TIMEOUT, SEND_TIMEOUT, REPLY_TIMEOUT and ASSEMBLY_TIMEOUT, and ActionStatus.EXPIRED.
  • Changed: the menu sync protocol version is now 6, so the client and the server need this version of CompixelUI.

0.1.10-alpha.15

  • Fixed: dragging through the dark part of OreColorPicker's plane no longer shakes the pointer sideways, and arrow-key steps no longer drift. The picker keeps the hue, saturation and brightness it chose instead of reading them back from the 8-bit color, including while a host returns the value a few frames later; a color it did not choose, such as a typed hex value or a restored default, still moves the pointer to that color.

0.1.10-alpha.14

  • Changed: OreGlyph.Pencil is drawn as a pencil, with an eraser, a body and a sharpened point parted by gaps, so it reads as one at small sizes instead of a slanted bar.

0.1.10-alpha.13

  • Changed: slot amounts in Ore's look are white digits over a one-pixel shadow, like vanilla item counts, about two thirds of vanilla's size. They stay legible over light and dark items in every scheme, and the decimal point takes vanilla's narrow width, so amounts such as 1.2K fit the slot.
  • Added: the Ore colors slotAmount and slotAmountShadow set the digits and their shadow, and can be changed in the color editor. See Ore color names.
  • Added: OreSlotAmount draws an amount the same way in slots you draw yourself. See Draw slots yourself.

0.1.10-alpha.12

  • Fixed: the color editor fits short screens, such as 1080p at Minecraft's automatic GUI scale. A design's preview keeps its size and scrolls instead of being squeezed, and the picker gets shorter so the color list keeps its rows. See Color schemes for mod developers.
  • Changed: the color editor has no bottom bar. Export sits next to the scheme list, Restore all next to Restore, and the export dialog shows the result.
  • Added: OreColorPicker(planeHeight = …) sets the height of the saturation and brightness plane.

0.1.10-alpha.11

  • Added: CompixelUI's Config button in the mod list opens the color editor for CompixelUI's own color schemes, which screens in plain Ore style use. Players can switch them and change any color without a mod offering its own entry. See Change colors in game.

0.1.10-alpha.10

  • Added: a color editor. Players switch color schemes and change any color, including its opacity, while a preview of the mod's screens shows the result, and every screen of that mod follows at once. Their choices are saved in config/compixel-colors.json. Screens offer it through LocalColorEditor, which mods call from a control of their own; other code opens ColorEditorScreen. See Change colors in game.
  • Added: the editor exports the player's colors as a resource pack that replaces a scheme or adds a new one, and can make it the default, ready to share or to include in a modpack. See Export for a resource pack or modpack.
  • Changed: themes are replaced by color schemes, which belong to each mod. A scheme file at assets/<namespace>/compixel/schemes/<name>.json sets colors and may extends another scheme of the mod, and assets/<namespace>/compixel/schemes.json chooses the default scheme and the editor's order. Theme files under compixel/themes/ are no longer read. See [Write a scheme file](https://github.com/Frostbite-time/CompixelUI/blob/main/docs/en/themes.md#write-a-scheme-fi...
Read more

CompixelUI 0.1.9

Choose a tag to compare

@github-actions github-actions released this 01 Oct 02:29
  • Add OreTooltipMode.Immediate for hints that open on hover and close as soon as the pointer leaves their trigger, including when moving into the hint. Immediate hints use the regular bottom frame without a lock progress line; icon button hints use this mode.
  • Keep OreTooltipMode.Delayed as the default, preserving dwell locking, the progress line and interactive nested hints. See the tooltip guide.

CompixelUI 0.1.8

  • Reduce the default menu width to 136 dp and the minimum menu row height to 22 dp while preserving text size, wrapping and keyboard navigation.
  • Show menu scrollbars only when content can scroll, and reclaim their reserved space when hidden. Context menus and select dropdowns share this behavior.

CompixelUI 0.1.7

  • Add NativeDrawing and MinecraftNativeDrawing for native Minecraft drawing in arbitrary rectangular Compose layouts. Content renders at the layout's physical resolution and participates in Compose clipping, transparency and transforms.
  • Share native image scheduling, publication and retirement between rectangular drawings and item icons; tooltips reuse the same image ownership and refresh policy while keeping native measurement and events.
  • Replace IconRefresh with NativeRefresh in dev.compixel.forge.drawing. Update imports when upgrading; no compatibility alias is retained.
  • Support the same rectangular drawing API on Minecraft 1.20.1, 1.21.1, 26.1.2, 26.2 and 26.3, including OpenGL and the supported Vulkan targets.

See the native drawing guide for usage and sizing.

Choose the file matching your Minecraft version and loader. Install one variant only:

  • Standard: requires a compatible external Kotlin provider.
  • with-kotlin: includes Kotlin; do not combine it with KFF or another Kotlin runtime.

Runtime compatibility
SHA-256 checksums are provided in SHA256SUMS.