Mihrab

com.prayer_times
by Zapstore _@zapstore.dev

Republished from GitHub / F-Droid by the Zapstore main account.

Mihrab keeps the five daily prayers close at hand: a calm home screen with the next prayer and a live countdown, optional adhan reminders, a full-month planner, and home-screen widgets. Key features: - Prayer times for today, the week ahead, and a full-month overview — shareable as an image or a PDF - Optional notifications for the five daily prayers, with seventeen adhan recordings or one of your own, pre-prayer reminders, and snooze - Pinned prayer countdown (Live Activity) on the lock screen and in the notification shade, in three designs - Home-screen widgets: prayer times in three sizes, today's log, Hijri date, streak, tasbih and reading - Qibla compass with signal strength and a cross-check against the sun - Quran reader: the Madinah mushaf drawn from the official page fonts, in four riwayat (Hafs, Warsh, Qalun, Shu'bah), with 13 translations and classical tafsir, 42 reciters, word-level highlighting, memorisation tools, bookmarks, and khatmah plans - Duas (Hisn al-Muslim), tasbih counter, fasting tracker, prayer journal with a practice graph and streaks, and nearby mosques - Hijri calendar with Ramadan, Eid and Jumu'ah treatments - Sync between your own devices with no account and no server: sealed files in a folder you already keep in sync - Backup and restore to a file you keep - GPS location, place search, saved places, or manual coordinates; per-prayer minute offsets - Several prayer-time sources — including the published national tables for Sweden and Morocco — or fully on-device calculation - 13 languages, including Arabic and Urdu with right-to-left layout - Light, dark, pure-black and system themes, your choice of accent, and Material You Privacy and network use: - No analytics, no trackers, no advertising, no account - Prayer times can be calculated entirely on your device once a location is set - Optional online features, used only when you choose them: prayer-time providers (AlAdhan, PrayTimes.dev, or the prepared national tables for Sweden and Morocco), place search via OpenStreetMap Nominatim, and downloading the Quran pages, translations, tafsir and recitation audio - Sync never passes through a server of ours, and what it writes is unreadable to anything but the devices you paired - Your coordinates are stored only on your device The app is open source under AGPL-3.0-or-later.

First release: Aug 4, 2026, 39 total releases.

Most recent release: Sep 26, 2026.

Repo

