muslimtify (0.4.4-1) unstable; urgency=medium

  * "daemon status" now prints Installed, Enabled and Running lines and exits 0 only when the daemon is running, replacing the systemctl status output
  * Turning GPS on now turns location auto-detect on, and hand-set coordinates turn both off
  * Write timezone_offset, fajr_angle and isha_angle to the config with six decimals, so a 5.75 offset no longer becomes 5.8
  * A stop signal now cuts a playing adhan, so stopping the daemon no longer gets it killed and the prayer notified again
  * Rebuild the day's notifications when a location refresh moves the location, and wait ten minutes before retrying a failed refresh
  * Quote the daemon program path so an install path with a space works, for the systemd unit and the Windows scheduled task
  * Fix "method --auto" replacing hand-set coordinates, and refuse "location set" with only one coordinate
  * Fix a JSON parser over-read on a truncated document and a config value equal to a key name being lost on save

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Sat, 17 Oct 2026 11:41:20 +0700

muslimtify (0.4.3-1) unstable; urgency=medium

  * Add "timeformat 12|24" to print prayer times in a 12-hour or 24-hour clock, stored as display.time_format in the config
  * Fix a NaN latitude or longitude passing validation in config and "location set", which produced a believable but wrong schedule
  * Blank the prayer times and warn on stderr when the saved location is invalid, instead of computing a schedule at the method's reference latitude
  * Re-run location auto-detect when the saved coordinates are invalid, so a broken config repairs itself like an unset one

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Mon, 28 Sep 2026 22:09:36 +0700

muslimtify (0.4.2-1) unstable; urgency=medium

  * Add show --day-offset to show the prayer times for a date relative to today
  * Fix config, location, CLI argument and DST countdown bugs

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Sun, 13 Sep 2026 18:51:02 +0700

muslimtify (0.4.1-1) unstable; urgency=medium

  * Drop sunrise and dhuha, following libmuslim cutting struct PrayerTimes down to the five prescribed prayers; both were disabled by default, and a config file still carrying a prayers.sunrise or prayers.dhuha block keeps loading but the block no longer has any effect
  * Fix a bogus notification being scheduled for a prayer that does not occur; upstream now reports no asr where the Sun casts no shadow, and converting that non-finite time to an int wrapped a reminder to minute 2147483618
  * Fix the countdown to the next prayer printing a garbage field when the prayer time is non-finite
  * Fix prayer time formatting rendering a negative minute field for an hour below zero, and hitting undefined behaviour on non-finite input
  * Pick up the per-method high-latitude rule from libmuslim; CALC_KEMENAG keeps exactly the rule it had
  * Derive PRAYER_COUNT from the prayer enum so a loop bound cannot drift out of step with the arrays again
  * Move the vendored prayertimes.h to vendor/ and emit it from its own translation unit

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Thu, 20 Aug 2026 10:51:02 +0700

muslimtify (0.4.0-1) unstable; urgency=medium

  * Add a runtime GPS location toggle, "location gps on|off", with an automatic ipinfo fallback when no fix is available
  * Read GPS on Linux from gpsd over a bounded loopback socket, dropping the libgps build dependency so one binary uses GPS whenever gpsd runs
  * Read GPS on Windows via the WinRT Geolocator; the Windows build now requires MSVC and fails with a clear message otherwise
  * Report OS-denied location access as a warning instead of silently auto-disabling GPS
  * Show the GPS source state in the location views
  * Back the Windows timezone table with the full CLDR release-46 windowsZones mapping (449 entries) generated from vendored source
  * Fix prayer times being computed and displayed with a non-DST offset; the effective offset is now resolved for the target date
  * Reject nonexistent IANA timezones at set-time and from ipinfo, falling back to the stored offset instead of a wrong one
  * Fix prayer and reminder triggers being lost when a daemon cycle overruns; missed triggers now fire on catch-up
  * Fix an out-of-bounds read in the JSON parser on a value ending in a trailing backslash
  * Escape user-controlled strings written to the prayer cache, version the cache, and reject a malformed trigger object
  * Bound "show --date" to years 1..9999 and cap a range at 366 days, removing sscanf overflow undefined behaviour
  * Validate Windows paths with wide APIs so validation matches the UTF-8 open path, and reject reparse points
  * install.sh now builds as the invoking user instead of root, refuses a world-writable source tree, and neutralises control bytes in reported offender paths
  * Remove production-dead code (prayer_check_current, copy_wstring, country_table) and enforce country_internal.h as a test-only seam in CI
  * Build and test Linux aarch64 and Windows ARM64 on every push, not only at release

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Wed, 22 Jul 2026 11:46:02 +0700

