Skip to content

Releases: spewedprojects/Antaraal

v1.4.1

Choose a tag to compare

@spewedprojects spewedprojects released this 08 Jul 16:41

Full Changelog: v1.4.0...v1.4.1

fix(overlay): resolve overlay service initialization hang and UI visibility state

Fixed a critical bug introduced in the initial background sync implementation where the overlay bubble remained invisible and stuck at 00:00:00.

  • Bug Root Cause & Acknowledgment:

    • The newly introduced async history sync block was launched as a child coroutine on serviceScope.
    • Inside startTimerLoop(), the loop-protection guard checked if any child of serviceScope was active (serviceScope.coroutineContext[Job]?.children?.any { it.isActive }).
    • Because the background sync coroutine was running, this check evaluated to true, causing startTimerLoop() to silently return and prevent the overlay loop from running entirely.
  • Fixes Implemented:

    • Replaced the overly broad coroutine-children check with a dedicated timerRunning boolean flag to cleanly prevent duplicate timer loops without conflicts.
    • Declared private var timerRunning = false state variable.
    • Set the overlay's initial state to hidden (bubbleView.isVisible = false) upon startup, ensuring it only displays for selected/mindful apps once the timer loop resumes control.

v1.4.0

Choose a tag to compare

@spewedprojects spewedprojects released this 08 Jul 16:14

Full Changelog: v1.3.0...v1.4.0

feat(stats): implement local database history syncing and overlay retrograde support

Optimized historical usage logging and overlay accuracy by shifting to a database-first local cache fallback and implementing retrograde sync on startup.

  • UsageDao.kt:

    • Added @Query method updateSeconds(pkg, date, seconds) to overwrite total seconds for a package on a specific day without resetting session metadata.
  • ScreenUsageHelper.kt:

    • Added syncUsageHistory(context, usageStatsManager, dao) to run in the background and sync system stats from the last 8 days into the Room DB (UsageDb -> daily_totals). This operates for all apps to establish a permanent offline copy of usage data.
  • OverlayService.kt:

    • Replaced duplicate DB query blocks and synchronous runBlocking calls with a single asynchronous coroutine on Dispatchers.IO at startup.
    • Invokes ScreenUsageHelper.syncUsageHistory(...) on startup to fetch today's accumulated usage up to the second the service starts, resolving the issue where starting the service mid-day would display 00:00:00 instead of the true ticking total.
  • AppUsageViewModel.kt:

    • Added Room DB UsageDao initialization using UsageDb.get(context).dao().
    • Added syncUsageHistory(...) call on view initialization (loadInitialData()).
    • Added getUsageForDate and getUsageForRange helper methods to query the local Room database first (priority 1), falling back to UsageStatsManager (priority 2).
    • Modified generateWeeklyData() and filterAndSortDataSync() to query the DB first via getUsageForDate and getUsageForRange.
    • Added hasUsageForOffset(offset) helper method to query the DB or system for the presence of records on preceding days/weeks.
    • Dynamically updates _canGoPrevious.value at the end of loadChartDataSync(), effectively disabling the previous page (<) button when no records are available.
  • Maintenance:

    • Change app versionName and versionCode to 1.4.0 and 4.

v1.3.0

Choose a tag to compare

@spewedprojects spewedprojects released this 08 Jul 11:43

Full Changelog: v1.2.0...v1.3.0

feat(chart): decouple today and weekly usage charts with dynamic formats

Refactored the screen usage chart implementation to completely separate the
logic and layout for the "Today" (24-hour histogram) and "7 Days" (calendar week) ranges.

  • AppUsageViewModel.kt:

    • Replaced the rolling week logic with calendar weeks (Monday–Sunday) and strict daily bounds.
    • Replaced weekOffset with a generic timeOffset state to track days or weeks dynamically.
    • Replaced weeklyData list with ChartDataState containing either Daily or Hourly models.
    • Dynamically configured modelProducer transactions for hourly (24 series) vs weekly (7 series) points.
  • AppUsageScreen.kt & TimeColumnChart.kt:

    • Subscribed to chartDataState and adjusted titles to reflect calendar weeks ("Oct 17 - Oct 23") or calendar days.
    • Updated horizontal axis label rendering to use 12/24hr format based on the system configuration.
    • Added an xItemPlacer parameter to the custom TimeColumnChart implementation.
    • Switched horizontal axis placements to use Vico's ItemPlacer.aligned configuration to prevent empty-string formatting crashes on non-labeled intervals.
    • Adapted the pagination buttons (< and >) to shift by days or weeks depending on the selected range.
  • ScreenUsageHelper.kt:

    • Added fetchHourlyScreenTime to parse raw UsageEvents and bucket active screen usage into 24 one-hour segments.

