Skip to content

Systems 5: the game location, item icons and index status tell through signals - #116

Open
Pelotrio wants to merge 1 commit into
claude/systems-worldfrom
claude/systems-owners
Open

Pelotrio wants to merge 1 commit into
claude/systems-worldfrom
claude/systems-owners

Conversation

@Pelotrio

@Pelotrio Pelotrio commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Fifth PR of docs/SYSTEMS.md, stacked on #115: the owners that still told through their own listener lists tell through signals, so the pages PR can make every page follow signals only.

Finish line

Behavior Test
Followers of the game location hear its connection, process and playing once each, in the order they happen; what the game told before its connection was established is heard as told then GameStateTest.followersHearEachChangeOnce, GameStateTest.whatTheGameToldBeforeItsConnectionWasEstablishedCounts
Views are told of new item icons once, on the Swing thread, and not when the same snapshot comes again ItemIconServiceTest.viewsAreToldOnceOnTheSwingThreadOnlyWhenTheSnapshotChanged
Each index status is heard as it is published RuntimeIndexServiceTest, LocalIndexTest, RuntimeIndexRecoveryTest
A closed search popup stops following the index and ignores a status told before it closed SearchEverywherePopupTest.disposedPopupUnsubscribesAndIgnoresQueuedRuntimeStatus
No listener list is left for these three SystemsRulesTest (their exceptions are gone)

What changes

  • GameLocation has three signals, connectionChanged, processChanged and playingChanged, instead of addListener(Consumer<Change>) and the Change enum. They fire where the changes fired before, in the same order. Followers read the location for what changed: ConfigChanges, ChangePipeline, Reloads, GamePacks, WorldReading, the configuration pages and the Project tree.
  • ItemIconService has a changed signal, fired on the Swing thread after a newer snapshot was adopted, instead of its listener list. The adoption guard has its own lock object.
  • RuntimeIndexService has a statusChanged signal instead of addStatusListener and removeStatusListener. The status is set and told under the lifecycle lock, so a follower reads the status that was told. CompanionApplication and the search popup read the current status once when they start following.
  • docs/SYSTEMS.md: this PR comes before the pages, which can only follow signals; the order table is renumbered. The remaining exceptions in SystemsRulesTest name the PRs that remove them.

Left as it is

The debugger's session events, notifications, script runs, search matches and control events keep their listeners. They carry events, not state, as SystemsRulesTest lists them.

:companion:test passes (1642).

🤖 Generated with Claude Code

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-30T14:03:59.784037Z 8be04c2 New commits
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

GameLocation fires connectionChanged, processChanged and playingChanged where
its listeners heard a Change before, in the same order. ItemIconService fires
changed on the Swing thread after a newer snapshot; RuntimeIndexService fires
statusChanged under its lifecycle lock. Their listener lists go, and with them
their exceptions in SystemsRulesTest. SYSTEMS.md puts this before the pages.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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