The game tells Companion when it saved changed key bindings - #123
Merged
Merged
Conversation
When any screen closes, the game compares its key bindings with those when a screen closed before; where they differ, it queues KEY_ASSIGNMENTS, sent after the screen saved options.txt as it is removed. Companion reads options.txt again, which stays the one place it reads keys from. Protocol 42. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Pelotrio
added this pull request to stack #124
October 1, 2026 18:53
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.
Stacked on #122. Closes its known gap: a key rebound in the game while Companion is visible beside it but not focused now shows at once, not only after the user clicks into Companion.
Contract
options.txtsaves them (KeyBindingEdits.assigned()), with those when a screen closed before. Where they differ, it queuesKEY_ASSIGNMENTSwithMinecraft.tell, so it is sent after the screen savedoptions.txt.Minecraft.setScreenpostsScreenEvent.Closingbeforeold.removed(), andOptionsSubScreen.removed()is what savesoptions.txt.Minecraft.executewould run the task at once on the client thread, before the save, so the mod usestell.KeyBindingControl.saved(), which refreshes itsFileReadingofoptions.txt.options.txtstays the one place keys are read from. Merging, newest wins and closing areFileReading's contract from Files others write are read when shown and when the user comes back #122; nothing new is async here.Who reads the keys (inventory)
KeyBindingControl.assignments(), followsassignmentsChanged())KeyBindingLabels(followsassignmentsChanged())KeyBindingControl.set()KeyBindingControl.readFile(pipeline conflict check)options.txtitselfNothing is removed.
Edge cases
options.txtitself once it connects and the page or labels ask.options.txt, is not told. Companion shows what the file holds, which is what persists.Protocol
KEY_ASSIGNMENTS = 52, mod to Companion. Protocol 42; the golden hello bytes are updated.Tests
:protocol:test,:mod:testand:companion:testare green locally. New:ProjectScopeMessagesTest.theGameSavingChangedKeysHasTheKeysReadAgain, along the real route (the message reaches the project, the keys are read again, and followers are told).Not covered: the mod's screen-closing comparison has no unit test, since it needs a running Minecraft. Not checked live in the game yet.
🤖 Generated with Claude Code