Skip to content

Strata 0.1.3

Choose a tag to compare

@github-actions github-actions released this 02 Sep 22:17
· 520 commits to master since this release
Immutable release. Only release title and notes can be modified.
v0.1.3
86bfe6a

Strata 0.1.3

Strata 0.1.3 adds cyclic keyboard focus traversal and one shared pointer-and-keyboard activation modifier.
It also keeps resource-backed image identities stable within a Minecraft UI host while enforcing explicit retention limits.

Install

Compile application UI source against the API, then install exactly one Fabric runtime matching the active Minecraft version together with Fabric Language Kotlin:

dependencies {
    compileOnly("dev.s7a.strata:strata-api:0.1.3")
    modRuntimeOnly("dev.s7a.strata:strata-runtime-minecraft-fabric-<minecraft-version>:0.1.3")
    modRuntimeOnly("net.fabricmc:fabric-language-kotlin:<compatible-version>")
}

The consuming Mod must require Strata in fabric.mod.json:

{
  "depends": {
    "strata": ">=0.1.3"
  }
}

Keyboard focus and activation

An ignored Tab press moves focus cyclically through placed, focusable components in declared parent-before-child and sibling paint order.
Shift+Tab reverses the direction, while focused handlers retain first refusal by consuming the event.
Traversal skips targets fully outside the root viewport or an ancestor child clip, including clipped VirtualList overscan rows, and wraps at both ends.

Modifier.onActivate(action) combines a primary pointer press with focused Enter and Space presses without synthesizing pointer events.
Every delivered key press, including a repeat, invokes the action and consumes that event.
onActivate(enabled, action) returns the exact incoming modifier when disabled, retains no action, and creates no pointer, keyboard, or focus target.
Button and Tab continue to own appearance and semantics only, so callers opt into shared activation with the same enabled state or retain onPress for pointer-specific behavior.

Resource image identity retention

One Minecraft UI host now memoizes each admitted resource-backed image by structural ResourceId across immediate and deferred component evaluation.
Equivalent rebuilds therefore preserve the immutable image identity consumed by the retained sampled-image path and can reuse an existing native texture.
Direct pixel sources continue to bypass platform resource resolution.

The host admits at most 512 resource identifiers and 128 MiB of straight RGBA8 pixels without eviction.
Entries beyond either bound and failed resolutions bypass retention and remain retryable.
The cache is confined to the host's owner thread, each admitted entry remains fixed until host close, and every retained entry is cleared before terminal platform shutdown; a new host resolves against the then-active resource-pack stack.

Release and documentation consistency

The forward release controller now derives Maven coordinates, Modrinth entries, representative Minecraft checks, Java toolchains, Pages inventory, and README installation versions from canonical typed project metadata plus one current/predecessor identity pair.
The historical release workflows remain sealed, while a new release updates the same controller metadata instead of adding version-specific workflow copies, conditionals, or duplicated artifact inventories.

Compatibility with 0.1.2

The public API change is additive: the two Modifier.onActivate overloads are new, and existing component and modifier signatures remain available.
Automatic traversal is a behavioral addition only for an ignored Tab press; a focused handler that consumes Tab keeps its existing behavior.
Downstream adapters opting into the internal MinecraftUiPlatform SPI must not rely on image(ResourceId) being called for every declarative use because admitted successful resolutions may be reused for the host lifetime.
Keep all Strata artifacts aligned on 0.1.3.

Minecraft compatibility

The supported matrix remains Minecraft 1.20 through 1.20.6, Minecraft 1.21 through 1.21.11, 26.1, and 26.2.
Minecraft 1.20 through 1.20.4 use Java 17, Minecraft 1.20.5 through 1.21.11 use Java 21, and 26.1 through 26.2 use Java 25.

Distribution

  • Maven Central contains the five common artifacts and 21 exact versioned Fabric runtimes.
  • GitHub Releases contains 21 runtime JARs, 21 detached signatures, and SHA256SUMS.
  • Modrinth contains one 0.1.3 version entry for each of the 21 exact Minecraft versions after project review.