448 Commits

Author SHA1 Message Date
Anthonyy232
be482fefbc fix: fix adaptive icons 2026-01-08 20:48:54 -08:00
Anthonyy232
0f1db0fb22 fix: onboarding screens invalid layout and reseting 2025-12-31 18:00:55 -08:00
Anthonyy232
a292bddbe8 fix: notification icons 2025-12-26 23:18:57 -08:00
Anthonyy232
2aa4e6960d fix: fix app icon bad format 2025-12-26 23:00:04 -08:00
Anthonyy232
c947b6fc6f fix: various bugs 2025-12-26 22:19:56 -08:00
Anthonyy232
0385acd539 fix: hide select album row if neither home or lock is enabled 2025-12-25 20:35:55 -08:00
Anthonyy232
8a5db6b89e feat(test): added unit testing and added to cicd 2025-12-21 20:55:46 -08:00
Anthonyy232
318ba07ed5 continue rewrite 2025-12-21 18:30:23 -08:00
Anthonyy232
391bbb6bc0 add live wallpaper 2025-12-21 18:30:23 -08:00
Anthonyy232
572252b187 fix some bugs 2025-12-21 18:30:23 -08:00
Anthonyy232
894b86cd14 Clear album selections when toggling home or lock screens
When user changes which screens are enabled (homeEnabled/lockEnabled),
clear all album selections to ensure clean state:

**Scenarios where albums are cleared:**
- Lock only → Both screens enabled
- Home only → Both screens enabled
- Both screens → Lock only
- Both screens → Home only
- Lock only → Home only (both toggles change)

**Why this is needed:**
- Album requirements change when switching between single/dual screen modes
- Both screens enabled requires TWO albums selected
- Single screen requires ONE album selected
- Clearing prevents invalid state where old selections don't match new requirements

**Implementation:**
- Detect when homeEnabled or lockEnabled changes in updateScheduleSettings()
- If screen toggles changed, clear both homeAlbumId and lockAlbumId
- Apply validation to cleared settings
- Auto-toggle logic will disable changer (no albums selected)
- User must select appropriate albums for new screen configuration

**User flow:**
1. User toggles screen on/off
2. Albums automatically cleared
3. Changer disabled (no albums)
4. User selects new albums
5. Changer re-enabled with correct albums

This ensures users always have the correct album setup for their
chosen screen configuration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-21 18:30:23 -08:00
Anthonyy232
1006902d07 Add check to prevent unnecessary rescheduling on app startup
Prevent redundant WorkManager job rescheduling when app starts:

**Problem:**
- Every time app starts, wallpaper change workers were being rescheduled
- Same with album refresh worker
- This caused unnecessary database writes and WorkManager operations
- Even when jobs were already correctly scheduled

**Solution:**
Added `onlyIfNotScheduled` parameter throughout the scheduling chain:

1. **WallpaperScheduler:**
   - Added `isWorkScheduled()` and `isAlbumRefreshScheduled()` helpers
   - Check WorkInfo state (ENQUEUED or RUNNING) before scheduling
   - Skip scheduling if work already exists and `onlyIfNotScheduled = true`

2. **HomeViewModel:**
   - Added `onlyIfNotScheduled` parameter to `toggleWallpaperChanger()`
   - Added `onlyIfNotScheduled` parameter to `scheduleAlarms()`
   - Skip immediate wallpaper change when checking if scheduled
   - Propagate parameter through scheduling chain

3. **BootReceiver:**
   - Use `onlyIfNotScheduled = true` on device boot
   - Prevents rescheduling if jobs survived device restart

4. **HomeScreen:**
   - Auto-toggle uses `onlyIfNotScheduled = true`
   - Prevents rescheduling on every app startup
   - User actions still always reschedule (parameter defaults to false)

**Behavior:**
- App startup: Only schedule if not already scheduled
- Device boot: Only schedule if not already scheduled
- User actions (album selection, settings changes): Always reschedule
- Album refresh: Only schedule if not already scheduled

