the problem we fix is that since we add the styles asynchronously, the browsers, esp. Firefox, sometimes apply transitions from the null/default state to the one specified in the injected CSS.
supersedes 72e8213b and 4dbca46b
Fix: handle dup name+namespace
Fix: eslint eqeqeq
Fix: trim @name's spaces
Add: check update for userstyle
Add: build CSS variable
Fix: only check dup when id is not provided
Refactor: userStyle2json -> userstyle.json
Add: style for input
Add: config dialog
Fix: preserve config during update
Fix: onchange doesn't fire on keyboard enter event
Fix: remove empty file
Add: validator. Metas must stay in the same line
Add: warn the user if installation failed
Fix: add some delay before starting installation
Add: open the editor after first installation
Fix: add openEditor to globals
Fix: i18n
Add: preprocessor. Move userstyle.build to background page.
Fix: remove unused global
Fix: preserved unknown prop in saveStyleSource() like saveStyle()
Add: edit userstyle source
Fix: load preprocessor dynamically
Fix: load content script dynamically
Fix: buildCode is async function
Fix: drop Object.entries
Fix: style.sections is undefined
Fix: don't hide the name input but disable it
Fix: query the style before installation
Revert: changes to editor, editor.html
Refactor: use term `usercss` instead of `userstyle`
Fix: don't show homepage action for usercss
Refactor: move script-loader to js/
Refactor: pull out mozParser
Fix: code style
Fix: we don't need to build meta anymore
Fix: use saveUsercss instead of saveStyle to get responsed error
Fix: last is undefined, load script error
Fix: switch to moz-format
Fix: drop injectContentScript. Move usercss check into install-user-css
Fix: response -> respond
Fix: globals -> global
Fix: queryUsercss -> filterUsercss
Fix: add processUsercss function
Fix: only open editor for usercss
Fix: remove findupUsercss fixme
Fix: globals -> global
Fix: globals -> global
Fix: global pollution
Revert: update.js
Refactor: checkStyle
Add: support usercss
Fix: no need to getURL in background page
Fix: merget semver.js into usercss.js
Fix: drop all_urls in match pattern
Fix: drop respondWithError
Move stylus -> stylus-lang
Add stylus-lang/readme
Fix: use include_globs
Fix: global pollution
* in manager use search query like url:https://github.com/openstyles/stylus
* in popup shift-click or right-click on manager button opens it and applies the filter
* saveStyle: retain only known properties in sections[] and normalize their order
* remove styleDigest on import
* shorten detailed status names in updater
* don't autohide update status message
* Now filtering is done in js
* Visible entries are always at the beginning of #installed
* Hidden entries are always at the end of #installed
* The code tries to minimize DOM reordering operations:
* First pass only moves one hidden entry in hidden groups with odd number of items.
* Second [full] pass runs after repaint.
To prevent cross-page leaks we need to create/copy prefs and cachedStyles inside the background page context.
* storage.js is now used only in the background page
* messaging.js now contains less bg-specific methods and more common methods. Added saveStyleSafe, deleteStyleSafe which automatically invoke onRuntimeMessage of the current page or just handleUpdate/handleDelete when notify:false
* prefs.js with 'prefs' for background and UI pages: separate objects because a UI page may load before the background page and it can read prefs from localStorage/sync/defaults
* update state is shown in tooltips that fade out in 10 sec except for .update-problem and .can-update
* when updates are found a filtering option is revealed; when it's checked only entries with updates are shown; when all updates are installed the option automatically hides
Chrome doesn't garbage-collect (or even leaks) SVG <symbol> referenced via <use> so we'll embed the code directly on manage and popup pages where dozens/hundreds of svgs are displayed.