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-892GitHub issuePublicDecided· Out of scope

Tailscale panel: group machines into My/Tagged/Other and add "/" search

Reported by ssandys · filed Sep 6, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 days ago.

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?
AreaOutside the audited area· Decided by agents · verified
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?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

Tailscale panel: group machines into My/Tagged/Other and add "/" searchrevision 1 · captured 2026-09-28 21:23 UTC via poll

What happens

The MACHINES list renders every online peer in one flat alphabetical list. On my tailnet that is 135 rows, of which exactly one is a machine of mine — the rest are tagged infrastructure and coworkers' devices. Finding my own laptop means scrolling, and there is no way to search.

Composition, from a single tailscale status --json dump:

GroupWhole tailnetOnline (rendered)
My devices (UserID == self)131
Tagged devices (Tags non-empty)141116
Other users' devices21318
Total367135

The panel lists online peers only (parseStatus keeps a peer only when Online), so 135 is what actually renders — tsui reports 367 because it includes offline devices. The online split naturally drifts over time.

Requested

Both of these match the behaviour of the [`tsui`](https://github.com/neuralink/tsui) TUI, which handles the same tailnet well:

  1. Group the list. tsui splits Network Devices into My Devices and Tagged Devices; its "My Devices" section shows exactly the 13 machines that UserID == Self.UserID yields on my tailnet. Peers belonging to other users fall outside both groups (213 tailnet-wide, 18 of them online), so a third Other Devices group keeps everything reachable rather than silently hiding rows the panel shows today.
  1. Search with `/`. Press / to filter the list — matching hostname, MagicDNS name and IP. Searching the DNS name matters: the machine I know as ny-exit-node reports Firezone as its OS hostname (see the companion issue on exit node labelling), so hostname-only search would not find it.

Notes for implementation

No new data plumbing is needed — peerFromStatus already normalizes UserID (Model.js:103) and Tags (Model.js:111), and selfUserId is already parsed (Model.js:262) and exposed on the service (Service.qml:27).

Tagged should win over ownership, matching tsui: a device you authenticated but which carries a tag belongs under Tagged Devices — that is where atl-exit-node appears in tsui.

One pitfall worth flagging: PanelKeyCatcher uses Keys.priority: Keys.BeforeItem and consumes h/j/k/l/x as navigation, so any inline text field needs blocked: <field>.activeFocus, as its own header comment documents. Panel.qml:416 currently sets only blocked: root.copyMenuOpen — the existing Mullvad region search field appears to be missing this guard, so typing j or k into it should move the panel cursor rather than entering text. Worth fixing alongside.

Environment

  • omarchy-dev 4.0.0.r2031.g41b6cc6-1 (quattro)
  • tailscale 1.102.3
  • Tailnet with 367 peers
View raw text
### What happens

The MACHINES list renders every online peer in one flat alphabetical list. On my tailnet that is 135 rows, of which exactly **one** is a machine of mine — the rest are tagged infrastructure and coworkers' devices. Finding my own laptop means scrolling, and there is no way to search.

Composition, from a single `tailscale status --json` dump:

| Group | Whole tailnet | Online (rendered) |
|---|---|---|
| My devices (`UserID` == self) | 13 | 1 |
| Tagged devices (`Tags` non-empty) | 141 | 116 |
| Other users' devices | 213 | 18 |
| **Total** | **367** | **135** |

The panel lists online peers only (`parseStatus` keeps a peer only when `Online`), so 135 is what actually renders — `tsui` reports 367 because it includes offline devices. The online split naturally drifts over time.

### Requested

**Both of these match the behaviour of the [`tsui`](https://github.com/neuralink/tsui) TUI**, which handles the same tailnet well:

1. **Group the list.** `tsui` splits Network Devices into **My Devices** and **Tagged Devices**; its "My Devices" section shows exactly the 13 machines that `UserID == Self.UserID` yields on my tailnet. Peers belonging to other users fall outside both groups (213 tailnet-wide, 18 of them online), so a third **Other Devices** group keeps everything reachable rather than silently hiding rows the panel shows today.

2. **Search with `/`.** Press `/` to filter the list — matching hostname, MagicDNS name and IP. Searching the DNS name matters: the machine I know as `ny-exit-node` reports `Firezone` as its OS hostname (see the companion issue on exit node labelling), so hostname-only search would not find it.

### Notes for implementation

No new data plumbing is needed — `peerFromStatus` already normalizes `UserID` (`Model.js:103`) and `Tags` (`Model.js:111`), and `selfUserId` is already parsed (`Model.js:262`) and exposed on the service (`Service.qml:27`).

Tagged should win over ownership, matching `tsui`: a device you authenticated but which carries a tag belongs under Tagged Devices — that is where `atl-exit-node` appears in `tsui`.

One pitfall worth flagging: `PanelKeyCatcher` uses `Keys.priority: Keys.BeforeItem` and consumes `h`/`j`/`k`/`l`/`x` as navigation, so any inline text field needs `blocked: <field>.activeFocus`, as its own header comment documents. `Panel.qml:416` currently sets only `blocked: root.copyMenuOpen` — **the existing Mullvad region search field appears to be missing this guard**, so typing `j` or `k` into it should move the panel cursor rather than entering text. Worth fixing alongside.

### Environment

- omarchy-dev 4.0.0.r2031.g41b6cc6-1 (quattro)
- tailscale 1.102.3
- Tailnet with 367 peers

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.

  • Out of scopeDecided by agents · verified · 2026-10-09 10:59 UTC