muslimtify (0.3.2-1) unstable; urgency=medium

  * add ARRAY_LEN helper and replace harcoded array lengths
  * add cross-platform location auto-refresh with configurable interval

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Fri, 17 Jul 2026 15:56:06 +0700

muslimtify (0.3.1-1) unstable; urgency=medium

  * Rework "show --date" to accept a single date or an inclusive range, with full support in the table, --json, and --headless output modes
  * Validate input dates up front; reject malformed or out-of-order ranges with a clear error instead of emitting garbage
  * Fix "show --next" rollover after the last prayer of the day; the wrapped prayer's time is recomputed for the next day rather than reusing today's clock time
  * Rewrite the "show --date" help text to cover single-date and range behaviour
  * Ship the bundled adhan.mp3 inside the Fedora and Windows packages

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Mon, 13 Jul 2026 18:32:12 +0700

muslimtify (0.3.0-1) unstable; urgency=medium

  * Redesign the command-line into show/location/notification/method/madzhab verbs with --json and --headless output (breaking change)
  * Add per-prayer adhan audio with a bundled adhan and a cancellable notification, including a Windows toast Stop button
  * Add "offset <prayer|all> <minutes>" to shift individual prayer times
  * Harden security: TLS-only location fetch, timezone validation before setenv, 0600 config and cache files, adhan path checks
  * Remove the config and check commands; reset by deleting config.json

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Thu, 09 Jul 2026 14:50:07 +0700

muslimtify (0.2.5-1) unstable; urgency=medium

  * Fix the Windows silent install hanging on a network call, which failed winget validation with Validation-Unattended-Failed on the 0.2.4 manifest
  * "daemon install" now only registers the scheduled task and returns immediately; location and method are auto-detected lazily on the task's first run instead of during setup
  * Normalize mixed-slash paths during Windows install-time runtime-dependency resolution (CMake policy CMP0207)
  * Remove the unused MUSLIMTIFY_CMD_DAEMON_WIN_TEST guard and dead includes from the Windows daemon command

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Sun, 28 Jun 2026 06:25:20 +0700

muslimtify (0.2.4-1) unstable; urgency=medium

  * Replace the per-minute systemd timer with a long-running, self-scheduling daemon ("daemon run")
  * Ship the systemd user unit as a long-running Type=simple service with Restart=on-failure; remove muslimtify.timer entirely
  * Sleep in bounded, interruptible naps aligned to the top of each minute, so a suspend/resume or clock change cannot overshoot or skip a prayer
  * Handle SIGTERM/SIGINT for graceful shutdown instead of being killed mid-sleep
  * Disable and remove a leftover muslimtify.timer on install and uninstall; postinst calls "daemon install", so PPA upgrades self-heal with no manual steps
  * Keep "muslimtify check" working unchanged for manual runs or custom scheduling
  * Add unit tests for the systemd unit builder and the loop sleep interval

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Sat, 27 Jun 2026 21:21:32 +0700

muslimtify (0.2.3-2) unstable; urgency=medium

  * Fix the 0.2.1-1 changelog timestamp (full month name "April" -> "Apr")
    so dh_installchangelogs can parse it; the 0.2.3-1 Launchpad build failed
    at that step with "Could not parse timestamp".

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Wed, 27 May 2026 07:55:11 +0700

muslimtify (0.2.3-1) unstable; urgency=medium

  * Add unified 'config auto' command that auto-detects both location and calculation method
  * Merge calculation method into the country master table; share config_auto_detect helper with daemon install
  * Remove the separate 'location auto' and 'method auto' subcommands (replaced by 'config auto')
  * Add --country=<code> flag to 'location set' with ISO 3166-1 alpha-2 validation
  * Fix Windows CI by disabling optional curl dependencies
  * Bump bundled curl to 8.20.0
  * Silence Windows build warnings
  * Align CLI help text with actual subcommand behavior

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Tue, 26 May 2026 09:13:55 +0700

muslimtify (0.2.2-2) unstable; urgency=medium

  * Rebuild for Ubuntu 26.04 (resolute).

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Tue, 12 May 2026 19:59:55 +0700

