1.38.1 — an updater that can actually update
Updating from 1.38.0 or earlier on macOS needs one command
This release fixes an updater that could not install its own fix. On 1.38.0
and earlier, Update offers this version and then does nothing: the banner
reads GitHub's releases whilebrew upgradereads Homebrew's own copy of the
tap, which is refreshed at most once a day, so for a while after any release
the two disagree and Homebrew answers "the latest version is already
installed".Once, in a terminal:
brew update && brew upgrade --cask seo-auditFrom 1.38.1 onward the button does both steps itself, and this is the last
time it is needed.
Fixed
-
Update said a new version had appeared and then did nothing. The banner
reads GitHub's releases;brew upgradereads Homebrew's own clone of the tap,
and that clone is refreshed by an auto-update which runs at most once a day.
So for up to twenty-four hours after a release the two disagree: the window
offers 1.38.0, Homebrew answers "Not upgrading seo-audit, the latest version
is already installed", and the process exits 0 — so nothing reported a
failure and nothing moved.brew updatenow runs first, as a step rather than a hope, and the command
shown on screen says both so that running it by hand does the same thing.
Found by pressing Update on a real 1.36.0 with 1.38.0 published, watching it
do nothing, and going after the reason. -
Linux was told to run a command that could not work. An apt-installed
copy was offeredsudo apt-get install --only-upgrade seo-audit, and no apt
repository anywhere carries this package — the.debis downloaded from a
release and installed by hand. apt would answer that it cannot locate it. The
same failure as above in a different package manager: an instruction that
reads like an answer and is not one. That copy now goes to the release page,
where the next.debactually is.With nothing left that could produce it, the "Show me" path and its dialog are
gone. An option nothing can reach is an option that does not exist. -
The winget path could never have worked, token or no token. Detection ran
winget list --id Nurkamol.SeoAudit --exactand then asked whether the output
containedseo-audit. It never does: winget prints an Id column reading
Nurkamol.SeoAudit, the Name isSEO Audit, and the lowercase hyphenated
spelling appears nowhere. So the check was false for every winget install
there could ever be — and would have stayed false after a manifest shipped,
with the branch dead for a reason nobody was looking at any more. It matches
on the identifier now, case-insensitively, which is what winget is.The identifier is one constant rather than three copies, and the guard that
keeps it in step with the workflow reads that constant and also fails if
anybody writes it out by hand again. -
The bundle declared no publisher, licence or description, all of which a
winget manifest requires and all of which Windows shows in Add/Remove
Programs. Set, so the first submission has something true to carry.
Installing on macOS
brew tap nurkamol/seo-audit https://github.com/nurkamol/seo-audit
brew trust nurkamol/seo-audit
brew install --cask seo-auditHomebrew verifies the download against the checksum below and clears the
quarantine flag for you, so the app opens the first time.
Downloading the zip instead? macOS may say "SEO Audit is damaged and
can't be opened." It is not damaged. The app is ad-hoc signed rather than
notarised — notarising needs a paid Apple Developer account this project
does not have — and macOS refuses quarantined apps without a notarisation
ticket. Check what you downloaded first:
shasum -a 256 seo-audit-1.38.1-macos.zip
# f1ce47dace1edecef143143f27e50f94dcd068b621e86affdc0ed39d4457eeb1Then, once it matches, clear the flag — no sudo needed:
xattr -dr com.apple.quarantine "/Applications/SEO Audit.app"That is what right-click → Open does in the Finder, without the dialog.
Apple Silicon, macOS Tahoe or newer.
Windows and Linux
The setup.exe, .deb and .AppImage below are attached by a separate
job and may appear a few minutes after this release does.
The Windows installer is unsigned, so SmartScreen shows "Windows protected
your PC" — More info → Run anyway. Same reason as macOS: a code-signing
certificate is a paid, per-year thing this project does not have. The
.AppImage needs chmod +x before it will run.
Check any of them first. A SHA256SUMS.txt covering every file here is
attached alongside them, and the same checksums are listed at the end of
these notes:
shasum -a 256 --ignore-missing -c SHA256SUMS.txtChecksums
Verify a download before you wave a warning away. With SHA256SUMS.txt
saved beside the file, in the same folder:
shasum -a 256 --ignore-missing -c SHA256SUMS.txt1328e19d7b4e3de68706ac978376b6b5f02a03182c2434e60a809b2671bdea17 SEO.Audit_1.38.1_amd64.AppImage
c147fe6865200efeff9454df5c792a4bc087f0a201ebc7d807a4309323ada651 SEO.Audit_1.38.1_amd64.deb
30fe3d86dee9b056638fa986387e9a1a0a20224a90764366a79aebde4c67d1af SEO.Audit_1.38.1_x64-setup.exe
f1ce47dace1edecef143143f27e50f94dcd068b621e86affdc0ed39d4457eeb1 seo-audit-1.38.1-macos.zip
The macOS line appears twice in these notes on purpose: once above, computed
when the app was built, and once here, computed from what is actually attached.
They should agree.