v3.2.0 — Downloads, context menu, badge, dark mode, more parsers + repo hygiene#63
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v3.2.0 — Downloads, context menu, badge, dark mode, more parsers + repo hygiene
Summary
Turns the extension from a "find video URLs" helper into an actual download helper, adds several
low‑effort/high‑value UX features, broadens site coverage, and cleans up a few repo/tooling issues.
Bumps the version 3.1.0 → 3.2.0.
Motivation
Despite being a “Download Helper”, the extension previously only rendered detected media as links —
users still had to right‑click → Save As. This PR adds real one‑click downloads and the surrounding
UX users expect, plus a few new parsers and housekeeping.
✨ Features
Real one‑click downloads + clipboard
chrome.downloads(with anew‑tab fallback when a programmatic download is blocked).
js/functions.js:getFileExtension,sanitizeFilename,suggestFilename.Right‑click context menu
<video>/<audio>elements).Toolbar badge
Dark mode
More site coverage (
js/parsevideo.js)<source>tags and embedded HLS.m3u8playlists(added to the existing
og:video/<video src>/video_url/mp4strategies).Internationalization
download,copy,download_all,copy_all,copied,copy_failed,dark_mode,dark_desc) added to all 13 locales and wired intojs/translate.js.🔐 Permissions (Chrome Web Store)
"downloads"and"contextMenus". No new host permissions; the broad content‑scriptscope is pre‑existing and unchanged.
downloadsadds the “Manage your downloads” warning, so the extension will require userre‑consent on auto‑update — expected for the new capability.
there are no automatic/background downloads and no remote code — consistent with the
single‑purpose policy.
🧹 Repo / tooling
dist/dist.min.jsremoved from version control. It was a stale tracked build artifact;.gitignorealready listeddist/. CI andnpm run packagerebuild it, and the README“Load unpacked” steps now include
npm install && npm run build..gitattributes(* text=auto eol=lf) and normalized allour source to LF. Vendored third‑party libs (jQuery, Bootstrap,
MD5.js,m_inc.js,*.min.*) are preserved byte‑for‑byte;test/data/**is LF but exempt from whitespacelinting (captured HTML). Also stripped pre‑existing trailing whitespace per
.editorconfig.background.jshardening. Guarded the service‑worker IIFE so it no longer throws when thefile is injected as a content script or when there is no active tab. Service‑worker‑only logic
(badge + context menus) is gated to the SW context.
3.2.0acrossmanifest.json, bothpackage.json, and both lockfiles.✅ Testing & validation
npm run checkis green: ESLint + Prettier + 129 Mocha tests passing.test_parsevideo_dailymotion.js,test_parsevideo_vimeo.js,test_parsevideo_source_tag.js,test_parsevideo_m3u8.js,test_functions_filename.jstest/data/dailymotion-x2bu0q2.html,test/data/vimeo-151712690.htmlnode --checkpasses on all changed legacy JS and all 13 locales; all 15_locales/*/messages.jsonparse.npm run packageproduces the Web Store zip (simple-video-download-helper-3.2.0.zip).git diff --checkis clean.Files of interest
js/parsevideo.js,js/functions.jsjs/video.js,main.html,css/main.cssjs/background.js,manifest.jsonjs/translate.js,lang/*.js,_locales/*/messages.jsonReviewer checklist
downloads,contextMenus) are acceptable for the listing,and note the one‑time re‑consent on update.
cd video-url-parser && npm install && npm run build,then load
video-url-parser/viachrome://extensions.Notes
<source>/.m3u8fallbacks improve coverage on many sites beyond the two named additions.