muslimtify (0.2.2-1) unstable; urgency=medium

  * Fix timezone offsets by using system tzdb instead of a hardcoded table; honors DST and historical zone changes (closes #11)
  * Add Win32 timezone implementation with CLDR-derived IANA-to-Windows mapping (DST-aware)
  * Add --timezone=<iana> override flag to 'location set' for cross-region use
  * Add get_system_timezone helper (Linux: /etc/localtime; Windows: dynamic time-zone reverse lookup)
  * Clear stale city/country and refresh timezone on 'location set'
  * Stop auto-filling city from ipinfo; add --city=<name> flag for explicit user labels
  * Prefer Asia/Jakarta over Asia/Bangkok for SE Asia Standard Time
  * Add 'sound' command with reminder/alarm/default presets (libnotify + WinRT toast)
  * Refactor source tree into src/{core,cli,platform}/ subdirectories
  * CI: enforce non-empty test suites on Windows; fix curl FetchContent leaking BUILD_TESTING=OFF

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Tue, 12 May 2026 19:33:55 +0700

muslimtify (0.2.1-1) unstable; urgency=medium

  * Auto-detect location and method on daemon install
  * Bug fixes and improvements

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Thu, 02 Apr 2026 05:41:00 +0700

muslimtify (0.2.0-1) unstable; urgency=medium

  * Add full Windows support for Muslimtify, including toast notifications with icon, Task Scheduler daemon, service helper, install/uninstall scripts, and Inno Setup installer for winget distribution
  * Add 23 international prayer time calculation methods (MWL, Makkah, ISNA, Egypt, and more)
  * Add muslimtify method command for calculation method management
  * Add fajr_angle/isha_angle config fields for custom method parameters
  * Display full method name in config output
  * Add platform abstraction layer (Linux/Windows)
  * Extract shared check cycle, decouple from CLI
  * Route display, persistence, and system calls through platform layer
  * Downgrade from C23 to C99 for MSVC compatibility
  * Add comprehensive multi-method validation (~108 data points)
  * Add unit tests for json.h, platform boundary, and Windows components

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Fri, 27 Mar 2026 13:48:00 +0700

muslimtify (0.1.6-1) unstable; urgency=medium

  * Fix the equation of time that was computed as (q / 15.0) - (RA / 15.0) without handling the 0°/360° wrap-around by Normalize the q - RA difference to [-180°, +180°] before converting to hours, so the wrap-around at the 0°/360° boundary is handled correctly.

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Sat, 21 Mar 2026 13:48:00 +0700

muslimtify (0.1.5-1) unstable; urgency=medium

  * `location refresh` command for one-shot location re-fetch
  * Improved memory safety and security fixes
  * Fixed Dhuha calculation
  * Fixed ceiling prayer checker
  * Default notification urgency to critical
  * Improved CLI defaults (show version/help by default)
  * Add command show --no-header to show key value prayer times

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Mon, 16 Mar 2026 13:00:00 +0700

muslimtify (0.1.4-1) unstable; urgency=medium

  * fix: Default notification urgency set to 'critical' for better visibility.
  * fix: Improve icon fallback behavior.
  * fix: Fix ceiling logic in prayer checker for more accurate notifications.
  * fix: Show version and help as default when no command is provided.

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Mon, 02 Mar 2026 18:30:00 +0700

muslimtify (0.1.3-1) unstable; urgency=medium

  * Add `location refresh` command for one-shot location re-fetch
  * Add unit tests and fix Dhuha calculation
  * Add Debian packaging support
  * Restructure CMakeLists.txt for production readiness
  * Update version handling

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Sat, 28 Feb 2026 11:21:12 +0700

muslimtify (0.1.2-1) unstable; urgency=medium

  * Fix security vulnerabilities: JSON string escaping, curl response size limit
  * Fix double notification by using integer-minute comparison
  * Fix icon path search stopping early at NULL entries
  * Fix midnight crossover for reminder times
  * Fix localtime static buffer reuse in display table
  * Add NULL checks after json_alloc in libjson
  * Add recursive mkdir for config directory creation
  * Validate numeric input with strtod in location set
  * Remove double curl_global_cleanup
  * Initialize config with defaults before partial JSON parse

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Fri, 27 Feb 2026 14:59:38 +0700

muslimtify (0.1.1-1) unstable; urgency=medium

  * Initial Debian packaging.

 -- Rizki Rakasiwi <rizkirr.xyz@gmail.com>  Wed, 25 Feb 2026 00:00:00 +0700
