Skip to content

chore: continue StackAnvil maintenance - #23

Merged
AlexProgrammerDE merged 33 commits into
mainfrom
t3/maintenance-next
Nov 1, 2026
Merged

AlexProgrammerDE merged 33 commits into
mainfrom
t3/maintenance-next

Conversation

@AlexProgrammerDE

@AlexProgrammerDE AlexProgrammerDE commented Oct 31, 2026 •

Copy link
Copy Markdown
Member

Continue compatibility work after the 0.4.2 release.

  • Fix Lifeboat spawn by registering data-driven vanilla block types only when StartGame advertises them. Version-matched native registries and packet captures establish the palette difference. Both installed Java routes spawn and walk normally.
  • Preserve Lifeboat's authored caption predicates and grid factories. The rebuilt Navigator shows eight main controls in two columns. World Games, Mini Games, SkyWars, and Solo selection retain the original response indices and reach the waiting lobby.
  • Restore Enchanted's authored hub menu. Accept bounded printable resource names, retain tall image atlases within the existing pixel budget, honor omitted optional decorations, preserve sibling dimensions during stack fill, and retain exact fractional grid capacity. Live checks show the five trending cards and three lower cards. OP SMP sends the native response index 2 and receives Transfer; the destination connection times out.
  • Restore the Survival inventory backdrop opacity and reuse scene geometry during rendering and input. Animation updates index controls with authored tracks instead of walking static children every frame. Stable container frames reuse painter traversal and input frames; pointer, layout, component state and opacity changes refresh the draw list. Fades, alpha resets and same-pointer toggle changes retain targeted regression coverage. Matched installed scene profiles remove the sampled repeated traversal while retaining identical static recipe, slot-grid and crafting-background regions. These observations do not establish stable FPS or full modpack timing. A live BDS drag control preserves all 64 logs. Installed inventory profiles retain slots, cursor state and authored rendering. Full modpack lag reproduction, duplicate-menu rendering and the reported extreme shield pose remain open.
  • Add the Bedrock inventory screens setting, enabled by default. Turning it off keeps Java inventory, crafting, cooking, and storage screens on both routes. Admission and delayed presentation checks stop authored scene construction while core retains inventory request authority. A live installed BDS control verifies ordinary screens for all four families, pickup, return, and reopening without changing the item total. Server forms remain independent. Custom pack layouts require the Bedrock setting.
  • Hide the gameplay HUD while an authored native container is open, then show it behind an authored pop exit. Retain input retirement and screen/menu ownership until all participating completion tracks finish. Repeated close requests retain the clock. Native Bedrock 1.26.60.5 Escape frames provide the slide and fade reference. Installed player-inventory controls retain every slot after reopening. Storage retains the complete host graph, backdrop, close control, and default exit tracks. Select the localized large-chest caption after determining its 54-slot size while preserving custom names. Native Bedrock 1.26.60.5 runtime controls establish the cause filter, pending-event consumption, and shared 100-update hurt gate, including a false screen policy. Installed direct and ViaProxy controls cover chest, hopper, brewing, and large-chest hosts, excluded fire damage, accepted magic damage, gated events, and remote actors. Both routes retain 64 logs after server-accepted pickup and return requests. Legacy cores cannot advertise the new policy contract; separate cooking binding checks remain. Client-predicted damage, the live producer for actor event 81, the historic 5.6-millisecond hurt/heal nonclosure, and exact native frame timing remain unresolved. Use native byte truncation and clamping for text channels, including opacity. Ghidra, 140 original-instruction controls, and fresh native glyph writes establish the conversion. The regression fails with the previous rounding; image tint keeps its independent path. Both rebuilt Java routes match all 672 native glyph pixels and the complete title and inventory-label rectangles at 1280 × 720, native UI scale 2. Other controls and frame timing remain outside that pixel comparison.
  • Retain validated native JPEG encoding in converted UI packs and load it through bounded reloadable client textures. MegaSMP now loads its pack under Java's existing cap. CPU image controls and an installed GPU banner control retain previous decoded pixels, including after resource reload.
  • Keep actor animations and later timeline entries when an individual Molang string has a syntax error. A version-matched native local control retains the captured invalid MegaSMP string and subsequent pose updates. The rebuilt installed replay now loads graphs and produces poses for holy knight and mecha oondasta. Structural and resource limits remain enforced.
  • Ignore removals for absent unmapped effects after consuming the complete payload. Unsupported additions and updates still fail. Native Bedrock 1.26.60.5 keeps Speed after removing absent experimental effect 38. A fresh MegaSMP join consumes all 39 removals and reaches a visible lobby with grounded walking.
  • Retain complete inventory collections while expanding fixed grids around the viewport and keyboard selection. Supply the tab and layout indices referenced by the native inventory graph. Missing indices previously made physical selection send zero. Mouse-input regressions cover category and layout changes through exported programs in both layouts. Installed direct and ViaProxy controls retain the complete 1,980-item catalog, search for rails, and place server-accepted stacks of 64 in the hotbar. ViaProxy retains both stacks after reopening. Keep authored control indices separate from the selected profile values.
  • Initialize the player inventory profile from the original 1.26.60.5 constructor: Search, Crafting, filtering off, and automatic layouts. Ghidra ties these fields to named NBT keys, controller reads, and the inventory-options packet producer. Four original-instruction controls reproduce the writes. Fresh-world direct and ViaProxy recordings retain all 1,980 items across two openings without any inventory-options packet. Both installed add-on hashes match the current build. Later packets retain their explicit raw values, including zero tabs. Java filter edits preserve automatic layouts. The regression fails before the correction and passes afterward. Constructor scheduling and complete native frame timing remain outside these controls.
  • Match Creative catalog clicks to official Bedrock 1.26.60.5 controls. Primary click takes or discards a stack, and secondary click takes or discards one item. Shift-left and Shift-right clicks preserve the cursor, merge existing stacks, fill empty hotbar then main-inventory slots, and stop at available capacity. Keep the pressed source through modifier release and suppress unchanged Java Creative slot echoes during reopening. Both installed routes complete 14 server-accepted requests covering cursor quantities, split placement, partial capacity, full-inventory no-op, and reopening without replacement. Bulk Survival recipe actions and full native screen parity remain open.
  • Match Creative hotbar Shift-left and Shift-right destruction to official Bedrock 1.26.60.5. Discard the full selected stack, preserve the held cursor, and leave empty slots unchanged. Require a separately advertised backend capability and the current opening, generation, revision, Creative toolbar layout, confirmed network ID, and discard permission. Inventory-only and recipe-book layouts dispatch authored quick-move commands so an occupied cursor does not turn the input into a Java stack swap. Both rebuilt routes complete seven server-accepted requests covering destruction, empty-slot no-ops, occupied-cursor transfer, and reopening without replacement. Native controls establish visible behavior; original-client request-byte equality remains unverified.
  • Resolve current catalog destinations through Gatherings. Keep HTTP NetherNet signaling addresses separate from Xbox JSON-RPC network IDs. Mineville's advertised RakNet endpoint times out, while its service-selected HTTP route reaches a visible lobby.
  • Decode the optional StartGame presence configuration as one richPresenceId string. This prevents the telemetry overread observed in current Dimension Clash and Treasure Hunt captures.
  • Convert actor model/texture pairs reachable through render controllers. Matching stable queries over equal-sized arrays retain paired entries. Independent and random expressions remain independent, with conservative fallback for unsupported selectors. Four OneBlockOnline preview actors each retain 720 reachable pairs instead of 518,400 combinations.

