Repository navigation
feat(navigator): refresh the navigator with gradients, rows and quick join - #450
Merged
Merged
Conversation
Proposes the navigator refresh: four rows with a glass frame, per-mode gradients, a player line with the known maximum, quick join on the left click for minigames, the server picker on the right click, and walking to the portal on shift-click (right click no longer walks to the portal). Claude-Session: https://claude.ai/code/session_01DWzXyozSMX1ngvbMZGLvwA
… join The navigator is now four rows with a glass frame: minigames in row two, servers in row three, spawn in the bottom middle. Each mode has its own gradient, and its lore lists a separator, the players against the known maximum, and the click lines. A left click on a minigame quick-joins its best ready service (the fullest one, then the lowest name) and opens the server list when none is ready. A right click always opens the server list. A shift click walks to the portal when one exists. This moves the portal from the right click to shift; a server connects on any unshifted click. The server list follows the same style and is translated. Titles and click lines come from the de and en bundles. Claude-Session: https://claude.ai/code/session_01DWzXyozSMX1ngvbMZGLvwA
TheMeinerLP
force-pushed
the
feat/navigator-refresh
branch
from
October 17, 2026 15:26
f9f2a8b to
de2098e
Compare
TheMeinerLP
changed the base branch from
feat/navigator-slender-permission
to
main
October 17, 2026 15:26
Contributor
Test results 936 files 936 suites 53m 13s ⏱️ Results for commit fdf606d. ♻️ This comment has been updated with latest results. |
…esh pick Written before the fix in the next commit. Observed red on assertions: - unnamed click types (HotbarSwap, DropSlot, OffhandSwap, Middle, Double) connected, joined or opened the picker on servers, minigames and picker entries - a failing or missing service read opened the picker instead of refusing - a picked server was joined from the snapshot taken when the list opened - TaskPlayers reported a failed read as an empty list Also renames the misnamed spawn wiring test (it clicks slot 31) and the shift-click ClickAction test, and pins the picker listener counts across repeated opening and module stop (green already). Claude-Session: https://claude.ai/code/session_01DWzXyozSMX1ngvbMZGLvwA
… re-read picks - Only left and right clicks, with or without shift, act. Every other click type is cancelled and does nothing, on minigames, servers and the entries of the server list. ClickAction.of returns an Optional for that. - The services are read as three cases: running (possibly none), or unreadable (no count provider, or the lookup failed). Unreadable refuses in chat with a translated reason and opens no list, so it no longer looks like nothing running. - A minigame with nothing running opens the list with a centred "No server is running right now." entry, which does nothing when clicked. - A picked server is read again on click; it is joined only if it still has announced its limit and a free slot. A server that has stopped running is refused as not ready. Claude-Session: https://claude.ai/code/session_01DWzXyozSMX1ngvbMZGLvwA
The navigator feather name uses the gradient it has in code, the build and slender slots match the four-row layout (24 and 15), and the README and the module doc say that clicks other than left and right do nothing. Claude-Session: https://claude.ai/code/session_01DWzXyozSMX1ngvbMZGLvwA
Adds scenarios for ignored click types, unreadable services, the fresh read on pick, the empty server list and the listener cleanup on stop. The change now targets main. Claude-Session: https://claude.ai/code/session_01DWzXyozSMX1ngvbMZGLvwA
This was referenced Oct 17, 2026
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.
Summary
The navigator gets a four-row layout with a glass frame, a gradient per mode, lore that shows the player count against the known maximum, a quick join for minigames, and a server list in the same style. The server list is translated (it was English-only).
Layout
F = frame pane (light blue / cyan by row plus column parity),
.= grey pane. A hidden entry leaves its slot grey.Clicks
Lore per entry: separator in the mode's gradient,
Players 13 / 40(maximum only when every service has announced its limit), blank line, then one▸ KEY ACTIONline per click. The portal line appears only when a portal exists.Quick join rule
Among the minigame's running services, take those that are ready (limit announced) and not full. Pick the one with the most players; on a tie, the lowest name. Services are read again at click time. If none qualifies, the server list opens and shows why. With nothing running, the list is empty and says "No server is running right now." If the services cannot be read (no count provider, or the lookup fails), nothing opens and the player gets a chat refusal instead.
A pick in the server list reads the services again too, so a server that filled up or stopped since the list opened is refused rather than joined.
Behaviour change
A right click on a minigame used to walk to the portal (since #414) when a portal existed. It now always opens the server list, and the portal moved to shift-click. Players who used the right click for the portal need to shift-click.
Review fixes
Menu variants
Kept the eight shared inventories (four permission combinations times two languages). The title is set per language when the module starts. Rejected two alternatives:
GlobalTranslatedInventoryBuilder: Aves does not fire its click and close listeners for translated builders, so the module would have to forward them itself, asSwitcherInventorydoes.The server list has one shared instance per minigame and language, with one builder per row count.
Other
messages_de.propertiesandmessages_en.properties; a test checks both files againstNavigatorMessages.KEYS.DestinationPlayerLoreTestandDestinationClickHintLoreTest, which pinned the old lore API;NavigatorLoreTestandNavigatorClickHintTestcover that now.NavigatorProtectionOrderingTest,SpawnReturnWiringTest,StandardLoadoutTest).Test plan
QuickJoinTest,ClickActionTest,NavigatorLayoutTest,NavigatorLoreTest,ServerPickerStyleTest,TaskCapacityTest,NavigatorMessagesTest.NavigatorRenderedLayoutTest(frame, slots, hidden entries),NavigatorClickHintTest,NavigatorServerPickerTest(quick join, server list, shift portal), and the existing permission, portal, telemetry and leak tests updated for the new slots../gradlew spotlessApplyand./gradlew buildare green locally.https://claude.ai/code/session_01DWzXyozSMX1ngvbMZGLvwA