v1.2.0

Choose a tag to compare

@spewedprojects spewedprojects released this 08 Jul 11:01

Full Changelog: v1.0.0...v1.2.0

feat: implement app filtering and sorting in mindful launch settings

  • Add filtering for User vs System apps in Mindful Launch settings.
  • Improve app list sorting by blacklisted status and label.
  • Force AppIntroScreen refresh on lifecycle resume to ensure permission states are current.
  • Kept overlay screen permission not granted permissive in app intro.
  • Disable overlay by default and remove automatic launcher app exceptions.
  • Removed the aggressive migration code in App.kt and ensured that OverlayService and DailySummaryWorker now correctly use the Device Protected Storage Context when accessing preferences.
  • Change database checkpointing to TRUNCATE mode.
  • Bump version to 1.2.0 (versionCode 2).

v1.0.0

Choose a tag to compare

@spewedprojects spewedprojects released this 08 Jul 09:47

Full Changelog: https://github.com/spewedprojects/Antaraal/commits/v1.0.0

refactor!: First release - consolidate whitelist to Mindful Launch, integrate UsagePeek overlay, and remove legacy Focus/Pomodoro features

Refactored the application to streamline digital wellbeing features around the "Mindful Launch" experience and unified usage statistics, eliminating the legacy DND requirements and focus/pomodoro features.

  • Mindful Launch & Blacklist Consolidation:

    • Unified the legacy whitelist/blacklist logic into the single MindfulLaunchManager source of truth.
    • Rebranded "Whitelist" to "Blacklisted Apps" (Mindful Apps) in the UI to match the user's setup.
    • Updated MainActivity and BlockerService to utilize MindfulLaunchManager.isMindfulApp rather than the old Whitelist utilities.
    • Removed Whitelist.kt, WhitelistScreen.kt, and WhitelistViewModel.kt.
  • UsagePeek Overlay Integration:

    • Added support for a "Screen Time Overlay" to overlay daily usage statistics on selected apps.
    • Added the Screen Time Overlay toggle to settings, providing clear explanations and checking/requesting the "Display over other apps" (SYSTEM_ALERT_WINDOW) permission.
    • Replaced the legacy Do Not Disturb (DND) permission slide in the onboarding flow (AppIntroScreen) with a new slide for requesting overlay permission, displaying a clean status indicator.
  • DND Permission & Feature Purge:

    • Completely removed the ACCESS_NOTIFICATION_POLICY permission request from the manifest.
    • Purged Do Not Disturb check loop logic from PermissionsCheckActivity and Permissions helper classes.
    • Cleaned up settings screens: removed focus reminder, break alerts, and daily summary settings, and rebranded limit warnings to "App Time Limit Warnings".
    • Deleted legacy schedulers (DailySummaryScheduler) and removed references in boot receivers and trackers.
  • Focus Mode & Pomodoro Retirement:

    • Deleted foreground Focus service (FocusModeService.kt), stats models, screens (TimerScreen.kt, FocusStatsScreen.kt, FocusSessionDetailScreen.kt, PomodoroSettingsScreen.kt), and states.
    • Removed bottom navigation bar (AntaraalBottomNavBar) and simplified single-activity navigation layout.
  • App Usage & System Settings Shortcut:

    • Wired in custom in-app AppUsageScreen to handle single-click navigation on the App Usage Card and Top Bar button.
    • Enabled long-press action on the App Usage Card to trigger system-level Digital Wellbeing settings (ACTION_POWER_USAGE_SUMMARY).
    • Allowed users to click on app list items in AppUsageScreen to directly open their system-level Application Details settings (ACTION_APPLICATION_DETAILS_SETTINGS), allowing for direct system configuration.