-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Obtainium+ is an enhanced, performance-optimized fork of Obtainium.
- User Guide: A high-level guide on how to use Obtainium+, Discover, Grid View, and Vanilla Mode.
- Technical Architecture: A deep dive into the service-oriented architecture, dependency injection, and performance optimizations.
- Optimization Roadmap: Our strategy for ongoing performance and code quality improvements.
- Vanilla Mode: Details on the toggle system and how it allows for a "classic" experience.
One of the defining features of Obtainium+ is the ability to revert to a "Vanilla" experience while keeping the fork's stability and performance fixes.
We've implemented a Granular Toggle System in SettingsProvider.dart. Every major "Plus" feature is gated by a boolean flag that defaults to true.
-
Master Switch:
enableAllPlusFeaturesact as a global override. If off, all Plus features are disabled regardless of their individual settings. -
Dynamic UI Gating:
- The SettingsPage and AppPage act as controllers. They check the
plusEnableModernSettingsandplusEnableModernAppPageflags to decide whether to render the modern M3 layout or the original "Legacy" UI ported from upstream. -
Legacy Support: We have maintained
LegacySettingsPage.dartandLegacyAppPage.dartwhich contain the original upstream logic, adapted only for compatibility with our new service-based architecture.
- The SettingsPage and AppPage act as controllers. They check the
| Feature | Flag | Description |
|---|---|---|
| Modern Settings | plusEnableModernSettings |
Toggles between Search/Sub-menu and Classic List layout. |
| Modern App Page | plusEnableModernAppPage |
Toggles between Responsive M3 and BottomSheet layout. |
| Grid View | plusEnableGridView |
Enables the grid layout option in View Mode. |
| Discover Tab | plusEnableDiscover |
Enables the aggregated app search page. |
| Swipe Actions | plusEnableSwipeActions |
Enables left/right swipe shortcuts on the app list. |
| Haptic Feedback | plusEnableHapticFeedback |
Tactile vibration on user interactions. |
| UI Customization | plusEnableUICustomization |
Gates App Bar styles, Nav labels, and Tile display info. |
The modern era of Obtainium+ focuses on user choice, stability, and advanced power-user features.
- Vanilla Mode (New): A complete toggle system allowing users to revert the entire app (UI and logic) to the "Classic" upstream experience while keeping stability fixes.
- Undo App Removal: Restore deleted app entries within 30 seconds using a one-tap Snackbar action.
- Modern Settings UI: A complete redesign of the settings page with search functionality, sub-menus, and categorization.
- Responsive Design: A new App Details page layout optimized for tablets and foldables.
- Quick Filters: One-tap filter chips on the main apps page (Updates, Installed, etc.).
- Scheduled Updates: Define active hours and days for background update checks to save battery.
- Persistent Retry Queue: Improved reliability for background updates that fail due to network issues.
Focused on code quality, performance, and breaking down the monolithic architecture.
-
Massive Refactor: Split the 2000+ line
AppsProviderinto specialized services:-
AppCRUDService: Adding/Removing apps. -
AppDownloadService: Handling APK downloads. -
AppInstallService: Interaction with OS installers.
-
-
Tech Stack Upgrade:
- Dio: Robust networking with interceptors and better error handling.
- GoRouter: Declarative routing for clean navigation.
- Get_it: Dependency injection for service management.
- Freezed: Type-safe data modeling.
- Impact: Significantly improved code maintainability and testing.
- Discover Tab: Added a unified search interface to find apps across multiple sources (GitHub, GitLab, etc.) simultaneously without leaving the app.
- Icon Caching: Implemented a memory-efficient caching system for app icons, solving scroll lag on large lists.
- Service Extraction: Moved File and Update logic to dedicated services.
-
Modular Settings: Refactored the Settings page into independent widgets using the
Consumerpattern. - Result: Reduced widget rebuilds by 80-90% when changing a setting.
The initial phase of the fork, focusing on visual feel and user experience.
- Startup Speed: Cached device info to remove redundant async calls during app launch.
- Accessibility: Comprehensive audit ensuring WCAG 2.1 compliance (semantic labels, touch targets).
- Security: Hardened link validation.
- Expressive Motion: Integrated Material 3 standard animations (OpenContainer, SharedAxis).
- Theming: Full implementation of Material You dynamic colors and "True Black" AMOLED mode.
- Haptics: Added tactile feedback to interactions throughout the app.
- Grid View: The first major feature—viewing apps in a grid.
- Category UI: Enhanced category headers with icon previews and drag-and-drop reordering.
Base Version: Obtainium v1.2.9
Fork Goal: To provide a more customizable, performant, and feature-rich experience while maintaining full compatibility with the core mission of open-source app tracking.