Repository navigation
Releases: prit-007/wallbizz
Releases · prit-007/wallbizz
Release list
Release v1.9.0
[1.9.0] - 2026-09-15
Added
- Local-first wishlist — wishlists stored in Hive on-device, works offline without auth
- Local-first moodboard — moodboards stored in Hive on-device, no auth required
- SyncService — auto-sync on authentication, manual sync, bidirectional merge
- Manual + Auto sync — toggle in settings, auto-sync on login, pull from cloud to local
- Wallhaven ID storage — wishlists/moodboards use wallhaven_id directly, no FK to wallpapers table
Changed
- WallpaperActions — heart tap works locally without auth, syncs to cloud when authenticated
- AddToMoodboardSheet — reads from Hive, syncs to Supabase when authenticated
- AuthBottomSheet — triggers sync on Google/email sign-in
- WishlistScreen — reads directly from Hive, no Supabase dependency for display
Fixed
- Wishlist 400 error — removed FK constraint dependency, wallpapers no longer need to exist in DB
- Moodboard 400 error — same fix, wallhaven_id stored directly
Schema
- New tables:
wishlists_v2,moodboards_v2,moodboard_items_v2withwallhaven_id VARCHAR(50) - Data migration from old UUID-based tables preserved in
sql/007_local_first.sql
Release v1.8.7
[1.8.7] - 2026-09-14
Fixed
- Wishlist 400 error — wallpapers from Wallhaven search had
wh-prefixed IDs instead of DB UUIDs, causing foreign key violations when adding to wishlist (#80) - Moodboard 400 error — same UUID mismatch when adding wallpapers to moodboards (#80)
- Black screen on web — Supabase.initialize() now wrapped in try-catch with diagnostic logging so empty URL/key no longer crashes the app (#80)
Changed
- UUID resolver —
addToWishlist,removeFromWishlist,isInWishlist,addToMoodboard,removeFromMoodboard, andfetchMoodboardItemIdsnow automatically resolvewh-prefixed wallhaven IDs to actual DB UUIDs before querying
Release v1.8.6
[1.8.6] - 2026-09-14
Fixed
- App icon — custom W logo on dark background for consistent branding across web, Android, and splash screen (#78)
- Splash screen — displays W logo above brand text for a polished first impression (#78)
- About screen — replaced generic image icon with branded W logo (#78)
- Build artifacts — auto-generated plugin registrants now properly gitignored (#77)
Release v1.8.5
[1.8.5] - 2026-09-14
Fixed
- Swiper zoomed swipe — zoomed images can now be panned instead of accidentally swiping to next image (#75)
- PageView steals gestures when zoomed — horizontal swipes now pan the image, not switch pages (#75)
Changed
- Swiggy-style page transitions — custom SlideFadeRoute with 350ms slide+fade push/pop (#75)
- WallpaperCard 120fps — removed BackdropFilter from heart button and resolution badge (#75)
- Nav bar perf — reduced BackdropFilter blur from 30→16 sigma, added RepaintBoundary isolation (#75)
- Shimmer skeleton perf — replaced per-item .animate().repeat() with TweenAnimationBuilder (#75)
- Grid card perf — removed redundant .animate().fade().slideY() per card (#75)
Added
- Comprehensive test coverage — 380 Flutter tests, backend proxy and auth tests (#48, #72)
- CRON_SECRET configured — secure 48-byte secret for sync endpoint (#73)
- Landscape compact layout — smaller brand header and nav bar in landscape (#74)
- StaggeredGrid sliverMode — supports embedding in CustomScrollView (#74)
- REQUEST_INSTALL_PACKAGES — Android permission for APK installs (#74)
Release v1.8.0
Release v1.8.0 - Landscape UX, sliver mode, test coverage sprint
Release v1.7.0
[1.7.0] - 2026-09-13
Fixed
- Splash screen too slow — reduced delay from 3.5s to 2s, transition from 1000ms to 500ms (#19)
- Snackbar shows stale count — now reads directly from Hive box length (#16)
- Auth listener leaks — Settings and VerifyEmail screens properly dispose listener (#18)
- aspectRatio division by zero — Wallpaper and DownloadedWallpaper models guard against zero height (#20)
- HTTP client never closed — DownloadServiceNative now closes in finally block (#21)
- CronSecret empty bypass removed — unauthenticated requests properly rejected (#23)
- hasClients crash — SearchScreen and StaggeredGrid guard scroll controllers (#28)
- Search race condition — request ID prevents stale responses overwriting fresh results (#43)
- Category tabs don't auto-scroll — selected tab now scrolls into view (#46)
- Null-safe primaryDelta — WallpaperEditorScreen handles null gesture data (#47)
- RefreshIndicator broken — DownloadsScreen uses SingleChildScrollView wrapper (#51)
- Moodboard null created_at — Moodboard model falls back to DateTime.now() (#53)
- Sync mutex race — FetchAndSyncWallpapers uses bool guard to prevent concurrent runs (#34)
- Logger init race — Logger now uses sync.Once for safe initialization (#59)
- Content-Length not forwarded — ProxyImage forwards upstream Content-Length header (#60)
- Cleanup returns 200 on error — now returns HTTP 500 with error details (#35)
- FlexInt 32-bit overflow — widened from int to int64 for safe parsing (#62)
- Windows sharing broken — cross-platform path construction, file flush, mimeType set, fallback via
cmd /c start(#67) - CORS wildcard panic — replaced invalid
http://localhost:*with AllowOriginsFunc (#67) - Dockerfile skips tests — now runs
go test ./...before building (#63) - Retry on failed wallpaper loads — StaggeredGrid shows error state with retry button (#37)
Added
- Concurrent category sync — goroutines + sync.WaitGroup syncs all 7 categories in parallel (#55)
- Health check verifies DB — pings Supabase to confirm database connectivity, returns degraded (503) if unreachable (#56)
- Graceful shutdown waits for sync — in-flight sync completes before server exits (#57)
- Configurable sync pages —
SYNC_MAX_PAGESenv var (default 3) (#61) - Configurable retention —
WALLPAPER_RETENTION_DAYSenv var (default 3) (#61) - Search proxy input validation — whitelist of allowed query params, rejects unknown with 400 (#24)
- System theme detection — first launch reads dark/light preference from OS (#41)
- Category switch animation — AnimatedSwitcher wraps grid for smooth fade+slide transitions (#45)
- Landscape orientation support — compact header, smaller nav bar, all 4 orientations enabled (#49)
- Image precaching on detail screen — full-resolution image preloads for faster perceived load (#39)
- Accessibility semantics — CategoryTabs and WallpaperCard labeled for screen readers (#29)
- flutter_localizations — Material + Cupertino delegates for proper locale support (#52)
- Haptic feedback consistency — selectionClick on category tab changes (#44)
Changed
- CORS tightened — restricted to known frontend origins via AllowOriginsFunc (#24)
- Retry with exponential backoff — Wallhaven API requests retry up to 3 times (1s/2s/4s delays) (#54)
- Error response format standardized — consistent JSON error payloads across all endpoints (#58)
- FlexInt widened to int64 — prevents overflow on 32-bit platforms (#62)
- Shutdown timeout increased — from 10s to 15s to accommodate sync wait (#57)
Release v1.6.0
[1.6.0] - 2026-09-13
Added
- About Us / Manifesto screen — full editorial about page with developer provenance
- HugeIcons across entire app — replaced all Material/Cupertino icons with HugeIcons
- Linux release builds — CI now produces tarball artifacts for Linux
- macOS release builds — CI now produces zip artifacts for macOS
- Android release signing via GitHub Secrets — standard signing in CI/CD
- ProGuard rules for Android release minification
key.properties.exampletemplate for local Android signing setup- Enhanced Windows installer — multi-language support, license page, file associations, Start Menu group, quick-launch shortcut
flutter-prepcomposite action for shared CI setup- Gesture hint overlay — added swipe left/right hints, responsive layout for desktop/tablet
Changed
- Publisher changed to "Developer's Paradise" in Windows installer
- All
IconDataparameters changed todynamicfor HugeIcons compatibility - CI workflow rewritten — single unified workflow inspired by nook, resilient release with per-platform success checks
- Removed redundant
build-windows.yml(merged intoci.yml)
Fixed
HugeIconnamed parametericon:missing in 14 files — all correctedIconData→dynamictype mismatch across all widget parameters
v1.5.1
What's Changed
Full Changelog: v1.5.0...v1.5.1
v1.5.0
What's Changed
Full Changelog: v1.4.6...v1.5.0