Skip to content

Notify MSI and portable users when a newer release exists - #47

Merged
marcosqlbi merged 1 commit into
mainfrom
feature/update-check
Aug 20, 2026
Merged

Notify MSI and portable users when a newer release exists#47
marcosqlbi merged 1 commit into
mainfrom
feature/update-check

Conversation

@marcosqlbi

@marcosqlbi marcosqlbi commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

An MSI or portable copy has no updater behind it, so the only way to learn a new version exists was to go looking. It now checks once a day and says so in the tab strip and in About, with a download link. A Microsoft Store install never checks — the Store already updates it.

Reworked onto the shared release manifests

This branch originally wrote its own stable.json / dev.json as release assets from collect-release-assets.yml, carrying only a version, and read them from releases/latest/download. main has since published manifests of the same names from the site, carrying full installer metadata, which the download page and the winget submission both read.

Two files with the same names, two schemas and two URLs is exactly the drift a shared manifest exists to prevent. The pipeline change is dropped, and the client reads the manifests that already exist.

This also fixes the pre-release side, which could not have worked as written. releases/latest/download/ resolves only to the newest full release, so a dev.json published as a release asset is unreachable — the branch wrote one on every pre-release and never read it. Serving it from the site makes it reachable, and the client now picks the file by channel: a released copy asks stable.json, a pre-release copy asks dev.json, which is the only one that can ever be ahead of it.

The manifest parser needed no change: it deserializes a version property and ignores what it does not recognise, and the published manifests carry that property alongside the installer metadata.

Kept as the branch had it

Versions compare on major.minor.patch, with the -dev.<build> suffix ignored — this branch's own tests assert that. So a pre-release copy is told about the next version rather than about every rebuild of its own. Worth knowing, not worth changing here.

Privacy copy corrected

site/privacy.html named github.com as the host contacted. It is now whiteboard.sqlbi.com, with github.com only as the fallback. A privacy page naming the wrong host is worse than one saying nothing, so both requests are now described.

Verification

Build clean, core smoke tests pass.

Against the live site: both manifests return 200 with a version (stable.json0.9.2, dev.json0.9.3-dev.3237), and a second request carrying If-None-Match returns 304 — so the conditional GET this depends on works where it will actually run, not just in principle.

Not verified: the UI itself. The tab-strip and About notice need a run on Windows with a version older than the manifest reports.

An MSI or portable copy has no updater behind it, so the only way to
learn a new version exists was to go looking. It now checks once a day
and says so in the tab strip and in About, with a download link. A
Microsoft Store install never checks: the Store already updates it.

Reworked onto the release manifests that main now publishes. The branch
wrote its own stable.json and dev.json as release assets from
collect-release-assets.yml, carrying only a version, and read them from
releases/latest/download. Two files with the same names, two schemas and
two URLs is the drift a shared manifest exists to prevent, so the
pipeline change is dropped and the client reads the manifests the
download page and the winget submission already read.

That also fixes the pre-release side, which could not have worked as
written. releases/latest/download resolves only to the newest full
release, so a dev.json published as a release asset is unreachable; the
branch wrote one on every pre-release and never read it. Reading from
the site makes it reachable, and the client now picks the file by
channel: a released copy asks stable.json, a pre-release copy asks
dev.json, which is the only one that can ever be ahead of it.

The manifest parser needed no change. It deserializes a version property
and ignores what it does not know, and the published manifests carry
that property alongside the installer metadata the page and winget use.

Versions still compare on major.minor.patch, with the -dev.<build>
suffix ignored, which is what this branch's own tests assert. A
pre-release copy is therefore told about the next version rather than
about every rebuild of its own.

site/privacy.html named github.com as the host contacted. It is now
whiteboard.sqlbi.com, with github.com only as the fallback, and a
privacy page naming the wrong host is worse than one saying nothing.
Both requests are described.

Verified: build clean, core smoke tests pass. Against the live site,
both manifests return 200 with a version, and a second request carrying
If-None-Match returns 304 - so the conditional GET this relies on works
where it will actually run.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@marcosqlbi
marcosqlbi force-pushed the feature/update-check branch from 5a36792 to 93f550c Compare August 20, 2026 14:13
@marcosqlbi
marcosqlbi merged commit 9f5fbfb into main Aug 20, 2026
4 checks passed
@marcosqlbi
marcosqlbi deleted the feature/update-check branch August 20, 2026 14:21
marcosqlbi added a commit that referenced this pull request Aug 21, 2026
The privacy lede had become a summary of the whole page. That was the
update-check work in #47: the facts belonged, the extra reassurance did
not.

This puts the two-sentence lede back (telemetry, then what the page is),
keeps the version-check facts in shorter sentences, and names the hosts
the client actually talks to. The home page now reads stable.json first,
so the website section says that instead of claiming every download
click hits api.github.com.

The FAQ and changelog had the same drift: they still named GitHub as the
check host, and they still said no stable release exists. Both are now
false. The FAQ account answer now points at this site, and the changelog
no-JS note no longer pretends 0.9.5 is not out.

Home, Guide, Compare, Contribute, Shortcuts, and the import format are
left alone. Home is the campaign, Guide is the session stories; the
others were already in this voice.
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