Skip to content

HyperDL v1.3.56

Latest

Choose a tag to compare

@itswill00 itswill00 released this 04 Nov 08:13

HyperDL v1.3.56

b13560 · full-zip release · changes since v1.3.55

Hardens vault isolation, download cleanup, and root control files while making URL handling and bundled-tool trust safer across the module.


Highlights

Area What changed
Vault privacy Missing or unreadable domain lists now fail private, and vault routing stays intact through resolver fallbacks
Download integrity Audio extraction, remuxing, and slideshow builds use temporary outputs so a failed attempt cannot destroy a good file
Safer inputs Download, probe, and media fetches accept HTTP(S) only, with format and extension checks
Trusted tools yt-dlp is pinned, checksum-verified, and never borrowed from PATH; TLS verification stays enabled
Native controls Status parsing, PID identity checks, atomic writes, and file permissions are hardened
WebUI URL and host handling is exact, storage errors no longer break the app, and long actions get realistic timeouts
Release safety RUNPATH, build freshness, deploy PID, packaging completeness, and tag checks now fail loudly

Vault and URL privacy

  • Kept private media private when the domain list breaks. If the vault flag is enabled but vault_domains.conf is missing or unreadable, every host is treated as vault content instead of falling back to the public folder.
  • Removed nested vault paths. Vault routing now resolves $OUTDIR/.vault/Stream once, so a second pass cannot create .vault/Stream/.vault/Stream.
  • Preserved vault decisions through CDN fallbacks. Resolver fallbacks that return a different media host still inherit the original page's vault destination, so a signed CDN link cannot move private media into the public library.
  • Matched hosts exactly. Downloader routing, DoH interception, the clipboard daemon, and WebUI URL detection now use exact or subdomain matches, so notyoutube.com and other lookalikes no longer trigger YouTube handling.
  • Kept public scans out of the vault. yt-dlp fallback scans skip hidden directories, and a public request cannot adopt a file that happens to sit inside .vault.

Downloads that clean up after themselves

  • Fixed the resolver fallback crash. Fallbacks now forward is_yt correctly instead of raising TypeError: download_with_ytdlp_direct() got an unexpected keyword argument 'is_yt'.
  • Extracted audio from the real source. Direct audio downloads return the actual file, fallback audio uses the correct source, and FFmpeg now receives -vn so a video stream cannot break MP3 or M4A conversion.
  • Protected older files during remux and conversion. Muxing, audio encoding, HLS remuxing, and slideshow creation write to hidden temporary files first, then replace the final path only after success.
  • Stopped sidecars from masquerading as media. Destination results and fallback scans are filtered by media extension, so subtitles, thumbnails, and .part files cannot replace the requested video or audio.
  • Cleaned failed output. Empty mux results, slideshow partials, temporary media sidecars, stale partials, and abandoned downloads are removed instead of being left for the next attempt to reuse.
  • Rejected unsupported schemes. Downloader, probe, and media-fetch entry points now accept HTTP(S) only, and the native bridge validates URL and format arguments before starting work.

Trusted tools and native controls

  • Verified yt-dlp before use. The downloader checks the pinned version and SHA-256 digest, writes the digest atomically, and never falls back to an arbitrary yt-dlp found on PATH.
  • Kept certificate checks on. TLS verification remains enabled when cacert.pem is present, and FFmpeg receives the same certificate environment used by the downloader.
  • Parsed status without depending on whitespace. The native bridge now recognizes spaced JSON such as "status": "downloading", and a dead PID with an active status becomes paused instead of spinning forever.
  • Rechecked identity before killing. Pause, cancel, and deploy cleanup validate the numeric PID and the HyperDL process marker before sending signals, and probes are stopped as a process group.
  • Hardened control files. PID, status, probe, and clipboard files use atomic writes and owner-only modes for private data, the last-clip cache resists pre-created symlinks, and logs are fixed at 0640.
  • Made clipboard handling deliberate. The daemon drains the clipboard helper, requires an explicit HTTP(S) URL, applies a timeout, and keeps its last-clip cache 0600.

Interface and release tooling

  • Guarded WebView storage failures. Unavailable localStorage no longer stops the app from mounting, and audio-format changes still reach the bridge when storage writes fail.
  • Fixed URL extraction edge cases. Uppercase schemes, subdomains, instagr.am, and false YouTube lookalikes are covered by regression tests.
  • Extended long-action timeouts. Update checks, yt-dlp updates, cleanup, and probes now get enough time to return a real result instead of timing out silently.
  • Made build and deploy fail safely. The build requires patchelf and readelf, strips Termux RUNPATH from the bridge, verifies generated payload freshness, validates deploy PIDs, and deletes incomplete release archives.
  • Added regression coverage. Python tests cover vault fail-private behavior, URL validation, yt-dlp verification, and download cleanup; WebUI tests cover host matching and shell escaping.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.56.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.56.zip.