Repository navigation
Conversation
…adowed text
Full-screen composites larger than a 256 px font atlas page are split into
glyph tiles with deterministic codepoints and concatenated as net-zero runs.
Full-screen textures move to font/fullscreen/{window,builtin}/ so they cannot
collide with window or HUD textures. Shadowed full-screen slots are a compile
error because shadows break marker detection.
oglassdev
marked this pull request as ready for review
October 15, 2026 16:50
oglassdev
added this pull request to stack #130
October 16, 2026 00:26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds full-screen windows, a third surface beside windows and HUDs. Layout targets a fixed 480x270 canvas, which a core text shader (#117) maps onto the screen from glyph runs on a client-only text display. This PR declares and compiles full-screen windows and generates the canvas contract that #117 (shaders) and #118 (Minestom session) build on. It adds no shader, session, or input behaviour.
Authoring API
<Fullscreen name="menu" mode="unlocked" backdrop="#0b0e13">…</Fullscreen>. Raw:fullscreen({ name, mode?, backdrop?, theme?, children?, debug_name? }). List them withdefineWindows({ fullscreens: [...] }).mode:"unlocked"(default) or"horse"(FullscreenMode).default_action, and hover. Inventory elements (items, collections, sections, patterns, anvil), sprite slots, and regiontooltip/item_modelare rejected.Canvas contract
Marker encoding. A marker is a 24-bit RGB value sent with text opacity 253:
0xAWINDOW_FS_COLORS(0 = white)Layers. Backdrop 0, static 1, runtime
layers[i]→i + 2(≤ 253), overlay 254, cursor 255.GLSL (
assets/minecraft/shaders/include/window_fullscreen.glsl,Part::Fullscreen):WINDOW_FS_CANVAS,WINDOW_FS_DEGREES_PER_PIXEL,WINDOW_FS_EDGE_ANGLES,WINDOW_FS_SNAP_EPSILON,WINDOW_FS_BLOCKS_PER_PIXELWINDOW_FS_MARKER_ALPHA,WINDOW_FS_MARKER_SIGNATURE,WINDOW_FS_KIND_{CONTENT,CURSOR,BACKDROP},WINDOW_FS_{BACKDROP,OVERLAY,CURSOR}_LAYERWINDOW_FS_CURSOR_SIZE,WINDOW_FS_HUD_STRIP(96 half-width, 56 tall, GUI px)WINDOW_FS_COLOR_COUNT,WINDOW_FS_COLORS[],WINDOW_FS_CONTROL_COUNT,WINDOW_FS_CONTROLS[](by control index)window_fs_payload,window_fs_is_marker,window_fs_kind,window_fs_layer,window_fs_color,window_fs_cursor_atKotlin / manifest. The manifest gains
fullscreensandfullscreen_canvas. Generated code:WindowFullscreenEntries.all/.canvas,WindowFullscreenDefinitions, andWindowPackData.fullscreens/fullscreenCanvas.FullscreenCanvasEntry:width,height,degreesPerPixel,edgeYaw,edgePitch,snapEpsilon,hitMargin,displayScale,markerAlpha,cursor(text,marker,width,height),backdrop,overlayMarker,hudHiddenWorldAge(-1_000_000_001),hudStripHeight,hudStripHalfWidth,hudMaxHealthFullscreenEntry:surface(kind, mode, size),static,staticMarker,slots,controls(index,x,y,width,height,action,defaultAction,hover,source),switches,art,tints,layers,markers,backdropMarker,handlesFullscreenDefinition(manifest, name)exposescanvasandsurface. The typed view is left to feat(runtime): add the full-screen session with fake-survival input and a hidden HUD #118.Every run is net-zero from the canvas origin, so a glyph's canvas position is its position in the line. Packs without full-screen windows emit nothing new, and every existing golden hash is unchanged.
Known limits
Checks
just test-rust -p window-core: pass (238 lib tests, including 4 new pipeline tests and 2 contract tests)just lint: passjust check-ts,just test-ts: passjust golden: all 14 cases ok (newfullscreencase)just gradle :runtime:compileKotlin: pass. The generatedfullscreengolden Kotlin also compiles against:runtime, checked with a temporary copy that was then removed.Closes #116
Part of #115