Dust-Me Selectors for Firefox
Changelogs
- Version 4.1 and 4.0
- Version 3.01
- Version 2.2
- Version 2.11
Version 4.1
Version 4.1 fixes the compatibility issues that arose in Firefox 22:
-
Replaced uses of
nsIPrivateBrowsingService
. -
Removed uses of
nsIGlobalHistory2
. -
Replaced uses of
nsIFaviconService
.
However the utilities that replaces these classes don't have all the same functionality, and as a result, the extension can no longer add sitemap pages to the history, nor load favicons for sites which have not been visited or bookmarked before.
Other fixes in this version include:
-
Fixed a bug in the
Spider this page
function that prevented the spider URL field from being updated when the dialog is already open. -
Fixed a couple of instances of
can't access dead object
errors. - Fixed a couple of circumstances where the cleaning controls would remain visible when they should have been hidden.
Version 4.1 confirms support for Firefox versions up to 25.x, and retires support for versions earlier than 18.x.
Version 4.0
Version 4.0 is a major upgrade, with many requested new features. I've been through all the comments and emails you've written in the last year, and been able to implement virtually all of the changes you've asked for!
-
The most significant new feature is the widely-requested cleaning function,
which adds a
Clean
button to each stylesheet group in theUnused selectors
tab. The function creates a copy of the stylesheet (leaving the original alone), and you can select whether unused selectors and rules should be commented-out or removed. -
This version also overhauls the automation,
adding the ability to restrict automation to specific sites,
and replacing the existing mutation event with three mutation observers,
that allow it to respond to changes in
<body>
content,<head>
content, or document attributes (including mapped properties). -
The core scanning process has also been upgraded, adding
support for internal stylesheets (i.e. rules inside
<style>
elements), as well as some new selector filters that make it possible to test for things like dynamic states (such as:hover
) and pseudo-elements (such as::before
), which selector queries can't normally match. (A basic form of this behaviour was already implemented, but has been updated and extended into multiple controllable filters.)
Other notable new features and improvements include:
- Added a button to the main toolbar, which does the same job as the add-on bar icon, and has the same menu attached to it. This button is now enabled by default, while the add-on bar icon is disabled by default (in line with the general trend away from using the add-on bar).
- Added support for spidering XML Sitemap Indexes, and also RSS feeds.
-
Added a new Storage preference,
Delete all stored data when Firefox quits
, which effectively deletes all data apart from preferences. -
Added another new Storage preference,
Treat sub-domains as the same site
, which means that (for example)addons.mozilla.org
anddeveloper.mozilla.org
would both be stored undermozilla.org
. -
Extended the Spider preference,
Don't spider links in HTML sitemaps if [...]
, so you can specify the attribute name (where previously it was hard-coded to"rel"
). -
Updated the stylesheet parsing to add support for nested
@media
rules. -
Updated conditional-comment parsing to look for
<style>
elements (where previously it only supported<link>
stylesheets), and so that it recognises all documented forms of syntax (e.g. adding support for bracketed&
and|
conditions,true
andfalse
flags, andWindowsEdition
version targeting). -
Redesigned the
Save as CSV
option toExport selected data
, which now gives you the choice of JSON or CSV export, and now includes line-numbers. -
Added some built-in help files — a detailed guide
to Preferences (which is opened from its
Help
button), and a generalGetting Started
guide (which can be opened from the main menu). - Confirmed support for Firefox versions up to 20.x, and retired support for versions earlier than 14.x.
There's also a number of significant bug-fixes:
- Fixed a bug in the spider that would trigger an error when trying to load a site's favicon, which meant that the spider would hang forever when scanning a new site. Thanks to Dr_Barnowl for reporting and fixing that bug.
- Fixed a pretty fundamental bug in the spidering logic, whereby stylesheets would be tested on pages that don't include them, having been added to the dataset on an earlier page. This will have resulted in some false-positives, i.e. selectors being marked as used when they're actually unused.
-
Fixed a bug that could occur when spidering the same sitemap twice, whereby
the extension would use unintentionally-saved selectors data,
from a dataset that should have been deleted when you pressed
Trash this data
first. This would have made it seem as though it were loading stylesheets from a stale cache. - Fixed (again) the [#15@dustmeselectors.js:133] bug that could occur when parsing remote stylesheets, caused by attempting to parse them before they've finished loading. A fix for this issue already existed, but was no longer working because the error's name had been changed!
- Fixed an automation bug, that would sometimes store data under the wrong host, if automatic scanning was interrupted before it had finished, and then re-started on a different site.
- Fixed another automation bug, where opening pages in a background tab would trigger a scan on the front tab again, instead of scanning the one that just opened.
And other changes include:
-
Storage preferences are now used as part of global host evaluations,
which affects two other preferences — the Spider setting
Don't spider off-site links in HTML sitemaps
(where they affect how link domains are evaluated), and the Automation settingOnly scan specific sites
(where they affect how hosts are evaluated for restricted automation). -
Changed some command-keys to avoid conflicts with the new
developer tools in Firefox.
Scan this page
is now Ctrl+Alt+N (or ⌥⌘N for Mac) whileSpider Sitemap
is Ctrl+Alt+P (⌥⌘P). There's also a new command-key forSpider this page
, which is Ctrl+Shift+Alt+P (⌥⇧⌘P) (i.e. same asSpider Sitemap
but with Shift held down), and also a new one forPreferences
, which is Ctrl+Alt+, (⌥⌘,). - Updated the spider confirm behaviour, so that whenever you spider a site for which you already have stored data, it will ask you whether to keep or trash that data (where previously it would only do that when re-spidering the same sitemap URL).
-
Added a new Reporting preference,
Show the notification bar
, which will show a summary of the spider or scan operation in the browser's notification bar (which is the same thing Firefox uses to tell you about blocked pop-ups). This also has a supplementary preference,Notification bar message priority
, that allows you to control how these messages appear, and how they take priority over messages sent by Firefox or other extensions. - Added support for private browsing mode, so that when it's enabled, the spider doesn't add sitemap pages to the history, or save favicons to the cache.
- Added a shortcut in the Data dialog to expand or collapse all groups, by holding down the Shift key while expanding or collapsing a single group (by clicking the group heading, or pressing Enter or Space while it's focused).
- Improved performance in the Data dialog when viewing large datasets.
-
Added a context-menu to the Spider Log for sitemap and page
URLs, which is a shortcut to
Open URL in Firefox
. - Automation no longer happens on non-HTML documents such as text files, stylesheets and scripts, which do have a parseable DOM in firefox and that's why automation used to pick them up.
- A change to the way the spider loads pages, using a browser loading method that includes a bypass-cache flag, so it never retrieves cached pages (equivalent to force-refreshing each page). As a consequence of this new behaviour, all spider pages are requested with the sitemap URL as their referer.
-
Refined the way in which selectors data objects are maintained, so that
stylesheet groups now consistently show their selectors in source order
(where previously, selectors which had been
Marked as used
orMarked as unused
would be listed at end of the group). -
Added a new Interface preference,
Persist the most recent value in the Sitemap URL textbox
, which will save the textbox value when the Spider dialog is closed, then persist and pre-select it when the dialog is opened again (unless it's over-ridden by theSpider this page
command). -
Added a
Show files
button in the Preferences dialog's Storage tab, so you can inspect the contents of the extension's data folder. -
Many layout and design improvements, notably:
- Platform-specific styling in all the dialogs.
- Consistent fonts and button layout between the different dialogs.
- Implemented proper multi-size icons for the dialogs in Windows.
- Implemented word-wrap in stylesheet group headers so that long URLs don't cause a horizontal scrollbar.
- Moved the Data dialog progress-meter to the right of the tabs, so it doesn't squash the menu when it's visible.
- Added command-key indicators to the toolbar button and the add-on bar icon.
-
Many language improvements, notably:
-
Find unused selectors
is now calledScan this page
, and the wordscan
is now used generally to refer to the page-testing process. -
The Data and Spider dialogs' primary button now says
Close
instead ofOK
, to differentiate them from dialog accept buttons. The latter are used in Preferences, and in confirmation and error dialogs, and can be triggered by pressing Enter; whereas the Data and Spider dialogs are just normal windows, which can be closed with Ctrl + W. -
For Windows only,
Preferences
is now referred to asOptions
.
-
- The Preferences dialog doesn't need to be modal anymore.
-
Changed the dialog titles so they're easier to identify in window lists
— they're now called
Dust-Me Data
,Dust-Me Spider
,Dust-Me Preferences
orDust-Me Options
, andDust-Me Help
. -
Removed the
Disable Dust-Me
preference from the main menu and preferences, because you can do that from the Add-ons Manager. -
Removed the
Ignore query-strings in stylesheet URLs
preference, because it was causing a problem whereby server-generated stylesheets would be missing expected content, because they were requested without their crucial query-data. - Various other enhancements.