Plain offhand shield controls cover native crouching and installed crouch/Use start and release through local NetherNet HTTP. Controller snapshots retain the resting transform across inventory changes and restore it after blocking. The extreme reported pose, movement and hit reactions, patterned shields, and third-party mod combinations remain unverified.

Preserve native throwable prediction across hotbar changes. Official Bedrock 1.26.60.5 protocol 2225 captures declare one-item Survival debits for pearls and wind charges, without wire stack network IDs. The previous unpredicted use lets a delayed BDS selecting-hotbar command restore the pearl slot after the player selects wind. The updated installed client retains wind selection and receives both projectiles in rapid, landed and floor controls. Commit the predicted quantity after sending its transaction so silent server acceptance cannot leave repeated throws with stale counts. Repeated wind throws reach BDS with successive debits and the console confirms the remaining quantity. Creative checks retain quantities without a declared debit. Regression tests cover final-stack removal, local network identity and send-before-commit ordering. The reported repeated movement rollback remains unreproduced; these controls do not establish native physics parity. Private movement audits include wall-clock time, held item identity and selected slot.

Preserve the configuration keepalive fix and versioned inventory publication checks from the earlier maintenance work.

Validation: all four project builds pass (3,240 tests passed, 325 skipped, no failures). Offline tooling and patch-metadata checks pass. Plain-apply replay matches the complete 106-patch core tree and 39-patch add-on tree. Installed baseline and optimized inventory scene replays pass transport and rendering checks. A private conversion fixture processes all 867 captured OneBlockOnline actors within a 2 GiB heap and emits 4,068 model selections. Each preview emits 719 models and reports one unresolved source pair in the captured packs.

