Skip to content

Offer the Bridge plugin where an operator actually looks (#118) - #123

Merged
CaYatur merged 2 commits into
mainfrom
fix/bridge-discoverability
Jul 29, 2026
Merged

Offer the Bridge plugin where an operator actually looks (#118)#123
CaYatur merged 2 commits into
mainfrom
fix/bridge-discoverability

Conversation

@CaYatur

@CaYatur CaYatur commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Offer the Bridge plugin where an operator actually looks (#118)

On a Paper server with no bridge jar, neither the app nor the panel offered to
install one. The offer existed — in the live map's empty state, which turns out
to be the one place it cannot do its job.

That state renders only when there are no players to draw. A server with
people on it and no bridge showed an empty-looking map, no explanation and no
button, because mapDraw returns before the empty state on any frame with
markers. It also required opening the map tab at all: bridgeStatus was fetched
by mapStart() and nowhere else, so an operator who never went there was never
told that half the features were switched off for want of a 6 KB jar.

The desktop gets a BridgeNotice component, shown above the live map and in
the Plugins/Mods view — it is a plugin, and a missing plugin belongs in the list
of plugins. The panel gets the same banner outside the tab panels entirely, so
it is visible on console, stats, timeline or anywhere else, fetched once when a
server is opened rather than once per map visit.

It also says what the jar unlocks. "Install MSMS-Bridge" is not a reason to
click anything; "true TPS, live positions and the world map need this, and it
reports over the server console so no extra port is opened" is.

The map's empty state keeps only the part that is genuinely about the map — why
the canvas is blank, and the note that this server type cannot run the plugin at
all.

Asserted on the case the old placement could not reach: a supported server with
a jar available renders the banner, it says both what is missing and why it
matters, and every state nobody can act on — current, unsupported, or missing
with nothing to install — renders nothing, because a permanent banner is noise.

On a Paper server with no bridge jar, neither the app nor the panel offered to
install one. The offer existed — in the live map's empty state, which turns out
to be the one place it cannot do its job.

That state renders only when there are **no players to draw**. A server with
people on it and no bridge showed an empty-looking map, no explanation and no
button, because `mapDraw` returns before the empty state on any frame with
markers. It also required opening the map tab at all: `bridgeStatus` was fetched
by `mapStart()` and nowhere else, so an operator who never went there was never
told that half the features were switched off for want of a 6 KB jar.

The desktop gets a `BridgeNotice` component, shown above the live map **and** in
the Plugins/Mods view — it is a plugin, and a missing plugin belongs in the list
of plugins. The panel gets the same banner outside the tab panels entirely, so
it is visible on console, stats, timeline or anywhere else, fetched once when a
server is opened rather than once per map visit.

It also says what the jar unlocks. "Install MSMS-Bridge" is not a reason to
click anything; "true TPS, live positions and the world map need this, and it
reports over the server console so no extra port is opened" is.

The map's empty state keeps only the part that is genuinely about the map — why
the canvas is blank, and the note that this server type cannot run the plugin at
all.

Asserted on the case the old placement could not reach: a supported server with
a jar available renders the banner, it says both what is missing and why it
matters, and every state nobody can act on — current, unsupported, or missing
with nothing to install — renders nothing, because a permanent banner is noise.
Copilot AI review requested due to automatic review settings July 28, 2026 23:57

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

…tween servers

I placed the panel notice among the tab panels. Those are siblings, so it
rendered below the console on the console tab and at the top on every other one
— a banner that moves depending on where you are is worse than one that is
always in the same place. It sits above the tabs now, next to the server header
it belongs to.

The install result also outlived its server: switching servers left "Installed
1.0.0. Restart the server to load it." sitting under the new server's notice,
attributing one server's outcome to another. loadBridgeNotice clears it, and the
install path writes the message after that call rather than before.
@CaYatur

CaYatur commented Jul 29, 2026

Copy link
Copy Markdown
Owner Author

Self-review: put the banner in one place, and don't carry a result between servers

I placed the panel notice among the tab panels. Those are siblings, so it
rendered below the console on the console tab and at the top on every other one
— a banner that moves depending on where you are is worse than one that is
always in the same place. It sits above the tabs now, next to the server header
it belongs to.

The install result also outlived its server: switching servers left "Installed
1.0.0. Restart the server to load it." sitting under the new server's notice,
attributing one server's outcome to another. loadBridgeNotice clears it, and the
install path writes the message after that call rather than before.

@CaYatur
CaYatur merged commit f330108 into main Jul 29, 2026
1 check passed
@CaYatur
CaYatur deleted the fix/bridge-discoverability branch July 29, 2026 00:01
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.

2 participants