Repository navigation
v0.7.1
·
1282 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Install
Highlights
- Explore opens any site. Type an address or follow any link, and sign in to other sites there; downloads from those sites use that sign-in when they need it. Plain text in the address bar searches with the Search engine you pick in Settings.
- Smaller download, FFmpeg installed once. Arroxy downloads FFmpeg on first launch and keeps it across updates. If that fails, it uses your own FFmpeg, or Set it up manually installs one with Homebrew or WinGet.
- Honest about rate limits. Arroxy says when a site is rate-limiting you and waits before asking again. Try now skips the wait.
- A clearer single-video download. Continue on the Format screen leads to Review, which now holds subtitles, SponsorBlock, extras, the folder and the file name. Download is still there if you don't need Review.
- Update your profile from any download. When you change something, Format and Review show what differs from your profile, with buttons to update it, save it as a new profile, or undo.
- Switching profile keeps your edits. Arroxy asks whether to keep your changes or reset to the new profile.
- Video, no audio. The Format screen offers Video + audio, Video, no audio, Audio only and Subtitles only, like the profile editor.
- Every codec at every resolution. Each resolution lists AV1, VP9 and H.264 side by side, so you can pick H.264 even when your profile prefers AV1.
- Profiles can prefer VP9 or H.264. A new Video codec setting in the profile editor's Advanced section takes either first, without giving up resolution or HDR.
- Stream tags. The Format screen marks AI-upscaled, AI-dubbed, enhanced-bitrate, 360°, damaged and watermarked streams.
- Profiles skip AI-upscaled streams. A setting in the profile editor's Advanced section allows them.
- Arrange the Downloads table. Drag a header to move or resize its column, or use the keyboard. Reset columns in the columns menu puts them back.
- Put your profiles in order. Drag profiles on the Profiles tab, or move them with the keyboard. Every profile picker follows your order.
- Free memory while away. A new Explore setting (off by default) closes the Explore page when you leave it and restores it when you come back.
- Zoom in Explore. The zoom button in Explore's toolbar makes pages larger or smaller, and Arroxy remembers your zoom.
Fixes
- Converting to MP3, M4A, Opus or WAV uses the audio language you chose, and starts from a stream already in that format when there is one. Arroxy says when the audio is copied as it is rather than re-encoded.
- Converting a Dolby surround track to Opus no longer fails.
- Audio only downloads give an audio file on sites whose streams all carry video, such as Twitch clips and Dailymotion, instead of the whole video.
- Switching from Audio only back to video picks what your profile would, not the largest stream.
- Sizes show for sites that don't report them, such as Instagram and Facebook, and each resolution is listed once. Facebook's HD and SD files are listed separately.
- Streams without a resolution are listed as "Unknown resolution".
- Vimeo's audio streams are listed once each, by quality, instead of as identical copies.
- The "This video only goes up to…" notice no longer shows for ultra-wide videos that meet your profile's resolution.
- A playlist row assigned to a profile you later hid shows that profile, which is the one it downloads with.
- Format chip hints show the video bitrate and open as soon as you hover.
- A slow format lookup can be cancelled.
- A site whose stream list is gone no longer triggers a second lookup.
- YouTube downloads use YouTube's download token again.
- Part of video downloads show real progress, speed and time left.
- The progress bar keeps moving while the audio of a video downloads, instead of sitting near 100%.
- Downloads that use FFmpeg no longer show a stray "Merging…" label.
- Subtitles embedded into MKV get the right language tag for every ISO 639-1 language.
- A download saved as another file type, such as MKV, now gets its subtitles embedded, and its row in Downloads points at the saved file.
- A playlist title ending in an emoji or accented letter no longer leaves a broken character in its folder name.
- Vimeo OTT titles show accents, dashes and quotes correctly.
- A copied link replaces the URL field, with Undo, instead of asking first. One copied while Arroxy is busy fills in once you're back on the Download tab.
- youtube-nocookie.com links are treated as YouTube links.
- Help for exporting a cookies.txt file shows only when you use one.
- First-time setup no longer gives up on slow connections, and Try again resumes instead of starting over.
- The hotkey recorder accepts Shift and Option combinations, arrows, punctuation and the numpad.
- The Download menu and the Downloads column picker work with the keyboard.
- In a small window, the footer's links shrink to icons so the language and theme settings stay visible.
- On a wide window, the download steps are centred and the Explore browser fills the window. A scrolling table keeps its header in view.
- A busy download queue no longer slows the app down.
- Logs and feedback diagnostics no longer include signed stream URLs or YouTube tokens.
- The Vimeo OTT title lookup can no longer reach addresses on your local network.
- Updating with Homebrew works again on Homebrew 6 and later. The update banner's command, and Run & Restart, now name Arroxy's cask in full (
brew upgrade --cask antonio-orionus/arroxy/arroxy), so Homebrew no longer refuses it as coming from an untrusted tap.
Good to know
- Explore's ad blocker now starts off, since it broke too many sites. Turn it on from the shield in Explore's toolbar.
- The daily heartbeat now also says roughly how long ago Arroxy was installed, still with no ID. You can turn it off in Settings.
- Arroxy is now licensed under the GNU GPL v3 or later. 0.6.2 and earlier releases stay under MIT, and the
yt-dlp-bridgeandytdlp-errorspackages stay MIT.
What's Changed
- perf(queue): skip redundant Downloads-table renders during progress updates by @antonio-orionus in #316
- feat(explore): release the idle Explore page and restore it on return by @antonio-orionus in #317
- fix(yt-dlp): send one --extractor-args block per extractor by @antonio-orionus in #314
- fix(clipboard): one rule for copied links — replace with Undo, wait while busy by @antonio-orionus in #319
- feat(rate-limit): app-owned cooldown for rate-limited sites, honest rate-limit alert by @antonio-orionus in #318
- feat: install FFmpeg once as a managed package instead of bundling it by @antonio-orionus in #320
- feat(explore): make idle unload a setting, off by default by @antonio-orionus in #321
- test(e2e): repair the seeded-queue startup resilience spec by @antonio-orionus in #323
- fix(e2e): honor ARROXY_E2E_HEADLESS in mock-backend launches by @antonio-orionus in #324
- feat(wizard): clearer single-video download, real-site probe fixtures and stream markers by @antonio-orionus in #322
- docs(readme): claims checked against real probes, new download features by @antonio-orionus in #325
- perf(renderer): subscribe components to the store fields they read by @antonio-orionus in #326
- fix: SSRF guard, nocookie site lookup, hotkey recorder, diagnostic redaction by @antonio-orionus in #327
- refactor: replace hand-rolled helpers with built-ins and mature libraries by @antonio-orionus in #329
- refactor(renderer): move faked menus and disclosures to shadcn primitives by @antonio-orionus in #330
- refactor: consolidate yt-dlp-domain logic into the packages by @antonio-orionus in #331
- refactor: replace hand-rolled i18n and text helpers with library code by @antonio-orionus in #328
- test(ffmpeg): remux matrix for every pinned FFmpeg package by @antonio-orionus in #334
- build(ffmpeg): pin BtbN's 9.0 release-branch builds, never master by @antonio-orionus in #335
- ci: authenticate the dev FFmpeg fetch in the startup journeys by @antonio-orionus in #336
- chore(docs): move maintainer plans and research to a private repo by @antonio-orionus in #341
- docs(runtime): FFmpeg releases are pre-releases; describe the hardened manifest workflow by @antonio-orionus in #342
- test(internal-docs): build the checkout-dir expectation with platform separators by @antonio-orionus in #344
- fix(runtime-index): tolerate unusable v2 entries, check yt-dlp release paths, refetch on retry by @antonio-orionus in #340
- ci(ffmpeg): gate PRs on the remux matrix with an always-on check by @antonio-orionus in #337
- feat(heartbeat): report install age so new users can be counted by @antonio-orionus in #343
- fix(build): refetch the dev FFmpeg payload when its pin changes by @antonio-orionus in #346
- ci: skip heavy PR suites that a change cannot affect by @antonio-orionus in #347
- feat(explore): browse the open web and use its sign-ins for any site by @antonio-orionus in #348
- build(deps-dev): bump the development group across 1 directory with 9 updates by @dependabot[bot] in #333
- test(e2e): the stand-in Explore home is another site's page, which the bar can grab by @antonio-orionus in #351
- build(deps): bump the production group across 1 directory with 7 updates by @dependabot[bot] in #353
- build(deps-dev): bump postcss from 8.5.26 to 8.5.30 in the development group by @dependabot[bot] in #352
- build(deps-dev): bump picomatch and @types/picomatch by @dependabot[bot] in #354
- fix(main): apply ELECTRON_USER_DATA and the log path before the first log line by @antonio-orionus in #357
- release(packages): ytdlp-errors 1.3.0 and yt-dlp-bridge 0.5.0 by @antonio-orionus in #359
- chore(license): relicense the app under GPL-3.0-or-later, keep packages MIT by @antonio-orionus in #358
- fix(selection): rank YouTube's enhanced-bitrate streams like yt-dlp does by @antonio-orionus in #360
- build(deps): bump electron-store from 11.0.2 to 12.0.0 by @dependabot[bot] in #356
- feat(install): report WinGet installs as their own install channel by @antonio-orionus in #361
- ci: skip heavy suites on a docs-only push to main by @antonio-orionus in #362
- fix(update): upgrade the Homebrew cask by its fully qualified name by @antonio-orionus in #363
- chore(license): finish the GPLv3 switch in notices and the Scoop release step by @antonio-orionus in #364
- refactor(shared): move the prepared-job schemas into preparedJob.ts by @antonio-orionus in #366
- feat(profiles): reorder download profiles by dragging their cards by @antonio-orionus in #367
- fix(download): keep resolution ahead of the audio codec, and Dolby filters strict by @antonio-orionus in #365
- fix(download): video without audio from a site whose streams all carry sound by @antonio-orionus in #368
- fix(download): take the final media path from yt-dlp, not its log by @antonio-orionus in #371
- fix(filenames): reserve room for yt-dlp's in-flight names per job by @antonio-orionus in #370
- fix(subtitles): fetch the same subtitle tracks from Quick Download as the Format screen by @antonio-orionus in #369
- feat(format): tie the Profile tag to the chips it explains by @antonio-orionus in #379
- fix(naming): stop yt-dlp expanding $VAR and ~ in titles and folders by @antonio-orionus in #373
- feat(selection): the Format screen picks what yt-dlp picks by @antonio-orionus in #375
- fix(format): Saves as names the container yt-dlp's merger writes by @antonio-orionus in #377
- fix(download): structured yt-dlp progress, so the audio stream moves the bar by @antonio-orionus in #376
- test(selection): check the arbitrary sort field with a field that has no setting by @antonio-orionus in #384
- fix(format): judge the tier notice by yt-dlp's res as well as the row label by @antonio-orionus in #378
- feat(profiles): one profile picker for every place that picks a profile by @antonio-orionus in #374
- feat(tooling): local Claude + Codex dual review in a land flow by @antonio-orionus in #386
- test(format): record Vimeo, PeerTube and Odysee probes by @antonio-orionus in #383
- fix(yt-dlp-bridge): read the destination from remux and convert lines by @antonio-orionus in #372
- fix(format): one audio chip per stream, named by its grade when no bitrate by @antonio-orionus in #385
- feat(profiles): a Best picture profile can take VP9 or H.264 first by @antonio-orionus in #382
- fix(bridge): convert audio from a stream already in the target codec by @antonio-orionus in #380
- fix(wizard): say when an audio conversion copies the source stream by @antonio-orionus in #381
- feat(bridge): let a caller's selector pick the stream to convert, and tell what
bestgives by @antonio-orionus in #387 - fix(download): Audio only "best" gives an audio file on every site by @antonio-orionus in #388
- fix(bridge): an MP3 conversion copies MP3 in an MP4 too by @antonio-orionus in #389
- fix(wizard): the audio column follows the stream a conversion converts by @antonio-orionus in #391
- test(browser): match the Audio only and Review labels, ignore the style hint by @antonio-orionus in #390
- fix(ui): footer action labels give way before the settings are cut off by @antonio-orionus in #392
- ci: run the required PR suites on stacked PRs too by @antonio-orionus in #393
- ci: split the check gate across runners and require the Windows tests and Dev Smoke by @antonio-orionus in #394
- feat(explore): let the browser grow with the window by @antonio-orionus in #395
- fix(wizard): centre and cap steps at one width, grow the profiles table, pin table headers by @antonio-orionus in #396
- feat(explore): zoom control for the Explore page by @antonio-orionus in #397
Full Changelog: v0.6.2...v0.7.1