A final installed Enchanted capture retains the authored hub menu for a complete 120-second scene. The native and final add-on exports have identical names and contents for all 58 pack files.

The current server survey reaches visible Lifeboat, CubeCraft, Galaxite, Mineville, and MegaSMP lobbies. Hosted NetherNet transport losses still prevent complete live validation of the protocol and conversion fixes. Enchanted gameplay after transfer remains unverified. MegaSMP still reports seven missing custom block mappings, and the attempted hotbar menu input opens no screen. Rob a Mob and Mob Maze join resolution times out. Hive's translated-client guard remains in place. These checks do not establish complete gameplay or native visual parity.

Raw traffic, server packs, account data, screenshots, and Ghidra artifacts remain private.

Retain complete inventory collections while expanding fixed-grid cells near the viewport and keyboard selection. Preserve source indices, scroll extent, action targets, and focus across layout updates so large Creative catalogs fit the existing scene budget.

Keep unsupported hotbar destruction on the ordinary screen before item changes, and construct Creative item previews through the connection-owned native item factory so metadata-only items do not acquire a false block identity. Installed Creative search and full native parity still require validation.
@coderabbitai

coderabbitai Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Caution

Review failed

The pull request is closed.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Suppress synthetic keepalives while a modern Java client is between configuration and play protocols. Recheck the current states on the connection event loop so a queued task cannot send through a transition that began after scheduling. Preserve configuration keepalives for older Java clients.

A focused regression covers acknowledgment, queued state changes, and legacy clients. The complete build passes, and the core and add-on stacks replay without cached ancestors. Lifeboat spawn mapping and authored-form fallback remain separate investigations.
Parse raw value tokens and redundant trailing closing groups without discarding the entire authored scene. Lifeboat uses both in its caption bindings, which previously forced the 23-button Navigator into Java dialog fallback. Preserve expression depth, output bounds, and original response identities.

The complete build passes with 3152 tests and the installed add-on displays the authored Navigator. Extend private scene observations with the player block states and loaded palette identity to trace the separate spawn collision bug.
Use the current effective Creative mode for published cell permission
while retaining recipe availability and captured search policies. Native
1.26.60.5 controls bypass recipe-disabled colors in Creative mode, and
the snapshot regression restores recipe restrictions after returning to
Survival.

The full build and fresh core stack replay pass. Live icon backgrounds
are corrected; successful catalog request dispatch remains under
investigation.
Exclude data-driven vanilla block types that StartGame does not advertise.
Keeping their states unconditionally shifts Lifeboat runtime IDs and turns
empty spawn cells into solid mushroom stems.

