Skip to content

An install that never recorded a version is not a fresh one (GRYT-1102) - #518

Merged
sivert-io merged 1 commit into
mainfrom
claude/GRYT-1102-upgrade-not-fresh
Sep 9, 2026
Merged

sivert-io merged 1 commit into
mainfrom
claude/GRYT-1102-upgrade-not-fresh

Conversation

@sivert-io

Copy link
Copy Markdown
Member

#517 stopped the dialog reading the per-user store before it loaded. One consequence was left, and it would have cost a whole extra release.

Nothing wrote whatsNewSeenVersion while that bug was live. So every install that ran 1.11.0 or 1.11.1 — which is every install — has no value stored. On the first fixed build the dialog reads null, calls that a fresh install, records the version and says nothing. It would only appear on the release after that one.

Telling them apart

A fresh install has joined no servers. One that has been in use has an entry under servers. So seen === null with servers present is an install that predates the recording, not a new one, and it gets shown what changed.

A true fresh install still stays quiet — that's the case the rule was written for. Announcing the version somebody has just chosen to download reads as a bug.

I checked the shape on a running client rather than guessing: servers is an object keyed by host, {"127.0.0.1:5003": {…}}. nickname was the obvious alternative marker and is wrong — useSettings writes a random one during the first load, so it exists on every install including brand new ones.

Checks

The check runs the branch both ways, and executes hasJoinedAnything itself against no entry, an empty object, and a joined server. Four mutations, four caught — including replacing the guard with !!servers, which passes an empty object and would put the dialog in front of someone who has never joined anything.

🤖 Generated with Claude Code

GRYT-1101 stopped the dialog reading the per-user store before it loaded. One
consequence was left: nothing wrote whatsNewSeenVersion while that bug was
live, so every install that ran 1.11.0 or 1.11.1 has no value stored. On the
first fixed build the dialog would read null, call it a fresh install, record
the version and say nothing — so it would only appear on the release after
that one.

The two cases are separable. A fresh install has joined no servers. One that
has been in use has an entry under `servers`, so `seen === null` with servers
present is an install that predates the recording rather than a new one.

A true fresh install stays quiet, which is the case that rule was written for:
announcing the version somebody has just chosen to download reads as a bug.

The check runs the branch both ways and executes hasJoinedAnything itself
against no entry, an empty object and a joined server. Four mutations, four
caught.

Co-Authored-By: Claude Opus 5 <[email protected]>
@sivert-io
sivert-io merged commit 47871fb into main Sep 9, 2026
3 checks passed
@sivert-io
sivert-io deleted the claude/GRYT-1102-upgrade-not-fresh branch September 9, 2026 14:52
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