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-154GitHub issuePublicFixed

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.

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

Clock calendar repeats a day and shifts weekdays in timezones with a midnight DST switch (e.g. America/Santiago)revision 1 · captured 2026-09-28 21:23 UTC via poll

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):

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:

-  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