This improves app startup performance and reduces unnecessary
WorkManager operations while maintaining correct scheduling behavior.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-21 18:30:23 -08:00
Anthonyy232
49fecf56af Fix queue handling when running out of wallpapers during validation
Improve robustness of wallpaper queue management:

**Problem:**
When the queue runs out DURING the validation loop (all remaining
wallpapers are invalid), the code returned an error without trying
to rebuild the queue. This could happen when:
- Album has both valid and invalid wallpapers
- Queue contains only invalid wallpapers after valid ones are used
- Validation loop dequeues all invalid wallpapers
- Queue becomes empty but is never rebuilt

**Solution:**
When getAndDequeueWallpaper returns null during validation loop:
1. Try rebuilding the queue (up to 2 attempts)
2. Continue validation loop to get wallpaper from rebuilt queue
3. Only return "no wallpapers" error after 2 rebuild attempts fail

**Edge Cases Handled:**
- Queue runs out due to invalid wallpapers being removed: rebuild and retry
- Album truly has no valid wallpapers: error after 2 rebuild attempts
- Shuffle mode: queue rebuilt with correct shuffle order
- Sequential mode: queue rebuilt with correct display order

This ensures the wallpaper changer continues working even when
encountering invalid wallpapers, and properly cycles through the
album whether shuffle is enabled or not.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-21 18:30:23 -08:00
Anthonyy232
ca59cd8155 Hide toggle effect descriptions when enabled in non-individual scheduling
When wallpaper effects are toggled on and individual scheduling is off,
hide the description text for a cleaner UI:
- Grayscale effect
- Adaptive brightness
- Shuffle

Changes:
- Make SettingSwitch description parameter nullable
- Conditionally hide description when:
  - Effect is enabled (checked = true)
  - AND individual scheduling is OFF (separateSchedules = false)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-21 18:30:23 -08:00
Anthonyy232
9820581723 Fix wallpaper scheduling and effects handling bugs
Multiple fixes for scheduling logic and UI behavior:

**Scheduling Fixes:**
- Add required albums validation before scheduling WorkManager jobs
- Only schedule when all required albums are selected based on enabled screens
- Prevent scheduling with incomplete album selection (both screens enabled requires both albums)
- Add hasRequiredAlbums check in HomeViewModel, WallpaperScreen, and BootReceiver

**Race Condition Fixes:**
- Fix toggleWallpaperChanger race condition with atomic updateEnableChanger()
- Prevent phantom album selections by using atomic DataStore updates
- Fix startup race condition - only cleanup stale album IDs after albums load

**Display Settings:**
- Separate scheduling changes from display changes (ScheduleSettings.kt)
- Add hasSchedulingChanges() - intervals, screen enable/disable, separate schedules
- Add hasDisplayChanges() - scaling, effects, adaptive brightness
- Reapply wallpaper immediately when display settings change (no reschedule needed)
- Prevent unnecessary WorkManager rescheduling for display-only changes

**Effect Sliders:**
- Fix effect sliders to respect separateSchedules setting
- Show synchronized slider when individual scheduling OFF
- Show separate sliders when individual scheduling ON
- Applies to brightness/darken, blur, and vignette sliders

