Logo is not ready yet, so there are generic empty arrows in place for now. I can't use the original branded graphics according to the license, so I have to come up with my own before release.
This fork is a direct continuation of the original XUL-based DownThemAll! extension. It's an update of the last upstream pre-release 3.1.1pre version from 2017. Until recently XUL version was unique in it's ability to preserve original date modified timestamps of downloaded files. I've changed extension ID and all settings' names, so it works without conflicts alongside other forks. A few features were added in this version:
- preserves original timestamps on any files from WebArchive.org by taking 'em from "x-archive-orig-last-modified" http header property (or "x-archive-orig-date" / "memento-datetime" when not available)
- allows to export/import relative local save paths from/to a download list
- allows to copy a remote website's directory structure (easier and with more options)
- allows to ignore the 'proxy' part and "www." part of the url while replicating
- differentiates between files without extension
\exampleand folder indexes\example\, providing the correctindex.htmname and local path. - replaces illegal symbols with their full-width counterparts: :*?"<>|
- checks if file exists before downloading it if conflict resolution is set to "skip"
- all of the above works in DTM OneClick mode via the most recent filter used (as expected)
- some UI/UX improvements been made like those ultra small non resizable dialogue windows are now less small and more resizable
You can run this extension in Pale Moon, Waterfox Classic, Basilisk, Firefox ESR 52.x & Firefox Developer Edition 56.x. Relevant version of Waterfox doesn't support XPCOM, so won't work. SeaMonkey needs some fixes, so maybe later.
Simply download (https://github.com/minch-dev/DownTheMoon/releases/download/latest/down-the-moon.xpi) and install .xpi file. As with any other extension these methods should work:
- right click .xpi file and choose
open with-> [your browser] - drag and drop .xpi file into a browser window
- at the
about:addonspage click ⚙️ ->install from file
Open about:config, find xpinstall.signatures.required and switch it to false. Now you can install an .xpi file using one of the aforementioned methods.
If xpinstall.signatures.required is not available, one can install an unpacked extension via about:debugging#addons, but only for 1 session. Download the source code as zip, unzip it somewhere, press Load Temporary Add-on button, locate your unpacked extension and choose install.rdf file.
Not supported.
Not supported. Only Waterfox Classic works.
Updates are provided by an .xpi file hosted under latest release tag at github. You can conveniently smack that Find updates menu option or even turn on an autoupdate if you have enough courage :3.
https://developer.mozilla.org/en-US/docs/Setting_up_extension_development_environment Just clone the repository and use an extension proxy file. No additional build step required.
- Pull requests welcome. By submitting code you agree to license it under MPL v2 unless explicitly specified otherwise.
- Please stick to the general coding style.
- Please also always add unit tests for all new js modules and new module functions.
- Unit tests for UI (overlays) aren't required at the moment, but welcome. There is currently no infrastructure to run those, though.
See make.py.
-
modules/glue.jsm- This is basically the main module, also specifying the general environment for all modules and window scopes. -
modules/main.js- General setup. -
modules/loaders/- "overlay" scripts. Different to traditional Firefox add-ons, DownTheMoon! does not use real overlays and overlay scripts, but kind of simulates overlays via modules. -
chrome/content/- UI. Right now, due to historical reasons and some too-tight coupling the UI JS also contains some of the important data structures such asQueueItem(representing a single queued download) -
Please note that being restartless requires code to clean up after itself, i.e. if you modify something global you need to reverse the modifications when the add-on is unloaded. See
unload()andunloadWindow()(in glue.jsm and/or support/overlays.js) -
Please make use of the niceties Firefox JS (ES6) and of the global helpers from glue.jsm, in particular:
for ofloops- Sets and (weak) maps
- generators
- comprehensions and destructoring assignment
Object.freeze(),Object.defineProperties(), etc.log()lazy()/lazyProto()ServicesandInstances