Skip to content

1.38.0 — a Windows report that saves where you tell it

Choose a tag to compare

@github-actions github-actions released this 29 Aug 14:52
· 10 commits to main since this release

Added

  • The kept-runs list sorts by any of its columns, and remembers how you left
    it.
    There were no column headers at all: the list was a heading per site
    with its own small table under it, so the only order was newest-first and the
    only grouping was by host. It is one table now — Site, When, Pages, To
    change, Score — and sorting by Site is the grouping it used to have, as one
    of five orders rather than the only one.

    Links, not script: an order is a different view of the same list, so it is a
    different URL. It can be bookmarked, and it works before any JavaScript has
    run. Clicking the column you are already on turns it around; a new column
    opens the way that column is most useful, which is largest-first for dates
    and numbers and A-to-Z for a name.

    The filter and the order are kept in a cookie rather than in localStorage,
    for the same reason: a preference that only works once a script has run would
    be the one control on the page that does not. It comes back through the same
    validators the query string goes through — a cookie is a URL somebody kept,
    and it may have been edited since, so it names a column that exists or it is
    ignored.

    The score cell lost its /100. The column is headed Score; repeating the
    denominator on every row is the header said again, once per line.

  • The window takes its type and its accent from the machine it is on. The
    font stack stopped at "Segoe UI", which is Windows 10's face — Windows 11
    uses Segoe UI Variable Text — and offered Linux Roboto, an Android face few
    desktops have, ahead of Cantarell or Noto. And --accent was a hardcoded
    blue while every one of those systems lets a person pick their own; where the
    engine drawing this knows the answer, AccentColor is now that person's
    choice, AccentColorText is the colour guaranteed to be readable on it, and
    checkboxes and the date field take it too.

    The chrome only. A report is a document that gets sent to other people and
    keeps its own palette, so it looks the same on their machine as it did on
    yours.

    Keyboard focus is now one visible high-contrast ring rather than whatever the
    webview drew for each control type, and scrollbars take the page's colours
    instead of the light ones a dark window makes obvious.

    Not attempted: a design per operating system. "Native on Linux" is not one
    target — GNOME and KDE disagree — and a webview half-imitating WinUI lands in
    the uncanny valley, which reads as less finished rather than more. It would
    also split the browser and the app, which is the one thing this project
    refuses everywhere else.

Fixed

  • Save as … wrote straight to Downloads without asking, and said nothing
    afterwards.
    Reported by somebody using the Windows build, which is where the
    export links have always been plain downloads — the macOS app has its own save
    panel and never had this. The file now lands in a temporary directory, a
    native dialog asks where it should go, and a line in the bottom-left corner
    says where it went. Cancelling deletes the temporary copy, because a "Save
    as" that leaves a file behind after being cancelled is the same surprise
    wearing a different coat.

    The obvious implementation cannot be written: a dialog inside the download
    request, so the destination is chosen before any bytes move. That handler runs
    on the main thread, and the dialog plugin says in as many words that a
    blocking dialog there freezes the application.

  • "Open link in new window" did nothing. From the same report. A new-window
    request is not a navigation, so the handler that sends external links to the
    browser never saw it and nothing else was listening. It now goes the same way
    every other external link goes — to the browser, which has an address bar.

  • The kept runs were drawn with the webview's default table styling
    edge-to-edge columns and no separators, which is what a spreadsheet looks
    like and not what that page is. CHROME had no table rules at all: they were
    in the stylesheet page() serves, and /reports is drawn by shell(). The
    date now leads the row at full contrast because it is the link you aim at,
    the detail sits beside it muted, the score is right-aligned and tabular, and
    the filter is a secondary control so the one primary button on the page is
    the one that does something irreversible.

  • The kept-since filter shipped in 1.37.0 with no styling. Its CSS went into
    the stylesheet page() serves; /reports is drawn by shell(), which serves
    a different one. The markup was right, the class was right, and the rule
    simply never applied. That is twice now — the export links did it one release
    earlier — so a test now reads CHROME and fails when a class the served pages
    use is styled somewhere the served pages do not read.


Installing on macOS

brew tap nurkamol/seo-audit https://github.com/nurkamol/seo-audit
brew trust nurkamol/seo-audit
brew install --cask seo-audit

Homebrew 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.0-macos.zip
# 0b78d38c6029e58475566a12fd5d9b5ef78db752b0d95c5be07a32def1236c57

Then, 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.txt

Checksums

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.txt
d42cab61b85d00490d8d1b0827528ba0d3b8a53c3a6d5c0698bd6d1d223b05a8  SEO.Audit_1.38.0_amd64.AppImage
d491b1dba03015828095e54bfb186395a5deccddbd2c0a67c0db19cfd57c3176  SEO.Audit_1.38.0_amd64.deb
2c0eb1120bb14a216eba50dbfb37a562f08beeb3ebb5a6a518fdcb48b2e6191f  SEO.Audit_1.38.0_x64-setup.exe
0b78d38c6029e58475566a12fd5d9b5ef78db752b0d95c5be07a32def1236c57  seo-audit-1.38.0-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.