SALAH — prayer times for Casablanca (Xiaomi Watch S4)

Offline prayer-time companion: shows today's six times (FAJR, SHURUK, DHUHR, ASR, MAGHRIB, ISHA) with the next prayer highlighted and a countdown banner.

Status: VERIFIED MATH (matches AlAdhan on 3 reference dates); on-watch render pending user confirmation.

Method

Morocco (Ministry of Habous), matching AlAdhan method=21:

  • Fajr 19°, Isha 17° (twilight angles)
  • Standard Asr (shadow factor 1× — Maliki default in Morocco)
  • Dhuhr = solar noon + 5 min; Maghrib = sunset + 5 min (AlAdhan's baked offsets)
  • Location hardcoded: Casablanca 33.5731, −7.5898 · TZ = UTC+1 year-round (Morocco dropped DST in 2018)

All computation happens on the watch — no GPS, no network. Pure solar math (same Meeus approach as the sundial) lives in src/common/prayer.js.

Screen

  • Header: CASABLANCA + current clock
  • Purple banner: next prayer name + countdown (1h 55m, +1d … wraps past midnight)
  • Six chord-tapered rows: widths [380, 412, 424, 406, 368, 304] px computed from the circle chord at each row's position (fixed-width rows clipped off the disc in the first layout — asserted numerically in tests now)
  • Passed prayers dimmed (opacity 0.45); next row purple-highlighted
  • 15s refresh

Project layout

src/
├── app.ux, manifest.json   # com.ilias.salah, watch, designWidth 466
├── common/
│   ├── prayer.js           # times/format/nextPrayer/formatCountdown — pure, unit-tested
│   └── icon.png            # 192×192 circular icon (user-supplied mosque art)
└── pages/index/index.ux    # layout + update loop
tests/
├── prayer.cjs              # 10 tests vs AlAdhan reference times (3 dates)
├── page.cjs                # 11 wiring/layout tests (incl. chord-fit assertions)
├── make_icon.py            # icon conversion pipeline (disc detect → round mask → 192²)
└── check-rpk.py            # verifies icon/manifest inside the built .rpk

Build & test

npm ci
npm run release
node tests/prayer.cjs
node tests/page.cjs

Install

Side-load dist/com.ilias.salah.release.*.rpk via AstroBox. Releases: https://gitea.oimcloud.myaddr.tools/codex-bot/vela-salah

Accuracy note

Verified against AlAdhan API (method 21) for 2026-09-09, 2026-01-15, 2026-07-01 — all six times within 2 minutes on every date. Tolerance covers the low-precision solar vector (±0.01°) plus rounding.

S
Description
SALAH — prayer times for Casablanca (Morocco method) on Xiaomi Watch S4
Readme
288 KiB
SALAH 0.6
Latest
2026-09-12 12:22:53 +00:00
Languages
JavaScript 76.8%
HTML 12.1%
Python 11.1%