Appteka Logo
Appteka
Vetro app icon

Vetro

ExclusiveOpen SourceVerified Safe
Version v3.0.6-Beta (1)
Published 3/4/2026
Download APK
Size
20.72 MB
Android
8.0+
Downloads
4
Architecture
arm64-v8a, armeabi-v7a, x86, x86_64
Security Scan
Verified Safe
✓ Scanned with ClamAV, APKiD, and Quark-Engine
What's New
🧪 v3.0.6-Beta Massive architectural, visual and infrastructure refactor. Clean Architecture. Strict MVI. Real performance. 🏗 1. Clean Architecture Refactor Layer Isolation UI fully isolated from Domain layer Introduced SaveAnimeParams (DTO) SaveAnimeUseCase no longer depends on AddEditUiState ViewModel Purification Removed Context and File from ViewModels Introduced ImageStorageRepository abstraction No more direct Android SDK access (Environment, external storage, Vetro folder, etc.) True Domain Layer Heavy business logic moved from ViewModels into UseCases: SaveAnimeUseCase UpdateCommentUseCase GetAnimeForEditUseCase Includes: UUID generation Database operations Data validation logic 🔄 2. State Management & Strict MVI Side Effects (UDF) Removed callback anti-patterns (onSuccess: () -> Unit) Introduced Channel<AddEditEffect> for one-time events: NavigateBack ShowError Screen Decoupling AddEditScreen fully decoupled from HomeViewModel Lists now update reactively via SQLDelight asFlow() Removed Artificial Delays Deleted delay(600) hacks from FAB clicks UI now reacts instantly to real isLoading state 🖼 3. Jetpack Compose & Performance (Target: 120 FPS) Critical Anti-pattern Removed Deleted remembered @Composable lambda list from AddEditScreen Replaced with proper declarative AnimatedFormRow Restored correct recomposition behavior Prevented potential memory leaks UI Purity Removed java.io.File checks from Compose layer Coil now receives absolute path String directly UI components are now fully dumb & fast Glassmorphism Optimization (Haze) Blur radius reduced: 40.dp → 20.dp Introduced custom Modifier.safeHaze(): Hardware accelerated blur on Android 12+ Elegant translucent fallback on older devices Significant GPU load reduction Shared Elements Smoothness Added skipToLookaheadSize() in AnimeCard Cards no longer "jump" after returning from Details screen Image Rendering Enabled crossfade(true) in all AsyncImage usages Images now fade in smoothly instead of popping pixel-by-pixel XML Removal Deleted legacy gal.xml and krestic.xml Replaced with ImageVector (SyncIcons) Removed XML parsing overhead (I/O) during overlay rendering 🛠 4. Infrastructure, Safety & Code Quality Absolute Testability Introduced IdGenerator Domain layer is now fully deterministic 100% unit-testable business logic Permission Abstraction Introduced PermissionChecker Removed Build.VERSION & Environment checks from SplashViewModel Idiomatic Kotlin Replaced legacy try/catch blocks with Result API runCatching { ... }.onFailure { ... } Applied across project (including HomeViewModel) Dependency Injection Cleanup (Koin) Removed legacy singleton (companion object instance) from DropboxSyncManager Fully constructor-injected via Koin graph Cleaner, safer DI configuration
Description
MAList is a simple and flexible app for creating lists. Originally developed for anime tracking, it can also be used for TV shows, movies, or even shopping lists. ✨ Features 📝 Core Functionality - Create lists for any type of content - Add custom titles and descriptions - Episode/item counter - 1–5 star rating system - Favorites system 👉 Gestures - Swipe to delete with confirmation - Swipe to add items to Favorites 🎨 Interface & Customization - Fully redesigned interface - Light/Dark theme switching - Language switching: - English - Russian - Updated typography with new fonts - Dozens of new icons ✨ Visuals & UX - Reworked animations - New visual effects - Improved haptic feedback (vibration and tactile response) - One UI + iOS-inspired design with large headers, rounded corners, and glass menus 🔄 Updates & Stability - In-app update system - Improved release tracking - Improved statistics menu - Fixed search functionality - Numerous bug fixes and internal optimizations 💾 Storage & Privacy - 100% local storage - No accounts, no cloud, no tracking - All data and images are stored locally on your device The app creates its own folder: Documents/MyAnimeList All data is stored locally in JSON format. 📂 Permissions MAList requires the following permission: - MANAGE_EXTERNAL_STORAGE Used to create and manage the app's local database and image storage.
Rate this app
0 / 1000
Ratings & Reviews
No reviews yet.