release: cut 8.1.0.01, and fix client/server version-mismatch detection - #2012
Merged
Conversation
getPatchVersion() returned a copy of getMinorVersion(): the version number
was split correctly but PATCH was read from parts[1] instead of parts[2].
The line dates from 2018, when the same statement used split(".") -- a
regex matching any character, so the split returned an empty array and
every part stayed -1. A 2022 fix to that argument made MAJOR and MINOR
work for the first time and made this typo live along with them. Its only
consumer compared it against an equally wrong value, so nothing surfaced
in four years.
Adds the class's first tests, including one that distinguishes 8.1.0 from
8.0.1 -- a pair the old parser could not tell apart.
Closes #2011
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FUd61NUJgz88h4PZs5MqHn
The client reconnects on its own after a deployment, but that path went
straight to connectToServer() and skipped the version check entirely, so
a user could work for hours against a server newer than their client with
no sign that a new one had been published.
The automatic reconnect now runs the check, and only once the reconnect
has succeeded -- a failed attempt says nothing about the server's version,
and the check makes an HTTP call of its own that the retry loop should not
repeat.
The two situations get the policy that suits them:
ON_CONNECT login or a reconnect the user asked for. MAJOR or
MINOR only; a PATCH difference is ordinary here.
AFTER_SERVER_CHANGED the server moved underneath a running client, so
any difference is worth reporting, PATCH included.
The second message says the session is safe and to restart when
convenient, rather than the "download the latest client" wording that
suits a mismatch found at login.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FUd61NUJgz88h4PZs5MqHn
…se name This work has been called VCell 8.1 in the release notes since it began, while its builds continued the 8.0.x sequence. From 8.1.0.01 the two agree. Published numbers up to 8.0.28.01 are unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FUd61NUJgz88h4PZs5MqHn
A VCell patch release can carry a breaking API change, so a client and server differing in the patch number are not known to be compatible. That makes a patch mismatch worth reporting wherever it is found, not only after a mid-session server update -- and it is what the check has meant to do since 2018, which the parser bug in #2011 silently prevented. Drops the two-policy split from the previous commit. The context now selects only the wording: a mismatch found at login says to download the current client, one appearing mid-session says to save, exit and restart. Also removes the claim that the session is safe to continue after a mid-session update. If a patch can break the API, that promise cannot be made. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FUd61NUJgz88h4PZs5MqHn
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.
What
Cuts 8.1.0.01, the first release candidate for VCell 8.1, moves the build number onto the
8.1.xsequence, and repairs the client/server version check — which has been unable to detect a PATCH-level mismatch since 2022.Published numbers up to 8.0.28.01 are unchanged; nothing already released is renumbered.
The version check
A VCell patch release can carry a breaking API change. So a client and server differing in MAJOR, MINOR or PATCH are not known to be compatible, and the check now reports all three. Only BUILD is ignored.
That is what the check was written to do in 2018. It could not, because of the parser bug below:
getPatchVersion()returned MINOR, so the comparison tested MINOR twice and ignored PATCH entirely. Across the whole 8.0 line every build parsed as (8, 0, 0), so the warning was effectively dormant.Expect it to appear more often — a patch difference alone is now enough. It remains advisory and does not prevent use.
Mid-session server updates
The client reconnects on its own after a deployment. That path — the package-private
ClientServerManager.reconnect()theReconnectordrives — went straight toconnectToServer()and skipped the version check entirely, so a user could work on against a server their client no longer matched, with no sign anything had changed.The automatic reconnect now runs the check, only once the reconnect has succeeded: a failed attempt says nothing about the server's version, and the check makes an HTTP call of its own that the retry loop must not repeat.
Same comparison either way; only the advice differs:
The mid-session message does not tell the user their session is safe to continue. If a patch can break the API, that promise cannot be made.
The parser fix (#2011)
VCellSoftwareVersionread PATCH fromparts[1]instead ofparts[2], sogetPatchVersion()returned a copy ofgetMinorVersion().The line dates from 2018, when the same statement used
split(".")— a regex matching any character, so the split returned an empty array and every part stayed-1. A 2022 one-line fix to that argument, inside an unrelated commit about compartment reordering, made MAJOR and MINOR work for the first time and made this typo live alongside them. Its only consumer compared it against an equally wrong value, so nothing surfaced for four years.Verified against the recompiled class:
Alpha_Version_8.0.28_build_01Alpha_Version_8.1.0_build_01Adds the class's first tests (3,
@Tag("Fast")), including one distinguishing8.1.0from8.0.1— a pair the old parser could not tell apart.Closes #2011.
Note on the dialog
It is not dismissible. VCell has a "Do not show this warning again" mechanism (
UserPreferences+UserMessage) that this dialog does not use. Left alone deliberately — a separate decision, and more relevant now that the warning will be seen more often.Verification
mvn -o compile -pl vcell-apiclient -am— cleanVCellSoftwareVersionTest— 3 tests, 0 failuresDeploying to dev (alpha) after merge.
🤖 Generated with Claude Code
https://claude.ai/code/session_01FUd61NUJgz88h4PZs5MqHn