Skip to content

feat(update): notify when a newer release is available; prep 0.4.0 - #12

Merged
PalmarHealer merged 2 commits into
mainfrom
feature/update-checker
Sep 19, 2026
Merged

PalmarHealer merged 2 commits into
mainfrom
feature/update-checker

Conversation

@PalmarHealer

Copy link
Copy Markdown
Contributor

Tells the user when a newer release exists, and gets the tree ready to cut 0.4.0.

Update check

One GET to the GitHub releases API per launch, on a detached thread with a 10s
timeout, compared against this build with the same version parsing the profile
stamp already uses (v0.4.0 -> 0.4.0, pre-release suffixes ignored).

Slidr never downloads or installs anything by itself: on a hit it offers a link
that opens releases/latest in the browser. No updater process, nothing to
elevate, nothing to roll back if the check is wrong.

Failures are silent by design - offline, rate-limited or an unparseable answer
all read as "no news", so a machine with no network does not greet its owner
with an error dialog on startup.

  • Sidebar - a notice appears only when something newer exists; the sidebar
    is unchanged for someone who is up to date. Clicking it opens the page.
  • Settings -> Updates - opt-out toggle (persisted as Settings::update_check),
    the running version, the check status, "Check now" and "Download".

Release prep

  • Version bumped to 0.4.0. It has to match the tag being cut: the update
    check compares against it, so a 0.4.0 build left at 0.3.0 would permanently
    announce an update to itself.
  • packaging/99-slidr.rules is now a release asset. It existed only in the
    repository, so anyone who downloaded the Linux binary - the documented way to
    get it - could not reach the file the README tells them to install, and hit a
    root-only serial port instead.

Testing

  • 4 new unit tests (tag parsing, missing v prefix, 404/garbage payloads);
    cargo test 52/52 green.
  • Verified end to end against the real API from a debug build:
    [INFO slidr::glue] no update: 0.3.0 is current.

Closes #7 is not claimed here - the libxdo fix landed in 5bf5030; close it
when 0.4.0 is published.

🤖 Generated with Claude Code

PalmarHealer and others added 2 commits September 19, 2026 14:08
One GET to the GitHub releases API per launch, compared against this build with
the same version parsing the profile stamp uses. If something newer exists, a
notice appears at the bottom of the sidebar and opens releases/latest in the
browser.

Slidr never downloads or installs anything itself: there is no updater process,
nothing to elevate and nothing to roll back if the check is wrong. Failures
(offline, rate-limited, unparseable answer) are silent - a machine with no
network must not greet its owner with an error.

The check is opt-out under Settings -> Updates, which also carries a "Check now"
button and shows the running version.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The crate version is what the update check compares against the newest release
tag, so it has to match the tag being cut - left at 0.3.0, every 0.4.0 install
would announce an update to itself.

The udev rule existed only in the repository. Someone who downloaded the Linux
binary from the releases page - which is the documented way to get it - had no
way to reach the file the README tells them to install, and hit a root-only
serial port instead. It is now a release asset.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@PalmarHealer
PalmarHealer merged commit f9d3481 into main Sep 19, 2026
2 checks passed
@PalmarHealer
PalmarHealer deleted the feature/update-checker branch September 19, 2026 12:16
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.

release 0.2.4 - Linux Error

1 participant