github bikram-agarwal/ObtainX v2.0.0

latest releases: v2.9.0, pre-upstream-sync-20260626, v2.8.4...
3 months ago

Built on top of Obtainium v1.4.0

🧭 Overview

Builds on the existing ObtainX UI/UX foundation with a set of net-new features, improvements to existing ones, and internal refactors. Core additions include bulk import from installed apps, inline app editing, skip version, on-demand only mode, a regex assist dialog, a dedicated additional options page, and a reworked Add App flow.


✨ Net-New Features

  • Bulk Import from Device — new multi-step wizard (selectstores → select installed apps → scan stores → review results) embedded directly in the Add App tab; BulkImportService handles package-to-source resolution with a persistent BulkScanCache that survives sessions
  • Skip Version — defer a specific release on the app detail page without marking the app as updated; works alongside the new version-clarity states
  • On-Demand Only mode — mark an app so it's hidden from the main list and only checked when you explicitly open it or visit the On-Demand screen
  • RegEx Assist dialog — context-sensitive helper accessible from any regex-capable field on both the add-app and additional options flows; guides through building filters without knowing regex syntax
  • Additional Options page — dedicated full-screen page for per-app advanced settings, extracted from the inline overflow; accessible from both add-app and the detail page edit flow

🔧 Feature Updates

  • Add App page unified into one screen — URL, Search, and From Device are now three tabs on a single SegmentedButton; no separate pages or bottom sheets for core interactions
  • Inline edit on the app detail page — edit tracking settings and icon directly from the detail page without navigating away; unsaved-changes guard on back with keep/discard/save options
  • 5-second undo after delete scoped to deferred removalsRemoveAppsWithModalResult carries deferredUndoAppIds; snackbar undo only offered when removal was actually deferred (not when app was uninstalled in the same step)
  • APKMirror release title collection — improved candidate gathering for release title detection (up to 40 candidates, deduped), making version matching more reliable
  • Version clarity statesversionOrderIsUnclear() detects when two version strings can't be reliably ranked (e.g. commit hashes vs semver); surfaces a dedicated "unclear" status with Skip/Check actions instead of a false update or false up-to-date; tab badge counts include uncertain-update apps
  • Search result inline filter — after a search in the Add App tab, a filter bar narrows displayed results by title/source without re-running the query

⚙️ General Optimizations

  • FaviconCache persistence — two-layer memory + disk cache (<cacheDir>/favicons/) means source favicons survive app restarts and aren't re-fetched on every launch
  • StoreSourceIcons extracted — bundled icon asset mapping moved to its own class; used consistently across the bulk import flow and search results
  • GeneratedForm card wrappingwrapFormSectionsInCards flag groups form sections into app-page-style cards; used in the add-app and additional options flows for visual consistency
  • BulkAddWidget as reusable component — bulk flow state extracted from the page into BulkAddWidget; BulkAddAppsPage is now a thin wrapper preserving backward compat for any existing push routes
  • onWindowFocusChanged install detectionMainActivity uses focus-regain signal to detect when the system installer was dismissed, replacing the previous approach
  • app_package_formats.dart extracted — APK/XAPK/ZIP format logic moved to its own file

🖼️ Screenshots

TBD

Don't miss a new ObtainX release

NewReleases is sending notifications on new releases.