Skip to content

v0.3.2

Latest

Choose a tag to compare

@github-actions github-actions released this 17 Jul 10:40
83acc69

Summary

v0.3.2 keeps your saved location fresh on its own. If you move between cities, the daemon now re-detects your coordinates once the stored ones age past a configurable interval, on Linux and Windows through one shared code path, instead of leaving you to re-run detection by hand.

The rest of the release is groundwork and repair: the non-Windows platform layer is split so a future macOS or BSD target can reuse the portable half, and the distro changelogs are corrected after three released versions turned out to be missing from them.

There are no breaking changes and no prayer time calculation changes in this release.

What changes

Location auto-refresh

Saved coordinates now carry a timestamp, and the daemon re-detects your location once they age past a set interval.

  • Location config gains updated_at and refresh_interval. Both are written to config.json and parsed back on load.
  • The default interval is 12 hours, with a hard floor of 1 hour. The floor is clamped on load, so a hand-edited config.json cannot set a value that would hammer the ipinfo endpoint.
  • updated_at is stamped on every successful ipinfo fetch, and staleness is decided by a pure location_is_stale() helper, which keeps the policy testable in isolation.
  • Linux and Windows share one code path rather than each carrying their own copy.

This fixes stale coordinates for anyone who travels or otherwise moves without re-running detection manually. Prayer times are still calculated fully offline; only the location lookup touches the network.

Platform layer split into posix/ and linux/

The non-Windows platform layer is now two folders instead of one, creating a seam for future targets.

  • src/platform/posix/ holds the portable code: XDG config, cache and home directory resolution, recursive mkdir, file open, exists and delete, atomic rename, localtime_r, isatty, realpath based file validation, and owner-only chmod, plus tzdb offset lookup and /etc/localtime resolution.
  • src/platform/linux/ is reduced to the single genuinely Linux-specific primitive, platform_native_exe_path(), which resolves the running executable through readlink("/proc/self/exe").

This only creates the seam. No second target is added, and there is no behavior change on Linux.

ARRAY_LEN helper

Array lengths that previously had to be kept in sync with their arrays by hand are now derived.

  • Adds include/util.h with ARRAY_LEN(arr).
  • Applied to the location display rows[] loop (previously i < 6) and the systemd units[] loop (previously i < 2), so adding or removing an entry no longer means editing a separate count. DISPATCH_N now routes through it instead of duplicating the sizeof formula.
  • Deliberately left alone: the fixed 7 prayer loops and their comma separators, the 4 hex digits in json.h (\uXXXX), and the display border column widths. prayertimes.h is untouched.

Packaging and maintenance

Distro changelogs repaired

Three released versions had no changelog entry at all, and the entries that did exist were mislabelled.

bump-version.sh rewrote the top changelog stanza's version header in place on every run rather than adding a stanza. That produced the right result only when a new stanza had already been hand-written above it. Run in any other order, it relabelled the previous release's body with the new version number, silently consuming the entry underneath.

The result was that 0.2.4, 0.2.5 and 0.3.0 never received an entry, and the two files disagreed about what 0.3.1 contained: the debian stanza labelled 0.3.1 actually described v0.3.0, while the fedora entry labelled 0.3.1 actually described v0.2.4. Both bodies were accurate, both carried the wrong version number, and each file had drifted a different distance.

  • The mislabelled entries are relabelled to the versions they actually describe and retimestamped to the real release dates.
  • The missing entries are reconstructed from the published release notes, with timestamps taken from each release's publish time.
  • bump-version.sh no longer touches either changelog. It still sets the fields it can genuinely derive: the spec Version and Release, the PKGBUILD pkgver and pkgrel, and the regenerated .SRCINFO. It now prints both changelog headers preformatted, including the RFC-2822 date, so the timestamp format can be copied rather than typed.
  • check-versions.sh no longer gives advice that cannot work for debian/changelog. Because debian has no Version field, its changelog is the version source, so a bump now fails the check until the stanza is written. That failure is intentional: a reminder in place of a silent overwrite.
  • Two changelog dates named a weekday that did not match the date itself and are corrected: 25 Feb 2026 is a Wednesday, not a Tuesday, and Apr 03 2026 is a Friday, not a Thursday. This is the same class of defect that once failed a Launchpad build at dh_installchangelogs.

Other

  • Fedora package description rewritten; it previously described a Linux-only tool.
  • Discord webhook notifications for issues, pull requests and discussions.
  • README support statement revised, and documentation formatting fixes for readability.

Installation

Linux. The tarballs are dynamically linked, so install libnotify and libcurl from your distro first, then extract:

  • x86_64: muslimtify-0.3.2-linux-x86_64.tar.gz
  • aarch64: muslimtify-0.3.2-linux-aarch64.tar.gz

Windows. Run the installer for your architecture:

  • x64: muslimtify-0.3.2-setup-x64.exe
  • arm64: muslimtify-0.3.2-setup-arm64.exe

For distro-native installs (Fedora COPR, Debian PPA, AUR) see the README.

Verifying downloads

sha256sum -c SHA256SUMS

Upgrading

No manual steps. There are no breaking changes from 0.3.1, and config.json gains its new location fields automatically on next load, with defaults applied.

What's Changed

  • create discord webhook and update aur by @rizukirr in #39
  • fix: discord webhook by @rizukirr in #41
  • refactor: split platform layer into posix/ and linux/ by @rizukirr in #42
  • Revise project support statement for Mac users by @rizukirr in #43
  • docs: fix formatting by @rizukirr in #44
  • feat: cross-platform location auto-refresh with configurable interval by @rizukirr in #45
  • refactor: add ARRAY_LEN helper and replace hardcoded array lengths by @rizukirr in #46
  • chore: prepare v0.3.2 and repair the packaging changelogs by @rizukirr in #47

Full Changelog: v0.3.1...v0.3.2