Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-4613GitHub issuePublicReceived

omarchy-update-available false positive when a pre-release tag exists (e.g. v4.0.0-beta3)

Reported by sergioacosta-dev · filed Aug 16, 2026Closed upstream on 2026-09-21 by bjarneo via an automated message, as a duplicate of #6754 (R-1873). GitHub close reason: completed.

Received and recorded verbatim. Nothing has been checked yet.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
Not yet mapped to any requirement or component.
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.

Original report

omarchy-update-available false positive when a pre-release tag exists (e.g. v4.0.0-beta3)revision 1 · captured 2026-10-04 12:03 UTC via poll

Description

The waybar update-checker script (bin/omarchy-update-available) permanently reports an update is available even when the local install is on the actual latest release tag.

Root cause

latest_tag=$(git ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1)

sort -V (GNU version sort) does not implement SemVer pre-release ordering. It ranks v4.0.0-beta3 above v4.0.0, because it's comparing byte-wise rather than treating -beta3 as a pre-release qualifier that should sort before its corresponding release.

Reproduction

$ git ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 3
v3.8.4
v4.0.0
v4.0.0-beta3

With a fully up-to-date checkout on v4.0.0:

$ omarchy-update-available
Omarchy update available (v4.0.0-beta3)

This will affect every user on v4.0.0 for as long as v4.0.0-beta3 remains the lexically/version-sort-"highest" tag in the repo — the waybar icon and omarchy-update prompt never clear.

Suggested fix

Filter out pre-release tags before taking the max, e.g.:

latest_tag=$(git ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | grep -vE -- '-[A-Za-z]' | sort -V | tail -n 1)

(or swap in a proper SemVer-aware comparator if pre-release tags need to be considered under different circumstances).

Environment
- Omarchy version: v4.0.0
- OS: Arch Linux

View raw text
**Description**

The waybar update-checker script (`bin/omarchy-update-available`) permanently reports an update is available even when the local install is on the actual latest release tag.

**Root cause**

```bash
latest_tag=$(git ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1)
```

`sort -V` (GNU version sort) does not implement SemVer pre-release ordering. It ranks `v4.0.0-beta3` above `v4.0.0`, because it's comparing byte-wise rather than treating `-beta3` as a pre-release qualifier that should sort before its corresponding release.

**Reproduction**

```bash
$ git ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 3
v3.8.4
v4.0.0
v4.0.0-beta3
```

With a fully up-to-date checkout on `v4.0.0`:

```bash
$ omarchy-update-available
Omarchy update available (v4.0.0-beta3)
```

This will affect every user on `v4.0.0` for as long as `v4.0.0-beta3` remains the lexically/version-sort-"highest" tag in the repo — the waybar icon and `omarchy-update` prompt never clear.

**Suggested fix**

Filter out pre-release tags before taking the max, e.g.:

```bash
latest_tag=$(git ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | grep -vE -- '-[A-Za-z]' | sort -V | tail -n 1)
```

(or swap in a proper SemVer-aware comparator if pre-release tags need to be considered under different circumstances).

**Environment**
- Omarchy version: v4.0.0
- OS: Arch Linux

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

No decision has been recorded yet.