**AlbumRefreshWorker:**
- Fix duplicate detection to check both direct and folder wallpapers
- Fix failure counting (increment failedCount on addWallpaper errors)
- Prevent false error logs and database constraint violations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-21 18:30:23 -08:00
Anthonyy232
9079306f8f Rewrite initial commit 2025-12-21 18:30:23 -08:00
Gian
3b2f739254 Fix switch position on long text 2025-11-13 17:38:18 -08:00
Gian
c6c841f7c0 Unify switch components into two generic implementations 2025-11-13 17:38:18 -08:00
Anthonyy232
66c3a4bb2e Bump version 2025-09-15 12:47:15 -07:00
Anthonyy232
1b317798a4 fix effects not applying to lock when singular
https://github.com/Anthonyy232/Paperize/issues/393
2025-09-15 12:46:18 -07:00
Anthonyy232
95feb975ea Bump version code 2025-09-13 16:06:10 -07:00
Anthonyy232
1f66b1c616 Updated dependencies and localization 2025-09-13 14:08:17 -07:00
Anthonyy232
c35b87a1da Updated localization 2025-09-13 10:53:42 -07:00
malteish
afa520a68a enable large collections through larger cursor window 2025-09-12 11:43:08 -07:00
Anthonyy232
b67734b8e1 Fix file picker not limiting user for large image imports 2025-09-12 11:42:30 -07:00
Anthonyy232
d124da717d Fix crash on launch during db changes 2025-09-12 11:21:22 -07:00
Anthonyy232
40417b99b1 fix crash on adding through image virtual directory
https://github.com/Anthonyy232/Paperize/issues/374
2025-09-12 11:18:48 -07:00
Anthonyy232
b3fb2b82f2 Update CI/CD 2025-08-28 10:53:11 -07:00
Anthonyy232
27b0fe62c8 Bump version code 2025-08-28 10:38:50 -07:00
Anthonyy232
096beb22d7 Bump version to 3.1.2 2025-08-28 10:37:50 -07:00
Anthonyy232
21766a5dc6 Fix app losing permission after some time https://github.com/Anthonyy232/Paperize/issues/349 2025-08-28 10:36:29 -07:00
Anthonyy232
2f514e6464 Remove unused AAR dependency
https://github.com/Anthonyy232/Paperize/issues/310#issuecomment-3226539843
2025-08-26 19:45:54 -07:00
Anthonyy232
74d2c614fd Update version code 2025-08-26 18:31:55 -07:00
Anthonyy232
da0d8c45e6 Fixed bad decompressing of URi 2025-08-26 18:11:07 -07:00
yzhh
530ff36a16 add skip in non-interactive state setting 2025-08-25 22:18:15 +08:00
Anthonyy232
0c2ca68dcd Fixed last change time not updating from initial 2025-08-20 11:09:33 -07:00
Anthonyy232
c9e485ac88 Fixed time drift issue when setting wallpaper https://github.com/Anthonyy232/Paperize/issues/343 2025-08-19 16:49:28 -07:00
Anthonyy232
2a3821e1e7 Improved robustness of image picker for album view screen 2025-08-15 09:40:03 -07:00
Anthonyy232
8b61b1d719 Improved robustness of image picker 2025-08-15 09:38:46 -07:00
Anthonyy232
431df5c334 Fixed next and last time label swapped based on temporal locality https://github.com/Anthonyy232/Paperize/issues/327 2025-08-15 09:35:46 -07:00
Anthonyy232
2b49a01eb4 Added setting to prevent changing wallpaper during landscape mode https://github.com/Anthonyy232/Paperize/issues/328 2025-08-14 23:33:40 -07:00
Anthonyy232
3bc438a06d Migrated blur to rendereffect and min version to 31 2025-08-13 19:50:49 -07:00
Anthonyy232
57d6b7dc8e Fixed broken blur effect using home percentage for all cases https://github.com/Anthonyy232/Paperize/issues/322 2025-08-12 17:05:12 -07:00
Anthonyy232
5d87257516 Fixed scanning for new wallpapers/folders https://github.com/Anthonyy232/Paperize/issues/326 2025-08-11 11:28:29 -07:00
Anthonyy232
cb9ab7d1af Fixed crash due to interpreting string as int without cast https://github.com/Anthonyy232/Paperize/issues/323 2025-08-07 11:28:23 -07:00
Anthony La
96cb5538da Updated localization 2025-06-24 10:07:02 -07:00
Anthony La
c3101ea5f6 Update in sample calculation for None scaling 2025-06-24 10:06:21 -07:00
Anthony La
493e6559df Major refactor and localization update 2025-06-07 14:02:49 -07:00
Anthony La
8945002652 Updated WallpaperManager usage 2025-05-15 17:00:51 -07:00
Anthony La
8f30f3558a Update renderscript dependency and refactored wallpaper alarm code 2025-05-15 15:30:19 -07:00