Conversation
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d5e7629fe9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (this.saved != null || this.server != null) this.datapacks.setPacks(this.datapackList, this.catalog.index().orElse(null)); | ||
| }) | ||
| // The tab names the world the owner read, also while the page is hidden. | ||
| .retitles(world.changed(), this::refreshTitle).retitles(edits.location().playingChanged(), this::refreshTitle); |
There was a problem hiding this comment.
Retitle the World tab when the connection ends
When a multiplayer connection drops without first receiving a Menu payload, GameLocation.disconnected() clears playing() but fires only connectionChanged(). This loader listens for title changes only on playingChanged() and world.changed(), and the latter need not fire when the previously published local world remains unchanged, so a hidden World tab can retain the disconnected server's address indefinitely. Retitle on connectionChanged() as well.
AGENTS.md reference: AGENTS.md:L19-L19
Useful? React with 👍 / 👎.
| if (index >= 0) { | ||
| this.fileList.setSelectedIndex(index); | ||
| return; |
There was a problem hiding this comment.
Clear the older pending log selection
When a request for an unlisted crash report has set this.wanted and started a listing, a newer request for a file already present in this.files takes this branch but leaves the older wanted value intact. When the in-flight listing completes, showFiles() consumes that stale value and selects the older file again, so rapid navigation can make an older request override the newer one. Clear or replace the pending request before returning from this branch.
Useful? React with 👍 / 👎.
295b846 to
c827f12
Compare
PageLoader keeps page, follows, hold and readsWhenShown, and gains updates, redraws and retitles for work from memory; whenShown, waitsWhileHidden, follow(Function) and ShownUpdates go, and reads run on the file workers. No page reads in its constructor or because a navigation showed it. The World tab names the world from its owner, also while its page is hidden, and the owner tells of another world once it was read. An external edit's take gives way to a later write. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
c827f12 to
d4e9891
Compare
Seventh PR of
docs/SYSTEMS.md, stacked on #117: every page reads through the onePageLoaderway,pageandfollows, and the older modes andShownUpdatesgo.Finish line
PageReadsTest.theWorldTabNamesTheWorldTheGamePlaysWhileItsPageIsHiddenWorldReadingTest.whenTheGamePlaysAnotherWorldItsFollowersFindItsNamePublished(fails without the change)PageLoaderTest.anUpdateFromMemoryWaitsWhileThePageIsHiddenAndRunsOnceWhenShownPageLoaderTest.aTitleIsRedrawnWhileThePageIsHiddenPageLoaderTest.aPageReadWheneverShownWaitsWhileHidden,aPartOfThePageReadsWhenItIsChosenAndChangesFollowWhileThePageIsShownChangesPanelTest,ConfigPanelTest,PackConfigurationPanelTest(their pages are shown now)SystemsRulesTest;PageLoaderruns its reads on the file workers, so its exception is goneWhat changes
PageLoaderkeeps one way:page,follows,hold/release, andreadsWhenShownfor the pages whose files others write and only they read.whenShown,waitsWhileHiddenandfollow(Function)go. It gainsupdates(signal, redraw)for redraws from memory,PageLoader.redraws(page)for a page with nothing to read, andretitles(signal, redraw)for what shows outside the page. Reads run on the file workers.ShownUpdatesgoes; its users (Logs, Content, Mod, World, definition details, subject pages) redraw through their loader.pageandfollows. None reads in its constructor, and navigation no longer refreshes the Changes and pack configuration pages. The Logs page reads again only when a navigation asks for a log it does not list yet, as a crash report written since.ChangeLabels.follows()names the signals of values that change outside the record, instead of taking a listener.resourcesRead, what Mod pages and definitions follow for the game reading its resources again, is aSignal.WorldReadingtells its followers of another world once that world was read, andFileReading.published()gives the value read last without reading.docs/SYSTEMS.mddescribes the redraws, and moves the Project tree, theCompanionUirelays,ChangeRecord.observedand the Changes page's read whenever shown to PR 8, with the current project as state and the write queue they need.Left as it is
ExternalEdits' strand busy, so its take check is covered by review, not by a test.Focused
:companion:testchecks pass locally. CI runs the full build for the updated head.🤖 Generated with Claude Code