Releases: spewedprojects/Antaraal
Release list
v1.4.1
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 ofserviceScopewas active (serviceScope.coroutineContext[Job]?.children?.any { it.isActive }). - Because the background sync coroutine was running, this check evaluated to
true, causingstartTimerLoop()to silently return and prevent the overlay loop from running entirely.
- The newly introduced async history sync block was launched as a child coroutine on
-
Fixes Implemented:
- Replaced the overly broad coroutine-children check with a dedicated
timerRunningboolean flag to cleanly prevent duplicate timer loops without conflicts. - Declared
private var timerRunning = falsestate 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.
- Replaced the overly broad coroutine-children check with a dedicated
v1.4.0
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
@QuerymethodupdateSeconds(pkg, date, seconds)to overwrite total seconds for a package on a specific day without resetting session metadata.
- Added
-
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.
- Added
-
OverlayService.kt:
- Replaced duplicate DB query blocks and synchronous
runBlockingcalls with a single asynchronous coroutine onDispatchers.IOat 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 display00:00:00instead of the true ticking total.
- Replaced duplicate DB query blocks and synchronous
-
AppUsageViewModel.kt:
- Added Room DB
UsageDaoinitialization usingUsageDb.get(context).dao(). - Added
syncUsageHistory(...)call on view initialization (loadInitialData()). - Added
getUsageForDateandgetUsageForRangehelper methods to query the local Room database first (priority 1), falling back toUsageStatsManager(priority 2). - Modified
generateWeeklyData()andfilterAndSortDataSync()to query the DB first viagetUsageForDateandgetUsageForRange. - Added
hasUsageForOffset(offset)helper method to query the DB or system for the presence of records on preceding days/weeks. - Dynamically updates
_canGoPrevious.valueat the end ofloadChartDataSync(), effectively disabling the previous page (<) button when no records are available.
- Added Room DB
-
Maintenance:
- Change app
versionNameandversionCodeto1.4.0and4.
- Change app
v1.3.0
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
weekOffsetwith a generictimeOffsetstate to track days or weeks dynamically. - Replaced
weeklyDatalist withChartDataStatecontaining eitherDailyorHourlymodels. - Dynamically configured
modelProducertransactions for hourly (24 series) vs weekly (7 series) points.
-
AppUsageScreen.kt & TimeColumnChart.kt:
- Subscribed to
chartDataStateand 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
xItemPlacerparameter to the customTimeColumnChartimplementation. - Switched horizontal axis placements to use Vico's
ItemPlacer.alignedconfiguration 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.
- Subscribed to
-
ScreenUsageHelper.kt:
- Added
fetchHourlyScreenTimeto parse raw UsageEvents and bucket active screen usage into 24 one-hour segments.
- Added
v1.2.0
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
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
MindfulLaunchManagersource of truth. - Rebranded "Whitelist" to "Blacklisted Apps" (Mindful Apps) in the UI to match the user's setup.
- Updated
MainActivityandBlockerServiceto utilizeMindfulLaunchManager.isMindfulApprather than the oldWhitelistutilities. - Removed
Whitelist.kt,WhitelistScreen.kt, andWhitelistViewModel.kt.
- Unified the legacy whitelist/blacklist logic into the single
-
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_POLICYpermission request from the manifest. - Purged Do Not Disturb check loop logic from
PermissionsCheckActivityandPermissionshelper 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.
- Completely removed the
-
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.
- Deleted foreground Focus service (
-
App Usage & System Settings Shortcut:
- Wired in custom in-app
AppUsageScreento 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
AppUsageScreento directly open their system-level Application Details settings (ACTION_APPLICATION_DETAILS_SETTINGS), allowing for direct system configuration.
- Wired in custom in-app