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

Clock calendar popup misaligned by one day after DST spring-forward (America/Santiago)

Reported by axelgalea · filed Sep 10, 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 popup misaligned by one day after DST spring-forward (America/Santiago)revision 1 · captured 2026-09-28 21:23 UTC via poll

Clock calendar popup misaligned by one day after DST spring-forward (America/Santiago)

System details

  • Omarchy: 4.0.3-1
  • Quickshell: 0.3.1 (Arch package)
  • Kernel: 7.2.3-arch1-3
  • Timezone: America/Santiago (DST active, -03)
  • Widget: omarchy.clock (stock bar widget / calendar panel)

What's wrong

In a timezone where DST starts at midnight — Chile's DST began Sunday 2026-09-06 at 24:00, so local midnight of Sep 6 does not exist — the clock panel's month grid is shifted one column to the right for the rest of that month. September 10, 2026 (a Thursday) renders in the FRI column, and the bar simultaneously (and correctly) shows "Thursday".

Screenshot shows the giveaway: the first week row reads 31 1 2 3 4 5 5 — the 5 is duplicated and the 6 is missing. Every subsequent cell is then one weekday off, while the today-highlight (keyed by date, not column) lands on "10 under FRI".

Root cause

plugins/panels/clock/Model.js, monthGrid() steps a day cursor forward with:

var cursor = new Date(year, month, 1 - leading)
...
cursor.setDate(cursor.getDate() + 1)

When the cursor sits on the nonexistent local midnight of the DST spring-forward day, Quickshell's JS engine resolves setDate backwards (to the previous day 23:00) instead of forwards to 01:00. getDate() then returns the previous day again, producing the duplicate cell, and every later cell inherits a 23:00-based time that keeps the grid one day late relative to the header row.

Node (V8) handles the same loop correctly (Sat Sep 05 00:00 → Sun Sep 06 01:00 → Mon Sep 07 01:00), which is likely why the shell's clock tests pass — the engine under Quickshell behaves differently.

Expected

The grid should keep days aligned with the weekday headers across DST transitions, i.e. 31 1 2 3 4 5 6 for the first row of September 2026 with a Monday week start, putting the 10 under THU.

Suggested fix

Do date arithmetic in UTC or via explicit field arithmetic instead of local-midnight stepping, e.g. compute cells from Date.UTC day offsets, or guard the step with cursor = new Date(year, month, dayOfCell) per index rather than mutating one cursor across the gap.

Steps to reproduce

  1. Set system timezone to America/Santiago during September 2026 (after the Sep 6 24:00 DST start).
  2. Click the bar clock to open the calendar popup.
  3. Observe the first week row: duplicate day number, and today's highlight one weekday to the right of the correct column.
View raw text
# Clock calendar popup misaligned by one day after DST spring-forward (America/Santiago)

## System details

- Omarchy: 4.0.3-1
- Quickshell: 0.3.1 (Arch package)
- Kernel: 7.2.3-arch1-3
- Timezone: America/Santiago (DST active, -03)
- Widget: `omarchy.clock` (stock bar widget / calendar panel)

## What's wrong

In a timezone where DST starts at midnight — Chile's DST began **Sunday 2026-09-06 at 24:00**, so local midnight of Sep 6 does not exist — the clock panel's month grid is shifted one column to the right for the rest of that month. September 10, 2026 (a Thursday) renders in the **FRI** column, and the bar simultaneously (and correctly) shows "Thursday".

Screenshot shows the giveaway: the first week row reads `31 1 2 3 4 5 5` — the **5 is duplicated and the 6 is missing**. Every subsequent cell is then one weekday off, while the today-highlight (keyed by date, not column) lands on "10 under FRI".

## Root cause

`plugins/panels/clock/Model.js`, `monthGrid()` steps a day cursor forward with:

```js
var cursor = new Date(year, month, 1 - leading)
...
cursor.setDate(cursor.getDate() + 1)
```

When the cursor sits on the nonexistent local midnight of the DST spring-forward day, Quickshell's JS engine resolves `setDate` backwards (to the previous day 23:00) instead of forwards to 01:00. `getDate()` then returns the previous day again, producing the duplicate cell, and every later cell inherits a 23:00-based time that keeps the grid one day late relative to the header row.

Node (V8) handles the same loop correctly (`Sat Sep 05 00:00 → Sun Sep 06 01:00 → Mon Sep 07 01:00`), which is likely why the shell's clock tests pass — the engine under Quickshell behaves differently.

## Expected

The grid should keep days aligned with the weekday headers across DST transitions, i.e. `31 1 2 3 4 5 6` for the first row of September 2026 with a Monday week start, putting the 10 under THU.

## Suggested fix

Do date arithmetic in UTC or via explicit field arithmetic instead of local-midnight stepping, e.g. compute cells from `Date.UTC` day offsets, or guard the step with `cursor = new Date(year, month, dayOfCell)` per index rather than mutating one cursor across the gap.

## Steps to reproduce

1. Set system timezone to `America/Santiago` during September 2026 (after the Sep 6 24:00 DST start).
2. Click the bar clock to open the calendar popup.
3. Observe the first week row: duplicate day number, and today's highlight one weekday to the right of the correct column.

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 11:25 UTC