Fold the fix into the owning block patch with versioned registry metadata
and targeted regression coverage. Native captures and live registries
match all 22,543 shared state IDs after filtering 1,417 unadvertised states.
Installed add-on and ViaProxy checks render the lobby, walk through spawn,
and open the authored Navigator. The full build passes with 3,156 passing
tests and 325 skipped tests. A fresh replay applies all 105 core patches.
Let explicit factories own their grid cells, resolve relative templates in the declaring namespace, and retain bound population limits. This removes the duplicated empty cells that clipped the Lifeboat Navigator into one column.

The full stack build and fresh patch replays pass. Live Lifeboat checks show eight main controls in two columns and preserve World Games, Mini Games, SkyWars, and Solo selection responses.
Validate the requested cursor stack after applying its transfer count while keeping the unit craft result unchanged. The prior quantity check rejected a full stack against the one-item creative sample.

Targeted regressions cover requests for one and 64 items. The installed add-on sends a 64-rail pick and hotbar placement that the Bedrock server accepts.
Read the opaque NetherNet network ID from Gatherings join responses instead of requiring an IP address and port. Keep socket destinations separate and pass JSON-RPC targets through the private recorder without an appended Java port.

A current captured response passes the parser and a fresh SoulSteel browser join reaches pack negotiation. Transport loss before StartGame remains unresolved. Target validation also recognizes the current Hive domain so translated recordings retain their existing guard.
Resolve current catalog destinations through Gatherings and distinguish HTTP NetherNet signaling from hosted Xbox network IDs. Decode the single presence override string so current hosted StartGame packets preserve their telemetry fields.

Fold reachable actor model and texture selection into the appearance owner. This removes the Cartesian furniture-preview expansion that exhausted a 4 GiB heap on OneBlockOnline while retaining independent selectors and conservative fallbacks.

Full builds, standalone protocol checks and fresh patch replays pass. Mineville reaches its lobby over HTTP NetherNet. A private conversion fixture processes all 867 captured actors in 2 GiB; intermittent hosted transport losses still prevent a complete live parity claim.
Preserve printable resource names, optional image policy, and native frame strips within bounded image decoding. These resource failures replaced Enchanted menus with ordinary controls.

Retain sibling extents during stack fill and exact fractional grid capacity so authored cards keep their geometry and response identities. Fold the fixes and native comparison evidence into the owning UI patches.
Honor the native entrance animation's initial-alpha scale so opening the
Survival inventory keeps the authored translucent world backdrop.
Version-matched native factory and updater code establish the scale, and
a fade regression fails before the correction.

Retain stable hit regions, input ancestor geometry and collection windows.
Invalidate them when layout, focus or control visibility changes. Reuse
the shared painter order and separate authored layers into Java GUI strata
to bound repeated overlap searches during rendering.

Validate the full dependency and add-on build, clean patch replay, installed
backdrop rendering, and server-authoritative pickup and drag distribution.
Broader modpack timing, menu overlap and shield parity remain open.
MegaSMP can clear effect IDs through experimental Freezing even though
that effect has no translated Java mapping. Cancel absent-state removals
after consuming the payload while preserving unsupported-addition errors
and known-effect packet projection.

A pinned native control preserves Speed across removal of absent ID 38,
then removes Speed normally. Registered-handler tests reproduce the old
failure, and the original captured clear sequence replays without it.

Record the packet fixture's shared test-infrastructure prerequisites and
keep this upstream-sized change before deferred patches. Full builds and
fresh replay of the complete stack pass. The live server's converted pack
still exceeds Java's download cap, so rendering and movement parity remain
separate work.
Keep validated JPEG bytes in converted UI packs and transport the selected format through program export. Decode them with a bounded reloadable client texture so resource replacement and GPU ownership follow the normal texture lifecycle.

This prevents MegaSMP image expansion from exceeding Java’s download cap. Full builds, clean patch replay, decoded-pixel controls and an installed resource-reload check pass. A fresh join consumes all effect removals and walks grounded; custom block mappings and the attempted menu input remain unresolved.
Keep a zero-valued timeline entry for an individual Molang parser syntax error so it cannot discard the entire actor graph. Structural validation and expression limits still reject malformed or oversized declarations.

