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-1304GitHub issuePublicReceived

Wi-Fi network panel: QR / speed-test header highlight doesn't line up with the button

Reported by mayaanhafeez · filed Aug 28, 2026Closed upstream on 2026-10-09 by the merge of PR #8787 (closed by dhh). 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

Wi-Fi network panel: QR / speed-test header highlight doesn't line up with the buttonrevision 1 · captured 2026-09-28 21:24 UTC via poll

Description

In the network (Wi‑Fi) panel, the keyboard/hover cursor highlight on the QR code and speed test header buttons is not aligned with the actual button. The highlight box comes out visibly wider‑than‑tall (lopsided) around the roughly square icon instead of tracking the control, so it reads as offset/misaligned.

Steps to reproduce

  1. Open the network panel (click the network/ Wi‑Fi widget in the bar).
  2. With a Wi‑Fi connection active (so the QR and speed‑test actions are visible), hover the QR button or the speed‑test button, or keyboard‑navigate to the header section.
  3. Observe the cursor/hover highlight: it is an asymmetric rounded rectangle around the icon rather than a balanced box centered on the button.

Expected

The cursor highlight should be a symmetric box (or ring) centered on the control, matching how every other header action in the kit renders (e.g. the audio/bluetooth power ToggleSwitch, or PanelActionButton/CursorSurface rows).

Root cause (from code)

The two header actions are Button components with asymmetric padding in shell/plugins/panels/network/Panel.qml (around lines 1110–1140):

  • horizontalPadding: Style.space(5) (5px each side → 10px total)
  • verticalPadding: Style.space(2) (2px each side → 4px total)
  • iconSize: Style.font.subtitle * 1.5 (~20px glyph)

The cursor/hover highlight is the Button's own color fill, sized to exactly iconW + 2·hPad × iconH + 2·vPad (shell/Ui/Button.qml:73‑74). Around a ~20px square icon that yields a ~30×24px highlight — wider than tall — so it doesn't track the (near‑square) button.

This is also the only header cursor target in the kit implemented as a raw Button. Every other one uses ToggleSwitch (external ring, shell/Ui/ToggleSwitch.qml:68‑74) or PanelActionButton/CursorSurface. The dev‑gallery explicitly calls out CursorSurface + PanelActionButton as the component new panel action buttons should use (shell/plugins/dev‑gallery/GalleryPanel.qml:1684).

Suggested fix

Replace the two Buttons with PanelActionButton (the canonical inline‑action component). Its size is max(Style.space(22), fontSize + Style.spacing.sm * 2) — a symmetric square — so the highlight is centered on the icon:

PanelActionButton {
  id: qrAction
  visible: root.canShareWifi
  iconText: "󰐲"
  tooltipText: "Show QR code"
  foreground: root.bar.foreground
  fontFamily: root.bar.fontFamily
  fontSize: Style.font.subtitle * 1.5
  hasCursor: root.qrHeaderHasCursor
  Layout.alignment: Qt.AlignVCenter
  onHovered: function(on) { if (on) root.setHeaderCursor(root.qrHeaderIndex) }
  onClicked: root.summonWifiQr()
}
// same swap for speedAction (speedHeaderIndex / summonSpeedTest)

PanelActionButton already supports hasCursor, onHovered(bool), onClicked(), and tooltipText, so no other wiring changes are needed. (Minimal alternative: make the padding symmetric, e.g. verticalPadding: Style.space(5).)

System details

  • Omarchy version: 4.0.1-1
  • CPU: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
  • GPU: Intel Corporation Ivy Bridge mobile GT2 [HD Graphics 4000]; NVIDIA GeForce 610M/710M (GF117M)
  • Kernel: 7.1.9-arch1-2
Note: omarchy debug is not present in 4.0.1 (Unknown Omarchy command: omarchy debug), so the debug log could not be attached. A screenshot of the lopsided highlight on the QR / speed‑test buttons should be attached to confirm.
View raw text
## Description

In the network (Wi‑Fi) panel, the keyboard/hover cursor highlight on the **QR code** and **speed test** header buttons is not aligned with the actual button. The highlight box comes out visibly wider‑than‑tall (lopsided) around the roughly square icon instead of tracking the control, so it reads as offset/misaligned.

## Steps to reproduce

1. Open the network panel (click the network/ Wi‑Fi widget in the bar).
2. With a Wi‑Fi connection active (so the QR and speed‑test actions are visible), hover the QR button or the speed‑test button, or keyboard‑navigate to the header section.
3. Observe the cursor/hover highlight: it is an asymmetric rounded rectangle around the icon rather than a balanced box centered on the button.

## Expected

The cursor highlight should be a symmetric box (or ring) centered on the control, matching how every other header action in the kit renders (e.g. the audio/bluetooth power `ToggleSwitch`, or `PanelActionButton`/`CursorSurface` rows).

## Root cause (from code)

The two header actions are `Button` components with **asymmetric padding** in `shell/plugins/panels/network/Panel.qml` (around lines 1110–1140):

- `horizontalPadding: Style.space(5)`  (5px each side → 10px total)
- `verticalPadding:   Style.space(2)`  (2px each side → 4px total)
- `iconSize: Style.font.subtitle * 1.5` (~20px glyph)

The cursor/hover highlight is the `Button`'s own `color` fill, sized to exactly `iconW + 2·hPad` × `iconH + 2·vPad` (`shell/Ui/Button.qml:73‑74`). Around a ~20px square icon that yields a ~30×24px highlight — wider than tall — so it doesn't track the (near‑square) button.

This is also the only header cursor target in the kit implemented as a raw `Button`. Every other one uses `ToggleSwitch` (external ring, `shell/Ui/ToggleSwitch.qml:68‑74`) or `PanelActionButton`/`CursorSurface`. The dev‑gallery explicitly calls out `CursorSurface + PanelActionButton` as the component new panel action buttons should use (`shell/plugins/dev‑gallery/GalleryPanel.qml:1684`).

## Suggested fix

Replace the two `Button`s with `PanelActionButton` (the canonical inline‑action component). Its `size` is `max(Style.space(22), fontSize + Style.spacing.sm * 2)` — a symmetric square — so the highlight is centered on the icon:

```qml
PanelActionButton {
  id: qrAction
  visible: root.canShareWifi
  iconText: "󰐲"
  tooltipText: "Show QR code"
  foreground: root.bar.foreground
  fontFamily: root.bar.fontFamily
  fontSize: Style.font.subtitle * 1.5
  hasCursor: root.qrHeaderHasCursor
  Layout.alignment: Qt.AlignVCenter
  onHovered: function(on) { if (on) root.setHeaderCursor(root.qrHeaderIndex) }
  onClicked: root.summonWifiQr()
}
// same swap for speedAction (speedHeaderIndex / summonSpeedTest)
```

`PanelActionButton` already supports `hasCursor`, `onHovered(bool)`, `onClicked()`, and `tooltipText`, so no other wiring changes are needed. (Minimal alternative: make the padding symmetric, e.g. `verticalPadding: Style.space(5)`.)

## System details

- **Omarchy version:** 4.0.1-1
- **CPU:** Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
- **GPU:** Intel Corporation Ivy Bridge mobile GT2 [HD Graphics 4000]; NVIDIA GeForce 610M/710M (GF117M)
- **Kernel:** 7.1.9-arch1-2

> Note: `omarchy debug` is not present in 4.0.1 (`Unknown Omarchy command: omarchy debug`), so the debug log could not be attached. A screenshot of the lopsided highlight on the QR / speed‑test buttons should be attached to confirm.

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.