Repository navigation
Releases: Utsavrajputt/xmd
Release list
Xmd v1.0.0
[1.0.0] - 2026-09-22
🎉 First stable release — out of beta.
✨ Highlights
- 🎵 SponsorBlock integration and playlist downloads for yt-dlp links.
- 🚀 3-step launch onboarding, plus a real-time battery-optimization warning banner in Settings.
- 🔁 Resume support for downloads that previously couldn't resume.
- 🍫 Quality picker reworked into a chip grid; format summary + streams-count chip in the Add Download dialog header.
- 💳 New Support section in About (UPI donation card) and live GitHub contributors.
- 🔗 xmd now shows up in Android's "Open with" chooser for direct file links again.
See all changes since v1.0.0-beta.6
✨ Added
- 🎵 SponsorBlock integration and playlist downloads for yt-dlp links.
- 📝 Embed-subtitles option in the Add Download dialog's Advanced section — Off/Embed toggle with language chips, mirroring the SponsorBlock UI.
- 🚀 3-step launch onboarding flow, plus a real-time battery-optimization warning banner surfaced directly in Settings (replaces the earlier static battery card in Downloads settings).
- 🔁 Resume support for non-resumable downloads — downloads that previously couldn't resume can now continue instead of restarting from scratch.
- 💳 Support section added to About — UPI donation card with a tap-to-copy ID and a "Send love" button that opens a
upi://payintent. - 👥 About's Developers section now pulls live GitHub contributors (avatar, login, commit count, top 8 + View all, loading/error/retry states) instead of a hardcoded list, cached on disk for 72h.
- 🎚️ Format summary shown in the Add Download dialog header, plus a streams-count chip.
- 🍫 Quality picker reworked into a 4-per-row chip grid (replacing the dropdown menu), with the Audio-format sub-picker (MP3/M4A/Opus/Original) shown as its own chip row when "Audio only" is selected.
- 📥 Browser downloads now route straight into the full Add Download dialog — pre-filled with link, detected filename, and page URL — instead of a separate "Add to Downloads?" confirm prompt; this applies to WebView-intercepted downloads too, and expired-link recovery still works through the new path.
- 📆 Schedule row restyled (clock icon, label, chevron, dropdown) to match the Save-to card in both the Add Download and Add Torrent dialogs, with the day picker rebuilt as tappable circles so all 7 days fit without clipping.
- 🔗 xmd now shows up in Android's "Open with" chooser for direct file links (
.apk/.zip/.rar/.7z/.exe/.msi/.iso/.pdf, e.g. GitHub raw downloads) — added explicitpathPattern-basedVIEWfilters toShareReceiverActivity, the same technique used elsewhere in the Morphe ecosystem, since a bare*/*mimeType wildcard was losing to apps that declare pathPattern matches.
🛠 Fixed
- 🎬 Thumbnail-embedding errors on WebM audio streams from yt-dlp.
- ✂️ Quality chip text no longer gets cropped; resolution labels simplified.
- 🎞️ Duplicate VP9 codec chip in the quality picker (vp9/vp09 now canonicalized to one preset); address bar gained a clear (✕) button while focused and non-empty.
- 🧲 Torrent-file picker no longer shows in the Add Download dialog when it was opened from a browser download click.
- 📤 Reverted an interim
content:///file://local-file-import fix for the "Open with" issue above — it fired on link tap, before any local file existed to import, so it addressed the wrong stage of the flow. - ⚙️ Assorted compile fixes: restored missing imports and resolved a ViewModel setter signature clash introduced during the downloads refactor below.
🗑️ Removed
- 🎚️ The dedicated FPS/Codec dropdown and its header summary were pulled from the quality picker in favor of the plain quality-option selector (later replaced by the chip-grid rework above); the Advanced section's expand icon shrank to a single rotating chevron.
🎨 Changed
- 🧵 Downloads pipeline hardened: duplicate-aware enqueue and typed queue-state transitions centralized, queue persistence serialized, yt-dlp stop handling made race-safe, navigation/search state preserved across recreation, and release size reduced.
- ⚙️ yt-dlp download execution, format discovery, and file handling realigned for consistency across entry points.
- 🔗 About's GitHub link renamed to just "GitHub"; the Home tab is now hidden by default.
- 📐 Download container icon size reduced.
SHA-256 checksum
8205ee904930c225dbc6efd186c13bee9abb4e2d445df0f49a8ff5a1b3ccf429 release-assets/Xmd-full-arm64-v8a-v1.0.0.apk
74b41075aab585016521fea196f2cf2bc289338ab47f55c2bb64adbb073da217 release-assets/Xmd-full-armeabi-v7a-v1.0.0.apk
b93c88603053f2f8448c3afc7691ea4149ad91c8c5cb563cba34782878985d23 release-assets/Xmd-lite-arm64-v8a-v1.0.0.apk
578c7a375c71674a598150ad99fa53eed7a138b0b7203376754f2c694a143e34 release-assets/Xmd-lite-armeabi-v7a-v1.0.0.apk
What's Changed
- feat(ytdlp): align download execution, format discovery, and file handling by @Arnab11 in #29
- feat: onboarding flow, resume non-resumable downloads & yt-dlp quality/thumbnail improvements by @Arnab11 in #30
- Improve download workflows, queue safety, and app UX by @Riteshp2001 in #31
Full Changelog: v1.0.0-beta.6...v1.0.0
Xmd v1.0.0-beta.6 (Pre-release)
[1.0.0-beta.6] - 2026-09-12
✨ Added
- 🏠 Home screen shortcuts — pin any download link to the device home screen for one-tap re-download, with a Home-screen fragment, an "Add to home screen" flow, and a toggle to remove shortcuts again.
- 🌐 Custom browser home page — Speed Dial, Google, DuckDuckGo, Brave, Bing, Yahoo, or a fully custom URL, instead of always opening Speed Dial.
- 🛡️ Brave-style Shields for the in-app browser — Standard/Aggressive/Off blocking levels, a per-site allowlist, and a lifetime blocked-count counter; site whitelisting now lives directly under Shields settings.
- 🗺️ Google Translate in the browser overflow menu — opens the current page through Google's web-proxy translator with a language picker.
- 📊 Daily data limit — cap total or mobile-only data use for downloads, configurable from Settings.
- 🔁 Better expired/broken-link recovery — a redesigned Link Expired dialog offers Retry, Fetch from Browser, or Cancel; retrying now tries a normal re-fetch first and only falls back to opening the browser (and finally a single-connection download) if that fails.
- 🎬 In-page media picker on YouTube — a floating "videos found" action appears on YouTube watch/Shorts pages, routing sniffed streams straight into the quality picker.
- 🔄 Stable/Preview update channel selector on the About screen, plus a clearer reason shown when an update check fails.
- 📚 Libraries screen added to About, crediting open-source dependencies, alongside a 72-hour on-disk avatar cache for the Developers section.
- 📂 Open / Open Folder actions on completed download items, and an Open file location entry in the downloads long-press sheet.
- 🔍 Website source packs are now scanned from the whole device, not a single folder, with a redesigned picker card.
- ✅ Link validation in the Add Download dialog before a download starts, catching bad/unsupported links earlier.
- 📘 Facebook link support added to the downloader.
- 🎨 New launcher icon set, including a proper monochrome silhouette for Android 13+ themed (Monet) icons.
🛠 Fixed
- 📤 Sharing a link from YouTube into Xmd no longer keeps the wrong/stale name on the queued item.
- 🧩 Settings has been reorganised for clearer grouping now that Data Limit, Libraries, and the update-channel picker all live there too.
- 🩹 An invalid
--sequence in an XML comment that could break the manifest merge on release builds. - ⏳ A stuck yt-dlp queue placeholder that could persist after a download finished, and standalone leftover thumbnail files.
- 📝 About-screen layout and manifest fixes.
- 🧭 The Downloads tab now shows "Downloads" as its header title instead of a generic label.
🎨 Changed
- 🌐 Site whitelisting for the browser moved from a standalone list into the new Shields settings section, with direct Add from there.
- 🧵 Internal refactor: duplicated logic across UI components, dialogs, and formatters consolidated to cut repeated code.
- 🐛 Debug builds now integrate LeakCanary for memory-leak detection during development.
SHA-256 checksum
63ca1d82a5b1b9c6fa9c10a956577828351c13225cd13c39ef9388e100a1741f release-assets/Xmd-full-arm64-v8a-v1.0.0-beta.6.apk
917f5493b7c0e96189c2fcaf1ff40c56afc9d912c2f783538381d0c9ac253598 release-assets/Xmd-full-armeabi-v7a-v1.0.0-beta.6.apk
21ca1274d49bd90e65f1071606d3071761c3e591da08668911d3df309d526415 release-assets/Xmd-lite-arm64-v8a-v1.0.0-beta.6.apk
ba94d94c9382b53f2dd27f9453adfadc968e947ce84bbad76cf9b0116a609600 release-assets/Xmd-lite-armeabi-v7a-v1.0.0-beta.6.apk
What's Changed
- Restore home and changed some settings and tweaks by @Utsavrajputt in #10
- ui improvements by @Arnab11 in #11
- compact download cards & delete from device checkbox by @Arnab11 in #12
- refactor(ui): replace QualityPickerDialog with AddDownloadDialog by @Arnab11 in #13
- fix(ui): sync system bars with theme transition and unclip floating nav bar shadow by @Arnab11 in #14
- feat(ui/download): floating background download dialog and download card layout improvements by @Arnab11 in #15
- feat(download): path-based duplicate detection and duplicate resolution strategy by @Arnab11 in #16
- feat(downloads): add copy error option and details dialog for download failures by @Arnab11 in #17
- refactor: organize project folder structure by @Arnab11 in #18
- build: configure package names and app names for lite and debug variants by @Arnab11 in #19
- feat(browser): add grid tabs with live previews, list switcher, and clear all by @Arnab11 in #20
- feat(browser): add search engine selection and custom search URL support by @Arnab11 in #21
- fix(browser): standard two-handle text selection in address bar by @Arnab11 in #22
- Dismiss address bar when tapping outside in browser home by @Arnab11 in #23
- feat(debug): integrate LeakCanary for memory leak detection by @Arnab11 in #24
- refactor: eliminate duplicated code across UI components, dialogs, and formatters by @Arnab11 in #25
- fix- name not updating when sharing from youtube by @Arnab11 in #26
- Add Brave-style Shields: Standard/Aggressive/Off levels, per-site all… by @Utsavrajputt in #27
Full Changelog: v1.0.0-beta.5...v1.0.0-beta.6
Xmd v1.0.0-beta.5 (Pre-release)
[1.0.0-beta.5] - 2026-08-29
✨ Added
- 🔖 Real Bookmarks feature — the star button now saves/removes a proper bookmark (its own DB table) instead of a shortcut, with a new Bookmarks screen (search, swipe-to-delete, Clear all) off the browser overflow menu; the old speed-dial "Bookmark" tiles are renamed to Shortcut throughout, with an "Also add as Shortcut" option when bookmarking.
- ⚙️ Settings redesigned into a full-screen categorized layout, plus a new About screen with a developers/credits section.
- 🗂️ Tabs tray redesign — the Tabs dialog is now a bottom sheet instead of a modal
AlertDialog: pill-shaped rows with round icon avatars and a floating "+" action for opening a new tab. - 🧲 Shortcuts: custom icon override, drag-to-reorder (saved on Done), and fixes for icon clipping and an edit-order bug.
- 🚫 Domain-blocklist ad blocking for the in-app browser — new Settings > Browser category, on by default.
- 📤 Export Websites (SAF save + share), alongside the existing import; both now live under Browser settings instead of Downloads.
- 🔍 Search in the Downloads tab, filtering the queue by file name or source URL, with its own "No matching downloads" empty state.
- 🔗 The browser now handles
fb://andintent://links instead of failing withERR_UNKNOWN_URL_SCHEME. - 📎 Restored Copy link on the Add to Downloads dialog, plus a long-press menu (Open with / Rename / Re-download / Copy download link / Share / Delete) on finished/failed downloads.
- 🎬 Direct
.m3u8/.mpdlinks are now routed through yt-dlp instead of downloaded raw. - 🎨 Three new themes: Tokyo Night, Gruvbox, and Amethyst.
- ⚡ Faster search suggestions — instant in-memory history matches, debounce cut from 300ms to 150ms.
- 🔗 The "yt-dlp not installed" dialog's Install button now deep-links straight to Settings > YouTube.
🛠 Fixed
- 🎥 Video playback on non-YouTube sites — Range requests used for streaming/seeking were being routed through a DoH proxy whenever a Private DNS mode was set, silently breaking playback everywhere except YouTube's own player pipeline; media and Range requests now bypass the proxy.
- 🔐 Google sign-in no longer fails to persist (removed a WebView UA marker Google blocks, cookies now flushed on pause), and
Set-Cookieheaders from DoH-intercepted requests are now forwarded intoCookieManagerinstead of being dropped. - ⬇️ Multi-connection resume no longer restarts from scratch on a share-link retry, and notification updates are now actually throttled as intended instead of firing unthrottled on every progress tick.
- 🎨 Theme changes now apply immediately from Settings instead of requiring a relaunch.
- ⚙️ Settings icons no longer lose their detail glyphs under tint; the YouTube settings row is correctly hidden on the
liteflavor. - 💾 YouTube/Downloads settings now persist immediately on change — no more Save buttons to remember to tap.
- 🩹 Assorted invalid XML-comment (
--) fixes that were breaking release builds.
🎨 Changed
- 📥 Website import/export moved from Downloads settings to Browser settings, where it fits better alongside the adblock toggle.
SHA-256 checksum
d4f141dcea536f4ae5e7155be05765f841f15c0d1aebbe92ea9c4862c92d34ec release-assets/Xmd-full-arm64-v8a-v1.0.0-beta.5.apk
c4cdc1d06e3675894118e4446e8cf22580bfae9ed82c3c279f15ad9ddc5addaa release-assets/Xmd-full-armeabi-v7a-v1.0.0-beta.5.apk
c8df5980b9a98e04f6fca4507a69996e04818400ff044e82db131087b97112ea release-assets/Xmd-lite-arm64-v8a-v1.0.0-beta.5.apk
a498d7ec1be98efe031a16c70ac9ffc4bcbacb887799e645960f2eab3a5c4546 release-assets/Xmd-lite-armeabi-v7a-v1.0.0-beta.5.apk
Full Changelog: v1.0.0-beta.4...v1.0.0-beta.5
Xmd v1.0.0-beta.4 (Pre-release)
[1.0.0-beta.4] - 2026-08-28
✨ Added
- 🖱️ Chrome-style long-press menu — long-press a link or image in the Browser for open-in-new-tab, open-image-in-new-tab, download image, copy link address, and share link, anchored right at the touch point.
- 🔍 History search — the History tab now has a search box filtering by title/URL.
- 🕓 History-aware address bar suggestions — matching visited pages now show above Google's search-phrase suggestions, each with its own icon.
- 🖥️ Desktop site toggle — per-tab overflow menu item that swaps the UA + wide viewport and forces a genuine reload (not served from cache under the old UA).
- 🔎 Find in page — Chrome-style overlay bar with prev/next navigation and a live match count.
- ⌨️ Bottom navigation auto-hides while the keyboard is open (paste-links box, address bar, find-in-page, any dialog input) instead of floating above the keys.
- 🎚️ Video preset settings — pick a preferred container, codec, and FPS ladder for the quick quality picks, plus a default audio format (MP3, M4A, Opus, or Original) for Audio-only downloads.
- 📊 Advanced quality section — a real yt-dlp format probe (
--dump-json) surfaced as a collapsible list in the quality picker, showing exact FPS/codec/file size per stream alongside the standard quality ladder. - 🗂️ Overflow menu regrouped into page actions, privacy actions, history, and settings sections for easier scanning.
🛠 Fixed
- 🩹 Container/FPS/Codec preset fields in Settings no longer wrap mid-word (e.g. "WebM" splitting into "We"/"bM") — smaller text plus single-line/ellipsize.
- 🎵 The Audio-only row in the quality picker now shows your actual saved audio format (MP3/M4A/Opus/Original) instead of always reading "(MP3)"; a saved "Audio only" default quality also survives a later format change instead of silently reverting to "Ask always".
- 🧭 Downloads tab's Cancel All / Clear All buttons were rendering underneath the bottom navigation bar and never visible — fragment content now clears the nav bar's height properly.
- 🔢 30fps entries in the Advanced quality list weren't labeled with their fps, making them indistinguishable from formats with no fps data — all formats now show their real fps.
- 🖼️ Speed-dial favicons switched from a memory-only cache to a 24-hour on-disk cache, so icons no longer redownload on every cold app launch.
- 🕰️ Fixed the history clock icon rendering as a solid dot instead of an outline, and search-suggestion rows showing the wrong (link) icon instead of a search icon.
- 🔔 Download-started snackbar reliability: no longer appears while already sitting on the Downloads tab, and no longer goes missing on Home/Browser from tab-switch timing races.
- 🏗️ Fixed the
liteflavor build breaking after the yt-dlp format-probe API was added (its stubYtDlpManagerneeded matching method signatures).
🗑️ Removed
- 🕵️ Private browsing tabs' toolbar entry point (the dedicated "New Private Tab" button), pulled back before release.
SHA-256 checksum
a4d6dda8d05293383f6adea97c9b41a3fff769c49145329268fdf13dbc4a922f release-assets/Xmd-full-arm64-v8a-v1.0.0-beta.4.apk
3104b26438e6755f1cf4e7decab5866ac011517fb3a15618d1510c2ee3269c36 release-assets/Xmd-full-armeabi-v7a-v1.0.0-beta.4.apk
22ea27ba048af14caa5a1ace193735781b55816c2e5ef7fd6a5fa28e106fc8f9 release-assets/Xmd-lite-arm64-v8a-v1.0.0-beta.4.apk
64b39c926c95ace73baced7eec668c5924f3f6241c0fa0e1d6ff1a937baec6ac release-assets/Xmd-lite-armeabi-v7a-v1.0.0-beta.4.apk
Full Changelog: v1.0.0-beta.3...v1.0.0-beta.4
Xmd v1.0.0-beta.3 (Pre-release)
[1.0.0-beta.3] - 2026-08-26
✨ Added
- 📤 Transparent Share-Receiver for external downloads — sharing a link from another app (e.g. Morphe's "External downloads" hook) into Xmd no longer bounces the caller app off-screen. A new transparent
ShareReceiverActivityhandles theSENDintent directly: YouTube links get a quick bottom-sheet quality picker, everything else (direct/torrent links) queues and starts silently, and the caller app stays in the foreground throughout. - 🕵️ In-browser media sniffing — a new
MediaSnifferclassifier detects HLS/DASH/direct media requests as pages load, surfacing a "videos found" chip and picker sheet in the Browser so streamed media can be grabbed without hunting for a direct link. - 📶 Download on Wi-Fi Only setting (off by default) — live downloads (HTTP, torrent, and YouTube) automatically pause when Wi-Fi drops and resume when it's back; the queue shows "Waiting for Wi-Fi" instead of a generic paused state.
- 🎚️ Default YouTube quality setting — choose "Ask always" or lock in a fixed quality to skip the picker sheet on every download.
- 🌐 Expanded Private DNS options — added Google DNS and Cloudflare (plain + adblock) DoH providers alongside AdGuard; the list now shows each provider's DoH address as a subtitle, with "Off" reordered to the top.
- 👆 Tap-to-jump stats pill — tapping the done/failed count on Home now jumps straight to the relevant Downloads tab.
- 🧲 External torrent links found while browsing can now be added directly from the web.
🛠 Fixed
- 🎥 Cleartext HTTP pages (older blogs, direct file hosts) no longer fail to load, and autoplay/JS-triggered
<video>/<audio>no longer hangs on a spinner waiting for a manual tap. - ❌ Queued items can now be properly cancelled/cleared, and incomplete downloads are rejected instead of being incorrectly marked as
DONE. - 🎨 Fixed the theme toggle's tap target (previously too large), bumped header title size, and added a Settings shortcut to the browser's overflow menu.
- 📊 Polished the Browser progress bar (elevation/corners) and snackbar (theme-aware background color).
- 🩹 Fixed two more invalid
--sequences inside XML comments that were breaking the databinding parser and release builds.
SHA-256 checksum
0ab82b48a80b7fada3c2a241873420237bc68f4941f93b14e48ce68ac9a02aa8 release-assets/Xmd-full-arm64-v8a-v1.0.0-beta.3.apk
655f730a1172b12a70bca91f63a2410fdb879fc2dbfa3172ab1c6178e9f4576d release-assets/Xmd-full-armeabi-v7a-v1.0.0-beta.3.apk
41c8302c96c2db56035a4591c8a2eaabebd78d9da07fb45262e2c428f86e509f release-assets/Xmd-lite-arm64-v8a-v1.0.0-beta.3.apk
d32c7c5494b4c4faf9b56f678fbf5c70c0231e92d6359b50cf39877a9e91bd46 release-assets/Xmd-lite-armeabi-v7a-v1.0.0-beta.3.apk
Full Changelog: v1.0.0-beta.2...v1.0.0-beta.3
Xmd v1.0.0-beta.2 (Pre-release)
[1.0.0-beta.2] - 2026-08-24
✨ Added
- 🧲 Built-in torrent support — download magnet links and
.torrentfiles directly in-app, with a dedicated Add Torrent confirmation dialog and magnet icon. Torrents can also be added from links found while browsing. ▶️ YouTube downloads via yt-dlp — newfullbuild flavor bundles yt-dlp + ffmpeg for a quality-picker download flow; the existingliteflavor (FuckingFast/direct/fitgirl/torrent only) stays unchanged in size and dependencies. Both flavors split per-ABI (arm64-v8a,armeabi-v7a), for four release APKs total.- 🔄 yt-dlp Update controls — manual Update button and a Stable/Nightly release-channel switch in Settings; the 24h background auto-update now follows the saved channel instead of a hardcoded one.
- 🖼️ Proper audio thumbnails for yt-dlp downloads, plus an Open button on finished downloads and download stats for YouTube items.
- 📋 YouTube clipboard detection, Google-powered address bar suggestions, a bookmark star toggle, and website import; default bookmarks removed from fresh installs.
- 🪟 Per-tab WebView pool in the Browser for instant tab switching, cross-tab back history, and no stale history/old-page flash on a fresh tab.
- 🧭 Chrome-style toolbar rework — new tab / search / reload / tabs / overflow — fixing it from reappearing over content after a background-kill activity recreation.
- 🎨 Material 3 Expressive redesign across the entire UI — dialogs, switches, buttons, and layouts rebuilt with Material 3 components.
- 🌈 5 built-in themes — Default, Aurora, Nord, Dracula, and Catppuccin — with app colors migrated to theme attributes for consistent dynamic theming.
- ☀️ Light theme — every color theme now has a light variant; flip it from the new Dark Mode switch in Settings > Appearance, or with a single tap on the app header.
🛠 Fixed
- ⏯️ Manual Resume/Cancel now survive a killed process over long pauses; auto-retry defaults to off.
- 📉 Eliminated download list flicker on progress ticks and fixed the notification getting stuck on "Preparing" when paused.
- 🌀 Fixed tab-switch lag, cross-tab back-history handling, and old-page flash on Browser navigation.
- 🔐 Fixed a Material 3
AlertDialogtheme crash and general theme-consistency polish. - 🩹 Fixed an XML namespace typo (
file_paths.xml) and an XML comment syntax error that were breaking CI builds. - 🌐 DoH resolver concurrency fix for more reliable Private DNS resolution.
SHA-256 checksum
f07cff2b1f3e0c1529eef88d89bca9f67ad6f42a707426aa7edc3b709efd2558 release-assets/Xmd-full-arm64-v8a-v1.0.0-beta.2.apk
ac18f365f045f0cab4d6dce84dc3d08bcb4187e6a7094401ec6ed1d3c60dbcd5 release-assets/Xmd-full-armeabi-v7a-v1.0.0-beta.2.apk
b8fa410d0adc344ab01b9fdec5889f113d55589228bab4374483984de4a3e518 release-assets/Xmd-lite-arm64-v8a-v1.0.0-beta.2.apk
fdd98d1a307b341d89bfbc49353ade50571856077f6b1d992c27d5ad62f697fb release-assets/Xmd-lite-armeabi-v7a-v1.0.0-beta.2.apk
Full Changelog: v1.0.0-beta.1...v1.0.0-beta.2
Xmd v1.0.0-beta.1 (Pre-release)
[1.0.0-beta.1] - 2026-08-20
🚀 First public pre-release of Xmd — Xtreme Media Downloader.
✨ Added
- 📥 Core downloader — paste
fuckingfast.coshare links,dl.fuckingfast.codirect links, or afitgirl-repacks.sitepage URL to build a download queue. - 🛡️ In-app WebView challenge screen to clear Cloudflare/Turnstile verification when a share link requires it.
- ⏸️ Resumable, pause/cancel-able downloads running in a foreground service.
- 🗂️ IDM-style auto-categorized downloads — files sorted by extension into
Videos,Music,Documents,Apps, orOtherssubfolders (with a Settings toggle to save flat into Downloads instead). - 💾 Download queue persists across app restarts (Room-backed storage), with auto-resume of queued downloads and manual Start/Clear buttons.
- 🔁 Auto-retry on network errors (3 attempts, toggle in Settings).
- ⏰ IDM-style expired-link popup with one-tap retry, plus per-item and bulk retry-all/clear-all actions.
- 🔔 "Starting download" snackbar with a VIEW action.
- 🌐 New Browser tab — speed-dial bookmarks with real site favicons, in-app WebView browsing, and automatic download interception.
- 🔍 Address bar with DuckDuckGo search suggestions, tap-to-load, and quick-add bookmarks.
- 📜 Browsing history tab/overlay.
↔️ Swipe gestures to switch between bottom navigation tabs.- 🔒 Private DNS setting for in-app browsing — AdGuard DNS-over-HTTPS (default), Off, or a Custom DoH endpoint.
- 🎨 Rebranded to Xmd — Xtreme Media Downloader, with a new adaptive app icon and package ID
com.invictus.xmd.
🏗️ Infrastructure
- 🤖 CI builds a signed release APK via GitHub Actions (
apksigner, secrets-based signing). - 🏷️ Tagged stable releases (
vX.Y.Z) publish a signed APK with a SHA-256 checksum to GitHub Releases. - 🧪 Tagged pre-releases (
vX.Y.Z-beta.N,-rc.N, ...) publish a signed, clearly-flagged pre-release build via a dedicated workflow. - 🧹 CI lint checks, issue templates, and a CONTRIBUTING guide.
⚠️ This is a pre-release build — expect rough edges. Please open an issue if you run into problems.
SHA-256 checksum
e5cbb8a86b949068d8e6c747c909de4e511e79f295fc513b0affffb8a2e49999 release-assets/Xmd-v1.0.0-beta.1.apk
Full Changelog: https://github.com/Utsavrajputt/xmd/commits/v1.0.0-beta.1