A version-matched native control preserves the captured MegaSMP script and subsequent pose updates. The regression fails before the correction and passes afterward. Full builds, clean patch replay and offline checks pass. The installed complete MegaSMP replay retains both affected graphs and poses; unresolved mappings still fail the broader rendering gate.
Index controls with authored animation tracks for each resolved subtree.
Rebuild the index after root changes or binding reconciliation, while
preserving hidden tracks, event handling and independent control clocks.

The installed Survival inventory repeatedly walks static control children
in its render-thread profile. The new traversal preserves its slot and
cursor state, backdrop and scene replay checks. Targeted animation tests
and a fresh full-stack apply cover clock scope and patch export.
Official Bedrock 1.26.60.5 keeps held items visible behind the Survival
inventory while hiding the gameplay HUD. Skip HUD extraction while the
current screen is an authored native container to match that behavior.

Keep local HUD settings and server visibility restrictions unchanged so
closing the inventory immediately restores normal rendering. First-person
item rendering and the separate shield-pose report remain independent.
Record native and installed local-server checks for resting, blocking, release and inventory transitions. Keep the reported extreme pose and broader shield rendering limits open because these controls do not reproduce them.
Position and item quantity alone cannot distinguish a missing movement impulse from a server hotbar selection change. Record the held item, selected slot and wall-clock timestamp at the existing observation boundary so captured movement can be correlated with input markers and packet ordering.
Match the native Survival air-use envelope for pearls and wind charges.
Without its declared debit, a delayed BDS hotbar selection can restore the
pearl slot after the player selects a wind charge. Advance predicted core
quantities after sending the request so silent acceptance cannot leave the
next throw using a stale count. Preserve local stack network identities.

Fold the shared behavior into the existing deferred air-use patch. Native
1.26.60.5 protocol 2225 captures establish the request fields and equipment
ordering. Focused regressions cover slot switching, repeated debits, the
final item and send-before-commit ordering. This does not close the separate
reported repeated movement rollback.
Reuse painter traversal and input frames while the container layout,
pointer, component state and opacity stay unchanged. Installed inventory
profiles show repeated property-map lookups during otherwise stable
frames. Items, portraits and image animations still render every frame.

Expose alpha changes through the shared animation runtime and include
toggle changes in input visual revisions. Regressions retain fades,
reset events and same-pointer checked-state changes. Fold both changes
into their owning patches and preserve their existing dependency order.
Add a persistent presentation setting for clients affected by native menu
rendering or mod compatibility problems. Keep Bedrock layouts enabled by
default because server packs can depend on their controls.

Gate storage, cooking and player admission before scene construction and
recheck delayed presentation. Preserve core inventory authority, server
forms and the existing ordinary input path. Document the setting and its
custom-layout limitation.

Validate the full add-on stack and dependencies, the disabled production
presentation boundary, and a live BDS session covering all four screen
families, pickup, return and reopen with accepted inventory requests.
Run authored pop exits before removing an inventory screen. Retain every
participating completion track through binding refresh so a short size
animation cannot truncate the longer fade. Show the gameplay HUD during
the exit and consume input until the still-owned screen closes.

Bedrock 1.26.60.5 Escape frames provide the slide and fade reference.
Regression tests cover different durations, repeated close requests,
refresh, successor chains, input retirement and replacement ownership.
The full dependency/add-on build and installed inventory reopen checks
pass without changing the item total.

Generic storage still resolves content without its full host shell, and
native closing-on-hurt policy remains unfinished. Keep the cooking guard
and document those limits instead of claiming complete screen parity.
Resolve storage programs from their complete authored screen so backdrops,
close controls and exit tracks remain part of the scene. Forward the
original local damage cause with its actor lifetime, then consume the
player-owned pending check and counter across screen changes. Require a
versioned core contract before admitting screens that depend on that
policy, while retaining separate guards for unfinished cooking bindings.

Determine paired-chest size before selecting its default caption and keep
custom names intact. Fold these changes into their owning patches and
update packet, lifecycle and transport fixtures for complete screen graphs.

