Skip to content

fix(store-update): decode packed MSIX version to stop perpetual update nag#119

Merged
nelsonduarte merged 2 commits into
mainfrom
fix/store-update-packed-version
Jul 14, 2026
Merged

fix(store-update): decode packed MSIX version to stop perpetual update nag#119
nelsonduarte merged 2 commits into
mainfrom
fix/store-update-packed-version

Conversation

@nelsonduarte

Copy link
Copy Markdown
Owner

Symptom

After updating to 1.14.0 via the Microsoft Store, the app kept showing "PDFApps 281535106252800 is available" perpetually, even though the installed version was already the latest.

Cause

The DisplayCatalog API returns the package version as a packed UInt64 (281535106252800 = 1.14.0.0). The updater displayed the raw integer and compared it against the installed semantic version, so the Store version always looked "newer" — an infinite update nag.

Fix

  • Decode the packed UInt64 into its major/minor/build/revision components.
  • Compare semantically: notify only when installed < Store; equal or higher means no notification.
  • Always render a human-readable version string in the UI.
  • Per-version dismiss keyed on a validated canonical key.
  • Silent fail-safe for corrupt/unexpected version formats.

Tests

  • Extended store_updater tests (55 passed).
  • Full suite: 476 passed.
  • ruff / mypy clean.

Ref: 3a0319f

nelsonduarte and others added 2 commits July 14, 2026 11:29
…e nag

The DisplayCatalog API can report the package version as a packed
UInt64 PackageVersion (e.g. 281535106252800 for 1.14.0.0) instead of a
dotted string. The old code read it raw, so it both displayed the giant
integer ("PDFApps 281535106252800 is available") and compared it as a
gigantic major version, making the Store always look newer than the
installed build — an update dialog on every launch even when already
up to date.

Add _decode_packed_version / _normalize_store_version / _format_version:
normalise every Store version (packed int, packed string, or dotted
string) to a semantic (major, minor, build, revision) tuple, comparing
apples to apples and displaying a canonical readable string. Corrupt or
out-of-range values normalise to None so we fail safe (no notification).
The per-version dismiss key now stores the decoded canonical version,
consistent with the existing i18n UInt16 validation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add the v1.14.1 release entry to the top of the changelog and move the
"Latest" badge from v1.14.0 to v1.14.1, leaving v1.14.0 intact below it.
The 1.14.1 entry describes the Microsoft Store update-notification fix in
user-facing terms.

Adding the new heading and moving the badge is the editorial step the
release workflow no longer performs: the version bump is anchored to the
footer changelog link only, so historical headings are never rewritten.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 14, 2026

Copy link
Copy Markdown

Deploying pdfapps with  Cloudflare Pages  Cloudflare Pages

Latest commit: 46168bb
Status: ✅  Deploy successful!
Preview URL: https://4f3292bc.pdfapps.pages.dev
Branch Preview URL: https://fix-store-update-packed-vers.pdfapps.pages.dev

View logs

@nelsonduarte
nelsonduarte merged commit 0d9ea87 into main Jul 14, 2026
4 checks passed
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