Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA 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.
Clock calendar repeats a day and shifts weekdays in timezones with a midnight DST switch (e.g. America/Santiago)
Reported by Bozahita · filed Sep 23, 2026Closed upstream on 2026-10-11 by the merge of PR #10476 (closed by omarchybot, a bot). GitHub close reason: completed.
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
System details
AMD Ryzen 7 250 w/ Radeon 780M, Omarchy 4.0.4 (quickshell 0.3.1, qt6-declarative 6.11.2), TZ America/Santiago
What's wrong?
In timezones whose DST transition happens at midnight, the clock's calendar popup repeats a day and shifts the rest of the month by one weekday.
With TZ=America/Santiago, DST starts on Sunday 2026-09-06 at 00:00 (clocks jump to 01:00). The September 2026 grid renders:
MON TUE WED THU FRI SAT SUN
31 1 2 3 4 5 5 <- 5 repeated
6 7 8 9 10 11 12 <- everything shifted one day
...
20 21 22 23 24 25 26 <- today (Wed 23) marked under THUSteps to reproduce
1. Set timezone to America/Santiago (or any zone with a midnight DST switch).
2. Open the clock calendar and look at September 2026.
Cause
monthGrid() in shell/plugins/panels/clock/Model.js walks the grid from a midnight Date (new Date(year, month, 1 - leading)) and advances with setDate(getDate() + 1). On the transition day, midnight doesn't exist, and the QML V4 engine resolves it backwards to 23:00 of the previous day, so getDate() returns the same day twice. From then on every cursor sits at 23:00 of the previous day.
Minimal repro in QML (TZ=America/Santiago):
var c = new Date(2026, 8, 3)
for (var i = 0; i < 6; i++) { print(c.getDate() + "@" + c.getHours() + "h"); c.setDate(c.getDate() + 1) }
// 3@0h 4@0h 5@0h 5@23h 6@23h 7@23hThe unit tests in test/shell.d/clock-test.sh don't catch this because they run under node, where V8 resolves the missing midnight forward to 01:00.
Suggested fix
Anchor the cursor at noon so no DST transition can move it across a day boundary:
- var cursor = new Date(year, month, 1 - leading)
+ var cursor = new Date(year, month, 1 - leading, 12)I tested this locally in a cloned plugin: September 2026, April 2026 (DST end), and September 2027 all render correctly in the QML engine.
Screenshot attached.
View raw text
### System details
AMD Ryzen 7 250 w/ Radeon 780M, Omarchy 4.0.4 (quickshell 0.3.1, qt6-declarative 6.11.2), TZ `America/Santiago`
### What's wrong?
In timezones whose DST transition happens at midnight, the clock's calendar popup repeats a day and shifts the rest of the month by one weekday.
With `TZ=America/Santiago`, DST starts on Sunday 2026-09-06 at 00:00 (clocks jump to 01:00). The September 2026 grid renders:
```
MON TUE WED THU FRI SAT SUN
31 1 2 3 4 5 5 <- 5 repeated
6 7 8 9 10 11 12 <- everything shifted one day
...
20 21 22 23 24 25 26 <- today (Wed 23) marked under THU
```
**Steps to reproduce**
1. Set timezone to `America/Santiago` (or any zone with a midnight DST switch).
2. Open the clock calendar and look at September 2026.
**Cause**
`monthGrid()` in `shell/plugins/panels/clock/Model.js` walks the grid from a midnight `Date` (`new Date(year, month, 1 - leading)`) and advances with `setDate(getDate() + 1)`. On the transition day, midnight doesn't exist, and the QML V4 engine resolves it *backwards* to 23:00 of the previous day, so `getDate()` returns the same day twice. From then on every cursor sits at 23:00 of the previous day.
Minimal repro in QML (`TZ=America/Santiago`):
```qml
var c = new Date(2026, 8, 3)
for (var i = 0; i < 6; i++) { print(c.getDate() + "@" + c.getHours() + "h"); c.setDate(c.getDate() + 1) }
// 3@0h 4@0h 5@0h 5@23h 6@23h 7@23h
```
The unit tests in `test/shell.d/clock-test.sh` don't catch this because they run under node, where V8 resolves the missing midnight forward to 01:00.
**Suggested fix**
Anchor the cursor at noon so no DST transition can move it across a day boundary:
```diff
- var cursor = new Date(year, month, 1 - leading)
+ var cursor = new Date(year, month, 1 - leading, 12)
```
I tested this locally in a cloned plugin: September 2026, April 2026 (DST end), and September 2027 all render correctly in the QML engine.
Screenshot attached.
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
- Fixed bypr/12943· confirmed
- Fixed bypr/10476· confirmed
- Fixed bypr/13186· confirmed
- Fixed bypr/13751· confirmed
- Fixed bypr/13096· confirmed
- Fixed bypr/13127· confirmed
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 17:42 UTC