Native 1.26.60.5 runtime controls establish the server-event policy order.
Full builds, fresh patch replays and installed direct/proxy controls cover
storage families, accepted item requests and the shared hurt gate. Exact
frame timing, client-predicted damage and the original modpack reports
remain open.
Convert text channels with single-precision multiplication, truncation and
byte clamping, including opacity. Rounding changes authored 0.3 to byte 77
instead of the native 76 and shifts settled container captions.

Fold the correction into the shared renderer patch and keep image tint
independent. Native 1.26.60.5 instructions, fractional-byte controls and
live glyph writes establish the conversion. Both installed Java routes
match the native title and inventory-label rectangles. Complete screen
pixels and animation timing remain separate requirements.
Supply the controller indices referenced by the Bedrock 1.26.60 inventory
graph. Missing indices resolved to null and made physical category and
layout selections send index zero.

Keep the correction in the Creative catalog owner and exercise physical
selection through exported programs in both layouts. Direct and ViaProxy
controls retain the complete 1,980-item source, and BDS accepts 64-rail
pickup and placement. Native profile initialization and the reported
modpack lag remain open.
An absent inventory-options packet leaves the native Player profile at
its constructor defaults. The previous implementation treated the profile
as absent too, retaining the controller's transient filter flag and
publishing an unselected, empty first inventory.

Use version-matched native defaults while preserving later packet values,
including explicit zero tabs. Keep filter-only Java edits from replacing
the automatic layouts. Fold the correction into the owning options and
retained-model patches, with behavioral model and packet regressions.

Ghidra, original-instruction controls, complete fresh-world direct/proxy
journals, and first/reopen screen observations validate the correction.
Native frame timing and the original modpack regressions remain open.
Record server-accepted insertion, extraction, and reinsertion on direct and ViaProxy routes, including contents retained after reopening. Keep official Bedrock first-request behavior and the reported modpack rendering problems explicitly unresolved.
Record the installed movement and genuine skeleton-block checks without claiming a fix for the reported extreme shield pose or native hit-timing parity.
Use the unmodified public data-driven block snapshot as the source of
truth instead of maintaining a derived JSON list. All 98 registrations
match the captured BDS and native reference, while palette ordering and
current StartGame admission stay unchanged.

Record the pinned source, checksum, update procedure, and bundled license.
The full build, palette regressions, artifact checks, and fresh patch
replay pass.
Match official Bedrock 1.26.60.5 primary catalog clicks: discard the held
stack first, then pick the selected item on the following click. Fold the
action into the Creative catalog patch with confirmed cursor identity,
discard admission, and a pre-request snapshot for rejection rollback.

Validate same-item and different-item clears in the native client and
both installed Java routes. Each route completes four server-accepted
requests with cursor counts 64, zero, 64, zero. Full builds and fresh core
patch replay pass; secondary and bulk actions remain open.
Match official Bedrock 1.26.60.5 secondary take/discard and Shift-click
placement, including cursor preservation, merge priority, partial capacity,
and a full-inventory no-op. Retain the pressed input through modifier
release and snapshot all affected slots for rejection rollback.

Suppress unchanged Java Creative slot echoes during reopening so existing
stacks retain their network identity. Real count and native metadata
changes still replace items. Fold the changes into their owning core and
add-on patches; later inventory patches only refresh context offsets.

Full builds, targeted regressions, plain patch replay, offline validation,
and installed direct and ViaProxy request controls pass. Bulk Survival
recipes and complete native screen parity remain open.
Bind the catalog-only toolbar's full-stack destruction to a separately
advertised backend capability. Validate the opening, generation, layout
and confirmed discard permission before predicting changes, preserving the
cursor and rollback snapshot.

Dispatch authored quick-move commands directly for player slots. Java's
pointer gesture swaps stacks when the cursor is occupied, while the target
Bedrock client preserves the cursor and moves the selected stack.

Fold both changes into their owning patches and retain version-matched
native evidence and boundary regressions.
@AlexProgrammerDE
AlexProgrammerDE marked this pull request as ready for review November 1, 2026 11:30
@AlexProgrammerDE
AlexProgrammerDE merged commit ca44140 into main Nov 1, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant