Proof Portal

Project overview

Omarchy

ProbeLabs73 findings · 87 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.

Map
Component

menu

66 requirements allocated to this component across categories functional, interface.

66 requirements · 56/66 implemented · 66/66 tested.

Contracts

Interface contracts this component is a producer or consumer of.

No interface contracts

This component neither produces nor consumes a declared interface contract.

Responsibilities

the requirements this component owns, by intent — filter for coverage gaps
Requirement (by intent)CoverageGap
Users reach system actions, settings, and applications…STKSTK-REQ-260922-XTNRITD
Binds Hyprland reports as dispatcher __lua are shown with…SWSW-REQ-260922-0W96ITD
The rewrite touches only the plain $(reader) form, mapping…SWSW-REQ-260922-2JZTITD
When no row is selectable, the menu shows no cursor at all…SWSW-REQ-260922-3JG5ITD
Unparseable input (after stripping), non-object JSON, and…SWSW-REQ-260922-3T3FITD
finishRequest with no active request or no done file just…SWSW-REQ-260922-3VTNITD
The menu discards a guard batch that exits nonzero or by…SWSW-REQ-260922-4079ITD
When the fast signature (directory path + mtime per image…SWSW-REQ-260922-43HQITD
An entry with action is an action, with target a link,…SWSW-REQ-260922-46HYITD
Every picker row carries the plugin id as tab subtextSWSW-REQ-260922-4EWAITD
Cancelling the timezone picker exits 1 before any…SWSW-REQ-260922-4VAVITD
open(payload) dispatches on modeSWSW-REQ-260922-50REITD
A route matching no id and no alias resolves to the literal…SWSW-REQ-260922-74BZITD
A user entry overrides the default per key while keeping…SWSW-REQ-260922-7NPEITD
Delete with the cursor on an app row opens an uninstall…SWSW-REQ-260922-8CQ4ITD
Clipboard mode writes the clipboard to a tempSWSW-REQ-260922-8ERHITD
When the done file exists but the selection file is empty…SWSW-REQ-260922-9ABDITD
A code:N binding shows the keysym resolved from the…SWSW-REQ-260922-9DMSITD
When the rows do not fit, the list height ends mid-rowSWSW-REQ-260922-B757ITD
With no prompt, or no options from arguments or stdin, a…SWSW-REQ-260922-B839ITD
finishRequest with a null selection (Escape/cancel) creates…SWSW-REQ-260922-C8HXITD
Absent an exact id, a route equal to a declared alias…SWSW-REQ-260922-CYB9ITD
Drilling in pushes the previous menu on the navigation stackSWSW-REQ-260922-DE93ITD
A row matches only when every query term appears in its…SWSW-REQ-260922-DQ9PITD
The parser strips full-line // comments and trailing commas…SWSW-REQ-260922-E4J2ITD
swapProviderRows drops exactly the rows carrying the re-run…SWSW-REQ-260922-EFNRITD
finishRequest with a selection writes the value to the…SWSW-REQ-260922-FGZQITD
The listing matches the requested formats…SWSW-REQ-260922-HR29ITD
A file chooser exit status above 1 sends a critical 'Could…SWSW-REQ-260922-JREHITD
Applied guard results drive the viewSWSW-REQ-260922-JRW1ITD
enable offers disabled pluginsSWSW-REQ-260922-KRBHITD
When the fast signature differs, the script rebuilds rows…SWSW-REQ-260922-MH9BITD
Once the done file exists, the script prints a non-empty…SWSW-REQ-260922-MP00ITD
The generated guard script holds exactly one if-line per…SWSW-REQ-260922-MQ37ITD
When a route resolves to an action item with a non-empty…SWSW-REQ-260922-N3RMITD
A dmenu option may lead with a glyph TAB and trail a…SWSW-REQ-260922-NM45ITD
An exact id match wins over every aliasSWSW-REQ-260922-PRNVITD
The select payload carries mode=select, prompt, options,…SWSW-REQ-260922-Q6ZSITD
When no plugin matches the verb, the script sends a 'No…SWSW-REQ-260922-QMWPITD
The prelude's omarchy-pkg-present/missing shadows agree…SWSW-REQ-260922-RGCVITD
Scores tier exact label, whole-word app name, label prefix,…SWSW-REQ-260922-SJ7PITD
An unknown verb prints 'omarchy-menuSWSW-REQ-260922-SNZGITD
The script applies a picked timezone with sudo timedatectl…SWSW-REQ-260922-SWFTITD
toggle, summon, close, refresh, and ping each exec the…SWSW-REQ-260922-T257ITD
Search lists current-menu matches before deeper (drilldown)…SWSW-REQ-260922-TKDPITD
A value command shared by several guards (eSWSW-REQ-260922-W17GITD
When a route resolves to a link item, the menu opens at the…SWSW-REQ-260922-XW52ITD
When no item declares a guard, the guard script is empty…SWSW-REQ-260922-Y58BITD
Cursor movement lands on the next selectable row in the…SWSW-REQ-260922-Z48FITD
mergeAppRows and swapProviderRows return fresh maps that…SWSW-REQ-260922-Z680ITD
A menu action may exactly match the bare-summon grammarSWSW-REQ-260928-8VJQITD
The merged item tree is addressable by idSWSW-REQ-260929-B8N9ITD
After the first filter keystroke or submenu move, the card…SWSW-REQ-260929-DXFJITD
A converter that refuses a video records an emptySWSW-REQ-260929-REJTITD
Row selection follows the pointer only after it genuinely…SWSW-REQ-260929-T378ITD
The pipeline detects video paths by extension and…SWSW-REQ-260929-THMBITD
Dynamic rows (apps, provider enumerations) replace their…SYSSYS-REQ-260922-0M8AITD
All when/checked/disabled expressions evaluate in one…SYSSYS-REQ-260922-47T8ITD
Menu action scripts (plugin picker, share, timezone,…SYSSYS-REQ-260922-6642ITD
omarchy-menu routes each verb…SYSSYS-REQ-260922-J0ANITD
Activating a row runs its action, follows its link, or…SYSSYS-REQ-260922-P708ITD
The default JSONC and the user extension merge into one…SYSSYS-REQ-260922-PPDWITD
A route string (exact id, declared alias, or normalized…SYSSYS-REQ-260922-R8DQITD
A filter query narrows to visible, selectable rows whose…SYSSYS-REQ-260922-V7W6ITD
A script-driven select/input prompt delivers the picked…SYSSYS-REQ-260922-X6Z5ITD
The menu Lock row invokes the lock component's CLI entry…SYSSYS-REQ-260927-WC89ITD

Findings 57 open · 0 resolved

Open (57)

known issues, coverage gaps and checks that still need attention

Attached code & tests

traced files across this component’s requirements, deduplicated by path
Code(12 files)
  • BarWidget.qmlshell/plugins/menu/BarWidget.qml
  • Menu.qmlshell/plugins/menu/Menu.qml
  • MenuModel.jsshell/plugins/menu/MenuModel.js
  • omarchy-menubin/omarchy-menu
  • omarchy-menu-filebin/omarchy-menu-file
  • omarchy-menu-imagesbin/omarchy-menu-images
  • omarchy-menu-inputbin/omarchy-menu-input
  • omarchy-menu-keybindingsbin/omarchy-menu-keybindings
  • omarchy-menu-pluginbin/omarchy-menu-plugin
  • omarchy-menu-selectbin/omarchy-menu-select
  • omarchy-menu-sharebin/omarchy-menu-share
  • omarchy-menu-timezonebin/omarchy-menu-timezone
Tests(15 files)
  • keybindings-menu-test.shtest/shell.d/keybindings-menu-test.sh
  • menu-acceptance-test.shtest/shell.d/menu-acceptance-test.sh
  • menu-compositor-test.shtest/shell.d/menu-compositor-test.sh
  • menu-dispatcher-test.shtest/shell.d/menu-dispatcher-test.sh
  • menu-dmenu-test.shtest/shell.d/menu-dmenu-test.sh
  • menu-file-test.shtest/shell.d/menu-file-test.sh
  • menu-guards-test.shtest/shell.d/menu-guards-test.sh
  • menu-images-test.shtest/shell.d/menu-images-test.sh
  • menu-plugin-test.shtest/shell.d/menu-plugin-test.sh
  • menu-pointer-lifecycle-test.shtest/shell.d/menu-pointer-lifecycle-test.sh
  • menu-share-test.shtest/shell.d/menu-share-test.sh
  • menu-test.shtest/shell.d/menu-test.sh
  • menu-timezone-test.shtest/shell.d/menu-timezone-test.sh
  • menumodel-replay.test.mjstest/node/menumodel-replay.test.mjs
  • report-reproducers.test.mjstest/node/report-reproducers.test.mjs

How this component connects

Open in graph
Mapping this component’s neighbourhood…

Discussions

Discuss this with the proof team. Nothing changes in your audit automatically — you open a request and a staff member records any outcome inside the thread.

Sign in to discuss this with the proof team.Sign in