Appears in 0 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Sep 26, 2026 2.27.1
    **Full Changelog**: https://github.com/MihrabHQ/Mihrab/compare/v2.27.0...v2.27.1
  • Sep 24, 2026 2.26.0
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.25.1...v2.26.0
  • Sep 22, 2026 2.25.1
    ### New - **Word reader.** Hold a word in the muṣḥaf and nothing plays until you lift your finger — slide to another word on the page first if you like, and the highlight follows. Lifting reads that one word, in the reciter you pick for it. A recitation that was playing pauses for the word and carries on after. Off by default: Settings → Quran → Word reader, which offers only the reciters with word timings. - **The muṣḥaf's night page is true black** (#000), whatever the app's own theme is set to, so an OLED screen switches those pixels off. ### Fixed - **Sync no longer undoes khatmah reading done on your other device.** Pages read after a "continue from here" pin, an un-marked page or a rewind made on the other device could be rolled back on the next sync; a page turned while a sync was running could be lost; and two devices opening the same day before syncing could leave one with a stale portion marked "done". Each reading now keeps its own time, and a two-device fuzz test covers all of it. - **Khatmah by a date:** tomorrow's portion is marked where it will really end, and "Finish day N (tomorrow)" no longer appears under the ayah you just finished. Reading on past tomorrow's cut is credited again. - **Android with a system theme font (EMUI and others, #16):** the app draws its own text in its own Roboto, so a theme font can no longer squeeze labels and times into "04:…", and the ayah number is drawn as one glyph inside its rosette. - The riwāyah picker sits beside the back arrow in the muṣḥaf; in landscape the sūrah name is centred.
    More…
    ### Downloads - **`Mihrab-v2.25.1.apk`** — for GitHub and Obtainium: ARM only, with R8, about half the size of the F-Droid build, and no Google libraries. - **`Mihrab-macOS-2.25.1.zip`** — the Mac app (also `brew upgrade --cask mihrab`).
  • Sep 21, 2026 2.25.0
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.24.1...v2.25.0
  • Sep 20, 2026 2.24.1
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.24.0...v2.24.1
  • Sep 19, 2026 2.23.0
  • Sep 18, 2026 2.24.0
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.23.0...v2.24.0
  • Sep 16, 2026 2.22.0
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.21.1...v2.22.0
  • Sep 14, 2026 2.21.1
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.21.0...v2.21.1
  • Sep 14, 2026 2.21.0
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.20.0...v2.21.0
  • Sep 13, 2026 2.20.0
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.19.0...v2.20.0
  • Sep 11, 2026 2.18.5
    **Continue reading lands on the ayah — and reading has a trail of its own** (#41). Returning to a position past the first screen opened the surah at the top: the rows load after the list mounts, so the scroll was asked for before there was anything to scroll. It is asked for again until the row exists, and nothing is recorded until you have actually arrived. Behind that was the larger fault — one marker for two habits, so an evening in the khatmah erased the afternoon's place in Al-Kahf. There are two trails now, each with its own door on Today and on the Qur'an tab, and the reading marker has its own ayah-specific mark on the page that shows through a bookmark or the khatmah on an ayah carrying both. Long surah names no longer hide the verse reference. **The check asks what the moment leaves open** (#40). With the Mālikī second times on, a prayer whose first time has gone while its second still runs can only have been prayed in its time or after it, so those are the two answers offered. Once the whole window has gone — with those times or without them — all four statuses are there: on time, late, missed, make-up. Inside the window one tap still records it on time and asks nothing. **A tapped adhkār reminder opens the adhkār** (#39). The morning and evening reminders had carried the category they were for since the day they were written, and nothing read it. **A surah's recitation download survives the page it was started from.** It was owned by the ayah panel, so closing the panel cancelled it silently, and nothing about it ever reached the notification shade. It now has a progress notification naming the surah and the voice, a line across the top of the Qur'an with a Cancel, and a word when it lands. The shade keeps up with the count instead of running seconds behind it. **Surah names in calligraphy are set to one weight**, and a permission notice at the top of Today clears the status bar and the camera.
    More…
    Full detail in `CHANGELOG.md`.
  • Sep 9, 2026 2.18.4
    ### Changed - **A day bar under the sky, and the way through the week.** The line that named the day is now how you move between days: a drawn chevron at each edge steps one day, the day itself sits between them in both calendars, and once the table has been turned off today that block is the way back — a word in the accent rather than a tinted pill, because nothing else on this page is in a box either. The arrows are ink with a generous hit slop, not glyphs in a circle. - **On a tablet held upright, the hero stops growing.** The phone's rule handed the sky six hundred points of empty middle and put the hero's white status-bar ink over the page's cream margin. Past that size the sky takes a measured height as an inset panel, the status bar takes the page's own ink, and the whole day — hero, day bar, rows, Quran row — centres itself on the page. - **Every store, the site and the README shot again from this build.** Google Play (phone and tablet), the App Store (iPhone and iPad), F-Droid, the feature graphic, the GitHub hero and the gallery in all thirteen languages. Android 268 · iOS/macOS 2.18.4.
  • Sep 9, 2026 2.18.1
    **Today is one screen.** No scrolling, and behind the countdown a sky that follows the day — night with the moon in its phase, dawn, noon, sunset, dusk — drawn from the clock rather than the theme, with every line inked light or dark by the sky behind it. A check beside each prayer logs it with one tap. **The Quran, redrawn.** Surah names in the muṣḥaf's own calligraphy throughout; Tilāwah is a player — continue, play, next, shuffle; the reader goes fullscreen; and the page's tone can follow the app's theme. **Android widgets that hold.** A new Mihrab · Sky widget — the Today hero on the home screen — and every widget now draws one variant per size the launcher offers, fails as a Mihrab card rather than the launcher's error, and redraws once per launch instead of ten. Fixes #31. **And the rest of the redesign:** quieter chrome, one voice of colour, no title bars on the tabs, the Log on one screen, dua categories as pages, the Qibla screen as an instrument. The full list is in [CHANGELOG.md](https://github.com/Hassan-PS/Mihrab/blob/main/CHANGELOG.md).
    More…
    **Downloads:** `app-fdroid-release.apk` for Android, `Mihrab-macOS-2.18.1.zip` for macOS (notarized; `brew upgrade --cask mihrab` if you have the tap).
  • Sep 8, 2026 2.18.0
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.17.1...v2.18.0
  • Sep 7, 2026 2.17.1
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.17.0...v2.17.1
  • Sep 6, 2026 2.17.0
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.16.0...v2.17.0
  • Sep 5, 2026 2.16.0
    Downloading a reciter moves to where you choose one, and the home-screen practice graph is rebuilt around the card it is drawn on. ## Changed - **The reciter download lives on the reciter list now.** Tilāwah carried a card under the transport — "Keep Abu Bakr Ash-Shatri on this device", a size, a button — which described exactly one reciter: the selected one. So "which voices do I have offline?" was a question about forty-two reciters that could only be answered by selecting each of them in turn and reading the card again, and the card sat between the player and the surah list on every visit whether anything had ever been downloaded or not. Each row in the picker now says what it holds — "377 of 6236 ayahs here · 93 MB", or "Complete · 1.2 GB" — and offers the one verb that fits: download it, stop downloading it, or delete it. Never two of the three. Deleting is two taps: the trash turns into a red "Delete" that has to be pressed again, because a gigabyte is too much to lose to a mis-tap and a confirmation dialog opened from inside a modal sheet is not reliably drawn on Android. - **The practice graph on the Android widgets.** Bigger squares, flush to both edges of the card, drawn at the device's own resolution, and focused on the recent weeks rather than the last six months. It reads down its columns, the way the Log screen's heatmap does, so the two pictures of one record no longer need two reading directions.
    More…
    - **Resizing a widget changes how many rows of it you see, not how big it is.** Drag the card shorter and it loses a row; drag it taller and it gains one, from a single row upward, with the squares the size they always were. The Log card spends its date line on the graph when there is one — both of its facts are said again below it — which is what pays for the first row. - **The band between the times and the graph** is one line on both cards, centred between its two rules, and the same on each. - **The Maliki second times, Tilāwah, fasting and the ḥifẓ tools** are now shown on the site and the README, in all thirteen languages. Every screenshot was retaken. --- **Android:** the F-Droid APK is attached; Play is updated separately. **macOS:** `Mihrab-macOS-2.16.0.zip` is attached, or `brew install --cask hassan-ps/tap/mihrab`.
  • Sep 4, 2026 2.15.0
    Tilāwah: the Qur'an as something you put on. Plus the Mālikī second times answering what was actually asked for, morning and evening adhkār, and a 12-hour clock. ## Added - **Tilāwah — listening, as its own page.** The reader already played audio, but only ever the passage in front of you, and only until that surah ended. Listening is a different act: put a recitation on in the car or at night with the screen off and it runs surah into surah, from the lock screen, without the app open or even alive. Pick a reciter, start anywhere, scrub by ayah or by surah, set a speed or a sleep timer, and follow along on a live preview of the muṣḥaf page with the recited word lit. Downloads share the reader's own folder, so a reciter fetched for a flight makes play-from-here work offline in the same act. - **Morning and evening dua reminders.** In the windows the adhkār themselves name — after Fajr before sunrise, after ʿAṣr before sunset. There is no time to choose, deliberately: those windows move with the sun by hours over a year, so the app works the time out from the day's own prayer times instead of asking anyone to keep a clock preference in step with the seasons. - **The Mālikī second times (ikhtiyārī / ḍarūrī), from *Al-Murshid al-Muʿīn*** — #19. Each prayer's preferred window and where it closes, computed on the device from your coordinates whichever source your times come from, with the two that are a model of a colour marked as approximate. Announce any of them, and — new — be told when a prayer becomes qaḍāʾ. Showing them and announcing them are separate decisions, because the reporter wanted the second without the first. - **A 12-hour clock** — #18. Settings → Appearance → Time format: Automatic, 12-hour or 24-hour. Automatic follows the device's own switch; an explicit choice overrides both it and the app language. Every surface that prints a time follows it. - **Each prayer decides how it speaks** — adhan, plain notification, or silent, a row at a time. - **The player travels with you.** A bar under the title bar on every screen while something is playing: what it is, a progress bar for the surah, and a way to pause it or open Tilāwah without finding the tab again.
    More…
    ## Changed - **Settings is an index of seven sections**, not twelve cards in one scroll, and each long page is split into sub-pages that carry their own explanations. - **The remote next/previous move by surah.** A track is one ayah, so the lock screen, the media keys and a headphone button used to advance six seconds at a time — 286 of them to leave Al-Baqarah. - **Titles are centred on both platforms**, sub-pages and tabs alike. - **The Moroccan timetable is refreshed** from the Ministry of Habous. - **The player costs almost nothing while nobody is looking.** Position polling, the word-highlight probe and the page preview all stop when the app is backgrounded or the page is off screen; the JS thread went from 21% to below the measurable floor with audio playing in the background. ## Fixed - **The home-screen widgets were cutting off their last line.** The prayer strip lost its next-prayer countdown and Log Today lost its footer, squeezed to a few points of half-drawn text on any phone whose launcher row is about 147dp. The height budgets were measured before `widget_card_inset` gave every card a 6dp gutter, and nothing told them the layout had lost 12dp. - **The Mac shows what is playing.** `MPNowPlayingInfoCenter.playbackState` is optional on iOS and required on macOS, and the audio library never set it — so a Mac Catalyst build published a complete Control Center entry that macOS discarded. - **The keep-awake toggle holds the Mac's display awake.** It set the iOS idle timer, which macOS ignores. - **Cards no longer sit flush against each other** on the duas, fasting, backup, sync and Qur'an-download pages. --- **Android:** the F-Droid APK is attached; Play is updated separately. **macOS:** `Mihrab-macOS-2.15.0.zip` is attached, or `brew install --cask hassan-ps/tap/mihrab`.
  • Sep 3, 2026 2.14.3
    The muṣḥaf reads right. **Twenty pages were drawing some words in the wrong face.** Pages 120–122, 145, 531–533, 564, 567, 569, 575, 583, 586, 588, 590, 592, 593 and 598–600 had page fonts that were cut short of their own pages, so the words the font lacked fell back to the system's Arabic face and came out as rows of meaningless letter pairs — "له مج مح مخ" at the foot of Al-Qalam, an ayah of Al-Aʿlā turned into "هي يج يح يخ يم يى". The fonts are rebuilt from the layout the reader actually draws, so the two cannot disagree again, and Mihrab now checks the fonts on your device against a manifest and quietly replaces any that are wrong — no re-download of the muṣḥaf. **The bottom of a line is no longer cut off.** The calligraphy reaches further past the baseline than the fonts' metrics claim, and both platforms keep only what falls inside a line's box. Every line now has room for its ink. **Turning the phone keeps the page.** Rotating on a page past the middle of the muṣḥaf could land you hundreds of pages away, and rotating back kept you there. **The page rail is rebuilt.** It follows your finger instead of dragging the whole reader along with it, names the surah and juz under your thumb, marks the thirty ajzāʾ, and slides up for finer control — half, a quarter, a tenth — so one page out of 604 can be chosen on purpose.
  • Sep 3, 2026 2.14.2
    The muṣḥaf, mostly: it opens faster, it follows the reciter, and it reaches the edges of the screen. **Added** - A tap on a word opens its ayah — translation, tafsir, bookmark, recitation, khatmah position — with fullscreen moved to the margins and the header strip. - A sepia page, between paper and night. - The recited word lights up on the page, and in landscape the column follows it down as the recitation goes. - Reading starts the moment the download does: pages arrive as their fonts do, with a slim line saying how the rest is going. - A page rail on phones, so getting to juz 20 is not three hundred swipes. **Fixed**
    More…
    - The word highlight works on Android. The timing file is fetched over a transport that works on every network, and a failed fetch is retried rather than believed for the life of the app. - The page reaches the bottom of the window: the mini player was being reserved twice, and the Android navigation bar now takes the page's own colour. - Turning the phone shows one page, not two. - On iPhones with a Dynamic Island the surah name and the tone pill sit either side of the cutout, the ayah sheet clears it in landscape, and an ayah can be selected in fullscreen at all. - Under Liquid Glass the tab bar has its icons back. - The khatmah advances from a pinned ayah or the day's done button, not only from reading at its frontier. - Automatic location and saved locations are not alternatives any more. - The monthly sheet names the place instead of printing coordinates.
  • Sep 2, 2026 2.14.1
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.14.0...v2.14.1
  • Sep 2, 2026 2.14.0
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.13.8...v2.14.0
  • Sep 1, 2026 2.13.8
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.13.7...v2.13.8
  • Aug 30, 2026 2.13.7
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.13.6...v2.13.7
  • Aug 30, 2026 2.13.3
  • Aug 30, 2026 2.13.6
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.13.5...v2.13.6
  • Aug 29, 2026 2.13.4
    **Full Changelog**: https://github.com/Hassan-PS/Mihrab/compare/v2.13.3...v2.13.4
  • Aug 29, 2026 2.13.0
  • Aug 28, 2026 2.13.1
    ### The adhan can be an alarm now **Android.** Settings → Notifications → *Play adhan as an alarm*. It uses the alarm volume, so the adhan is heard even when the phone is on silent or vibrate. Asked for in [#9](https://github.com/Hassan-PS/Mihrab/issues/9), and the report was right about the fix. A notification channel plays its sound with `USAGE_NOTIFICATION`, which Android routes to the notification stream — the stream the ringer switch silences. Working as designed, and useless to someone who silences their phone and still wants to be called to prayer. `USAGE_ALARM` goes to the alarm stream instead, which the ringer does not touch. Off by default: it is louder than what you agreed to when you turned notifications on. It applies to the **call to prayer only** — Sunrise, the night times, and an adhan you have explicitly muted all keep obeying a silenced phone — and it does not override Do Not Disturb. Not on iPhone or iPad. iOS notification sounds obey the physical silent switch, and only Apple's Critical Alerts entitlement overrides that. A switch that quietly did nothing there would be worse than its absence.
    More…
    ### Widgets stop going stale - **The Log widget updates when you log a prayer.** Every widget kind but the prayer-times ones is only ever redrawn when the app asks, and the Log widget was the one kind the app forgot to ask — so it kept the previous day's numbers until something unrelated woke it. - **On Mac, widgets and their gallery previews no longer freeze at the version you upgraded from.** Replacing the app invalidates WidgetKit's archived timelines, every reload then fails, and it does not recover on its own — cards were observed still drawing pre-upgrade data a day later, retrying hourly. Homebrew now restarts the widget daemon after installing, which clears it. ### The Quran turns pages the way the book does `←`, `A` or `H` for the next page; `→`, `D` or `L` to go back. The mushaf is read right to left, so *left is forward* — the page images, a swipe and the "next" chevron all already agreed on that, and the keyboard was the only part of the app claiming otherwise. Up and down are unbound, so they scroll a page taller than the window. ### Fixed - Dynamic colour is gone from the widget's own settings screen, not just from the drawing. It was still offered there, above a hint telling you to pick it, and picking it did nothing. - When the app follows your system colours, the widget's own colour now has a picker under Settings → Home screen widget. Turning system colours on used to hide the only control that set it. - Previous, Reset and Skip on the Tasbih page are off the navigation bar. --- **Android:** `Mihrab-v2.13.1-fdroid.apk` below (also on F-Droid and Google Play). **macOS:** `Mihrab-macOS-2.13.1.zip` below, or `brew upgrade --cask mihrab`. **iPhone / iPad:** App Store.
  • Aug 26, 2026 2.11.0
    The app does considerably less when you are not looking at it, and three things that were quietly wrong are not any more. ### Less power in the background Measured on a Pixel 10 Pro: the work the app does across a spell in the background fell from **5.83 s of CPU to 0.29 s**. - **The prayer countdown is drawn by Android, not by Mihrab.** The Live Activity used to be rebuilt once a second while the screen was on, purely to move the seconds along — a full notification post, 3,600 times an hour. Android has always been able to tick a timer itself, and now does. Mihrab posts once and lets the platform count. - **Timers stop when nothing is looking at them.** The Home screen's countdown kept running on navigation focus, which is not the same thing as being on screen — the app could be fully in the background and still ticking. - **The compass hands the magnetometer back.** It was held for as long as the app lived, not for as long as the compass was visible. A sensor registration survives the app being frozen, so this one cost power even while nothing was running. - **One unlock, one widget refresh.** Nine receivers each woke on `USER_PRESENT` and each fanned out a widget update. There is now one, and it does nothing at all when no widget is placed.
    More…
    - **A smaller alarm inventory, and a foreground pass that checks whether anything actually changed** before redoing the expensive work. - **The Wi-Fi backfill no longer pulls a year of prayer times into someone's pocket.** ### Fixed - **The Log will un-log a sunnah prayer, and it stays un-logged.** Clearing one removed it locally and then a paired device put it straight back — for ever, because the removal reached the merge as an *absence* and absence read as "no opinion". A cleared day is now a fact with a time on it, so it can outrank an older count. The notification's log button was also refilling counts you had deliberately cleared. - **A crash when Android restores the app from saved state.** Returning to Mihrab after the system had killed it in the background, or changing the system language or font size, could take the whole process down before anything of ours ran. Fatal and uncatchable, and invisible in a debug session, which is how it survived this long. - **Sync says how old your other device's record is** — not when it last read its file. Nothing in a shared folder is ever deleted, so a peer's last file sits there for ever and is re-read every round. The screen therefore reported a device as "last synced a moment ago" while merging a snapshot from the previous afternoon, and a folder that had stopped carrying files looked exactly like one that was working. A round where every device's record is more than a day old now says so, and names the device and the date. ### Changed - **Settings is shorter.** The translation/tafsir choice was rendering the entire picker inline — both mode segments and every edition, grouped by language. It is now one row showing what is in force, opening the same sheet the Quran page uses. --- **Android:** `Mihrab-v2.11.0-fdroid.apk` below (also on F-Droid and Google Play). **macOS:** `Mihrab-macOS-2.11.0.zip` below, or `brew upgrade --cask mihrab`. **iPhone / iPad:** App Store.
  • Aug 24, 2026 2.10.1
    Sync could not accept the folder people were most likely to pick. ### Fixed - **Choosing a Nextcloud folder — or any folder whose provider will not make a subfolder — no longer fails.** Mihrab asks for a `Mihrab` directory inside whatever you choose, purely to keep its file out of the way of yours. Plenty of providers refuse that while being perfectly happy to hold a file, and refusing the whole folder over it turned the most obvious choice — the synced folder you made for exactly this — into an error. It now writes into the folder you picked instead, and only stops you when nothing can be written there at all. - **A folder you already named `Mihrab` is used as it is.** Choosing one made a `Mihrab` inside your `Mihrab`, so your sync client watched one folder while the app wrote to another one inside it — sync doing nothing, from a folder whose name said it should be working. - **A folder that genuinely cannot be used says so in words.** The screen was showing the underlying failure verbatim: `java.io.FileNotFoundException: could not create a folder in there`, which names a Java class and tells nobody what to do. It now says which folders work. --- **Android:** `Mihrab-v2.10.1-fdroid.apk` below (also on F-Droid and Google Play).
    More…
    **macOS:** `Mihrab-macOS-2.10.1.zip` below, or `brew upgrade --cask mihrab`. **iPhone / iPad:** App Store.
  • Aug 21, 2026 2.9.1
    The widgets tell the truth again — including while the app is closed. - **Widgets update without the app open.** The cards were only written while one particular screen was on the phone, so a prayer logged from a notification, a tasbih counted on the widget itself, or simply a new day arriving could leave every card on old numbers. They are now written from the app's own records, whatever you happen to be looking at, and refreshed together. - **A card that has run out of times says so** and asks you to open the app, instead of redrawing the last day it knew under today's date. - **The practice graph in the widget is the app's calendar.** It was filling squares in the order days arrived rather than by date, so one gap shifted everything after it. Weeks start on Monday now — widget, Mac and app alike — and days that have not happened are drawn empty rather than missed. - **Nothing is drawn outside the card.** The streak graph spilled past its own background at some sizes, and the count of prayers left to make up was pushed off the end of the line at the size most people use. - **On iPhone and iPad, one unfamiliar value no longer empties every widget.** All six shared a reader that gave up entirely on anything unexpected; a card now keeps what it could read. - **The picker shows each widget at the size it will actually be.** - **Widgets survive a restore to a new phone** — another device's pending taps and stale times are left behind.
    More…
    **Downloads** - `Mihrab-v2.9.1-fdroid.apk` — Android, arm64, no Google Play Services. Also on F-Droid and Google Play. - `Mihrab-macOS-2.9.1.zip` — Mac (Apple silicon), notarized. `brew install --cask hassan-ps/tap/mihrab`.
  • Aug 19, 2026 2.9.0
    Sunnah prayers, your own adhan, and an app that finally reaches the edges of the screen. ### Added - **The sunnah prayers.** The rawatib around each fard, logged beside it rather than instead of it: a prayer row now carries the fard and the sunnah that belongs with it, and the graph draws the sunnah as a line around the day's square instead of spending another colour on it. Only the ones whose time has actually come are offered, so Isha's sunnah is not asking to be logged at noon. "Log with sunnah" is on the notification too, for the times you answer the alert instead of the app. - **Your own adhan.** Pick any audio file on the phone and every prayer alert plays it. On iPhone the notification plays the first thirty seconds — Apple's limit, not ours — and the full recording plays when the app is open. The seventeen bundled adhans are all still there; this is an eighteenth row in the same list, with the file's name under it so you can see which one you chose. - **Export and import your whole record.** The old export carried settings only, which meant a new phone got your calculation method and none of your prayers. It is now the journal, the streaks, the fasts and the notes as well, in one file you can keep or move. - **The best streak, beside the current one.** A number that only ever goes down is discouraging by construction; the record you have already set stays on the screen next to it. - **Four stat tiles above the graph,** and a mode inside it that shows only what you owe — the days carrying a prayer you meant to make up later, which were previously buried in a green square.
    More…
    ### Changed - **The app draws to the edges of the screen.** Android has been enforcing this on new phones for a while and will stop offering the opt-out entirely; the app now does it everywhere, on purpose, instead of behaving one way on new devices and another on old ones. The tab bar floats over the page again, slightly see-through, so a list sliding underneath it tells you there is more to read without spending a line saying so. - **The system navigation bar and the app's own bar are one piece.** Behind the three-button navigation the band now matches the tab bar's material rather than being a solid slab, and on older Android it looks like it does on new Android. - **Every prayer row speaks one language.** The controls on a row had drifted into three different ways of saying the same thing depending on where you tapped. - **The practice graph's colours are a real scale.** The five shades were picked by eye and two of them were nearly the same; they are now an even ramp, so four prayers and five look as different as one and two. - The tip jar is gone, everywhere. ### Fixed - **The streak no longer reads zero every morning.** It counted today as a broken day from midnight until the first prayer went in, so the number you woke up to was wrong every single day. - **The graph opens on today, in every language.** In Arabic, Urdu, Persian and Hebrew it could open on an unrelated month and make you scroll back — and dragging towards this week was read as reaching for more history, which then shoved the view sideways. - **Nothing sits under the navigation bar any more.** The last row of every picker in Settings — the language list, the alert sounds, the calculation methods — was half under the system navigation bar and could not be tapped. On Android the buttons were being drawn over the app, because the bar reports itself as half the height it actually paints. - **"System" appearance follows the system.** The app asked a copy of the setting that can lag behind, and a light/dark switch that happened while the app was in the background could leave it on yesterday's answer. - **The widget stops going blank** when its schedule runs out — it now carries a month of prayer times instead of a few days. - **871 strings that were still English** in the other twelve languages are translated. - On Mac, the location chip sits in the column with the cards instead of floating over them.
  • Aug 14, 2026 2.8.10
    **Words were going missing from the mushaf. They are back.** A reader opened [#6](https://github.com/Hassan-PS/Mihrab/issues/6) to say that Surat An-Nisa was drawn wrong, and sent two screenshots. He was right, and it was not only An-Nisa — roughly one line in eight, on 603 of the 604 pages. ### Fixed - **The mushaf was dropping the last word of some lines.** The text and the fonts were never wrong: the layout data checks out on all 604 pages, and every line's advances agree with its page font to the sixth decimal. The renderer was asking phones to set those lines a little tighter than the space character it draws the word gaps with — and where that request went unheard, the line came out wider than the page it had been measured for, and the platform's single-line truncation took the last word off the end of it. The gap is now *made* narrow rather than *asked* to shrink, which no device can decline. Every line of all 604 pages is checked against this on every build. - **The graph scrolls the right way round in Arabic, Urdu, Persian and Hebrew.** The week columns mirror correctly; `contentOffset.x` does not. So "near zero" meant "the oldest week" in English and "today" in Arabic: the graph opened parked two years back, dragging towards this week read as reaching for more history, and the history that arrived shoved the view sideways. - **Quran files left behind by an update are cleared out.** Up to ~120 MB of page images from the reader that 2.8.0 replaced could sit on disk indefinitely — they were only swept if you started a font download from inside the reader. They go at launch now. The page fonts also record which release filled them, so a corrected font reaches every reader rather than only new installs.
    More…
    --- **Downloads** | Channel | | |---|---| | Google Play | [Mihrab](https://play.google.com/store/apps/details?id=com.prayer_times) | | App Store | [Mihrab](https://apps.apple.com/app/id6752497422) | | F-Droid | [com.prayer\_times](https://f-droid.org/packages/com.prayer_times/) — built by F-Droid from this tag | | Direct APK | `Mihrab-v2.8.10-fdroid.apk` below (arm64) | | macOS | `Mihrab-macOS-2.8.10.zip` below, or `brew install --cask hassan-ps/mihrab/mihrab` |
  • Aug 13, 2026 2.8.9
    The Log, made to work the way people were already trying to use it. **Fixed** - **The "Log prayer" button on a prayer notification actually logs the prayer.** It had been on every alert for three versions and wrote nothing: the only code listening for it lived on the Log screen, and someone pressing a button on a notification is not looking at the Log screen. With the app closed it did nothing at all. It now records the prayer from the background, and the alert carries the day it is for — so an Isha answered after midnight credits the evening it belonged to. Pressing it twice cannot overwrite a status you set deliberately. - **The evening prompt no longer asks about a day you have already finished logging.** - **The graph scrolls on the first try, and on the Today screen at all.** The first drag used to be yanked sideways by the journal finishing loading underneath it; on Home the card had become one large button, and a press target wrapped around a scrolling grid fights it for every gesture. - **The Today screen lists only what you have actually logged**, instead of reading "0 of 5 prayers logged · No fast recorded · 0 dhikr sets completed" at seven in the morning. **Added** - **Swipe the day panel** to move between days; the arrows stay for one day at a time. Forward still stops at today.
    More…
    - **"Fill in earlier days" and "Fill the past three months".** The first fills from the install date to yesterday; the second reaches further back and only ever writes to days holding nothing at all — no status, no note, no fast. Both ask first, showing the exact number of days, the exact range, and how many days are being left untouched. Today is never filled. - **A day that owes a prayer is marked on the graph**, so a prayer you plan to make up can be found again. **Install** - Android: the APK below, or [F-Droid](https://f-droid.org/packages/com.prayer_times/). - macOS: `brew install --cask hassan-ps/tap/mihrab` — or `brew upgrade --cask mihrab`.
  • Aug 10, 2026 2.8.8
  • Aug 5, 2026 2.8.7
  • Aug 4, 2026 2.8.6